dolfo-angular 1.234.0 → 1.235.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/dolfo-angular.mjs +4729 -2521
- package/fesm2022/dolfo-angular.mjs.map +1 -1
- package/package.json +6 -6
- package/styles/components/input.scss +30 -2
- package/types/dolfo-angular.d.ts +1231 -880
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dolfo-angular.mjs","sources":["../../projects/dolfo-angular/src/lib/shared/classes/subscriptable.ts","../../projects/dolfo-angular/src/lib/shared/interfaces/components/dialog.ts","../../projects/dolfo-angular/src/lib/shared/interfaces/components/grid.ts","../../projects/dolfo-angular/src/lib/components/layout/icon.component.ts","../../projects/dolfo-angular/src/lib/shared/interfaces/components/icon.ts","../../projects/dolfo-angular/src/lib/shared/interfaces/router.ts","../../projects/dolfo-angular/src/lib/shared/interfaces/store.ts","../../projects/dolfo-angular/src/lib/shared/interfaces/translate.ts","../../projects/dolfo-angular/src/lib/shared/interfaces/utils.ts","../../projects/dolfo-angular/src/lib/shared/services/context-menu.service.ts","../../projects/dolfo-angular/src/lib/shared/services/translate.service.ts","../../projects/dolfo-angular/src/lib/shared/services/dialog.service.ts","../../projects/dolfo-angular/src/lib/shared/services/dialog-utils.service.ts","../../projects/dolfo-angular/src/lib/shared/services/notification.service.ts","../../projects/dolfo-angular/src/lib/shared/services/popover.service.ts","../../projects/dolfo-angular/src/lib/shared/services/route-check.service.ts","../../projects/dolfo-angular/src/lib/shared/services/store.service.ts","../../projects/dolfo-angular/src/lib/shared/services/tooltip.service.ts","../../projects/dolfo-angular/src/lib/shared/directives/tooltip.directive.ts","../../projects/dolfo-angular/src/lib/shared/pipes/translate.pipe.ts","../../projects/dolfo-angular/src/lib/components/form/input-container.component.ts","../../projects/dolfo-angular/src/lib/components/form/base-form-input.ts","../../projects/dolfo-angular/src/lib/components/form/autocomplete.component.ts","../../projects/dolfo-angular/src/lib/components/layout/icon-wrapper.component.ts","../../projects/dolfo-angular/src/lib/components/form/combobox.component.ts","../../projects/dolfo-angular/src/lib/components/form/datepicker.component.ts","../../projects/dolfo-angular/src/lib/components/form/form.component.ts","../../projects/dolfo-angular/src/lib/shared/classes/base-app.component.ts","../../projects/dolfo-angular/src/lib/shared/classes/formable.ts","../../projects/dolfo-angular/src/lib/components/layout/context-menu.component.ts","../../projects/dolfo-angular/src/lib/components/form/input-text.component.ts","../../projects/dolfo-angular/src/lib/components/form/input-radio.component.ts","../../projects/dolfo-angular/src/lib/components/layout/dialog-layout/dialog-content.component.ts","../../projects/dolfo-angular/src/lib/components/layout/button.component.ts","../../projects/dolfo-angular/src/lib/components/layout/dialog-layout/dialog-header.component.ts","../../projects/dolfo-angular/src/lib/components/layout/dialog-layout/dialog-footer.component.ts","../../projects/dolfo-angular/src/lib/components/layout/dialog-layout/dialog-layout.component.ts","../../projects/dolfo-angular/src/lib/components/layout/dialog-layout/dialog-layout.component.html","../../projects/dolfo-angular/src/lib/components/layout/dialog-layout/dialog.component.ts","../../projects/dolfo-angular/src/lib/components/layout/notification.component.ts","../../projects/dolfo-angular/src/lib/components/layout/popover.component.ts","../../projects/dolfo-angular/src/lib/components/layout/tooltip.component.ts","../../projects/dolfo-angular/src/lib/shared/classes/overlay-manager.ts","../../projects/dolfo-angular/src/lib/shared/classes/route-config.ts","../../projects/dolfo-angular/src/lib/shared/directives/context-menu.directive.ts","../../projects/dolfo-angular/src/lib/shared/directives/navigate.directive.ts","../../projects/dolfo-angular/src/lib/shared/directives/popover.directive.ts","../../projects/dolfo-angular/src/lib/shared/directives/scroll-drag.directive.ts","../../projects/dolfo-angular/src/lib/shared/directives/directives.module.ts","../../projects/dolfo-angular/src/lib/components/layout/loader.component.ts","../../projects/dolfo-angular/src/lib/components/layout/layout.module.ts","../../projects/dolfo-angular/src/lib/components/form/input-checkbox.component.ts","../../projects/dolfo-angular/src/lib/components/form/form.module.ts","../../projects/dolfo-angular/src/lib/components/layout/dialog-layout/dialog-layout.module.ts","../../projects/dolfo-angular/src/lib/components/layout/grid/grid.component.ts","../../projects/dolfo-angular/src/lib/components/layout/grid/grid.component.html","../../projects/dolfo-angular/src/lib/components/layout/grid/grid.module.ts","../../projects/dolfo-angular/src/lib/shared/interceptors/auth.interceptor.ts","../../projects/dolfo-angular/src/lib/shared/interceptors/error.interceptor.ts","../../projects/dolfo-angular/src/public-api.ts","../../projects/dolfo-angular/src/dolfo-angular.ts"],"sourcesContent":["import { Directive, OnDestroy } from \"@angular/core\"\r\nimport { Subscription } from \"rxjs\"\r\n\r\n@Directive()\r\nexport abstract class Subscriptable implements OnDestroy{\r\n private subs: Subscription[] = []\r\n\r\n protected addSubscription = (sub: Subscription) => this.subs.push(sub)\r\n\r\n ngOnDestroy(){\r\n this.subs.forEach(s => s.unsubscribe())\r\n }\r\n}\r\n","import { FormControl } from \"@angular/forms\"\r\nimport { ButtonColor } from \"./button\"\r\nimport { AutocompleteConfig, ComboOption } from \"./combobox\"\r\nimport { InputType } from \"./form\"\r\nimport { IconName } from \"./icon\"\r\n\r\nexport enum DialogActionType{ OK, NO, CANCEL }\r\n\r\nexport type DialogOutput = {\r\n type: DialogActionType\r\n data: Record<string, any>\r\n}\r\n\r\nexport type DialogForm = {\r\n control: FormControl\r\n type: InputType | \"date\" | \"radio\" | \"autocomplete\" | \"combobox\"\r\n name: string\r\n label?: string\r\n // Used only if type = \"autocomplete\"\r\n autocompleteCfg?: AutocompleteConfig<any>\r\n // Used only if type = \"radio\" or \"combobox\"\r\n options?: ComboOption[]\r\n}[]\r\n\r\nexport type DialogType = \"info\" | \"confirm\" | \"loading\" | \"error\"\r\n\r\nexport type IDialogInput = {\r\n title?: string\r\n message: string\r\n type?: DialogType\r\n width?: number\r\n className?: string\r\n hideCloseX?: boolean\r\n form?: DialogForm\r\n component?: DialogComponentInput,\r\n buttons?: DialogFooterButton[]\r\n}\r\n\r\nexport interface DialogComponentInput{\r\n readonly type: new() => IDialogInput\r\n readonly input?: any\r\n}\r\n\r\nexport type DialogIcon = {\r\n icon: string\r\n color: ButtonColor\r\n}\r\n\r\nexport type DialogFooterButton = {\r\n label: string\r\n color: ButtonColor\r\n icon?: IconName\r\n disabled?: boolean\r\n loading?: boolean\r\n onClick: () => void\r\n}","import { BehaviorSubject, map, Observable, Subscription } from \"rxjs\"\r\nimport { ButtonColor } from \"./button\"\r\nimport { ContextMenuItem } from \"./context-menu\"\r\n\r\nexport enum ColumnAlign{\r\n LEFT = \"left\",\r\n RIGHT = \"right\",\r\n CENTER = \"center\"\r\n}\r\n\r\nexport enum ColumnDataType{ TEXT, DATE, DATETIME, LINK }\r\n\r\nexport interface GridAction{\r\n readonly icon: string\r\n readonly title?: string\r\n readonly disabled?: boolean\r\n readonly color?: ButtonColor\r\n readonly onClick: () => void\r\n}\r\n\r\nexport type BooleanFn = () => boolean\r\n\r\nexport interface GridToolbarButton{\r\n readonly label: string\r\n readonly disabled?: boolean | BooleanFn\r\n readonly icon?: string\r\n readonly onClick: () => void\r\n}\r\n\r\nexport interface GridColumn{\r\n readonly label: string\r\n readonly field: string\r\n readonly dataType: ColumnDataType\r\n readonly width?: number\r\n readonly align?: ColumnAlign\r\n readonly formatter?: (value: any) => string\r\n readonly onLink?: (value: any) => void\r\n}\r\n\r\nexport interface IGridConfig<T>{\r\n readonly items: T[] | Observable<T[]>\r\n readonly columns: GridColumn[]\r\n readonly selection?: {\r\n readonly type?: \"single\" | \"multiple\"\r\n readonly showSelectAll?: boolean\r\n readonly defaultSelected?: (item: T) => boolean\r\n }\r\n readonly toolbar?: {\r\n readonly buttons?: GridToolbarButton[]\r\n }\r\n readonly events?: {\r\n onRowClick?: (item: T) => void\r\n onSelectionChange?: (item: T[]) => void\r\n }\r\n readonly getItemKey: (item: T) => string | number\r\n readonly actions?: (item: T) => ContextMenuItem[]\r\n readonly rowClass?: (item: T) => string\r\n}\r\n\r\nexport class GridConfig<T>{\r\n private items$ = new BehaviorSubject<T[]>([])\r\n private loading$ = new BehaviorSubject(false)\r\n private selectedItems: T[]\r\n private actions$ = new BehaviorSubject<IGridConfig<T>[\"actions\"]>(null)\r\n private toolbar: IGridConfig<T>[\"toolbar\"]\r\n private prevSub: Subscription\r\n\r\n constructor(private config: IGridConfig<T>){\r\n this.refreshGrid()\r\n this.actions$.next(config.actions)\r\n\r\n if(config.toolbar)\r\n this.toolbar = config.toolbar\r\n }\r\n\r\n public refreshGrid = () => {\r\n this.selectedItems = []\r\n\r\n this.prevSub?.unsubscribe()\r\n\r\n if(Array.isArray(this.config.items))\r\n this.items$.next(this.config.items)\r\n else{\r\n this.setLoading(true)\r\n\r\n this.prevSub = this.config.items.subscribe(it => {\r\n this.setLoading(false)\r\n this.items$.next(it)\r\n \r\n if(this.getSelectionConfig()?.defaultSelected)\r\n this.selectedItems = it.filter(i => this.getSelectionConfig().defaultSelected(i))\r\n })\r\n }\r\n }\r\n\r\n public getRowClass = (item: T) => this.config.rowClass?.(item)\r\n\r\n public updateList = (newList: T[]) => this.items$.next(newList)\r\n\r\n public getList = () => this.items$.getValue()\r\n\r\n public getList$ = () => this.items$.asObservable()\r\n\r\n public getActions$ = (item: T) => this.actions$.asObservable().pipe(\r\n map(actions => actions?.(item))\r\n )\r\n\r\n public setActions = (actions: IGridConfig<T>[\"actions\"]) => this.actions$.next(actions)\r\n\r\n public getColumns = () => this.config.columns\r\n\r\n public getEvents = () => this.config.events\r\n\r\n public getUniqueId = (item: T) => this.config.getItemKey(item)\r\n\r\n public isLoading$ = () => this.loading$.asObservable()\r\n \r\n public isLoading = () => this.loading$.getValue()\r\n\r\n public setLoading = (v: boolean) => this.loading$.next(v)\r\n\r\n public getSelectedItems = () => this.items$.getValue().filter(it => this.selectedItems.some(d => this.getUniqueId(d) === this.getUniqueId(it)))\r\n\r\n public toggleSelection = (item: T) => {\r\n if(this.isItemSelected(item))\r\n this.selectedItems = this.selectedItems.filter(it => this.getUniqueId(it) !== this.getUniqueId(item))\r\n else if(this.config.selection?.type === \"single\")\r\n this.selectedItems = [item]\r\n else\r\n this.selectedItems.push(item)\r\n\r\n this.emitSelectionChange()\r\n }\r\n\r\n public isItemSelected = (item: T) => this.selectedItems.some(d => this.getUniqueId(d) === this.getUniqueId(item))\r\n\r\n public toggleSelectAll = () => {\r\n if(this.isAllSelected())\r\n this.selectedItems = []\r\n else\r\n this.selectedItems = this.items$.getValue()\r\n\r\n this.emitSelectionChange()\r\n }\r\n\r\n public getSelectionConfig = () => this.config.selection\r\n\r\n private emitSelectionChange = () => this.config.events?.onSelectionChange?.(this.getSelectedItems())\r\n\r\n public isAllSelected = () => this.selectedItems.length === this.items$.getValue().length\r\n\r\n public get hasActions(){\r\n return !!this.actions$.getValue()\r\n }\r\n\r\n public get hasToolbar(){\r\n return !!this.toolbar\r\n }\r\n\r\n public getToolbarButtons(){\r\n return this.toolbar.buttons\r\n }\r\n\r\n public setToolbar = (toolbar: IGridConfig<T>[\"toolbar\"]) => this.toolbar = toolbar\r\n}","import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\"\r\nimport { IconName } from \"../../shared/interfaces\"\r\n\r\n@Component({\r\n selector: \"dolfo-icon-x\",\r\n standalone: false,\r\n template: `<i [class]=\"'icon-' + name\"></i>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class IconComponent {\r\n @Input({ required: true }) name: IconName | string\r\n}\r\n","import { InjectionToken, Type } from \"@angular/core\"\r\nimport { IconComponent } from \"../../../components/layout/icon.component\"\r\n\r\nexport const ICON_COMPONENT = new InjectionToken<Type<any>>(\"ICON_COMPONENT\", {\r\n providedIn: \"root\",\r\n factory: () => IconComponent\r\n})\r\n\r\nexport type IconName = \"home\" | \"home2\" | \"home3\" | \"office\" | \"newspaper\" | \"pencil\" | \"pencil2\" | \"quill\" | \"pen\" | \"blog\" | \"eyedropper\" | \"droplet\" | \"paint-format\" | \"image\" | \"images\" | \"camera\" | \"headphones\" | \"music\" | \"play\" | \"film\" | \"video-camera\" | \"dice\" | \"pacman\" | \"spades\" | \"clubs\" | \"diamonds\" | \"bullhorn\" | \"connection\" | \"podcast\" | \"feed\" | \"mic\" | \"book\" | \"books\" | \"library\" | \"file-text\" | \"profile\" | \"file-empty\" | \"files-empty\" | \"file-text2\" | \"file-picture\" | \"file-music\" | \"file-play\" | \"file-video\" | \"file-zip\" | \"copy\" | \"paste\" | \"stack\" | \"folder\" | \"folder-open\" | \"folder-plus\" | \"folder-minus\" | \"folder-download\" | \"folder-upload\" | \"price-tag\" | \"price-tags\" | \"barcode\" | \"qrcode\" | \"ticket\" | \"cart\" | \"coin-dollar\" | \"coin-euro\" | \"coin-pound\" | \"coin-yen\" | \"credit-card\" | \"calculator\" | \"lifebuoy\" | \"phone\" | \"phone-hang-up\" | \"address-book\" | \"envelop\" | \"pushpin\" | \"location\" | \"location2\" | \"compass\" | \"compass2\" | \"map\" | \"map2\" | \"history\" | \"clock\" | \"clock2\" | \"alarm\" | \"bell\" | \"stopwatch\" | \"calendar\" | \"printer\" | \"keyboard\" | \"display\" | \"laptop\" | \"mobile\" | \"mobile2\" | \"tablet\" | \"tv\" | \"drawer\" | \"drawer2\" | \"box-add\" | \"box-remove\" | \"download\" | \"upload\" | \"floppy-disk\" | \"drive\" | \"database\" | \"undo\" | \"redo\" | \"undo2\" | \"redo2\" | \"forward\" | \"reply\" | \"bubble\" | \"bubbles\" | \"bubbles2\" | \"bubble2\" | \"bubbles3\" | \"bubbles4\" | \"user\" | \"users\" | \"user-plus\" | \"user-minus\" | \"user-check\" | \"user-tie\" | \"quotes-left\" | \"quotes-right\" | \"hour-glass\" | \"spinner\" | \"spinner2\" | \"spinner3\" | \"spinner4\" | \"spinner5\" | \"spinner6\" | \"spinner7\" | \"spinner8\" | \"spinner9\" | \"spinner10\" | \"spinner11\" | \"binoculars\" | \"search\" | \"zoom-in\" | \"zoom-out\" | \"enlarge\" | \"shrink\" | \"enlarge2\" | \"shrink2\" | \"key\" | \"key2\" | \"lock\" | \"unlocked\" | \"wrench\" | \"equalizer\" | \"equalizer2\" | \"cog\" | \"cogs\" | \"hammer\" | \"magic-wand\" | \"aid-kit\" | \"bug\" | \"pie-chart\" | \"stats-dots\" | \"stats-bars\" | \"stats-bars2\" | \"trophy\" | \"gift\" | \"glass\" | \"glass2\" | \"mug\" | \"spoon-knife\" | \"leaf\" | \"rocket\" | \"meter\" | \"meter2\" | \"hammer2\" | \"fire\" | \"lab\" | \"magnet\" | \"bin\" | \"bin2\" | \"briefcase\" | \"airplane\" | \"truck\" | \"road\" | \"accessibility\" | \"target\" | \"shield\" | \"power\" | \"switch\" | \"power-cord\" | \"clipboard\" | \"list-numbered\" | \"list\" | \"list2\" | \"tree\" | \"menu\" | \"menu2\" | \"menu3\" | \"menu4\" | \"cloud\" | \"cloud-download\" | \"cloud-upload\" | \"cloud-check\" | \"download2\" | \"upload2\" | \"download3\" | \"upload3\" | \"sphere\" | \"earth\" | \"link\" | \"flag\" | \"attachment\" | \"eye\" | \"eye-plus\" | \"eye-minus\" | \"eye-blocked\" | \"bookmark\" | \"bookmarks\" | \"sun\" | \"contrast\" | \"brightness-contrast\" | \"star-empty\" | \"star-half\" | \"star-full\" | \"heart\" | \"heart-broken\" | \"man\" | \"woman\" | \"man-woman\" | \"happy\" | \"happy2\" | \"smile\" | \"smile2\" | \"tongue\" | \"tongue2\" | \"sad\" | \"sad2\" | \"wink\" | \"wink2\" | \"grin\" | \"grin2\" | \"cool\" | \"cool2\" | \"angry\" | \"angry2\" | \"evil\" | \"evil2\" | \"shocked\" | \"shocked2\" | \"baffled\" | \"baffled2\" | \"confused\" | \"confused2\" | \"neutral\" | \"neutral2\" | \"hipster\" | \"hipster2\" | \"wondering\" | \"wondering2\" | \"sleepy\" | \"sleepy2\" | \"frustrated\" | \"frustrated2\" | \"crying\" | \"crying2\" | \"point-up\" | \"point-right\" | \"point-down\" | \"point-left\" | \"warning\" | \"notification\" | \"question\" | \"plus\" | \"minus\" | \"info\" | \"cancel-circle\" | \"blocked\" | \"cross\" | \"checkmark\" | \"checkmark2\" | \"spell-check\" | \"enter\" | \"exit\" | \"play2\" | \"pause\" | \"stop\" | \"previous\" | \"next\" | \"backward\" | \"forward2\" | \"play3\" | \"pause2\" | \"stop2\" | \"backward2\" | \"forward3\" | \"first\" | \"last\" | \"previous2\" | \"next2\" | \"eject\" | \"volume-high\" | \"volume-medium\" | \"volume-low\" | \"volume-mute\" | \"volume-mute2\" | \"volume-increase\" | \"volume-decrease\" | \"loop\" | \"loop2\" | \"infinite\" | \"shuffle\" | \"arrow-up-left\" | \"arrow-up\" | \"arrow-up-right\" | \"arrow-right\" | \"arrow-down-right\" | \"arrow-down\" | \"arrow-down-left\" | \"arrow-left\" | \"arrow-up-left2\" | \"arrow-up2\" | \"arrow-up-right2\" | \"arrow-right2\" | \"arrow-down-right2\" | \"arrow-down2\" | \"arrow-down-left2\" | \"arrow-left2\" | \"circle-up\" | \"circle-right\" | \"circle-down\" | \"circle-left\" | \"tab\" | \"move-up\" | \"move-down\" | \"sort-alpha-asc\" | \"sort-alpha-desc\" | \"sort-numeric-asc\" | \"sort-numberic-desc\" | \"sort-amount-asc\" | \"sort-amount-desc\" | \"command\" | \"shift\" | \"ctrl\" | \"opt\" | \"checkbox-checked\" | \"checkbox-unchecked\" | \"radio-checked\" | \"radio-checked2\" | \"radio-unchecked\" | \"crop\" | \"make-group\" | \"ungroup\" | \"scissors\" | \"filter\" | \"font\" | \"ligature\" | \"ligature2\" | \"text-height\" | \"text-width\" | \"font-size\" | \"bold\" | \"underline\" | \"italic\" | \"strikethrough\" | \"omega\" | \"sigma\" | \"page-break\" | \"superscript\" | \"subscript\" | \"superscript2\" | \"subscript2\" | \"text-color\" | \"pagebreak\" | \"clear-formatting\" | \"table\" | \"table2\" | \"insert-template\" | \"pilcrow\" | \"ltr\" | \"rtl\" | \"section\" | \"paragraph-left\" | \"paragraph-center\" | \"paragraph-right\" | \"paragraph-justify\" | \"indent-increase\" | \"indent-decrease\" | \"share\" | \"new-tab\" | \"embed\" | \"embed2\" | \"terminal\" | \"share2\" | \"mail\" | \"mail2\" | \"mail3\" | \"mail4\" | \"amazon\" | \"google\" | \"google2\" | \"google3\" | \"google-plus\" | \"google-plus2\" | \"google-plus3\" | \"hangouts\" | \"google-drive\" | \"facebook\" | \"facebook2\" | \"instagram\" | \"whatsapp\" | \"spotify\" | \"telegram\" | \"twitter\" | \"vine\" | \"vk\" | \"renren\" | \"sina-weibo\" | \"rss\" | \"rss2\" | \"youtube\" | \"youtube2\" | \"twitch\" | \"vimeo\" | \"vimeo2\" | \"lanyrd\" | \"flickr\" | \"flickr2\" | \"flickr3\" | \"flickr4\" | \"dribbble\" | \"behance\" | \"behance2\" | \"deviantart\" | \"500px\" | \"steam\" | \"steam2\" | \"dropbox\" | \"onedrive\" | \"github\" | \"npm\" | \"basecamp\" | \"trello\" | \"wordpress\" | \"joomla\" | \"ello\" | \"blogger\" | \"blogger2\" | \"tumblr\" | \"tumblr2\" | \"yahoo\" | \"yahoo2\" | \"tux\" | \"appleinc\" | \"finder\" | \"android\" | \"windows\" | \"windows8\" | \"soundcloud\" | \"soundcloud2\" | \"skype\" | \"reddit\" | \"hackernews\" | \"wikipedia\" | \"linkedin\" | \"linkedin2\" | \"lastfm\" | \"lastfm2\" | \"delicious\" | \"stumbleupon\" | \"stumbleupon2\" | \"stackoverflow\" | \"pinterest\" | \"pinterest2\" | \"xing\" | \"xing2\" | \"flattr\" | \"foursquare\" | \"yelp\" | \"paypal\" | \"chrome\" | \"firefox\" | \"IE\" | \"edge\" | \"safari\" | \"opera\" | \"file-pdf\" | \"file-openoffice\" | \"file-word\" | \"file-excel\" | \"libreoffice\" | \"html-five\" | \"html-five2\" | \"css3\" | \"git\" | \"codepen\" | \"svg\" | \"IcoMoon\"","import { InjectionToken } from \"@angular/core\"\r\nimport { Observable } from \"rxjs\"\r\n\r\nexport const ROUTE_CHECK_SERVICE = new InjectionToken<CheckRoute<unknown>>(\"ROUTE_CHECK_SERVICE\", {\r\n\tprovidedIn: \"root\",\r\n\tfactory: () => {\r\n\t\tthrow new Error(\"RouteCheckService not provided\")\r\n\t}\r\n})\r\n\r\nexport interface CheckRoute<T>{\r\n\tload$: () => Observable<T>\r\n\tcheckRoute: (path: string) => Promise<boolean> | Observable<boolean>\r\n}","export enum StorageValues {\r\n TOKEN = \"token\",\r\n LANG = \"lang\"\r\n}\r\n\r\nexport interface IStore {\r\n readonly pressingCtrl: boolean\r\n readonly lists: {\r\n [x: string]: Array<any>\r\n }\r\n readonly entities: {\r\n [x: string]: any\r\n }\r\n}\r\n\r\nexport const MAX_DEVICE_SIZE = 750\r\nexport const MAX_SMALL_DEVICE = 500","import { InjectionToken, ValueProvider } from \"@angular/core\"\r\n\r\nexport interface ILanguage{\r\n readonly name: string\r\n readonly locale: string\r\n readonly altFileName?: string\r\n}\r\n\r\nexport interface ILanguageToken{\r\n readonly defaultLanguage: string\r\n readonly langs: ILanguage[]\r\n}\r\n\r\nexport const TRANSLATE_STORAGE_KEY = \"dolfo-lang-stored\"\r\n\r\nexport const LANGUAGE_TOKEN = new InjectionToken<ILanguageToken>(\"LANGUAGE_TOKEN\")\r\n\r\nexport const provideDolfoLanguages = (langs: ILanguage[], defaultLanguage: string): ValueProvider => ({\r\n provide: LANGUAGE_TOKEN,\r\n useValue: { defaultLanguage, langs } as ILanguageToken\r\n})","import { AbstractControl, FormControl, ValidationErrors, ValidatorFn } from \"@angular/forms\"\r\n\r\nexport const isDeepEqual = (objA: any, objB: any, map = new WeakMap()) => {\r\n if (Object.is(objA, objB))\r\n return true\r\n\r\n if (objA instanceof Date && objB instanceof Date)\r\n return objA.getTime() === objB.getTime()\r\n \r\n if (objA instanceof RegExp && objB instanceof RegExp)\r\n return objA.toString() === objB.toString()\r\n\r\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null)\r\n return false\r\n\r\n if (map.get(objA) === objB)\r\n return true\r\n\r\n map.set(objA, objB)\r\n\r\n const keysA = Reflect.ownKeys(objA)\r\n const keysB = Reflect.ownKeys(objB)\r\n\r\n if (keysA.length !== keysB.length)\r\n return false\r\n\r\n for (let i = 0; i < keysA.length; i++){\r\n if (!Reflect.has(objB, keysA[i]) || !isDeepEqual(objA[keysA[i]], objB[keysA[i]], map))\r\n return false\r\n }\r\n\r\n return true\r\n}\r\n\r\n\r\nexport const passwordValidator = ((control: FormControl): ValidationErrors => {\r\n if(control.value?.match(/^(.{0,7}|[^0-9]*|[^A-Z]*|[^a-z]*|[a-zA-Z0-9]*)$/))\r\n return { password: true }\r\n\r\n return null\r\n}) as ValidatorFn\r\n\r\nexport const samePasswordValidator = (ctrName: string): ValidatorFn => ((control: AbstractControl): ValidationErrors => {\r\n const otherControl = control.parent?.get(ctrName)\r\n\r\n if(otherControl?.value !== control?.value)\r\n return { differentPasswords: true }\r\n\r\n return null\r\n}) as ValidatorFn","import { Service } from \"@angular/core\"\r\nimport { BehaviorSubject } from \"rxjs\"\r\nimport { IContextMenu } from \"../interfaces\"\r\n\r\n@Service()\r\nexport class ContextMenuService {\r\n private contextMenu$ = new BehaviorSubject<IContextMenu>(null)\r\n\r\n public getContextMenu$ = () => this.contextMenu$.asObservable()\r\n\r\n public openContextMenu = (input: IContextMenu) => this.contextMenu$.next(input)\r\n}\r\n","import { formatDate } from \"@angular/common\"\r\nimport { HttpClient } from \"@angular/common/http\"\r\nimport { inject, Service } from \"@angular/core\"\r\nimport { BehaviorSubject, distinctUntilChanged, tap } from \"rxjs\"\r\nimport { ILanguage, LANGUAGE_TOKEN, TRANSLATE_STORAGE_KEY } from \"../interfaces\"\r\n\r\n@Service()\r\nexport class TranslateService {\r\n private lang$ = new BehaviorSubject<ILanguage>(null)\r\n private langContent: Record<string, string>\r\n private langs: ILanguage[]\r\n private httpClient = inject(HttpClient)\r\n private langConfig = inject(LANGUAGE_TOKEN)\r\n\r\n constructor() {\r\n if(!localStorage.getItem(TRANSLATE_STORAGE_KEY))\r\n localStorage.setItem(TRANSLATE_STORAGE_KEY, this.langConfig.defaultLanguage)\r\n \r\n const { langs } = this.langConfig,\r\n lang = localStorage.getItem(TRANSLATE_STORAGE_KEY) as string,\r\n foundLang = this.langConfig.langs.find(l => l.name === lang)\r\n\r\n this.langs = langs\r\n\r\n if(!foundLang)\r\n localStorage.removeItem(TRANSLATE_STORAGE_KEY)\r\n else\r\n this.lang$.next(foundLang)\r\n }\r\n\r\n public changeLanguage$ = (langName: string) => {\r\n const lang = this.langs.find(l => l.name === langName)\r\n\r\n if(lang)\r\n localStorage.setItem(TRANSLATE_STORAGE_KEY, langName)\r\n\r\n return this.load$(lang).pipe(\r\n tap(() => this.lang$.next(lang))\r\n )\r\n }\r\n\r\n public loadFromStorage$ = () => {\r\n const lang = localStorage.getItem(TRANSLATE_STORAGE_KEY)\r\n\r\n if(!lang)\r\n throw new Error(\"Language not set or not valid!!\")\r\n\r\n const foundLang = this.langs.find(l => l.name === lang)\r\n\r\n return this.load$(foundLang)\r\n }\r\n\r\n private load$ = ({ name, altFileName }: ILanguage) => this.httpClient.get<Record<string, string>>(`assets/langs/${altFileName || name}.json`).pipe(\r\n tap(content => this.langContent = content)\r\n )\r\n\r\n public translate = (key: string, params?: Record<string, string>): string => {\r\n const base = key.split(\".\").reduce((prev, curr) => prev?.[curr], this.langContent as any),\r\n ret = base || key\r\n\r\n if (params){\r\n return Object.keys(params).reduce(\r\n (curr, key) => curr.replace(`{${key}}`, params[key as keyof Object]),\r\n ret\r\n )\r\n }\r\n\r\n return ret\r\n }\r\n\r\n public getLang = () => this.lang$.getValue()\r\n\r\n public getLang$ = () => this.lang$.asObservable().pipe(distinctUntilChanged())\r\n\r\n private getLocale = () => this.getLang()?.locale || \"en-US\"\r\n\r\n public formatDate = (d: string) => formatDate(new Date(d), this.translate(\"dateFormat\"), this.getLocale())\r\n\r\n public formatDateTime = (d: string) => formatDate(new Date(d), this.translate(\"dateTimeFormat\"), this.getLocale())\r\n}\r\n","import { inject, Service } from \"@angular/core\"\r\nimport { BehaviorSubject, delay, filter } from \"rxjs\"\r\nimport { DialogComponentInput, DialogOutput, IDialogInput } from \"../interfaces\"\r\nimport { TranslateService } from \"./translate.service\"\r\n\r\n@Service()\r\nexport class DialogService{\r\n private dialog$ = new BehaviorSubject<(IDialogInput & { _dialogId: number })[]>([])\r\n private waiters: BehaviorSubject<DialogOutput>[] = []\r\n private ts = inject(TranslateService)\r\n\r\n private getLastWaiter = () => this.waiters[this.waiters.length - 1]\r\n\r\n public getDialog = () => this.dialog$.getValue()\r\n\r\n public getDialog$ = () => this.dialog$.asObservable()\r\n\r\n public openDialog = (input: IDialogInput) => {\r\n const newWaiter$ = new BehaviorSubject<DialogOutput>(null)\r\n this.waiters.push(newWaiter$)\r\n this.dialog$.next(this.dialog$.getValue().concat({\r\n ...input,\r\n _dialogId: new Date().getTime()\r\n }))\r\n\r\n return this.getLastWaiter().pipe(\r\n filter(d => d != null),\r\n delay(0)\r\n )\r\n }\r\n\r\n public openDialogComponent = (component: DialogComponentInput) => this.openDialog({\r\n message: null,\r\n component\r\n })\r\n\r\n public showLoading = (message = this.ts.translate(\"loading\")) => this.openDialog({\r\n type: \"loading\",\r\n message\r\n })\r\n\r\n public close = () => {\r\n const v = this.dialog$.getValue()\r\n this.dialog$.next(v.slice(0, v.length - 1))\r\n this.getLastWaiter()?.complete()\r\n this.waiters = this.waiters.slice(0, this.waiters.length - 1)\r\n }\r\n\r\n public action = (action: DialogOutput) => this.getLastWaiter()?.next(action)\r\n}\r\n","import { inject, Service } from \"@angular/core\"\r\nimport { catchError, delay, filter, mergeMap, Observable, ObservableInput, of, tap, throwError } from \"rxjs\"\r\nimport { DialogActionType, DialogComponentInput, IDialogInput } from \"../interfaces\"\r\nimport { DialogService } from \"./dialog.service\"\r\nimport { TranslateService } from \"./translate.service\"\r\n\r\n@Service()\r\nexport class DialogUtilsService{\r\n private dialogService = inject(DialogService)\r\n private translateService = inject(TranslateService)\r\n\r\n public showLoading$ = <T, T2>(obs: (res: T2) => Observable<T>) => mergeMap<T2, ObservableInput<T>>(res => of(res).pipe(\r\n delay(0),\r\n tap(() => this.dialogService.showLoading().subscribe()),\r\n mergeMap(res => obs(res)),\r\n catchError(err => {\r\n this.closeLatestDialog()\r\n return throwError(() => err)\r\n })\r\n ))\r\n\r\n public hideLoading = () => this.closeLatestDialog()\r\n\r\n public closeLatestDialog = () => this.dialogService.close()\r\n\r\n public closeWithAction = <T>(data: T) => {\r\n this.dialogService.action({ type: DialogActionType.OK, data })\r\n this.closeLatestDialog()\r\n }\r\n\r\n public openDialogComponent = (component: DialogComponentInput) => this.dialogService.openDialogComponent(component)\r\n\r\n public openDialog = (input: IDialogInput) => this.dialogService.openDialog(input)\r\n\r\n public askConfirmAndLoad = <T>(\r\n input: Pick<IDialogInput, \"title\" | \"message\" | \"hideCloseX\" | \"width\">,\r\n obs: (resp: DialogActionType) => Observable<T>,\r\n getDialogResp = false\r\n ) => this.dialogService.openDialog({\r\n title: this.translateService.translate(input.title),\r\n message: this.translateService.translate(input.message),\r\n type: \"confirm\",\r\n hideCloseX: input.hideCloseX,\r\n width: input.width\r\n }).pipe(\r\n filter(res => res.type === DialogActionType.OK || getDialogResp),\r\n this.showLoading$(res => obs(res.type)),\r\n tap(() => this.hideLoading())\r\n )\r\n}","import { Service } from \"@angular/core\"\r\nimport { BehaviorSubject } from \"rxjs\"\r\nimport { INotificationInput } from \"../interfaces\"\r\n\r\n@Service()\r\nexport class NotificationService {\r\n private notification$ = new BehaviorSubject<INotificationInput>(null)\r\n private history$ = new BehaviorSubject<Array<INotificationInput & { date: Date }>>([])\r\n\r\n public getNotification$ = () => this.notification$.asObservable()\r\n\r\n public show = (input: INotificationInput) => {\r\n this.notification$.next(input)\r\n this.history$.next(this.history$.getValue().concat({ ...input, date: new Date() }))\r\n }\r\n\r\n public hide = () => this.notification$.next(null)\r\n\r\n public getHistory$ = () => this.history$.asObservable()\r\n}\r\n","import { Service } from \"@angular/core\"\r\nimport { BehaviorSubject } from \"rxjs\"\r\nimport { IPopover } from \"../interfaces\"\r\n\r\n@Service()\r\nexport class PopoverService {\r\n private popover$ = new BehaviorSubject<IPopover>(null)\r\n\r\n public getPopover$ = () => this.popover$.asObservable()\r\n\r\n public getPopover = () => this.popover$.getValue()\r\n\r\n public showPopover = (input: IPopover) => this.popover$.next(input)\r\n\r\n public hide = () => this.popover$.next(null)\r\n}","import { inject, Service } from \"@angular/core\"\r\nimport { ActivatedRouteSnapshot, CanActivate } from \"@angular/router\"\r\nimport { catchError, mergeMap, of } from \"rxjs\"\r\nimport { ROUTE_CHECK_SERVICE } from \"../interfaces\"\r\nimport { StoreService } from \"./\"\r\n\r\n@Service()\r\nexport class RouteCheckService implements CanActivate{\r\n private storeService = inject(StoreService)\r\n private routeService = inject(ROUTE_CHECK_SERVICE)\r\n\r\n public canActivate({ routeConfig }: ActivatedRouteSnapshot) {\r\n if(!this.storeService.isInitialized())\r\n return false\r\n\r\n return this.routeService.load$().pipe(\r\n catchError(() => of(null)),\r\n mergeMap(() => this.routeService.checkRoute(routeConfig.path))\r\n )\r\n }\r\n}","import { Service, signal } from \"@angular/core\"\r\nimport { BehaviorSubject, filter, fromEvent, tap, zip } from \"rxjs\"\r\n// ! Importante che venga importato con percorso preciso\r\nimport { Subscriptable } from \"../classes/subscriptable\"\r\nimport { IStore } from \"../interfaces\"\r\n\r\n@Service()\r\nexport class StoreService extends Subscriptable {\r\n private appInitialized = signal(false)\r\n\r\n constructor(){\r\n super()\r\n\r\n this.addSubscription(zip([\r\n fromEvent<KeyboardEvent>(window, \"keydown\").pipe(\r\n filter(e => !this.isPressingCtrl() && e.ctrlKey),\r\n tap(() => this.setCtrlKey(true))\r\n ),\r\n fromEvent<KeyboardEvent>(window, \"keyup\").pipe(\r\n filter(e => this.isPressingCtrl() && e.key === \"Control\"),\r\n tap(() => this.setCtrlKey(false))\r\n ),\r\n fromEvent<KeyboardEvent>(window, \"blur\").pipe(\r\n filter(() => this.isPressingCtrl()),\r\n tap(() => this.setCtrlKey(false))\r\n )\r\n ]).subscribe())\r\n }\r\n\r\n private store$ = new BehaviorSubject<IStore>({\r\n lists: {},\r\n entities: {},\r\n pressingCtrl: false\r\n })\r\n\r\n public addList = (key: string, list: Array<any>) => this.store$.next({\r\n ...this.store$.getValue(),\r\n lists: {\r\n ...this.store$.getValue().lists,\r\n [key]: list\r\n }\r\n })\r\n\r\n public getList = <T>(key: string) => this.store$.getValue().lists[key] as T\r\n\r\n public addEntity = (key: string, entity: any) => this.store$.next({\r\n ...this.store$.getValue(),\r\n entities: {\r\n ...this.store$.getValue().entities,\r\n [key]: entity\r\n }\r\n })\r\n\r\n public getEntity = <T>(key: string) => this.store$.getValue().entities[key] as T\r\n\r\n public setCtrlKey = (pressingCtrl: boolean) => this.store$.next({\r\n ...this.store$.getValue(),\r\n pressingCtrl\r\n })\r\n\r\n public isPressingCtrl = () => this.store$.getValue().pressingCtrl\r\n\r\n public isInitialized = () => this.appInitialized()\r\n\r\n public initialize = () => this.appInitialized.set(true)\r\n}\r\n","import { Service } from \"@angular/core\"\r\nimport { BehaviorSubject } from \"rxjs\"\r\nimport { ITooltip } from \"../interfaces\"\r\n\r\n@Service()\r\nexport class TooltipService {\r\n private tooltip$ = new BehaviorSubject<ITooltip>(null)\r\n\r\n public showTooltip = (input: ITooltip) => this.tooltip$.next(input)\r\n \r\n public getTooltip$ = () => this.tooltip$.asObservable()\r\n \r\n public getTooltip = () => this.tooltip$.getValue()\r\n\r\n public hide = () => this.tooltip$.next(null)\r\n}\r\n","import { Directive, ElementRef, inject, Input } from \"@angular/core\"\r\nimport { filter, fromEvent } from \"rxjs\"\r\nimport { Subscriptable } from \"../classes/subscriptable\"\r\nimport { ITooltip, TooltipDirection } from \"../interfaces\"\r\nimport { TooltipService } from \"../services\"\r\n\r\n@Directive({\r\n selector: \"[dolfoTooltip]\",\r\n standalone: false\r\n})\r\nexport class TooltipDirective extends Subscriptable implements Omit<ITooltip, \"elementRef\">{\r\n @Input({ required: true, alias: \"dolfoTooltip\" }) content: string\r\n @Input() direction: TooltipDirection = \"top\"\r\n private el = inject(ElementRef<HTMLElement>)\r\n private ts = inject(TooltipService)\r\n\r\n constructor() {\r\n super()\r\n\r\n this.addSubscription(fromEvent(this.el.nativeElement, \"mousedown\").pipe(\r\n filter(() => !!this.ts.getTooltip())\r\n ).subscribe(() => this.ts.hide()))\r\n\r\n this.addSubscription(\r\n fromEvent(this.el.nativeElement, \"mouseenter\").pipe(\r\n filter(() => !!this.content)\r\n ).subscribe(() => this.ts.showTooltip({\r\n content: this.content,\r\n elementRef: this.el,\r\n direction: this.direction\r\n }))\r\n )\r\n }\r\n}\r\n","import { inject, Pipe, PipeTransform } from \"@angular/core\"\r\nimport { TranslateService } from \"../services\"\r\n\r\n@Pipe({\r\n name: \"translate\",\r\n standalone: true,\r\n pure: false\r\n})\r\nexport class TranslatePipe implements PipeTransform {\r\n private ts = inject(TranslateService)\r\n\r\n transform = (value: string, args?: Record<string, string>) => this.ts.translate(value, args)\r\n}\r\n","import { DecimalPipe } from \"@angular/common\"\r\nimport { Component, ElementRef, inject } from \"@angular/core\"\r\nimport { ValidationErrors } from \"@angular/forms\"\r\nimport { BehaviorSubject, distinctUntilChanged, map, Observable } from \"rxjs\"\r\nimport { isDeepEqual } from \"../../shared/interfaces\"\r\nimport { TranslateService } from \"../../shared/services\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n selector: \"dolfo-input-container\",\r\n template: `<div class=\"input-container\" [class.error]=\"decodedError$ | async\">\r\n @if(input.label){\r\n <label>\r\n {{ input.label }}\r\n @if(input.isRequired){\r\n <span [dolfoTooltip]=\"'form.required' | translate\">*</span>\r\n }\r\n </label>\r\n }\r\n\r\n <ng-content></ng-content>\r\n\r\n @let error = decodedError$ | async;\r\n\r\n @if(error){\r\n <div class=\"input-errors\">\r\n {{ error[0] | translate: error[1] }}\r\n </div>\r\n }\r\n </div>`,\r\n providers: [DecimalPipe],\r\n standalone: false\r\n})\r\nexport class InputContainerComponent{\r\n public errors$ = new BehaviorSubject<ValidationErrors>(null)\r\n public decodedError$: Observable<[string, Record<string, string>?]> = this.errors$.pipe(\r\n distinctUntilChanged((a, b) => isDeepEqual(a, b)),\r\n map(val => {\r\n if(val){\r\n if(val.required)\r\n return [\"form.requiredError\"]\r\n if(val.email)\r\n return [\"form.invalidEmail\"]\r\n if(val.maxlength)\r\n return [`form.maxChars`, { length: val.maxlength.requiredLength }]\r\n if(val.minlength)\r\n return [`form.minChars`, { length: val.minlength.requiredLength }]\r\n if(val.password)\r\n return [\"form.invalidPassword\"]\r\n if(val.max)\r\n return [\"form.maxValue\", { value: this.cp.transform(val.max.max, null, this.translateService.getLang().name) }]\r\n\r\n return [\"form.error.\" + Object.keys(val)[0], val[Object.keys(val)[0]]]\r\n }\r\n \r\n return null\r\n })\r\n )\r\n public input = inject(BaseFormInput)\r\n private elRef = inject(ElementRef<HTMLElement>)\r\n private translateService = inject(TranslateService)\r\n private cp = inject(DecimalPipe)\r\n\r\n public focus = () => {\r\n const input = this.elRef.nativeElement.querySelector(\"input\")\r\n\r\n if(input)\r\n input.focus()\r\n }\r\n}\r\n","import { AfterViewInit, Directive, EventEmitter, inject, Input, OnInit, Output, ViewChild } from \"@angular/core\"\r\nimport { AbstractControl, ControlContainer, ControlValueAccessor, FormControl, ValidationErrors, Validator, Validators } from \"@angular/forms\"\r\nimport { filter } from \"rxjs\"\r\nimport { Subscriptable } from \"../../shared/classes/subscriptable\"\r\nimport { isDeepEqual } from \"../../shared/interfaces\"\r\nimport { InputContainerComponent } from \"./input-container.component\"\r\n\r\n@Directive()\r\nexport abstract class BaseFormInput<T> extends Subscriptable implements ControlValueAccessor, Validator, AfterViewInit, OnInit {\r\n @ViewChild(InputContainerComponent) public container: InputContainerComponent\r\n @Input({ required: true }) formControlName: string\r\n @Input() label: string\r\n @Output() onChange: EventEmitter<T> = new EventEmitter<T>()\r\n\r\n protected changeInternal: (obj: T) => void\r\n private cc = inject(ControlContainer)\r\n \r\n public input = new FormControl<T>(null)\r\n \r\n protected control: AbstractControl\r\n\r\n ngOnInit(){\r\n this.control = this.cc.control.get(this.formControlName)\r\n\r\n const initialValue = this.control.value\r\n\r\n this.addSubscription(this.input.valueChanges.pipe(\r\n filter(v => !this.control.touched && !isDeepEqual(initialValue, v) && this.input.dirty)\r\n ).subscribe(() => this.control.markAsTouched()))\r\n\r\n this.addSubscription(this.control.statusChanges.pipe(\r\n filter(s => (s === \"VALID\" || s === \"INVALID\") && this.control.touched && !!this.container)\r\n ).subscribe(() => this.container.errors$.next(this.control.errors)))\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.addSubscription(this.input.valueChanges.pipe(\r\n filter(() => !this.input.disabled)\r\n ).subscribe(v => {\r\n this.onChange.emit(v)\r\n this.changeInternal(v)\r\n }))\r\n }\r\n\r\n writeValue = (obj: T) => this.input.setValue(obj)\r\n\r\n registerOnChange = (fn: (obj: T) => void) => this.changeInternal = fn\r\n\r\n registerOnTouched = (_fn: (obj: any) => void) => {}\r\n\r\n setDisabledState = (isDisabled: boolean) => {\r\n if(isDisabled)\r\n setTimeout(() => this.input.disable())\r\n else\r\n this.input.enable()\r\n }\r\n\r\n validate = (_control: AbstractControl): ValidationErrors => null\r\n\r\n public get isRequired(){\r\n return this.control.hasValidator(Validators.required)\r\n }\r\n}\r\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, forwardRef, Input, Output, signal, TemplateRef, ViewChild } from \"@angular/core\"\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\"\r\nimport { delay, filter, fromEvent, map, mergeMap, tap } from \"rxjs\"\r\nimport { AutocompleteConfig, ComboOption } from \"../../shared/interfaces\"\r\nimport { OnBlur, OnFocus } from \"../../shared/interfaces/events\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n selector: \"dolfo-autocomplete\",\r\n template: `<dolfo-input-container>\r\n <div class=\"combobox autocomplete\" [class.opened]=\"opened()\" #autocomplete>\r\n <div class=\"combobox-label\">\r\n <input #autocompleteInput type=\"text\" [value]=\"currentOption()\" (focus)=\"focus($event)\" (blur)=\"onBlur.emit($event)\" />\r\n </div>\r\n\r\n <div class=\"combobox-options\" [class.opened]=\"opened()\">\r\n @if(loading()){\r\n <div class=\"loading\">\r\n {{ 'autocomplete.loading' | translate }}\r\n </div>\r\n }\r\n @if(options().length === 0 && !loading()){\r\n <div class=\"no-results\">\r\n {{ 'autocomplete.noResults' | translate }}\r\n </div>\r\n }\r\n\r\n @for(opt of options(); track opt.value; let idx = $index){\r\n <div class=\"combobox-option\" [class.selected]=\"isSelected(opt)\" [class.focused]=\"currentFocus() === idx\" (click)=\"$event.stopPropagation(); setOption(opt)\">\r\n @if(resultTemplate){\r\n <ng-container [ngTemplateOutlet]=\"resultTemplate\" [ngTemplateOutletContext]=\"{ item: opt }\"></ng-container>\r\n }@else {\r\n <span>{{ opt.label }}</span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </dolfo-input-container>`,\r\n standalone: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => AutocompleteComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => AutocompleteComponent), multi: true },\r\n { provide: BaseFormInput, useExisting: AutocompleteComponent }\r\n ]\r\n})\r\nexport class AutocompleteComponent extends BaseFormInput<any> implements AfterViewInit, OnFocus, OnBlur{\r\n @ViewChild(\"autocomplete\") autocomplete: ElementRef<HTMLDivElement>\r\n @ViewChild(\"autocompleteInput\") autocompleteInput: ElementRef<HTMLInputElement>\r\n @Input({ required: true }) config: AutocompleteConfig<any>\r\n @Input() minChars = 3\r\n @Input() resultTemplate: TemplateRef<any>\r\n @Output() onFocus = new EventEmitter<FocusEvent>()\r\n @Output() onBlur = new EventEmitter<FocusEvent>()\r\n\r\n public options = signal<ComboOption[]>([])\r\n public opened = signal(false)\r\n public currentOption = signal(\"\")\r\n public currentOptionLabel = signal(\"\")\r\n public loading = signal(false)\r\n public currentFocus = signal<number>(null)\r\n private keyDown = false\r\n private keyDownTimeout: ReturnType<typeof setTimeout>\r\n\r\n constructor(){\r\n super()\r\n\r\n this.addSubscription(fromEvent(window, \"click\").pipe(\r\n filter(() => !!this.autocomplete && !this.input.disabled),\r\n map(ev => ev.target as HTMLElement),\r\n map(target => !this.autocomplete.nativeElement.contains(target) && !target.isEqualNode(this.autocomplete.nativeElement))\r\n ).subscribe(condition => {\r\n if(condition && this.opened()){\r\n this.currentFocus.set(null)\r\n this.opened.set(false)\r\n }else if(!this.opened() && !condition)\r\n this.opened.set(true)\r\n }))\r\n\r\n this.addSubscription(this.input.valueChanges.pipe(\r\n filter(v => v != null && !!this.autocompleteInput && (this.autocompleteInput.nativeElement.value !== this.currentOptionLabel() || !this.currentOptionLabel()))\r\n ).subscribe(value => this.setOption({ value, label: this.config.getLabel(value) }, true)))\r\n\r\n this.addSubscription(this.input.valueChanges.pipe(\r\n filter(v => v == null && !!this.autocompleteInput && this.autocompleteInput.nativeElement.value != null && this.autocompleteInput.nativeElement.value !== \"\")\r\n ).subscribe(() => this.setOption(null, true)))\r\n\r\n this.addSubscription(this.input.statusChanges.pipe(\r\n filter(() => !!this.autocompleteInput)\r\n ).subscribe(() => this.autocompleteInput.nativeElement.disabled = this.input.disabled))\r\n }\r\n\r\n override ngAfterViewInit() {\r\n super.ngAfterViewInit()\r\n\r\n this.addSubscription(fromEvent(this.autocompleteInput.nativeElement, \"input\").pipe(\r\n map(ev => (ev.target as HTMLInputElement).value),\r\n tap(value => {\r\n if(!value){\r\n this.input.setValue(null)\r\n this.onChange.emit(null)\r\n this.options.set([])\r\n }\r\n }),\r\n delay(1000),\r\n filter(value => !this.keyDown && value.length >= this.minChars),\r\n tap(() => {\r\n this.options.set([])\r\n this.opened.set(true)\r\n this.loading.set(true)\r\n }),\r\n mergeMap(value => this.config.search$(value)),\r\n map(results => results.map(value => ({\r\n value,\r\n label: this.config.getLabel(value)\r\n })))\r\n ).subscribe(results => {\r\n this.loading.set(false)\r\n this.options.set(results)\r\n this.currentFocus.set(null)\r\n }))\r\n\r\n this.addSubscription(fromEvent<KeyboardEvent>(this.autocompleteInput.nativeElement, \"keydown\").subscribe(e => {\r\n if(e.key.length === 1){\r\n this.keyDown = true\r\n clearTimeout(this.keyDownTimeout)\r\n this.keyDownTimeout = setTimeout(() => this.keyDown = false, 1000)\r\n }else if(this.opened()){\r\n if(e.key === \"ArrowDown\"){\r\n e.preventDefault()\r\n this.currentFocus.update(v => v === this.options().length - 1 ? 0 : v === null ? 0 : v + 1)\r\n }else if(e.key === \"ArrowUp\"){\r\n e.preventDefault()\r\n this.currentFocus.update(v => v === 0 ? this.options().length - 1 : v === null ? 0 : v - 1)\r\n }else if(e.key === \"Enter\" && this.currentFocus() >= 0 && this.currentFocus() != null){\r\n e.preventDefault()\r\n this.setOption(this.options()[this.currentFocus()])\r\n }else if(e.key === \"Tab\"){\r\n this.currentFocus.set(null)\r\n this.opened.set(false)\r\n }\r\n }\r\n }))\r\n }\r\n\r\n\tpublic focus = (e: FocusEvent) => {\r\n\t\tif(this.input.disabled)\r\n\t\t\treturn\r\n\t\t\r\n\t\tthis.opened.set(true)\r\n\t\tthis.onFocus.emit(e)\r\n\t}\r\n\r\n\tpublic isSelected = (opt: ComboOption) => this.input.value === opt.value\r\n\r\n public setOption = (opt: ComboOption, noEmit = false) => {\r\n this.autocompleteInput.nativeElement.value = opt?.label ?? \"\"\r\n this.currentOptionLabel.set(opt?.label)\r\n this.input.setValue(opt?.value)\r\n this.opened.set(false)\r\n\r\n if(!noEmit)\r\n\t\t this.onChange.emit(this.input.value)\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, inject, Input } from \"@angular/core\"\r\nimport { ICON_COMPONENT, IconName } from \"../../shared/interfaces\"\r\n\r\n@Component({\r\n selector: \"dolfo-icon\",\r\n standalone: false,\r\n template: `<ng-container [ngComponentOutlet]=\"iconComponent\" [ngComponentOutletInputs]=\"{ name }\"></ng-container>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class IconWrapperComponent {\r\n @Input({ required: true }) name: IconName | string\r\n\r\n public iconComponent = inject(ICON_COMPONENT)\r\n}\r\n","import { AfterViewInit, booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, inject, Input, OnChanges, Output, signal, SimpleChanges, ViewChild } from \"@angular/core\"\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\"\r\nimport { filter, fromEvent, map } from \"rxjs\"\r\nimport { ComboInput, ComboOption, isDeepEqual } from \"../../shared/interfaces\"\r\nimport { OnBlur, OnFocus } from \"../../shared/interfaces/events\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n selector: \"dolfo-combobox\",\r\n template: `<dolfo-input-container>\r\n\t\t<div class=\"combobox\" [class.opened]=\"opened()\" #combo tabindex=\"0\" (focus)=\"focus($event)\" (blur)=\"onBlur.emit($event); opened.set(false)\" [class.disabled]=\"input.disabled\">\r\n\t\t\t<div class=\"combobox-label\">\r\n @if(hasValue && !input.disabled){\r\n <dolfo-icon [dolfoTooltip]=\"'form.resetValue' | translate\" name=\"cross\" (click)=\"input.setValue(null); $event.stopPropagation()\"></dolfo-icon>\r\n }@else {\r\n <dolfo-icon name=\"circle-down\" class=\"combo-icon\"></dolfo-icon>\r\n }\r\n\t\t\t\t<span>{{ comboLabel() | translate }}</span>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"combobox-options\" [class.opened]=\"opened()\">\r\n\t\t\t\t@for(opt of options; track opt.value; let idx = $index){\r\n\t\t\t\t\t<div class=\"combobox-option\" [class.selected]=\"isSelected(opt)\" [class.focused]=\"currentFocus() === idx\" (click)=\"$event.stopPropagation(); setOption(opt)\">\r\n\t\t\t\t\t\t<span>{{ opt.label }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\r\n <input type=\"hidden\" [formControl]=\"input\" />\r\n\t\t</div>\r\n\t</dolfo-input-container>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ComboboxComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => ComboboxComponent), multi: true },\r\n { provide: BaseFormInput, useExisting: ComboboxComponent }\r\n ],\r\n standalone: false\r\n})\r\nexport class ComboboxComponent extends BaseFormInput<any | any[]> implements AfterViewInit, Required<ComboInput>, OnBlur, OnFocus, OnChanges{\r\n\t@ViewChild(\"combo\") combo: ElementRef<HTMLDivElement>\r\n\t@Input({ required: true }) options: ComboOption[]\r\n\t@Input() placeHolder: string\r\n\t@Input({ transform: booleanAttribute }) multiple = false\r\n\t@Output() onFocus = new EventEmitter<FocusEvent>()\r\n\t@Output() onBlur = new EventEmitter<FocusEvent>()\r\n\r\n private cdr = inject(ChangeDetectorRef)\r\n\r\n\tpublic opened = signal(false)\r\n public currentFocus = signal<number>(null)\r\n public comboLabel = signal(\"\")\r\n\r\n\tconstructor(){\r\n\t\tsuper()\r\n\r\n\t\tthis.addSubscription(fromEvent(window, \"click\").pipe(\r\n filter(() => !!this.combo && !this.input.disabled),\r\n\t\t\tmap(ev => ev.target as HTMLElement),\r\n\t\t\tmap(target => !this.combo.nativeElement.contains(target) && !target.isEqualNode(this.combo.nativeElement))\r\n\t\t).subscribe(condition => {\r\n\t\t\tif(condition && this.opened())\r\n\t\t\t\tthis.opened.set(false)\r\n\t\t\telse if(!this.opened() && !condition)\r\n\t\t\t\tthis.opened.set(true)\r\n\t\t}))\r\n\r\n this.addSubscription(this.input.valueChanges.subscribe(value => this.comboLabel.set(this.extractLabel(value))))\r\n\t}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if(changes.options && !isDeepEqual(changes.options.previousValue, changes.options.currentValue))\r\n this.input.setValue(null)\r\n }\r\n\r\n\toverride ngAfterViewInit() {\r\n\t\tsuper.ngAfterViewInit()\r\n\r\n\t\tthis.addSubscription(fromEvent<KeyboardEvent>(this.combo.nativeElement, \"keydown\").subscribe(e => {\r\n if(this.opened()){\r\n if(e.key === \"ArrowDown\"){\r\n e.preventDefault()\r\n this.currentFocus.update(v => v === this.options.length - 1 ? 0 : v === null ? 0 : v + 1)\r\n }else if(e.key === \"ArrowUp\"){\r\n e.preventDefault()\r\n this.currentFocus.update(v => v === 0 ? this.options.length - 1 : v === null ? 0 : v - 1)\r\n }else if(e.key === \"Enter\" && this.currentFocus() >= 0 && this.currentFocus() != null){\r\n e.preventDefault()\r\n this.setOption(this.options[this.currentFocus()])\r\n\r\n\t\t\t\t\tif(!this.multiple)\r\n\t\t\t\t\t\tthis.opened.set(false)\r\n\r\n\t\t\t\t\tthis.cdr.detectChanges()\r\n }else if(e.key === \"Tab\"){\r\n this.currentFocus.set(null)\r\n this.opened.set(false)\r\n }\r\n }\r\n }))\r\n\t}\r\n\r\n\tprivate extractLabel = (value: any | any[]) => {\r\n\t\tif(value == null || (value as number[])?.length === 0)\r\n\t\t\treturn this.placeHolder || \" \"\r\n\r\n\t\tif(!this.multiple)\r\n\t\t\treturn this.options.find(opt => isDeepEqual(opt.value, value))?.label\r\n\r\n\t\treturn this.options.filter(opt => (value as number[]).some(o => isDeepEqual(opt.value, o))).map(opt => opt.label).join(\", \")\r\n\t}\r\n\r\n\tpublic focus = (e: FocusEvent) => {\r\n\t\tif(this.input.disabled)\r\n\t\t\treturn\r\n\t\t\r\n\t\tthis.opened.set(true)\r\n\t\tthis.onFocus.emit(e)\r\n\t}\r\n\r\n\tpublic setOption = (opt: ComboOption) => {\r\n\t\tconst { value } = this.input\r\n\r\n\t\tif(!this.multiple){\r\n\t\t\tif(isDeepEqual(value, opt.value))\r\n\t\t\t\tthis.input.setValue(null)\r\n\t\t\telse\r\n\t\t\t\tthis.input.setValue(opt.value)\r\n\r\n this.opened.set(false)\r\n\t\t}else{\r\n\t\t\tconst castValue = value as Array<any>\r\n\r\n\t\t\tif(castValue.some(o => isDeepEqual(opt.value, o)))\r\n\t\t\t\tthis.input.setValue(castValue.filter(v => isDeepEqual(opt.value, v)))\r\n\t\t\telse\r\n\t\t\t\tthis.input.setValue(castValue.concat(opt.value))\r\n\t\t}\r\n\r\n\t\tthis.onChange.emit(this.input.value)\r\n\t}\r\n\r\n\tpublic isSelected = (opt: ComboOption) => {\r\n\t\tconst { value } = this.input\r\n\r\n\t\tif(!this.multiple)\r\n\t\t\treturn isDeepEqual(value, opt.value)\r\n\r\n\t\treturn (value as Array<any>).some(o => isDeepEqual(opt.value, o))\r\n\t}\r\n\r\n public get hasValue(){\r\n return this.multiple ? this.input.value != null && this.input.value.length > 0 : this.input.value != null\r\n }\r\n}\r\n","import { booleanAttribute, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, forwardRef, Input, Output, ViewChild } from \"@angular/core\"\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\"\r\nimport { OnBlur, OnFocus } from \"../../shared/interfaces/events\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n\tselector: \"dolfo-datepicker\",\r\n\ttemplate: `<dolfo-input-container>\r\n\t\t<input #formInput [type]=\"selectTime ? 'datetime-local' : 'date'\" [formControl]=\"input\" (focus)=\"openPicker(); onFocus.emit($event)\" (blur)=\"onBlur.emit($event)\" />\r\n\t</dolfo-input-container>`,\r\n\tstandalone: false,\r\n\tproviders: [\r\n\t\t{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DatepickerComponent), multi: true },\r\n\t\t{ provide: NG_VALIDATORS, useExisting: forwardRef(() => DatepickerComponent), multi: true },\r\n\t\t{ provide: BaseFormInput, useExisting: DatepickerComponent }\r\n\t],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DatepickerComponent extends BaseFormInput<Date> implements OnFocus, OnBlur{\r\n @ViewChild(\"formInput\") formInput: ElementRef<HTMLInputElement>\r\n @Input({ transform: booleanAttribute }) selectTime = false\r\n\t@Output() onFocus = new EventEmitter<FocusEvent>()\r\n\t@Output() onBlur = new EventEmitter<FocusEvent>()\r\n\r\n public openPicker = () => this.formInput.nativeElement.showPicker()\r\n}\r\n","import { booleanAttribute, ChangeDetectionStrategy, Component, Input } from \"@angular/core\"\r\nimport { FormGroup } from \"@angular/forms\"\r\n\r\n@Component({\r\n selector: \"dolfo-form\",\r\n template: `<form [formGroup]=\"formGroup\">\r\n <ng-content></ng-content>\r\n\r\n @if(hiddenSubmit){\r\n <button type=\"submit\" [ngStyle]=\"{ display: 'none' }\"></button>\r\n }\r\n </form>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class FormComponent{\r\n @Input({ required: true }) formGroup: FormGroup\r\n @Input({ transform:booleanAttribute }) hiddenSubmit: boolean\r\n}\r\n","import { AfterViewInit, Directive, inject, Injector, OnInit, signal, ViewContainerRef } from \"@angular/core\"\r\nimport { Router } from \"@angular/router\"\r\nimport { concatAll, from, Observable, tap } from \"rxjs\"\r\nimport { StoreService } from \"../services\"\r\nimport { OverlayManager, Subscriptable } from \"./\"\r\n\r\n@Directive()\r\nexport abstract class BaseAppComponent extends Subscriptable implements OnInit, AfterViewInit{\r\n protected abstract container: ViewContainerRef\r\n\r\n protected abstract readonly streams: Observable<string>[]\r\n\r\n protected injector = inject(Injector)\r\n protected router = inject(Router)\r\n protected storeService = inject(StoreService)\r\n\r\n private loading = signal(0)\r\n public loadingMessage = signal(\"...\")\r\n\r\n ngOnInit(){\r\n from(Object.values(this.streams)).pipe(\r\n concatAll(),\r\n tap(desc => {\r\n this.loading.update(item => item + 1)\r\n this.loadingMessage.set(desc + \"...\")\r\n })\r\n ).subscribe(() => {\r\n if(this.loading() === Object.keys(this.streams).length){\r\n setTimeout(() => {\r\n this.loadingMessage.set(null)\r\n this.storeService.initialize()\r\n this.router.initialNavigation()\r\n }, 500)\r\n }\r\n })\r\n }\r\n\r\n ngAfterViewInit(){\r\n new OverlayManager(this.injector, this.container).init().forEach(s => this.addSubscription(s))\r\n }\r\n\r\n public get percentage(){\r\n return (this.loading() * 100) / Object.keys(this.streams).length\r\n }\r\n}","import { AfterViewChecked, AfterViewInit, ChangeDetectorRef, Directive, inject, OnDestroy, QueryList, ViewChild, ViewChildren } from \"@angular/core\"\r\nimport { FormArray, FormGroup, FormGroupDirective } from \"@angular/forms\"\r\nimport { BehaviorSubject, catchError, distinctUntilChanged, filter, mergeMap, Observable, of, Subscription, tap } from \"rxjs\"\r\nimport { BaseFormInput } from \"../../components/form/base-form-input\"\r\nimport { NotificationService, TranslateService } from \"../services\"\r\nimport { Subscriptable } from \"./subscriptable\"\r\n\r\n@Directive()\r\nexport abstract class Formable<T = object> extends Subscriptable implements OnDestroy, AfterViewInit, AfterViewChecked{\r\n @ViewChild(FormGroupDirective) protected formRef: FormGroupDirective\r\n @ViewChildren(BaseFormInput) private inputs: QueryList<BaseFormInput<unknown>>\r\n\r\n protected loading$ = new BehaviorSubject(false)\r\n protected notificationService = inject(NotificationService)\r\n protected translateService = inject(TranslateService)\r\n protected cdr = inject(ChangeDetectorRef)\r\n private subForm: Subscription\r\n \r\n protected abstract submit: (_formValue: T) => Observable<unknown>\r\n\r\n ngAfterViewInit() {\r\n if(!this.formRef)\r\n return\r\n \r\n this.addSubscription(this.loading$.pipe(\r\n distinctUntilChanged()\r\n ).subscribe(loading => {\r\n if(loading)\r\n this.formRef.form.disable()\r\n else\r\n this.formRef.form.enable()\r\n }))\r\n\r\n this.subForm = this.formRef.ngSubmit.pipe(\r\n tap(() => this.findInForm(this.formRef.form)),\r\n mergeMap(() => {\r\n if(!this.formRef.invalid && !this.loading$.getValue()){\r\n this.loading$.next(true)\r\n return this.submit(this.formRef.form.getRawValue()).pipe(\r\n catchError(err => {\r\n this.loading$.next(false)\r\n return of(err)\r\n }),\r\n tap(() => this.loading$.next(false))\r\n )\r\n }\r\n \r\n return of(null)\r\n })\r\n ).subscribe()\r\n\r\n this.addSubscription(this.subForm)\r\n\r\n this.addSubscription(this.translateService.getLang$().subscribe(() => this.cdr.detectChanges()))\r\n }\r\n \r\n ngAfterViewChecked() {\r\n if(!this.formRef && this.subForm){\r\n this.subForm.unsubscribe()\r\n this.subForm = null\r\n }else if(this.formRef && !this.subForm)\r\n this.ngAfterViewInit()\r\n }\r\n\r\n private findInForm = (formGroup: FormGroup, index?: number) => {\r\n for(const [key, control] of Object.entries(formGroup.controls)){\r\n control.markAsTouched()\r\n control.updateValueAndValidity()\r\n\r\n if(control.invalid){\r\n const arr = formGroup.get(key)\r\n\r\n if(arr instanceof FormArray){\r\n let index = 0\r\n\r\n for(const item of arr.controls){\r\n if(this.findInForm(item as FormGroup, index))\r\n return true\r\n\r\n index++\r\n }\r\n }else{\r\n const inputs = this.inputs.toArray().filter(i => i.formControlName === key)\r\n\r\n if(inputs.length === 1)\r\n inputs[0].container?.focus()\r\n else if(index != null)\r\n inputs[index].container?.focus()\r\n\r\n return true\r\n }\r\n }\r\n }\r\n\r\n return false\r\n }\r\n\r\n public manualSubmit = () => this.formRef.ngSubmit.emit()\r\n\r\n protected registerPasswordChanges = (passwordControlName: string, confirmPasswordControlName: string) => {\r\n this.addSubscription(this.formRef.form.get(passwordControlName).valueChanges.pipe(\r\n distinctUntilChanged(),\r\n filter(() => this.formRef.form.get(passwordControlName).touched)\r\n ).subscribe(() => {\r\n this.formRef.form.get(confirmPasswordControlName).updateValueAndValidity()\r\n this.formRef.form.get(confirmPasswordControlName).markAsTouched()\r\n }))\r\n\r\n this.addSubscription(this.formRef.form.get(confirmPasswordControlName).valueChanges.pipe(\r\n distinctUntilChanged(),\r\n filter(() => this.formRef.form.get(confirmPasswordControlName).touched)\r\n ).subscribe(() => {\r\n this.formRef.form.get(passwordControlName).updateValueAndValidity()\r\n this.formRef.form.get(passwordControlName).markAsTouched()\r\n }))\r\n }\r\n\r\n public isLoading$ = () => this.loading$.asObservable()\r\n}\r\n","import { ChangeDetectionStrategy, Component, ElementRef, inject, InjectionToken, Input, OnInit } from \"@angular/core\"\r\nimport { fromEvent, race } from \"rxjs\"\r\nimport { Subscriptable } from \"../../shared/classes\"\r\nimport { ContextMenuItem, IContextMenu } from \"../../shared/interfaces\"\r\n\r\nexport const CONTEXT_MENU_DESTROY_TOKEN = new InjectionToken<() => void>(\"CONTEXT_MENU_DESTROY_TOKEN\")\r\n\r\n@Component({\r\n selector: \"dolfo-context-menu\",\r\n standalone: false,\r\n template: `<div class=\"context-menu\" [ngStyle]=\"{\r\n top: y + 'px',\r\n left: x + 'px'\r\n }\" (click)=\"$event.stopPropagation()\" [ngClass]=\"'position-' + position\">\r\n @for(item of items; track item.label){\r\n <div [ngClass]=\"item.className\" [class.disabled]=\"item.disabled\" (click)=\"clickItem(item)\">\r\n @if(item.icon){\r\n <dolfo-icon [name]=\"item.icon\"></dolfo-icon>\r\n }\r\n {{ item.label }}\r\n </div>\r\n }\r\n </div>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ContextMenuComponent extends Subscriptable implements IContextMenu, OnInit {\r\n @Input({ required: true }) x: number\r\n @Input({ required: true }) y: number\r\n @Input({ required: true }) items: ContextMenuItem[]\r\n @Input({ required: true }) ref: ElementRef<HTMLElement>\r\n @Input() position?: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\"\r\n \r\n private destroyFn = inject(CONTEXT_MENU_DESTROY_TOKEN)\r\n\r\n ngOnInit() {\r\n this.addSubscription(race([\r\n fromEvent(this.ref.nativeElement, \"contextmenu\"),\r\n fromEvent(window, \"click\"),\r\n fromEvent(window, \"resize\"),\r\n fromEvent(window, \"scroll\", { capture: true })\r\n ]).subscribe(this.destroyFn))\r\n }\r\n\r\n public clickItem = (item: ContextMenuItem) => {\r\n if(item.onClick && !item.disabled){\r\n item.onClick()\r\n this.destroyFn()\r\n }\r\n }\r\n}\r\n","import { Component, ElementRef, EventEmitter, forwardRef, Input, Output, ViewChild } from \"@angular/core\"\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\"\r\nimport { filter, map } from \"rxjs\"\r\nimport { InputType } from \"../../shared/interfaces\"\r\nimport { OnBlur, OnFocus } from \"../../shared/interfaces/events\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n selector: \"dolfo-input-text\",\r\n template: `<dolfo-input-container>\r\n @if(type === \"textarea\"){\r\n <textarea #formInput [name]=\"formControlName\" [formControl]=\"input\" (focus)=\"onFocus.emit($event)\" (blur)=\"onBlur.emit($event)\" [placeholder]=\"placeHolder\"></textarea>\r\n }@else{\r\n <input #formInput [name]=\"formControlName\" [type]=\"type\" [formControl]=\"input\" (focus)=\"onFocus.emit($event)\" (blur)=\"onBlur.emit($event)\" [placeholder]=\"placeHolder\" />\r\n }\r\n </dolfo-input-container>`,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputTextComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => InputTextComponent), multi: true },\r\n { provide: BaseFormInput, useExisting: InputTextComponent }\r\n ],\r\n standalone: false\r\n})\r\nexport class InputTextComponent extends BaseFormInput<string | number> implements OnFocus, OnBlur{\r\n @Input() type: InputType = \"text\"\r\n @Input() placeHolder = \"\"\r\n @Output() onFocus = new EventEmitter<FocusEvent>()\r\n @Output() onBlur = new EventEmitter<FocusEvent>()\r\n @ViewChild(\"formInput\") formInput: ElementRef<HTMLInputElement | HTMLTextAreaElement>\r\n\r\n public focus = () => this.formInput.nativeElement.focus()\r\n\r\n override ngAfterViewInit() {\r\n if(this.type !== \"number\")\r\n super.ngAfterViewInit()\r\n else{\r\n this.addSubscription(this.input.valueChanges.pipe(\r\n filter(() => !this.input.disabled),\r\n map(v => v != null && String(v).trim() !== \"\" ? Number(v) : null)\r\n ).subscribe(v => {\r\n this.onChange.emit(v)\r\n this.changeInternal(v)\r\n }))\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, forwardRef, Input } from \"@angular/core\"\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\"\r\nimport { ComboOption, isDeepEqual } from \"../../shared/interfaces\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n selector: \"dolfo-input-radio\",\r\n template: `<dolfo-input-container>\r\n @for(option of options; track option){\r\n <div class=\"radio-item\">\r\n <input type=\"radio\" [name]=\"formControlName\" [formControl]=\"input\" [checked]=\"isSelectedOption(option)\" [value]=\"option.value\" />\r\n <label (click)=\"setOption(option)\">{{ option.label }}</label>\r\n </div>\r\n }\r\n </dolfo-input-container>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputRadioComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => InputRadioComponent), multi: true },\r\n { provide: BaseFormInput, useExisting: InputRadioComponent }\r\n ]\r\n})\r\nexport class InputRadioComponent extends BaseFormInput<any> {\r\n @Input({ required: true }) options: ComboOption[]\r\n\r\n public isSelectedOption = (opt: ComboOption) => isDeepEqual(this.input.value, opt.value)\r\n\r\n public setOption = (opt: ComboOption) => {\r\n if(this.input.disabled)\r\n return\r\n \r\n this.input.setValue(opt.value)\r\n this.onChange.emit(this.input.value)\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, OnInit, TemplateRef, ViewChild } from \"@angular/core\"\r\n\r\n@Component({\r\n selector: \"dolfo-dialog-content\",\r\n template: `<ng-template><ng-content></ng-content></ng-template>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class DialogContentComponent implements OnInit{\r\n @ViewChild(TemplateRef) template: TemplateRef<unknown>\r\n private cdr = inject(ChangeDetectorRef)\r\n\r\n ngOnInit() {\r\n this.cdr.detectChanges()\r\n }\r\n}\r\n","import { booleanAttribute, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from \"@angular/core\"\r\nimport { ButtonColor, ButtonSize } from \"../../shared/interfaces\"\r\nimport { OnBlur, OnClick, OnFocus } from \"../../shared/interfaces/events\"\r\n\r\n@Component({\r\n selector: \"dolfo-button\",\r\n template: `<button #btn [type]=\"type\" [disabled]=\"disabled || loading\" (click)=\"doClick($event)\" [class]=\"'color-' + (color || 'primary')\" (focus)=\"onFocus.emit($event)\" (blur)=\"onFocus.emit($event)\" [class.size-sm]=\"size === 'small'\" [class.size-lg]=\"size === 'large'\" [class.text]=\"textButton\">\r\n @if(loading){\r\n <dolfo-icon name=\"spinner8\"></dolfo-icon>\r\n }\r\n <ng-content></ng-content>\r\n </button>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class ButtonComponent implements OnClick, OnBlur, OnFocus{\r\n @ViewChild(\"btn\") btn: ElementRef<HTMLButtonElement>\r\n @Input() type: \"button\" | \"submit\" = \"button\"\r\n @Input({ transform: booleanAttribute }) disabled = false\r\n @Input() color: ButtonColor\r\n @Input() loading = false\r\n @Input() size: ButtonSize\r\n @Input({ transform: booleanAttribute }) textButton = false\r\n\r\n @Output() onClick = new EventEmitter<MouseEvent>()\r\n @Output() onBlur = new EventEmitter<FocusEvent>()\r\n @Output() onFocus = new EventEmitter<FocusEvent>()\r\n\r\n public doClick = (e: MouseEvent) => {\r\n if (!this.disabled && !this.loading)\r\n this.onClick.emit(e)\r\n }\r\n\r\n public focus = () => {\r\n if(!this.disabled && !this.loading)\r\n this.btn.nativeElement.focus()\r\n }\r\n}\r\n","import { booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, inject, Input, OnInit, Output, TemplateRef, ViewChild } from \"@angular/core\"\r\nimport { DialogActionType, DialogIcon } from \"../../../shared/interfaces\"\r\nimport { DialogService } from \"../../../shared/services\"\r\n\r\n@Component({\r\n selector: \"dolfo-dialog-header\",\r\n template: `<ng-template>\r\n <h5>\r\n @if(icon){\r\n <dolfo-icon [name]=\"getIcon()\" [class]=\"'fg-' + icon.color\"></dolfo-icon>\r\n }\r\n {{ title }}\r\n </h5>\r\n @if(showCloseX){\r\n <dolfo-button (click)=\"close()\" color=\"secondary\" [dolfoTooltip]=\"'dialog.close' | translate\">\r\n <dolfo-icon name=\"cross\"></dolfo-icon>\r\n </dolfo-button>\r\n }\r\n </ng-template>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class DialogHeaderComponent implements OnInit{\r\n @ViewChild(TemplateRef) template: TemplateRef<unknown>\r\n @Input({ required: true }) title: string\r\n @Input() icon: DialogIcon\r\n @Input({ transform: booleanAttribute }) showCloseX = true\r\n @Output() onCancel = new EventEmitter()\r\n private cdr = inject(ChangeDetectorRef)\r\n private dialogService = inject(DialogService)\r\n\r\n ngOnInit() {\r\n this.cdr.detectChanges()\r\n }\r\n\r\n public close = () => {\r\n if(this.onCancel.observed)\r\n this.onCancel.emit()\r\n else{\r\n this.dialogService.action({ type: DialogActionType.CANCEL, data: null })\r\n this.dialogService.close()\r\n }\r\n }\r\n\r\n public getIcon = () => this.icon.icon\r\n}\r\n","import { AfterViewChecked, ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, Injector, Input, OnInit, QueryList, TemplateRef, ViewChild, ViewChildren } from \"@angular/core\"\r\nimport { DialogFooterButton } from \"../../../shared/interfaces\"\r\nimport { ButtonComponent } from \"../button.component\"\r\n\r\n@Component({\r\n selector: \"dolfo-dialog-footer\",\r\n template: `<ng-template>\r\n @for(btn of buttons; track btn.label){\r\n <dolfo-button (onClick)=\"btn.onClick()\" [color]=\"btn.color\" [disabled]=\"btn.disabled\" [loading]=\"btn.loading\">\r\n @if(btn.icon && !btn.loading){\r\n <dolfo-icon [name]=\"btn.icon\"></dolfo-icon>\r\n }\r\n {{ btn.label }}\r\n </dolfo-button>\r\n }\r\n </ng-template>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class DialogFooterComponent implements OnInit, AfterViewChecked{\r\n @ViewChild(TemplateRef) template: TemplateRef<unknown>\r\n @ViewChildren(ButtonComponent) childrenButtons: QueryList<ButtonComponent>\r\n @Input({ required: true }) buttons: DialogFooterButton[]\r\n\r\n private focused = false\r\n private cdr = inject(ChangeDetectorRef)\r\n private injector = inject(Injector)\r\n\r\n async ngOnInit() {\r\n this.cdr.detectChanges()\r\n setTimeout(() => this.cdr.markForCheck())\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n if(!this.focused){\r\n const firstBtn = this.childrenButtons.find(btn => !btn.disabled && !btn.loading)\r\n\r\n if(firstBtn)\r\n firstBtn.focus()\r\n \r\n this.focused = true\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, ContentChild, Input } from \"@angular/core\"\r\nimport { DialogContentComponent } from \"./dialog-content.component\"\r\nimport { DialogFooterComponent } from \"./dialog-footer.component\"\r\nimport { DialogHeaderComponent } from \"./dialog-header.component\"\r\n\r\n@Component({\r\n selector: \"dolfo-dialog-layout\",\r\n templateUrl: \"./dialog-layout.component.html\",\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class DialogLayoutComponent {\r\n @ContentChild(DialogHeaderComponent) header: DialogHeaderComponent\r\n @ContentChild(DialogContentComponent) content: DialogContentComponent\r\n @ContentChild(DialogFooterComponent) footer: DialogFooterComponent\r\n @Input() width: number\r\n}\r\n","<div class=\"dialog\">\r\n <div class=\"dialog-inner\" [ngStyle]=\"{ width: width + 'px' }\">\r\n @if(header){\r\n <div class=\"dialog-header\">\r\n <ng-content *ngTemplateOutlet=\"header.template\"></ng-content>\r\n </div>\r\n }\r\n @if(content){\r\n <div class=\"dialog-content\">\r\n <ng-content *ngTemplateOutlet=\"content.template\"></ng-content>\r\n </div>\r\n }\r\n @if(footer){\r\n <div class=\"dialog-footer\">\r\n <ng-content *ngTemplateOutlet=\"footer.template\"></ng-content>\r\n </div>\r\n }\r\n </div>\r\n</div>","import { ChangeDetectionStrategy, Component, inject, Input, OnInit } from \"@angular/core\"\r\nimport { FormGroup } from \"@angular/forms\"\r\nimport { DomSanitizer } from \"@angular/platform-browser\"\r\nimport { Observable, of } from \"rxjs\"\r\nimport { Formable } from \"../../../shared/classes\"\r\nimport { DialogActionType, DialogComponentInput, DialogFooterButton, DialogForm, DialogIcon, DialogType, IDialogInput } from \"../../../shared/interfaces\"\r\nimport { DialogService } from \"../../../shared/services\"\r\n\r\n@Component({\r\n selector: \"dolfo-dialog\",\r\n standalone: false,\r\n template: `<dolfo-dialog-layout [width]=\"width\" [ngClass]=\"className\">\r\n @if(title){\r\n <dolfo-dialog-header [title]=\"title\" [showCloseX]=\"showCloseX()\" [icon]=\"getIcon()\"></dolfo-dialog-header>\r\n }\r\n\r\n <dolfo-dialog-content>\r\n <div [class.loading]=\"type === 'loading'\">\r\n @if(message){\r\n <span [innerHTML]=\"sanitizeMsg()\"></span>\r\n }\r\n\r\n @if(form && formGroup){\r\n <form [formGroup]=\"formGroup\">\r\n @for(f of form; track f.name){\r\n @switch(f.type){\r\n @case(\"date\"){\r\n <dolfo-datepicker [formControlName]=\"f.name\" [label]=\"f.label\"></dolfo-datepicker>\r\n }\r\n @case(\"autocomplete\"){\r\n <dolfo-autocomplete [formControlName]=\"f.name\" [label]=\"f.label\" [config]=\"f.autocompleteCfg\"></dolfo-autocomplete>\r\n }\r\n @case(\"radio\"){\r\n <dolfo-input-radio [formControlName]=\"f.name\" [label]=\"f.label\" [options]=\"f.options\"></dolfo-input-radio>\r\n }\r\n @case(\"combobox\"){\r\n <dolfo-combobox [formControlName]=\"f.name\" [label]=\"f.label\" [options]=\"f.options\"></dolfo-combobox>\r\n }\r\n @default{\r\n <dolfo-input-text [formControlName]=\"f.name\" [type]=\"f.type\" [label]=\"f.label\"></dolfo-input-text>\r\n }\r\n }\r\n }\r\n </form>\r\n }\r\n </div>\r\n </dolfo-dialog-content>\r\n\r\n @let footer = buttons || getFooter();\r\n\r\n @if(footer){\r\n <dolfo-dialog-footer [buttons]=\"footer\"></dolfo-dialog-footer>\r\n }\r\n </dolfo-dialog-layout>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DialogComponent extends Formable implements Required<IDialogInput>, OnInit {\r\n @Input() title: string\r\n @Input({ required: true }) message: string\r\n @Input() type: DialogType = \"info\"\r\n @Input() width: number\r\n @Input() hideCloseX = false\r\n @Input() form: DialogForm\r\n @Input() component: DialogComponentInput\r\n @Input() buttons: DialogFooterButton[]\r\n @Input() className: string\r\n public formGroup: FormGroup\r\n \r\n protected dialogService = inject(DialogService)\r\n private sanitizer = inject(DomSanitizer)\r\n\r\n ngOnInit() {\r\n if(this.form){\r\n this.formGroup = new FormGroup({})\r\n this.form.forEach(f => this.formGroup.addControl(f.name, f.control))\r\n }\r\n }\r\n\r\n protected submit = (formValue: any): Observable<unknown> => of(this.close(DialogActionType.OK, formValue))\r\n\r\n public getIcon = (): DialogIcon => {\r\n if(this.type === \"info\")\r\n return { icon: \"info\", color: \"info\" }\r\n if(this.type === \"error\")\r\n return { icon: \"notification\", color: \"error\" }\r\n if(this.type === \"confirm\")\r\n return { icon: \"question\", color: \"warning\" }\r\n\r\n return null\r\n }\r\n\r\n protected close = (type: DialogActionType, data?: Record<string, any>) => {\r\n if(type === DialogActionType.OK && this.formGroup && this.formRef){\r\n this.formRef.ngSubmit.emit()\r\n\r\n if(this.formGroup.invalid)\r\n return\r\n }\r\n\r\n this.dialogService.action({ type, data: data != null ? data : this.formGroup?.getRawValue() })\r\n this.dialogService.close()\r\n }\r\n\r\n public showCloseX = () => this.type !== \"loading\" && !this.hideCloseX\r\n\r\n public getFooter = (): DialogFooterButton[] => {\r\n if(this.type === \"loading\")\r\n return null\r\n\r\n if(this.type === \"info\" || this.type === \"error\"){\r\n return [{\r\n label: this.translateService.translate(\"dialog.ok\"),\r\n onClick: () => this.close(DialogActionType.OK),\r\n color: this.type\r\n }]\r\n }\r\n\r\n return [{\r\n label: this.translateService.translate(\"dialog.confirm\"),\r\n onClick: () => this.close(DialogActionType.OK),\r\n color: \"primary\"\r\n },\r\n {\r\n label: this.translateService.translate(\"dialog.no\"),\r\n onClick: () => this.close(DialogActionType.NO),\r\n color: \"secondary\"\r\n }]\r\n }\r\n\r\n public sanitizeMsg = () => this.sanitizer.bypassSecurityTrustHtml(this.message)\r\n}\r\n","import { ChangeDetectionStrategy, Component, inject, Input, OnInit } from \"@angular/core\"\r\nimport { INotificationInput, NotificationAction, NotificationType } from \"../../shared/interfaces\"\r\nimport { NotificationService, TranslateService } from \"../../shared/services\"\r\n\r\n@Component({\r\n selector: \"dolfo-notification\",\r\n standalone: false,\r\n template: `<div class=\"notification\" [ngClass]=\"{\r\n success: type === 'success',\r\n error: type === 'error',\r\n warning: type === 'warning',\r\n info: type === 'info'\r\n }\" (mouseenter)=\"mouseEnter()\" (mouseleave)=\"mouseLeave()\" (click)=\"click()\">\r\n <div class=\"notification-header\">\r\n <h6>{{ title || getTitleByType() }}</h6>\r\n </div>\r\n <div class=\"notification-content\">\r\n {{ message }}\r\n </div>\r\n @if(action){\r\n <div class=\"notification-action\">\r\n <dolfo-button [color]=\"type\" (onClick)=\"action.click()\">\r\n <dolfo-icon name=\"new-tab\"></dolfo-icon>\r\n {{ action.label }}\r\n </dolfo-button>\r\n </div>\r\n }\r\n </div>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class NotificationComponent implements OnInit, Required<INotificationInput>{\r\n @Input({ required: true }) title: string\r\n @Input({ required: true }) message: string\r\n @Input() type: NotificationType = \"info\"\r\n @Input() action: NotificationAction\r\n\r\n private timeout: any\r\n private ns = inject(NotificationService)\r\n private ts = inject(TranslateService)\r\n\r\n ngOnInit(){\r\n this.mouseLeave()\r\n }\r\n\r\n public mouseEnter = () => clearTimeout(this.timeout)\r\n\r\n public mouseLeave = () => this.timeout = setTimeout(() => this.ns.hide(), 3000)\r\n\r\n public click = () => {\r\n this.mouseEnter()\r\n this.ns.hide()\r\n }\r\n\r\n public getTitleByType = () => this.ts.translate(\"notification.\" + this.type)\r\n}\r\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, inject, InjectionToken, Input, OnInit, TemplateRef, ViewChild } from \"@angular/core\"\r\nimport { DomSanitizer } from \"@angular/platform-browser\"\r\nimport { BehaviorSubject, filter, fromEvent, map, race, zip } from \"rxjs\"\r\nimport { Subscriptable } from \"../../shared/classes\"\r\nimport { IPopover, TooltipDirection } from \"../../shared/interfaces\"\r\n\r\nexport const POPOVER_DESTROY_TOKEN = new InjectionToken<() => void>(\"POPOVER_DESTROY_TOKEN\")\r\n\r\n@Component({\r\n selector: \"dolfo-popover\",\r\n standalone: false,\r\n template: `<div class=\"tooltip popover\" #tooltipRef [ngStyle]=\"{\r\n left: (x$ | async) + 'px',\r\n top: (y$ | async) + 'px'\r\n }\" [ngClass]=\"currentDirection$ | async\" [class.show]=\"completed$ | async\">\r\n @if(isTemplate()){\r\n <ng-container [ngTemplateOutlet]=\"getContentTemplate()\" [ngTemplateOutletContext]=\"context\"></ng-container>\r\n }@else{\r\n <div [innerHTML]=\"getContentStr()\"></div>\r\n }\r\n </div>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class PopoverComponent extends Subscriptable implements OnInit, AfterViewInit, Required<IPopover> {\r\n @ViewChild(\"tooltipRef\") tooltipRef: ElementRef<HTMLDivElement>\r\n @Input({ required: true }) content: string | TemplateRef<any>\r\n @Input({ required: true }) elementRef: ElementRef<HTMLElement>\r\n @Input({ required: true }) direction: TooltipDirection\r\n @Input() context: any\r\n\r\n private destroyFn = inject(POPOVER_DESTROY_TOKEN)\r\n private checkCount = 0\r\n private cdr = inject(ChangeDetectorRef)\r\n private sanitizer = inject(DomSanitizer)\r\n\r\n public currentDirection$ = new BehaviorSubject<TooltipDirection>(null)\r\n public completed$ = new BehaviorSubject(false)\r\n public readonly x$ = new BehaviorSubject(0)\r\n public readonly y$ = new BehaviorSubject(0)\r\n\r\n ngOnInit() {\r\n this.currentDirection$.next(this.direction)\r\n\r\n this.addSubscription(race([\r\n fromEvent(window, \"resize\"),\r\n fromEvent(window, \"scroll\", { capture: true }),\r\n fromEvent<MouseEvent>(window, \"click\").pipe(\r\n map(e => e.target as HTMLElement),\r\n filter(el => !el.isEqualNode(this.tooltipRef.nativeElement) && !this.tooltipRef.nativeElement.contains(el))\r\n )\r\n ]).subscribe(this.destroyFn))\r\n\r\n this.addSubscription(zip([this.x$, this.y$]).pipe(\r\n filter(([x, y]) => x != 0 && y != 0 && this.checkCount < 4)\r\n ).subscribe(() => {\r\n setTimeout(() => {\r\n if (this.isTooltipInViewport()) {\r\n this.completed$.next(true)\r\n this.calculatePosition()\r\n return\r\n }\r\n\r\n if (this.currentDirection$.getValue() === \"bottom\")\r\n this.currentDirection$.next(\"left\")\r\n else if (this.currentDirection$.getValue() === \"left\")\r\n this.currentDirection$.next(\"top\")\r\n else if (this.currentDirection$.getValue() === \"top\")\r\n this.currentDirection$.next(\"right\")\r\n else\r\n this.currentDirection$.next(\"bottom\")\r\n })\r\n }))\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.addSubscription(this.currentDirection$.asObservable().subscribe(() => setTimeout(() => this.calculatePosition())))\r\n }\r\n\r\n private calculatePosition = () => {\r\n const { elementRef, tooltipRef, currentDirection$ } = this,\r\n refRect = elementRef.nativeElement.getBoundingClientRect(),\r\n tooltipRect = tooltipRef.nativeElement.getBoundingClientRect(),\r\n currentDirection = currentDirection$.getValue()\r\n\r\n if (currentDirection === \"top\" || currentDirection === \"bottom\")\r\n this.x$.next(refRect.left - ((tooltipRect.width - refRect.width) / 2))\r\n else if (currentDirection === \"right\")\r\n this.x$.next(refRect.left + refRect.width)\r\n else\r\n this.x$.next(refRect.left - tooltipRect.width)\r\n\r\n if (currentDirection === \"top\")\r\n this.y$.next(refRect.top - tooltipRect.height)\r\n else if (currentDirection === \"bottom\")\r\n this.y$.next(refRect.top + refRect.height)\r\n else\r\n this.y$.next(refRect.top - ((tooltipRect.height - refRect.height) / 2))\r\n\r\n this.cdr.detectChanges()\r\n this.checkCount++\r\n }\r\n\r\n private isTooltipInViewport = () => {\r\n const { top, left, bottom, right } = this.tooltipRef.nativeElement.getBoundingClientRect()\r\n return top >= 0 && left >= 0 && bottom <= window.innerHeight && right <= window.innerWidth\r\n }\r\n\r\n public getContentStr = () => this.sanitizer.bypassSecurityTrustHtml(this.content as string)\r\n\r\n public isTemplate = () => this.content instanceof TemplateRef\r\n\r\n public getContentTemplate = () => this.content as TemplateRef<any>\r\n}\r\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, inject, InjectionToken, Input, OnInit, ViewChild } from \"@angular/core\"\r\nimport { BehaviorSubject, filter, fromEvent, race, zip } from \"rxjs\"\r\nimport { Subscriptable } from \"../../shared/classes\"\r\nimport { ITooltip, TooltipDirection } from \"../../shared/interfaces\"\r\n\r\nexport const TOOLTIP_DESTROY_TOKEN = new InjectionToken<() => void>(\"TOOLTIP_DESTROY_TOKEN\")\r\n\r\n@Component({\r\n selector: \"dolfo-tooltip\",\r\n standalone: false,\r\n template: `<div class=\"tooltip\" #tooltipRef [ngStyle]=\"{\r\n left: (x$ | async) + 'px',\r\n top: (y$ | async) + 'px'\r\n }\" [ngClass]=\"currentDirection$ | async\" [class.show]=\"completed$ | async\">\r\n {{ content }}\r\n </div>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class TooltipComponent extends Subscriptable implements OnInit, AfterViewInit, Required<ITooltip> {\r\n @ViewChild(\"tooltipRef\") tooltipRef: ElementRef<HTMLDivElement>\r\n @Input({ required: true }) content: string\r\n @Input({ required: true }) elementRef: ElementRef<HTMLElement>\r\n @Input({ required: true }) direction: TooltipDirection\r\n \r\n private destroyFn = inject(TOOLTIP_DESTROY_TOKEN)\r\n private checkCount = 0\r\n private cdr = inject(ChangeDetectorRef)\r\n\r\n public currentDirection$ = new BehaviorSubject<TooltipDirection>(null)\r\n public completed$ = new BehaviorSubject(false)\r\n public readonly x$ = new BehaviorSubject(0)\r\n public readonly y$ = new BehaviorSubject(0)\r\n\r\n ngOnInit() {\r\n this.currentDirection$.next(this.direction)\r\n\r\n this.addSubscription(race([\r\n fromEvent(window, \"resize\"),\r\n fromEvent(window, \"scroll\", { capture: true }),\r\n fromEvent(this.elementRef.nativeElement, \"mouseleave\")\r\n ]).subscribe(this.destroyFn))\r\n\r\n this.addSubscription(zip([this.x$, this.y$]).pipe(\r\n filter(([x, y]) => x != 0 && y != 0 && this.checkCount < 4)\r\n ).subscribe(() => {\r\n setTimeout(() => {\r\n if (this.isTooltipInViewport()) {\r\n this.completed$.next(true)\r\n this.calculatePosition()\r\n return\r\n }\r\n\r\n if (this.currentDirection$.getValue() === \"bottom\")\r\n this.currentDirection$.next(\"left\")\r\n else if (this.currentDirection$.getValue() === \"left\")\r\n this.currentDirection$.next(\"top\")\r\n else if (this.currentDirection$.getValue() === \"top\")\r\n this.currentDirection$.next(\"right\")\r\n else\r\n this.currentDirection$.next(\"bottom\")\r\n })\r\n }))\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.addSubscription(this.currentDirection$.asObservable().subscribe(() => setTimeout(() => this.calculatePosition())))\r\n }\r\n\r\n private calculatePosition = () => {\r\n const { elementRef, tooltipRef, currentDirection$ } = this,\r\n refRect = elementRef.nativeElement.getBoundingClientRect(),\r\n tooltipRect = tooltipRef.nativeElement.getBoundingClientRect(),\r\n currentDirection = currentDirection$.getValue()\r\n\r\n if (currentDirection === \"top\" || currentDirection === \"bottom\")\r\n this.x$.next(refRect.left - ((tooltipRect.width - refRect.width) / 2))\r\n else if (currentDirection === \"right\")\r\n this.x$.next(refRect.left + refRect.width)\r\n else\r\n this.x$.next(refRect.left - tooltipRect.width)\r\n\r\n if (currentDirection === \"top\")\r\n this.y$.next(refRect.top - tooltipRect.height)\r\n else if (currentDirection === \"bottom\")\r\n this.y$.next(refRect.top + refRect.height)\r\n else\r\n this.y$.next(refRect.top - ((tooltipRect.height - refRect.height) / 2))\r\n\r\n this.cdr.detectChanges()\r\n this.checkCount++\r\n }\r\n\r\n private isTooltipInViewport = () => {\r\n const { top, left, bottom, right } = this.tooltipRef.nativeElement.getBoundingClientRect()\r\n return top >= 0 && left >= 0 && bottom <= window.innerHeight && right <= window.innerWidth\r\n }\r\n}","import { ComponentRef, createComponent, EnvironmentInjector, Injector, ViewContainerRef } from \"@angular/core\"\r\nimport { distinctUntilChanged, filter, map, tap } from \"rxjs\"\r\nimport { CONTEXT_MENU_DESTROY_TOKEN, ContextMenuComponent } from \"../../components/layout/context-menu.component\"\r\nimport { DialogComponent } from \"../../components/layout/dialog-layout/dialog.component\"\r\nimport { NotificationComponent } from \"../../components/layout/notification.component\"\r\nimport { POPOVER_DESTROY_TOKEN, PopoverComponent } from \"../../components/layout/popover.component\"\r\nimport { TOOLTIP_DESTROY_TOKEN, TooltipComponent } from \"../../components/layout/tooltip.component\"\r\nimport { IDialogInput, isDeepEqual } from \"../interfaces\"\r\nimport { ContextMenuService, DialogService, NotificationService, PopoverService, TooltipService } from \"../services\"\r\n\r\nexport class OverlayManager{\r\n private dialog: [ComponentRef<IDialogInput>, number][] = []\r\n private notification: ComponentRef<NotificationComponent>\r\n private tooltip: ComponentRef<TooltipComponent>\r\n private popover: ComponentRef<PopoverComponent>\r\n private contextMenu: ComponentRef<ContextMenuComponent>\r\n \r\n constructor(private injector: Injector, private container: ViewContainerRef){}\r\n\r\n public init = () => {\r\n const ds = this.injector.get(DialogService),\r\n ns = this.injector.get(NotificationService),\r\n ts = this.injector.get(TooltipService),\r\n cs = this.injector.get(ContextMenuService),\r\n ps = this.injector.get(PopoverService),\r\n environmentInjector = this.injector.get(EnvironmentInjector)\r\n\r\n return [\r\n ds.getDialog$().pipe(\r\n tap(inputs => {\r\n const notFound = this.dialog.filter(d => !inputs.some(i => i._dialogId === d[1]))\r\n\r\n notFound.forEach(d => d[0].destroy())\r\n\r\n this.dialog = this.dialog.filter(d => !notFound.some(d2 => d2[1] === d[1]))\r\n }),\r\n map(inputs => inputs[inputs.length - 1]),\r\n distinctUntilChanged((a, b) => isDeepEqual(a, b)),\r\n filter(input => !!input && !this.dialog.some(d => d[1] === input._dialogId))\r\n ).subscribe(input => {\r\n const dialog = createComponent(input.component?.type || DialogComponent, { environmentInjector })\r\n this.dialog.push([dialog, input._dialogId])\r\n \r\n Object.entries(input).filter(k => k[0] !== \"_dialogId\").forEach(([k, v]) => dialog.setInput(k, v))\r\n \r\n if(input.component?.input)\r\n Object.entries(input.component.input).forEach(([k, v]) => dialog.setInput(k, v))\r\n \r\n this.container.insert(dialog.hostView)\r\n }),\r\n ns.getNotification$().pipe(\r\n distinctUntilChanged((a, b) => isDeepEqual(a, b)),\r\n tap(() => {\r\n if(this.notification)\r\n this.notification.destroy()\r\n }),\r\n filter(input => !!input)\r\n ).subscribe(input => {\r\n this.notification = createComponent(NotificationComponent, { environmentInjector })\r\n \r\n Object.entries(input).forEach(([k, v]) => this.notification.setInput(k, v))\r\n \r\n this.container.insert(this.notification.hostView)\r\n }),\r\n ts.getTooltip$().pipe(\r\n tap(() => {\r\n if(this.tooltip)\r\n this.tooltip.destroy()\r\n }),\r\n filter(input => !!input)\r\n ).subscribe(input => {\r\n this.tooltip = createComponent(TooltipComponent, {\r\n environmentInjector,\r\n elementInjector: Injector.create({\r\n providers: [{ provide: TOOLTIP_DESTROY_TOKEN, useValue: () => this.tooltip.destroy() }]\r\n })\r\n })\r\n \r\n Object.entries(input).forEach(([k, v]) => this.tooltip.setInput(k, v))\r\n \r\n this.container.insert(this.tooltip.hostView)\r\n }),\r\n ps.getPopover$().pipe(\r\n tap(() => {\r\n if(this.popover)\r\n this.popover.destroy()\r\n }),\r\n filter(input => !!input)\r\n ).subscribe(input => {\r\n this.popover = createComponent(PopoverComponent, {\r\n environmentInjector,\r\n elementInjector: Injector.create({\r\n providers: [{ provide: POPOVER_DESTROY_TOKEN, useValue: () => this.popover.destroy() }]\r\n })\r\n })\r\n \r\n Object.entries(input).forEach(([k, v]) => this.popover.setInput(k, v))\r\n \r\n this.container.insert(this.popover.hostView)\r\n }),\r\n cs.getContextMenu$().pipe(\r\n distinctUntilChanged((a, b) => isDeepEqual(a, b)),\r\n tap(() => {\r\n if(this.contextMenu)\r\n this.contextMenu.destroy()\r\n }),\r\n filter(input => !!input)\r\n ).subscribe(input => {\r\n this.contextMenu = createComponent(ContextMenuComponent, {\r\n environmentInjector,\r\n elementInjector: Injector.create({\r\n providers: [{ provide: CONTEXT_MENU_DESTROY_TOKEN, useValue: () => this.contextMenu.destroy() }]\r\n })\r\n })\r\n \r\n Object.entries(input).forEach(([k, v]) => this.contextMenu.setInput(k, v))\r\n \r\n this.container.insert(this.contextMenu.hostView)\r\n })\r\n ]\r\n }\r\n}","import { ProviderToken, Type } from \"@angular/core\"\r\nimport { CanActivateFn, CanDeactivateFn, Route } from \"@angular/router\"\r\nimport { Observable } from \"rxjs\"\r\nimport { RouteCheckService } from \"../services\"\r\n\r\ninterface Module{\r\n [x: string]: Type<unknown>\r\n}\r\n\r\nexport class RouteConfig{\r\n private loadComponent: () => Promise<Type<unknown>>\r\n private redirectTo: string\r\n private pathMatch: \"full\" | \"prefix\" = \"full\"\r\n private title: (() => Observable<string> | string) | string\r\n private canActivate: Array<CanActivateFn | ProviderToken<any> | string> = []\r\n private canDeactivate: Array<CanDeactivateFn<any> | ProviderToken<any>> = []\r\n\r\n constructor(private path: string, withRouteCheck = true){\r\n if(withRouteCheck)\r\n this.canActivate.push(RouteCheckService)\r\n }\r\n\r\n public withTitle = (title: typeof this.title) => {\r\n this.title = title\r\n return this\r\n }\r\n\r\n public loadUrl = (imp: Promise<Module>) => {\r\n this.loadComponent = () => imp.then(t => Object.values(t)[0])\r\n return this\r\n }\r\n\r\n public withRedirect = (url: string) => {\r\n this.redirectTo = url\r\n return this\r\n }\r\n\r\n public addCanDeactivate = (guard: CanDeactivateFn<any> | ProviderToken<any> | Array<CanDeactivateFn<any> | ProviderToken<any>>) => {\r\n if(Array.isArray(guard))\r\n this.canDeactivate.push(...guard)\r\n else\r\n this.canDeactivate.push(guard)\r\n \r\n return this\r\n }\r\n\r\n public addGuard = (guard: CanActivateFn | ProviderToken<any> | string | Array<CanActivateFn | ProviderToken<any> | string>) => {\r\n if(Array.isArray(guard))\r\n this.canActivate.push(...guard)\r\n else\r\n this.canActivate.push(guard)\r\n \r\n return this\r\n }\r\n\r\n public toRoute = (): Route => ({\r\n loadComponent: this.loadComponent,\r\n path: this.path,\r\n pathMatch: this.pathMatch,\r\n title: this.title,\r\n redirectTo: this.redirectTo,\r\n canActivate: this.canActivate,\r\n canDeactivate: this.canDeactivate\r\n })\r\n}","import { booleanAttribute, Directive, ElementRef, inject, Input, OnInit } from \"@angular/core\"\r\nimport { fromEvent } from \"rxjs\"\r\nimport { Subscriptable } from \"../classes\"\r\nimport { ContextMenuItem } from \"../interfaces\"\r\nimport { ContextMenuService } from \"../services\"\r\n\r\n@Directive({\r\n selector: \"[dolfoContextMenu]\",\r\n standalone: false\r\n})\r\nexport class ContextMenuDirective extends Subscriptable implements OnInit{\r\n @Input({ required: true, alias: \"dolfoContextMenu\" }) contextMenu: ContextMenuItem[]\r\n @Input({ transform: booleanAttribute }) openOnClick: boolean\r\n @Input({ transform: booleanAttribute }) useElRef: boolean\r\n @Input() position?: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\" = \"bottom-left\"\r\n private contextMenuService = inject(ContextMenuService)\r\n private elRef = inject(ElementRef<HTMLElement>)\r\n\r\n ngOnInit(){\r\n this.addSubscription(fromEvent<MouseEvent>(this.elRef.nativeElement, this.openOnClick ? \"click\" : \"contextmenu\").subscribe(e => {\r\n e.preventDefault()\r\n\r\n const [left, top] = this.useElRef ? this.getElRefPosition() : [e.clientX, e.clientY]\r\n\r\n this.contextMenuService.openContextMenu({\r\n x: left,\r\n y: top,\r\n items: this.contextMenu,\r\n ref: this.elRef,\r\n position: this.position\r\n })\r\n }))\r\n }\r\n\r\n private getElRefPosition = () => {\r\n const { left, width, top, height } = this.elRef.nativeElement.getBoundingClientRect()\r\n\r\n const diff = left + width\r\n\r\n if(this.position.startsWith(\"bottom-\")){\r\n const posTop = top + height\r\n\r\n if(this.position === \"bottom-left\")\r\n return [left, posTop]\r\n\r\n return [diff, posTop]\r\n }\r\n\r\n if(this.position === \"top-right\")\r\n return [diff, top]\r\n\r\n return [left, top]\r\n }\r\n}\r\n","import { APP_BASE_HREF } from \"@angular/common\"\r\nimport { Directive, ElementRef, inject, Input, SimpleChanges } from \"@angular/core\"\r\nimport { Router } from \"@angular/router\"\r\nimport { filter, fromEvent } from \"rxjs\"\r\nimport { Subscriptable } from \"../classes\"\r\nimport { StoreService } from \"../services\"\r\n\r\n@Directive({\r\n selector: \"[dolfoNavigate]\",\r\n standalone: false\r\n})\r\nexport class NavigateDirective extends Subscriptable{\r\n @Input({ required: true, alias: \"dolfoNavigate\" }) url: string\r\n private isLink: boolean\r\n private publicUrl = inject(APP_BASE_HREF)\r\n private storeService = inject(StoreService)\r\n private router = inject(Router)\r\n private elementRef = inject(ElementRef<HTMLElement>)\r\n\r\n constructor() {\r\n super()\r\n\r\n this.isLink = this.elementRef.nativeElement.tagName.toLowerCase() === \"a\"\r\n\r\n this.addSubscription(fromEvent<MouseEvent>(this.elementRef.nativeElement, \"click\").subscribe(e => {\r\n if(this.isLink)\r\n e.preventDefault()\r\n \r\n if(this.storeService.isPressingCtrl())\r\n this.openBlank()\r\n else\r\n this.router.navigateByUrl(this.url)\r\n }))\r\n\r\n this.addSubscription(fromEvent<MouseEvent>(this.elementRef.nativeElement, \"mousedown\").pipe(\r\n filter(e => e.button === 1)\r\n ).subscribe(e => {\r\n if(this.isLink)\r\n e.stopPropagation()\r\n else\r\n this.openBlank()\r\n }))\r\n }\r\n \r\n ngOnChanges(changes: SimpleChanges<this>){\r\n if((this.isLink || (changes.url && changes.url.currentValue !== this.url)) && !!this.url)\r\n this.elementRef.nativeElement.setAttribute(\"href\", this.url)\r\n }\r\n\r\n private openBlank = () => window.open(this.publicUrl + this.url, \"_blank\")\r\n}","import { Directive, ElementRef, inject, Input, TemplateRef } from \"@angular/core\"\r\nimport { filter, fromEvent } from \"rxjs\"\r\nimport { Subscriptable } from \"../classes\"\r\nimport { TooltipDirection } from \"../interfaces\"\r\nimport { PopoverService } from \"../services\"\r\n\r\n@Directive({\r\n selector: \"[dolfoPopover]\",\r\n standalone: false\r\n})\r\nexport class PopoverDirective extends Subscriptable{\r\n @Input({ required: true, alias: \"dolfoPopover\" }) content: string | TemplateRef<any>\r\n @Input({ alias: \"dolfoPopoverContext\" }) context: any\r\n @Input() direction: TooltipDirection = \"top\"\r\n private el = inject(ElementRef<HTMLElement>)\r\n private ps = inject(PopoverService)\r\n\r\n ngOnInit(){\r\n this.addSubscription(fromEvent(this.el.nativeElement, \"mousedown\").pipe(\r\n filter(() => !!this.ps.getPopover())\r\n ).subscribe(() => this.ps.hide()))\r\n\r\n this.addSubscription(\r\n fromEvent(this.el.nativeElement, \"click\").pipe(\r\n filter(() => !!this.content)\r\n ).subscribe(() => this.ps.showPopover({\r\n content: this.content,\r\n elementRef: this.el,\r\n direction: this.direction,\r\n context: this.context\r\n }))\r\n )\r\n }\r\n}\r\n","import { Directive, ElementRef, inject } from \"@angular/core\"\r\nimport { filter, fromEvent } from \"rxjs\"\r\nimport { Subscriptable } from \"../classes\"\r\n\r\n@Directive({\r\n\tselector: \"[dolfoScrollDrag]\",\r\n standalone: false\r\n})\r\nexport class ScrollDragDirective extends Subscriptable {\r\n\tprivate mouseDownX: number\r\n\tprivate initialScrollX = 0\r\n\tprivate diffX = 0\r\n\tprivate mouseDownY: number\r\n\tprivate initialScrollY = 0\r\n\tprivate diffY = 0\r\n private elementRef = inject(ElementRef<HTMLElement>)\r\n\r\n\tconstructor() {\r\n\t\tsuper()\r\n\r\n\t\tthis.addSubscription(fromEvent<MouseEvent>(this.elementRef.nativeElement, \"mousedown\").pipe(\r\n filter(e => e.button === 0)\r\n ).subscribe(e => {\r\n\t\t\te.preventDefault()\r\n\t\t\te.stopPropagation()\r\n\t\t\tthis.mouseDownX = e.clientX\r\n\t\t\tthis.mouseDownY = e.clientY\r\n\t\t\tthis.initialScrollX = this.elementRef.nativeElement.scrollLeft\r\n\t\t\tthis.initialScrollY = this.elementRef.nativeElement.scrollTop\r\n\t\t\tthis.elementRef.nativeElement.classList.add(\"dragging\")\r\n\t\t}))\r\n\r\n\t\tthis.addSubscription(fromEvent(document, \"mouseup\", { capture: true }).subscribe(() => {\r\n\t\t\tthis.mouseDownX = null\r\n\t\t\tthis.mouseDownY = null\r\n\t\t\tthis.elementRef.nativeElement.classList.remove(\"dragging\")\r\n\t\t}))\r\n\r\n\t\tthis.addSubscription(fromEvent<Event>(this.elementRef.nativeElement, \"click\", { capture: true }).pipe(\r\n\t\t\tfilter(() => this.diffX != 0 || this.diffY != 0)\r\n\t\t).subscribe(e => {\r\n\t\t\te.stopPropagation()\r\n\t\t\tthis.diffX = 0\r\n\t\t\tthis.diffY = 0\r\n\t\t}))\r\n\r\n\t\tthis.addSubscription(fromEvent<MouseEvent>(document, \"mousemove\").pipe(\r\n\t\t\tfilter(() => this.mouseDownX != null || this.mouseDownY != null)\r\n\t\t).subscribe(e => {\r\n\t\t\te.stopPropagation()\r\n\r\n\t\t\tif (this.mouseDownX != null) {\r\n\t\t\t\tthis.diffX = this.initialScrollX + (this.mouseDownX - e.clientX)\r\n\t\t\t\tthis.elementRef.nativeElement.scrollLeft = this.diffX\r\n\t\t\t}\r\n\t\t\tif (this.mouseDownY != null) {\r\n\t\t\t\tthis.diffY = this.initialScrollY + (this.mouseDownY - e.clientY)\r\n\t\t\t\tthis.elementRef.nativeElement.scrollTop = this.diffY\r\n\t\t\t}\r\n\t\t}))\r\n\t}\r\n}\r\n","import { NgModule } from \"@angular/core\"\r\nimport { ContextMenuDirective } from \"./context-menu.directive\"\r\nimport { NavigateDirective } from \"./navigate.directive\"\r\nimport { PopoverDirective } from \"./popover.directive\"\r\nimport { ScrollDragDirective } from \"./scroll-drag.directive\"\r\nimport { TooltipDirective } from \"./tooltip.directive\"\r\n\r\n@NgModule({\r\n declarations: [ContextMenuDirective, ScrollDragDirective, TooltipDirective, PopoverDirective, NavigateDirective],\r\n exports: [ContextMenuDirective, ScrollDragDirective, TooltipDirective, PopoverDirective, NavigateDirective]\r\n})\r\nexport class DirectivesModule{}","import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\"\r\n\r\n@Component({\r\n\tselector: \"dolfo-loader\",\r\n\tstandalone: false,\r\n\ttemplate: `<div class=\"loading\">\r\n\t\t<dolfo-icon name=\"spinner5\"></dolfo-icon>\r\n\t\t{{ langKey | translate }}\r\n\t</div>`,\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class LoaderComponent {\r\n\t@Input() langKey = \"loading\"\r\n}\r\n","import { CommonModule } from \"@angular/common\"\r\nimport { NgModule } from \"@angular/core\"\r\nimport { DirectivesModule } from \"../../shared/directives/directives.module\"\r\nimport { TranslatePipe } from \"../../shared/pipes/translate.pipe\"\r\nimport { ButtonComponent } from \"./button.component\"\r\nimport { ContextMenuComponent } from \"./context-menu.component\"\r\nimport { IconWrapperComponent } from \"./icon-wrapper.component\"\r\nimport { IconComponent } from \"./icon.component\"\r\nimport { LoaderComponent } from \"./loader.component\"\r\nimport { NotificationComponent } from \"./notification.component\"\r\nimport { PopoverComponent } from \"./popover.component\"\r\nimport { TooltipComponent } from \"./tooltip.component\"\r\n\r\n@NgModule({\r\n declarations: [ButtonComponent, ContextMenuComponent, IconWrapperComponent, LoaderComponent, NotificationComponent, TooltipComponent, IconComponent, PopoverComponent],\r\n imports: [CommonModule, DirectivesModule, TranslatePipe],\r\n exports: [ButtonComponent, ContextMenuComponent, IconWrapperComponent, LoaderComponent, NotificationComponent, TooltipComponent, IconComponent, PopoverComponent]\r\n})\r\nexport class LayoutModule {}","import { ChangeDetectionStrategy, Component, forwardRef } from \"@angular/core\"\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n selector: \"dolfo-input-checkbox\",\r\n template: `<div class=\"input-checkbox\">\r\n <input type=\"checkbox\" [name]=\"formControlName\" [formControl]=\"input\" [checked]=\"input.value\" />\r\n @if(label){\r\n <label (click)=\"toggleCheck()\">{{ label }}</label>\r\n }\r\n </div>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputCheckboxComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => InputCheckboxComponent), multi: true },\r\n { provide: BaseFormInput, useExisting: InputCheckboxComponent }\r\n ]\r\n})\r\nexport class InputCheckboxComponent extends BaseFormInput<boolean> {\r\n public toggleCheck = () => this.input.setValue(!this.input.value)\r\n}\r\n","import { CommonModule } from \"@angular/common\"\r\nimport { NgModule } from \"@angular/core\"\r\nimport { ReactiveFormsModule } from \"@angular/forms\"\r\nimport { DirectivesModule } from \"../../shared/directives/directives.module\"\r\nimport { TranslatePipe } from \"../../shared/pipes/translate.pipe\"\r\nimport { LayoutModule } from \"../layout/layout.module\"\r\nimport { AutocompleteComponent } from \"./autocomplete.component\"\r\nimport { ComboboxComponent } from \"./combobox.component\"\r\nimport { DatepickerComponent } from \"./datepicker.component\"\r\nimport { FormComponent } from \"./form.component\"\r\nimport { InputCheckboxComponent } from \"./input-checkbox.component\"\r\nimport { InputContainerComponent } from \"./input-container.component\"\r\nimport { InputRadioComponent } from \"./input-radio.component\"\r\nimport { InputTextComponent } from \"./input-text.component\"\r\n\r\n@NgModule({\r\n declarations: [InputTextComponent, InputContainerComponent, ComboboxComponent, DatepickerComponent, AutocompleteComponent, InputRadioComponent, InputCheckboxComponent, FormComponent],\r\n imports: [CommonModule, ReactiveFormsModule, TranslatePipe, DirectivesModule, LayoutModule],\r\n exports: [ReactiveFormsModule, InputTextComponent, InputContainerComponent, ComboboxComponent, DatepickerComponent, AutocompleteComponent, InputRadioComponent, InputCheckboxComponent, FormComponent]\r\n})\r\nexport class FormModule {}\r\n","import { CommonModule } from \"@angular/common\"\r\nimport { NgModule } from \"@angular/core\"\r\nimport { ReactiveFormsModule } from \"@angular/forms\"\r\nimport { DirectivesModule } from \"../../../shared/directives/directives.module\"\r\nimport { TranslatePipe } from \"../../../shared/pipes/translate.pipe\"\r\nimport { FormModule } from \"../../form/form.module\"\r\nimport { LayoutModule } from \"../layout.module\"\r\nimport { DialogContentComponent } from \"./dialog-content.component\"\r\nimport { DialogFooterComponent } from \"./dialog-footer.component\"\r\nimport { DialogHeaderComponent } from \"./dialog-header.component\"\r\nimport { DialogLayoutComponent } from \"./dialog-layout.component\"\r\nimport { DialogComponent } from \"./dialog.component\"\r\n\r\n@NgModule({\r\n declarations: [DialogComponent, DialogContentComponent, DialogHeaderComponent, DialogFooterComponent, DialogLayoutComponent],\r\n imports: [CommonModule, DirectivesModule, LayoutModule, ReactiveFormsModule, TranslatePipe, FormModule],\r\n exports: [DialogComponent, DialogContentComponent, DialogHeaderComponent, DialogFooterComponent, DialogLayoutComponent]\r\n})\r\nexport class DialogLayoutModule {}\r\n","import { Component, inject, Input } from \"@angular/core\"\r\nimport { DomSanitizer } from \"@angular/platform-browser\"\r\nimport { BooleanFn, ColumnDataType, GridColumn, GridConfig } from \"../../../shared/interfaces\"\r\nimport { TranslateService } from \"../../../shared/services\"\r\n\r\n@Component({\r\n selector: \"dolfo-grid\",\r\n templateUrl: \"./grid.component.html\",\r\n standalone: false\r\n})\r\nexport class GridComponent<T>{\r\n\t@Input({ required: true }) config: GridConfig<T>\r\n private translateService = inject(TranslateService)\r\n private sanitizer = inject(DomSanitizer)\r\n\r\n\tpublic resolveField = (item: T, { field, formatter, dataType, onLink }: GridColumn) => {\r\n let value = field\r\n .toString()\r\n .split(\".\")\r\n .reduce((prev, curr) => prev?.[curr as keyof T] as any, item) as string\r\n\r\n if(dataType === ColumnDataType.DATE)\r\n\t\t\tvalue = this.translateService.formatDate(value)\r\n else if(dataType === ColumnDataType.DATETIME)\r\n\t\t\tvalue = this.translateService.formatDateTime(value)\r\n\r\n let retValue = formatter ? formatter(value) : value\r\n\r\n\t\tif(dataType === ColumnDataType.LINK)\r\n\t\t\tretValue = `<a href=\"javascript:void(0)\">${retValue}</a>`\r\n \r\n return this.sanitizer.bypassSecurityTrustHtml(retValue)\r\n }\r\n\r\n\tpublic checkLink = (e: Event, col: GridColumn, item: T, cell: HTMLTableCellElement) => {\r\n\t\tif(col.dataType !== ColumnDataType.LINK || !col.onLink)\r\n\t\t\treturn\r\n\r\n\t\tconst colValue = col.field\r\n .toString()\r\n .split(\".\")\r\n .reduce((prev, curr) => prev?.[curr as keyof T] as any, item),\r\n\t\thtmlTarget = e.target as HTMLElement\r\n\r\n\t\tif(htmlTarget.tagName.toLowerCase() === \"a\")\r\n\t\t\tcol.onLink(colValue)\r\n\t\telse{\r\n\t\t\tconst a = cell.querySelector(\"a[href]\")\r\n\r\n\t\t\tif(a.contains(htmlTarget))\r\n\t\t\t\tcol.onLink(colValue)\r\n\t\t}\r\n\t}\r\n\r\n public isToolbarBtnDisabled = (disabled: boolean | BooleanFn) => {\r\n if(disabled == null)\r\n return false\r\n\r\n return typeof disabled === \"boolean\" ? disabled : disabled()\r\n }\r\n}\r\n","@let loading = config.isLoading$() | async;\r\n\r\n<div class=\"grid-container\" [class.loading]=\"loading\">\r\n @if(loading){\r\n <div class=\"grid-loading\">\r\n <dolfo-icon name=\"spinner2\"></dolfo-icon>\r\n </div>\r\n }\r\n\r\n <table>\r\n @let columns = config.getColumns();\r\n @let showActions = config.hasActions;\r\n @let selection = config.getSelectionConfig();\r\n @let colSpan = columns.length + (showActions ? 1 : 0) + (selection ? 1 : 0);\r\n \r\n <thead>\r\n @if(config.hasToolbar){\r\n <tr class=\"dolfo-grid-toolbar\">\r\n <th [colSpan]=\"colSpan\">\r\n @for(btn of config.getToolbarButtons(); track btn.label){\r\n <dolfo-button color=\"white\" (onClick)=\"btn.onClick()\" [disabled]=\"isToolbarBtnDisabled(btn.disabled)\">\r\n @if(btn.icon){\r\n <dolfo-icon [name]=\"btn.icon\"></dolfo-icon>\r\n }\r\n\r\n {{ btn.label }}\r\n </dolfo-button>\r\n }\r\n </th>\r\n </tr>\r\n }\r\n\r\n <tr>\r\n @if(selection){\r\n <th [style]=\"{ width: 0 }\">\r\n @if(selection.showSelectAll && selection.type === \"multiple\"){\r\n <input type=\"checkbox\" [checked]=\"config.isAllSelected()\" (change)=\"config.toggleSelectAll()\" />\r\n }\r\n </th>\r\n }\r\n\r\n @for(col of columns; track col.label){\r\n <th [ngStyle]=\"{ width: col.width + 'px', maxWidth: col.width + 'px' }\">{{ col.label | translate }}</th>\r\n }\r\n \r\n @if(showActions){\r\n <th>{{ \"grid.actions\" | translate }}</th>\r\n }\r\n </tr>\r\n </thead>\r\n \r\n <tbody>\r\n @let list = config.getList$() | async;\r\n \r\n @if(list.length > 0){\r\n @for(item of list; track config.getUniqueId(item)){\r\n @let itemActions = config.getActions$(item) | async;\r\n @let rowClass = config.getRowClass(item);\r\n \r\n <tr (click)=\"config.getEvents()?.onRowClick?.(item)\" [dolfoContextMenu]=\"itemActions\" position=\"bottom-right\">\r\n @if(selection){\r\n <td [ngClass]=\"rowClass\" class=\"align-center\">\r\n <input type=\"checkbox\" [checked]=\"config.isItemSelected(item)\" (change)=\"config.toggleSelection(item)\" />\r\n </td>\r\n }\r\n\r\n @for(col of columns; track col.label){\r\n <td #cell [ngStyle]=\"{ width: col.width + 'px' }\" [ngClass]=\"rowClass\" [class.align-right]=\"col.align === 'right'\" [class.align-center]=\"col.align === 'center'\" (click)=\"checkLink($event, col, item, cell)\" [innerHTML]=\"resolveField(item, col)\"></td>\r\n }\r\n \r\n @if(showActions){\r\n <td class=\"align-center actions\" [ngClass]=\"rowClass\">\r\n @if(itemActions.length > 0){\r\n <dolfo-button color=\"secondary\" [dolfoTooltip]=\"'grid.showActions' | translate\" [dolfoContextMenu]=\"itemActions\" position=\"bottom-right\" openOnClick>\r\n <dolfo-icon name=\"flickr\"></dolfo-icon>\r\n </dolfo-button>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n }\r\n }@else {\r\n <tr>\r\n <td [colSpan]=\"colSpan\" class=\"align-center\">{{ \"grid.noResults\" | translate }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n</div>","import { CommonModule } from \"@angular/common\"\r\nimport { NgModule } from \"@angular/core\"\r\nimport { DirectivesModule } from \"../../../shared/directives/directives.module\"\r\nimport { TranslatePipe } from \"../../../shared/pipes/translate.pipe\"\r\nimport { LayoutModule } from \"../layout.module\"\r\nimport { GridComponent } from \"./grid.component\"\r\n\r\n@NgModule({\r\n declarations: [GridComponent],\r\n imports: [CommonModule, DirectivesModule, LayoutModule, TranslatePipe],\r\n exports: [GridComponent]\r\n})\r\nexport class GridModule{}","import { HttpHandlerFn, HttpRequest } from \"@angular/common/http\"\r\nimport { inject } from \"@angular/core\"\r\nimport { StorageValues } from \"../interfaces\"\r\nimport { TranslateService } from \"../services\"\r\n\r\nexport const authInterceptor = (req: HttpRequest<unknown>, next: HttpHandlerFn) => {\r\n const translateService = inject(TranslateService),\r\n clone = req.clone({\r\n headers: req.headers.set(\"Client-lang\", translateService.getLang().name)\r\n })\r\n\r\n if (!!localStorage.getItem(StorageValues.TOKEN)) {\r\n return next(clone.clone({\r\n headers: clone.headers.set(\"Authorization\", \"Bearer \" + localStorage.getItem(StorageValues.TOKEN))\r\n }))\r\n }\r\n\r\n return next(clone)\r\n}\r\n","import { HttpErrorResponse, HttpHandlerFn, HttpRequest } from \"@angular/common/http\"\r\nimport { inject } from \"@angular/core\"\r\nimport { catchError, throwError } from \"rxjs\"\r\nimport { StorageValues } from \"../interfaces\"\r\nimport { NotificationService, TranslateService } from \"../services\"\r\n\r\nexport const errorInterceptor = (req: HttpRequest<unknown>, next: HttpHandlerFn) => {\r\n const notificationService = inject(NotificationService),\r\n translateService = inject(TranslateService)\r\n\r\n return next(req).pipe(\r\n catchError(err => {\r\n if(err instanceof HttpErrorResponse){\r\n if(err.status === 401)\r\n localStorage.removeItem(StorageValues.TOKEN)\r\n \r\n notificationService.show({\r\n type: \"error\",\r\n title: translateService.translate(\"dialog.errorApi\"),\r\n message: typeof err.error === \"string\" ? err.error : err.message\r\n })\r\n }\r\n\r\n return throwError(() => err)\r\n })\r\n )\r\n}","/*\r\n * Public API Surface of dolfo-angular\r\n */\r\n\r\n// Form\r\nexport * from \"./lib/components/form/autocomplete.component\"\r\nexport * from \"./lib/components/form/base-form-input\"\r\nexport * from \"./lib/components/form/combobox.component\"\r\nexport * from \"./lib/components/form/datepicker.component\"\r\nexport * from \"./lib/components/form/form.component\"\r\nexport * from \"./lib/components/form/form.module\"\r\nexport * from \"./lib/components/form/input-checkbox.component\"\r\nexport * from \"./lib/components/form/input-container.component\"\r\nexport * from \"./lib/components/form/input-radio.component\"\r\nexport * from \"./lib/components/form/input-text.component\"\r\n\r\n// Layout\r\nexport * from \"./lib/components/layout/button.component\"\r\nexport * from \"./lib/components/layout/context-menu.component\"\r\nexport * from \"./lib/components/layout/dialog-layout/dialog-content.component\"\r\nexport * from \"./lib/components/layout/dialog-layout/dialog-footer.component\"\r\nexport * from \"./lib/components/layout/dialog-layout/dialog-header.component\"\r\nexport * from \"./lib/components/layout/dialog-layout/dialog-layout.component\"\r\nexport * from \"./lib/components/layout/dialog-layout/dialog-layout.module\"\r\nexport * from \"./lib/components/layout/dialog-layout/dialog.component\"\r\nexport * from \"./lib/components/layout/grid/grid.component\"\r\nexport * from \"./lib/components/layout/grid/grid.module\"\r\nexport * from \"./lib/components/layout/icon-wrapper.component\"\r\nexport * from \"./lib/components/layout/icon.component\"\r\nexport * from \"./lib/components/layout/layout.module\"\r\nexport * from \"./lib/components/layout/loader.component\"\r\nexport * from \"./lib/components/layout/notification.component\"\r\nexport * from \"./lib/components/layout/popover.component\"\r\nexport * from \"./lib/components/layout/tooltip.component\"\r\n\r\n// Classes\r\nexport * from \"./lib/shared/classes\"\r\n\r\n// Interfaces\r\nexport * from \"./lib/shared/interfaces\"\r\n\r\n// Interceptors\r\nexport * from \"./lib/shared/interceptors\"\r\n\r\n// Directives\r\nexport * from \"./lib/shared/directives/context-menu.directive\"\r\nexport * from \"./lib/shared/directives/directives.module\"\r\nexport * from \"./lib/shared/directives/navigate.directive\"\r\nexport * from \"./lib/shared/directives/popover.directive\"\r\nexport * from \"./lib/shared/directives/scroll-drag.directive\"\r\nexport * from \"./lib/shared/directives/tooltip.directive\"\r\n\r\n// Services\r\nexport * from \"./lib/shared/services\"\r\n\r\n// Pipes\r\nexport * from \"./lib/shared/pipes/translate.pipe\"\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.TooltipDirective","i2","i3.TranslatePipe","i2.InputContainerComponent","i1","i2.TooltipDirective","i3.IconWrapperComponent","i4.InputContainerComponent","i5.TranslatePipe","i2.IconWrapperComponent","i1.IconWrapperComponent","i2.ButtonComponent","i4.TranslatePipe","i1.ButtonComponent","i3.InputTextComponent","i4.ComboboxComponent","i5.DatepickerComponent","i6.AutocompleteComponent","i7.InputRadioComponent","i8.DialogContentComponent","i9.DialogHeaderComponent","i10.DialogFooterComponent","i11.DialogLayoutComponent","i2.TranslatePipe","i2.ContextMenuDirective","i3.TooltipDirective","i4.ButtonComponent","i5.IconWrapperComponent","i6.TranslatePipe"],"mappings":";;;;;;;;;;;MAIsB,aAAa,CAAA;IACvB,IAAI,GAAmB,EAAE;AAEvB,IAAA,eAAe,GAAG,CAAC,GAAiB,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAEtE,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3C;uGAPkB,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADlC;;;ICGW;AAAZ,CAAA,UAAY,gBAAgB,EAAA;AAAE,IAAA,gBAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,IAAE;AAAE,IAAA,gBAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,IAAE;AAAE,IAAA,gBAAA,CAAA,gBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM;AAAC,CAAC,EAAlC,gBAAgB,KAAhB,gBAAgB,GAAA,EAAA,CAAA,CAAA;;ICFhB;AAAZ,CAAA,UAAY,WAAW,EAAA;AACnB,IAAA,WAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,WAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,WAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACrB,CAAC,EAJW,WAAW,KAAX,WAAW,GAAA,EAAA,CAAA,CAAA;IAMX;AAAZ,CAAA,UAAY,cAAc,EAAA;AAAE,IAAA,cAAA,CAAA,cAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AAAE,IAAA,cAAA,CAAA,cAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AAAE,IAAA,cAAA,CAAA,cAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ;AAAE,IAAA,cAAA,CAAA,cAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AAAC,CAAC,EAA5C,cAAc,KAAd,cAAc,GAAA,EAAA,CAAA,CAAA;MAiDb,UAAU,CAAA;AAQC,IAAA,MAAA;AAPZ,IAAA,MAAM,GAAG,IAAI,eAAe,CAAM,EAAE,CAAC;AACrC,IAAA,QAAQ,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;AACrC,IAAA,aAAa;AACb,IAAA,QAAQ,GAAG,IAAI,eAAe,CAA4B,IAAI,CAAC;AAC/D,IAAA,OAAO;AACP,IAAA,OAAO;AAEf,IAAA,WAAA,CAAoB,MAAsB,EAAA;QAAtB,IAAA,CAAA,MAAM,GAAN,MAAM;QACtB,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAElC,IAAG,MAAM,CAAC,OAAO;AACb,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO;IACrC;IAEO,WAAW,GAAG,MAAK;AACtB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;AAEvB,QAAA,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE;QAE3B,IAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;aACnC;AACA,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AAErB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,IAAG;AAC5C,gBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACtB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AAEpB,gBAAA,IAAG,IAAI,CAAC,kBAAkB,EAAE,EAAE,eAAe;oBACzC,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AACzF,YAAA,CAAC,CAAC;QACN;AACJ,IAAA,CAAC;AAEM,IAAA,WAAW,GAAG,CAAC,IAAO,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;AAEvD,IAAA,UAAU,GAAG,CAAC,OAAY,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;IAExD,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;IAEtC,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;AAE3C,IAAA,WAAW,GAAG,CAAC,IAAO,KAAK,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,CAC/D,GAAG,CAAC,OAAO,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,CAClC;AAEM,IAAA,UAAU,GAAG,CAAC,OAAkC,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;IAEhF,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO;IAEtC,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM;AAEpC,IAAA,WAAW,GAAG,CAAC,IAAO,KAAK,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;IAEvD,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;IAE/C,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AAE1C,IAAA,UAAU,GAAG,CAAC,CAAU,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAElD,IAAA,gBAAgB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;AAExI,IAAA,eAAe,GAAG,CAAC,IAAO,KAAI;AACjC,QAAA,IAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aACpG,IAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,KAAK,QAAQ;AAC5C,YAAA,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC;;AAE3B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;QAEjC,IAAI,CAAC,mBAAmB,EAAE;AAC9B,IAAA,CAAC;AAEM,IAAA,cAAc,GAAG,CAAC,IAAO,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAE1G,eAAe,GAAG,MAAK;QAC1B,IAAG,IAAI,CAAC,aAAa,EAAE;AACnB,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE;;YAEvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;QAE/C,IAAI,CAAC,mBAAmB,EAAE;AAC9B,IAAA,CAAC;IAEM,kBAAkB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS;AAE/C,IAAA,mBAAmB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAE7F,IAAA,aAAa,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM;AAExF,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IACrC;AAEA,IAAA,IAAW,UAAU,GAAA;AACjB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO;IACzB;IAEO,iBAAiB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO;IAC/B;IAEO,UAAU,GAAG,CAAC,OAAkC,KAAK,IAAI,CAAC,OAAO,GAAG,OAAO;AACrF;;MC3JY,aAAa,CAAA;AACK,IAAA,IAAI;uGADtB,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,mGAHZ,CAAA,gCAAA,CAAkC,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAGnC,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE,CAAA,gCAAA,CAAkC;oBAC5C,eAAe,EAAE,uBAAuB,CAAC;AAC5C,iBAAA;;sBAEI,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;MCPhB,cAAc,GAAG,IAAI,cAAc,CAAY,gBAAgB,EAAE;AAC5E,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM;AAChB,CAAA;;MCHY,mBAAmB,GAAG,IAAI,cAAc,CAAsB,qBAAqB,EAAE;AACjG,IAAA,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,MAAK;AACb,QAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC;IAClD;AACA,CAAA;;ICRW;AAAZ,CAAA,UAAY,aAAa,EAAA;AACrB,IAAA,aAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACjB,CAAC,EAHW,aAAa,KAAb,aAAa,GAAA,EAAA,CAAA,CAAA;AAelB,MAAM,eAAe,GAAG;AACxB,MAAM,gBAAgB,GAAG;;ACHzB,MAAM,qBAAqB,GAAG;MAExB,cAAc,GAAG,IAAI,cAAc,CAAiB,gBAAgB;AAE1E,MAAM,qBAAqB,GAAG,CAAC,KAAkB,EAAE,eAAuB,MAAqB;AAClG,IAAA,OAAO,EAAE,cAAc;AACvB,IAAA,QAAQ,EAAE,EAAE,eAAe,EAAE,KAAK;AACrC,CAAA;;AClBM,MAAM,WAAW,GAAG,CAAC,IAAS,EAAE,IAAS,EAAE,GAAG,GAAG,IAAI,OAAO,EAAE,KAAI;AACrE,IAAA,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;AACrB,QAAA,OAAO,IAAI;AAEf,IAAA,IAAI,IAAI,YAAY,IAAI,IAAI,IAAI,YAAY,IAAI;QAC5C,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE;AAE5C,IAAA,IAAI,IAAI,YAAY,MAAM,IAAI,IAAI,YAAY,MAAM;QAChD,OAAO,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE;AAE9C,IAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;AACtF,QAAA,OAAO,KAAK;AAEhB,IAAA,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI;AACtB,QAAA,OAAO,IAAI;AAEf,IAAA,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;IAEnB,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;IACnC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;AAEnC,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;AAC7B,QAAA,OAAO,KAAK;AAEhB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;AAClC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;AACjF,YAAA,OAAO,KAAK;IACpB;AAEA,IAAA,OAAO,IAAI;AACf;MAGa,iBAAiB,IAAI,CAAC,OAAoB,KAAsB;AACzE,IAAA,IAAG,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,iDAAiD,CAAC;AACtE,QAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;AAE7B,IAAA,OAAO,IAAI;AACf,CAAC;AAEM,MAAM,qBAAqB,GAAG,CAAC,OAAe,MAAmB,CAAC,OAAwB,KAAsB;IACnH,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC;AAEjD,IAAA,IAAG,YAAY,EAAE,KAAK,KAAK,OAAO,EAAE,KAAK;AACrC,QAAA,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE;AAEvC,IAAA,OAAO,IAAI;AACf,CAAC;;MC5CY,kBAAkB,CAAA;AACnB,IAAA,YAAY,GAAG,IAAI,eAAe,CAAe,IAAI,CAAC;IAEvD,eAAe,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;AAExD,IAAA,eAAe,GAAG,CAAC,KAAmB,KAAK,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;uGALtE,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,OAAA,EAAA,CAAA;wGAAlB,kBAAkB,EAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;;MCGY,gBAAgB,CAAA;AACjB,IAAA,KAAK,GAAG,IAAI,eAAe,CAAY,IAAI,CAAC;AAC5C,IAAA,WAAW;AACX,IAAA,KAAK;AACL,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,UAAU,GAAG,MAAM,CAAC,cAAc,CAAC;AAE3C,IAAA,WAAA,GAAA;AACI,QAAA,IAAG,CAAC,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC;YAC3C,YAAY,CAAC,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;AAEhF,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,EACjC,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAW,EAC5D,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;AAE5D,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAElB,QAAA,IAAG,CAAC,SAAS;AACT,YAAA,YAAY,CAAC,UAAU,CAAC,qBAAqB,CAAC;;AAE9C,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;IAClC;AAEO,IAAA,eAAe,GAAG,CAAC,QAAgB,KAAI;AAC1C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;AAEtD,QAAA,IAAG,IAAI;AACH,YAAA,YAAY,CAAC,OAAO,CAAC,qBAAqB,EAAE,QAAQ,CAAC;QAEzD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CACxB,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CACnC;AACL,IAAA,CAAC;IAEM,gBAAgB,GAAG,MAAK;QAC3B,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC;AAExD,QAAA,IAAG,CAAC,IAAI;AACJ,YAAA,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC;AAEtD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;AAEvD,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;AAChC,IAAA,CAAC;AAEO,IAAA,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,WAAW,EAAa,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAyB,gBAAgB,WAAW,IAAI,IAAI,CAAA,KAAA,CAAO,CAAC,CAAC,IAAI,CAC9I,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,CAC7C;AAEM,IAAA,SAAS,GAAG,CAAC,GAAW,EAAE,MAA+B,KAAY;AACxE,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,WAAkB,CAAC,EACzF,GAAG,GAAG,IAAI,IAAI,GAAG;QAEjB,IAAI,MAAM,EAAC;AACP,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAC7B,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,CAAA,CAAA,EAAI,GAAG,GAAG,EAAE,MAAM,CAAC,GAAmB,CAAC,CAAC,EACpE,GAAG,CACN;QACL;AAEA,QAAA,OAAO,GAAG;AACd,IAAA,CAAC;IAEM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AAErC,IAAA,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAEtE,IAAA,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,IAAI,OAAO;IAEpD,UAAU,GAAG,CAAC,CAAS,KAAK,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAEnG,cAAc,GAAG,CAAC,CAAS,KAAK,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;uGAvEzG,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,OAAA,EAAA,CAAA;wGAAhB,gBAAgB,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;;MCAY,aAAa,CAAA;AACd,IAAA,OAAO,GAAG,IAAI,eAAe,CAA2C,EAAE,CAAC;IAC3E,OAAO,GAAoC,EAAE;AAC7C,IAAA,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAE7B,IAAA,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAE5D,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IAEzC,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AAE9C,IAAA,UAAU,GAAG,CAAC,KAAmB,KAAI;AACxC,QAAA,MAAM,UAAU,GAAG,IAAI,eAAe,CAAe,IAAI,CAAC;AAC1D,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;AAC7C,YAAA,GAAG,KAAK;AACR,YAAA,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO;AAChC,SAAA,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAC5B,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EACtB,KAAK,CAAC,CAAC,CAAC,CACX;AACL,IAAA,CAAC;IAEM,mBAAmB,GAAG,CAAC,SAA+B,KAAK,IAAI,CAAC,UAAU,CAAC;AAC9E,QAAA,OAAO,EAAE,IAAI;QACb;AACH,KAAA,CAAC;AAEK,IAAA,WAAW,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC;AAC7E,QAAA,IAAI,EAAE,SAAS;QACf;AACH,KAAA,CAAC;IAEK,KAAK,GAAG,MAAK;QAChB,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACjC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE;AAChC,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AACjE,IAAA,CAAC;AAEM,IAAA,MAAM,GAAG,CAAC,MAAoB,KAAK,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC;uGA1CnE,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,OAAA,EAAA,CAAA;wGAAb,aAAa,EAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;;MCEY,kBAAkB,CAAA;AACnB,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAE5C,YAAY,GAAG,CAAQ,GAA+B,KAAK,QAAQ,CAAyB,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAClH,KAAK,CAAC,CAAC,CAAC,EACR,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,CAAC,EACvD,QAAQ,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EACzB,UAAU,CAAC,GAAG,IAAG;QACb,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC;IAChC,CAAC,CAAC,CACL,CAAC;IAEK,WAAW,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE;IAE5C,iBAAiB,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAEpD,IAAA,eAAe,GAAG,CAAI,IAAO,KAAI;AACpC,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC;QAC9D,IAAI,CAAC,iBAAiB,EAAE;AAC5B,IAAA,CAAC;AAEM,IAAA,mBAAmB,GAAG,CAAC,SAA+B,KAAK,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,SAAS,CAAC;AAE5G,IAAA,UAAU,GAAG,CAAC,KAAmB,KAAK,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC;AAE1E,IAAA,iBAAiB,GAAG,CACvB,KAAuE,EACvE,GAA8C,EAC9C,aAAa,GAAG,KAAK,KACpB,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;QAC/B,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;QACnD,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC;AACvD,QAAA,IAAI,EAAE,SAAS;QACf,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,KAAK,EAAE,KAAK,CAAC;KAChB,CAAC,CAAC,IAAI,CACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,CAAC,EAAE,IAAI,aAAa,CAAC,EAChE,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EACvC,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAChC;uGAzCQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,OAAA,EAAA,CAAA;wGAAlB,kBAAkB,EAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;;MCDY,mBAAmB,CAAA;AACpB,IAAA,aAAa,GAAG,IAAI,eAAe,CAAqB,IAAI,CAAC;AAC7D,IAAA,QAAQ,GAAG,IAAI,eAAe,CAA6C,EAAE,CAAC;IAE/E,gBAAgB,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;AAE1D,IAAA,IAAI,GAAG,CAAC,KAAyB,KAAI;AACxC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;AACvF,IAAA,CAAC;AAEM,IAAA,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;IAE1C,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;uGAb9C,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,OAAA,EAAA,CAAA;wGAAnB,mBAAmB,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;MCCY,cAAc,CAAA;AACf,IAAA,QAAQ,GAAG,IAAI,eAAe,CAAW,IAAI,CAAC;IAE/C,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;IAEhD,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AAE3C,IAAA,WAAW,GAAG,CAAC,KAAe,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AAE5D,IAAA,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;uGATnC,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,OAAA,EAAA,CAAA;wGAAd,cAAc,EAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;;MCGY,iBAAiB,CAAA;AAClB,IAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACnC,IAAA,YAAY,GAAG,MAAM,CAAC,mBAAmB,CAAC;IAE3C,WAAW,CAAC,EAAE,WAAW,EAA0B,EAAA;AACtD,QAAA,IAAG,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;AACjC,YAAA,OAAO,KAAK;AAEhB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,CACjC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,EAC1B,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CACjE;IACL;uGAZS,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,OAAA,EAAA,CAAA;wGAAjB,iBAAiB,EAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B;;;ACCK,MAAO,YAAa,SAAQ,aAAa,CAAA;IACnC,cAAc,GAAG,MAAM,CAAC,KAAK;uFAAC;AAEtC,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AAEP,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;AACrB,YAAA,SAAS,CAAgB,MAAM,EAAE,SAAS,CAAC,CAAC,IAAI,CAC5C,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,EAChD,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CACnC;AACD,YAAA,SAAS,CAAgB,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAC1C,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,EACzD,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CACpC;AACD,YAAA,SAAS,CAAgB,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,CACzC,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,EACnC,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAExC,SAAA,CAAC,CAAC,SAAS,EAAE,CAAC;IACnB;IAEQ,MAAM,GAAG,IAAI,eAAe,CAAS;AACzC,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,YAAY,EAAE;AACjB,KAAA,CAAC;AAEK,IAAA,OAAO,GAAG,CAAC,GAAW,EAAE,IAAgB,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACjE,QAAA,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACzB,QAAA,KAAK,EAAE;AACH,YAAA,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK;YAC/B,CAAC,GAAG,GAAG;AACV;AACJ,KAAA,CAAC;AAEK,IAAA,OAAO,GAAG,CAAI,GAAW,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAM;AAEpE,IAAA,SAAS,GAAG,CAAC,GAAW,EAAE,MAAW,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC9D,QAAA,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACzB,QAAA,QAAQ,EAAE;AACN,YAAA,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ;YAClC,CAAC,GAAG,GAAG;AACV;AACJ,KAAA,CAAC;AAEK,IAAA,SAAS,GAAG,CAAI,GAAW,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAM;IAEzE,UAAU,GAAG,CAAC,YAAqB,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC5D,QAAA,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;QACzB;AACH,KAAA,CAAC;AAEK,IAAA,cAAc,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,YAAY;IAE1D,aAAa,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE;AAE3C,IAAA,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;uGAzD9C,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,OAAA,EAAA,CAAA;wGAAZ,YAAY,EAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB;;;MCDY,cAAc,CAAA;AACf,IAAA,QAAQ,GAAG,IAAI,eAAe,CAAW,IAAI,CAAC;AAE/C,IAAA,WAAW,GAAG,CAAC,KAAe,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;IAE5D,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;IAEhD,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AAE3C,IAAA,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;uGATnC,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,OAAA,EAAA,CAAA;wGAAd,cAAc,EAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;;ACMK,MAAO,gBAAiB,SAAQ,aAAa,CAAA;AACG,IAAA,OAAO;IAChD,SAAS,GAAqB,KAAK;AACpC,IAAA,EAAE,GAAG,MAAM,EAAC,UAAuB,EAAC;AACpC,IAAA,EAAE,GAAG,MAAM,CAAC,cAAc,CAAC;AAEnC,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;QAEP,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,IAAI,CACnE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,CACvC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AAElC,QAAA,IAAI,CAAC,eAAe,CAChB,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,IAAI,CAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAC/B,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC;YAClC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,EAAE;YACnB,SAAS,EAAE,IAAI,CAAC;SACnB,CAAC,CAAC,CACN;IACL;uGAtBS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,SAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAEI,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE;;sBAC/C;;;MCJQ,aAAa,CAAA;AACd,IAAA,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAErC,IAAA,SAAS,GAAG,CAAC,KAAa,EAAE,IAA6B,KAAK,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC;uGAHnF,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,WAAW;AACjB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACT,iBAAA;;;MC0BY,uBAAuB,CAAA;AACzB,IAAA,OAAO,GAAG,IAAI,eAAe,CAAmB,IAAI,CAAC;AACrD,IAAA,aAAa,GAAkD,IAAI,CAAC,OAAO,CAAC,IAAI,CACnF,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACjD,GAAG,CAAC,GAAG,IAAG;QACN,IAAG,GAAG,EAAC;YACH,IAAG,GAAG,CAAC,QAAQ;gBACX,OAAO,CAAC,oBAAoB,CAAC;YACjC,IAAG,GAAG,CAAC,KAAK;gBACR,OAAO,CAAC,mBAAmB,CAAC;YAChC,IAAG,GAAG,CAAC,SAAS;AACZ,gBAAA,OAAO,CAAC,CAAA,aAAA,CAAe,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;YACtE,IAAG,GAAG,CAAC,SAAS;AACZ,gBAAA,OAAO,CAAC,CAAA,aAAA,CAAe,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;YACtE,IAAG,GAAG,CAAC,QAAQ;gBACX,OAAO,CAAC,sBAAsB,CAAC;YACnC,IAAG,GAAG,CAAC,GAAG;AACN,gBAAA,OAAO,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAEnH,OAAO,CAAC,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E;AAEA,QAAA,OAAO,IAAI;IACf,CAAC,CAAC,CACL;AACM,IAAA,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC;AAC5B,IAAA,KAAK,GAAG,MAAM,EAAC,UAAuB,EAAC;AACvC,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;IAEzB,KAAK,GAAG,MAAK;AAChB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC;AAE7D,QAAA,IAAG,KAAK;YACJ,KAAK,CAAC,KAAK,EAAE;AACrB,IAAA,CAAC;uGAnCQ,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,SAAA,EAHrB,CAAC,WAAW,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApBd,CAAA;;;;;;;;;;;;;;;;;;;AAmBH,UAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,gBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;2FAIE,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAzBnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;AAmBH,UAAA,CAAA;oBACP,SAAS,EAAE,CAAC,WAAW,CAAC;AACxB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACxBK,MAAgB,aAAiB,SAAQ,aAAa,CAAA;AACb,IAAA,SAAS;AACzB,IAAA,eAAe;AACjC,IAAA,KAAK;AACJ,IAAA,QAAQ,GAAoB,IAAI,YAAY,EAAK;AAEjD,IAAA,cAAc;AAChB,IAAA,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAE9B,IAAA,KAAK,GAAG,IAAI,WAAW,CAAI,IAAI,CAAC;AAE7B,IAAA,OAAO;IAEjB,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;AAExD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;QAEvC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAC7C,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAC1F,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;AAEhD,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAChD,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAC9F,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACxE;IAEA,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAC7C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CACrC,CAAC,SAAS,CAAC,CAAC,IAAG;AACZ,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACrB,YAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACP;AAEA,IAAA,UAAU,GAAG,CAAC,GAAM,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;IAEjD,gBAAgB,GAAG,CAAC,EAAoB,KAAK,IAAI,CAAC,cAAc,GAAG,EAAE;AAErE,IAAA,iBAAiB,GAAG,CAAC,GAAuB,KAAI,EAAE,CAAC;AAEnD,IAAA,gBAAgB,GAAG,CAAC,UAAmB,KAAI;AACvC,QAAA,IAAG,UAAU;YACT,UAAU,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;;AAEtC,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC3B,IAAA,CAAC;AAED,IAAA,QAAQ,GAAG,CAAC,QAAyB,KAAuB,IAAI;AAEhE,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC;IACzD;uGArDkB,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,4LACpB,uBAAuB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FADhB,aAAa,EAAA,UAAA,EAAA,CAAA;kBADlC;;sBAEI,SAAS;uBAAC,uBAAuB;;sBACjC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;;ACmCC,MAAO,qBAAsB,SAAQ,aAAkB,CAAA;AAC9B,IAAA,YAAY;AACP,IAAA,iBAAiB;AACtB,IAAA,MAAM;IACxB,QAAQ,GAAG,CAAC;AACZ,IAAA,cAAc;AACb,IAAA,OAAO,GAAG,IAAI,YAAY,EAAc;AACxC,IAAA,MAAM,GAAG,IAAI,YAAY,EAAc;IAE1C,OAAO,GAAG,MAAM,CAAgB,EAAE;gFAAC;IACnC,MAAM,GAAG,MAAM,CAAC,KAAK;+EAAC;IACtB,aAAa,GAAG,MAAM,CAAC,EAAE;sFAAC;IAC1B,kBAAkB,GAAG,MAAM,CAAC,EAAE;2FAAC;IAC/B,OAAO,GAAG,MAAM,CAAC,KAAK;gFAAC;IACvB,YAAY,GAAG,MAAM,CAAS,IAAI;qFAAC;IAClC,OAAO,GAAG,KAAK;AACf,IAAA,cAAc;AAEtB,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AAEP,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAChD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EACzD,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,MAAqB,CAAC,EACnC,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAC3H,CAAC,SAAS,CAAC,SAAS,IAAG;AACpB,YAAA,IAAG,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,EAAC;AAC1B,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;YAC1B;AAAM,iBAAA,IAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS;AACjC,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QAC7B,CAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAC7C,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,KAAK,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,KAAK,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CACjK,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AAE1F,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAC7C,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,KAAK,EAAE,CAAC,CAChK,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAE9C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CACzC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC3F;IAES,eAAe,GAAA;QACpB,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,CAC9E,GAAG,CAAC,EAAE,IAAK,EAAE,CAAC,MAA2B,CAAC,KAAK,CAAC,EAChD,GAAG,CAAC,KAAK,IAAG;YACR,IAAG,CAAC,KAAK,EAAC;AACN,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AACzB,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB;AACJ,QAAA,CAAC,CAAC,EACF,KAAK,CAAC,IAAI,CAAC,EACX,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,EAC/D,GAAG,CAAC,MAAK;AACL,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;AACpB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,CAAC,CAAC,EACF,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAC7C,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK;YACjC,KAAK;YACL,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK;SACpC,CAAC,CAAC,CAAC,CACP,CAAC,SAAS,CAAC,OAAO,IAAG;AAClB,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;AACzB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;QAC/B,CAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAgB,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;YACzG,IAAG,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EAAC;AAClB,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,gBAAA,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;AACjC,gBAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,GAAG,KAAK,EAAE,IAAI,CAAC;YACtE;AAAM,iBAAA,IAAG,IAAI,CAAC,MAAM,EAAE,EAAC;AACnB,gBAAA,IAAG,CAAC,CAAC,GAAG,KAAK,WAAW,EAAC;oBACrB,CAAC,CAAC,cAAc,EAAE;AAClB,oBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC/F;AAAM,qBAAA,IAAG,CAAC,CAAC,GAAG,KAAK,SAAS,EAAC;oBACzB,CAAC,CAAC,cAAc,EAAE;AAClB,oBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC/F;qBAAM,IAAG,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,EAAC;oBAClF,CAAC,CAAC,cAAc,EAAE;AAClB,oBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;gBACvD;AAAM,qBAAA,IAAG,CAAC,CAAC,GAAG,KAAK,KAAK,EAAC;AACrB,oBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;gBAC1B;YACJ;QACJ,CAAC,CAAC,CAAC;IACP;AAEI,IAAA,KAAK,GAAG,CAAC,CAAa,KAAI;AAChC,QAAA,IAAG,IAAI,CAAC,KAAK,CAAC,QAAQ;YACrB;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACrB,IAAA,CAAC;AAEM,IAAA,UAAU,GAAG,CAAC,GAAgB,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK;IAE9D,SAAS,GAAG,CAAC,GAAgB,EAAE,MAAM,GAAG,KAAK,KAAI;AACpD,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,EAAE;QAC7D,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;AAC/B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AAEtB,QAAA,IAAG,CAAC,MAAM;YACZ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACtC,IAAA,CAAC;uGArHQ,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EANnB;AACP,YAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AACjG,YAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC7F,YAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,qBAAqB;SAC/D,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApCS,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6Be,4BAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,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,EAAAC,uBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAShB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAxCjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6Be,4BAAA,CAAA;AACzB,oBAAA,UAAU,EAAE,KAAK;oBACjB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,SAAS,EAAE;AACP,wBAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,2BAA2B,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AACjG,wBAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,2BAA2B,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC7F,wBAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,uBAAuB;AAC/D;AACJ,iBAAA;;sBAEI,SAAS;uBAAC,cAAc;;sBACxB,SAAS;uBAAC,mBAAmB;;sBAC7B,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;sBACA;;sBACA;;;MC7CQ,oBAAoB,CAAA;AACF,IAAA,IAAI;AAExB,IAAA,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC;uGAHpC,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,iGAHnB,CAAA,sGAAA,CAAwG,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,sCAAA,EAAA,0BAAA,EAAA,2BAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAGzG,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE,CAAA,sGAAA,CAAwG;oBAClH,eAAe,EAAE,uBAAuB,CAAC;AAC5C,iBAAA;;sBAEI,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;AC6BvB,MAAO,iBAAkB,SAAQ,aAA0B,CAAA;AAC5C,IAAA,KAAK;AACE,IAAA,OAAO;AACzB,IAAA,WAAW;IACoB,QAAQ,GAAG,KAAK;AAC9C,IAAA,OAAO,GAAG,IAAI,YAAY,EAAc;AACxC,IAAA,MAAM,GAAG,IAAI,YAAY,EAAc;AAEtC,IAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAEnC,MAAM,GAAG,MAAM,CAAC,KAAK;+EAAC;IACnB,YAAY,GAAG,MAAM,CAAS,IAAI;qFAAC;IACnC,UAAU,GAAG,MAAM,CAAC,EAAE;mFAAC;AAEjC,IAAA,WAAA,GAAA;AACC,QAAA,KAAK,EAAE;AAEP,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAC3D,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,MAAqB,CAAC,EACnC,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAC1G,CAAC,SAAS,CAAC,SAAS,IAAG;AACvB,YAAA,IAAG,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE;AAC5B,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AAClB,iBAAA,IAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS;AACnC,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QACvB,CAAC,CAAC,CAAC;AAEG,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtH;AAEG,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAG,OAAO,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;AAC3F,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;IACjC;IAEM,eAAe,GAAA;QACvB,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAgB,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AACvF,YAAA,IAAG,IAAI,CAAC,MAAM,EAAE,EAAC;AACb,gBAAA,IAAG,CAAC,CAAC,GAAG,KAAK,WAAW,EAAC;oBACrB,CAAC,CAAC,cAAc,EAAE;AAClB,oBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC7F;AAAM,qBAAA,IAAG,CAAC,CAAC,GAAG,KAAK,SAAS,EAAC;oBACzB,CAAC,CAAC,cAAc,EAAE;AAClB,oBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC7F;qBAAM,IAAG,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,EAAC;oBAClF,CAAC,CAAC,cAAc,EAAE;AAClB,oBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;oBAEhE,IAAG,CAAC,IAAI,CAAC,QAAQ;AAChB,wBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AAEvB,oBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;gBACb;AAAM,qBAAA,IAAG,CAAC,CAAC,GAAG,KAAK,KAAK,EAAC;AACrB,oBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;gBAC1B;YACJ;QACJ,CAAC,CAAC,CAAC;IACV;AAEQ,IAAA,YAAY,GAAG,CAAC,KAAkB,KAAI;QAC7C,IAAG,KAAK,IAAI,IAAI,IAAK,KAAkB,EAAE,MAAM,KAAK,CAAC;AACpD,YAAA,OAAO,IAAI,CAAC,WAAW,IAAI,GAAG;QAE/B,IAAG,CAAC,IAAI,CAAC,QAAQ;YAChB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK;QAEtE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAK,KAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7H,IAAA,CAAC;AAEM,IAAA,KAAK,GAAG,CAAC,CAAa,KAAI;AAChC,QAAA,IAAG,IAAI,CAAC,KAAK,CAAC,QAAQ;YACrB;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACrB,IAAA,CAAC;AAEM,IAAA,SAAS,GAAG,CAAC,GAAgB,KAAI;AACvC,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK;AAE5B,QAAA,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAC;AACjB,YAAA,IAAG,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC;AAC/B,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;;gBAEzB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AAEtB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QAChC;aAAK;YACJ,MAAM,SAAS,GAAG,KAAmB;AAErC,YAAA,IAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAChD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;;AAErE,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAClD;QAEA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACrC,IAAA,CAAC;AAEM,IAAA,UAAU,GAAG,CAAC,GAAgB,KAAI;AACxC,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK;QAE5B,IAAG,CAAC,IAAI,CAAC,QAAQ;YAChB,OAAO,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC;AAErC,QAAA,OAAQ,KAAoB,CAAC,IAAI,CAAC,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAClE,IAAA,CAAC;AAEE,IAAA,IAAW,QAAQ,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI;IAC7G;uGAlHS,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAjB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAIT,gBAAgB,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAXtB;AACP,YAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC7F,YAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AACzF,YAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB;SAC3D,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA3BS,CAAA;;;;;;;;;;;;;;;;;;;;;AAqBY,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,wSAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAC,gBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FASb,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAhC7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;AAqBY,yBAAA,CAAA;oBACtB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,SAAS,EAAE;AACP,wBAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC7F,wBAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AACzF,wBAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,mBAAmB;AAC3D,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAEC,SAAS;uBAAC,OAAO;;sBACjB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBACrC;;sBACA;;;AC3BI,MAAO,mBAAoB,SAAQ,aAAmB,CAAA;AAChC,IAAA,SAAS;IACO,UAAU,GAAG,KAAK;AACnD,IAAA,OAAO,GAAG,IAAI,YAAY,EAAc;AACxC,IAAA,MAAM,GAAG,IAAI,YAAY,EAAc;AAEvC,IAAA,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,EAAE;uGAN1D,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAER,gBAAgB,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAT5B;AACV,YAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC/F,YAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC3F,YAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,mBAAmB;SAC1D,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EARS,CAAA;;AAEe,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,wSAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAD,uBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FASb,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAb/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,CAAA;;AAEe,yBAAA,CAAA;AACzB,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,SAAS,EAAE;AACV,wBAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC/F,wBAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC3F,wBAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,qBAAqB;AAC1D,qBAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC;AACzC,iBAAA;;sBAEI,SAAS;uBAAC,WAAW;;sBACrB,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBACxC;;sBACA;;;MCPW,aAAa,CAAA;AACK,IAAA,SAAS;AACG,IAAA,YAAY;uGAF1C,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAb,aAAa,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAEH,gBAAgB,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAZzB,CAAA;;;;;;AAMF,WAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAIC,aAAa,EAAA,UAAA,EAAA,CAAA;kBAZzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,QAAQ,EAAE,CAAA;;;;;;AAMF,WAAA,CAAA;oBACR,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAEI,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB,KAAK;uBAAC,EAAE,SAAS,EAAC,gBAAgB,EAAE;;;ACVnC,MAAgB,gBAAiB,SAAQ,aAAa,CAAA;AAK9C,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,IAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;IAErC,OAAO,GAAG,MAAM,CAAC,CAAC;gFAAC;IACpB,cAAc,GAAG,MAAM,CAAC,KAAK;uFAAC;IAErC,QAAQ,GAAA;QACJ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAClC,SAAS,EAAE,EACX,GAAG,CAAC,IAAI,IAAG;AACP,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC;YACrC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC;AACzC,QAAA,CAAC,CAAC,CACL,CAAC,SAAS,CAAC,MAAK;AACb,YAAA,IAAG,IAAI,CAAC,OAAO,EAAE,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAC;gBACnD,UAAU,CAAC,MAAK;AACZ,oBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7B,oBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;AAC9B,oBAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE;gBACnC,CAAC,EAAE,GAAG,CAAC;YACX;AACJ,QAAA,CAAC,CAAC;IACN;IAEA,eAAe,GAAA;QACX,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAClG;AAEA,IAAA,IAAW,UAAU,GAAA;AACjB,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM;IACpE;uGApCkB,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBADrC;;;ACEK,MAAgB,QAAqB,SAAQ,aAAa,CAAA;AACnB,IAAA,OAAO;AACX,IAAA,MAAM;AAEjC,IAAA,QAAQ,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;AACrC,IAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACjC,IAAA,OAAO;IAIf,eAAe,GAAA;QACX,IAAG,CAAC,IAAI,CAAC,OAAO;YACZ;AAEJ,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CACnC,oBAAoB,EAAE,CACzB,CAAC,SAAS,CAAC,OAAO,IAAG;AAClB,YAAA,IAAG,OAAO;AACN,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE;;AAE3B,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE;QAClC,CAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CACrC,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAC7C,QAAQ,CAAC,MAAK;AACV,YAAA,IAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAC;AAClD,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;gBACxB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CACpD,UAAU,CAAC,GAAG,IAAG;AACb,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,oBAAA,OAAO,EAAE,CAAC,GAAG,CAAC;AAClB,gBAAA,CAAC,CAAC,EACF,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACvC;YACL;AAEA,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;AACnB,QAAA,CAAC,CAAC,CACL,CAAC,SAAS,EAAE;AAEb,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;QAElC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;IACpG;IAEA,kBAAkB,GAAA;QACd,IAAG,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAC;AAC7B,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AAC1B,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QACvB;AAAM,aAAA,IAAG,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO;YAClC,IAAI,CAAC,eAAe,EAAE;IAC9B;AAEQ,IAAA,UAAU,GAAG,CAAC,SAAoB,EAAE,KAAc,KAAI;AAC1D,QAAA,KAAI,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAC;YAC3D,OAAO,CAAC,aAAa,EAAE;YACvB,OAAO,CAAC,sBAAsB,EAAE;AAEhC,YAAA,IAAG,OAAO,CAAC,OAAO,EAAC;gBACf,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;AAE9B,gBAAA,IAAG,GAAG,YAAY,SAAS,EAAC;oBACxB,IAAI,KAAK,GAAG,CAAC;AAEb,oBAAA,KAAI,MAAM,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAC;AAC3B,wBAAA,IAAG,IAAI,CAAC,UAAU,CAAC,IAAiB,EAAE,KAAK,CAAC;AACxC,4BAAA,OAAO,IAAI;AAEf,wBAAA,KAAK,EAAE;oBACX;gBACJ;qBAAK;oBACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,KAAK,GAAG,CAAC;AAE3E,oBAAA,IAAG,MAAM,CAAC,MAAM,KAAK,CAAC;wBAClB,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE;yBAC3B,IAAG,KAAK,IAAI,IAAI;wBACjB,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE;AAEpC,oBAAA,OAAO,IAAI;gBACf;YACJ;QACJ;AAEA,QAAA,OAAO,KAAK;AAChB,IAAA,CAAC;AAEM,IAAA,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;AAE9C,IAAA,uBAAuB,GAAG,CAAC,mBAA2B,EAAE,0BAAkC,KAAI;QACpG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,IAAI,CAC7E,oBAAoB,EAAE,EACtB,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CACnE,CAAC,SAAS,CAAC,MAAK;AACb,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,sBAAsB,EAAE;AAC1E,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,aAAa,EAAE;QACrE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,YAAY,CAAC,IAAI,CACpF,oBAAoB,EAAE,EACtB,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,OAAO,CAAC,CAC1E,CAAC,SAAS,CAAC,MAAK;AACb,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,sBAAsB,EAAE;AACnE,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,aAAa,EAAE;QAC9D,CAAC,CAAC,CAAC;AACP,IAAA,CAAC;IAEM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;uGA7GpC,QAAQ,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAR,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACf,kBAAkB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EACf,aAAa,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAFT,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAD7B;;sBAEI,SAAS;uBAAC,kBAAkB;;sBAC5B,YAAY;uBAAC,aAAa;;;MCLlB,0BAA0B,GAAG,IAAI,cAAc,CAAa,4BAA4B;AAoB/F,MAAO,oBAAqB,SAAQ,aAAa,CAAA;AACxB,IAAA,CAAC;AACD,IAAA,CAAC;AACD,IAAA,KAAK;AACL,IAAA,GAAG;AACrB,IAAA,QAAQ;AAET,IAAA,SAAS,GAAG,MAAM,CAAC,0BAA0B,CAAC;IAEtD,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YACtB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC;AAChD,YAAA,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;AAC1B,YAAA,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC;YAC3B,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;SAChD,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC;AAEO,IAAA,SAAS,GAAG,CAAC,IAAqB,KAAI;QACzC,IAAG,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAC;YAC9B,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,SAAS,EAAE;QACpB;AACJ,IAAA,CAAC;uGAvBQ,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,EAAA,GAAA,EAAA,KAAA,EAAA,OAAA,EAAA,GAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAfnB,CAAA;;;;;;;;;;;;AAYH,UAAA,CAAA,EAAA,QAAA,EAAA,IAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,oBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAGE,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAlBhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;AAYH,UAAA,CAAA;oBACP,eAAe,EAAE,uBAAuB,CAAC;AAC5C,iBAAA;;sBAEI,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;;ACPC,MAAO,kBAAmB,SAAQ,aAA8B,CAAA;IACzD,IAAI,GAAc,MAAM;IACxB,WAAW,GAAG,EAAE;AACf,IAAA,OAAO,GAAG,IAAI,YAAY,EAAc;AACxC,IAAA,MAAM,GAAG,IAAI,YAAY,EAAc;AACzB,IAAA,SAAS;AAE1B,IAAA,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE;IAEhD,eAAe,GAAA;AACpB,QAAA,IAAG,IAAI,CAAC,IAAI,KAAK,QAAQ;YACrB,KAAK,CAAC,eAAe,EAAE;aACvB;AACA,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAC7C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAClC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CACpE,CAAC,SAAS,CAAC,CAAC,IAAG;AACZ,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACrB,gBAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;QACP;IACJ;uGArBS,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAPhB;AACP,YAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC9F,YAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC1F,YAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,kBAAkB;SAC5D,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXS,CAAA;;;;;;AAMe,4BAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,wSAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAD,uBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,CAAA;;2FAQhB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAhB9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,CAAA;;;;;;AAMe,4BAAA,CAAA;AACzB,oBAAA,SAAS,EAAE;AACP,wBAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,wBAAwB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC9F,wBAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,wBAAwB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC1F,wBAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,oBAAoB;AAC5D,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAEI;;sBACA;;sBACA;;sBACA;;sBACA,SAAS;uBAAC,WAAW;;;ACLpB,MAAO,mBAAoB,SAAQ,aAAkB,CAAA;AAC5B,IAAA,OAAO;AAE3B,IAAA,gBAAgB,GAAG,CAAC,GAAgB,KAAK,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC;AAEjF,IAAA,SAAS,GAAG,CAAC,GAAgB,KAAI;AACpC,QAAA,IAAG,IAAI,CAAC,KAAK,CAAC,QAAQ;YAClB;QAEJ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACxC,IAAA,CAAC;uGAXQ,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EANjB;AACP,YAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC/F,YAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC3F,YAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,mBAAmB;SAC7D,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdS,CAAA;;;;;;;AAOe,4BAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,wSAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,2IAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAD,uBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAShB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAlB/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;AAOe,4BAAA,CAAA;oBACzB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,SAAS,EAAE;AACP,wBAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC/F,wBAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC3F,wBAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,qBAAqB;AAC7D;AACJ,iBAAA;;sBAEI,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;MChBhB,sBAAsB,CAAA;AACP,IAAA,QAAQ;AACxB,IAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAEvC,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC5B;uGANS,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAtB,sBAAsB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACpB,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EALZ,CAAA,oDAAA,CAAsD,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAIvD,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,CAAA,oDAAA,CAAsD;oBAChE,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAEI,SAAS;uBAAC,WAAW;;;MCMb,eAAe,CAAA;AACN,IAAA,GAAG;IACZ,IAAI,GAAwB,QAAQ;IACL,QAAQ,GAAG,KAAK;AAC/C,IAAA,KAAK;IACL,OAAO,GAAG,KAAK;AACf,IAAA,IAAI;IAC2B,UAAU,GAAG,KAAK;AAEhD,IAAA,OAAO,GAAG,IAAI,YAAY,EAAc;AACxC,IAAA,MAAM,GAAG,IAAI,YAAY,EAAc;AACvC,IAAA,OAAO,GAAG,IAAI,YAAY,EAAc;AAE3C,IAAA,OAAO,GAAG,CAAC,CAAa,KAAI;QAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO;AAC/B,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5B,IAAA,CAAC;IAEM,KAAK,GAAG,MAAK;QAChB,IAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO;AAC9B,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE;AACtC,IAAA,CAAC;uGArBQ,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAGJ,gBAAgB,CAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAIhB,gBAAgB,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,KAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,KAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhB1B,CAAA;;;;;AAKA,aAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,oBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAID,eAAe,EAAA,UAAA,EAAA,CAAA;kBAX3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,QAAQ,EAAE,CAAA;;;;;AAKA,aAAA,CAAA;oBACV,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAEI,SAAS;uBAAC,KAAK;;sBACf;;sBACA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBACrC;;sBACA;;sBACA;;sBACA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAErC;;sBACA;;sBACA;;;MCJQ,qBAAqB,CAAA;AACN,IAAA,QAAQ;AACL,IAAA,KAAK;AACvB,IAAA,IAAI;IAC2B,UAAU,GAAG,IAAI;AAC/C,IAAA,QAAQ,GAAG,IAAI,YAAY,EAAE;AAC/B,IAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC/B,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAE7C,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC5B;IAEO,KAAK,GAAG,MAAK;AAChB,QAAA,IAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ;AACrB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;aACpB;AACA,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxE,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;QAC9B;AACJ,IAAA,CAAC;IAEM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI;uGAtB5B,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAIV,gBAAgB,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAHzB,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjBZ,CAAA;;;;;;;;;;;;AAYK,kBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,gBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,eAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,oBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAM,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAIN,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAlBjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;AAYK,kBAAA,CAAA;oBACf,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAEI,SAAS;uBAAC,WAAW;;sBACrB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBACrC;;;MCRQ,qBAAqB,CAAA;AACN,IAAA,QAAQ;AACD,IAAA,eAAe;AACnB,IAAA,OAAO;IAE1B,OAAO,GAAG,KAAK;AACf,IAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC/B,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEnC,IAAA,MAAM,QAAQ,GAAA;AACV,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;QACxB,UAAU,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;IAC7C;IAEA,kBAAkB,GAAA;AACd,QAAA,IAAG,CAAC,IAAI,CAAC,OAAO,EAAC;YACb,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;AAEhF,YAAA,IAAG,QAAQ;gBACP,QAAQ,CAAC,KAAK,EAAE;AAEpB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QACvB;IACJ;uGAvBS,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACnB,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EACR,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAfnB,CAAA;;;;;;;;;AASK,kBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,oBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAIN,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAfjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;AASK,kBAAA,CAAA;oBACf,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAEI,SAAS;uBAAC,WAAW;;sBACrB,YAAY;uBAAC,eAAe;;sBAC5B,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;MCXhB,qBAAqB,CAAA;AACO,IAAA,MAAM;AACL,IAAA,OAAO;AACR,IAAA,MAAM;AAClC,IAAA,KAAK;uGAJL,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,gJAChB,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACrB,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACtB,qBAAqB,gDCdvC,8qBAkBM,EAAA,YAAA,EAAA,CAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDPO,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,eAAA,EAEd,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,8qBAAA,EAAA;;sBAGhB,YAAY;uBAAC,qBAAqB;;sBAClC,YAAY;uBAAC,sBAAsB;;sBACnC,YAAY;uBAAC,qBAAqB;;sBAClC;;;AEyCC,MAAO,eAAgB,SAAQ,QAAQ,CAAA;AAChC,IAAA,KAAK;AACa,IAAA,OAAO;IACzB,IAAI,GAAe,MAAM;AACzB,IAAA,KAAK;IACL,UAAU,GAAG,KAAK;AAClB,IAAA,IAAI;AACJ,IAAA,SAAS;AACT,IAAA,OAAO;AACP,IAAA,SAAS;AACX,IAAA,SAAS;AAEN,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACvC,IAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;IAExC,QAAQ,GAAA;AACJ,QAAA,IAAG,IAAI,CAAC,IAAI,EAAC;YACT,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QACxE;IACJ;AAEU,IAAA,MAAM,GAAG,CAAC,SAAc,KAA0B,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IAEnG,OAAO,GAAG,MAAiB;AAC9B,QAAA,IAAG,IAAI,CAAC,IAAI,KAAK,MAAM;YACnB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;AAC1C,QAAA,IAAG,IAAI,CAAC,IAAI,KAAK,OAAO;YACpB,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE;AACnD,QAAA,IAAG,IAAI,CAAC,IAAI,KAAK,SAAS;YACtB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE;AAEjD,QAAA,OAAO,IAAI;AACf,IAAA,CAAC;AAES,IAAA,KAAK,GAAG,CAAC,IAAsB,EAAE,IAA0B,KAAI;AACrE,QAAA,IAAG,IAAI,KAAK,gBAAgB,CAAC,EAAE,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,EAAC;AAC9D,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;AAE5B,YAAA,IAAG,IAAI,CAAC,SAAS,CAAC,OAAO;gBACrB;QACR;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,EAAE,CAAC;AAC9F,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC9B,IAAA,CAAC;AAEM,IAAA,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU;IAE9D,SAAS,GAAG,MAA2B;AAC1C,QAAA,IAAG,IAAI,CAAC,IAAI,KAAK,SAAS;AACtB,YAAA,OAAO,IAAI;AAEf,QAAA,IAAG,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAC;AAC7C,YAAA,OAAO,CAAC;oBACJ,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,WAAW,CAAC;oBACnD,OAAO,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBAC9C,KAAK,EAAE,IAAI,CAAC;AACf,iBAAA,CAAC;QACN;AAEA,QAAA,OAAO,CAAC;gBACJ,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,gBAAgB,CAAC;gBACxD,OAAO,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;AAC9C,gBAAA,KAAK,EAAE;AACV,aAAA;AACD,YAAA;gBACI,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,WAAW,CAAC;gBACnD,OAAO,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;AAC9C,gBAAA,KAAK,EAAE;AACV,aAAA,CAAC;AACN,IAAA,CAAC;AAEM,IAAA,WAAW,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC;uGAzEtE,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA7Cd,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0Ca,0BAAA,CAAA,EAAA,QAAA,EAAA,IAAA,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,EAAAR,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,IAAA,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,kBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAGd,eAAe,EAAA,UAAA,EAAA,CAAA;kBAhD3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0Ca,0BAAA,CAAA;oBACvB,eAAe,EAAE,uBAAuB,CAAC;AAC5C,iBAAA;;sBAEI;;sBACA,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;MCnCQ,qBAAqB,CAAA;AACH,IAAA,KAAK;AACL,IAAA,OAAO;IACzB,IAAI,GAAqB,MAAM;AAC/B,IAAA,MAAM;AAEP,IAAA,OAAO;AACP,IAAA,EAAE,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAChC,IAAA,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAErC,QAAQ,GAAA;QACJ,IAAI,CAAC,UAAU,EAAE;IACrB;IAEO,UAAU,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;IAE7C,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC;IAExE,KAAK,GAAG,MAAK;QAChB,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;AAClB,IAAA,CAAC;AAEM,IAAA,cAAc,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC;uGAvBnE,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAvBpB,CAAA;;;;;;;;;;;;;;;;;;;;AAoBH,UAAA,CAAA,EAAA,QAAA,EAAA,IAAA,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,EAAAX,eAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,oBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAGE,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBA1BjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;AAoBH,UAAA,CAAA;oBACP,eAAe,EAAE,uBAAuB,CAAC;AAC5C,iBAAA;;sBAEI,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;;MC5BQ,qBAAqB,GAAG,IAAI,cAAc,CAAa,uBAAuB;AAiBrF,MAAO,gBAAiB,SAAQ,aAAa,CAAA;AACtB,IAAA,UAAU;AACR,IAAA,OAAO;AACP,IAAA,UAAU;AACV,IAAA,SAAS;AAC3B,IAAA,OAAO;AAER,IAAA,SAAS,GAAG,MAAM,CAAC,qBAAqB,CAAC;IACzC,UAAU,GAAG,CAAC;AACd,IAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC/B,IAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AAEjC,IAAA,iBAAiB,GAAG,IAAI,eAAe,CAAmB,IAAI,CAAC;AAC/D,IAAA,UAAU,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;AAC9B,IAAA,EAAE,GAAG,IAAI,eAAe,CAAC,CAAC,CAAC;AAC3B,IAAA,EAAE,GAAG,IAAI,eAAe,CAAC,CAAC,CAAC;IAE3C,QAAQ,GAAA;QACJ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAE3C,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACtB,YAAA,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC;YAC3B,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC9C,SAAS,CAAa,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CACvC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAqB,CAAC,EACjC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;SAElH,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE7B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAC7C,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAC9D,CAAC,SAAS,CAAC,MAAK;YACb,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;AAC5B,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC1B,IAAI,CAAC,iBAAiB,EAAE;oBACxB;gBACJ;AAEA,gBAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,QAAQ;AAC9C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;AAClC,qBAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,MAAM;AACjD,oBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;AACjC,qBAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,KAAK;AAChD,oBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC;;AAEpC,oBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7C,YAAA,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;IACP;IAEA,eAAe,GAAA;QACX,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,MAAM,UAAU,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;IAC3H;IAEQ,iBAAiB,GAAG,MAAK;AAC7B,QAAA,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,GAAG,IAAI,EACtD,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,EAC1D,WAAW,GAAG,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,EAC9D,gBAAgB,GAAG,iBAAiB,CAAC,QAAQ,EAAE;AAEnD,QAAA,IAAI,gBAAgB,KAAK,KAAK,IAAI,gBAAgB,KAAK,QAAQ;YAC3D,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;aACrE,IAAI,gBAAgB,KAAK,OAAO;AACjC,YAAA,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;;AAE1C,YAAA,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC;QAElD,IAAI,gBAAgB,KAAK,KAAK;AAC1B,YAAA,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC;aAC7C,IAAI,gBAAgB,KAAK,QAAQ;AAClC,YAAA,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;;YAE1C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;AAE3E,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;QACxB,IAAI,CAAC,UAAU,EAAE;AACrB,IAAA,CAAC;IAEO,mBAAmB,GAAG,MAAK;AAC/B,QAAA,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAC1F,QAAA,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,MAAM,IAAI,MAAM,CAAC,WAAW,IAAI,KAAK,IAAI,MAAM,CAAC,UAAU;AAC9F,IAAA,CAAC;AAEM,IAAA,aAAa,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAiB,CAAC;IAEpF,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,YAAY,WAAW;AAEtD,IAAA,kBAAkB,GAAG,MAAM,IAAI,CAAC,OAA2B;uGAxFzD,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAZf,CAAA;;;;;;;;;AASH,UAAA,CAAA,EAAA,QAAA,EAAA,IAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAGE,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAf5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;AASH,UAAA,CAAA;oBACP,eAAe,EAAE,uBAAuB,CAAC;AAC5C,iBAAA;;sBAEI,SAAS;uBAAC,YAAY;;sBACtB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;;MCvBQ,qBAAqB,GAAG,IAAI,cAAc,CAAa,uBAAuB;AAarF,MAAO,gBAAiB,SAAQ,aAAa,CAAA;AACtB,IAAA,UAAU;AACR,IAAA,OAAO;AACP,IAAA,UAAU;AACV,IAAA,SAAS;AAE5B,IAAA,SAAS,GAAG,MAAM,CAAC,qBAAqB,CAAC;IACzC,UAAU,GAAG,CAAC;AACd,IAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAEhC,IAAA,iBAAiB,GAAG,IAAI,eAAe,CAAmB,IAAI,CAAC;AAC/D,IAAA,UAAU,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;AAC9B,IAAA,EAAE,GAAG,IAAI,eAAe,CAAC,CAAC,CAAC;AAC3B,IAAA,EAAE,GAAG,IAAI,eAAe,CAAC,CAAC,CAAC;IAE3C,QAAQ,GAAA;QACJ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAE3C,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACtB,YAAA,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC;YAC3B,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC9C,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,YAAY;SACxD,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE7B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAC7C,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAC9D,CAAC,SAAS,CAAC,MAAK;YACb,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;AAC5B,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC1B,IAAI,CAAC,iBAAiB,EAAE;oBACxB;gBACJ;AAEA,gBAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,QAAQ;AAC9C,oBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;AAClC,qBAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,MAAM;AACjD,oBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;AACjC,qBAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,KAAK;AAChD,oBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC;;AAEpC,oBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7C,YAAA,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;IACP;IAEA,eAAe,GAAA;QACX,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,MAAM,UAAU,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;IAC3H;IAEQ,iBAAiB,GAAG,MAAK;AAC7B,QAAA,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,GAAG,IAAI,EACtD,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,EAC1D,WAAW,GAAG,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,EAC9D,gBAAgB,GAAG,iBAAiB,CAAC,QAAQ,EAAE;AAEnD,QAAA,IAAI,gBAAgB,KAAK,KAAK,IAAI,gBAAgB,KAAK,QAAQ;YAC3D,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;aACrE,IAAI,gBAAgB,KAAK,OAAO;AACjC,YAAA,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC;;AAE1C,YAAA,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC;QAElD,IAAI,gBAAgB,KAAK,KAAK;AAC1B,YAAA,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC;aAC7C,IAAI,gBAAgB,KAAK,QAAQ;AAClC,YAAA,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;;YAE1C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;AAE3E,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;QACxB,IAAI,CAAC,UAAU,EAAE;AACrB,IAAA,CAAC;IAEO,mBAAmB,GAAG,MAAK;AAC/B,QAAA,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAC1F,QAAA,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,MAAM,IAAI,MAAM,CAAC,WAAW,IAAI,KAAK,IAAI,MAAM,CAAC,UAAU;AAC9F,IAAA,CAAC;uGA7EQ,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EARf,CAAA;;;;;AAKH,UAAA,CAAA,EAAA,QAAA,EAAA,IAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAGE,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAX5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE,CAAA;;;;;AAKH,UAAA,CAAA;oBACP,eAAe,EAAE,uBAAuB,CAAC;AAC5C,iBAAA;;sBAEI,SAAS;uBAAC,YAAY;;sBACtB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;MCZhB,cAAc,CAAA;AAOH,IAAA,QAAA;AAA4B,IAAA,SAAA;IANxC,MAAM,GAA2C,EAAE;AACnD,IAAA,YAAY;AACZ,IAAA,OAAO;AACP,IAAA,OAAO;AACP,IAAA,WAAW;IAEnB,WAAA,CAAoB,QAAkB,EAAU,SAA2B,EAAA;QAAvD,IAAA,CAAA,QAAQ,GAAR,QAAQ;QAAoB,IAAA,CAAA,SAAS,GAAT,SAAS;IAAoB;IAEtE,IAAI,GAAG,MAAK;AACf,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,EAC3C,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAC3C,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,EACtC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAC1C,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,EACtC,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC;QAE5D,OAAO;YACH,EAAE,CAAC,UAAU,EAAE,CAAC,IAAI,CAChB,GAAG,CAAC,MAAM,IAAG;AACT,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEjF,gBAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AAErC,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,YAAA,CAAC,CAAC,EACF,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EACxC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACjD,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC,CAC/E,CAAC,SAAS,CAAC,KAAK,IAAG;AAChB,gBAAA,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,IAAI,eAAe,EAAE,EAAE,mBAAmB,EAAE,CAAC;AACjG,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;AAE3C,gBAAA,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAElG,gBAAA,IAAG,KAAK,CAAC,SAAS,EAAE,KAAK;AACrB,oBAAA,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAEpF,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC1C,YAAA,CAAC,CAAC;YACF,EAAE,CAAC,gBAAgB,EAAE,CAAC,IAAI,CACtB,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACjD,GAAG,CAAC,MAAK;gBACL,IAAG,IAAI,CAAC,YAAY;AAChB,oBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AACnC,YAAA,CAAC,CAAC,EACF,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,CAC3B,CAAC,SAAS,CAAC,KAAK,IAAG;gBAChB,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC,qBAAqB,EAAE,EAAE,mBAAmB,EAAE,CAAC;AAEnF,gBAAA,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAE3E,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;AACrD,YAAA,CAAC,CAAC;YACF,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,CACjB,GAAG,CAAC,MAAK;gBACL,IAAG,IAAI,CAAC,OAAO;AACX,oBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AAC9B,YAAA,CAAC,CAAC,EACF,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,CAC3B,CAAC,SAAS,CAAC,KAAK,IAAG;AAChB,gBAAA,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,gBAAgB,EAAE;oBAC7C,mBAAmB;AACnB,oBAAA,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC;AAC7B,wBAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE;qBACzF;AACJ,iBAAA,CAAC;AAEF,gBAAA,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAEtE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AAChD,YAAA,CAAC,CAAC;YACF,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,CACjB,GAAG,CAAC,MAAK;gBACL,IAAG,IAAI,CAAC,OAAO;AACX,oBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AAC9B,YAAA,CAAC,CAAC,EACF,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,CAC3B,CAAC,SAAS,CAAC,KAAK,IAAG;AAChB,gBAAA,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,gBAAgB,EAAE;oBAC7C,mBAAmB;AACnB,oBAAA,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC;AAC7B,wBAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE;qBACzF;AACJ,iBAAA,CAAC;AAEF,gBAAA,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAEtE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AAChD,YAAA,CAAC,CAAC;YACF,EAAE,CAAC,eAAe,EAAE,CAAC,IAAI,CACrB,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACjD,GAAG,CAAC,MAAK;gBACL,IAAG,IAAI,CAAC,WAAW;AACf,oBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AAClC,YAAA,CAAC,CAAC,EACF,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,CAC3B,CAAC,SAAS,CAAC,KAAK,IAAG;AAChB,gBAAA,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC,oBAAoB,EAAE;oBACrD,mBAAmB;AACnB,oBAAA,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC;AAC7B,wBAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE;qBAClG;AACJ,iBAAA,CAAC;AAEF,gBAAA,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAE1E,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AACpD,YAAA,CAAC;SACJ;AACL,IAAA,CAAC;AACJ;;MChHY,WAAW,CAAA;AAQA,IAAA,IAAA;AAPZ,IAAA,aAAa;AACb,IAAA,UAAU;IACV,SAAS,GAAsB,MAAM;AACrC,IAAA,KAAK;IACL,WAAW,GAAuD,EAAE;IACpE,aAAa,GAAqD,EAAE;AAE5E,IAAA,WAAA,CAAoB,IAAY,EAAE,cAAc,GAAG,IAAI,EAAA;QAAnC,IAAA,CAAA,IAAI,GAAJ,IAAI;AACpB,QAAA,IAAG,cAAc;AACb,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC;IAChD;AAEO,IAAA,SAAS,GAAG,CAAC,KAAwB,KAAI;AAC5C,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,OAAO,IAAI;AACf,IAAA,CAAC;AAEM,IAAA,OAAO,GAAG,CAAC,GAAoB,KAAI;QACtC,IAAI,CAAC,aAAa,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,QAAA,OAAO,IAAI;AACf,IAAA,CAAC;AAEM,IAAA,YAAY,GAAG,CAAC,GAAW,KAAI;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG;AACrB,QAAA,OAAO,IAAI;AACf,IAAA,CAAC;AAEM,IAAA,gBAAgB,GAAG,CAAC,KAAmG,KAAI;AAC9H,QAAA,IAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACnB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;;AAEjC,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;AAElC,QAAA,OAAO,IAAI;AACf,IAAA,CAAC;AAEM,IAAA,QAAQ,GAAG,CAAC,KAAuG,KAAI;AAC1H,QAAA,IAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;;AAE/B,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAEhC,QAAA,OAAO,IAAI;AACf,IAAA,CAAC;AAEM,IAAA,OAAO,GAAG,OAAc;QAC3B,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,aAAa,EAAE,IAAI,CAAC;AACvB,KAAA,CAAC;AACL;;ACtDK,MAAO,oBAAqB,SAAQ,aAAa,CAAA;AACG,IAAA,WAAW;AACzB,IAAA,WAAW;AACX,IAAA,QAAQ;IACvC,QAAQ,GAA+D,aAAa;AACrF,IAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC/C,IAAA,KAAK,GAAG,MAAM,EAAC,UAAuB,EAAC;IAE/C,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAa,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,GAAG,OAAO,GAAG,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;YAC3H,CAAC,CAAC,cAAc,EAAE;AAElB,YAAA,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC;AAEpF,YAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC;AACpC,gBAAA,CAAC,EAAE,IAAI;AACP,gBAAA,CAAC,EAAE,GAAG;gBACN,KAAK,EAAE,IAAI,CAAC,WAAW;gBACvB,GAAG,EAAE,IAAI,CAAC,KAAK;gBACf,QAAQ,EAAE,IAAI,CAAC;AAClB,aAAA,CAAC;QACN,CAAC,CAAC,CAAC;IACP;IAEQ,gBAAgB,GAAG,MAAK;AAC5B,QAAA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAErF,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,KAAK;QAEzB,IAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,EAAC;AACnC,YAAA,MAAM,MAAM,GAAG,GAAG,GAAG,MAAM;AAE3B,YAAA,IAAG,IAAI,CAAC,QAAQ,KAAK,aAAa;AAC9B,gBAAA,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;AAEzB,YAAA,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;QACzB;AAEA,QAAA,IAAG,IAAI,CAAC,QAAQ,KAAK,WAAW;AAC5B,YAAA,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;AAEtB,QAAA,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;AACtB,IAAA,CAAC;uGA1CQ,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAApB,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,kBAAA,EAAA,aAAA,CAAA,EAAA,WAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAET,gBAAgB,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAChB,gBAAgB,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAH3B,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAEI,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE;;sBACnD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBACrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBACrC;;;ACHC,MAAO,iBAAkB,SAAQ,aAAa,CAAA;AACG,IAAA,GAAG;AAC9C,IAAA,MAAM;AACN,IAAA,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC;AACjC,IAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACnC,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,IAAA,UAAU,GAAG,MAAM,EAAC,UAAuB,EAAC;AAEpD,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AAEP,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,GAAG;AAEzE,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAa,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;YAC7F,IAAG,IAAI,CAAC,MAAM;gBACV,CAAC,CAAC,cAAc,EAAE;AAEtB,YAAA,IAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE;gBACjC,IAAI,CAAC,SAAS,EAAE;;gBAEhB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;QAC3C,CAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAa,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,IAAI,CACvF,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAC9B,CAAC,SAAS,CAAC,CAAC,IAAG;YACZ,IAAG,IAAI,CAAC,MAAM;gBACV,CAAC,CAAC,eAAe,EAAE;;gBAEnB,IAAI,CAAC,SAAS,EAAE;QACxB,CAAC,CAAC,CAAC;IACP;AAEA,IAAA,WAAW,CAAC,OAA4B,EAAA;QACpC,IAAG,CAAC,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG;AACpF,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC;IACpE;AAEQ,IAAA,SAAS,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC;uGAtCjE,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAjB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,CAAA,eAAA,EAAA,KAAA,CAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAEI,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE;;;ACF/C,MAAO,gBAAiB,SAAQ,aAAa,CAAA;AACG,IAAA,OAAO;AAChB,IAAA,OAAO;IACvC,SAAS,GAAqB,KAAK;AACpC,IAAA,EAAE,GAAG,MAAM,EAAC,UAAuB,EAAC;AACpC,IAAA,EAAE,GAAG,MAAM,CAAC,cAAc,CAAC;IAEnC,QAAQ,GAAA;QACJ,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,IAAI,CACnE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,CACvC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AAElC,QAAA,IAAI,CAAC,eAAe,CAChB,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,CAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAC/B,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC;YAClC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,EAAE;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC;SACjB,CAAC,CAAC,CACN;IACL;uGAtBS,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,EAAA,SAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAEI,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE;;sBAC/C,KAAK;uBAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE;;sBACtC;;;ACLC,MAAO,mBAAoB,SAAQ,aAAa,CAAA;AAC7C,IAAA,UAAU;IACV,cAAc,GAAG,CAAC;IAClB,KAAK,GAAG,CAAC;AACT,IAAA,UAAU;IACV,cAAc,GAAG,CAAC;IAClB,KAAK,GAAG,CAAC;AACN,IAAA,UAAU,GAAG,MAAM,EAAC,UAAuB,EAAC;AAEvD,IAAA,WAAA,GAAA;AACC,QAAA,KAAK,EAAE;AAEP,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAa,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,IAAI,CACjF,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAC9B,CAAC,SAAS,CAAC,CAAC,IAAG;YACrB,CAAC,CAAC,cAAc,EAAE;YAClB,CAAC,CAAC,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,OAAO;AAC3B,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,OAAO;YAC3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU;YAC9D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS;YAC7D,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;QACxD,CAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;AACrF,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;YACtB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,CAAC,SAAS,CAAQ,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CACpG,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAChD,CAAC,SAAS,CAAC,CAAC,IAAG;YACf,CAAC,CAAC,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,KAAK,GAAG,CAAC;AACd,YAAA,IAAI,CAAC,KAAK,GAAG,CAAC;QACf,CAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAa,QAAQ,EAAE,WAAW,CAAC,CAAC,IAAI,CACrE,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,CAChE,CAAC,SAAS,CAAC,CAAC,IAAG;YACf,CAAC,CAAC,eAAe,EAAE;AAEnB,YAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE;AAC5B,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC;gBAChE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK;YACtD;AACA,YAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE;AAC5B,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC;gBAChE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK;YACrD;QACD,CAAC,CAAC,CAAC;IACJ;uGApDY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,mBAAmB;AAC1B,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCIY,gBAAgB,CAAA;uGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,iBAHV,oBAAoB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,CAAA,EAAA,OAAA,EAAA,CACrG,oBAAoB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,CAAA,EAAA,CAAA;wGAEjG,gBAAgB,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,CAAC;oBAChH,OAAO,EAAE,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB;AAC7G,iBAAA;;;MCCY,eAAe,CAAA;IAClB,OAAO,GAAG,SAAS;uGADhB,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EANjB,CAAA;;;AAGH,OAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,oBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAa,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAGK,eAAe,EAAA,UAAA,EAAA,CAAA;kBAT3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE,CAAA;;;AAGH,OAAA,CAAA;oBACP,eAAe,EAAE,uBAAuB,CAAC;AACzC,iBAAA;;sBAEC;;;MCMW,YAAY,CAAA;uGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,iBAJN,eAAe,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,eAAe,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAC3J,YAAY,EAAE,gBAAgB,EAAE,aAAa,CAAA,EAAA,OAAA,EAAA,CAC7C,eAAe,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,eAAe,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,CAAA,EAAA,CAAA;wGAEvJ,YAAY,EAAA,OAAA,EAAA,CAHX,YAAY,EAAE,gBAAgB,CAAA,EAAA,CAAA;;2FAG/B,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE,CAAC,eAAe,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,eAAe,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,CAAC;AACtK,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,aAAa,CAAC;AACxD,oBAAA,OAAO,EAAE,CAAC,eAAe,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,eAAe,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB;AACnK,iBAAA;;;ACGK,MAAO,sBAAuB,SAAQ,aAAsB,CAAA;AACvD,IAAA,WAAW,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;uGADxD,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,SAAA,EANpB;AACP,YAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAsB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAClG,YAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAsB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC9F,YAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,sBAAsB;SAChE,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAZS,CAAA;;;;;AAKH,UAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnB,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,oJAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FASE,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAhBlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,CAAA;;;;;AAKH,UAAA,CAAA;oBACP,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,SAAS,EAAE;AACP,wBAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,4BAA4B,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAClG,wBAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,4BAA4B,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAC9F,wBAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,wBAAwB;AAChE;AACJ,iBAAA;;;MCCY,UAAU,CAAA;uGAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,iBAJJ,kBAAkB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,aAAa,CAAA,EAAA,OAAA,EAAA,CAC3K,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,CAAA,EAAA,OAAA,EAAA,CAChF,mBAAmB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,aAAa,CAAA,EAAA,CAAA;wGAE5L,UAAU,EAAA,OAAA,EAAA,CAHT,YAAY,EAAE,mBAAmB,EAAiB,gBAAgB,EAAE,YAAY,EAChF,mBAAmB,CAAA,EAAA,CAAA;;2FAEpB,UAAU,EAAA,UAAA,EAAA,CAAA;kBALtB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE,CAAC,kBAAkB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,aAAa,CAAC;oBACtL,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,CAAC;AAC3F,oBAAA,OAAO,EAAE,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,aAAa;AACxM,iBAAA;;;MCDY,kBAAkB,CAAA;uGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,CAJZ,eAAe,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,qBAAqB,CAAA,EAAA,OAAA,EAAA,CACjH,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,UAAU,CAAA,EAAA,OAAA,EAAA,CAC5F,eAAe,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,qBAAqB,CAAA,EAAA,CAAA;wGAE7G,kBAAkB,EAAA,OAAA,EAAA,CAHjB,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,mBAAmB,EAAiB,UAAU,CAAA,EAAA,CAAA;;2FAG7F,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,eAAe,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,qBAAqB,CAAC;AAC5H,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,UAAU,CAAC;oBACvG,OAAO,EAAE,CAAC,eAAe,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,qBAAqB;AACzH,iBAAA;;;MCPY,aAAa,CAAA;AACE,IAAA,MAAM;AACtB,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AAEpC,IAAA,YAAY,GAAG,CAAC,IAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAc,KAAI;QAC/E,IAAI,KAAK,GAAG;AACP,aAAA,QAAQ;aACR,KAAK,CAAC,GAAG;AACT,aAAA,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,IAAe,CAAQ,EAAE,IAAI,CAAW;AAE3E,QAAA,IAAG,QAAQ,KAAK,cAAc,CAAC,IAAI;YACxC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAK,CAAC;AACrC,aAAA,IAAG,QAAQ,KAAK,cAAc,CAAC,QAAQ;YACjD,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,KAAK,CAAC;AAE9C,QAAA,IAAI,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK;AAEzD,QAAA,IAAG,QAAQ,KAAK,cAAc,CAAC,IAAI;AAClC,YAAA,QAAQ,GAAG,CAAA,6BAAA,EAAgC,QAAQ,CAAA,IAAA,CAAM;QAEpD,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,QAAQ,CAAC;AAC3D,IAAA,CAAC;IAEG,SAAS,GAAG,CAAC,CAAQ,EAAE,GAAe,EAAE,IAAO,EAAE,IAA0B,KAAI;QACrF,IAAG,GAAG,CAAC,QAAQ,KAAK,cAAc,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM;YACrD;AAED,QAAA,MAAM,QAAQ,GAAG,GAAG,CAAC;AACV,aAAA,QAAQ;aACR,KAAK,CAAC,GAAG;aACT,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,IAAe,CAAQ,EAAE,IAAI,CAAC,EACvE,UAAU,GAAG,CAAC,CAAC,MAAqB;AAEpC,QAAA,IAAG,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,GAAG;AAC1C,YAAA,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;aACjB;YACH,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;AAEvC,YAAA,IAAG,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;AACxB,gBAAA,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;QACtB;AACD,IAAA,CAAC;AAES,IAAA,oBAAoB,GAAG,CAAC,QAA6B,KAAI;QAC5D,IAAG,QAAQ,IAAI,IAAI;AACf,YAAA,OAAO,KAAK;AAEhB,QAAA,OAAO,OAAO,QAAQ,KAAK,SAAS,GAAG,QAAQ,GAAG,QAAQ,EAAE;AAChE,IAAA,CAAC;uGAjDQ,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,qGCV1B,6qIAwFM,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAoB,oBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;2FD9EO,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,cAEV,KAAK,EAAA,QAAA,EAAA,6qIAAA,EAAA;;sBAGjB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;MECb,UAAU,CAAA;uGAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAV,UAAU,EAAA,YAAA,EAAA,CAJJ,aAAa,CAAA,EAAA,OAAA,EAAA,CAClB,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,CAAA,EAAA,OAAA,EAAA,CAC3D,aAAa,CAAA,EAAA,CAAA;AAEd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,EAAA,OAAA,EAAA,CAHT,YAAY,EAAE,gBAAgB,EAAE,YAAY,CAAA,EAAA,CAAA;;2FAG7C,UAAU,EAAA,UAAA,EAAA,CAAA;kBALtB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,aAAa,CAAC;oBAC7B,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,CAAC;oBACtE,OAAO,EAAE,CAAC,aAAa;AAC1B,iBAAA;;;MCNY,eAAe,GAAG,CAAC,GAAyB,EAAE,IAAmB,KAAI;AAC9E,IAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,EACjD,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;AACd,QAAA,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC,IAAI;AAC1E,KAAA,CAAC;IAEF,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;AAC7C,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACpB,YAAA,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC;AACpG,SAAA,CAAC,CAAC;IACP;AAEA,IAAA,OAAO,IAAI,CAAC,KAAK,CAAC;AACtB;;MCZa,gBAAgB,GAAG,CAAC,GAAyB,EAAE,IAAmB,KAAI;AAC/E,IAAA,MAAM,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC,EACvD,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAE3C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CACjB,UAAU,CAAC,GAAG,IAAG;AACb,QAAA,IAAG,GAAG,YAAY,iBAAiB,EAAC;AAChC,YAAA,IAAG,GAAG,CAAC,MAAM,KAAK,GAAG;AACjB,gBAAA,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC;YAEhD,mBAAmB,CAAC,IAAI,CAAC;AACrB,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,KAAK,EAAE,gBAAgB,CAAC,SAAS,CAAC,iBAAiB,CAAC;AACpD,gBAAA,OAAO,EAAE,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC;AAC5D,aAAA,CAAC;QACN;AAEA,QAAA,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC;IAChC,CAAC,CAAC,CACL;AACL;;AC1BA;;AAEG;AAEH;;ACJA;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"dolfo-angular.mjs","names":[],"sources":["../../projects/dolfo-angular/src/lib/shared/classes/subscriptable.ts","../../projects/dolfo-angular/src/lib/shared/interfaces/components/dialog.ts","../../projects/dolfo-angular/src/lib/shared/interfaces/components/grid.ts","../../projects/dolfo-angular/src/lib/components/layout/icon.component.ts","../../projects/dolfo-angular/src/lib/shared/interfaces/components/icon.ts","../../projects/dolfo-angular/src/lib/shared/interfaces/router.ts","../../projects/dolfo-angular/src/lib/shared/interfaces/store.ts","../../projects/dolfo-angular/src/lib/shared/interfaces/translate.ts","../../projects/dolfo-angular/src/lib/shared/interfaces/utils.ts","../../projects/dolfo-angular/src/lib/shared/services/context-menu.service.ts","../../projects/dolfo-angular/src/lib/shared/services/translate.service.ts","../../projects/dolfo-angular/src/lib/shared/services/dialog.service.ts","../../projects/dolfo-angular/src/lib/shared/services/dialog-utils.service.ts","../../projects/dolfo-angular/src/lib/shared/services/notification.service.ts","../../projects/dolfo-angular/src/lib/shared/services/popover.service.ts","../../projects/dolfo-angular/src/lib/shared/services/route-check.service.ts","../../projects/dolfo-angular/src/lib/shared/services/store.service.ts","../../projects/dolfo-angular/src/lib/shared/services/tooltip.service.ts","../../projects/dolfo-angular/src/lib/shared/directives/tooltip.directive.ts","../../projects/dolfo-angular/src/lib/shared/pipes/translate.pipe.ts","../../projects/dolfo-angular/src/lib/components/form/input-container.component.ts","../../projects/dolfo-angular/src/lib/components/form/base-form-input.ts","../../projects/dolfo-angular/src/lib/components/form/autocomplete.component.ts","../../projects/dolfo-angular/src/lib/components/layout/icon-wrapper.component.ts","../../projects/dolfo-angular/src/lib/components/form/combobox.component.ts","../../projects/dolfo-angular/src/lib/components/form/datepicker.component.ts","../../projects/dolfo-angular/src/lib/components/form/file-select.component.ts","../../projects/dolfo-angular/src/lib/components/form/form.component.ts","../../projects/dolfo-angular/src/lib/shared/classes/base-app.component.ts","../../projects/dolfo-angular/src/lib/shared/classes/formable.ts","../../projects/dolfo-angular/src/lib/components/layout/context-menu.component.ts","../../projects/dolfo-angular/src/lib/components/form/input-text.component.ts","../../projects/dolfo-angular/src/lib/components/form/input-radio.component.ts","../../projects/dolfo-angular/src/lib/components/layout/dialog-layout/dialog-content.component.ts","../../projects/dolfo-angular/src/lib/components/layout/button.component.ts","../../projects/dolfo-angular/src/lib/components/layout/dialog-layout/dialog-header.component.ts","../../projects/dolfo-angular/src/lib/components/layout/dialog-layout/dialog-footer.component.ts","../../projects/dolfo-angular/src/lib/components/layout/dialog-layout/dialog-layout.component.ts","../../projects/dolfo-angular/src/lib/components/layout/dialog-layout/dialog-layout.component.html","../../projects/dolfo-angular/src/lib/components/layout/dialog-layout/dialog.component.ts","../../projects/dolfo-angular/src/lib/components/layout/notification.component.ts","../../projects/dolfo-angular/src/lib/components/layout/popover.component.ts","../../projects/dolfo-angular/src/lib/components/layout/tooltip.component.ts","../../projects/dolfo-angular/src/lib/shared/classes/overlay-manager.ts","../../projects/dolfo-angular/src/lib/shared/classes/route-config.ts","../../projects/dolfo-angular/src/lib/shared/directives/context-menu.directive.ts","../../projects/dolfo-angular/src/lib/shared/directives/navigate.directive.ts","../../projects/dolfo-angular/src/lib/shared/directives/popover.directive.ts","../../projects/dolfo-angular/src/lib/shared/directives/scroll-drag.directive.ts","../../projects/dolfo-angular/src/lib/shared/directives/directives.module.ts","../../projects/dolfo-angular/src/lib/components/layout/loader.component.ts","../../projects/dolfo-angular/src/lib/components/layout/layout.module.ts","../../projects/dolfo-angular/src/lib/components/form/input-checkbox.component.ts","../../projects/dolfo-angular/src/lib/components/form/form.module.ts","../../projects/dolfo-angular/src/lib/components/layout/dialog-layout/dialog-layout.module.ts","../../projects/dolfo-angular/src/lib/components/layout/grid/grid.component.ts","../../projects/dolfo-angular/src/lib/components/layout/grid/grid.component.html","../../projects/dolfo-angular/src/lib/components/layout/grid/grid.module.ts","../../projects/dolfo-angular/src/lib/shared/interceptors/auth.interceptor.ts","../../projects/dolfo-angular/src/lib/shared/interceptors/error.interceptor.ts"],"sourcesContent":["import { Directive, OnDestroy } from \"@angular/core\"\r\nimport { Subscription } from \"rxjs\"\r\n\r\n@Directive()\r\nexport abstract class Subscriptable implements OnDestroy{\r\n private subs: Subscription[] = []\r\n\r\n protected addSubscription = (sub: Subscription) => this.subs.push(sub)\r\n\r\n ngOnDestroy(){\r\n this.subs.forEach(s => s.unsubscribe())\r\n }\r\n}\r\n","import { FormControl } from \"@angular/forms\"\r\nimport { ButtonColor } from \"./button\"\r\nimport { AutocompleteConfig, ComboOption } from \"./combobox\"\r\nimport { InputType } from \"./form\"\r\nimport { IconName } from \"./icon\"\r\n\r\nexport enum DialogActionType{ OK, NO, CANCEL }\r\n\r\nexport type DialogOutput = {\r\n type: DialogActionType\r\n data: Record<string, any>\r\n}\r\n\r\nexport type DialogForm = {\r\n control: FormControl\r\n type: InputType | \"date\" | \"radio\" | \"autocomplete\" | \"combobox\"\r\n name: string\r\n label?: string\r\n // Used only if type = \"autocomplete\"\r\n autocompleteCfg?: AutocompleteConfig<any>\r\n // Used only if type = \"radio\" or \"combobox\"\r\n options?: ComboOption[]\r\n}[]\r\n\r\nexport type DialogType = \"info\" | \"confirm\" | \"loading\" | \"error\"\r\n\r\nexport type IDialogInput = {\r\n title?: string\r\n message: string\r\n type?: DialogType\r\n width?: number\r\n className?: string\r\n hideCloseX?: boolean\r\n form?: DialogForm\r\n component?: DialogComponentInput,\r\n buttons?: DialogFooterButton[]\r\n}\r\n\r\nexport interface DialogComponentInput{\r\n readonly type: new() => IDialogInput\r\n readonly input?: any\r\n}\r\n\r\nexport type DialogIcon = {\r\n icon: string\r\n color: ButtonColor\r\n}\r\n\r\nexport type DialogFooterButton = {\r\n label: string\r\n color: ButtonColor\r\n icon?: IconName\r\n disabled?: boolean\r\n loading?: boolean\r\n onClick: () => void\r\n}","import { BehaviorSubject, map, Observable, Subscription } from \"rxjs\"\r\nimport { ButtonColor } from \"./button\"\r\nimport { ContextMenuItem } from \"./context-menu\"\r\n\r\nexport enum ColumnAlign{\r\n LEFT = \"left\",\r\n RIGHT = \"right\",\r\n CENTER = \"center\"\r\n}\r\n\r\nexport enum ColumnDataType{ TEXT, DATE, DATETIME, LINK }\r\n\r\nexport interface GridAction{\r\n readonly icon: string\r\n readonly title?: string\r\n readonly disabled?: boolean\r\n readonly color?: ButtonColor\r\n readonly onClick: () => void\r\n}\r\n\r\nexport type BooleanFn = () => boolean\r\n\r\nexport interface GridToolbarButton{\r\n readonly label: string\r\n readonly disabled?: boolean | BooleanFn\r\n readonly icon?: string\r\n readonly onClick: () => void\r\n}\r\n\r\nexport interface GridColumn{\r\n readonly label: string\r\n readonly field: string\r\n readonly dataType: ColumnDataType\r\n readonly width?: number\r\n readonly align?: ColumnAlign\r\n readonly formatter?: (value: any) => string\r\n readonly onLink?: (value: any) => void\r\n}\r\n\r\nexport interface IGridConfig<T>{\r\n readonly items: T[] | Observable<T[]>\r\n readonly columns: GridColumn[]\r\n readonly selection?: {\r\n readonly type?: \"single\" | \"multiple\"\r\n readonly showSelectAll?: boolean\r\n readonly defaultSelected?: (item: T) => boolean\r\n }\r\n readonly toolbar?: {\r\n readonly buttons?: GridToolbarButton[]\r\n }\r\n readonly events?: {\r\n onRowClick?: (item: T) => void\r\n onSelectionChange?: (item: T[]) => void\r\n }\r\n readonly getItemKey: (item: T) => string | number\r\n readonly actions?: (item: T) => ContextMenuItem[]\r\n readonly rowClass?: (item: T) => string\r\n}\r\n\r\nexport class GridConfig<T>{\r\n private items$ = new BehaviorSubject<T[]>([])\r\n private loading$ = new BehaviorSubject(false)\r\n private selectedItems: T[]\r\n private actions$ = new BehaviorSubject<IGridConfig<T>[\"actions\"]>(null)\r\n private toolbar: IGridConfig<T>[\"toolbar\"]\r\n private prevSub: Subscription\r\n\r\n constructor(private config: IGridConfig<T>){\r\n this.refreshGrid()\r\n this.actions$.next(config.actions)\r\n\r\n if(config.toolbar)\r\n this.toolbar = config.toolbar\r\n }\r\n\r\n public refreshGrid = () => {\r\n this.selectedItems = []\r\n\r\n this.prevSub?.unsubscribe()\r\n\r\n if(Array.isArray(this.config.items))\r\n this.items$.next(this.config.items)\r\n else{\r\n this.setLoading(true)\r\n\r\n this.prevSub = this.config.items.subscribe(it => {\r\n this.setLoading(false)\r\n this.items$.next(it)\r\n \r\n if(this.getSelectionConfig()?.defaultSelected)\r\n this.selectedItems = it.filter(i => this.getSelectionConfig().defaultSelected(i))\r\n })\r\n }\r\n }\r\n\r\n public getRowClass = (item: T) => this.config.rowClass?.(item)\r\n\r\n public updateList = (newList: T[]) => this.items$.next(newList)\r\n\r\n public getList = () => this.items$.getValue()\r\n\r\n public getList$ = () => this.items$.asObservable()\r\n\r\n public getActions$ = (item: T) => this.actions$.asObservable().pipe(\r\n map(actions => actions?.(item))\r\n )\r\n\r\n public setActions = (actions: IGridConfig<T>[\"actions\"]) => this.actions$.next(actions)\r\n\r\n public getColumns = () => this.config.columns\r\n\r\n public getEvents = () => this.config.events\r\n\r\n public getUniqueId = (item: T) => this.config.getItemKey(item)\r\n\r\n public isLoading$ = () => this.loading$.asObservable()\r\n \r\n public isLoading = () => this.loading$.getValue()\r\n\r\n public setLoading = (v: boolean) => this.loading$.next(v)\r\n\r\n public getSelectedItems = () => this.items$.getValue().filter(it => this.selectedItems.some(d => this.getUniqueId(d) === this.getUniqueId(it)))\r\n\r\n public toggleSelection = (item: T) => {\r\n if(this.isItemSelected(item))\r\n this.selectedItems = this.selectedItems.filter(it => this.getUniqueId(it) !== this.getUniqueId(item))\r\n else if(this.config.selection?.type === \"single\")\r\n this.selectedItems = [item]\r\n else\r\n this.selectedItems.push(item)\r\n\r\n this.emitSelectionChange()\r\n }\r\n\r\n public isItemSelected = (item: T) => this.selectedItems.some(d => this.getUniqueId(d) === this.getUniqueId(item))\r\n\r\n public toggleSelectAll = () => {\r\n if(this.isAllSelected())\r\n this.selectedItems = []\r\n else\r\n this.selectedItems = this.items$.getValue()\r\n\r\n this.emitSelectionChange()\r\n }\r\n\r\n public getSelectionConfig = () => this.config.selection\r\n\r\n private emitSelectionChange = () => this.config.events?.onSelectionChange?.(this.getSelectedItems())\r\n\r\n public isAllSelected = () => this.selectedItems.length === this.items$.getValue().length\r\n\r\n public get hasActions(){\r\n return !!this.actions$.getValue()\r\n }\r\n\r\n public get hasToolbar(){\r\n return !!this.toolbar\r\n }\r\n\r\n public getToolbarButtons(){\r\n return this.toolbar.buttons\r\n }\r\n\r\n public setToolbar = (toolbar: IGridConfig<T>[\"toolbar\"]) => this.toolbar = toolbar\r\n}","import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\"\r\nimport { IconName } from \"../../shared/interfaces\"\r\n\r\n@Component({\r\n selector: \"dolfo-icon-x\",\r\n standalone: false,\r\n template: `<i [class]=\"'icon-' + name\"></i>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class IconComponent {\r\n @Input({ required: true }) name: IconName | string\r\n}\r\n","import { InjectionToken, Type } from \"@angular/core\"\r\nimport { IconComponent } from \"../../../components/layout/icon.component\"\r\n\r\nexport const ICON_COMPONENT = new InjectionToken<Type<any>>(\"ICON_COMPONENT\", {\r\n providedIn: \"root\",\r\n factory: () => IconComponent\r\n})\r\n\r\nexport type IconName = \"home\" | \"home2\" | \"home3\" | \"office\" | \"newspaper\" | \"pencil\" | \"pencil2\" | \"quill\" | \"pen\" | \"blog\" | \"eyedropper\" | \"droplet\" | \"paint-format\" | \"image\" | \"images\" | \"camera\" | \"headphones\" | \"music\" | \"play\" | \"film\" | \"video-camera\" | \"dice\" | \"pacman\" | \"spades\" | \"clubs\" | \"diamonds\" | \"bullhorn\" | \"connection\" | \"podcast\" | \"feed\" | \"mic\" | \"book\" | \"books\" | \"library\" | \"file-text\" | \"profile\" | \"file-empty\" | \"files-empty\" | \"file-text2\" | \"file-picture\" | \"file-music\" | \"file-play\" | \"file-video\" | \"file-zip\" | \"copy\" | \"paste\" | \"stack\" | \"folder\" | \"folder-open\" | \"folder-plus\" | \"folder-minus\" | \"folder-download\" | \"folder-upload\" | \"price-tag\" | \"price-tags\" | \"barcode\" | \"qrcode\" | \"ticket\" | \"cart\" | \"coin-dollar\" | \"coin-euro\" | \"coin-pound\" | \"coin-yen\" | \"credit-card\" | \"calculator\" | \"lifebuoy\" | \"phone\" | \"phone-hang-up\" | \"address-book\" | \"envelop\" | \"pushpin\" | \"location\" | \"location2\" | \"compass\" | \"compass2\" | \"map\" | \"map2\" | \"history\" | \"clock\" | \"clock2\" | \"alarm\" | \"bell\" | \"stopwatch\" | \"calendar\" | \"printer\" | \"keyboard\" | \"display\" | \"laptop\" | \"mobile\" | \"mobile2\" | \"tablet\" | \"tv\" | \"drawer\" | \"drawer2\" | \"box-add\" | \"box-remove\" | \"download\" | \"upload\" | \"floppy-disk\" | \"drive\" | \"database\" | \"undo\" | \"redo\" | \"undo2\" | \"redo2\" | \"forward\" | \"reply\" | \"bubble\" | \"bubbles\" | \"bubbles2\" | \"bubble2\" | \"bubbles3\" | \"bubbles4\" | \"user\" | \"users\" | \"user-plus\" | \"user-minus\" | \"user-check\" | \"user-tie\" | \"quotes-left\" | \"quotes-right\" | \"hour-glass\" | \"spinner\" | \"spinner2\" | \"spinner3\" | \"spinner4\" | \"spinner5\" | \"spinner6\" | \"spinner7\" | \"spinner8\" | \"spinner9\" | \"spinner10\" | \"spinner11\" | \"binoculars\" | \"search\" | \"zoom-in\" | \"zoom-out\" | \"enlarge\" | \"shrink\" | \"enlarge2\" | \"shrink2\" | \"key\" | \"key2\" | \"lock\" | \"unlocked\" | \"wrench\" | \"equalizer\" | \"equalizer2\" | \"cog\" | \"cogs\" | \"hammer\" | \"magic-wand\" | \"aid-kit\" | \"bug\" | \"pie-chart\" | \"stats-dots\" | \"stats-bars\" | \"stats-bars2\" | \"trophy\" | \"gift\" | \"glass\" | \"glass2\" | \"mug\" | \"spoon-knife\" | \"leaf\" | \"rocket\" | \"meter\" | \"meter2\" | \"hammer2\" | \"fire\" | \"lab\" | \"magnet\" | \"bin\" | \"bin2\" | \"briefcase\" | \"airplane\" | \"truck\" | \"road\" | \"accessibility\" | \"target\" | \"shield\" | \"power\" | \"switch\" | \"power-cord\" | \"clipboard\" | \"list-numbered\" | \"list\" | \"list2\" | \"tree\" | \"menu\" | \"menu2\" | \"menu3\" | \"menu4\" | \"cloud\" | \"cloud-download\" | \"cloud-upload\" | \"cloud-check\" | \"download2\" | \"upload2\" | \"download3\" | \"upload3\" | \"sphere\" | \"earth\" | \"link\" | \"flag\" | \"attachment\" | \"eye\" | \"eye-plus\" | \"eye-minus\" | \"eye-blocked\" | \"bookmark\" | \"bookmarks\" | \"sun\" | \"contrast\" | \"brightness-contrast\" | \"star-empty\" | \"star-half\" | \"star-full\" | \"heart\" | \"heart-broken\" | \"man\" | \"woman\" | \"man-woman\" | \"happy\" | \"happy2\" | \"smile\" | \"smile2\" | \"tongue\" | \"tongue2\" | \"sad\" | \"sad2\" | \"wink\" | \"wink2\" | \"grin\" | \"grin2\" | \"cool\" | \"cool2\" | \"angry\" | \"angry2\" | \"evil\" | \"evil2\" | \"shocked\" | \"shocked2\" | \"baffled\" | \"baffled2\" | \"confused\" | \"confused2\" | \"neutral\" | \"neutral2\" | \"hipster\" | \"hipster2\" | \"wondering\" | \"wondering2\" | \"sleepy\" | \"sleepy2\" | \"frustrated\" | \"frustrated2\" | \"crying\" | \"crying2\" | \"point-up\" | \"point-right\" | \"point-down\" | \"point-left\" | \"warning\" | \"notification\" | \"question\" | \"plus\" | \"minus\" | \"info\" | \"cancel-circle\" | \"blocked\" | \"cross\" | \"checkmark\" | \"checkmark2\" | \"spell-check\" | \"enter\" | \"exit\" | \"play2\" | \"pause\" | \"stop\" | \"previous\" | \"next\" | \"backward\" | \"forward2\" | \"play3\" | \"pause2\" | \"stop2\" | \"backward2\" | \"forward3\" | \"first\" | \"last\" | \"previous2\" | \"next2\" | \"eject\" | \"volume-high\" | \"volume-medium\" | \"volume-low\" | \"volume-mute\" | \"volume-mute2\" | \"volume-increase\" | \"volume-decrease\" | \"loop\" | \"loop2\" | \"infinite\" | \"shuffle\" | \"arrow-up-left\" | \"arrow-up\" | \"arrow-up-right\" | \"arrow-right\" | \"arrow-down-right\" | \"arrow-down\" | \"arrow-down-left\" | \"arrow-left\" | \"arrow-up-left2\" | \"arrow-up2\" | \"arrow-up-right2\" | \"arrow-right2\" | \"arrow-down-right2\" | \"arrow-down2\" | \"arrow-down-left2\" | \"arrow-left2\" | \"circle-up\" | \"circle-right\" | \"circle-down\" | \"circle-left\" | \"tab\" | \"move-up\" | \"move-down\" | \"sort-alpha-asc\" | \"sort-alpha-desc\" | \"sort-numeric-asc\" | \"sort-numberic-desc\" | \"sort-amount-asc\" | \"sort-amount-desc\" | \"command\" | \"shift\" | \"ctrl\" | \"opt\" | \"checkbox-checked\" | \"checkbox-unchecked\" | \"radio-checked\" | \"radio-checked2\" | \"radio-unchecked\" | \"crop\" | \"make-group\" | \"ungroup\" | \"scissors\" | \"filter\" | \"font\" | \"ligature\" | \"ligature2\" | \"text-height\" | \"text-width\" | \"font-size\" | \"bold\" | \"underline\" | \"italic\" | \"strikethrough\" | \"omega\" | \"sigma\" | \"page-break\" | \"superscript\" | \"subscript\" | \"superscript2\" | \"subscript2\" | \"text-color\" | \"pagebreak\" | \"clear-formatting\" | \"table\" | \"table2\" | \"insert-template\" | \"pilcrow\" | \"ltr\" | \"rtl\" | \"section\" | \"paragraph-left\" | \"paragraph-center\" | \"paragraph-right\" | \"paragraph-justify\" | \"indent-increase\" | \"indent-decrease\" | \"share\" | \"new-tab\" | \"embed\" | \"embed2\" | \"terminal\" | \"share2\" | \"mail\" | \"mail2\" | \"mail3\" | \"mail4\" | \"amazon\" | \"google\" | \"google2\" | \"google3\" | \"google-plus\" | \"google-plus2\" | \"google-plus3\" | \"hangouts\" | \"google-drive\" | \"facebook\" | \"facebook2\" | \"instagram\" | \"whatsapp\" | \"spotify\" | \"telegram\" | \"twitter\" | \"vine\" | \"vk\" | \"renren\" | \"sina-weibo\" | \"rss\" | \"rss2\" | \"youtube\" | \"youtube2\" | \"twitch\" | \"vimeo\" | \"vimeo2\" | \"lanyrd\" | \"flickr\" | \"flickr2\" | \"flickr3\" | \"flickr4\" | \"dribbble\" | \"behance\" | \"behance2\" | \"deviantart\" | \"500px\" | \"steam\" | \"steam2\" | \"dropbox\" | \"onedrive\" | \"github\" | \"npm\" | \"basecamp\" | \"trello\" | \"wordpress\" | \"joomla\" | \"ello\" | \"blogger\" | \"blogger2\" | \"tumblr\" | \"tumblr2\" | \"yahoo\" | \"yahoo2\" | \"tux\" | \"appleinc\" | \"finder\" | \"android\" | \"windows\" | \"windows8\" | \"soundcloud\" | \"soundcloud2\" | \"skype\" | \"reddit\" | \"hackernews\" | \"wikipedia\" | \"linkedin\" | \"linkedin2\" | \"lastfm\" | \"lastfm2\" | \"delicious\" | \"stumbleupon\" | \"stumbleupon2\" | \"stackoverflow\" | \"pinterest\" | \"pinterest2\" | \"xing\" | \"xing2\" | \"flattr\" | \"foursquare\" | \"yelp\" | \"paypal\" | \"chrome\" | \"firefox\" | \"IE\" | \"edge\" | \"safari\" | \"opera\" | \"file-pdf\" | \"file-openoffice\" | \"file-word\" | \"file-excel\" | \"libreoffice\" | \"html-five\" | \"html-five2\" | \"css3\" | \"git\" | \"codepen\" | \"svg\" | \"IcoMoon\"","import { InjectionToken } from \"@angular/core\"\r\nimport { Observable } from \"rxjs\"\r\n\r\nexport const ROUTE_CHECK_SERVICE = new InjectionToken<CheckRoute<unknown>>(\"ROUTE_CHECK_SERVICE\", {\r\n\tprovidedIn: \"root\",\r\n\tfactory: () => {\r\n\t\tthrow new Error(\"RouteCheckService not provided\")\r\n\t}\r\n})\r\n\r\nexport interface CheckRoute<T>{\r\n\tload$: () => Observable<T>\r\n\tcheckRoute: (path: string) => Promise<boolean> | Observable<boolean>\r\n}","export enum StorageValues {\r\n TOKEN = \"token\",\r\n LANG = \"lang\"\r\n}\r\n\r\nexport interface IStore {\r\n readonly pressingCtrl: boolean\r\n readonly lists: {\r\n [x: string]: Array<any>\r\n }\r\n readonly entities: {\r\n [x: string]: any\r\n }\r\n}\r\n\r\nexport const MAX_DEVICE_SIZE = 750\r\nexport const MAX_SMALL_DEVICE = 500","import { InjectionToken, ValueProvider } from \"@angular/core\"\r\n\r\nexport interface ILanguage{\r\n readonly name: string\r\n readonly locale: string\r\n readonly altFileName?: string\r\n}\r\n\r\nexport interface ILanguageToken{\r\n readonly defaultLanguage: string\r\n readonly langs: ILanguage[]\r\n}\r\n\r\nexport const TRANSLATE_STORAGE_KEY = \"dolfo-lang-stored\"\r\n\r\nexport const LANGUAGE_TOKEN = new InjectionToken<ILanguageToken>(\"LANGUAGE_TOKEN\")\r\n\r\nexport const provideDolfoLanguages = (langs: ILanguage[], defaultLanguage: string): ValueProvider => ({\r\n provide: LANGUAGE_TOKEN,\r\n useValue: { defaultLanguage, langs } as ILanguageToken\r\n})","import { AbstractControl, FormControl, ValidationErrors, ValidatorFn } from \"@angular/forms\"\r\n\r\nexport const isDeepEqual = (objA: any, objB: any, map = new WeakMap()) => {\r\n if (Object.is(objA, objB))\r\n return true\r\n\r\n if (objA instanceof Date && objB instanceof Date)\r\n return objA.getTime() === objB.getTime()\r\n \r\n if (objA instanceof RegExp && objB instanceof RegExp)\r\n return objA.toString() === objB.toString()\r\n\r\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null)\r\n return false\r\n\r\n if (map.get(objA) === objB)\r\n return true\r\n\r\n map.set(objA, objB)\r\n\r\n const keysA = Reflect.ownKeys(objA)\r\n const keysB = Reflect.ownKeys(objB)\r\n\r\n if (keysA.length !== keysB.length)\r\n return false\r\n\r\n for (let i = 0; i < keysA.length; i++){\r\n if (!Reflect.has(objB, keysA[i]) || !isDeepEqual(objA[keysA[i]], objB[keysA[i]], map))\r\n return false\r\n }\r\n\r\n return true\r\n}\r\n\r\n\r\nexport const passwordValidator = ((control: FormControl): ValidationErrors => {\r\n if(control.value?.match(/^(.{0,7}|[^0-9]*|[^A-Z]*|[^a-z]*|[a-zA-Z0-9]*)$/))\r\n return { password: true }\r\n\r\n return null\r\n}) as ValidatorFn\r\n\r\nexport const samePasswordValidator = (ctrName: string): ValidatorFn => ((control: AbstractControl): ValidationErrors => {\r\n const otherControl = control.parent?.get(ctrName)\r\n\r\n if(otherControl?.value !== control?.value)\r\n return { differentPasswords: true }\r\n\r\n return null\r\n}) as ValidatorFn","import { Service } from \"@angular/core\"\r\nimport { BehaviorSubject } from \"rxjs\"\r\nimport { IContextMenu } from \"../interfaces\"\r\n\r\n@Service()\r\nexport class ContextMenuService {\r\n private contextMenu$ = new BehaviorSubject<IContextMenu>(null)\r\n\r\n public getContextMenu$ = () => this.contextMenu$.asObservable()\r\n\r\n public openContextMenu = (input: IContextMenu) => this.contextMenu$.next(input)\r\n}\r\n","import { formatDate } from \"@angular/common\"\r\nimport { HttpClient } from \"@angular/common/http\"\r\nimport { inject, Service } from \"@angular/core\"\r\nimport { BehaviorSubject, distinctUntilChanged, tap } from \"rxjs\"\r\nimport { ILanguage, LANGUAGE_TOKEN, TRANSLATE_STORAGE_KEY } from \"../interfaces\"\r\n\r\n@Service()\r\nexport class TranslateService {\r\n private lang$ = new BehaviorSubject<ILanguage>(null)\r\n private langContent: Record<string, string>\r\n private langs: ILanguage[]\r\n private httpClient = inject(HttpClient)\r\n private langConfig = inject(LANGUAGE_TOKEN)\r\n\r\n constructor() {\r\n if(!localStorage.getItem(TRANSLATE_STORAGE_KEY))\r\n localStorage.setItem(TRANSLATE_STORAGE_KEY, this.langConfig.defaultLanguage)\r\n \r\n const { langs } = this.langConfig,\r\n lang = localStorage.getItem(TRANSLATE_STORAGE_KEY) as string,\r\n foundLang = this.langConfig.langs.find(l => l.name === lang)\r\n\r\n this.langs = langs\r\n\r\n if(!foundLang)\r\n localStorage.removeItem(TRANSLATE_STORAGE_KEY)\r\n else\r\n this.lang$.next(foundLang)\r\n }\r\n\r\n public changeLanguage$ = (langName: string) => {\r\n const lang = this.langs.find(l => l.name === langName)\r\n\r\n if(lang)\r\n localStorage.setItem(TRANSLATE_STORAGE_KEY, langName)\r\n\r\n return this.load$(lang).pipe(\r\n tap(() => this.lang$.next(lang))\r\n )\r\n }\r\n\r\n public loadFromStorage$ = () => {\r\n const lang = localStorage.getItem(TRANSLATE_STORAGE_KEY)\r\n\r\n if(!lang)\r\n throw new Error(\"Language not set or not valid!!\")\r\n\r\n const foundLang = this.langs.find(l => l.name === lang)\r\n\r\n return this.load$(foundLang)\r\n }\r\n\r\n private load$ = ({ name, altFileName }: ILanguage) => this.httpClient.get<Record<string, string>>(`assets/langs/${altFileName || name}.json`).pipe(\r\n tap(content => this.langContent = content)\r\n )\r\n\r\n public translate = (key: string, params?: Record<string, string>): string => {\r\n const base = key.split(\".\").reduce((prev, curr) => prev?.[curr], this.langContent as any),\r\n ret = base || key\r\n\r\n if (params){\r\n return Object.keys(params).reduce(\r\n (curr, key) => curr.replace(`{${key}}`, params[key as keyof Object]),\r\n ret\r\n )\r\n }\r\n\r\n return ret\r\n }\r\n\r\n public getLang = () => this.lang$.getValue()\r\n\r\n public getLang$ = () => this.lang$.asObservable().pipe(distinctUntilChanged())\r\n\r\n private getLocale = () => this.getLang()?.locale || \"en-US\"\r\n\r\n public formatDate = (d: string) => formatDate(new Date(d), this.translate(\"dateFormat\"), this.getLocale())\r\n\r\n public formatDateTime = (d: string) => formatDate(new Date(d), this.translate(\"dateTimeFormat\"), this.getLocale())\r\n}\r\n","import { inject, Service } from \"@angular/core\"\r\nimport { BehaviorSubject, delay, filter } from \"rxjs\"\r\nimport { DialogComponentInput, DialogOutput, IDialogInput } from \"../interfaces\"\r\nimport { TranslateService } from \"./translate.service\"\r\n\r\n@Service()\r\nexport class DialogService{\r\n private dialog$ = new BehaviorSubject<(IDialogInput & { _dialogId: number })[]>([])\r\n private waiters: BehaviorSubject<DialogOutput>[] = []\r\n private ts = inject(TranslateService)\r\n\r\n private getLastWaiter = () => this.waiters[this.waiters.length - 1]\r\n\r\n public getDialog = () => this.dialog$.getValue()\r\n\r\n public getDialog$ = () => this.dialog$.asObservable()\r\n\r\n public openDialog = (input: IDialogInput) => {\r\n const newWaiter$ = new BehaviorSubject<DialogOutput>(null)\r\n this.waiters.push(newWaiter$)\r\n this.dialog$.next(this.dialog$.getValue().concat({\r\n ...input,\r\n _dialogId: new Date().getTime()\r\n }))\r\n\r\n return this.getLastWaiter().pipe(\r\n filter(d => d != null),\r\n delay(0)\r\n )\r\n }\r\n\r\n public openDialogComponent = (component: DialogComponentInput) => this.openDialog({\r\n message: null,\r\n component\r\n })\r\n\r\n public showLoading = (message?: string) => this.openDialog({\r\n type: \"loading\",\r\n message: message || this.ts.translate(\"loading\")\r\n })\r\n\r\n public close = () => {\r\n const v = this.dialog$.getValue()\r\n this.dialog$.next(v.slice(0, v.length - 1))\r\n this.getLastWaiter()?.complete()\r\n this.waiters = this.waiters.slice(0, this.waiters.length - 1)\r\n }\r\n\r\n public action = (action: DialogOutput) => this.getLastWaiter()?.next(action)\r\n}\r\n","import { inject, Service } from \"@angular/core\"\r\nimport { catchError, delay, filter, mergeMap, Observable, ObservableInput, of, tap, throwError } from \"rxjs\"\r\nimport { DialogActionType, DialogComponentInput, IDialogInput } from \"../interfaces\"\r\nimport { DialogService } from \"./dialog.service\"\r\nimport { TranslateService } from \"./translate.service\"\r\n\r\n@Service()\r\nexport class DialogUtilsService{\r\n private dialogService = inject(DialogService)\r\n private translateService = inject(TranslateService)\r\n\r\n public showLoading$ = <T, T2>(obs: (res: T2) => Observable<T>, message?: string) => mergeMap<T2, ObservableInput<T>>(res => of(res).pipe(\r\n delay(0),\r\n tap(() => this.dialogService.showLoading(message).subscribe()),\r\n mergeMap(res => obs(res)),\r\n catchError(err => {\r\n this.closeLatestDialog()\r\n return throwError(() => err)\r\n })\r\n ))\r\n\r\n public hideLoading = () => this.closeLatestDialog()\r\n\r\n public closeLatestDialog = () => this.dialogService.close()\r\n\r\n public closeWithAction = <T>(data: T) => {\r\n this.dialogService.action({ type: DialogActionType.OK, data })\r\n this.closeLatestDialog()\r\n }\r\n\r\n public openDialogComponent = (component: DialogComponentInput) => this.dialogService.openDialogComponent(component)\r\n\r\n public openDialog = (input: IDialogInput) => this.dialogService.openDialog(input)\r\n\r\n public askConfirmAndLoad = <T>(\r\n input: Pick<IDialogInput, \"title\" | \"message\" | \"hideCloseX\" | \"width\">,\r\n obs: (resp: DialogActionType) => Observable<T>,\r\n getDialogResp = false\r\n ) => this.dialogService.openDialog({\r\n title: this.translateService.translate(input.title),\r\n message: this.translateService.translate(input.message),\r\n type: \"confirm\",\r\n hideCloseX: input.hideCloseX,\r\n width: input.width\r\n }).pipe(\r\n filter(res => res.type === DialogActionType.OK || getDialogResp),\r\n this.showLoading$(res => obs(res.type)),\r\n tap(() => this.hideLoading())\r\n )\r\n}","import { Service } from \"@angular/core\"\r\nimport { BehaviorSubject } from \"rxjs\"\r\nimport { INotificationInput } from \"../interfaces\"\r\n\r\n@Service()\r\nexport class NotificationService {\r\n private notification$ = new BehaviorSubject<INotificationInput>(null)\r\n private history$ = new BehaviorSubject<Array<INotificationInput & { date: Date }>>([])\r\n\r\n public getNotification$ = () => this.notification$.asObservable()\r\n\r\n public show = (input: INotificationInput) => {\r\n this.notification$.next(input)\r\n this.history$.next(this.history$.getValue().concat({ ...input, date: new Date() }))\r\n }\r\n\r\n public hide = () => this.notification$.next(null)\r\n\r\n public getHistory$ = () => this.history$.asObservable()\r\n}\r\n","import { Service } from \"@angular/core\"\r\nimport { BehaviorSubject } from \"rxjs\"\r\nimport { IPopover } from \"../interfaces\"\r\n\r\n@Service()\r\nexport class PopoverService {\r\n private popover$ = new BehaviorSubject<IPopover>(null)\r\n\r\n public getPopover$ = () => this.popover$.asObservable()\r\n\r\n public getPopover = () => this.popover$.getValue()\r\n\r\n public showPopover = (input: IPopover) => this.popover$.next(input)\r\n\r\n public hide = () => this.popover$.next(null)\r\n}","import { inject, Service } from \"@angular/core\"\r\nimport { ActivatedRouteSnapshot, CanActivate } from \"@angular/router\"\r\nimport { catchError, mergeMap, of } from \"rxjs\"\r\nimport { ROUTE_CHECK_SERVICE } from \"../interfaces\"\r\nimport { StoreService } from \"./\"\r\n\r\n@Service()\r\nexport class RouteCheckService implements CanActivate{\r\n private storeService = inject(StoreService)\r\n private routeService = inject(ROUTE_CHECK_SERVICE)\r\n\r\n public canActivate({ routeConfig }: ActivatedRouteSnapshot) {\r\n if(!this.storeService.isInitialized())\r\n return false\r\n\r\n return this.routeService.load$().pipe(\r\n catchError(() => of(null)),\r\n mergeMap(() => this.routeService.checkRoute(routeConfig.path))\r\n )\r\n }\r\n}","import { Service, signal } from \"@angular/core\"\r\nimport { BehaviorSubject, filter, fromEvent, tap, zip } from \"rxjs\"\r\n// ! Importante che venga importato con percorso preciso\r\nimport { Subscriptable } from \"../classes/subscriptable\"\r\nimport { IStore } from \"../interfaces\"\r\n\r\n@Service()\r\nexport class StoreService extends Subscriptable {\r\n private appInitialized = signal(false)\r\n\r\n constructor(){\r\n super()\r\n\r\n this.addSubscription(zip([\r\n fromEvent<KeyboardEvent>(window, \"keydown\").pipe(\r\n filter(e => !this.isPressingCtrl() && e.ctrlKey),\r\n tap(() => this.setCtrlKey(true))\r\n ),\r\n fromEvent<KeyboardEvent>(window, \"keyup\").pipe(\r\n filter(e => this.isPressingCtrl() && e.key === \"Control\"),\r\n tap(() => this.setCtrlKey(false))\r\n ),\r\n fromEvent<KeyboardEvent>(window, \"blur\").pipe(\r\n filter(() => this.isPressingCtrl()),\r\n tap(() => this.setCtrlKey(false))\r\n )\r\n ]).subscribe())\r\n }\r\n\r\n private store$ = new BehaviorSubject<IStore>({\r\n lists: {},\r\n entities: {},\r\n pressingCtrl: false\r\n })\r\n\r\n public addList = (key: string, list: Array<any>) => this.store$.next({\r\n ...this.store$.getValue(),\r\n lists: {\r\n ...this.store$.getValue().lists,\r\n [key]: list\r\n }\r\n })\r\n\r\n public getList = <T>(key: string) => this.store$.getValue().lists[key] as T\r\n\r\n public addEntity = (key: string, entity: any) => this.store$.next({\r\n ...this.store$.getValue(),\r\n entities: {\r\n ...this.store$.getValue().entities,\r\n [key]: entity\r\n }\r\n })\r\n\r\n public getEntity = <T>(key: string) => this.store$.getValue().entities[key] as T\r\n\r\n public setCtrlKey = (pressingCtrl: boolean) => this.store$.next({\r\n ...this.store$.getValue(),\r\n pressingCtrl\r\n })\r\n\r\n public isPressingCtrl = () => this.store$.getValue().pressingCtrl\r\n\r\n public isInitialized = () => this.appInitialized()\r\n\r\n public initialize = () => this.appInitialized.set(true)\r\n}\r\n","import { Service } from \"@angular/core\"\r\nimport { BehaviorSubject } from \"rxjs\"\r\nimport { ITooltip } from \"../interfaces\"\r\n\r\n@Service()\r\nexport class TooltipService {\r\n private tooltip$ = new BehaviorSubject<ITooltip>(null)\r\n\r\n public showTooltip = (input: ITooltip) => this.tooltip$.next(input)\r\n \r\n public getTooltip$ = () => this.tooltip$.asObservable()\r\n \r\n public getTooltip = () => this.tooltip$.getValue()\r\n\r\n public hide = () => this.tooltip$.next(null)\r\n}\r\n","import { Directive, ElementRef, inject, Input } from \"@angular/core\"\r\nimport { filter, fromEvent } from \"rxjs\"\r\nimport { Subscriptable } from \"../classes/subscriptable\"\r\nimport { ITooltip, TooltipDirection } from \"../interfaces\"\r\nimport { TooltipService } from \"../services\"\r\n\r\n@Directive({\r\n selector: \"[dolfoTooltip]\",\r\n standalone: false\r\n})\r\nexport class TooltipDirective extends Subscriptable implements Omit<ITooltip, \"elementRef\">{\r\n @Input({ required: true, alias: \"dolfoTooltip\" }) content: string\r\n @Input() direction: TooltipDirection = \"top\"\r\n private el = inject(ElementRef<HTMLElement>)\r\n private ts = inject(TooltipService)\r\n\r\n constructor() {\r\n super()\r\n\r\n this.addSubscription(fromEvent(this.el.nativeElement, \"mousedown\").pipe(\r\n filter(() => !!this.ts.getTooltip())\r\n ).subscribe(() => this.ts.hide()))\r\n\r\n this.addSubscription(\r\n fromEvent(this.el.nativeElement, \"mouseenter\").pipe(\r\n filter(() => !!this.content)\r\n ).subscribe(() => this.ts.showTooltip({\r\n content: this.content,\r\n elementRef: this.el,\r\n direction: this.direction\r\n }))\r\n )\r\n }\r\n}\r\n","import { inject, Pipe, PipeTransform } from \"@angular/core\"\r\nimport { TranslateService } from \"../services\"\r\n\r\n@Pipe({\r\n name: \"translate\",\r\n standalone: true,\r\n pure: false\r\n})\r\nexport class TranslatePipe implements PipeTransform {\r\n private ts = inject(TranslateService)\r\n\r\n transform = (value: string, args?: Record<string, string>) => this.ts.translate(value, args)\r\n}\r\n","import { DecimalPipe } from \"@angular/common\"\r\nimport { Component, ElementRef, inject } from \"@angular/core\"\r\nimport { ValidationErrors } from \"@angular/forms\"\r\nimport { BehaviorSubject, distinctUntilChanged, map, Observable } from \"rxjs\"\r\nimport { isDeepEqual } from \"../../shared/interfaces\"\r\nimport { TranslateService } from \"../../shared/services\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n selector: \"dolfo-input-container\",\r\n template: `<div class=\"input-container\" [class.error]=\"decodedError$ | async\">\r\n @if(input.label){\r\n <label>\r\n {{ input.label }}\r\n @if(input.isRequired){\r\n <span [dolfoTooltip]=\"'form.required' | translate\">*</span>\r\n }\r\n </label>\r\n }\r\n\r\n <ng-content></ng-content>\r\n\r\n @let error = decodedError$ | async;\r\n\r\n @if(error){\r\n <div class=\"input-errors\">\r\n {{ error[0] | translate: error[1] }}\r\n </div>\r\n }\r\n </div>`,\r\n providers: [DecimalPipe],\r\n standalone: false\r\n})\r\nexport class InputContainerComponent{\r\n public errors$ = new BehaviorSubject<ValidationErrors>(null)\r\n public decodedError$: Observable<[string, Record<string, string>?]> = this.errors$.pipe(\r\n distinctUntilChanged((a, b) => isDeepEqual(a, b)),\r\n map(val => {\r\n if(val){\r\n if(val.required)\r\n return [\"form.requiredError\"]\r\n if(val.email)\r\n return [\"form.invalidEmail\"]\r\n if(val.maxlength)\r\n return [`form.maxChars`, { length: val.maxlength.requiredLength }]\r\n if(val.minlength)\r\n return [`form.minChars`, { length: val.minlength.requiredLength }]\r\n if(val.password)\r\n return [\"form.invalidPassword\"]\r\n if(val.max)\r\n return [\"form.maxValue\", { value: this.cp.transform(val.max.max, null, this.translateService.getLang().name) }]\r\n\r\n return [\"form.error.\" + Object.keys(val)[0], val[Object.keys(val)[0]]]\r\n }\r\n \r\n return null\r\n })\r\n )\r\n public input = inject(BaseFormInput)\r\n private elRef = inject(ElementRef<HTMLElement>)\r\n private translateService = inject(TranslateService)\r\n private cp = inject(DecimalPipe)\r\n\r\n public focus = () => {\r\n const input = this.elRef.nativeElement.querySelector(\"input\")\r\n\r\n if(input)\r\n input.focus()\r\n }\r\n}\r\n","import { AfterViewInit, Directive, EventEmitter, inject, Input, OnInit, Output, ViewChild } from \"@angular/core\"\r\nimport { AbstractControl, ControlContainer, ControlValueAccessor, FormControl, ValidationErrors, Validator, Validators } from \"@angular/forms\"\r\nimport { filter } from \"rxjs\"\r\nimport { Subscriptable } from \"../../shared/classes/subscriptable\"\r\nimport { isDeepEqual } from \"../../shared/interfaces\"\r\nimport { InputContainerComponent } from \"./input-container.component\"\r\n\r\n@Directive()\r\nexport abstract class BaseFormInput<T> extends Subscriptable implements ControlValueAccessor, Validator, AfterViewInit, OnInit {\r\n @ViewChild(InputContainerComponent) public container: InputContainerComponent\r\n @Input({ required: true }) formControlName: string\r\n @Input() label: string\r\n @Output() onChange: EventEmitter<T> = new EventEmitter<T>()\r\n\r\n protected changeInternal: (obj: T) => void\r\n private cc = inject(ControlContainer)\r\n \r\n public input = new FormControl<T>(null)\r\n \r\n protected control: AbstractControl\r\n\r\n ngOnInit(){\r\n this.control = this.cc.control.get(this.formControlName)\r\n\r\n const initialValue = this.control.value\r\n\r\n this.addSubscription(this.input.valueChanges.pipe(\r\n filter(v => !this.control.touched && !isDeepEqual(initialValue, v) && this.input.dirty)\r\n ).subscribe(() => this.control.markAsTouched()))\r\n\r\n this.addSubscription(this.control.statusChanges.pipe(\r\n filter(s => (s === \"VALID\" || s === \"INVALID\") && this.control.touched && !!this.container)\r\n ).subscribe(() => this.container.errors$.next(this.control.errors)))\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.addSubscription(this.input.valueChanges.pipe(\r\n filter(() => !this.input.disabled)\r\n ).subscribe(v => {\r\n this.onChange.emit(v)\r\n this.changeInternal(v)\r\n }))\r\n }\r\n\r\n writeValue(obj: T){\r\n this.input.setValue(obj)\r\n }\r\n\r\n registerOnChange = (fn: (obj: T) => void) => this.changeInternal = fn\r\n\r\n registerOnTouched = (_fn: (obj: any) => void) => {}\r\n\r\n setDisabledState = (isDisabled: boolean) => {\r\n if(isDisabled)\r\n setTimeout(() => this.input.disable())\r\n else\r\n this.input.enable()\r\n }\r\n\r\n validate = (_control: AbstractControl): ValidationErrors => null\r\n\r\n public get isRequired(){\r\n return this.control.hasValidator(Validators.required)\r\n }\r\n}\r\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, forwardRef, Input, Output, signal, TemplateRef, ViewChild } from \"@angular/core\"\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\"\r\nimport { delay, filter, fromEvent, map, mergeMap, tap } from \"rxjs\"\r\nimport { AutocompleteConfig, ComboOption } from \"../../shared/interfaces\"\r\nimport { OnBlur, OnFocus } from \"../../shared/interfaces/events\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n selector: \"dolfo-autocomplete\",\r\n template: `<dolfo-input-container>\r\n <div class=\"combobox autocomplete\" [class.opened]=\"opened()\" #autocomplete>\r\n <div class=\"combobox-label\">\r\n <input #autocompleteInput type=\"text\" [value]=\"currentOption()\" (focus)=\"focus($event)\" (blur)=\"onBlur.emit($event)\" />\r\n </div>\r\n\r\n <div class=\"combobox-options\" [class.opened]=\"opened()\">\r\n @if(loading()){\r\n <div class=\"loading\">\r\n {{ 'autocomplete.loading' | translate }}\r\n </div>\r\n }\r\n @if(options().length === 0 && !loading()){\r\n <div class=\"no-results\">\r\n {{ 'autocomplete.noResults' | translate }}\r\n </div>\r\n }\r\n\r\n @for(opt of options(); track opt.value; let idx = $index){\r\n <div class=\"combobox-option\" [class.selected]=\"isSelected(opt)\" [class.focused]=\"currentFocus() === idx\" (click)=\"$event.stopPropagation(); setOption(opt)\">\r\n @if(resultTemplate){\r\n <ng-container [ngTemplateOutlet]=\"resultTemplate\" [ngTemplateOutletContext]=\"{ item: opt }\"></ng-container>\r\n }@else {\r\n <span>{{ opt.label }}</span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </dolfo-input-container>`,\r\n standalone: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => AutocompleteComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => AutocompleteComponent), multi: true },\r\n { provide: BaseFormInput, useExisting: AutocompleteComponent }\r\n ]\r\n})\r\nexport class AutocompleteComponent extends BaseFormInput<any> implements AfterViewInit, OnFocus, OnBlur{\r\n @ViewChild(\"autocomplete\") private autocomplete: ElementRef<HTMLDivElement>\r\n @ViewChild(\"autocompleteInput\") private autocompleteInput: ElementRef<HTMLInputElement>\r\n @Input({ required: true }) config: AutocompleteConfig<any>\r\n @Input() minChars = 3\r\n @Input() resultTemplate: TemplateRef<any>\r\n @Output() onFocus = new EventEmitter<FocusEvent>()\r\n @Output() onBlur = new EventEmitter<FocusEvent>()\r\n\r\n public options = signal<ComboOption[]>([])\r\n public opened = signal(false)\r\n public currentOption = signal(\"\")\r\n public currentOptionLabel = signal(\"\")\r\n public loading = signal(false)\r\n public currentFocus = signal<number>(null)\r\n private keyDown = false\r\n private keyDownTimeout: ReturnType<typeof setTimeout>\r\n\r\n constructor(){\r\n super()\r\n\r\n this.addSubscription(fromEvent(window, \"click\").pipe(\r\n filter(() => !!this.autocomplete && !this.input.disabled),\r\n map(ev => ev.target as HTMLElement),\r\n map(target => !this.autocomplete.nativeElement.contains(target) && !target.isEqualNode(this.autocomplete.nativeElement))\r\n ).subscribe(condition => {\r\n if(condition && this.opened()){\r\n this.currentFocus.set(null)\r\n this.opened.set(false)\r\n }else if(!this.opened() && !condition)\r\n this.opened.set(true)\r\n }))\r\n\r\n this.addSubscription(this.input.valueChanges.pipe(\r\n filter(v => v != null && !!this.autocompleteInput && (this.autocompleteInput.nativeElement.value !== this.currentOptionLabel() || !this.currentOptionLabel()))\r\n ).subscribe(value => this.setOption({ value, label: this.config.getLabel(value) }, true)))\r\n\r\n this.addSubscription(this.input.valueChanges.pipe(\r\n filter(v => v == null && !!this.autocompleteInput && this.autocompleteInput.nativeElement.value != null && this.autocompleteInput.nativeElement.value !== \"\")\r\n ).subscribe(() => this.setOption(null, true)))\r\n\r\n this.addSubscription(this.input.statusChanges.pipe(\r\n filter(() => !!this.autocompleteInput)\r\n ).subscribe(() => this.autocompleteInput.nativeElement.disabled = this.input.disabled))\r\n }\r\n\r\n override ngAfterViewInit() {\r\n super.ngAfterViewInit()\r\n\r\n this.addSubscription(fromEvent(this.autocompleteInput.nativeElement, \"input\").pipe(\r\n map(ev => (ev.target as HTMLInputElement).value),\r\n tap(value => {\r\n if(!value){\r\n this.input.setValue(null)\r\n this.onChange.emit(null)\r\n this.options.set([])\r\n }\r\n }),\r\n delay(1000),\r\n filter(value => !this.keyDown && value.length >= this.minChars),\r\n tap(() => {\r\n this.options.set([])\r\n this.opened.set(true)\r\n this.loading.set(true)\r\n }),\r\n mergeMap(value => this.config.search$(value)),\r\n map(results => results.map(value => ({\r\n value,\r\n label: this.config.getLabel(value)\r\n })))\r\n ).subscribe(results => {\r\n this.loading.set(false)\r\n this.options.set(results)\r\n this.currentFocus.set(null)\r\n }))\r\n\r\n this.addSubscription(fromEvent<KeyboardEvent>(this.autocompleteInput.nativeElement, \"keydown\").subscribe(e => {\r\n if(e.key.length === 1){\r\n this.keyDown = true\r\n clearTimeout(this.keyDownTimeout)\r\n this.keyDownTimeout = setTimeout(() => this.keyDown = false, 1000)\r\n }else if(this.opened()){\r\n if(e.key === \"ArrowDown\"){\r\n e.preventDefault()\r\n this.currentFocus.update(v => v === this.options().length - 1 ? 0 : v === null ? 0 : v + 1)\r\n }else if(e.key === \"ArrowUp\"){\r\n e.preventDefault()\r\n this.currentFocus.update(v => v === 0 ? this.options().length - 1 : v === null ? 0 : v - 1)\r\n }else if(e.key === \"Enter\" && this.currentFocus() >= 0 && this.currentFocus() != null){\r\n e.preventDefault()\r\n this.setOption(this.options()[this.currentFocus()])\r\n }else if(e.key === \"Tab\"){\r\n this.currentFocus.set(null)\r\n this.opened.set(false)\r\n }\r\n }\r\n }))\r\n }\r\n\r\n\tpublic focus = (e: FocusEvent) => {\r\n\t\tif(this.input.disabled)\r\n\t\t\treturn\r\n\t\t\r\n\t\tthis.opened.set(true)\r\n\t\tthis.onFocus.emit(e)\r\n\t}\r\n\r\n\tpublic isSelected = (opt: ComboOption) => this.input.value === opt.value\r\n\r\n public setOption = (opt: ComboOption, noEmit = false) => {\r\n this.autocompleteInput.nativeElement.value = opt?.label ?? \"\"\r\n this.currentOptionLabel.set(opt?.label)\r\n this.input.setValue(opt?.value)\r\n this.opened.set(false)\r\n\r\n if(!noEmit)\r\n\t\t this.onChange.emit(this.input.value)\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, inject, Input } from \"@angular/core\"\r\nimport { ICON_COMPONENT, IconName } from \"../../shared/interfaces\"\r\n\r\n@Component({\r\n selector: \"dolfo-icon\",\r\n standalone: false,\r\n template: `<ng-container [ngComponentOutlet]=\"iconComponent\" [ngComponentOutletInputs]=\"{ name }\"></ng-container>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class IconWrapperComponent {\r\n @Input({ required: true }) name: IconName | string\r\n\r\n public iconComponent = inject(ICON_COMPONENT)\r\n}\r\n","import { AfterViewInit, booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, inject, Input, OnChanges, Output, signal, SimpleChanges, ViewChild } from \"@angular/core\"\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\"\r\nimport { filter, fromEvent, map } from \"rxjs\"\r\nimport { ComboInput, ComboOption, isDeepEqual } from \"../../shared/interfaces\"\r\nimport { OnBlur, OnFocus } from \"../../shared/interfaces/events\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n selector: \"dolfo-combobox\",\r\n template: `<dolfo-input-container>\r\n\t\t<div class=\"combobox\" [class.opened]=\"opened()\" #combo tabindex=\"0\" (focus)=\"focus($event)\" (blur)=\"onBlur.emit($event); opened.set(false)\" [class.disabled]=\"input.disabled\">\r\n\t\t\t<div class=\"combobox-label\">\r\n @if(hasValue && !input.disabled){\r\n <dolfo-icon [dolfoTooltip]=\"'form.resetValue' | translate\" name=\"cross\" (click)=\"input.setValue(null); $event.stopPropagation()\"></dolfo-icon>\r\n }@else {\r\n <dolfo-icon name=\"circle-down\" class=\"combo-icon\"></dolfo-icon>\r\n }\r\n\t\t\t\t<span>{{ comboLabel() | translate }}</span>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"combobox-options\" [class.opened]=\"opened()\">\r\n\t\t\t\t@for(opt of options; track opt.value; let idx = $index){\r\n\t\t\t\t\t<div class=\"combobox-option\" [class.selected]=\"isSelected(opt)\" [class.focused]=\"currentFocus() === idx\" (click)=\"$event.stopPropagation(); setOption(opt)\">\r\n\t\t\t\t\t\t<span>{{ opt.label }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\r\n <input type=\"hidden\" [formControl]=\"input\" />\r\n\t\t</div>\r\n\t</dolfo-input-container>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ComboboxComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => ComboboxComponent), multi: true },\r\n { provide: BaseFormInput, useExisting: ComboboxComponent }\r\n ],\r\n standalone: false\r\n})\r\nexport class ComboboxComponent extends BaseFormInput<any | any[]> implements AfterViewInit, Required<ComboInput>, OnBlur, OnFocus, OnChanges{\r\n\t@ViewChild(\"combo\") private combo: ElementRef<HTMLDivElement>\r\n\t@Input({ required: true }) options: ComboOption[]\r\n\t@Input() placeHolder: string\r\n\t@Input({ transform: booleanAttribute }) multiple = false\r\n\t@Output() onFocus = new EventEmitter<FocusEvent>()\r\n\t@Output() onBlur = new EventEmitter<FocusEvent>()\r\n\r\n private cdr = inject(ChangeDetectorRef)\r\n\r\n\tpublic opened = signal(false)\r\n public currentFocus = signal<number>(null)\r\n public comboLabel = signal(\"\")\r\n\r\n\tconstructor(){\r\n\t\tsuper()\r\n\r\n\t\tthis.addSubscription(fromEvent(window, \"click\").pipe(\r\n filter(() => !!this.combo && !this.input.disabled),\r\n\t\t\tmap(ev => ev.target as HTMLElement),\r\n\t\t\tmap(target => !this.combo.nativeElement.contains(target) && !target.isEqualNode(this.combo.nativeElement))\r\n\t\t).subscribe(condition => {\r\n\t\t\tif(condition && this.opened())\r\n\t\t\t\tthis.opened.set(false)\r\n\t\t\telse if(!this.opened() && !condition)\r\n\t\t\t\tthis.opened.set(true)\r\n\t\t}))\r\n\r\n this.addSubscription(this.input.valueChanges.subscribe(value => this.comboLabel.set(this.extractLabel(value))))\r\n\t}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if(changes.options && !isDeepEqual(changes.options.previousValue, changes.options.currentValue))\r\n this.input.setValue(null)\r\n }\r\n\r\n\toverride ngAfterViewInit() {\r\n\t\tsuper.ngAfterViewInit()\r\n\r\n\t\tthis.addSubscription(fromEvent<KeyboardEvent>(this.combo.nativeElement, \"keydown\").subscribe(e => {\r\n if(this.opened()){\r\n if(e.key === \"ArrowDown\"){\r\n e.preventDefault()\r\n this.currentFocus.update(v => v === this.options.length - 1 ? 0 : v === null ? 0 : v + 1)\r\n }else if(e.key === \"ArrowUp\"){\r\n e.preventDefault()\r\n this.currentFocus.update(v => v === 0 ? this.options.length - 1 : v === null ? 0 : v - 1)\r\n }else if(e.key === \"Enter\" && this.currentFocus() >= 0 && this.currentFocus() != null){\r\n e.preventDefault()\r\n this.setOption(this.options[this.currentFocus()])\r\n\r\n\t\t\t\t\tif(!this.multiple)\r\n\t\t\t\t\t\tthis.opened.set(false)\r\n\r\n\t\t\t\t\tthis.cdr.detectChanges()\r\n }else if(e.key === \"Tab\"){\r\n this.currentFocus.set(null)\r\n this.opened.set(false)\r\n }\r\n }\r\n }))\r\n\t}\r\n\r\n\tprivate extractLabel = (value: any | any[]) => {\r\n\t\tif(value == null || (value as number[])?.length === 0)\r\n\t\t\treturn this.placeHolder || \" \"\r\n\r\n\t\tif(!this.multiple)\r\n\t\t\treturn this.options.find(opt => isDeepEqual(opt.value, value))?.label\r\n\r\n\t\treturn this.options.filter(opt => (value as number[]).some(o => isDeepEqual(opt.value, o))).map(opt => opt.label).join(\", \")\r\n\t}\r\n\r\n\tpublic focus = (e: FocusEvent) => {\r\n\t\tif(this.input.disabled)\r\n\t\t\treturn\r\n\t\t\r\n\t\tthis.opened.set(true)\r\n\t\tthis.onFocus.emit(e)\r\n\t}\r\n\r\n\tpublic setOption = (opt: ComboOption) => {\r\n\t\tconst { value } = this.input\r\n\r\n\t\tif(!this.multiple){\r\n\t\t\tif(isDeepEqual(value, opt.value))\r\n\t\t\t\tthis.input.setValue(null)\r\n\t\t\telse\r\n\t\t\t\tthis.input.setValue(opt.value)\r\n\r\n this.opened.set(false)\r\n\t\t}else{\r\n\t\t\tconst castValue = value as Array<any>\r\n\r\n\t\t\tif(castValue.some(o => isDeepEqual(opt.value, o)))\r\n\t\t\t\tthis.input.setValue(castValue.filter(v => isDeepEqual(opt.value, v)))\r\n\t\t\telse\r\n\t\t\t\tthis.input.setValue(castValue.concat(opt.value))\r\n\t\t}\r\n\r\n\t\tthis.onChange.emit(this.input.value)\r\n\t}\r\n\r\n\tpublic isSelected = (opt: ComboOption) => {\r\n\t\tconst { value } = this.input\r\n\r\n\t\tif(!this.multiple)\r\n\t\t\treturn isDeepEqual(value, opt.value)\r\n\r\n\t\treturn (value as Array<any>).some(o => isDeepEqual(opt.value, o))\r\n\t}\r\n\r\n public get hasValue(){\r\n return this.multiple ? this.input.value != null && this.input.value.length > 0 : this.input.value != null\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, forwardRef, Input, Output, ViewChild } from \"@angular/core\"\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\"\r\nimport { OnBlur, OnFocus } from \"../../shared/interfaces/events\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n\tselector: \"dolfo-datepicker\",\r\n\ttemplate: `<dolfo-input-container>\r\n\t\t<input #formInput [type]=\"type === 'datetime' ? 'datetime-local' : type\" [formControl]=\"input\" (focus)=\"openPicker(); onFocus.emit($event)\" (blur)=\"onBlur.emit($event)\" />\r\n\t</dolfo-input-container>`,\r\n\tstandalone: false,\r\n\tproviders: [\r\n\t\t{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DatepickerComponent), multi: true },\r\n\t\t{ provide: NG_VALIDATORS, useExisting: forwardRef(() => DatepickerComponent), multi: true },\r\n\t\t{ provide: BaseFormInput, useExisting: DatepickerComponent }\r\n\t],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DatepickerComponent extends BaseFormInput<Date> implements OnFocus, OnBlur{\r\n @ViewChild(\"formInput\") private formInput: ElementRef<HTMLInputElement>\r\n @Input() type: \"date\" | \"datetime\" | \"time\" = \"date\"\r\n\t@Output() onFocus = new EventEmitter<FocusEvent>()\r\n\t@Output() onBlur = new EventEmitter<FocusEvent>()\r\n\r\n public openPicker = () => this.formInput.nativeElement.showPicker()\r\n}\r\n","import { booleanAttribute, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, forwardRef, Input, Output, signal, ViewChild } from \"@angular/core\"\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\"\r\nimport { OnBlur, OnFocus } from \"../../shared/interfaces/events\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n\tselector: \"dolfo-file-select\",\r\n\ttemplate: `<dolfo-input-container>\r\n\t\t<input #formInput type=\"file\" (change)=\"changeFiles($event)\" [multiple]=\"multiple\" [accept]=\"accept\" (focus)=\"onFocus.emit($event)\" (blur)=\"onBlur.emit($event)\" [disabled]=\"input.disabled\" (dragover)=\"setDragging()\" (dragleave)=\"dragging.set(false)\" (drop)=\"onDrop($event)\" [class.dragging]=\"dragging()\" />\r\n\t</dolfo-input-container>`,\r\n\tstandalone: false,\r\n\tproviders: [\r\n\t\t{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => FileSelectComponent), multi: true },\r\n\t\t{ provide: NG_VALIDATORS, useExisting: forwardRef(() => FileSelectComponent), multi: true },\r\n\t\t{ provide: BaseFormInput, useExisting: FileSelectComponent }\r\n\t],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class FileSelectComponent extends BaseFormInput<FileList> implements OnFocus, OnBlur{\r\n @ViewChild(\"formInput\") private formInput: ElementRef<HTMLInputElement>\r\n\t@Output() onFocus = new EventEmitter<FocusEvent>()\r\n\t@Output() onBlur = new EventEmitter<FocusEvent>()\r\n @Input({ transform: booleanAttribute }) multiple = false\r\n @Input() accept: string\r\n\r\n public dragging = signal(false)\r\n\r\n public changeFiles = (e: Event) => {\r\n if(!this.input.disabled)\r\n this.control.setValue((e.target as HTMLInputElement).files)\r\n }\r\n\r\n override writeValue = (obj: FileList) => {\r\n super.writeValue(obj)\r\n \r\n if(this.formInput)\r\n this.formInput.nativeElement.value = null\r\n }\r\n\r\n public setDragging = () => {\r\n if(!this.input.disabled)\r\n this.dragging.set(true)\r\n }\r\n\r\n public onDrop = (event: DragEvent) => {\r\n event.preventDefault()\r\n event.stopPropagation()\r\n\r\n if(this.input.disabled)\r\n return\r\n\r\n const rawFiles = event.dataTransfer?.files\r\n\r\n if (!rawFiles || rawFiles.length === 0)\r\n return\r\n\r\n const validFiles = Array.from(rawFiles).filter(f => this.isValidFile(f))\r\n\r\n if (validFiles.length > 0)\r\n this.control.setValue(validFiles)\r\n\r\n this.dragging.set(false)\r\n }\r\n\r\n public isValidFile = (file: File) => {\r\n if(!this.accept)\r\n return true\r\n\r\n const allowedExtensions = this.accept.split(\",\").map(ext => ext.trim().toLowerCase()),\r\n fileName = file.name.toLowerCase()\r\n \r\n return allowedExtensions.some(ext => {\r\n if (ext.startsWith(\".\"))\r\n return fileName.endsWith(ext)\r\n\r\n if (ext.includes(\"/\")) {\r\n if (ext.endsWith(\"/*\")) {\r\n const mainType = ext.split(\"/\")[0]\r\n return file.type.startsWith(mainType + \"/\")\r\n }\r\n\r\n return file.type === ext\r\n }\r\n\r\n return file.type === this.accept\r\n })\r\n }\r\n}\r\n","import { booleanAttribute, ChangeDetectionStrategy, Component, Input } from \"@angular/core\"\r\nimport { FormGroup } from \"@angular/forms\"\r\n\r\n@Component({\r\n selector: \"dolfo-form\",\r\n template: `<form [formGroup]=\"formGroup\">\r\n <ng-content></ng-content>\r\n\r\n @if(hiddenSubmit){\r\n <button type=\"submit\" [ngStyle]=\"{ display: 'none' }\"></button>\r\n }\r\n </form>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class FormComponent{\r\n @Input({ required: true }) formGroup: FormGroup\r\n @Input({ transform:booleanAttribute }) hiddenSubmit: boolean\r\n}\r\n","import { AfterViewInit, Directive, inject, Injector, OnInit, signal, ViewContainerRef } from \"@angular/core\"\r\nimport { Router } from \"@angular/router\"\r\nimport { concatAll, from, Observable, tap } from \"rxjs\"\r\nimport { StoreService } from \"../services\"\r\nimport { OverlayManager, Subscriptable } from \"./\"\r\n\r\n@Directive()\r\nexport abstract class BaseAppComponent extends Subscriptable implements OnInit, AfterViewInit{\r\n protected abstract container: ViewContainerRef\r\n\r\n protected abstract readonly streams: Observable<string>[]\r\n\r\n protected injector = inject(Injector)\r\n protected router = inject(Router)\r\n protected storeService = inject(StoreService)\r\n\r\n private loading = signal(0)\r\n public loadingMessage = signal(\"...\")\r\n\r\n ngOnInit(){\r\n from(Object.values(this.streams)).pipe(\r\n concatAll(),\r\n tap(desc => {\r\n this.loading.update(item => item + 1)\r\n this.loadingMessage.set(desc + \"...\")\r\n })\r\n ).subscribe(() => {\r\n if(this.loading() === Object.keys(this.streams).length){\r\n setTimeout(() => {\r\n this.loadingMessage.set(null)\r\n this.storeService.initialize()\r\n this.router.initialNavigation()\r\n }, 500)\r\n }\r\n })\r\n }\r\n\r\n ngAfterViewInit(){\r\n new OverlayManager(this.injector, this.container).init().forEach(s => this.addSubscription(s))\r\n }\r\n\r\n public get percentage(){\r\n return (this.loading() * 100) / Object.keys(this.streams).length\r\n }\r\n}","import { AfterViewChecked, AfterViewInit, ChangeDetectorRef, Directive, inject, OnDestroy, QueryList, ViewChild, ViewChildren } from \"@angular/core\"\r\nimport { FormArray, FormGroup, FormGroupDirective } from \"@angular/forms\"\r\nimport { BehaviorSubject, catchError, distinctUntilChanged, filter, mergeMap, Observable, of, Subscription, tap } from \"rxjs\"\r\nimport { BaseFormInput } from \"../../components/form/base-form-input\"\r\nimport { NotificationService, TranslateService } from \"../services\"\r\nimport { Subscriptable } from \"./subscriptable\"\r\n\r\n@Directive()\r\nexport abstract class Formable<T = object> extends Subscriptable implements OnDestroy, AfterViewInit, AfterViewChecked{\r\n @ViewChild(FormGroupDirective) protected formRef: FormGroupDirective\r\n @ViewChildren(BaseFormInput) private inputs: QueryList<BaseFormInput<unknown>>\r\n\r\n protected loading$ = new BehaviorSubject(false)\r\n protected notificationService = inject(NotificationService)\r\n protected translateService = inject(TranslateService)\r\n protected cdr = inject(ChangeDetectorRef)\r\n private subForm: Subscription\r\n \r\n protected abstract submit: (_formValue: T) => Observable<unknown>\r\n\r\n ngAfterViewInit() {\r\n if(!this.formRef)\r\n return\r\n \r\n this.addSubscription(this.loading$.pipe(\r\n distinctUntilChanged()\r\n ).subscribe(loading => {\r\n if(loading)\r\n this.formRef.form.disable()\r\n else\r\n this.formRef.form.enable()\r\n }))\r\n\r\n this.subForm = this.formRef.ngSubmit.pipe(\r\n tap(() => this.findInForm(this.formRef.form)),\r\n mergeMap(() => {\r\n if(!this.formRef.invalid && !this.loading$.getValue()){\r\n this.loading$.next(true)\r\n return this.submit(this.formRef.form.getRawValue()).pipe(\r\n catchError(err => {\r\n this.loading$.next(false)\r\n return of(err)\r\n }),\r\n tap(() => this.loading$.next(false))\r\n )\r\n }\r\n \r\n return of(null)\r\n })\r\n ).subscribe()\r\n\r\n this.addSubscription(this.subForm)\r\n\r\n this.addSubscription(this.translateService.getLang$().subscribe(() => this.cdr.detectChanges()))\r\n }\r\n \r\n ngAfterViewChecked() {\r\n if(!this.formRef && this.subForm){\r\n this.subForm.unsubscribe()\r\n this.subForm = null\r\n }else if(this.formRef && !this.subForm)\r\n this.ngAfterViewInit()\r\n }\r\n\r\n private findInForm = (formGroup: FormGroup, index?: number) => {\r\n for(const [key, control] of Object.entries(formGroup.controls)){\r\n control.markAsTouched()\r\n control.updateValueAndValidity()\r\n\r\n if(control.invalid){\r\n const arr = formGroup.get(key)\r\n\r\n if(arr instanceof FormArray){\r\n let index = 0\r\n\r\n for(const item of arr.controls){\r\n if(this.findInForm(item as FormGroup, index))\r\n return true\r\n\r\n index++\r\n }\r\n }else{\r\n const inputs = this.inputs.toArray().filter(i => i.formControlName === key)\r\n\r\n if(inputs.length === 1)\r\n inputs[0].container?.focus()\r\n else if(index != null)\r\n inputs[index].container?.focus()\r\n\r\n return true\r\n }\r\n }\r\n }\r\n\r\n return false\r\n }\r\n\r\n public manualSubmit = () => this.formRef.ngSubmit.emit()\r\n\r\n protected registerPasswordChanges = (passwordControlName: string, confirmPasswordControlName: string) => {\r\n this.addSubscription(this.formRef.form.get(passwordControlName).valueChanges.pipe(\r\n distinctUntilChanged(),\r\n filter(() => this.formRef.form.get(passwordControlName).touched)\r\n ).subscribe(() => {\r\n this.formRef.form.get(confirmPasswordControlName).updateValueAndValidity()\r\n this.formRef.form.get(confirmPasswordControlName).markAsTouched()\r\n }))\r\n\r\n this.addSubscription(this.formRef.form.get(confirmPasswordControlName).valueChanges.pipe(\r\n distinctUntilChanged(),\r\n filter(() => this.formRef.form.get(confirmPasswordControlName).touched)\r\n ).subscribe(() => {\r\n this.formRef.form.get(passwordControlName).updateValueAndValidity()\r\n this.formRef.form.get(passwordControlName).markAsTouched()\r\n }))\r\n }\r\n\r\n public isLoading$ = () => this.loading$.asObservable()\r\n}\r\n","import { ChangeDetectionStrategy, Component, ElementRef, inject, InjectionToken, Input, OnInit } from \"@angular/core\"\r\nimport { fromEvent, race } from \"rxjs\"\r\nimport { Subscriptable } from \"../../shared/classes\"\r\nimport { ContextMenuItem, IContextMenu } from \"../../shared/interfaces\"\r\n\r\nexport const CONTEXT_MENU_DESTROY_TOKEN = new InjectionToken<() => void>(\"CONTEXT_MENU_DESTROY_TOKEN\")\r\n\r\n@Component({\r\n selector: \"dolfo-context-menu\",\r\n standalone: false,\r\n template: `<div class=\"context-menu\" [ngStyle]=\"{\r\n top: y + 'px',\r\n left: x + 'px'\r\n }\" (click)=\"$event.stopPropagation()\" [ngClass]=\"'position-' + position\">\r\n @for(item of items; track item.label){\r\n <div [ngClass]=\"item.className\" [class.disabled]=\"item.disabled\" (click)=\"clickItem(item)\">\r\n @if(item.icon){\r\n <dolfo-icon [name]=\"item.icon\"></dolfo-icon>\r\n }\r\n {{ item.label }}\r\n </div>\r\n }\r\n </div>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ContextMenuComponent extends Subscriptable implements IContextMenu, OnInit {\r\n @Input({ required: true }) x: number\r\n @Input({ required: true }) y: number\r\n @Input({ required: true }) items: ContextMenuItem[]\r\n @Input({ required: true }) ref: ElementRef<HTMLElement>\r\n @Input() position?: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\"\r\n \r\n private destroyFn = inject(CONTEXT_MENU_DESTROY_TOKEN)\r\n\r\n ngOnInit() {\r\n this.addSubscription(race([\r\n fromEvent(this.ref.nativeElement, \"contextmenu\"),\r\n fromEvent(window, \"click\"),\r\n fromEvent(window, \"resize\"),\r\n fromEvent(window, \"scroll\", { capture: true })\r\n ]).subscribe(this.destroyFn))\r\n }\r\n\r\n public clickItem = (item: ContextMenuItem) => {\r\n if(item.onClick && !item.disabled){\r\n item.onClick()\r\n this.destroyFn()\r\n }\r\n }\r\n}\r\n","import { Component, ElementRef, EventEmitter, forwardRef, Input, Output, ViewChild } from \"@angular/core\"\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\"\r\nimport { filter, map } from \"rxjs\"\r\nimport { InputType } from \"../../shared/interfaces\"\r\nimport { OnBlur, OnFocus } from \"../../shared/interfaces/events\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n selector: \"dolfo-input-text\",\r\n template: `<dolfo-input-container>\r\n @if(type === \"textarea\"){\r\n <textarea #formInput [name]=\"formControlName\" [formControl]=\"input\" (focus)=\"onFocus.emit($event)\" (blur)=\"onBlur.emit($event)\" [placeholder]=\"placeHolder\"></textarea>\r\n }@else{\r\n <input #formInput [name]=\"formControlName\" [type]=\"type\" [formControl]=\"input\" (focus)=\"onFocus.emit($event)\" (blur)=\"onBlur.emit($event)\" [placeholder]=\"placeHolder\" />\r\n }\r\n </dolfo-input-container>`,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputTextComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => InputTextComponent), multi: true },\r\n { provide: BaseFormInput, useExisting: InputTextComponent }\r\n ],\r\n standalone: false\r\n})\r\nexport class InputTextComponent extends BaseFormInput<string | number> implements OnFocus, OnBlur{\r\n @Input() type: InputType = \"text\"\r\n @Input() placeHolder = \"\"\r\n @Output() onFocus = new EventEmitter<FocusEvent>()\r\n @Output() onBlur = new EventEmitter<FocusEvent>()\r\n @ViewChild(\"formInput\") private formInput: ElementRef<HTMLInputElement | HTMLTextAreaElement>\r\n\r\n public focus = () => this.formInput.nativeElement.focus()\r\n\r\n override ngAfterViewInit() {\r\n if(this.type !== \"number\")\r\n super.ngAfterViewInit()\r\n else{\r\n this.addSubscription(this.input.valueChanges.pipe(\r\n filter(() => !this.input.disabled),\r\n map(v => v != null && String(v).trim() !== \"\" ? Number(v) : null)\r\n ).subscribe(v => {\r\n this.onChange.emit(v)\r\n this.changeInternal(v)\r\n }))\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, forwardRef, Input } from \"@angular/core\"\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\"\r\nimport { ComboOption, isDeepEqual } from \"../../shared/interfaces\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n selector: \"dolfo-input-radio\",\r\n template: `<dolfo-input-container>\r\n @for(option of options; track option){\r\n <div class=\"radio-item\">\r\n <input type=\"radio\" [name]=\"formControlName\" [formControl]=\"input\" [checked]=\"isSelectedOption(option)\" [value]=\"option.value\" />\r\n <label (click)=\"setOption(option)\">{{ option.label }}</label>\r\n </div>\r\n }\r\n </dolfo-input-container>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputRadioComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => InputRadioComponent), multi: true },\r\n { provide: BaseFormInput, useExisting: InputRadioComponent }\r\n ]\r\n})\r\nexport class InputRadioComponent extends BaseFormInput<any> {\r\n @Input({ required: true }) options: ComboOption[]\r\n\r\n public isSelectedOption = (opt: ComboOption) => isDeepEqual(this.input.value, opt.value)\r\n\r\n public setOption = (opt: ComboOption) => {\r\n if(this.input.disabled)\r\n return\r\n \r\n this.input.setValue(opt.value)\r\n this.onChange.emit(this.input.value)\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, OnInit, TemplateRef, ViewChild } from \"@angular/core\"\r\n\r\n@Component({\r\n selector: \"dolfo-dialog-content\",\r\n template: `<ng-template><ng-content></ng-content></ng-template>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class DialogContentComponent implements OnInit{\r\n @ViewChild(TemplateRef) template: TemplateRef<unknown>\r\n private cdr = inject(ChangeDetectorRef)\r\n\r\n ngOnInit() {\r\n this.cdr.detectChanges()\r\n }\r\n}\r\n","import { booleanAttribute, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from \"@angular/core\"\r\nimport { ButtonColor, ButtonSize } from \"../../shared/interfaces\"\r\nimport { OnBlur, OnClick, OnFocus } from \"../../shared/interfaces/events\"\r\n\r\n@Component({\r\n selector: \"dolfo-button\",\r\n template: `<button #btn [type]=\"type\" [disabled]=\"disabled || loading\" (click)=\"doClick($event)\" [class]=\"'color-' + (color || 'primary')\" (focus)=\"onFocus.emit($event)\" (blur)=\"onFocus.emit($event)\" [class.size-sm]=\"size === 'small'\" [class.size-lg]=\"size === 'large'\" [class.text]=\"textButton\">\r\n @if(loading){\r\n <dolfo-icon name=\"spinner8\"></dolfo-icon>\r\n }\r\n <ng-content></ng-content>\r\n </button>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class ButtonComponent implements OnClick, OnBlur, OnFocus{\r\n @ViewChild(\"btn\") btn: ElementRef<HTMLButtonElement>\r\n @Input() type: \"button\" | \"submit\" = \"button\"\r\n @Input({ transform: booleanAttribute }) disabled = false\r\n @Input() color: ButtonColor\r\n @Input() loading = false\r\n @Input() size: ButtonSize\r\n @Input({ transform: booleanAttribute }) textButton = false\r\n\r\n @Output() onClick = new EventEmitter<MouseEvent>()\r\n @Output() onBlur = new EventEmitter<FocusEvent>()\r\n @Output() onFocus = new EventEmitter<FocusEvent>()\r\n\r\n public doClick = (e: MouseEvent) => {\r\n if (!this.disabled && !this.loading)\r\n this.onClick.emit(e)\r\n }\r\n\r\n public focus = () => {\r\n if(!this.disabled && !this.loading)\r\n this.btn.nativeElement.focus()\r\n }\r\n}\r\n","import { booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, inject, Input, OnInit, Output, TemplateRef, ViewChild } from \"@angular/core\"\r\nimport { DialogActionType, DialogIcon } from \"../../../shared/interfaces\"\r\nimport { DialogService } from \"../../../shared/services\"\r\n\r\n@Component({\r\n selector: \"dolfo-dialog-header\",\r\n template: `<ng-template>\r\n <h5>\r\n @if(icon){\r\n <dolfo-icon [name]=\"getIcon()\" [class]=\"'fg-' + icon.color\"></dolfo-icon>\r\n }\r\n {{ title }}\r\n </h5>\r\n @if(showCloseX){\r\n <dolfo-button (click)=\"close()\" color=\"secondary\" [dolfoTooltip]=\"'dialog.close' | translate\">\r\n <dolfo-icon name=\"cross\"></dolfo-icon>\r\n </dolfo-button>\r\n }\r\n </ng-template>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class DialogHeaderComponent implements OnInit{\r\n @ViewChild(TemplateRef) template: TemplateRef<unknown>\r\n @Input({ required: true }) title: string\r\n @Input() icon: DialogIcon\r\n @Input({ transform: booleanAttribute }) showCloseX = true\r\n @Output() onCancel = new EventEmitter()\r\n private cdr = inject(ChangeDetectorRef)\r\n private dialogService = inject(DialogService)\r\n\r\n ngOnInit() {\r\n this.cdr.detectChanges()\r\n }\r\n\r\n public close = () => {\r\n if(this.onCancel.observed)\r\n this.onCancel.emit()\r\n else{\r\n this.dialogService.action({ type: DialogActionType.CANCEL, data: null })\r\n this.dialogService.close()\r\n }\r\n }\r\n\r\n public getIcon = () => this.icon.icon\r\n}\r\n","import { AfterViewChecked, ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, Injector, Input, OnInit, QueryList, TemplateRef, ViewChild, ViewChildren } from \"@angular/core\"\r\nimport { DialogFooterButton } from \"../../../shared/interfaces\"\r\nimport { ButtonComponent } from \"../button.component\"\r\n\r\n@Component({\r\n selector: \"dolfo-dialog-footer\",\r\n template: `<ng-template>\r\n @for(btn of buttons; track btn.label){\r\n <dolfo-button (onClick)=\"btn.onClick()\" [color]=\"btn.color\" [disabled]=\"btn.disabled\" [loading]=\"btn.loading\">\r\n @if(btn.icon && !btn.loading){\r\n <dolfo-icon [name]=\"btn.icon\"></dolfo-icon>\r\n }\r\n {{ btn.label }}\r\n </dolfo-button>\r\n }\r\n </ng-template>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class DialogFooterComponent implements OnInit, AfterViewChecked{\r\n @ViewChild(TemplateRef) template: TemplateRef<unknown>\r\n @ViewChildren(ButtonComponent) childrenButtons: QueryList<ButtonComponent>\r\n @Input({ required: true }) buttons: DialogFooterButton[]\r\n\r\n private focused = false\r\n private cdr = inject(ChangeDetectorRef)\r\n private injector = inject(Injector)\r\n\r\n async ngOnInit() {\r\n this.cdr.detectChanges()\r\n setTimeout(() => this.cdr.markForCheck())\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n if(!this.focused){\r\n const firstBtn = this.childrenButtons.find(btn => !btn.disabled && !btn.loading)\r\n\r\n if(firstBtn)\r\n firstBtn.focus()\r\n \r\n this.focused = true\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, ContentChild, Input } from \"@angular/core\"\r\nimport { DialogContentComponent } from \"./dialog-content.component\"\r\nimport { DialogFooterComponent } from \"./dialog-footer.component\"\r\nimport { DialogHeaderComponent } from \"./dialog-header.component\"\r\n\r\n@Component({\r\n selector: \"dolfo-dialog-layout\",\r\n templateUrl: \"./dialog-layout.component.html\",\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class DialogLayoutComponent {\r\n @ContentChild(DialogHeaderComponent) header: DialogHeaderComponent\r\n @ContentChild(DialogContentComponent) content: DialogContentComponent\r\n @ContentChild(DialogFooterComponent) footer: DialogFooterComponent\r\n @Input() width: number\r\n}\r\n","<div class=\"dialog\">\r\n <div class=\"dialog-inner\" [ngStyle]=\"{ width: width + 'px' }\">\r\n @if(header){\r\n <div class=\"dialog-header\">\r\n <ng-content *ngTemplateOutlet=\"header.template\"></ng-content>\r\n </div>\r\n }\r\n @if(content){\r\n <div class=\"dialog-content\">\r\n <ng-content *ngTemplateOutlet=\"content.template\"></ng-content>\r\n </div>\r\n }\r\n @if(footer){\r\n <div class=\"dialog-footer\">\r\n <ng-content *ngTemplateOutlet=\"footer.template\"></ng-content>\r\n </div>\r\n }\r\n </div>\r\n</div>","import { ChangeDetectionStrategy, Component, inject, Input, OnInit } from \"@angular/core\"\r\nimport { FormGroup } from \"@angular/forms\"\r\nimport { DomSanitizer } from \"@angular/platform-browser\"\r\nimport { Observable, of } from \"rxjs\"\r\nimport { Formable } from \"../../../shared/classes\"\r\nimport { DialogActionType, DialogComponentInput, DialogFooterButton, DialogForm, DialogIcon, DialogType, IDialogInput } from \"../../../shared/interfaces\"\r\nimport { DialogService } from \"../../../shared/services\"\r\n\r\n@Component({\r\n selector: \"dolfo-dialog\",\r\n standalone: false,\r\n template: `<dolfo-dialog-layout [width]=\"width\" [ngClass]=\"className\">\r\n @if(title){\r\n <dolfo-dialog-header [title]=\"title\" [showCloseX]=\"showCloseX()\" [icon]=\"getIcon()\"></dolfo-dialog-header>\r\n }\r\n\r\n <dolfo-dialog-content>\r\n <div [class.loading]=\"type === 'loading'\">\r\n @if(message){\r\n <span [innerHTML]=\"sanitizeMsg()\"></span>\r\n }\r\n\r\n @if(form && formGroup){\r\n <form [formGroup]=\"formGroup\">\r\n @for(f of form; track f.name){\r\n @switch(f.type){\r\n @case(\"date\"){\r\n <dolfo-datepicker [formControlName]=\"f.name\" [label]=\"f.label\"></dolfo-datepicker>\r\n }\r\n @case(\"autocomplete\"){\r\n <dolfo-autocomplete [formControlName]=\"f.name\" [label]=\"f.label\" [config]=\"f.autocompleteCfg\"></dolfo-autocomplete>\r\n }\r\n @case(\"radio\"){\r\n <dolfo-input-radio [formControlName]=\"f.name\" [label]=\"f.label\" [options]=\"f.options\"></dolfo-input-radio>\r\n }\r\n @case(\"combobox\"){\r\n <dolfo-combobox [formControlName]=\"f.name\" [label]=\"f.label\" [options]=\"f.options\"></dolfo-combobox>\r\n }\r\n @default{\r\n <dolfo-input-text [formControlName]=\"f.name\" [type]=\"f.type\" [label]=\"f.label\"></dolfo-input-text>\r\n }\r\n }\r\n }\r\n </form>\r\n }\r\n </div>\r\n </dolfo-dialog-content>\r\n\r\n @let footer = buttons || getFooter();\r\n\r\n @if(footer){\r\n <dolfo-dialog-footer [buttons]=\"footer\"></dolfo-dialog-footer>\r\n }\r\n </dolfo-dialog-layout>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DialogComponent extends Formable implements Required<IDialogInput>, OnInit {\r\n @Input() title: string\r\n @Input({ required: true }) message: string\r\n @Input() type: DialogType = \"info\"\r\n @Input() width: number\r\n @Input() hideCloseX = false\r\n @Input() form: DialogForm\r\n @Input() component: DialogComponentInput\r\n @Input() buttons: DialogFooterButton[]\r\n @Input() className: string\r\n public formGroup: FormGroup\r\n \r\n protected dialogService = inject(DialogService)\r\n private sanitizer = inject(DomSanitizer)\r\n\r\n ngOnInit() {\r\n if(this.form){\r\n this.formGroup = new FormGroup({})\r\n this.form.forEach(f => this.formGroup.addControl(f.name, f.control))\r\n }\r\n }\r\n\r\n protected submit = (formValue: any): Observable<unknown> => of(this.close(DialogActionType.OK, formValue))\r\n\r\n public getIcon = (): DialogIcon => {\r\n if(this.type === \"info\")\r\n return { icon: \"info\", color: \"info\" }\r\n if(this.type === \"error\")\r\n return { icon: \"notification\", color: \"error\" }\r\n if(this.type === \"confirm\")\r\n return { icon: \"question\", color: \"warning\" }\r\n\r\n return null\r\n }\r\n\r\n protected close = (type: DialogActionType, data?: Record<string, any>) => {\r\n if(type === DialogActionType.OK && this.formGroup && this.formRef){\r\n this.formRef.ngSubmit.emit()\r\n\r\n if(this.formGroup.invalid)\r\n return\r\n }\r\n\r\n this.dialogService.action({ type, data: data != null ? data : this.formGroup?.getRawValue() })\r\n this.dialogService.close()\r\n }\r\n\r\n public showCloseX = () => this.type !== \"loading\" && !this.hideCloseX\r\n\r\n public getFooter = (): DialogFooterButton[] => {\r\n if(this.type === \"loading\")\r\n return null\r\n\r\n if(this.type === \"info\" || this.type === \"error\"){\r\n return [{\r\n label: this.translateService.translate(\"dialog.ok\"),\r\n onClick: () => this.close(DialogActionType.OK),\r\n color: this.type\r\n }]\r\n }\r\n\r\n return [{\r\n label: this.translateService.translate(\"dialog.confirm\"),\r\n onClick: () => this.close(DialogActionType.OK),\r\n color: \"primary\"\r\n },\r\n {\r\n label: this.translateService.translate(\"dialog.no\"),\r\n onClick: () => this.close(DialogActionType.NO),\r\n color: \"secondary\"\r\n }]\r\n }\r\n\r\n public sanitizeMsg = () => this.sanitizer.bypassSecurityTrustHtml(this.message)\r\n}\r\n","import { ChangeDetectionStrategy, Component, inject, Input, OnInit } from \"@angular/core\"\r\nimport { INotificationInput, NotificationAction, NotificationType } from \"../../shared/interfaces\"\r\nimport { NotificationService, TranslateService } from \"../../shared/services\"\r\n\r\n@Component({\r\n selector: \"dolfo-notification\",\r\n standalone: false,\r\n template: `<div class=\"notification\" [ngClass]=\"{\r\n success: type === 'success',\r\n error: type === 'error',\r\n warning: type === 'warning',\r\n info: type === 'info'\r\n }\" (mouseenter)=\"mouseEnter()\" (mouseleave)=\"mouseLeave()\" (click)=\"click()\">\r\n <div class=\"notification-header\">\r\n <h6>{{ title || getTitleByType() }}</h6>\r\n </div>\r\n <div class=\"notification-content\">\r\n {{ message }}\r\n </div>\r\n @if(action){\r\n <div class=\"notification-action\">\r\n <dolfo-button [color]=\"type\" (onClick)=\"action.click()\">\r\n <dolfo-icon name=\"new-tab\"></dolfo-icon>\r\n {{ action.label }}\r\n </dolfo-button>\r\n </div>\r\n }\r\n </div>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class NotificationComponent implements OnInit, Required<INotificationInput>{\r\n @Input({ required: true }) title: string\r\n @Input({ required: true }) message: string\r\n @Input() type: NotificationType = \"info\"\r\n @Input() action: NotificationAction\r\n\r\n private timeout: any\r\n private ns = inject(NotificationService)\r\n private ts = inject(TranslateService)\r\n\r\n ngOnInit(){\r\n this.mouseLeave()\r\n }\r\n\r\n public mouseEnter = () => clearTimeout(this.timeout)\r\n\r\n public mouseLeave = () => this.timeout = setTimeout(() => this.ns.hide(), 3000)\r\n\r\n public click = () => {\r\n this.mouseEnter()\r\n this.ns.hide()\r\n }\r\n\r\n public getTitleByType = () => this.ts.translate(\"notification.\" + this.type)\r\n}\r\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, inject, InjectionToken, Input, OnInit, TemplateRef, ViewChild } from \"@angular/core\"\r\nimport { DomSanitizer } from \"@angular/platform-browser\"\r\nimport { BehaviorSubject, filter, fromEvent, map, race, zip } from \"rxjs\"\r\nimport { Subscriptable } from \"../../shared/classes\"\r\nimport { IPopover, TooltipDirection } from \"../../shared/interfaces\"\r\n\r\nexport const POPOVER_DESTROY_TOKEN = new InjectionToken<() => void>(\"POPOVER_DESTROY_TOKEN\")\r\n\r\n@Component({\r\n selector: \"dolfo-popover\",\r\n standalone: false,\r\n template: `<div class=\"tooltip popover\" #tooltipRef [ngStyle]=\"{\r\n left: (x$ | async) + 'px',\r\n top: (y$ | async) + 'px'\r\n }\" [ngClass]=\"currentDirection$ | async\" [class.show]=\"completed$ | async\">\r\n @if(isTemplate()){\r\n <ng-container [ngTemplateOutlet]=\"getContentTemplate()\" [ngTemplateOutletContext]=\"context\"></ng-container>\r\n }@else{\r\n <div [innerHTML]=\"getContentStr()\"></div>\r\n }\r\n </div>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class PopoverComponent extends Subscriptable implements OnInit, AfterViewInit, Required<IPopover> {\r\n @ViewChild(\"tooltipRef\") tooltipRef: ElementRef<HTMLDivElement>\r\n @Input({ required: true }) content: string | TemplateRef<any>\r\n @Input({ required: true }) elementRef: ElementRef<HTMLElement>\r\n @Input({ required: true }) direction: TooltipDirection\r\n @Input() context: any\r\n\r\n private destroyFn = inject(POPOVER_DESTROY_TOKEN)\r\n private checkCount = 0\r\n private cdr = inject(ChangeDetectorRef)\r\n private sanitizer = inject(DomSanitizer)\r\n\r\n public currentDirection$ = new BehaviorSubject<TooltipDirection>(null)\r\n public completed$ = new BehaviorSubject(false)\r\n public readonly x$ = new BehaviorSubject(0)\r\n public readonly y$ = new BehaviorSubject(0)\r\n\r\n ngOnInit() {\r\n this.currentDirection$.next(this.direction)\r\n\r\n this.addSubscription(race([\r\n fromEvent(window, \"resize\"),\r\n fromEvent(window, \"scroll\", { capture: true }),\r\n fromEvent<MouseEvent>(window, \"click\").pipe(\r\n map(e => e.target as HTMLElement),\r\n filter(el => !el.isEqualNode(this.tooltipRef.nativeElement) && !this.tooltipRef.nativeElement.contains(el))\r\n )\r\n ]).subscribe(this.destroyFn))\r\n\r\n this.addSubscription(zip([this.x$, this.y$]).pipe(\r\n filter(([x, y]) => x != 0 && y != 0 && this.checkCount < 4)\r\n ).subscribe(() => {\r\n setTimeout(() => {\r\n if (this.isTooltipInViewport()) {\r\n this.completed$.next(true)\r\n this.calculatePosition()\r\n return\r\n }\r\n\r\n if (this.currentDirection$.getValue() === \"bottom\")\r\n this.currentDirection$.next(\"left\")\r\n else if (this.currentDirection$.getValue() === \"left\")\r\n this.currentDirection$.next(\"top\")\r\n else if (this.currentDirection$.getValue() === \"top\")\r\n this.currentDirection$.next(\"right\")\r\n else\r\n this.currentDirection$.next(\"bottom\")\r\n })\r\n }))\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.addSubscription(this.currentDirection$.asObservable().subscribe(() => setTimeout(() => this.calculatePosition())))\r\n }\r\n\r\n private calculatePosition = () => {\r\n const { elementRef, tooltipRef, currentDirection$ } = this,\r\n refRect = elementRef.nativeElement.getBoundingClientRect(),\r\n tooltipRect = tooltipRef.nativeElement.getBoundingClientRect(),\r\n currentDirection = currentDirection$.getValue()\r\n\r\n if (currentDirection === \"top\" || currentDirection === \"bottom\")\r\n this.x$.next(refRect.left - ((tooltipRect.width - refRect.width) / 2))\r\n else if (currentDirection === \"right\")\r\n this.x$.next(refRect.left + refRect.width)\r\n else\r\n this.x$.next(refRect.left - tooltipRect.width)\r\n\r\n if (currentDirection === \"top\")\r\n this.y$.next(refRect.top - tooltipRect.height)\r\n else if (currentDirection === \"bottom\")\r\n this.y$.next(refRect.top + refRect.height)\r\n else\r\n this.y$.next(refRect.top - ((tooltipRect.height - refRect.height) / 2))\r\n\r\n this.cdr.detectChanges()\r\n this.checkCount++\r\n }\r\n\r\n private isTooltipInViewport = () => {\r\n const { top, left, bottom, right } = this.tooltipRef.nativeElement.getBoundingClientRect()\r\n return top >= 0 && left >= 0 && bottom <= window.innerHeight && right <= window.innerWidth\r\n }\r\n\r\n public getContentStr = () => this.sanitizer.bypassSecurityTrustHtml(this.content as string)\r\n\r\n public isTemplate = () => this.content instanceof TemplateRef\r\n\r\n public getContentTemplate = () => this.content as TemplateRef<any>\r\n}\r\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, inject, InjectionToken, Input, OnInit, ViewChild } from \"@angular/core\"\r\nimport { BehaviorSubject, filter, fromEvent, race, zip } from \"rxjs\"\r\nimport { Subscriptable } from \"../../shared/classes\"\r\nimport { ITooltip, TooltipDirection } from \"../../shared/interfaces\"\r\n\r\nexport const TOOLTIP_DESTROY_TOKEN = new InjectionToken<() => void>(\"TOOLTIP_DESTROY_TOKEN\")\r\n\r\n@Component({\r\n selector: \"dolfo-tooltip\",\r\n standalone: false,\r\n template: `<div class=\"tooltip\" #tooltipRef [ngStyle]=\"{\r\n left: (x$ | async) + 'px',\r\n top: (y$ | async) + 'px'\r\n }\" [ngClass]=\"currentDirection$ | async\" [class.show]=\"completed$ | async\">\r\n {{ content }}\r\n </div>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class TooltipComponent extends Subscriptable implements OnInit, AfterViewInit, Required<ITooltip> {\r\n @ViewChild(\"tooltipRef\") tooltipRef: ElementRef<HTMLDivElement>\r\n @Input({ required: true }) content: string\r\n @Input({ required: true }) elementRef: ElementRef<HTMLElement>\r\n @Input({ required: true }) direction: TooltipDirection\r\n \r\n private destroyFn = inject(TOOLTIP_DESTROY_TOKEN)\r\n private checkCount = 0\r\n private cdr = inject(ChangeDetectorRef)\r\n\r\n public currentDirection$ = new BehaviorSubject<TooltipDirection>(null)\r\n public completed$ = new BehaviorSubject(false)\r\n public readonly x$ = new BehaviorSubject(0)\r\n public readonly y$ = new BehaviorSubject(0)\r\n\r\n ngOnInit() {\r\n this.currentDirection$.next(this.direction)\r\n\r\n this.addSubscription(race([\r\n fromEvent(window, \"resize\"),\r\n fromEvent(window, \"scroll\", { capture: true }),\r\n fromEvent(this.elementRef.nativeElement, \"mouseleave\")\r\n ]).subscribe(this.destroyFn))\r\n\r\n this.addSubscription(zip([this.x$, this.y$]).pipe(\r\n filter(([x, y]) => x != 0 && y != 0 && this.checkCount < 4)\r\n ).subscribe(() => {\r\n setTimeout(() => {\r\n if (this.isTooltipInViewport()) {\r\n this.completed$.next(true)\r\n this.calculatePosition()\r\n return\r\n }\r\n\r\n if (this.currentDirection$.getValue() === \"bottom\")\r\n this.currentDirection$.next(\"left\")\r\n else if (this.currentDirection$.getValue() === \"left\")\r\n this.currentDirection$.next(\"top\")\r\n else if (this.currentDirection$.getValue() === \"top\")\r\n this.currentDirection$.next(\"right\")\r\n else\r\n this.currentDirection$.next(\"bottom\")\r\n })\r\n }))\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.addSubscription(this.currentDirection$.asObservable().subscribe(() => setTimeout(() => this.calculatePosition())))\r\n }\r\n\r\n private calculatePosition = () => {\r\n const { elementRef, tooltipRef, currentDirection$ } = this,\r\n refRect = elementRef.nativeElement.getBoundingClientRect(),\r\n tooltipRect = tooltipRef.nativeElement.getBoundingClientRect(),\r\n currentDirection = currentDirection$.getValue()\r\n\r\n if (currentDirection === \"top\" || currentDirection === \"bottom\")\r\n this.x$.next(refRect.left - ((tooltipRect.width - refRect.width) / 2))\r\n else if (currentDirection === \"right\")\r\n this.x$.next(refRect.left + refRect.width)\r\n else\r\n this.x$.next(refRect.left - tooltipRect.width)\r\n\r\n if (currentDirection === \"top\")\r\n this.y$.next(refRect.top - tooltipRect.height)\r\n else if (currentDirection === \"bottom\")\r\n this.y$.next(refRect.top + refRect.height)\r\n else\r\n this.y$.next(refRect.top - ((tooltipRect.height - refRect.height) / 2))\r\n\r\n this.cdr.detectChanges()\r\n this.checkCount++\r\n }\r\n\r\n private isTooltipInViewport = () => {\r\n const { top, left, bottom, right } = this.tooltipRef.nativeElement.getBoundingClientRect()\r\n return top >= 0 && left >= 0 && bottom <= window.innerHeight && right <= window.innerWidth\r\n }\r\n}","import { ComponentRef, createComponent, EnvironmentInjector, Injector, ViewContainerRef } from \"@angular/core\"\r\nimport { distinctUntilChanged, filter, map, tap } from \"rxjs\"\r\nimport { CONTEXT_MENU_DESTROY_TOKEN, ContextMenuComponent } from \"../../components/layout/context-menu.component\"\r\nimport { DialogComponent } from \"../../components/layout/dialog-layout/dialog.component\"\r\nimport { NotificationComponent } from \"../../components/layout/notification.component\"\r\nimport { POPOVER_DESTROY_TOKEN, PopoverComponent } from \"../../components/layout/popover.component\"\r\nimport { TOOLTIP_DESTROY_TOKEN, TooltipComponent } from \"../../components/layout/tooltip.component\"\r\nimport { IDialogInput, isDeepEqual } from \"../interfaces\"\r\nimport { ContextMenuService, DialogService, NotificationService, PopoverService, TooltipService } from \"../services\"\r\n\r\nexport class OverlayManager{\r\n private dialog: [ComponentRef<IDialogInput>, number][] = []\r\n private notification: ComponentRef<NotificationComponent>\r\n private tooltip: ComponentRef<TooltipComponent>\r\n private popover: ComponentRef<PopoverComponent>\r\n private contextMenu: ComponentRef<ContextMenuComponent>\r\n \r\n constructor(private injector: Injector, private container: ViewContainerRef){}\r\n\r\n public init = () => {\r\n const ds = this.injector.get(DialogService),\r\n ns = this.injector.get(NotificationService),\r\n ts = this.injector.get(TooltipService),\r\n cs = this.injector.get(ContextMenuService),\r\n ps = this.injector.get(PopoverService),\r\n environmentInjector = this.injector.get(EnvironmentInjector)\r\n\r\n return [\r\n ds.getDialog$().pipe(\r\n tap(inputs => {\r\n const notFound = this.dialog.filter(d => !inputs.some(i => i._dialogId === d[1]))\r\n\r\n notFound.forEach(d => d[0].destroy())\r\n\r\n this.dialog = this.dialog.filter(d => !notFound.some(d2 => d2[1] === d[1]))\r\n }),\r\n map(inputs => inputs[inputs.length - 1]),\r\n distinctUntilChanged((a, b) => isDeepEqual(a, b)),\r\n filter(input => !!input && !this.dialog.some(d => d[1] === input._dialogId))\r\n ).subscribe(input => {\r\n const dialog = createComponent(input.component?.type || DialogComponent, { environmentInjector })\r\n this.dialog.push([dialog, input._dialogId])\r\n \r\n Object.entries(input).filter(k => k[0] !== \"_dialogId\").forEach(([k, v]) => dialog.setInput(k, v))\r\n \r\n if(input.component?.input)\r\n Object.entries(input.component.input).forEach(([k, v]) => dialog.setInput(k, v))\r\n \r\n this.container.insert(dialog.hostView)\r\n }),\r\n ns.getNotification$().pipe(\r\n distinctUntilChanged((a, b) => isDeepEqual(a, b)),\r\n tap(() => {\r\n if(this.notification)\r\n this.notification.destroy()\r\n }),\r\n filter(input => !!input)\r\n ).subscribe(input => {\r\n this.notification = createComponent(NotificationComponent, { environmentInjector })\r\n \r\n Object.entries(input).forEach(([k, v]) => this.notification.setInput(k, v))\r\n \r\n this.container.insert(this.notification.hostView)\r\n }),\r\n ts.getTooltip$().pipe(\r\n tap(() => {\r\n if(this.tooltip)\r\n this.tooltip.destroy()\r\n }),\r\n filter(input => !!input)\r\n ).subscribe(input => {\r\n this.tooltip = createComponent(TooltipComponent, {\r\n environmentInjector,\r\n elementInjector: Injector.create({\r\n providers: [{ provide: TOOLTIP_DESTROY_TOKEN, useValue: () => this.tooltip.destroy() }]\r\n })\r\n })\r\n \r\n Object.entries(input).forEach(([k, v]) => this.tooltip.setInput(k, v))\r\n \r\n this.container.insert(this.tooltip.hostView)\r\n }),\r\n ps.getPopover$().pipe(\r\n tap(() => {\r\n if(this.popover)\r\n this.popover.destroy()\r\n }),\r\n filter(input => !!input)\r\n ).subscribe(input => {\r\n this.popover = createComponent(PopoverComponent, {\r\n environmentInjector,\r\n elementInjector: Injector.create({\r\n providers: [{ provide: POPOVER_DESTROY_TOKEN, useValue: () => this.popover.destroy() }]\r\n })\r\n })\r\n \r\n Object.entries(input).forEach(([k, v]) => this.popover.setInput(k, v))\r\n \r\n this.container.insert(this.popover.hostView)\r\n }),\r\n cs.getContextMenu$().pipe(\r\n distinctUntilChanged((a, b) => isDeepEqual(a, b)),\r\n tap(() => {\r\n if(this.contextMenu)\r\n this.contextMenu.destroy()\r\n }),\r\n filter(input => !!input)\r\n ).subscribe(input => {\r\n this.contextMenu = createComponent(ContextMenuComponent, {\r\n environmentInjector,\r\n elementInjector: Injector.create({\r\n providers: [{ provide: CONTEXT_MENU_DESTROY_TOKEN, useValue: () => this.contextMenu.destroy() }]\r\n })\r\n })\r\n \r\n Object.entries(input).forEach(([k, v]) => this.contextMenu.setInput(k, v))\r\n \r\n this.container.insert(this.contextMenu.hostView)\r\n })\r\n ]\r\n }\r\n}","import { ProviderToken, Type } from \"@angular/core\"\r\nimport { CanActivateFn, CanDeactivateFn, Route } from \"@angular/router\"\r\nimport { Observable } from \"rxjs\"\r\nimport { RouteCheckService } from \"../services\"\r\n\r\ninterface Module{\r\n [x: string]: Type<unknown>\r\n}\r\n\r\nexport class RouteConfig{\r\n private loadComponent: () => Promise<Type<unknown>>\r\n private redirectTo: string\r\n private pathMatch: \"full\" | \"prefix\" = \"full\"\r\n private title: (() => Observable<string> | string) | string\r\n private canActivate: Array<CanActivateFn | ProviderToken<any> | string> = []\r\n private canDeactivate: Array<CanDeactivateFn<any> | ProviderToken<any>> = []\r\n\r\n constructor(private path: string, withRouteCheck = true){\r\n if(withRouteCheck)\r\n this.canActivate.push(RouteCheckService)\r\n }\r\n\r\n public withTitle = (title: typeof this.title) => {\r\n this.title = title\r\n return this\r\n }\r\n\r\n public loadUrl = (imp: Promise<Module>) => {\r\n this.loadComponent = () => imp.then(t => Object.values(t)[0])\r\n return this\r\n }\r\n\r\n public withRedirect = (url: string) => {\r\n this.redirectTo = url\r\n return this\r\n }\r\n\r\n public addCanDeactivate = (guard: CanDeactivateFn<any> | ProviderToken<any> | Array<CanDeactivateFn<any> | ProviderToken<any>>) => {\r\n if(Array.isArray(guard))\r\n this.canDeactivate.push(...guard)\r\n else\r\n this.canDeactivate.push(guard)\r\n \r\n return this\r\n }\r\n\r\n public addGuard = (guard: CanActivateFn | ProviderToken<any> | string | Array<CanActivateFn | ProviderToken<any> | string>) => {\r\n if(Array.isArray(guard))\r\n this.canActivate.push(...guard)\r\n else\r\n this.canActivate.push(guard)\r\n \r\n return this\r\n }\r\n\r\n public toRoute = (): Route => ({\r\n loadComponent: this.loadComponent,\r\n path: this.path,\r\n pathMatch: this.pathMatch,\r\n title: this.title,\r\n redirectTo: this.redirectTo,\r\n canActivate: this.canActivate,\r\n canDeactivate: this.canDeactivate\r\n })\r\n}","import { booleanAttribute, Directive, ElementRef, inject, Input, OnInit } from \"@angular/core\"\r\nimport { fromEvent } from \"rxjs\"\r\nimport { Subscriptable } from \"../classes\"\r\nimport { ContextMenuItem } from \"../interfaces\"\r\nimport { ContextMenuService } from \"../services\"\r\n\r\n@Directive({\r\n selector: \"[dolfoContextMenu]\",\r\n standalone: false\r\n})\r\nexport class ContextMenuDirective extends Subscriptable implements OnInit{\r\n @Input({ required: true, alias: \"dolfoContextMenu\" }) contextMenu: ContextMenuItem[]\r\n @Input({ transform: booleanAttribute }) openOnClick: boolean\r\n @Input({ transform: booleanAttribute }) useElRef: boolean\r\n @Input() position?: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\" = \"bottom-left\"\r\n private contextMenuService = inject(ContextMenuService)\r\n private elRef = inject(ElementRef<HTMLElement>)\r\n\r\n ngOnInit(){\r\n this.addSubscription(fromEvent<MouseEvent>(this.elRef.nativeElement, this.openOnClick ? \"click\" : \"contextmenu\").subscribe(e => {\r\n e.preventDefault()\r\n\r\n const [left, top] = this.useElRef ? this.getElRefPosition() : [e.clientX, e.clientY]\r\n\r\n this.contextMenuService.openContextMenu({\r\n x: left,\r\n y: top,\r\n items: this.contextMenu,\r\n ref: this.elRef,\r\n position: this.position\r\n })\r\n }))\r\n }\r\n\r\n private getElRefPosition = () => {\r\n const { left, width, top, height } = this.elRef.nativeElement.getBoundingClientRect()\r\n\r\n const diff = left + width\r\n\r\n if(this.position.startsWith(\"bottom-\")){\r\n const posTop = top + height\r\n\r\n if(this.position === \"bottom-left\")\r\n return [left, posTop]\r\n\r\n return [diff, posTop]\r\n }\r\n\r\n if(this.position === \"top-right\")\r\n return [diff, top]\r\n\r\n return [left, top]\r\n }\r\n}\r\n","import { APP_BASE_HREF } from \"@angular/common\"\r\nimport { Directive, ElementRef, inject, Input, SimpleChanges } from \"@angular/core\"\r\nimport { Router } from \"@angular/router\"\r\nimport { filter, fromEvent } from \"rxjs\"\r\nimport { Subscriptable } from \"../classes\"\r\nimport { StoreService } from \"../services\"\r\n\r\n@Directive({\r\n selector: \"[dolfoNavigate]\",\r\n standalone: false\r\n})\r\nexport class NavigateDirective extends Subscriptable{\r\n @Input({ required: true, alias: \"dolfoNavigate\" }) url: string\r\n private isLink: boolean\r\n private publicUrl = inject(APP_BASE_HREF)\r\n private storeService = inject(StoreService)\r\n private router = inject(Router)\r\n private elementRef = inject(ElementRef<HTMLElement>)\r\n\r\n constructor() {\r\n super()\r\n\r\n this.isLink = this.elementRef.nativeElement.tagName.toLowerCase() === \"a\"\r\n\r\n this.addSubscription(fromEvent<MouseEvent>(this.elementRef.nativeElement, \"click\").subscribe(e => {\r\n if(this.isLink)\r\n e.preventDefault()\r\n \r\n if(this.storeService.isPressingCtrl())\r\n this.openBlank()\r\n else\r\n this.router.navigateByUrl(this.url)\r\n }))\r\n\r\n this.addSubscription(fromEvent<MouseEvent>(this.elementRef.nativeElement, \"mousedown\").pipe(\r\n filter(e => e.button === 1)\r\n ).subscribe(e => {\r\n if(this.isLink)\r\n e.stopPropagation()\r\n else\r\n this.openBlank()\r\n }))\r\n }\r\n \r\n ngOnChanges(changes: SimpleChanges<this>){\r\n if((this.isLink || (changes.url && changes.url.currentValue !== this.url)) && !!this.url)\r\n this.elementRef.nativeElement.setAttribute(\"href\", this.url)\r\n }\r\n\r\n private openBlank = () => window.open(this.publicUrl + this.url, \"_blank\")\r\n}","import { Directive, ElementRef, inject, Input, TemplateRef } from \"@angular/core\"\r\nimport { filter, fromEvent } from \"rxjs\"\r\nimport { Subscriptable } from \"../classes\"\r\nimport { TooltipDirection } from \"../interfaces\"\r\nimport { PopoverService } from \"../services\"\r\n\r\n@Directive({\r\n selector: \"[dolfoPopover]\",\r\n standalone: false\r\n})\r\nexport class PopoverDirective extends Subscriptable{\r\n @Input({ required: true, alias: \"dolfoPopover\" }) content: string | TemplateRef<any>\r\n @Input({ alias: \"dolfoPopoverContext\" }) context: any\r\n @Input() direction: TooltipDirection = \"top\"\r\n private el = inject(ElementRef<HTMLElement>)\r\n private ps = inject(PopoverService)\r\n\r\n ngOnInit(){\r\n this.addSubscription(fromEvent(this.el.nativeElement, \"mousedown\").pipe(\r\n filter(() => !!this.ps.getPopover())\r\n ).subscribe(() => this.ps.hide()))\r\n\r\n this.addSubscription(\r\n fromEvent(this.el.nativeElement, \"click\").pipe(\r\n filter(() => !!this.content)\r\n ).subscribe(() => this.ps.showPopover({\r\n content: this.content,\r\n elementRef: this.el,\r\n direction: this.direction,\r\n context: this.context\r\n }))\r\n )\r\n }\r\n}\r\n","import { Directive, ElementRef, inject } from \"@angular/core\"\r\nimport { filter, fromEvent } from \"rxjs\"\r\nimport { Subscriptable } from \"../classes\"\r\n\r\n@Directive({\r\n\tselector: \"[dolfoScrollDrag]\",\r\n standalone: false\r\n})\r\nexport class ScrollDragDirective extends Subscriptable {\r\n\tprivate mouseDownX: number\r\n\tprivate initialScrollX = 0\r\n\tprivate diffX = 0\r\n\tprivate mouseDownY: number\r\n\tprivate initialScrollY = 0\r\n\tprivate diffY = 0\r\n private elementRef = inject(ElementRef<HTMLElement>)\r\n\r\n\tconstructor() {\r\n\t\tsuper()\r\n\r\n\t\tthis.addSubscription(fromEvent<MouseEvent>(this.elementRef.nativeElement, \"mousedown\").pipe(\r\n filter(e => e.button === 0)\r\n ).subscribe(e => {\r\n\t\t\te.preventDefault()\r\n\t\t\te.stopPropagation()\r\n\t\t\tthis.mouseDownX = e.clientX\r\n\t\t\tthis.mouseDownY = e.clientY\r\n\t\t\tthis.initialScrollX = this.elementRef.nativeElement.scrollLeft\r\n\t\t\tthis.initialScrollY = this.elementRef.nativeElement.scrollTop\r\n\t\t\tthis.elementRef.nativeElement.classList.add(\"dragging\")\r\n\t\t}))\r\n\r\n\t\tthis.addSubscription(fromEvent(document, \"mouseup\", { capture: true }).subscribe(() => {\r\n\t\t\tthis.mouseDownX = null\r\n\t\t\tthis.mouseDownY = null\r\n\t\t\tthis.elementRef.nativeElement.classList.remove(\"dragging\")\r\n\t\t}))\r\n\r\n\t\tthis.addSubscription(fromEvent<Event>(this.elementRef.nativeElement, \"click\", { capture: true }).pipe(\r\n\t\t\tfilter(() => this.diffX != 0 || this.diffY != 0)\r\n\t\t).subscribe(e => {\r\n\t\t\te.stopPropagation()\r\n\t\t\tthis.diffX = 0\r\n\t\t\tthis.diffY = 0\r\n\t\t}))\r\n\r\n\t\tthis.addSubscription(fromEvent<MouseEvent>(document, \"mousemove\").pipe(\r\n\t\t\tfilter(() => this.mouseDownX != null || this.mouseDownY != null)\r\n\t\t).subscribe(e => {\r\n\t\t\te.stopPropagation()\r\n\r\n\t\t\tif (this.mouseDownX != null) {\r\n\t\t\t\tthis.diffX = this.initialScrollX + (this.mouseDownX - e.clientX)\r\n\t\t\t\tthis.elementRef.nativeElement.scrollLeft = this.diffX\r\n\t\t\t}\r\n\t\t\tif (this.mouseDownY != null) {\r\n\t\t\t\tthis.diffY = this.initialScrollY + (this.mouseDownY - e.clientY)\r\n\t\t\t\tthis.elementRef.nativeElement.scrollTop = this.diffY\r\n\t\t\t}\r\n\t\t}))\r\n\t}\r\n}\r\n","import { NgModule } from \"@angular/core\"\r\nimport { ContextMenuDirective } from \"./context-menu.directive\"\r\nimport { NavigateDirective } from \"./navigate.directive\"\r\nimport { PopoverDirective } from \"./popover.directive\"\r\nimport { ScrollDragDirective } from \"./scroll-drag.directive\"\r\nimport { TooltipDirective } from \"./tooltip.directive\"\r\n\r\n@NgModule({\r\n declarations: [ContextMenuDirective, ScrollDragDirective, TooltipDirective, PopoverDirective, NavigateDirective],\r\n exports: [ContextMenuDirective, ScrollDragDirective, TooltipDirective, PopoverDirective, NavigateDirective]\r\n})\r\nexport class DirectivesModule{}","import { ChangeDetectionStrategy, Component, Input } from \"@angular/core\"\r\n\r\n@Component({\r\n\tselector: \"dolfo-loader\",\r\n\tstandalone: false,\r\n\ttemplate: `<div class=\"loading\">\r\n\t\t<dolfo-icon name=\"spinner5\"></dolfo-icon>\r\n\t\t{{ langKey | translate }}\r\n\t</div>`,\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class LoaderComponent {\r\n\t@Input() langKey = \"loading\"\r\n}\r\n","import { CommonModule } from \"@angular/common\"\r\nimport { NgModule } from \"@angular/core\"\r\nimport { DirectivesModule } from \"../../shared/directives/directives.module\"\r\nimport { TranslatePipe } from \"../../shared/pipes/translate.pipe\"\r\nimport { ButtonComponent } from \"./button.component\"\r\nimport { ContextMenuComponent } from \"./context-menu.component\"\r\nimport { IconWrapperComponent } from \"./icon-wrapper.component\"\r\nimport { IconComponent } from \"./icon.component\"\r\nimport { LoaderComponent } from \"./loader.component\"\r\nimport { NotificationComponent } from \"./notification.component\"\r\nimport { PopoverComponent } from \"./popover.component\"\r\nimport { TooltipComponent } from \"./tooltip.component\"\r\n\r\n@NgModule({\r\n declarations: [ButtonComponent, ContextMenuComponent, IconWrapperComponent, LoaderComponent, NotificationComponent, TooltipComponent, IconComponent, PopoverComponent],\r\n imports: [CommonModule, DirectivesModule, TranslatePipe],\r\n exports: [ButtonComponent, ContextMenuComponent, IconWrapperComponent, LoaderComponent, NotificationComponent, TooltipComponent, IconComponent, PopoverComponent]\r\n})\r\nexport class LayoutModule {}","import { ChangeDetectionStrategy, Component, forwardRef } from \"@angular/core\"\r\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\"\r\nimport { BaseFormInput } from \"./base-form-input\"\r\n\r\n@Component({\r\n selector: \"dolfo-input-checkbox\",\r\n template: `<div class=\"input-checkbox\">\r\n <input type=\"checkbox\" [name]=\"formControlName\" [formControl]=\"input\" [checked]=\"input.value\" />\r\n @if(label){\r\n <label (click)=\"toggleCheck()\">{{ label }}</label>\r\n }\r\n </div>`,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputCheckboxComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => InputCheckboxComponent), multi: true },\r\n { provide: BaseFormInput, useExisting: InputCheckboxComponent }\r\n ]\r\n})\r\nexport class InputCheckboxComponent extends BaseFormInput<boolean> {\r\n public toggleCheck = () => this.input.setValue(!this.input.value)\r\n}\r\n","import { CommonModule } from \"@angular/common\"\r\nimport { NgModule } from \"@angular/core\"\r\nimport { ReactiveFormsModule } from \"@angular/forms\"\r\nimport { DirectivesModule } from \"../../shared/directives/directives.module\"\r\nimport { TranslatePipe } from \"../../shared/pipes/translate.pipe\"\r\nimport { LayoutModule } from \"../layout/layout.module\"\r\nimport { AutocompleteComponent } from \"./autocomplete.component\"\r\nimport { ComboboxComponent } from \"./combobox.component\"\r\nimport { DatepickerComponent } from \"./datepicker.component\"\r\nimport { FileSelectComponent } from \"./file-select.component\"\r\nimport { FormComponent } from \"./form.component\"\r\nimport { InputCheckboxComponent } from \"./input-checkbox.component\"\r\nimport { InputContainerComponent } from \"./input-container.component\"\r\nimport { InputRadioComponent } from \"./input-radio.component\"\r\nimport { InputTextComponent } from \"./input-text.component\"\r\n\r\n@NgModule({\r\n declarations: [InputTextComponent, InputContainerComponent, ComboboxComponent, DatepickerComponent, AutocompleteComponent, InputRadioComponent, InputCheckboxComponent, FileSelectComponent, FormComponent],\r\n imports: [CommonModule, ReactiveFormsModule, TranslatePipe, DirectivesModule, LayoutModule],\r\n exports: [ReactiveFormsModule, InputTextComponent, InputContainerComponent, ComboboxComponent, DatepickerComponent, AutocompleteComponent, InputRadioComponent, InputCheckboxComponent, FileSelectComponent, FormComponent]\r\n})\r\nexport class FormModule {}\r\n","import { CommonModule } from \"@angular/common\"\r\nimport { NgModule } from \"@angular/core\"\r\nimport { ReactiveFormsModule } from \"@angular/forms\"\r\nimport { DirectivesModule } from \"../../../shared/directives/directives.module\"\r\nimport { TranslatePipe } from \"../../../shared/pipes/translate.pipe\"\r\nimport { FormModule } from \"../../form/form.module\"\r\nimport { LayoutModule } from \"../layout.module\"\r\nimport { DialogContentComponent } from \"./dialog-content.component\"\r\nimport { DialogFooterComponent } from \"./dialog-footer.component\"\r\nimport { DialogHeaderComponent } from \"./dialog-header.component\"\r\nimport { DialogLayoutComponent } from \"./dialog-layout.component\"\r\nimport { DialogComponent } from \"./dialog.component\"\r\n\r\n@NgModule({\r\n declarations: [DialogComponent, DialogContentComponent, DialogHeaderComponent, DialogFooterComponent, DialogLayoutComponent],\r\n imports: [CommonModule, DirectivesModule, LayoutModule, ReactiveFormsModule, TranslatePipe, FormModule],\r\n exports: [DialogComponent, DialogContentComponent, DialogHeaderComponent, DialogFooterComponent, DialogLayoutComponent]\r\n})\r\nexport class DialogLayoutModule {}\r\n","import { Component, inject, Input } from \"@angular/core\"\r\nimport { DomSanitizer } from \"@angular/platform-browser\"\r\nimport { BooleanFn, ColumnDataType, GridColumn, GridConfig } from \"../../../shared/interfaces\"\r\nimport { TranslateService } from \"../../../shared/services\"\r\n\r\n@Component({\r\n selector: \"dolfo-grid\",\r\n templateUrl: \"./grid.component.html\",\r\n standalone: false\r\n})\r\nexport class GridComponent<T>{\r\n\t@Input({ required: true }) config: GridConfig<T>\r\n private translateService = inject(TranslateService)\r\n private sanitizer = inject(DomSanitizer)\r\n\r\n\tpublic resolveField = (item: T, { field, formatter, dataType, onLink }: GridColumn) => {\r\n let value = field\r\n .toString()\r\n .split(\".\")\r\n .reduce((prev, curr) => prev?.[curr as keyof T] as any, item) as string\r\n\r\n if(dataType === ColumnDataType.DATE)\r\n\t\t\tvalue = this.translateService.formatDate(value)\r\n else if(dataType === ColumnDataType.DATETIME)\r\n\t\t\tvalue = this.translateService.formatDateTime(value)\r\n\r\n let retValue = formatter ? formatter(value) : value\r\n\r\n\t\tif(dataType === ColumnDataType.LINK)\r\n\t\t\tretValue = `<a href=\"javascript:void(0)\">${retValue}</a>`\r\n \r\n return this.sanitizer.bypassSecurityTrustHtml(retValue)\r\n }\r\n\r\n\tpublic checkLink = (e: Event, col: GridColumn, item: T, cell: HTMLTableCellElement) => {\r\n\t\tif(col.dataType !== ColumnDataType.LINK || !col.onLink)\r\n\t\t\treturn\r\n\r\n\t\tconst colValue = col.field\r\n .toString()\r\n .split(\".\")\r\n .reduce((prev, curr) => prev?.[curr as keyof T] as any, item),\r\n\t\thtmlTarget = e.target as HTMLElement\r\n\r\n\t\tif(htmlTarget.tagName.toLowerCase() === \"a\")\r\n\t\t\tcol.onLink(colValue)\r\n\t\telse{\r\n\t\t\tconst a = cell.querySelector(\"a[href]\")\r\n\r\n\t\t\tif(a.contains(htmlTarget))\r\n\t\t\t\tcol.onLink(colValue)\r\n\t\t}\r\n\t}\r\n\r\n public isToolbarBtnDisabled = (disabled: boolean | BooleanFn) => {\r\n if(disabled == null)\r\n return false\r\n\r\n return typeof disabled === \"boolean\" ? disabled : disabled()\r\n }\r\n}\r\n","@let loading = config.isLoading$() | async;\r\n\r\n<div class=\"grid-container\" [class.loading]=\"loading\">\r\n @if(loading){\r\n <div class=\"grid-loading\">\r\n <dolfo-icon name=\"spinner2\"></dolfo-icon>\r\n </div>\r\n }\r\n\r\n <table>\r\n @let columns = config.getColumns();\r\n @let showActions = config.hasActions;\r\n @let selection = config.getSelectionConfig();\r\n @let colSpan = columns.length + (showActions ? 1 : 0) + (selection ? 1 : 0);\r\n \r\n <thead>\r\n @if(config.hasToolbar){\r\n <tr class=\"dolfo-grid-toolbar\">\r\n <th [colSpan]=\"colSpan\">\r\n @for(btn of config.getToolbarButtons(); track btn.label){\r\n <dolfo-button color=\"white\" (onClick)=\"btn.onClick()\" [disabled]=\"isToolbarBtnDisabled(btn.disabled)\">\r\n @if(btn.icon){\r\n <dolfo-icon [name]=\"btn.icon\"></dolfo-icon>\r\n }\r\n\r\n {{ btn.label }}\r\n </dolfo-button>\r\n }\r\n </th>\r\n </tr>\r\n }\r\n\r\n <tr>\r\n @if(selection){\r\n <th [style]=\"{ width: 0 }\">\r\n @if(selection.showSelectAll && selection.type === \"multiple\"){\r\n <input type=\"checkbox\" [checked]=\"config.isAllSelected()\" (change)=\"config.toggleSelectAll()\" />\r\n }\r\n </th>\r\n }\r\n\r\n @for(col of columns; track col.label){\r\n <th [ngStyle]=\"{ width: col.width + 'px', maxWidth: col.width + 'px' }\">{{ col.label | translate }}</th>\r\n }\r\n \r\n @if(showActions){\r\n <th>{{ \"grid.actions\" | translate }}</th>\r\n }\r\n </tr>\r\n </thead>\r\n \r\n <tbody>\r\n @let list = config.getList$() | async;\r\n \r\n @if(list.length > 0){\r\n @for(item of list; track config.getUniqueId(item)){\r\n @let itemActions = config.getActions$(item) | async;\r\n @let rowClass = config.getRowClass(item);\r\n \r\n <tr (click)=\"config.getEvents()?.onRowClick?.(item)\" [dolfoContextMenu]=\"itemActions\" position=\"bottom-right\">\r\n @if(selection){\r\n <td [ngClass]=\"rowClass\" class=\"align-center\">\r\n <input type=\"checkbox\" [checked]=\"config.isItemSelected(item)\" (change)=\"config.toggleSelection(item)\" />\r\n </td>\r\n }\r\n\r\n @for(col of columns; track col.label){\r\n <td #cell [ngStyle]=\"{ width: col.width + 'px' }\" [ngClass]=\"rowClass\" [class.align-right]=\"col.align === 'right'\" [class.align-center]=\"col.align === 'center'\" (click)=\"checkLink($event, col, item, cell)\" [innerHTML]=\"resolveField(item, col)\"></td>\r\n }\r\n \r\n @if(showActions){\r\n <td class=\"align-center actions\" [ngClass]=\"rowClass\">\r\n @if(itemActions.length > 0){\r\n <dolfo-button color=\"secondary\" [dolfoTooltip]=\"'grid.showActions' | translate\" [dolfoContextMenu]=\"itemActions\" position=\"bottom-right\" openOnClick>\r\n <dolfo-icon name=\"flickr\"></dolfo-icon>\r\n </dolfo-button>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n }\r\n }@else {\r\n <tr>\r\n <td [colSpan]=\"colSpan\" class=\"align-center\">{{ \"grid.noResults\" | translate }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n</div>","import { CommonModule } from \"@angular/common\"\r\nimport { NgModule } from \"@angular/core\"\r\nimport { DirectivesModule } from \"../../../shared/directives/directives.module\"\r\nimport { TranslatePipe } from \"../../../shared/pipes/translate.pipe\"\r\nimport { LayoutModule } from \"../layout.module\"\r\nimport { GridComponent } from \"./grid.component\"\r\n\r\n@NgModule({\r\n declarations: [GridComponent],\r\n imports: [CommonModule, DirectivesModule, LayoutModule, TranslatePipe],\r\n exports: [GridComponent]\r\n})\r\nexport class GridModule{}","import { HttpHandlerFn, HttpRequest } from \"@angular/common/http\"\r\nimport { inject } from \"@angular/core\"\r\nimport { StorageValues } from \"../interfaces\"\r\nimport { TranslateService } from \"../services\"\r\n\r\nexport const authInterceptor = (req: HttpRequest<unknown>, next: HttpHandlerFn) => {\r\n const translateService = inject(TranslateService),\r\n clone = req.clone({\r\n headers: req.headers.set(\"Client-lang\", translateService.getLang().name)\r\n })\r\n\r\n if (!!localStorage.getItem(StorageValues.TOKEN)) {\r\n return next(clone.clone({\r\n headers: clone.headers.set(\"Authorization\", \"Bearer \" + localStorage.getItem(StorageValues.TOKEN))\r\n }))\r\n }\r\n\r\n return next(clone)\r\n}\r\n","import { HttpErrorResponse, HttpHandlerFn, HttpRequest } from \"@angular/common/http\"\r\nimport { inject } from \"@angular/core\"\r\nimport { catchError, throwError } from \"rxjs\"\r\nimport { StorageValues } from \"../interfaces\"\r\nimport { NotificationService, TranslateService } from \"../services\"\r\n\r\nexport const errorInterceptor = (req: HttpRequest<unknown>, next: HttpHandlerFn) => {\r\n const notificationService = inject(NotificationService),\r\n translateService = inject(TranslateService)\r\n\r\n return next(req).pipe(\r\n catchError(err => {\r\n if(err instanceof HttpErrorResponse){\r\n if(err.status === 401)\r\n localStorage.removeItem(StorageValues.TOKEN)\r\n \r\n notificationService.show({\r\n type: \"error\",\r\n title: translateService.translate(\"dialog.errorApi\"),\r\n message: typeof err.error === \"string\" ? err.error : err.message\r\n })\r\n }\r\n\r\n return throwError(() => err)\r\n })\r\n )\r\n}"],"mappings":"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"}
|