@updevs/components 1.0.0-alpha.92 → 1.0.0-alpha.94

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/button/button.component.d.ts +2 -1
  2. package/esm2022/button/button.component.mjs +6 -3
  3. package/esm2022/card/card.component.mjs +1 -1
  4. package/esm2022/dropdown/dropdown.component.mjs +1 -1
  5. package/esm2022/form/components/dynamic-field/dynamic-field.component.mjs +1 -1
  6. package/esm2022/form/form.component.mjs +1 -1
  7. package/esm2022/form-controls/date-picker/date-picker.component.mjs +1 -1
  8. package/esm2022/form-controls/file-upload/file-upload.component.mjs +1 -1
  9. package/esm2022/form-controls/select/components/multiple/select-multiple.component.mjs +1 -1
  10. package/esm2022/form-controls/select/components/single/select.component.mjs +1 -1
  11. package/esm2022/form-controls/time-picker/time-picker.component.mjs +1 -1
  12. package/esm2022/form-controls/time-picker/time-selector/time-selector.component.mjs +1 -1
  13. package/esm2022/layout/pages/auth-flow/login/login.component.mjs +1 -1
  14. package/esm2022/layout/partials/page-header/page-header.component.mjs +1 -1
  15. package/esm2022/modal/components/modal-container/modal-container.component.mjs +1 -1
  16. package/esm2022/paginator/paginator.component.mjs +1 -1
  17. package/esm2022/pricing/pricing-cards/pricing-cards.component.mjs +1 -1
  18. package/esm2022/pricing/pricing-table/pricing-table.component.mjs +1 -1
  19. package/esm2022/table/components/filter-row/filter-row.component.mjs +1 -1
  20. package/esm2022/table/components/save-search/save-search.component.mjs +1 -1
  21. package/esm2022/table/components/search-section/search-section.component.mjs +7 -6
  22. package/esm2022/table/table.component.mjs +1 -1
  23. package/fesm2022/updevs-components-button.mjs +5 -2
  24. package/fesm2022/updevs-components-button.mjs.map +1 -1
  25. package/fesm2022/updevs-components-card.mjs +1 -1
  26. package/fesm2022/updevs-components-card.mjs.map +1 -1
  27. package/fesm2022/updevs-components-dropdown.mjs +1 -1
  28. package/fesm2022/updevs-components-dropdown.mjs.map +1 -1
  29. package/fesm2022/updevs-components-form-controls-date-picker.mjs +1 -1
  30. package/fesm2022/updevs-components-form-controls-date-picker.mjs.map +1 -1
  31. package/fesm2022/updevs-components-form-controls-file-upload.mjs +1 -1
  32. package/fesm2022/updevs-components-form-controls-file-upload.mjs.map +1 -1
  33. package/fesm2022/updevs-components-form-controls-select.mjs +2 -2
  34. package/fesm2022/updevs-components-form-controls-select.mjs.map +1 -1
  35. package/fesm2022/updevs-components-form-controls-time-picker.mjs +2 -2
  36. package/fesm2022/updevs-components-form-controls-time-picker.mjs.map +1 -1
  37. package/fesm2022/updevs-components-form.mjs +2 -2
  38. package/fesm2022/updevs-components-form.mjs.map +1 -1
  39. package/fesm2022/updevs-components-layout.mjs +2 -2
  40. package/fesm2022/updevs-components-layout.mjs.map +1 -1
  41. package/fesm2022/updevs-components-modal.mjs +1 -1
  42. package/fesm2022/updevs-components-modal.mjs.map +1 -1
  43. package/fesm2022/updevs-components-paginator.mjs +1 -1
  44. package/fesm2022/updevs-components-paginator.mjs.map +1 -1
  45. package/fesm2022/updevs-components-pricing.mjs +2 -2
  46. package/fesm2022/updevs-components-pricing.mjs.map +1 -1
  47. package/fesm2022/updevs-components-table.mjs +9 -8
  48. package/fesm2022/updevs-components-table.mjs.map +1 -1
  49. package/package.json +24 -24
  50. package/table/components/search-section/search-section.component.d.ts +14 -13
@@ -1 +1 @@
1
- {"version":3,"file":"updevs-components-layout.mjs","sources":["../../../../libs/components/layout/src/abstractions/base-page.component.ts","../../../../libs/components/layout/src/partials/footer/footer.component.ts","../../../../libs/components/layout/src/partials/footer/footer.component.html","../../../../libs/components/layout/src/partials/footer/footer.module.ts","../../../../libs/components/layout/src/partials/header/header.component.ts","../../../../libs/components/layout/src/partials/header/header.component.html","../../../../libs/components/layout/src/partials/header/header.module.ts","../../../../libs/components/layout/src/models/login-page-config.model.ts","../../../../libs/components/layout/src/models/security-layout-config.model.ts","../../../../libs/components/layout/src/models/upd-layout-config.model.ts","../../../../libs/components/layout/src/tools/layout.constants.ts","../../../../libs/components/layout/src/services/upd-layout-config.service.ts","../../../../libs/components/layout/src/abstractions/base.layout.ts","../../../../libs/components/layout/src/layouts/blank-layout/blank-layout.component.ts","../../../../libs/components/layout/src/layouts/blank-layout/blank-layout.component.html","../../../../libs/components/layout/src/layouts/blank-layout/blank-layout.module.ts","../../../../libs/components/layout/src/partials/sidebar/sidebar.component.ts","../../../../libs/components/layout/src/partials/sidebar/sidebar.component.html","../../../../libs/components/layout/src/partials/page-header/page-header.component.ts","../../../../libs/components/layout/src/partials/page-header/page-header.component.html","../../../../libs/components/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.ts","../../../../libs/components/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.html","../../../../libs/components/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.module.ts","../../../../libs/components/layout/src/pages/auth-flow/logged-out/logged-out.component.ts","../../../../libs/components/layout/src/pages/auth-flow/logged-out/logged-out.component.html","../../../../libs/components/layout/src/pages/auth-flow/login/login.component.ts","../../../../libs/components/layout/src/pages/auth-flow/login/login.component.html","../../../../libs/components/layout/src/pages/auth-flow/oauth-callback/oauth-callback.component.ts","../../../../libs/components/layout/src/pages/auth-flow/oauth-callback/oauth-callback.component.html","../../../../libs/components/layout/src/pages/auth-flow/auth-flow-routing.module.ts","../../../../libs/components/layout/src/pages/auth-flow/auth-flow.module.ts","../../../../libs/components/layout/src/upd-layout.module.ts","../../../../libs/components/layout/src/updevs-components-layout.ts"],"sourcesContent":["import { OnDestroy, Directive, inject } from '@angular/core';\nimport { BaseComponent, LayoutService } from '@updevs/sdk/layout';\n\n/**\n * Basic page structure.\n */\n@Directive()\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport abstract class BasePageComponent extends BaseComponent implements OnDestroy {\n protected readonly _layoutService = inject(LayoutService);\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this._layoutService.pageHeader.set(undefined);\n }\n}\n","import { Component, HostBinding, OnInit, OnChanges, SimpleChanges, ViewEncapsulation, inject } from '@angular/core';\nimport { LinkModel } from '@updevs/sdk/core';\nimport { BaseComponent, LayoutService } from '@updevs/sdk/layout';\n\n@Component({\n selector: 'upd-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class FooterComponent extends BaseComponent implements OnInit, OnChanges {\n @HostBinding('class') wrapperClasses = '';\n\n /**\n * Whether the footer will always be shown.\n */\n isSticky = false;\n /**\n * Whether the footer is transparent or not.\n */\n isTransparent = true;\n /**\n * Links.\n */\n links: LinkModel[] = [];\n /**\n * Current year.\n */\n currentYear = new Date().getFullYear();\n /**\n * Version of the application.\n */\n version?: string;\n\n readonly layoutService = inject(LayoutService);\n\n private baseWrapperClasses = 'footer d-print-none';\n\n ngOnInit(): void {\n this.updateWrapperClasses();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!!changes['isSticky'].currentValue || !!changes['isTransparent'].currentValue) {\n this.updateWrapperClasses();\n }\n }\n\n private updateWrapperClasses(): void {\n const stickyBottomCls = this.isSticky ? ' sticky-bottom' : '';\n const transparentCls = this.isTransparent ? ' footer-transparent' : '';\n this.wrapperClasses = `${this.baseWrapperClasses}${stickyBottomCls}${transparentCls}`;\n }\n}\n","<div class=\"container-xl\">\n <div class=\"row text-center align-items-center flex-row-reverse\">\n <div class=\"col-lg-auto ms-lg-auto\">\n @if (!!layoutService.rightFooter()) {\n <ng-container [ngTemplateOutlet]=\"layoutService.rightFooter()!\"></ng-container>\n }\n\n @if (links.length > 0) {\n <ul class=\"list-inline list-inline-dots mb-0\">\n @for (link of links; track link) {\n <li class=\"list-inline-item\">\n <a href=\"{{link.url}}\" target=\"{{link.target}}\" class=\"link-secondary\">\n <span [innerHTML]=\"link.text\"></span>\n </a>\n </li>\n }\n </ul>\n }\n </div>\n <div class=\"col-12 col-lg-auto mt-3 mt-lg-0\">\n <ul class=\"list-inline list-inline-dots mb-0\">\n <li class=\"list-inline-item\">\n <ng-container *transloco=\"let t; prefix: 'UpDevs.Footer'\">\n {{ t('Prefix') }} {{ t('Symbol') }} {{ currentYear }} {{ t('Suffix') }}\n </ng-container>\n </li>\n @if (!!version) {\n <li class=\"list-inline-item\">\n {{ version }}\n </li>\n }\n </ul>\n\n @if (!!layoutService.leftFooter()) {\n <ng-container [ngTemplateOutlet]=\"layoutService.leftFooter()!\"></ng-container>\n }\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoModule } from '@jsverse/transloco';\n\nimport { FooterComponent } from './footer.component';\n\n@NgModule({\n imports: [\n CommonModule,\n TranslocoModule\n ],\n declarations: [\n FooterComponent\n ],\n exports: [\n FooterComponent\n ]\n})\nexport class FooterModule {}\n","import {\n Component,\n ViewEncapsulation,\n HostBinding,\n OnInit,\n inject,\n computed,\n signal,\n viewChild,\n ElementRef, input\n} from '@angular/core';\nimport { TablerIconsType } from '@updevs/icons';\nimport { TextService } from '@updevs/sdk';\nimport { BaseComponent, LayoutService, PreferencesStorage, UpdCoreLayoutConfigService } from '@updevs/sdk/layout';\nimport { DropdownItem } from '@updevs/components/dropdown';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { NotificationModel, NotificationsService } from '@updevs/sdk/notifications';\nimport { SecurityStorage } from '@updevs/sdk/security';\n\nimport { HeaderStyleType } from './header-style.type';\n\n@Component({\n selector: 'upd-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class HeaderComponent extends BaseComponent implements OnInit {\n @HostBinding('class') get classes(): string {\n return this.wrapperClasses();\n }\n\n languageSwitcherRef = viewChild('languageSwitcherBtn', { read: ElementRef });\n notificationsRef = viewChild('notificationsBtn', { read: ElementRef });\n loggedUserRef = viewChild('loggedUserBtn', { read: ElementRef });\n\n isLanguageSwitcherDropdownOpen = false;\n isNotificationsDropdownOpen = false;\n isLoggedUserDropdownOpen = false;\n\n readonly style = input<HeaderStyleType>('light');\n readonly nextThemeIcon = computed<TablerIconsType>(() => this.currentPreferences()?.isDarkTheme ? 'sun' : 'moon-stars');\n readonly currentNotificationsIcon = computed<TablerIconsType>(() => this.hasNewNotifications() ? 'bell-ringing' : 'bell');\n readonly hasNewNotifications = computed(() => this.currentNotifications().some(n => !n.dateRead));\n readonly userInfo = computed(() => this.securityStorage.getUserInfo());\n readonly textService = inject(TextService);\n readonly isSidebarMobileOpen = signal(false);\n readonly shouldBlinkIfNewNotifications = computed(() => !!this.coreLayoutConfigService.config.shouldBlinkIfNewNotifications);\n readonly languagesOptions = computed<DropdownItem[]>(() => {\n const allLanguagesOptions: DropdownItem[] = [];\n const availableLanguages = (this.coreLayoutConfigService.config.availableLanguages || {});\n\n Object.keys(availableLanguages).forEach(key => {\n allLanguagesOptions.push({\n id: key,\n type: 'default',\n text: availableLanguages[key],\n isActive: this.currentLanguageKey() === key\n });\n });\n\n return allLanguagesOptions;\n });\n readonly loggedUserOptions = computed<DropdownItem[]>(() => {\n const userActions: DropdownItem[] = [];\n\n this.coreLayoutConfigService.config.loggedUserMenuActions.forEach(act => userActions.push({\n id: act.id!(),\n text: act.text!(),\n type: 'default',\n icon: act.iconModel?.()\n }));\n\n return userActions;\n });\n readonly userIdentification = computed(() =>\n !!this.userInfo() ? this.coreLayoutConfigService.config.getUserName(this.userInfo()!) : ''\n );\n readonly userDescription = computed(() =>\n !!this.coreLayoutConfigService.config.getUserDescription\n ? this.coreLayoutConfigService.config.getUserDescription(this.userInfo()!)\n : ''\n );\n readonly latestNotifications = computed(() => {\n const unreadNotifications = this.currentNotifications()\n .filter(n => !n.dateRead)\n .sort((a, b) => new Date(b.dateReceived).getTime() - new Date(a.dateReceived).getTime())\n .slice(0, this.coreLayoutConfigService.config.numberOfLastNotificationsDisplayed);\n const readNotifications = this.currentNotifications()\n .filter(n => !!n.dateRead)\n .sort((a, b) => new Date(b.dateReceived).getTime() - new Date(a.dateReceived).getTime())\n .slice(0, this.coreLayoutConfigService.config.numberOfLastNotificationsDisplayed);\n\n return [\n ...unreadNotifications,\n ...readNotifications\n ].slice(0, this.coreLayoutConfigService.config.numberOfLastNotificationsDisplayed);\n });\n readonly userInitials = computed<string>(() => {\n const firstChar = this.userIdentification().charAt(0);\n const lastSpaceIndex = this.userIdentification().lastIndexOf(' ');\n const firstAfterLastSpace = lastSpaceIndex !== -1 ? this.userIdentification().charAt(lastSpaceIndex + 1) : '';\n\n return `${firstChar}${firstAfterLastSpace}`;\n });\n\n private readonly securityStorage = inject(SecurityStorage);\n private readonly coreLayoutConfigService = inject(UpdCoreLayoutConfigService);\n private readonly layoutService = inject(LayoutService);\n private readonly translocoService = inject(TranslocoService);\n private readonly preferencesStorage = inject(PreferencesStorage);\n private readonly notificationsService = inject(NotificationsService);\n private readonly currentPreferences = this.preferencesStorage.getPreferences();\n private readonly currentNotifications = this.notificationsService.notifications;\n private readonly currentLanguageKey = signal('');\n private readonly wrapperClasses = computed(() => `navbar navbar-expand-md d-none d-lg-flex d-print-none navbar-${this.style()}`);\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n readonly config = computed(() => this.layoutService.mainHeaderConfig());\n\n ngOnInit(): void {\n if (!!this.currentPreferences()?.isDarkTheme) {\n this.layoutService.setDarkMode();\n }\n\n if (!!this.currentPreferences()?.currentLanguageCode) {\n const code = this.currentPreferences()!.currentLanguageCode!;\n\n this.currentLanguageKey.set(code);\n this.translocoService.setActiveLang(code);\n }\n }\n\n switchTheme(): void {\n this.layoutService.toggleDarkMode();\n }\n\n switchLanguage(item: DropdownItem): void {\n this.currentLanguageKey.set(item.id);\n this.translocoService.setActiveLang(item.id);\n this.preferencesStorage.savePreferences({ ...this.currentPreferences(), currentLanguageCode: item.id });\n this.layoutService.notifyUserChangedLanguage(item.id);\n\n this.isLanguageSwitcherDropdownOpen = false;\n }\n\n selectLoggedUserMenuItem(item: DropdownItem): void {\n const btn = this.coreLayoutConfigService.config.loggedUserMenuActions.find(b => b.id!() === item.id);\n\n if (!!btn?.clickFunction) {\n btn.clickFunction!({ data: this.userInfo() });\n }\n }\n\n readNotification(notification: NotificationModel): void {\n if (!notification.dateRead) {\n this.notificationsService.markAsRead(notification.id);\n }\n\n this.notificationsService.clickOnNotification(notification);\n }\n\n removeNotification(notification: NotificationModel): void {\n this.notificationsService.removeNotifications(notification.id);\n }\n\n toggleSidebarOnMobile(): void {\n this.isSidebarMobileOpen.set(!this.isSidebarMobileOpen());\n }\n}\n","<div class=\"container-xl\">\n <button class=\"navbar-toggler\" type=\"button\" (click)=\"toggleSidebarOnMobile()\" [attr.aria-expanded]=\"isSidebarMobileOpen()\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n <div class=\"navbar-nav flex-row order-md-last\">\n <div class=\"d-none d-md-flex me-3\">\n @if (!!config().showThemeSwitcher) {\n <div class=\"nav-item\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"switchTheme()\">\n <upd-icon [tablerIcon]=\"nextThemeIcon()\"></upd-icon>\n </upd-link>\n </div>\n }\n @if (!!config().showLanguageSwitcher && languagesOptions().length > 0) {\n <div class=\"nav-item\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"isLanguageSwitcherDropdownOpen=true\"\n #languageSwitcherBtn>\n <upd-icon tablerIcon=\"language\"></upd-icon>\n </upd-link>\n <upd-dropdown wrapperClasses=\"mt-1\" [isOpen]=\"isLanguageSwitcherDropdownOpen\"\n [dropdownReference]=\"languageSwitcherRef()\" [items]=\"languagesOptions()\" [shouldCloseOnOutsideClick]=\"true\"\n (isOpenChange)=\"isLanguageSwitcherDropdownOpen = $event\" (selectedItem)=\"switchLanguage($event)\">\n </upd-dropdown>\n </div>\n }\n @if (!!config().showNotifications && !!userInfo()) {\n <div class=\"nav-item dropdown d-none d-md-flex\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"isNotificationsDropdownOpen = true\"\n #notificationsBtn>\n <upd-icon [tablerIcon]=\"currentNotificationsIcon()\"></upd-icon>\n @if (hasNewNotifications()) {\n <span class=\"badge bg-red\" [class.badge-blink]=\"shouldBlinkIfNewNotifications()\"></span>\n }\n </upd-link>\n <upd-dropdown wrapperClasses=\"mt-1 dropdown-menu-card\" [isOpen]=\"isNotificationsDropdownOpen\"\n [dropdownReference]=\"notificationsRef()\" [shouldCloseOnOutsideClick]=\"true\"\n (isOpenChange)=\"isNotificationsDropdownOpen = $event\" [minWidth]=\"400\" arrowType=\"right\">\n <div class=\"card\">\n <div class=\"card-header\">\n <h3 class=\"card-title\">{{ 'UpDevs.NotificationCenter.Title' | transloco }}</h3>\n </div>\n @for (notification of latestNotifications(); track notification) {\n <div class=\"list-group list-group-flush list-group-hoverable\" (click)=\"readNotification(notification)\">\n <div class=\"list-group-item\">\n <div class=\"row align-items-center\">\n <div class=\"col-auto\">\n @if (!!notification.dateRead) {\n <span class=\"status-dot d-block\"></span>\n } @else {\n <span class=\"status-dot status-dot-animated bg-primary d-block\"></span>\n }\n </div>\n <div class=\"col text-truncate\">\n <a href=\"javascript:void(0)\" class=\"text-body d-block\"\n [class.fw-bold]=\"!notification.dateRead\">\n {{ textService.getText(notification.title) }}\n </a>\n @if (!!notification.description) {\n <div class=\"d-block text-secondary text-truncate mt-n1\">\n {{ textService.getText(notification.description) }}\n </div>\n }\n </div>\n <div class=\"col-auto\">\n <upd-link [customClasses]=\"['list-group-item-actions']\"\n (clicked)=\"removeNotification(notification)\">\n <upd-icon tablerIcon=\"x\"></upd-icon>\n </upd-link>\n </div>\n </div>\n </div>\n </div>\n } @empty {\n <div class=\"empty\">\n <h1 class=\"text-body-tertiary\">{{ 'UpDevs.NotificationCenter.NoNotifications' | transloco }}</h1>\n </div>\n }\n </div>\n </upd-dropdown>\n </div>\n }\n </div>\n @if (!!config().showUserMenu && !!userInfo()) {\n <div class=\"nav-item dropdown\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"isLoggedUserDropdownOpen = true\" #loggedUserBtn>\n @if (!!userInfo()!.avatar) {\n <span class=\"avatar avatar-sm\" style=\"background-image: url({{userInfo()?.avatar}})\"></span>\n } @else {\n <span class=\"avatar avatar-sm\">{{ userInitials() }}</span>\n }\n\n <div class=\"d-none d-xl-block px-2\">\n <div>{{ userIdentification() }}</div>\n @if (!!userDescription()) {\n <div class=\"mt-1 small text-muted\">{{ userDescription() }}</div>\n }\n </div>\n </upd-link>\n @if (loggedUserOptions().length > 0) {\n <upd-dropdown wrapperClasses=\"mt-1\" [isOpen]=\"isLoggedUserDropdownOpen\" [dropdownReference]=\"loggedUserRef()\"\n [items]=\"loggedUserOptions()\" [shouldCloseOnOutsideClick]=\"true\" (selectedItem)=\"selectLoggedUserMenuItem($event)\"\n (isOpenChange)=\"isLoggedUserDropdownOpen = $event\" arrowType=\"right\">\n </upd-dropdown>\n }\n </div>\n }\n </div>\n @if (!!config().showSearchBar && !!userInfo()) {\n <div class=\"collapse navbar-collapse\" [class.show]=\"isSidebarMobileOpen()\">\n <div class=\"me-2\" [class.w-100]=\"config().shouldUseFullSearchBar\">\n <form autocomplete=\"off\" novalidate>\n <div class=\"input-icon\">\n <span class=\"input-icon-addon\">\n <upd-icon tablerIcon=\"search\"></upd-icon>\n </span>\n <input type=\"text\" value=\"\" class=\"form-control\" placeholder=\"{{'UpDevs.Header.Search' | transloco}}...\">\n </div>\n </form>\n </div>\n </div>\n } @else {\n <div></div>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UpdIconsModule } from '@updevs/icons';\nimport { UpdDropdownModule } from '@updevs/components/dropdown';\nimport { UpdLinkModule } from '@updevs/components/link';\nimport { TranslocoModule } from '@jsverse/transloco';\n\nimport { HeaderComponent } from './header.component';\n\n@NgModule({\n imports: [\n CommonModule,\n TranslocoModule,\n UpdIconsModule,\n UpdDropdownModule,\n UpdLinkModule\n ],\n declarations: [\n HeaderComponent\n ],\n exports: [\n HeaderComponent\n ]\n})\nexport class HeaderModule {}\n","import { ButtonModel } from '@updevs/sdk/layout';\nimport { BgColorStyleType, ColorStyleType } from '@updevs/sdk/types';\n\nimport { LoginPageConfig } from './login-page.config';\n\n/**\n * Configuration of the login page layout.\n */\nexport class LoginPageConfigModel implements LoginPageConfig {\n /**\n * Layout of the login page.\n */\n layout: 'centered-box' | 'box-with-picture' | 'cover';\n\n /**\n * Background color of the login box (exclusive with bgStyle).\n * Should be the name of a CSS class.\n */\n bgColor?: string;\n\n /**\n * Background color of the login box (exclusive with bgColor).\n */\n bgStyle?: BgColorStyleType;\n\n /**\n * Color of the border used in the login page.\n */\n borderColor: ColorStyleType;\n\n /**\n * Color of the sign-in button.\n */\n signInButtonColor: ColorStyleType;\n\n /**\n * Color of all links in the login page.\n */\n linksColor: ColorStyleType;\n\n /**\n * Route with the page to recover the user's password.\n */\n recoverPasswordRoute?: string;\n\n /**\n * Route with the page to register a user.\n */\n signUpRoute?: string;\n\n /**\n * Buttons used for social login (google, facebook, etc).\n */\n socialLoginButtons: ButtonModel[] = [];\n\n constructor(init?: LoginPageConfig) {\n Object.assign(this, init);\n\n this.layout = init?.layout || 'centered-box';\n this.borderColor = init?.borderColor || 'primary';\n this.signInButtonColor = init?.signInButtonColor || 'primary';\n this.linksColor = init?.linksColor || this.signInButtonColor;\n\n if (init?.socialLoginButtons) {\n this.socialLoginButtons = init.socialLoginButtons;\n }\n }\n}\n","import { SecurityLayoutConfig } from './security-layout.config';\nimport { LoginPageConfigModel } from './login-page-config.model';\n\n/**\n * Configuration for the pages related to the security.\n */\nexport class SecurityLayoutConfigModel implements SecurityLayoutConfig {\n /**\n * Configuration of the login page.\n */\n loginPage: LoginPageConfigModel;\n\n constructor(init?: SecurityLayoutConfig) {\n this.loginPage = new LoginPageConfigModel(init?.loginPage);\n }\n}\n","import { UpdLayoutConfig } from './upd-layout.config';\nimport { SecurityLayoutConfigModel } from './security-layout-config.model';\n\n/**\n * Layout configuration.\n */\nexport class UpdLayoutConfigModel implements UpdLayoutConfig {\n /**\n * Main menu title.\n */\n menuTitle?: string;\n /**\n * Whether the menu should start expanded.\n */\n shouldMenuStartExpanded?: boolean;\n /**\n * Main application logo.\n */\n mainLogo?: string;\n /**\n * Small application logo.\n */\n smallLogo?: string;\n /**\n * Background image for the logged out page.\n */\n loggedOutBackground?: string;\n /**\n * Whether the default notifications button should be displayed.\n */\n showNotificationsButton?: boolean;\n /**\n * Whether the report error button should be displayed when an exception is thrown by the server.\n */\n displayReportErrorButton?: boolean;\n /**\n * Whether the logged user's menu should be displayed.\n */\n showUserMenu?: boolean;\n /**\n * Whether the fluid layout (less padding) should be used.\n */\n useFluidLayout?: boolean;\n /**\n * Configuration for the pages related to the security.\n */\n securityLayoutConfig: SecurityLayoutConfigModel;\n\n constructor(init?: UpdLayoutConfig) {\n if (init?.mainLogo === undefined) {\n // this.mainLogo = LogoConstants.defaultLogo; // TODO: add images\n }\n\n if (init?.smallLogo === undefined) {\n // this.smallLogo = LogoConstants.smallLogo;\n }\n\n if (init?.loggedOutBackground === undefined) {\n // this.loggedOutBackground = ImageConstants.loggedOutBackground;\n }\n\n this.menuTitle = init?.menuTitle || 'UpDevs';\n this.showNotificationsButton = init?.showNotificationsButton || true;\n this.showUserMenu = init?.showUserMenu || true;\n this.displayReportErrorButton = init?.displayReportErrorButton || false;\n this.useFluidLayout = init?.useFluidLayout || false;\n this.securityLayoutConfig = new SecurityLayoutConfigModel(init?.securityLayoutConfig);\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { UpdLayoutConfig } from '../models/upd-layout.config';\n\n/**\n * Layout constants.\n */\nexport class LayoutConstants {\n /**\n * Key to inject the default configuration.\n */\n static defaultOptionsKey = 'upd-layout-default-options';\n\n /**\n * Injection token for the default configuration.\n */\n static defaultOptionsInjectionToken = new InjectionToken<UpdLayoutConfig>(LayoutConstants.defaultOptionsKey);\n}\n","import { Injectable, Inject } from '@angular/core';\n\nimport { UpdLayoutConfigModel } from '../models/upd-layout-config.model';\nimport { LayoutConstants } from '../tools/layout.constants';\nimport { UpdLayoutConfig } from '../models/upd-layout.config';\n\n/**\n * Layout configuration data.\n */\n@Injectable()\nexport class UpdLayoutConfigService {\n /**\n * Configuration (See: #upsee[p:models, i:UpdCoreLayoutConfigModel]).\n */\n readonly config: UpdLayoutConfigModel;\n\n constructor(@Inject(LayoutConstants.defaultOptionsInjectionToken) layoutConfig: UpdLayoutConfig) {\n this.config = new UpdLayoutConfigModel(layoutConfig);\n }\n}\n","import { BaseComponent, LayoutService } from '@updevs/sdk/layout';\nimport { inject, OnInit, Directive, OnDestroy } from '@angular/core';\n\nimport { UpdLayoutConfigService } from '../services/upd-layout-config.service';\n\n/**\n * Basic layout structure.\n */\n@Directive()\nexport abstract class BaseLayout extends BaseComponent implements OnInit, OnDestroy {\n protected readonly _layoutConfigService = inject(UpdLayoutConfigService);\n protected readonly _layoutService = inject(LayoutService);\n\n ngOnInit(): void {\n if (this._layoutConfigService.config.useFluidLayout) {\n this._layoutService.addBodyClasses('layout-fluid');\n }\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n\n if (this._layoutConfigService.config.useFluidLayout) {\n this._layoutService.removeBodyClasses('layout-fluid');\n }\n }\n}\n","import { Component, computed, OnInit } from '@angular/core';\n\nimport { BaseLayout } from '../../abstractions/base.layout';\n\n@Component({\n selector: 'upd-blank-layout',\n templateUrl: './blank-layout.component.html',\n styleUrls: ['./blank-layout.component.scss']\n})\nexport class BlankLayoutComponent extends BaseLayout implements OnInit {\n readonly config = computed(() => this._layoutService.mainHeaderConfig());\n\n override ngOnInit() {\n // Overriding layout fluid from parent.\n }\n}\n","<div class=\"page\" [class.page-center]=\"_layoutService.isPageCentered()\">\n @if (!config().shouldHideTopBarIfBlankLayout) {\n <upd-header [style]=\"'transparent'\"></upd-header>\n }\n\n <router-outlet></router-outlet>\n\n @if (!config().shouldHideFooterIfBlankLayout) {\n <upd-footer></upd-footer>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterOutlet } from '@angular/router';\nimport { UpdIconsModule } from '@updevs/icons';\nimport { UpdDropdownModule } from '@updevs/components/dropdown';\nimport { UpdLinkModule } from '@updevs/components/link';\nimport { TranslocoPipe } from '@jsverse/transloco';\n\nimport { FooterModule } from '../../partials/footer/footer.module';\nimport { HeaderModule } from '../../partials/header/header.module';\nimport { BlankLayoutComponent } from './blank-layout.component';\n\n@NgModule({\n imports: [\n CommonModule,\n RouterOutlet,\n TranslocoPipe,\n UpdDropdownModule,\n UpdIconsModule,\n UpdLinkModule,\n FooterModule,\n HeaderModule\n ],\n declarations: [\n BlankLayoutComponent\n ],\n exports: [\n BlankLayoutComponent\n ]\n})\nexport class BlankLayoutModule {}\n","import { Component, HostBinding, ViewEncapsulation, OnInit, inject, signal, computed, viewChild, ElementRef } from '@angular/core';\nimport { Router, NavigationStart } from '@angular/router';\nimport { TextService } from '@updevs/sdk';\nimport { RouteDataModel, MenuService } from '@updevs/sdk/routes';\nimport { BaseComponent, LayoutService, UpdCoreLayoutConfigService } from '@updevs/sdk/layout';\nimport { SecurityStorage } from '@updevs/sdk/security';\nimport { OptionalType } from '@updevs/sdk/types';\nimport { DropdownItem } from '@updevs/components/dropdown';\nimport { filter } from 'rxjs';\n\n@Component({\n selector: 'upd-sidebar',\n templateUrl: './sidebar.component.html',\n styleUrls: ['./sidebar.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class SidebarComponent extends BaseComponent implements OnInit {\n @HostBinding('class') wrapperClasses = 'navbar navbar-vertical navbar-expand-lg';\n @HostBinding('attr.data-bs-theme') theme = 'dark';\n\n menuItems: RouteDataModel[] = [];\n isLoggedUserDropdownOpen = false;\n\n readonly loggedUserRef = viewChild('loggedUserBtn', { read: ElementRef });\n readonly textService = inject(TextService);\n readonly isSidebarMobileOpen = signal(false);\n readonly config = computed(() => this.layoutService.mainHeaderConfig());\n readonly userInfo = computed(() => this.securityStorage.getUserInfo());\n readonly userIdentification = computed(() =>\n !!this.userInfo() ? this.coreLayoutConfigService.config.getUserName(this.userInfo()!) : ''\n );\n readonly userDescription = computed(() =>\n !!this.coreLayoutConfigService.config.getUserDescription\n ? this.coreLayoutConfigService.config.getUserDescription(this.userInfo()!)\n : ''\n );\n readonly loggedUserOptions = computed<DropdownItem[]>(() => {\n const userActions: DropdownItem[] = [];\n\n this.coreLayoutConfigService.config.loggedUserMenuActions.forEach(act => userActions.push({\n id: act.id!(),\n text: act.text!(),\n type: 'default',\n icon: act.iconModel?.()\n }));\n\n return userActions;\n });\n readonly userInitials = computed<string>(() => {\n const firstChar = this.userIdentification().charAt(0);\n const lastSpaceIndex = this.userIdentification().lastIndexOf(' ');\n const firstAfterLastSpace = lastSpaceIndex !== -1 ? this.userIdentification().charAt(lastSpaceIndex + 1) : '';\n\n return `${firstChar}${firstAfterLastSpace}`;\n });\n\n private currentRoute = '';\n private menuItemsBackup: RouteDataModel[] = [];\n\n private readonly router = inject(Router);\n private readonly menuService = inject(MenuService);\n private readonly layoutService = inject(LayoutService);\n private readonly securityStorage = inject(SecurityStorage);\n private readonly coreLayoutConfigService = inject(UpdCoreLayoutConfigService);\n\n ngOnInit(): void {\n this.currentRoute = this.router.url;\n this.menuItems = this.menuService.generateMenu();\n this.menuItemsBackup = [...this.menuItems];\n const menuRefreshSub = this.menuService.refreshSubject.subscribe(() => {\n this.menuItems = [...this.menuService.generateMenu()];\n this.menuItemsBackup = [...this.menuItems];\n\n this.updateActiveRoute();\n });\n const routerSub = this.router.events.pipe(\n filter(event => event instanceof NavigationStart)\n ).subscribe(event => {\n this.currentRoute = (<NavigationStart>event).url;\n this.updateActiveRoute();\n });\n\n this.updateActiveRoute();\n this.addSubscriptions(routerSub, menuRefreshSub);\n }\n\n onMenuItemClick(item: RouteDataModel): void {\n if (item.isLocked) {\n if (!!item.lockedClickFunction) {\n item.lockedClickFunction();\n }\n\n return;\n }\n\n let newMenuItems = this.resetMenuState(this.menuItems);\n newMenuItems = this.setItemActive(newMenuItems, item, this.hasChildren(item) ? !item.isActive : true);\n newMenuItems = this.updateParents(newMenuItems, item);\n this.menuItems = newMenuItems;\n\n if (!!item.clickFunction) {\n item.clickFunction();\n return;\n }\n\n if (this.hasChildren(item)) {\n return;\n }\n\n const fullPath = this.findItemById(this.menuItemsBackup, item.id)!.getFullPath();\n\n this.router.navigate(fullPath).then();\n }\n\n hasChildren(item: RouteDataModel): boolean {\n return (item.children?.length || 0) > 0;\n }\n\n asMenuItem(item: any): RouteDataModel {\n return item as RouteDataModel;\n }\n\n getItemClasses(item: RouteDataModel, activeClass: string, ...classes: string[]): string[] {\n return [\n ...classes,\n item.isActive ? activeClass : '',\n item.isLocked ? 'disabled' : ''\n ];\n }\n\n toggleSidebarOnMobile(): void {\n this.isSidebarMobileOpen.set(!this.isSidebarMobileOpen());\n }\n\n selectLoggedUserMenuItem(item: DropdownItem): void {\n const btn = this.coreLayoutConfigService.config.loggedUserMenuActions.find(b => b.id!() === item.id);\n\n if (!!btn?.clickFunction) {\n btn.clickFunction!({ data: this.userInfo() });\n }\n }\n\n private findActiveNode(item: RouteDataModel, fullPath: string): OptionalType<RouteDataModel> {\n if (item.fullPath === fullPath) {\n return item;\n }\n\n for (const child of item.children) {\n const found = this.findActiveNode(child, fullPath);\n\n if (found) {\n return found;\n }\n }\n\n return undefined;\n }\n\n private updateActiveRoute(): void {\n let newMenuItems = this.resetMenuState(this.menuItems);\n const activePath = this.getActivePath(newMenuItems);\n newMenuItems = this.setActivePath(newMenuItems, activePath);\n this.menuItems = newMenuItems;\n }\n\n private setActivePath(items: RouteDataModel[], path: RouteDataModel[]): RouteDataModel[] {\n if (path.length === 0) {\n return items;\n }\n\n return items.map(item => {\n const pathItem = path.find(p => p.id === item.id);\n\n if (!pathItem) {\n return item;\n }\n\n const newItem = { ...item, isActive: true } as RouteDataModel;\n\n if (newItem.children?.length) {\n newItem.children = this.setActivePath(\n newItem.children,\n path.filter(p => p.parent?.id === newItem.id)\n );\n newItem.children.forEach(child => child.parent = newItem);\n }\n\n return newItem;\n });\n }\n\n private getActivePath(items: RouteDataModel[]): RouteDataModel[] {\n let activeItem: OptionalType<RouteDataModel>;\n\n // Find the deepest active item.\n for (const item of items) {\n activeItem = this.findActiveNode(item, this.currentRoute);\n\n if (activeItem) {\n break;\n }\n }\n\n // Collect parent hierarchy.\n const path: RouteDataModel[] = [];\n\n while (activeItem) {\n path.unshift(activeItem);\n activeItem = activeItem.parent;\n }\n\n return path;\n }\n\n private resetMenuState(items: RouteDataModel[]): RouteDataModel[] {\n return items.map(item => {\n const newItem = { ...item, isActive: false } as RouteDataModel;\n\n if (newItem.children?.length) {\n newItem.children = this.resetMenuState(newItem.children);\n newItem.children.forEach(child => child.parent = newItem);\n }\n\n return newItem;\n });\n }\n\n private setItemActive(items: RouteDataModel[], target: RouteDataModel, isActive: boolean): RouteDataModel[] {\n return items.map(item => {\n if (item.id === target.id) {\n const newItem = { ...item, isActive } as RouteDataModel;\n\n if (newItem.children?.length) {\n newItem.children = this.setItemActive(newItem.children, target, isActive);\n newItem.children.forEach(child => child.parent = newItem);\n }\n\n return newItem;\n }\n\n if (item.children?.length) {\n const newChildren = this.setItemActive(item.children, target, isActive);\n const newItem = { ...item, children: newChildren } as RouteDataModel;\n\n newChildren.forEach(child => child.parent = newItem);\n\n return newItem;\n }\n\n return item;\n });\n }\n\n private updateParents(items: RouteDataModel[], childItem: RouteDataModel): RouteDataModel[] {\n let parent = childItem.parent;\n let updatedItems = [...items];\n\n while (parent) {\n updatedItems = updatedItems.map(item => {\n if (item.id === parent!.id) {\n return { ...parent!, isActive: true } as RouteDataModel;\n }\n\n return item;\n });\n parent = parent.parent;\n }\n\n return updatedItems;\n }\n\n private findItemById(items: RouteDataModel[], targetId: any): OptionalType<RouteDataModel> {\n for (const item of items) {\n if (item.id === targetId) {\n return item;\n }\n\n if (item.children?.length) {\n const child = this.findItemById(item.children, targetId);\n\n if (!!child) {\n return child;\n }\n }\n }\n\n return undefined;\n }\n}\n","<div class=\"container-fluid\">\n <button class=\"navbar-toggler\" type=\"button\" (click)=\"toggleSidebarOnMobile()\" [attr.aria-expanded]=\"isSidebarMobileOpen()\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n <h1 class=\"navbar-brand navbar-brand-autodark\">\n <a href=\".\">\n <img width=\"110\" height=\"32\" class=\"navbar-brand-image upd-brand-logo\" />\n </a>\n </h1>\n\n @if (!!config().showUserMenu && !!userInfo()) {\n <div class=\"navbar-nav flex-row d-lg-none\">\n <div class=\"nav-item dropdown\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"isLoggedUserDropdownOpen = true\" #loggedUserBtn>\n @if (!!userInfo()!.avatar) {\n <span class=\"avatar avatar-sm\" style=\"background-image: url({{userInfo()?.avatar}})\"></span>\n } @else {\n <span class=\"avatar avatar-sm\">{{ userInitials() }}</span>\n }\n\n <div class=\"d-none d-xl-block px-2\">\n <div>{{ userIdentification() }}</div>\n @if (!!userDescription()) {\n <div class=\"mt-1 small text-muted\">{{ userDescription() }}</div>\n }\n </div>\n </upd-link>\n @if (loggedUserOptions().length > 0) {\n <upd-dropdown wrapperClasses=\"mt-1\" [isOpen]=\"isLoggedUserDropdownOpen\" [dropdownReference]=\"loggedUserRef()\"\n [items]=\"loggedUserOptions()\" [shouldCloseOnOutsideClick]=\"true\" (selectedItem)=\"selectLoggedUserMenuItem($event)\"\n (isOpenChange)=\"isLoggedUserDropdownOpen = $event\" arrowType=\"right\">\n </upd-dropdown>\n }\n </div>\n </div>\n }\n\n <div class=\"collapse navbar-collapse\" [class.show]=\"isSidebarMobileOpen()\">\n <ul class=\"navbar-nav pt-lg-3\">\n @for (item of menuItems; track item.id) {\n <li class=\"nav-item\" [class.dropdown]=\"hasChildren(item)\" [class.active]=\"item.isActive\">\n <ng-container [ngTemplateOutlet]=\"itemTpl\" [ngTemplateOutletContext]=\"{menuItem: item}\"></ng-container>\n </li>\n }\n </ul>\n </div>\n</div>\n\n<ng-template #itemTpl let-item=\"menuItem\">\n <upd-link [isNavigation]=\"true\" (clicked)=\"onMenuItemClick(item)\"\n [customClasses]=\"getItemClasses(item, 'show', hasChildren(item) ? 'dropdown-toggle':'')\">\n <ng-container [ngTemplateOutlet]=\"linkContent\" [ngTemplateOutletContext]=\"{menuItem: item}\"></ng-container>\n </upd-link>\n @if (hasChildren(item)) {\n <ng-container [ngTemplateOutlet]=\"childrenTpl\" [ngTemplateOutletContext]=\"{menuItem: item}\"></ng-container>\n }\n</ng-template>\n\n<ng-template #linkContent let-item=\"menuItem\">\n @if (!!item.icon) {\n <span class=\"nav-link-icon d-md-none d-lg-inline-block\">\n <upd-icon [model]=\"item.icon\"></upd-icon>\n </span>\n }\n <span class=\"nav-link-title\">{{ textService.getText(item.title) }}</span>\n @if (item.isLocked) {\n <upd-icon class=\"ms-auto\" [model]=\"{tablerIcon: 'lock'}\"></upd-icon>\n }\n</ng-template>\n\n<ng-template #childrenTpl let-item=\"menuItem\">\n <div class=\"dropdown-menu\" [class.show]=\"item.isActive\">\n <div class=\"dropdown-menu-columns\">\n <div class=\"dropdown-menu-column\">\n @for (child of asMenuItem(item).children; track child.id) {\n @if (!hasChildren(child)) {\n <upd-link (clicked)=\"onMenuItemClick(child)\" [customClasses]=\"getItemClasses(child, 'active', 'dropdown-item')\">\n <ng-container [ngTemplateOutlet]=\"linkContent\" [ngTemplateOutletContext]=\"{menuItem: child}\"></ng-container>\n </upd-link>\n } @else {\n <div class=\"dropend\">\n <upd-link (clicked)=\"onMenuItemClick(child)\" [customClasses]=\"getItemClasses(child, 'active', 'dropdown-item')\">\n <ng-container [ngTemplateOutlet]=\"linkContent\" [ngTemplateOutletContext]=\"{menuItem: child}\"></ng-container>\n </upd-link>\n <div class=\"dropdown-menu\" [class.show]=\"child.isActive\">\n @for (grandchild of child.children; track grandchild) {\n <upd-link (clicked)=\"onMenuItemClick(grandchild)\"\n [customClasses]=\"getItemClasses(grandchild, 'active', 'dropdown-item')\">\n <ng-container [ngTemplateOutlet]=\"linkContent\" [ngTemplateOutletContext]=\"{menuItem: grandchild}\">\n </ng-container>\n </upd-link>\n }\n </div>\n </div>\n }\n }\n </div>\n </div>\n </div>\n</ng-template>\n","import { Component, input } from '@angular/core';\nimport { PageHeaderModel } from '@updevs/sdk/layout';\n\n@Component({\n selector: 'upd-page-header',\n templateUrl: './page-header.component.html',\n styleUrls: ['./page-header.component.scss']\n})\nexport class PageHeaderComponent {\n model = input.required<PageHeaderModel>();\n}\n","<div class=\"page-header d-print-none\">\n <div class=\"container-xl\">\n <div class=\"row g-2 align-items-center\">\n <div class=\"col\">\n <div class=\"page-pretitle\">\n {{ model().titleHeader }}\n </div>\n <h2 class=\"page-title\">\n {{ model().title }}\n </h2>\n </div>\n @if (model().actionButtons.length > 0) {\n <div class=\"col-auto ms-auto d-print-none\">\n <div class=\"btn-list\">\n @for (btn of model().actionButtons; track btn) {\n <upd-button [model]=\"btn\"></upd-button>\n }\n </div>\n </div>\n }\n </div>\n </div>\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\nimport { BaseLayout } from '../../abstractions/base.layout';\n\n@Component({\n selector: 'upd-vertical-sidebar-layout',\n templateUrl: './vertical-sidebar-layout.component.html',\n styleUrls: ['./vertical-sidebar-layout.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class VerticalSidebarLayoutComponent extends BaseLayout {}\n","<div class=\"page\">\n <upd-sidebar></upd-sidebar>\n <upd-header></upd-header>\n\n <div class=\"page-wrapper\">\n @if (!!_layoutService.pageHeader()) {\n <upd-page-header [model]=\"_layoutService.pageHeader()!\"></upd-page-header>\n }\n <div class=\"page-body\">\n <div class=\"container-xl\">\n <router-outlet></router-outlet>\n </div>\n </div>\n <upd-footer></upd-footer>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { UpdIconsModule } from '@updevs/icons';\nimport { UpdCoreLayoutModule } from '@updevs/sdk/layout';\nimport { UpdButtonModule } from '@updevs/components/button';\nimport { UpdLinkModule } from '@updevs/components/link';\nimport { UpdDropdownModule } from '@updevs/components/dropdown';\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\n\nimport * as en from '../../assets/i18n/en.json';\nimport * as pt from '../../assets/i18n/pt.json';\nimport { FooterModule } from '../../partials/footer/footer.module';\nimport { HeaderModule } from '../../partials/header/header.module';\nimport { VerticalSidebarLayoutComponent } from './vertical-sidebar-layout.component';\nimport { SidebarComponent } from '../../partials/sidebar/sidebar.component';\nimport { PageHeaderComponent } from '../../partials/page-header/page-header.component';\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n TranslocoModule,\n UpdIconsModule,\n UpdCoreLayoutModule,\n UpdButtonModule,\n UpdLinkModule,\n UpdDropdownModule,\n FooterModule,\n HeaderModule\n ],\n declarations: [\n VerticalSidebarLayoutComponent,\n SidebarComponent,\n PageHeaderComponent\n ],\n exports: [\n VerticalSidebarLayoutComponent,\n SidebarComponent,\n PageHeaderComponent\n ]\n})\nexport class VerticalSidebarLayoutModule {\n constructor(translocoService: TranslocoService) {\n translocoService.setFallbackLangForMissingTranslation({ fallbackLang: 'en' });\n translocoService.setTranslation(en, 'en');\n translocoService.setTranslation(pt, 'pt');\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'upd-logged-out',\n templateUrl: './logged-out.component.html',\n styleUrls: ['./logged-out.component.scss']\n})\nexport class LoggedOutComponent {\n\n}\n","<p>logged-out works!</p>\n","import { Component, inject, OnDestroy, OnInit, model, signal } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { FormGroup, Validators } from '@angular/forms';\nimport { LayoutService } from '@updevs/sdk/layout';\nimport { AuthService } from '@updevs/sdk/security';\nimport { FormRowModel, DynamicFieldType, InputFieldModel } from '@updevs/components/form';\nimport { finalize } from 'rxjs';\n\nimport { UpdLayoutConfigService } from '../../../services/upd-layout-config.service';\n\n@Component({\n selector: 'upd-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.scss']\n})\nexport class LoginComponent implements OnInit, OnDestroy {\n formGroup = model(new FormGroup({}));\n formRows: FormRowModel[] = [];\n isSigningIn = signal(false);\n readonly layoutConfigService = inject(UpdLayoutConfigService);\n readonly config = this.layoutConfigService.config.securityLayoutConfig.loginPage;\n\n get border(): string {\n return `border-${this.config.borderColor}`;\n }\n\n get linkClasses(): string[] {\n return [`link-${this.config.linksColor}`];\n }\n\n private get boxBgColor(): string {\n return this.config.bgColor || (!!this.config.bgStyle ? `bg-${this.config.bgStyle}` : '') || 'bg-white';\n }\n\n private readonly bodyClasses = ['border-top-wide', this.border, 'd-flex', 'flex-column'];\n private readonly router = inject(Router);\n private readonly authService = inject(AuthService);\n private readonly layoutService = inject(LayoutService);\n\n ngOnInit(): void {\n this.layoutService.addBodyClasses(this.boxBgColor);\n\n if (this.config.layout !== 'cover') {\n this.layoutService.addBodyClasses(...this.bodyClasses);\n }\n\n this.formRows = [\n {\n fields: [\n {\n name: 'username',\n type: DynamicFieldType.Input,\n colSize: { default: 12 },\n label: { text: 'UpDevs.Login.Email', isTranslated: false },\n validators: [Validators.required, Validators.minLength(3)],\n shouldSubmitOnEnter: true\n } as InputFieldModel\n ]\n },\n {\n fields: [\n {\n name: 'password',\n type: DynamicFieldType.Input,\n inputType: 'password',\n colSize: { default: 12 },\n label: { text: 'UpDevs.Login.Password', isTranslated: false },\n validators: [Validators.required, Validators.minLength(3)],\n shouldSubmitOnEnter: true\n } as InputFieldModel\n ]\n },\n {\n fields: [\n {\n name: 'rememberMe',\n type: DynamicFieldType.Checkbox,\n colSize: { default: 12 },\n label: { text: 'UpDevs.Login.RememberMe', isTranslated: false },\n initValue: false\n }\n ]\n }\n ];\n }\n\n ngOnDestroy(): void {\n this.layoutService.removeBodyClasses(this.boxBgColor);\n\n if (this.config.layout !== 'cover') {\n this.layoutService.removeBodyClasses(...this.bodyClasses);\n }\n }\n\n login(): void {\n // TODO: handle remember me\n this.isSigningIn.set(true);\n this.authService.login((this.formGroup().value as any).username, (this.formGroup().value as any).password)\n .pipe(finalize(() => this.isSigningIn.set(false)))\n .subscribe();\n }\n\n goToRecoverPasswordPage(): void {\n this.router.navigate([this.config.recoverPasswordRoute]).then();\n }\n\n goToSignUpPage(): void {\n this.router.navigate([this.config.signUpRoute]).then();\n }\n}\n","<ng-container *transloco=\"let t; prefix: 'UpDevs.Login'\">\n <upd-header [style]=\"'transparent'\"></upd-header>\n <div class=\"page page-center\">\n @switch (config.layout) {\n @case ('centered-box') {\n <div class=\"container container-tight py-4\">\n <ng-container [ngTemplateOutlet]=\"loginCardTpl\"></ng-container>\n </div>\n }\n @case ('box-with-picture') {\n <div class=\"container container-normal py-4\">\n <div class=\"row align-items-center g-4\">\n <div class=\"col-lg\">\n <div class=\"container-tight\">\n <ng-container [ngTemplateOutlet]=\"loginCardTpl\"></ng-container>\n </div>\n </div>\n <div class=\"col-lg d-none d-lg-block\">\n <img height=\"300\" class=\"d-block mx-auto upd-right-login-image\" />\n </div>\n </div>\n </div>\n }\n @case ('cover') {\n <div class=\"row g-0 flex-fill\">\n <div class=\"col-12 col-lg-6 col-xl-4 border-top-wide d-flex flex-column justify-content-center\"\n [ngClass]=\"border\">\n <div class=\"container container-tight my-5 px-lg-5\">\n <ng-container [ngTemplateOutlet]=\"headerTpl\"></ng-container>\n\n <h2 class=\"h3 text-center mb-3\">\n {{ t('Title') }}\n </h2>\n\n <ng-container [ngTemplateOutlet]=\"loginFormTpl\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"socialLoginTpl\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"noAccountTpl\"></ng-container>\n </div>\n </div>\n <div class=\"col-12 col-lg-6 col-xl-8 d-none d-lg-block\">\n <div class=\"bg-cover h-100 min-vh-100 upd-right-login-cover-image\"></div>\n </div>\n </div>\n }\n }\n </div>\n <upd-footer></upd-footer>\n\n <ng-template #loginCardTpl>\n <ng-container [ngTemplateOutlet]=\"headerTpl\"></ng-container>\n <upd-card [removeBorder]=\"true\">\n <div class=\"p-4\">\n <h2 class=\"h2 text-center mb-4\">\n {{ t('Title') }}\n </h2>\n <ng-container [ngTemplateOutlet]=\"loginFormTpl\"></ng-container>\n </div>\n <ng-container [ngTemplateOutlet]=\"socialLoginTpl\"></ng-container>\n </upd-card>\n <ng-container [ngTemplateOutlet]=\"noAccountTpl\"></ng-container>\n </ng-template>\n\n <ng-template #loginFormTpl>\n <upd-form [rows]=\"formRows\" [hasActionsSection]=\"false\" [(formGroup)]=\"formGroup\" (submitted)=\"login()\"></upd-form>\n <div class=\"form-footer\">\n <upd-button [colorStyle]=\"config.signInButtonColor\" (clicked)=\"login()\" [isLoading]=\"isSigningIn()\"\n customClasses=\"w-100\">\n {{ t('SignIn') }}\n </upd-button>\n @if (!!config.recoverPasswordRoute) {\n <div class=\"d-flex mt-2\">\n <upd-link class=\"ms-auto\" [customClasses]=\"linkClasses\" (clicked)=\"goToRecoverPasswordPage()\">\n {{ t('RecoverPassword') }}\n </upd-link>\n </div>\n }\n </div>\n </ng-template>\n\n <ng-template #socialLoginTpl>\n @if (config.socialLoginButtons.length > 0) {\n <div class=\"hr-text\">\n {{ t('Or') }}\n </div>\n <div class=\"card-body\">\n <div class=\"row\">\n @for (btn of config.socialLoginButtons; track btn) {\n <div class=\"col\">\n <upd-button [model]=\"btn\"></upd-button>\n </div>\n }\n </div>\n </div>\n }\n </ng-template>\n\n <ng-template #headerTpl>\n <div class=\"text-center mb-4\">\n <a href=\".\" class=\"navbar-brand navbar-brand-autodark\">\n <img height=\"36\" class=\"navbar-brand-image upd-brand-logo\" />\n </a>\n </div>\n </ng-template>\n\n <ng-template #noAccountTpl>\n @if (!!config.signUpRoute) {\n <div class=\"text-center text-muted mt-3\">\n {{ t('NoAccountYet') }}\n <upd-link [customClasses]=\"linkClasses\" (clicked)=\"goToSignUpPage()\">{{ t('SignUp') }}</upd-link>\n </div>\n }\n </ng-template>\n</ng-container>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'upd-oauth-callback',\n templateUrl: './oauth-callback.component.html',\n styleUrls: ['./oauth-callback.component.scss']\n})\nexport class OauthCallbackComponent {\n\n}\n","<p>oauth-callback works!</p>\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { OauthCallbackComponent } from './oauth-callback/oauth-callback.component';\nimport { LoggedOutComponent } from './logged-out/logged-out.component';\nimport { LoginComponent } from './login/login.component';\n\n/**\n * Auth flow routes.\n */\nexport const routes: Routes = [\n { path: 'oauth/callback', component: OauthCallbackComponent },\n { path: 'logged-out', component: LoggedOutComponent },\n { path: 'login', component: LoginComponent }\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, { useHash: true })],\n exports: [RouterModule]\n})\nexport class AuthFlowRoutingModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { UpdButtonModule } from '@updevs/components/button';\nimport { UpdLinkModule } from '@updevs/components/link';\nimport { UpdIconsModule } from '@updevs/icons';\nimport { UpdCardModule } from '@updevs/components/card';\nimport { UpdFormModule } from '@updevs/components/form';\nimport { TranslocoDirective } from '@jsverse/transloco';\n\nimport { FooterModule } from '../../partials/footer/footer.module';\nimport { HeaderModule } from '../../partials/header/header.module';\nimport { LoginComponent } from './login/login.component';\nimport { OauthCallbackComponent } from './oauth-callback/oauth-callback.component';\nimport { LoggedOutComponent } from './logged-out/logged-out.component';\nimport { AuthFlowRoutingModule } from './auth-flow-routing.module';\n\n@NgModule({\n imports: [\n CommonModule,\n AuthFlowRoutingModule,\n UpdButtonModule,\n UpdIconsModule,\n FormsModule,\n TranslocoDirective,\n UpdLinkModule,\n UpdCardModule,\n UpdFormModule,\n FooterModule,\n HeaderModule\n ],\n declarations: [\n LoginComponent,\n OauthCallbackComponent,\n LoggedOutComponent\n ],\n exports: [\n LoginComponent,\n OauthCallbackComponent,\n LoggedOutComponent\n ]\n})\nexport class AuthFlowModule {\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UpdCoreLayoutModule } from '@updevs/sdk/layout';\nimport { UpdNotificationsModule } from '@updevs/sdk/notifications';\n\nimport { UpdLayoutConfig } from './models/upd-layout.config';\nimport { LayoutConstants } from './tools/layout.constants';\nimport { UpdLayoutConfigService } from './services/upd-layout-config.service';\n\n/**\n * Layout module.\n */\n@NgModule({\n imports: [\n CommonModule,\n UpdCoreLayoutModule,\n UpdNotificationsModule\n ],\n providers: [\n UpdLayoutConfigService\n ]\n})\nexport class UpdLayoutModule {\n /**\n * Sets up the layout module with the provided configuration.\n * @param config Configuration (See: #updsee[p:abstractions, i:UpdCoreLayoutConfig]).\n */\n static forRoot(config: UpdLayoutConfig): ModuleWithProviders<UpdLayoutModule> {\n return {\n ngModule: UpdLayoutModule,\n providers: [\n { provide: LayoutConstants.defaultOptionsInjectionToken, useValue: config }\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i4","i2.FooterComponent","i3.HeaderComponent","i4.SidebarComponent","i5.PageHeaderComponent","en","pt","i3","i5","i8.FooterComponent","i9.HeaderComponent"],"mappings":"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"}
1
+ {"version":3,"file":"updevs-components-layout.mjs","sources":["../../../../libs/components/layout/src/abstractions/base-page.component.ts","../../../../libs/components/layout/src/partials/footer/footer.component.ts","../../../../libs/components/layout/src/partials/footer/footer.component.html","../../../../libs/components/layout/src/partials/footer/footer.module.ts","../../../../libs/components/layout/src/partials/header/header.component.ts","../../../../libs/components/layout/src/partials/header/header.component.html","../../../../libs/components/layout/src/partials/header/header.module.ts","../../../../libs/components/layout/src/models/login-page-config.model.ts","../../../../libs/components/layout/src/models/security-layout-config.model.ts","../../../../libs/components/layout/src/models/upd-layout-config.model.ts","../../../../libs/components/layout/src/tools/layout.constants.ts","../../../../libs/components/layout/src/services/upd-layout-config.service.ts","../../../../libs/components/layout/src/abstractions/base.layout.ts","../../../../libs/components/layout/src/layouts/blank-layout/blank-layout.component.ts","../../../../libs/components/layout/src/layouts/blank-layout/blank-layout.component.html","../../../../libs/components/layout/src/layouts/blank-layout/blank-layout.module.ts","../../../../libs/components/layout/src/partials/sidebar/sidebar.component.ts","../../../../libs/components/layout/src/partials/sidebar/sidebar.component.html","../../../../libs/components/layout/src/partials/page-header/page-header.component.ts","../../../../libs/components/layout/src/partials/page-header/page-header.component.html","../../../../libs/components/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.ts","../../../../libs/components/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.html","../../../../libs/components/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.module.ts","../../../../libs/components/layout/src/pages/auth-flow/logged-out/logged-out.component.ts","../../../../libs/components/layout/src/pages/auth-flow/logged-out/logged-out.component.html","../../../../libs/components/layout/src/pages/auth-flow/login/login.component.ts","../../../../libs/components/layout/src/pages/auth-flow/login/login.component.html","../../../../libs/components/layout/src/pages/auth-flow/oauth-callback/oauth-callback.component.ts","../../../../libs/components/layout/src/pages/auth-flow/oauth-callback/oauth-callback.component.html","../../../../libs/components/layout/src/pages/auth-flow/auth-flow-routing.module.ts","../../../../libs/components/layout/src/pages/auth-flow/auth-flow.module.ts","../../../../libs/components/layout/src/upd-layout.module.ts","../../../../libs/components/layout/src/updevs-components-layout.ts"],"sourcesContent":["import { OnDestroy, Directive, inject } from '@angular/core';\nimport { BaseComponent, LayoutService } from '@updevs/sdk/layout';\n\n/**\n * Basic page structure.\n */\n@Directive()\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport abstract class BasePageComponent extends BaseComponent implements OnDestroy {\n protected readonly _layoutService = inject(LayoutService);\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this._layoutService.pageHeader.set(undefined);\n }\n}\n","import { Component, HostBinding, OnInit, OnChanges, SimpleChanges, ViewEncapsulation, inject } from '@angular/core';\nimport { LinkModel } from '@updevs/sdk/core';\nimport { BaseComponent, LayoutService } from '@updevs/sdk/layout';\n\n@Component({\n selector: 'upd-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class FooterComponent extends BaseComponent implements OnInit, OnChanges {\n @HostBinding('class') wrapperClasses = '';\n\n /**\n * Whether the footer will always be shown.\n */\n isSticky = false;\n /**\n * Whether the footer is transparent or not.\n */\n isTransparent = true;\n /**\n * Links.\n */\n links: LinkModel[] = [];\n /**\n * Current year.\n */\n currentYear = new Date().getFullYear();\n /**\n * Version of the application.\n */\n version?: string;\n\n readonly layoutService = inject(LayoutService);\n\n private baseWrapperClasses = 'footer d-print-none';\n\n ngOnInit(): void {\n this.updateWrapperClasses();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!!changes['isSticky'].currentValue || !!changes['isTransparent'].currentValue) {\n this.updateWrapperClasses();\n }\n }\n\n private updateWrapperClasses(): void {\n const stickyBottomCls = this.isSticky ? ' sticky-bottom' : '';\n const transparentCls = this.isTransparent ? ' footer-transparent' : '';\n this.wrapperClasses = `${this.baseWrapperClasses}${stickyBottomCls}${transparentCls}`;\n }\n}\n","<div class=\"container-xl\">\n <div class=\"row text-center align-items-center flex-row-reverse\">\n <div class=\"col-lg-auto ms-lg-auto\">\n @if (!!layoutService.rightFooter()) {\n <ng-container [ngTemplateOutlet]=\"layoutService.rightFooter()!\"></ng-container>\n }\n\n @if (links.length > 0) {\n <ul class=\"list-inline list-inline-dots mb-0\">\n @for (link of links; track link) {\n <li class=\"list-inline-item\">\n <a href=\"{{link.url}}\" target=\"{{link.target}}\" class=\"link-secondary\">\n <span [innerHTML]=\"link.text\"></span>\n </a>\n </li>\n }\n </ul>\n }\n </div>\n <div class=\"col-12 col-lg-auto mt-3 mt-lg-0\">\n <ul class=\"list-inline list-inline-dots mb-0\">\n <li class=\"list-inline-item\">\n <ng-container *transloco=\"let t; prefix: 'UpDevs.Footer'\">\n {{ t('Prefix') }} {{ t('Symbol') }} {{ currentYear }} {{ t('Suffix') }}\n </ng-container>\n </li>\n @if (!!version) {\n <li class=\"list-inline-item\">\n {{ version }}\n </li>\n }\n </ul>\n\n @if (!!layoutService.leftFooter()) {\n <ng-container [ngTemplateOutlet]=\"layoutService.leftFooter()!\"></ng-container>\n }\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoModule } from '@jsverse/transloco';\n\nimport { FooterComponent } from './footer.component';\n\n@NgModule({\n imports: [\n CommonModule,\n TranslocoModule\n ],\n declarations: [\n FooterComponent\n ],\n exports: [\n FooterComponent\n ]\n})\nexport class FooterModule {}\n","import {\n Component,\n ViewEncapsulation,\n HostBinding,\n OnInit,\n inject,\n computed,\n signal,\n viewChild,\n ElementRef, input\n} from '@angular/core';\nimport { TablerIconsType } from '@updevs/icons';\nimport { TextService } from '@updevs/sdk';\nimport { BaseComponent, LayoutService, PreferencesStorage, UpdCoreLayoutConfigService } from '@updevs/sdk/layout';\nimport { DropdownItem } from '@updevs/components/dropdown';\nimport { TranslocoService } from '@jsverse/transloco';\nimport { NotificationModel, NotificationsService } from '@updevs/sdk/notifications';\nimport { SecurityStorage } from '@updevs/sdk/security';\n\nimport { HeaderStyleType } from './header-style.type';\n\n@Component({\n selector: 'upd-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class HeaderComponent extends BaseComponent implements OnInit {\n @HostBinding('class') get classes(): string {\n return this.wrapperClasses();\n }\n\n languageSwitcherRef = viewChild('languageSwitcherBtn', { read: ElementRef });\n notificationsRef = viewChild('notificationsBtn', { read: ElementRef });\n loggedUserRef = viewChild('loggedUserBtn', { read: ElementRef });\n\n isLanguageSwitcherDropdownOpen = false;\n isNotificationsDropdownOpen = false;\n isLoggedUserDropdownOpen = false;\n\n readonly style = input<HeaderStyleType>('light');\n readonly nextThemeIcon = computed<TablerIconsType>(() => this.currentPreferences()?.isDarkTheme ? 'sun' : 'moon-stars');\n readonly currentNotificationsIcon = computed<TablerIconsType>(() => this.hasNewNotifications() ? 'bell-ringing' : 'bell');\n readonly hasNewNotifications = computed(() => this.currentNotifications().some(n => !n.dateRead));\n readonly userInfo = computed(() => this.securityStorage.getUserInfo());\n readonly textService = inject(TextService);\n readonly isSidebarMobileOpen = signal(false);\n readonly shouldBlinkIfNewNotifications = computed(() => !!this.coreLayoutConfigService.config.shouldBlinkIfNewNotifications);\n readonly languagesOptions = computed<DropdownItem[]>(() => {\n const allLanguagesOptions: DropdownItem[] = [];\n const availableLanguages = (this.coreLayoutConfigService.config.availableLanguages || {});\n\n Object.keys(availableLanguages).forEach(key => {\n allLanguagesOptions.push({\n id: key,\n type: 'default',\n text: availableLanguages[key],\n isActive: this.currentLanguageKey() === key\n });\n });\n\n return allLanguagesOptions;\n });\n readonly loggedUserOptions = computed<DropdownItem[]>(() => {\n const userActions: DropdownItem[] = [];\n\n this.coreLayoutConfigService.config.loggedUserMenuActions.forEach(act => userActions.push({\n id: act.id!(),\n text: act.text!(),\n type: 'default',\n icon: act.iconModel?.()\n }));\n\n return userActions;\n });\n readonly userIdentification = computed(() =>\n !!this.userInfo() ? this.coreLayoutConfigService.config.getUserName(this.userInfo()!) : ''\n );\n readonly userDescription = computed(() =>\n !!this.coreLayoutConfigService.config.getUserDescription\n ? this.coreLayoutConfigService.config.getUserDescription(this.userInfo()!)\n : ''\n );\n readonly latestNotifications = computed(() => {\n const unreadNotifications = this.currentNotifications()\n .filter(n => !n.dateRead)\n .sort((a, b) => new Date(b.dateReceived).getTime() - new Date(a.dateReceived).getTime())\n .slice(0, this.coreLayoutConfigService.config.numberOfLastNotificationsDisplayed);\n const readNotifications = this.currentNotifications()\n .filter(n => !!n.dateRead)\n .sort((a, b) => new Date(b.dateReceived).getTime() - new Date(a.dateReceived).getTime())\n .slice(0, this.coreLayoutConfigService.config.numberOfLastNotificationsDisplayed);\n\n return [\n ...unreadNotifications,\n ...readNotifications\n ].slice(0, this.coreLayoutConfigService.config.numberOfLastNotificationsDisplayed);\n });\n readonly userInitials = computed<string>(() => {\n const firstChar = this.userIdentification().charAt(0);\n const lastSpaceIndex = this.userIdentification().lastIndexOf(' ');\n const firstAfterLastSpace = lastSpaceIndex !== -1 ? this.userIdentification().charAt(lastSpaceIndex + 1) : '';\n\n return `${firstChar}${firstAfterLastSpace}`;\n });\n\n private readonly securityStorage = inject(SecurityStorage);\n private readonly coreLayoutConfigService = inject(UpdCoreLayoutConfigService);\n private readonly layoutService = inject(LayoutService);\n private readonly translocoService = inject(TranslocoService);\n private readonly preferencesStorage = inject(PreferencesStorage);\n private readonly notificationsService = inject(NotificationsService);\n private readonly currentPreferences = this.preferencesStorage.getPreferences();\n private readonly currentNotifications = this.notificationsService.notifications;\n private readonly currentLanguageKey = signal('');\n private readonly wrapperClasses = computed(() => `navbar navbar-expand-md d-none d-lg-flex d-print-none navbar-${this.style()}`);\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n readonly config = computed(() => this.layoutService.mainHeaderConfig());\n\n ngOnInit(): void {\n if (!!this.currentPreferences()?.isDarkTheme) {\n this.layoutService.setDarkMode();\n }\n\n if (!!this.currentPreferences()?.currentLanguageCode) {\n const code = this.currentPreferences()!.currentLanguageCode!;\n\n this.currentLanguageKey.set(code);\n this.translocoService.setActiveLang(code);\n }\n }\n\n switchTheme(): void {\n this.layoutService.toggleDarkMode();\n }\n\n switchLanguage(item: DropdownItem): void {\n this.currentLanguageKey.set(item.id);\n this.translocoService.setActiveLang(item.id);\n this.preferencesStorage.savePreferences({ ...this.currentPreferences(), currentLanguageCode: item.id });\n this.layoutService.notifyUserChangedLanguage(item.id);\n\n this.isLanguageSwitcherDropdownOpen = false;\n }\n\n selectLoggedUserMenuItem(item: DropdownItem): void {\n const btn = this.coreLayoutConfigService.config.loggedUserMenuActions.find(b => b.id!() === item.id);\n\n if (!!btn?.clickFunction) {\n btn.clickFunction!({ data: this.userInfo() });\n }\n }\n\n readNotification(notification: NotificationModel): void {\n if (!notification.dateRead) {\n this.notificationsService.markAsRead(notification.id);\n }\n\n this.notificationsService.clickOnNotification(notification);\n }\n\n removeNotification(notification: NotificationModel): void {\n this.notificationsService.removeNotifications(notification.id);\n }\n\n toggleSidebarOnMobile(): void {\n this.isSidebarMobileOpen.set(!this.isSidebarMobileOpen());\n }\n}\n","<div class=\"container-xl\">\n <button class=\"navbar-toggler\" type=\"button\" (click)=\"toggleSidebarOnMobile()\" [attr.aria-expanded]=\"isSidebarMobileOpen()\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n <div class=\"navbar-nav flex-row order-md-last\">\n <div class=\"d-none d-md-flex me-3\">\n @if (!!config().showThemeSwitcher) {\n <div class=\"nav-item\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"switchTheme()\">\n <upd-icon [tablerIcon]=\"nextThemeIcon()\"></upd-icon>\n </upd-link>\n </div>\n }\n @if (!!config().showLanguageSwitcher && languagesOptions().length > 0) {\n <div class=\"nav-item\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"isLanguageSwitcherDropdownOpen=true\"\n #languageSwitcherBtn>\n <upd-icon tablerIcon=\"language\"></upd-icon>\n </upd-link>\n <upd-dropdown wrapperClasses=\"mt-1\" [isOpen]=\"isLanguageSwitcherDropdownOpen\"\n [dropdownReference]=\"languageSwitcherRef()\" [items]=\"languagesOptions()\" [shouldCloseOnOutsideClick]=\"true\"\n (isOpenChange)=\"isLanguageSwitcherDropdownOpen = $event\" (selectedItem)=\"switchLanguage($event)\">\n </upd-dropdown>\n </div>\n }\n @if (!!config().showNotifications && !!userInfo()) {\n <div class=\"nav-item dropdown d-none d-md-flex\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"isNotificationsDropdownOpen = true\"\n #notificationsBtn>\n <upd-icon [tablerIcon]=\"currentNotificationsIcon()\"></upd-icon>\n @if (hasNewNotifications()) {\n <span class=\"badge bg-red\" [class.badge-blink]=\"shouldBlinkIfNewNotifications()\"></span>\n }\n </upd-link>\n <upd-dropdown wrapperClasses=\"mt-1 dropdown-menu-card\" [isOpen]=\"isNotificationsDropdownOpen\"\n [dropdownReference]=\"notificationsRef()\" [shouldCloseOnOutsideClick]=\"true\"\n (isOpenChange)=\"isNotificationsDropdownOpen = $event\" [minWidth]=\"400\" arrowType=\"right\">\n <div class=\"card\">\n <div class=\"card-header\">\n <h3 class=\"card-title\">{{ 'UpDevs.NotificationCenter.Title' | transloco }}</h3>\n </div>\n @for (notification of latestNotifications(); track notification) {\n <div class=\"list-group list-group-flush list-group-hoverable\" (click)=\"readNotification(notification)\">\n <div class=\"list-group-item\">\n <div class=\"row align-items-center\">\n <div class=\"col-auto\">\n @if (!!notification.dateRead) {\n <span class=\"status-dot d-block\"></span>\n } @else {\n <span class=\"status-dot status-dot-animated bg-primary d-block\"></span>\n }\n </div>\n <div class=\"col text-truncate\">\n <a href=\"javascript:void(0)\" class=\"text-body d-block\"\n [class.fw-bold]=\"!notification.dateRead\">\n {{ textService.getText(notification.title) }}\n </a>\n @if (!!notification.description) {\n <div class=\"d-block text-secondary text-truncate mt-n1\">\n {{ textService.getText(notification.description) }}\n </div>\n }\n </div>\n <div class=\"col-auto\">\n <upd-link [customClasses]=\"['list-group-item-actions']\"\n (clicked)=\"removeNotification(notification)\">\n <upd-icon tablerIcon=\"x\"></upd-icon>\n </upd-link>\n </div>\n </div>\n </div>\n </div>\n } @empty {\n <div class=\"empty\">\n <h1 class=\"text-body-tertiary\">{{ 'UpDevs.NotificationCenter.NoNotifications' | transloco }}</h1>\n </div>\n }\n </div>\n </upd-dropdown>\n </div>\n }\n </div>\n @if (!!config().showUserMenu && !!userInfo()) {\n <div class=\"nav-item dropdown\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"isLoggedUserDropdownOpen = true\" #loggedUserBtn>\n @if (!!userInfo()!.avatar) {\n <span class=\"avatar avatar-sm\" style=\"background-image: url({{userInfo()?.avatar}})\"></span>\n } @else {\n <span class=\"avatar avatar-sm\">{{ userInitials() }}</span>\n }\n\n <div class=\"d-none d-xl-block px-2\">\n <div>{{ userIdentification() }}</div>\n @if (!!userDescription()) {\n <div class=\"mt-1 small text-muted\">{{ userDescription() }}</div>\n }\n </div>\n </upd-link>\n @if (loggedUserOptions().length > 0) {\n <upd-dropdown wrapperClasses=\"mt-1\" [isOpen]=\"isLoggedUserDropdownOpen\" [dropdownReference]=\"loggedUserRef()\"\n [items]=\"loggedUserOptions()\" [shouldCloseOnOutsideClick]=\"true\" (selectedItem)=\"selectLoggedUserMenuItem($event)\"\n (isOpenChange)=\"isLoggedUserDropdownOpen = $event\" arrowType=\"right\">\n </upd-dropdown>\n }\n </div>\n }\n </div>\n @if (!!config().showSearchBar && !!userInfo()) {\n <div class=\"collapse navbar-collapse\" [class.show]=\"isSidebarMobileOpen()\">\n <div class=\"me-2\" [class.w-100]=\"config().shouldUseFullSearchBar\">\n <form autocomplete=\"off\" novalidate>\n <div class=\"input-icon\">\n <span class=\"input-icon-addon\">\n <upd-icon tablerIcon=\"search\"></upd-icon>\n </span>\n <input type=\"text\" value=\"\" class=\"form-control\" placeholder=\"{{'UpDevs.Header.Search' | transloco}}...\">\n </div>\n </form>\n </div>\n </div>\n } @else {\n <div></div>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UpdIconsModule } from '@updevs/icons';\nimport { UpdDropdownModule } from '@updevs/components/dropdown';\nimport { UpdLinkModule } from '@updevs/components/link';\nimport { TranslocoModule } from '@jsverse/transloco';\n\nimport { HeaderComponent } from './header.component';\n\n@NgModule({\n imports: [\n CommonModule,\n TranslocoModule,\n UpdIconsModule,\n UpdDropdownModule,\n UpdLinkModule\n ],\n declarations: [\n HeaderComponent\n ],\n exports: [\n HeaderComponent\n ]\n})\nexport class HeaderModule {}\n","import { ButtonModel } from '@updevs/sdk/layout';\nimport { BgColorStyleType, ColorStyleType } from '@updevs/sdk/types';\n\nimport { LoginPageConfig } from './login-page.config';\n\n/**\n * Configuration of the login page layout.\n */\nexport class LoginPageConfigModel implements LoginPageConfig {\n /**\n * Layout of the login page.\n */\n layout: 'centered-box' | 'box-with-picture' | 'cover';\n\n /**\n * Background color of the login box (exclusive with bgStyle).\n * Should be the name of a CSS class.\n */\n bgColor?: string;\n\n /**\n * Background color of the login box (exclusive with bgColor).\n */\n bgStyle?: BgColorStyleType;\n\n /**\n * Color of the border used in the login page.\n */\n borderColor: ColorStyleType;\n\n /**\n * Color of the sign-in button.\n */\n signInButtonColor: ColorStyleType;\n\n /**\n * Color of all links in the login page.\n */\n linksColor: ColorStyleType;\n\n /**\n * Route with the page to recover the user's password.\n */\n recoverPasswordRoute?: string;\n\n /**\n * Route with the page to register a user.\n */\n signUpRoute?: string;\n\n /**\n * Buttons used for social login (google, facebook, etc).\n */\n socialLoginButtons: ButtonModel[] = [];\n\n constructor(init?: LoginPageConfig) {\n Object.assign(this, init);\n\n this.layout = init?.layout || 'centered-box';\n this.borderColor = init?.borderColor || 'primary';\n this.signInButtonColor = init?.signInButtonColor || 'primary';\n this.linksColor = init?.linksColor || this.signInButtonColor;\n\n if (init?.socialLoginButtons) {\n this.socialLoginButtons = init.socialLoginButtons;\n }\n }\n}\n","import { SecurityLayoutConfig } from './security-layout.config';\nimport { LoginPageConfigModel } from './login-page-config.model';\n\n/**\n * Configuration for the pages related to the security.\n */\nexport class SecurityLayoutConfigModel implements SecurityLayoutConfig {\n /**\n * Configuration of the login page.\n */\n loginPage: LoginPageConfigModel;\n\n constructor(init?: SecurityLayoutConfig) {\n this.loginPage = new LoginPageConfigModel(init?.loginPage);\n }\n}\n","import { UpdLayoutConfig } from './upd-layout.config';\nimport { SecurityLayoutConfigModel } from './security-layout-config.model';\n\n/**\n * Layout configuration.\n */\nexport class UpdLayoutConfigModel implements UpdLayoutConfig {\n /**\n * Main menu title.\n */\n menuTitle?: string;\n /**\n * Whether the menu should start expanded.\n */\n shouldMenuStartExpanded?: boolean;\n /**\n * Main application logo.\n */\n mainLogo?: string;\n /**\n * Small application logo.\n */\n smallLogo?: string;\n /**\n * Background image for the logged out page.\n */\n loggedOutBackground?: string;\n /**\n * Whether the default notifications button should be displayed.\n */\n showNotificationsButton?: boolean;\n /**\n * Whether the report error button should be displayed when an exception is thrown by the server.\n */\n displayReportErrorButton?: boolean;\n /**\n * Whether the logged user's menu should be displayed.\n */\n showUserMenu?: boolean;\n /**\n * Whether the fluid layout (less padding) should be used.\n */\n useFluidLayout?: boolean;\n /**\n * Configuration for the pages related to the security.\n */\n securityLayoutConfig: SecurityLayoutConfigModel;\n\n constructor(init?: UpdLayoutConfig) {\n if (init?.mainLogo === undefined) {\n // this.mainLogo = LogoConstants.defaultLogo; // TODO: add images\n }\n\n if (init?.smallLogo === undefined) {\n // this.smallLogo = LogoConstants.smallLogo;\n }\n\n if (init?.loggedOutBackground === undefined) {\n // this.loggedOutBackground = ImageConstants.loggedOutBackground;\n }\n\n this.menuTitle = init?.menuTitle || 'UpDevs';\n this.showNotificationsButton = init?.showNotificationsButton || true;\n this.showUserMenu = init?.showUserMenu || true;\n this.displayReportErrorButton = init?.displayReportErrorButton || false;\n this.useFluidLayout = init?.useFluidLayout || false;\n this.securityLayoutConfig = new SecurityLayoutConfigModel(init?.securityLayoutConfig);\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { UpdLayoutConfig } from '../models/upd-layout.config';\n\n/**\n * Layout constants.\n */\nexport class LayoutConstants {\n /**\n * Key to inject the default configuration.\n */\n static defaultOptionsKey = 'upd-layout-default-options';\n\n /**\n * Injection token for the default configuration.\n */\n static defaultOptionsInjectionToken = new InjectionToken<UpdLayoutConfig>(LayoutConstants.defaultOptionsKey);\n}\n","import { Injectable, Inject } from '@angular/core';\n\nimport { UpdLayoutConfigModel } from '../models/upd-layout-config.model';\nimport { LayoutConstants } from '../tools/layout.constants';\nimport { UpdLayoutConfig } from '../models/upd-layout.config';\n\n/**\n * Layout configuration data.\n */\n@Injectable()\nexport class UpdLayoutConfigService {\n /**\n * Configuration (See: #upsee[p:models, i:UpdCoreLayoutConfigModel]).\n */\n readonly config: UpdLayoutConfigModel;\n\n constructor(@Inject(LayoutConstants.defaultOptionsInjectionToken) layoutConfig: UpdLayoutConfig) {\n this.config = new UpdLayoutConfigModel(layoutConfig);\n }\n}\n","import { BaseComponent, LayoutService } from '@updevs/sdk/layout';\nimport { inject, OnInit, Directive, OnDestroy } from '@angular/core';\n\nimport { UpdLayoutConfigService } from '../services/upd-layout-config.service';\n\n/**\n * Basic layout structure.\n */\n@Directive()\nexport abstract class BaseLayout extends BaseComponent implements OnInit, OnDestroy {\n protected readonly _layoutConfigService = inject(UpdLayoutConfigService);\n protected readonly _layoutService = inject(LayoutService);\n\n ngOnInit(): void {\n if (this._layoutConfigService.config.useFluidLayout) {\n this._layoutService.addBodyClasses('layout-fluid');\n }\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n\n if (this._layoutConfigService.config.useFluidLayout) {\n this._layoutService.removeBodyClasses('layout-fluid');\n }\n }\n}\n","import { Component, computed, OnInit } from '@angular/core';\n\nimport { BaseLayout } from '../../abstractions/base.layout';\n\n@Component({\n selector: 'upd-blank-layout',\n templateUrl: './blank-layout.component.html',\n styleUrls: ['./blank-layout.component.scss']\n})\nexport class BlankLayoutComponent extends BaseLayout implements OnInit {\n readonly config = computed(() => this._layoutService.mainHeaderConfig());\n\n override ngOnInit() {\n // Overriding layout fluid from parent.\n }\n}\n","<div class=\"page\" [class.page-center]=\"_layoutService.isPageCentered()\">\n @if (!config().shouldHideTopBarIfBlankLayout) {\n <upd-header [style]=\"'transparent'\"></upd-header>\n }\n\n <router-outlet></router-outlet>\n\n @if (!config().shouldHideFooterIfBlankLayout) {\n <upd-footer></upd-footer>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterOutlet } from '@angular/router';\nimport { UpdIconsModule } from '@updevs/icons';\nimport { UpdDropdownModule } from '@updevs/components/dropdown';\nimport { UpdLinkModule } from '@updevs/components/link';\nimport { TranslocoPipe } from '@jsverse/transloco';\n\nimport { FooterModule } from '../../partials/footer/footer.module';\nimport { HeaderModule } from '../../partials/header/header.module';\nimport { BlankLayoutComponent } from './blank-layout.component';\n\n@NgModule({\n imports: [\n CommonModule,\n RouterOutlet,\n TranslocoPipe,\n UpdDropdownModule,\n UpdIconsModule,\n UpdLinkModule,\n FooterModule,\n HeaderModule\n ],\n declarations: [\n BlankLayoutComponent\n ],\n exports: [\n BlankLayoutComponent\n ]\n})\nexport class BlankLayoutModule {}\n","import { Component, HostBinding, ViewEncapsulation, OnInit, inject, signal, computed, viewChild, ElementRef } from '@angular/core';\nimport { Router, NavigationStart } from '@angular/router';\nimport { TextService } from '@updevs/sdk';\nimport { RouteDataModel, MenuService } from '@updevs/sdk/routes';\nimport { BaseComponent, LayoutService, UpdCoreLayoutConfigService } from '@updevs/sdk/layout';\nimport { SecurityStorage } from '@updevs/sdk/security';\nimport { OptionalType } from '@updevs/sdk/types';\nimport { DropdownItem } from '@updevs/components/dropdown';\nimport { filter } from 'rxjs';\n\n@Component({\n selector: 'upd-sidebar',\n templateUrl: './sidebar.component.html',\n styleUrls: ['./sidebar.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class SidebarComponent extends BaseComponent implements OnInit {\n @HostBinding('class') wrapperClasses = 'navbar navbar-vertical navbar-expand-lg';\n @HostBinding('attr.data-bs-theme') theme = 'dark';\n\n menuItems: RouteDataModel[] = [];\n isLoggedUserDropdownOpen = false;\n\n readonly loggedUserRef = viewChild('loggedUserBtn', { read: ElementRef });\n readonly textService = inject(TextService);\n readonly isSidebarMobileOpen = signal(false);\n readonly config = computed(() => this.layoutService.mainHeaderConfig());\n readonly userInfo = computed(() => this.securityStorage.getUserInfo());\n readonly userIdentification = computed(() =>\n !!this.userInfo() ? this.coreLayoutConfigService.config.getUserName(this.userInfo()!) : ''\n );\n readonly userDescription = computed(() =>\n !!this.coreLayoutConfigService.config.getUserDescription\n ? this.coreLayoutConfigService.config.getUserDescription(this.userInfo()!)\n : ''\n );\n readonly loggedUserOptions = computed<DropdownItem[]>(() => {\n const userActions: DropdownItem[] = [];\n\n this.coreLayoutConfigService.config.loggedUserMenuActions.forEach(act => userActions.push({\n id: act.id!(),\n text: act.text!(),\n type: 'default',\n icon: act.iconModel?.()\n }));\n\n return userActions;\n });\n readonly userInitials = computed<string>(() => {\n const firstChar = this.userIdentification().charAt(0);\n const lastSpaceIndex = this.userIdentification().lastIndexOf(' ');\n const firstAfterLastSpace = lastSpaceIndex !== -1 ? this.userIdentification().charAt(lastSpaceIndex + 1) : '';\n\n return `${firstChar}${firstAfterLastSpace}`;\n });\n\n private currentRoute = '';\n private menuItemsBackup: RouteDataModel[] = [];\n\n private readonly router = inject(Router);\n private readonly menuService = inject(MenuService);\n private readonly layoutService = inject(LayoutService);\n private readonly securityStorage = inject(SecurityStorage);\n private readonly coreLayoutConfigService = inject(UpdCoreLayoutConfigService);\n\n ngOnInit(): void {\n this.currentRoute = this.router.url;\n this.menuItems = this.menuService.generateMenu();\n this.menuItemsBackup = [...this.menuItems];\n const menuRefreshSub = this.menuService.refreshSubject.subscribe(() => {\n this.menuItems = [...this.menuService.generateMenu()];\n this.menuItemsBackup = [...this.menuItems];\n\n this.updateActiveRoute();\n });\n const routerSub = this.router.events.pipe(\n filter(event => event instanceof NavigationStart)\n ).subscribe(event => {\n this.currentRoute = (<NavigationStart>event).url;\n this.updateActiveRoute();\n });\n\n this.updateActiveRoute();\n this.addSubscriptions(routerSub, menuRefreshSub);\n }\n\n onMenuItemClick(item: RouteDataModel): void {\n if (item.isLocked) {\n if (!!item.lockedClickFunction) {\n item.lockedClickFunction();\n }\n\n return;\n }\n\n let newMenuItems = this.resetMenuState(this.menuItems);\n newMenuItems = this.setItemActive(newMenuItems, item, this.hasChildren(item) ? !item.isActive : true);\n newMenuItems = this.updateParents(newMenuItems, item);\n this.menuItems = newMenuItems;\n\n if (!!item.clickFunction) {\n item.clickFunction();\n return;\n }\n\n if (this.hasChildren(item)) {\n return;\n }\n\n const fullPath = this.findItemById(this.menuItemsBackup, item.id)!.getFullPath();\n\n this.router.navigate(fullPath).then();\n }\n\n hasChildren(item: RouteDataModel): boolean {\n return (item.children?.length || 0) > 0;\n }\n\n asMenuItem(item: any): RouteDataModel {\n return item as RouteDataModel;\n }\n\n getItemClasses(item: RouteDataModel, activeClass: string, ...classes: string[]): string[] {\n return [\n ...classes,\n item.isActive ? activeClass : '',\n item.isLocked ? 'disabled' : ''\n ];\n }\n\n toggleSidebarOnMobile(): void {\n this.isSidebarMobileOpen.set(!this.isSidebarMobileOpen());\n }\n\n selectLoggedUserMenuItem(item: DropdownItem): void {\n const btn = this.coreLayoutConfigService.config.loggedUserMenuActions.find(b => b.id!() === item.id);\n\n if (!!btn?.clickFunction) {\n btn.clickFunction!({ data: this.userInfo() });\n }\n }\n\n private findActiveNode(item: RouteDataModel, fullPath: string): OptionalType<RouteDataModel> {\n if (item.fullPath === fullPath) {\n return item;\n }\n\n for (const child of item.children) {\n const found = this.findActiveNode(child, fullPath);\n\n if (found) {\n return found;\n }\n }\n\n return undefined;\n }\n\n private updateActiveRoute(): void {\n let newMenuItems = this.resetMenuState(this.menuItems);\n const activePath = this.getActivePath(newMenuItems);\n newMenuItems = this.setActivePath(newMenuItems, activePath);\n this.menuItems = newMenuItems;\n }\n\n private setActivePath(items: RouteDataModel[], path: RouteDataModel[]): RouteDataModel[] {\n if (path.length === 0) {\n return items;\n }\n\n return items.map(item => {\n const pathItem = path.find(p => p.id === item.id);\n\n if (!pathItem) {\n return item;\n }\n\n const newItem = { ...item, isActive: true } as RouteDataModel;\n\n if (newItem.children?.length) {\n newItem.children = this.setActivePath(\n newItem.children,\n path.filter(p => p.parent?.id === newItem.id)\n );\n newItem.children.forEach(child => child.parent = newItem);\n }\n\n return newItem;\n });\n }\n\n private getActivePath(items: RouteDataModel[]): RouteDataModel[] {\n let activeItem: OptionalType<RouteDataModel>;\n\n // Find the deepest active item.\n for (const item of items) {\n activeItem = this.findActiveNode(item, this.currentRoute);\n\n if (activeItem) {\n break;\n }\n }\n\n // Collect parent hierarchy.\n const path: RouteDataModel[] = [];\n\n while (activeItem) {\n path.unshift(activeItem);\n activeItem = activeItem.parent;\n }\n\n return path;\n }\n\n private resetMenuState(items: RouteDataModel[]): RouteDataModel[] {\n return items.map(item => {\n const newItem = { ...item, isActive: false } as RouteDataModel;\n\n if (newItem.children?.length) {\n newItem.children = this.resetMenuState(newItem.children);\n newItem.children.forEach(child => child.parent = newItem);\n }\n\n return newItem;\n });\n }\n\n private setItemActive(items: RouteDataModel[], target: RouteDataModel, isActive: boolean): RouteDataModel[] {\n return items.map(item => {\n if (item.id === target.id) {\n const newItem = { ...item, isActive } as RouteDataModel;\n\n if (newItem.children?.length) {\n newItem.children = this.setItemActive(newItem.children, target, isActive);\n newItem.children.forEach(child => child.parent = newItem);\n }\n\n return newItem;\n }\n\n if (item.children?.length) {\n const newChildren = this.setItemActive(item.children, target, isActive);\n const newItem = { ...item, children: newChildren } as RouteDataModel;\n\n newChildren.forEach(child => child.parent = newItem);\n\n return newItem;\n }\n\n return item;\n });\n }\n\n private updateParents(items: RouteDataModel[], childItem: RouteDataModel): RouteDataModel[] {\n let parent = childItem.parent;\n let updatedItems = [...items];\n\n while (parent) {\n updatedItems = updatedItems.map(item => {\n if (item.id === parent!.id) {\n return { ...parent!, isActive: true } as RouteDataModel;\n }\n\n return item;\n });\n parent = parent.parent;\n }\n\n return updatedItems;\n }\n\n private findItemById(items: RouteDataModel[], targetId: any): OptionalType<RouteDataModel> {\n for (const item of items) {\n if (item.id === targetId) {\n return item;\n }\n\n if (item.children?.length) {\n const child = this.findItemById(item.children, targetId);\n\n if (!!child) {\n return child;\n }\n }\n }\n\n return undefined;\n }\n}\n","<div class=\"container-fluid\">\n <button class=\"navbar-toggler\" type=\"button\" (click)=\"toggleSidebarOnMobile()\" [attr.aria-expanded]=\"isSidebarMobileOpen()\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n <h1 class=\"navbar-brand navbar-brand-autodark\">\n <a href=\".\">\n <img width=\"110\" height=\"32\" class=\"navbar-brand-image upd-brand-logo\" />\n </a>\n </h1>\n\n @if (!!config().showUserMenu && !!userInfo()) {\n <div class=\"navbar-nav flex-row d-lg-none\">\n <div class=\"nav-item dropdown\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"isLoggedUserDropdownOpen = true\" #loggedUserBtn>\n @if (!!userInfo()!.avatar) {\n <span class=\"avatar avatar-sm\" style=\"background-image: url({{userInfo()?.avatar}})\"></span>\n } @else {\n <span class=\"avatar avatar-sm\">{{ userInitials() }}</span>\n }\n\n <div class=\"d-none d-xl-block px-2\">\n <div>{{ userIdentification() }}</div>\n @if (!!userDescription()) {\n <div class=\"mt-1 small text-muted\">{{ userDescription() }}</div>\n }\n </div>\n </upd-link>\n @if (loggedUserOptions().length > 0) {\n <upd-dropdown wrapperClasses=\"mt-1\" [isOpen]=\"isLoggedUserDropdownOpen\" [dropdownReference]=\"loggedUserRef()\"\n [items]=\"loggedUserOptions()\" [shouldCloseOnOutsideClick]=\"true\" (selectedItem)=\"selectLoggedUserMenuItem($event)\"\n (isOpenChange)=\"isLoggedUserDropdownOpen = $event\" arrowType=\"right\">\n </upd-dropdown>\n }\n </div>\n </div>\n }\n\n <div class=\"collapse navbar-collapse\" [class.show]=\"isSidebarMobileOpen()\">\n <ul class=\"navbar-nav pt-lg-3\">\n @for (item of menuItems; track item.id) {\n <li class=\"nav-item\" [class.dropdown]=\"hasChildren(item)\" [class.active]=\"item.isActive\">\n <ng-container [ngTemplateOutlet]=\"itemTpl\" [ngTemplateOutletContext]=\"{menuItem: item}\"></ng-container>\n </li>\n }\n </ul>\n </div>\n</div>\n\n<ng-template #itemTpl let-item=\"menuItem\">\n <upd-link [isNavigation]=\"true\" (clicked)=\"onMenuItemClick(item)\"\n [customClasses]=\"getItemClasses(item, 'show', hasChildren(item) ? 'dropdown-toggle':'')\">\n <ng-container [ngTemplateOutlet]=\"linkContent\" [ngTemplateOutletContext]=\"{menuItem: item}\"></ng-container>\n </upd-link>\n @if (hasChildren(item)) {\n <ng-container [ngTemplateOutlet]=\"childrenTpl\" [ngTemplateOutletContext]=\"{menuItem: item}\"></ng-container>\n }\n</ng-template>\n\n<ng-template #linkContent let-item=\"menuItem\">\n @if (!!item.icon) {\n <span class=\"nav-link-icon d-md-none d-lg-inline-block\">\n <upd-icon [model]=\"item.icon\"></upd-icon>\n </span>\n }\n <span class=\"nav-link-title\">{{ textService.getText(item.title) }}</span>\n @if (item.isLocked) {\n <upd-icon class=\"ms-auto\" [model]=\"{tablerIcon: 'lock'}\"></upd-icon>\n }\n</ng-template>\n\n<ng-template #childrenTpl let-item=\"menuItem\">\n <div class=\"dropdown-menu\" [class.show]=\"item.isActive\">\n <div class=\"dropdown-menu-columns\">\n <div class=\"dropdown-menu-column\">\n @for (child of asMenuItem(item).children; track child.id) {\n @if (!hasChildren(child)) {\n <upd-link (clicked)=\"onMenuItemClick(child)\" [customClasses]=\"getItemClasses(child, 'active', 'dropdown-item')\">\n <ng-container [ngTemplateOutlet]=\"linkContent\" [ngTemplateOutletContext]=\"{menuItem: child}\"></ng-container>\n </upd-link>\n } @else {\n <div class=\"dropend\">\n <upd-link (clicked)=\"onMenuItemClick(child)\" [customClasses]=\"getItemClasses(child, 'active', 'dropdown-item')\">\n <ng-container [ngTemplateOutlet]=\"linkContent\" [ngTemplateOutletContext]=\"{menuItem: child}\"></ng-container>\n </upd-link>\n <div class=\"dropdown-menu\" [class.show]=\"child.isActive\">\n @for (grandchild of child.children; track grandchild) {\n <upd-link (clicked)=\"onMenuItemClick(grandchild)\"\n [customClasses]=\"getItemClasses(grandchild, 'active', 'dropdown-item')\">\n <ng-container [ngTemplateOutlet]=\"linkContent\" [ngTemplateOutletContext]=\"{menuItem: grandchild}\">\n </ng-container>\n </upd-link>\n }\n </div>\n </div>\n }\n }\n </div>\n </div>\n </div>\n</ng-template>\n","import { Component, input } from '@angular/core';\nimport { PageHeaderModel } from '@updevs/sdk/layout';\n\n@Component({\n selector: 'upd-page-header',\n templateUrl: './page-header.component.html',\n styleUrls: ['./page-header.component.scss']\n})\nexport class PageHeaderComponent {\n model = input.required<PageHeaderModel>();\n}\n","<div class=\"page-header d-print-none\">\n <div class=\"container-xl\">\n <div class=\"row g-2 align-items-center\">\n <div class=\"col\">\n <div class=\"page-pretitle\">\n {{ model().titleHeader }}\n </div>\n <h2 class=\"page-title\">\n {{ model().title }}\n </h2>\n </div>\n @if (model().actionButtons.length > 0) {\n <div class=\"col-auto ms-auto d-print-none\">\n <div class=\"btn-list\">\n @for (btn of model().actionButtons; track btn) {\n <upd-button [model]=\"btn\"></upd-button>\n }\n </div>\n </div>\n }\n </div>\n </div>\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\nimport { BaseLayout } from '../../abstractions/base.layout';\n\n@Component({\n selector: 'upd-vertical-sidebar-layout',\n templateUrl: './vertical-sidebar-layout.component.html',\n styleUrls: ['./vertical-sidebar-layout.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class VerticalSidebarLayoutComponent extends BaseLayout {}\n","<div class=\"page\">\n <upd-sidebar></upd-sidebar>\n <upd-header></upd-header>\n\n <div class=\"page-wrapper\">\n @if (!!_layoutService.pageHeader()) {\n <upd-page-header [model]=\"_layoutService.pageHeader()!\"></upd-page-header>\n }\n <div class=\"page-body\">\n <div class=\"container-xl\">\n <router-outlet></router-outlet>\n </div>\n </div>\n <upd-footer></upd-footer>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { UpdIconsModule } from '@updevs/icons';\nimport { UpdCoreLayoutModule } from '@updevs/sdk/layout';\nimport { UpdButtonModule } from '@updevs/components/button';\nimport { UpdLinkModule } from '@updevs/components/link';\nimport { UpdDropdownModule } from '@updevs/components/dropdown';\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\n\nimport * as en from '../../assets/i18n/en.json';\nimport * as pt from '../../assets/i18n/pt.json';\nimport { FooterModule } from '../../partials/footer/footer.module';\nimport { HeaderModule } from '../../partials/header/header.module';\nimport { VerticalSidebarLayoutComponent } from './vertical-sidebar-layout.component';\nimport { SidebarComponent } from '../../partials/sidebar/sidebar.component';\nimport { PageHeaderComponent } from '../../partials/page-header/page-header.component';\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n TranslocoModule,\n UpdIconsModule,\n UpdCoreLayoutModule,\n UpdButtonModule,\n UpdLinkModule,\n UpdDropdownModule,\n FooterModule,\n HeaderModule\n ],\n declarations: [\n VerticalSidebarLayoutComponent,\n SidebarComponent,\n PageHeaderComponent\n ],\n exports: [\n VerticalSidebarLayoutComponent,\n SidebarComponent,\n PageHeaderComponent\n ]\n})\nexport class VerticalSidebarLayoutModule {\n constructor(translocoService: TranslocoService) {\n translocoService.setFallbackLangForMissingTranslation({ fallbackLang: 'en' });\n translocoService.setTranslation(en, 'en');\n translocoService.setTranslation(pt, 'pt');\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'upd-logged-out',\n templateUrl: './logged-out.component.html',\n styleUrls: ['./logged-out.component.scss']\n})\nexport class LoggedOutComponent {\n\n}\n","<p>logged-out works!</p>\n","import { Component, inject, OnDestroy, OnInit, model, signal } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { FormGroup, Validators } from '@angular/forms';\nimport { LayoutService } from '@updevs/sdk/layout';\nimport { AuthService } from '@updevs/sdk/security';\nimport { FormRowModel, DynamicFieldType, InputFieldModel } from '@updevs/components/form';\nimport { finalize } from 'rxjs';\n\nimport { UpdLayoutConfigService } from '../../../services/upd-layout-config.service';\n\n@Component({\n selector: 'upd-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.scss']\n})\nexport class LoginComponent implements OnInit, OnDestroy {\n formGroup = model(new FormGroup({}));\n formRows: FormRowModel[] = [];\n isSigningIn = signal(false);\n readonly layoutConfigService = inject(UpdLayoutConfigService);\n readonly config = this.layoutConfigService.config.securityLayoutConfig.loginPage;\n\n get border(): string {\n return `border-${this.config.borderColor}`;\n }\n\n get linkClasses(): string[] {\n return [`link-${this.config.linksColor}`];\n }\n\n private get boxBgColor(): string {\n return this.config.bgColor || (!!this.config.bgStyle ? `bg-${this.config.bgStyle}` : '') || 'bg-white';\n }\n\n private readonly bodyClasses = ['border-top-wide', this.border, 'd-flex', 'flex-column'];\n private readonly router = inject(Router);\n private readonly authService = inject(AuthService);\n private readonly layoutService = inject(LayoutService);\n\n ngOnInit(): void {\n this.layoutService.addBodyClasses(this.boxBgColor);\n\n if (this.config.layout !== 'cover') {\n this.layoutService.addBodyClasses(...this.bodyClasses);\n }\n\n this.formRows = [\n {\n fields: [\n {\n name: 'username',\n type: DynamicFieldType.Input,\n colSize: { default: 12 },\n label: { text: 'UpDevs.Login.Email', isTranslated: false },\n validators: [Validators.required, Validators.minLength(3)],\n shouldSubmitOnEnter: true\n } as InputFieldModel\n ]\n },\n {\n fields: [\n {\n name: 'password',\n type: DynamicFieldType.Input,\n inputType: 'password',\n colSize: { default: 12 },\n label: { text: 'UpDevs.Login.Password', isTranslated: false },\n validators: [Validators.required, Validators.minLength(3)],\n shouldSubmitOnEnter: true\n } as InputFieldModel\n ]\n },\n {\n fields: [\n {\n name: 'rememberMe',\n type: DynamicFieldType.Checkbox,\n colSize: { default: 12 },\n label: { text: 'UpDevs.Login.RememberMe', isTranslated: false },\n initValue: false\n }\n ]\n }\n ];\n }\n\n ngOnDestroy(): void {\n this.layoutService.removeBodyClasses(this.boxBgColor);\n\n if (this.config.layout !== 'cover') {\n this.layoutService.removeBodyClasses(...this.bodyClasses);\n }\n }\n\n login(): void {\n // TODO: handle remember me\n this.isSigningIn.set(true);\n this.authService.login((this.formGroup().value as any).username, (this.formGroup().value as any).password)\n .pipe(finalize(() => this.isSigningIn.set(false)))\n .subscribe();\n }\n\n goToRecoverPasswordPage(): void {\n this.router.navigate([this.config.recoverPasswordRoute]).then();\n }\n\n goToSignUpPage(): void {\n this.router.navigate([this.config.signUpRoute]).then();\n }\n}\n","<ng-container *transloco=\"let t; prefix: 'UpDevs.Login'\">\n <upd-header [style]=\"'transparent'\"></upd-header>\n <div class=\"page page-center\">\n @switch (config.layout) {\n @case ('centered-box') {\n <div class=\"container container-tight py-4\">\n <ng-container [ngTemplateOutlet]=\"loginCardTpl\"></ng-container>\n </div>\n }\n @case ('box-with-picture') {\n <div class=\"container container-normal py-4\">\n <div class=\"row align-items-center g-4\">\n <div class=\"col-lg\">\n <div class=\"container-tight\">\n <ng-container [ngTemplateOutlet]=\"loginCardTpl\"></ng-container>\n </div>\n </div>\n <div class=\"col-lg d-none d-lg-block\">\n <img height=\"300\" class=\"d-block mx-auto upd-right-login-image\" />\n </div>\n </div>\n </div>\n }\n @case ('cover') {\n <div class=\"row g-0 flex-fill\">\n <div class=\"col-12 col-lg-6 col-xl-4 border-top-wide d-flex flex-column justify-content-center\"\n [ngClass]=\"border\">\n <div class=\"container container-tight my-5 px-lg-5\">\n <ng-container [ngTemplateOutlet]=\"headerTpl\"></ng-container>\n\n <h2 class=\"h3 text-center mb-3\">\n {{ t('Title') }}\n </h2>\n\n <ng-container [ngTemplateOutlet]=\"loginFormTpl\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"socialLoginTpl\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"noAccountTpl\"></ng-container>\n </div>\n </div>\n <div class=\"col-12 col-lg-6 col-xl-8 d-none d-lg-block\">\n <div class=\"bg-cover h-100 min-vh-100 upd-right-login-cover-image\"></div>\n </div>\n </div>\n }\n }\n </div>\n <upd-footer></upd-footer>\n\n <ng-template #loginCardTpl>\n <ng-container [ngTemplateOutlet]=\"headerTpl\"></ng-container>\n <upd-card [removeBorder]=\"true\">\n <div class=\"p-4\">\n <h2 class=\"h2 text-center mb-4\">\n {{ t('Title') }}\n </h2>\n <ng-container [ngTemplateOutlet]=\"loginFormTpl\"></ng-container>\n </div>\n <ng-container [ngTemplateOutlet]=\"socialLoginTpl\"></ng-container>\n </upd-card>\n <ng-container [ngTemplateOutlet]=\"noAccountTpl\"></ng-container>\n </ng-template>\n\n <ng-template #loginFormTpl>\n <upd-form [rows]=\"formRows\" [hasActionsSection]=\"false\" [(formGroup)]=\"formGroup\" (submitted)=\"login()\"></upd-form>\n <div class=\"form-footer\">\n <upd-button [colorStyle]=\"config.signInButtonColor\" (clicked)=\"login()\" [isLoading]=\"isSigningIn()\"\n customClasses=\"w-100\">\n {{ t('SignIn') }}\n </upd-button>\n @if (!!config.recoverPasswordRoute) {\n <div class=\"d-flex mt-2\">\n <upd-link class=\"ms-auto\" [customClasses]=\"linkClasses\" (clicked)=\"goToRecoverPasswordPage()\">\n {{ t('RecoverPassword') }}\n </upd-link>\n </div>\n }\n </div>\n </ng-template>\n\n <ng-template #socialLoginTpl>\n @if (config.socialLoginButtons.length > 0) {\n <div class=\"hr-text\">\n {{ t('Or') }}\n </div>\n <div class=\"card-body\">\n <div class=\"row\">\n @for (btn of config.socialLoginButtons; track btn) {\n <div class=\"col\">\n <upd-button [model]=\"btn\"></upd-button>\n </div>\n }\n </div>\n </div>\n }\n </ng-template>\n\n <ng-template #headerTpl>\n <div class=\"text-center mb-4\">\n <a href=\".\" class=\"navbar-brand navbar-brand-autodark\">\n <img height=\"36\" class=\"navbar-brand-image upd-brand-logo\" />\n </a>\n </div>\n </ng-template>\n\n <ng-template #noAccountTpl>\n @if (!!config.signUpRoute) {\n <div class=\"text-center text-muted mt-3\">\n {{ t('NoAccountYet') }}\n <upd-link [customClasses]=\"linkClasses\" (clicked)=\"goToSignUpPage()\">{{ t('SignUp') }}</upd-link>\n </div>\n }\n </ng-template>\n</ng-container>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'upd-oauth-callback',\n templateUrl: './oauth-callback.component.html',\n styleUrls: ['./oauth-callback.component.scss']\n})\nexport class OauthCallbackComponent {\n\n}\n","<p>oauth-callback works!</p>\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { OauthCallbackComponent } from './oauth-callback/oauth-callback.component';\nimport { LoggedOutComponent } from './logged-out/logged-out.component';\nimport { LoginComponent } from './login/login.component';\n\n/**\n * Auth flow routes.\n */\nexport const routes: Routes = [\n { path: 'oauth/callback', component: OauthCallbackComponent },\n { path: 'logged-out', component: LoggedOutComponent },\n { path: 'login', component: LoginComponent }\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, { useHash: true })],\n exports: [RouterModule]\n})\nexport class AuthFlowRoutingModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { UpdButtonModule } from '@updevs/components/button';\nimport { UpdLinkModule } from '@updevs/components/link';\nimport { UpdIconsModule } from '@updevs/icons';\nimport { UpdCardModule } from '@updevs/components/card';\nimport { UpdFormModule } from '@updevs/components/form';\nimport { TranslocoDirective } from '@jsverse/transloco';\n\nimport { FooterModule } from '../../partials/footer/footer.module';\nimport { HeaderModule } from '../../partials/header/header.module';\nimport { LoginComponent } from './login/login.component';\nimport { OauthCallbackComponent } from './oauth-callback/oauth-callback.component';\nimport { LoggedOutComponent } from './logged-out/logged-out.component';\nimport { AuthFlowRoutingModule } from './auth-flow-routing.module';\n\n@NgModule({\n imports: [\n CommonModule,\n AuthFlowRoutingModule,\n UpdButtonModule,\n UpdIconsModule,\n FormsModule,\n TranslocoDirective,\n UpdLinkModule,\n UpdCardModule,\n UpdFormModule,\n FooterModule,\n HeaderModule\n ],\n declarations: [\n LoginComponent,\n OauthCallbackComponent,\n LoggedOutComponent\n ],\n exports: [\n LoginComponent,\n OauthCallbackComponent,\n LoggedOutComponent\n ]\n})\nexport class AuthFlowModule {\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UpdCoreLayoutModule } from '@updevs/sdk/layout';\nimport { UpdNotificationsModule } from '@updevs/sdk/notifications';\n\nimport { UpdLayoutConfig } from './models/upd-layout.config';\nimport { LayoutConstants } from './tools/layout.constants';\nimport { UpdLayoutConfigService } from './services/upd-layout-config.service';\n\n/**\n * Layout module.\n */\n@NgModule({\n imports: [\n CommonModule,\n UpdCoreLayoutModule,\n UpdNotificationsModule\n ],\n providers: [\n UpdLayoutConfigService\n ]\n})\nexport class UpdLayoutModule {\n /**\n * Sets up the layout module with the provided configuration.\n * @param config Configuration (See: #updsee[p:abstractions, i:UpdCoreLayoutConfig]).\n */\n static forRoot(config: UpdLayoutConfig): ModuleWithProviders<UpdLayoutModule> {\n return {\n ngModule: UpdLayoutModule,\n providers: [\n { provide: LayoutConstants.defaultOptionsInjectionToken, useValue: config }\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i4","i2.FooterComponent","i3.HeaderComponent","i4.SidebarComponent","i5.PageHeaderComponent","en","pt","i3","i5","i8.FooterComponent","i9.HeaderComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;;AAEG;AAEH;AACM,MAAgB,iBAAkB,SAAQ,aAAa,CAAA;AAF7D,IAAA,WAAA,GAAA;;AAGuB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;AAM5D;IAJY,WAAW,GAAA;QAChB,KAAK,CAAC,WAAW,EAAE;QACnB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;;8GAL/B,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAFtC;;;ACIK,MAAO,eAAgB,SAAQ,aAAa,CAAA;AANlD,IAAA,WAAA,GAAA;;QAO0B,IAAc,CAAA,cAAA,GAAG,EAAE;AAEzC;;AAEG;QACH,IAAQ,CAAA,QAAA,GAAG,KAAK;AAChB;;AAEG;QACH,IAAa,CAAA,aAAA,GAAG,IAAI;AACpB;;AAEG;QACH,IAAK,CAAA,KAAA,GAAgB,EAAE;AACvB;;AAEG;AACH,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AAM7B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QAEtC,IAAkB,CAAA,kBAAA,GAAG,qBAAqB;AAiBrD;IAfG,QAAQ,GAAA;QACJ,IAAI,CAAC,oBAAoB,EAAE;;AAG/B,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,YAAY,EAAE;YAC/E,IAAI,CAAC,oBAAoB,EAAE;;;IAI3B,oBAAoB,GAAA;AACxB,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,GAAG,gBAAgB,GAAG,EAAE;AAC7D,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,GAAG,qBAAqB,GAAG,EAAE;AACtE,QAAA,IAAI,CAAC,cAAc,GAAG,CAAA,EAAG,IAAI,CAAC,kBAAkB,CAAA,EAAG,eAAe,CAAA,EAAG,cAAc,CAAA,CAAE;;8GAzChF,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,wJCV5B,2nDAuCA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,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,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FD7Ba,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;+BACI,YAAY,EAAA,aAAA,EAGP,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,2nDAAA,EAAA;8BAGf,cAAc,EAAA,CAAA;sBAAnC,WAAW;uBAAC,OAAO;;;MEOX,YAAY,CAAA;8GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAZ,YAAY,EAAA,YAAA,EAAA,CANjB,eAAe,CAAA,EAAA,OAAA,EAAA,CAJf,YAAY;AACZ,YAAA,eAAe,aAMf,eAAe,CAAA,EAAA,CAAA,CAAA;AAGV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAVjB,YAAY;YACZ,eAAe,CAAA,EAAA,CAAA,CAAA;;2FASV,YAAY,EAAA,UAAA,EAAA,CAAA;kBAZxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ;AACH,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACV;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL;AACH;AACJ,iBAAA;;;ACUK,MAAO,eAAgB,SAAQ,aAAa,CAAA;AANlD,IAAA,WAAA,GAAA;;QAWI,IAAmB,CAAA,mBAAA,GAAG,SAAS,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAC5E,IAAgB,CAAA,gBAAA,GAAG,SAAS,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QACtE,IAAa,CAAA,aAAA,GAAG,SAAS,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAEhE,IAA8B,CAAA,8BAAA,GAAG,KAAK;QACtC,IAA2B,CAAA,2BAAA,GAAG,KAAK;QACnC,IAAwB,CAAA,wBAAA,GAAG,KAAK;AAEvB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAkB,OAAO,CAAC;QACvC,IAAa,CAAA,aAAA,GAAG,QAAQ,CAAkB,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAE,WAAW,GAAG,KAAK,GAAG,YAAY,CAAC;AAC9G,QAAA,IAAA,CAAA,wBAAwB,GAAG,QAAQ,CAAkB,MAAM,IAAI,CAAC,mBAAmB,EAAE,GAAG,cAAc,GAAG,MAAM,CAAC;QAChH,IAAmB,CAAA,mBAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AACxF,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;AAC7D,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,KAAK,CAAC;AACnC,QAAA,IAAA,CAAA,6BAA6B,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,6BAA6B,CAAC;AACnH,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAiB,MAAK;YACtD,MAAM,mBAAmB,GAAmB,EAAE;AAC9C,YAAA,MAAM,kBAAkB,IAAI,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,kBAAkB,IAAI,EAAE,CAAC;YAEzF,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;gBAC1C,mBAAmB,CAAC,IAAI,CAAC;AACrB,oBAAA,EAAE,EAAE,GAAG;AACP,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,IAAI,EAAE,kBAAkB,CAAC,GAAG,CAAC;AAC7B,oBAAA,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EAAE,KAAK;AAC3C,iBAAA,CAAC;AACN,aAAC,CAAC;AAEF,YAAA,OAAO,mBAAmB;AAC9B,SAAC,CAAC;AACO,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAiB,MAAK;YACvD,MAAM,WAAW,GAAmB,EAAE;AAEtC,YAAA,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC;AACtF,gBAAA,EAAE,EAAE,GAAG,CAAC,EAAG,EAAE;AACb,gBAAA,IAAI,EAAE,GAAG,CAAC,IAAK,EAAE;AACjB,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,IAAI,EAAE,GAAG,CAAC,SAAS;AACtB,aAAA,CAAC,CAAC;AAEH,YAAA,OAAO,WAAW;AACtB,SAAC,CAAC;AACO,QAAA,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MACnC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAG,CAAC,GAAG,EAAE,CAC7F;AACQ,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAChC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC;AAClC,cAAE,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAG;cACvE,EAAE,CACX;AACQ,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;AACzC,YAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,oBAAoB;iBAChD,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ;AACvB,iBAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;iBACtF,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,kCAAkC,CAAC;AACrF,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB;iBAC9C,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ;AACxB,iBAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;iBACtF,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,kCAAkC,CAAC;YAErF,OAAO;AACH,gBAAA,GAAG,mBAAmB;AACtB,gBAAA,GAAG;AACN,aAAA,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,kCAAkC,CAAC;AACtF,SAAC,CAAC;AACO,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAS,MAAK;YAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;YACrD,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC;YACjE,MAAM,mBAAmB,GAAG,cAAc,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC,GAAG,EAAE;AAE7G,YAAA,OAAO,CAAG,EAAA,SAAS,CAAG,EAAA,mBAAmB,EAAE;AAC/C,SAAC,CAAC;AAEe,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,QAAA,IAAA,CAAA,uBAAuB,GAAG,MAAM,CAAC,0BAA0B,CAAC;AAC5D,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC/C,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AACnD,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE;AAC7D,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa;AAC9D,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,EAAE,CAAC;AAC/B,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAgE,6DAAA,EAAA,IAAI,CAAC,KAAK,EAAE,CAAA,CAAE,CAAC;;AAGvH,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;AAmD1E;AA7IG,IAAA,IAA0B,OAAO,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE;;IA2FhC,QAAQ,GAAA;QACJ,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,WAAW,EAAE;AAC1C,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;;QAGpC,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,mBAAmB,EAAE;YAClD,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAG,CAAC,mBAAoB;AAE5D,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;AACjC,YAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC;;;IAIjD,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE;;AAGvC,IAAA,cAAc,CAAC,IAAkB,EAAA;QAC7B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5C,QAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAE,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;QACvG,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC;AAErD,QAAA,IAAI,CAAC,8BAA8B,GAAG,KAAK;;AAG/C,IAAA,wBAAwB,CAAC,IAAkB,EAAA;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAG,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;AAEpG,QAAA,IAAI,CAAC,CAAC,GAAG,EAAE,aAAa,EAAE;AACtB,YAAA,GAAG,CAAC,aAAc,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;;;AAIrD,IAAA,gBAAgB,CAAC,YAA+B,EAAA;AAC5C,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;YACxB,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;;AAGzD,QAAA,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,YAAY,CAAC;;AAG/D,IAAA,kBAAkB,CAAC,YAA+B,EAAA;QAC9C,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,CAAC;;IAGlE,qBAAqB,GAAA;QACjB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;;8GA5IpD,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,gVAKuC,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAChB,UAAU,EAChB,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAU,oEClCjE,8sPA4HA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,kCAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,eAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDjGa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;+BACI,YAAY,EAAA,aAAA,EAGP,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,8sPAAA,EAAA;8BAGX,OAAO,EAAA,CAAA;sBAAhC,WAAW;uBAAC,OAAO;;;MEJX,YAAY,CAAA;8GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAZ,YAAY,EAAA,YAAA,EAAA,CANjB,eAAe,CAAA,EAAA,OAAA,EAAA,CAPf,YAAY;YACZ,eAAe;YACf,cAAc;YACd,iBAAiB;AACjB,YAAA,aAAa,aAMb,eAAe,CAAA,EAAA,CAAA,CAAA;AAGV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAbjB,YAAY;YACZ,eAAe;YACf,cAAc;YACd,iBAAiB;YACjB,aAAa,CAAA,EAAA,CAAA,CAAA;;2FASR,YAAY,EAAA,UAAA,EAAA,CAAA;kBAfxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,eAAe;wBACf,cAAc;wBACd,iBAAiB;wBACjB;AACH,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACV;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL;AACH;AACJ,iBAAA;;;AClBD;;AAEG;MACU,oBAAoB,CAAA;AA+C7B,IAAA,WAAA,CAAY,IAAsB,EAAA;AALlC;;AAEG;QACH,IAAkB,CAAA,kBAAA,GAAkB,EAAE;AAGlC,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;QAEzB,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,cAAc;QAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,EAAE,WAAW,IAAI,SAAS;QACjD,IAAI,CAAC,iBAAiB,GAAG,IAAI,EAAE,iBAAiB,IAAI,SAAS;QAC7D,IAAI,CAAC,UAAU,GAAG,IAAI,EAAE,UAAU,IAAI,IAAI,CAAC,iBAAiB;AAE5D,QAAA,IAAI,IAAI,EAAE,kBAAkB,EAAE;AAC1B,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB;;;AAG5D;;AChED;;AAEG;MACU,yBAAyB,CAAA;AAMlC,IAAA,WAAA,CAAY,IAA2B,EAAA;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC;;AAEjE;;ACZD;;AAEG;MACU,oBAAoB,CAAA;AA0C7B,IAAA,WAAA,CAAY,IAAsB,EAAA;AAC9B,QAAA,IAAI,IAAI,EAAE,QAAQ,KAAK,SAAS,EAAE;;;AAIlC,QAAA,IAAI,IAAI,EAAE,SAAS,KAAK,SAAS,EAAE;;;AAInC,QAAA,IAAI,IAAI,EAAE,mBAAmB,KAAK,SAAS,EAAE;;;QAI7C,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,QAAQ;QAC5C,IAAI,CAAC,uBAAuB,GAAG,IAAI,EAAE,uBAAuB,IAAI,IAAI;QACpE,IAAI,CAAC,YAAY,GAAG,IAAI,EAAE,YAAY,IAAI,IAAI;QAC9C,IAAI,CAAC,wBAAwB,GAAG,IAAI,EAAE,wBAAwB,IAAI,KAAK;QACvE,IAAI,CAAC,cAAc,GAAG,IAAI,EAAE,cAAc,IAAI,KAAK;QACnD,IAAI,CAAC,oBAAoB,GAAG,IAAI,yBAAyB,CAAC,IAAI,EAAE,oBAAoB,CAAC;;AAE5F;;AChED;;AAEG;MACU,eAAe,CAAA;AACxB;;AAEG;aACI,IAAiB,CAAA,iBAAA,GAAG,4BAA4B,CAAC;AAExD;;AAEG;aACI,IAA4B,CAAA,4BAAA,GAAG,IAAI,cAAc,CAAkB,eAAe,CAAC,iBAAiB,CAAC,CAAC;;;ACVjH;;AAEG;MAEU,sBAAsB,CAAA;AAM/B,IAAA,WAAA,CAAkE,YAA6B,EAAA;QAC3F,IAAI,CAAC,MAAM,GAAG,IAAI,oBAAoB,CAAC,YAAY,CAAC;;8GAP/C,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAMX,eAAe,CAAC,4BAA4B,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHANvD,sBAAsB,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC;;0BAOgB,MAAM;AAAC,oBAAA,IAAA,EAAA,CAAA,eAAe,CAAC,4BAA4B;;;ACXpE;;AAEG;AAEG,MAAgB,UAAW,SAAQ,aAAa,CAAA;AADtD,IAAA,WAAA,GAAA;;AAEuB,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACrD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;AAe5D;IAbG,QAAQ,GAAA;QACJ,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,cAAc,EAAE;AACjD,YAAA,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,cAAc,CAAC;;;IAIjD,WAAW,GAAA;QAChB,KAAK,CAAC,WAAW,EAAE;QAEnB,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,cAAc,EAAE;AACjD,YAAA,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,cAAc,CAAC;;;8GAd3C,UAAU,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAV,UAAU,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;ACCK,MAAO,oBAAqB,SAAQ,UAAU,CAAA;AALpD,IAAA,WAAA,GAAA;;AAMa,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;AAK3E;IAHY,QAAQ,GAAA;;;8GAHR,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,+ECTjC,yVAWA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDFa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACI,kBAAkB,EAAA,QAAA,EAAA,yVAAA,EAAA;;;MEyBnB,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAjB,iBAAiB,EAAA,YAAA,EAAA,CANtB,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAVpB,YAAY;YACZ,YAAY;YACZ,aAAa;YACb,iBAAiB;YACjB,cAAc;YACd,aAAa;YACb,YAAY;AACZ,YAAA,YAAY,aAMZ,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAGf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAhBtB,YAAY;YAGZ,iBAAiB;YACjB,cAAc;YACd,aAAa;YACb,YAAY;YACZ,YAAY,CAAA,EAAA,CAAA,CAAA;;2FASP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAlB7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,YAAY;wBACZ,aAAa;wBACb,iBAAiB;wBACjB,cAAc;wBACd,aAAa;wBACb,YAAY;wBACZ;AACH,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACV;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL;AACH;AACJ,iBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACbK,MAAO,gBAAiB,SAAQ,aAAa,CAAA;AANnD,IAAA,WAAA,GAAA;;QAO0B,IAAc,CAAA,cAAA,GAAG,yCAAyC;QAC7C,IAAK,CAAA,KAAA,GAAG,MAAM;QAEjD,IAAS,CAAA,SAAA,GAAqB,EAAE;QAChC,IAAwB,CAAA,wBAAA,GAAG,KAAK;QAEvB,IAAa,CAAA,aAAA,GAAG,SAAS,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAChE,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,KAAK,CAAC;AACnC,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;AAC9D,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;AAC7D,QAAA,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MACnC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAG,CAAC,GAAG,EAAE,CAC7F;AACQ,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAChC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC;AAClC,cAAE,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAG;cACvE,EAAE,CACX;AACQ,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAiB,MAAK;YACvD,MAAM,WAAW,GAAmB,EAAE;AAEtC,YAAA,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC;AACtF,gBAAA,EAAE,EAAE,GAAG,CAAC,EAAG,EAAE;AACb,gBAAA,IAAI,EAAE,GAAG,CAAC,IAAK,EAAE;AACjB,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,IAAI,EAAE,GAAG,CAAC,SAAS;AACtB,aAAA,CAAC,CAAC;AAEH,YAAA,OAAO,WAAW;AACtB,SAAC,CAAC;AACO,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAS,MAAK;YAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;YACrD,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC;YACjE,MAAM,mBAAmB,GAAG,cAAc,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC,GAAG,EAAE;AAE7G,YAAA,OAAO,CAAG,EAAA,SAAS,CAAG,EAAA,mBAAmB,EAAE;AAC/C,SAAC,CAAC;QAEM,IAAY,CAAA,YAAA,GAAG,EAAE;QACjB,IAAe,CAAA,eAAA,GAAqB,EAAE;AAE7B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,QAAA,IAAA,CAAA,uBAAuB,GAAG,MAAM,CAAC,0BAA0B,CAAC;AAiOhF;IA/NG,QAAQ,GAAA;QACJ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;QAChD,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1C,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,MAAK;AAClE,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;YACrD,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;YAE1C,IAAI,CAAC,iBAAiB,EAAE;AAC5B,SAAC,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CACrC,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,eAAe,CAAC,CACpD,CAAC,SAAS,CAAC,KAAK,IAAG;AAChB,YAAA,IAAI,CAAC,YAAY,GAAqB,KAAM,CAAC,GAAG;YAChD,IAAI,CAAC,iBAAiB,EAAE;AAC5B,SAAC,CAAC;QAEF,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,CAAC;;AAGpD,IAAA,eAAe,CAAC,IAAoB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE;gBAC5B,IAAI,CAAC,mBAAmB,EAAE;;YAG9B;;QAGJ,IAAI,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;QACtD,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrG,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC;AACrD,QAAA,IAAI,CAAC,SAAS,GAAG,YAAY;AAE7B,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,aAAa,EAAE;YACpB;;AAGJ,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YACxB;;AAGJ,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAE,CAAC,WAAW,EAAE;QAEhF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE;;AAGzC,IAAA,WAAW,CAAC,IAAoB,EAAA;QAC5B,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC;;AAG3C,IAAA,UAAU,CAAC,IAAS,EAAA;AAChB,QAAA,OAAO,IAAsB;;AAGjC,IAAA,cAAc,CAAC,IAAoB,EAAE,WAAmB,EAAE,GAAG,OAAiB,EAAA;QAC1E,OAAO;AACH,YAAA,GAAG,OAAO;YACV,IAAI,CAAC,QAAQ,GAAG,WAAW,GAAG,EAAE;YAChC,IAAI,CAAC,QAAQ,GAAG,UAAU,GAAG;SAChC;;IAGL,qBAAqB,GAAA;QACjB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;;AAG7D,IAAA,wBAAwB,CAAC,IAAkB,EAAA;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAG,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;AAEpG,QAAA,IAAI,CAAC,CAAC,GAAG,EAAE,aAAa,EAAE;AACtB,YAAA,GAAG,CAAC,aAAc,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;;;IAI7C,cAAc,CAAC,IAAoB,EAAE,QAAgB,EAAA;AACzD,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAC5B,YAAA,OAAO,IAAI;;AAGf,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC;YAElD,IAAI,KAAK,EAAE;AACP,gBAAA,OAAO,KAAK;;;AAIpB,QAAA,OAAO,SAAS;;IAGZ,iBAAiB,GAAA;QACrB,IAAI,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;QACnD,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,UAAU,CAAC;AAC3D,QAAA,IAAI,CAAC,SAAS,GAAG,YAAY;;IAGzB,aAAa,CAAC,KAAuB,EAAE,IAAsB,EAAA;AACjE,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACnB,YAAA,OAAO,KAAK;;AAGhB,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,IAAG;AACpB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAEjD,IAAI,CAAC,QAAQ,EAAE;AACX,gBAAA,OAAO,IAAI;;YAGf,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAoB;AAE7D,YAAA,IAAI,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE;AAC1B,gBAAA,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CACjC,OAAO,CAAC,QAAQ,EAChB,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAChD;AACD,gBAAA,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;;AAG7D,YAAA,OAAO,OAAO;AAClB,SAAC,CAAC;;AAGE,IAAA,aAAa,CAAC,KAAuB,EAAA;AACzC,QAAA,IAAI,UAAwC;;AAG5C,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACtB,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC;YAEzD,IAAI,UAAU,EAAE;gBACZ;;;;QAKR,MAAM,IAAI,GAAqB,EAAE;QAEjC,OAAO,UAAU,EAAE;AACf,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;AACxB,YAAA,UAAU,GAAG,UAAU,CAAC,MAAM;;AAGlC,QAAA,OAAO,IAAI;;AAGP,IAAA,cAAc,CAAC,KAAuB,EAAA;AAC1C,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,IAAG;YACpB,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAoB;AAE9D,YAAA,IAAI,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE;gBAC1B,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC;AACxD,gBAAA,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;;AAG7D,YAAA,OAAO,OAAO;AAClB,SAAC,CAAC;;AAGE,IAAA,aAAa,CAAC,KAAuB,EAAE,MAAsB,EAAE,QAAiB,EAAA;AACpF,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,IAAG;YACpB,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,EAAE;gBACvB,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAoB;AAEvD,gBAAA,IAAI,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE;AAC1B,oBAAA,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;AACzE,oBAAA,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;;AAG7D,gBAAA,OAAO,OAAO;;AAGlB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;AACvB,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;gBACvE,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAoB;AAEpE,gBAAA,WAAW,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;AAEpD,gBAAA,OAAO,OAAO;;AAGlB,YAAA,OAAO,IAAI;AACf,SAAC,CAAC;;IAGE,aAAa,CAAC,KAAuB,EAAE,SAAyB,EAAA;AACpE,QAAA,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM;AAC7B,QAAA,IAAI,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC;QAE7B,OAAO,MAAM,EAAE;AACX,YAAA,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,IAAG;gBACnC,IAAI,IAAI,CAAC,EAAE,KAAK,MAAO,CAAC,EAAE,EAAE;oBACxB,OAAO,EAAE,GAAG,MAAO,EAAE,QAAQ,EAAE,IAAI,EAAoB;;AAG3D,gBAAA,OAAO,IAAI;AACf,aAAC,CAAC;AACF,YAAA,MAAM,GAAG,MAAM,CAAC,MAAM;;AAG1B,QAAA,OAAO,YAAY;;IAGf,YAAY,CAAC,KAAuB,EAAE,QAAa,EAAA;AACvD,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACtB,YAAA,IAAI,IAAI,CAAC,EAAE,KAAK,QAAQ,EAAE;AACtB,gBAAA,OAAO,IAAI;;AAGf,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;AACvB,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAExD,gBAAA,IAAI,CAAC,CAAC,KAAK,EAAE;AACT,oBAAA,OAAO,KAAK;;;;AAKxB,QAAA,OAAO,SAAS;;8GA9QX,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhB,gBAAgB,EAAA,QAAA,EAAA,aAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAOmC,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvB1E,2tKAoGA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,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,EAAAJ,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,eAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,kCAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDpFa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;+BACI,aAAa,EAAA,aAAA,EAGR,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,2tKAAA,EAAA;8BAGf,cAAc,EAAA,CAAA;sBAAnC,WAAW;uBAAC,OAAO;gBACe,KAAK,EAAA,CAAA;sBAAvC,WAAW;uBAAC,oBAAoB;;;MEVxB,mBAAmB,CAAA;AALhC,IAAA,WAAA,GAAA;AAMI,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAmB;AAC5C;8GAFY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,0LCRhC,80BAuBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,YAAA,EAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,MAAA,EAAA,OAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDfa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACI,iBAAiB,EAAA,QAAA,EAAA,80BAAA,EAAA;;;AEMzB,MAAO,8BAA+B,SAAQ,UAAU,CAAA;8GAAjD,8BAA8B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,0FCV3C,yeAgBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDNa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAN1C,SAAS;+BACI,6BAA6B,EAAA,aAAA,EAGxB,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,yeAAA,EAAA;;;MEkC5B,2BAA2B,CAAA;AACpC,IAAA,WAAA,CAAY,gBAAkC,EAAA;QAC1C,gBAAgB,CAAC,oCAAoC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AAC7E,QAAA,gBAAgB,CAAC,cAAc,CAACC,IAAE,EAAE,IAAI,CAAC;AACzC,QAAA,gBAAgB,CAAC,cAAc,CAACC,IAAE,EAAE,IAAI,CAAC;;8GAJpC,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAP,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,iBAVhC,8BAA8B;YAC9B,gBAAgB;AAChB,YAAA,mBAAmB,aAdnB,YAAY;YACZ,YAAY;YACZ,eAAe;YACf,cAAc;YACd,mBAAmB;YACnB,eAAe;YACf,aAAa;YACb,iBAAiB;YACjB,YAAY;AACZ,YAAA,YAAY,aAQZ,8BAA8B;YAC9B,gBAAgB;YAChB,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAGd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,YAtBhC,YAAY;YACZ,YAAY;YACZ,eAAe;YACf,cAAc;YACd,mBAAmB;YACnB,eAAe;YACf,aAAa;YACb,iBAAiB;YACjB,YAAY;YACZ,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAaP,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAxBvC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,YAAY;wBACZ,eAAe;wBACf,cAAc;wBACd,mBAAmB;wBACnB,eAAe;wBACf,aAAa;wBACb,iBAAiB;wBACjB,YAAY;wBACZ;AACH,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACV,8BAA8B;wBAC9B,gBAAgB;wBAChB;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,8BAA8B;wBAC9B,gBAAgB;wBAChB;AACH;AACJ,iBAAA;;;MClCY,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,sDCP/B,4BACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDMa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACI,gBAAgB,EAAA,QAAA,EAAA,4BAAA,EAAA;;;MEYjB,cAAc,CAAA;AAL3B,IAAA,WAAA,GAAA;QAMI,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;QACpC,IAAQ,CAAA,QAAA,GAAmB,EAAE;AAC7B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;AAClB,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,sBAAsB,CAAC;QACpD,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,oBAAoB,CAAC,SAAS;AAc/D,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC;AACvE,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAwEzD;AAvFG,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,UAAU,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;;AAG9C,IAAA,IAAI,WAAW,GAAA;QACX,OAAO,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,CAAE,CAAA,CAAC;;AAG7C,IAAA,IAAY,UAAU,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,CAAM,GAAA,EAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA,CAAE,GAAG,EAAE,CAAC,IAAI,UAAU;;IAQ1G,QAAQ,GAAA;QACJ,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC;QAElD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE;YAChC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;;QAG1D,IAAI,CAAC,QAAQ,GAAG;AACZ,YAAA;AACI,gBAAA,MAAM,EAAE;AACJ,oBAAA;AACI,wBAAA,IAAI,EAAE,UAAU;wBAChB,IAAI,EAAE,gBAAgB,CAAC,KAAK;AAC5B,wBAAA,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;wBACxB,KAAK,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,YAAY,EAAE,KAAK,EAAE;AAC1D,wBAAA,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1D,wBAAA,mBAAmB,EAAE;AACL;AACvB;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,MAAM,EAAE;AACJ,oBAAA;AACI,wBAAA,IAAI,EAAE,UAAU;wBAChB,IAAI,EAAE,gBAAgB,CAAC,KAAK;AAC5B,wBAAA,SAAS,EAAE,UAAU;AACrB,wBAAA,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;wBACxB,KAAK,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,YAAY,EAAE,KAAK,EAAE;AAC7D,wBAAA,UAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1D,wBAAA,mBAAmB,EAAE;AACL;AACvB;AACJ,aAAA;AACD,YAAA;AACI,gBAAA,MAAM,EAAE;AACJ,oBAAA;AACI,wBAAA,IAAI,EAAE,YAAY;wBAClB,IAAI,EAAE,gBAAgB,CAAC,QAAQ;AAC/B,wBAAA,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;wBACxB,KAAK,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,YAAY,EAAE,KAAK,EAAE;AAC/D,wBAAA,SAAS,EAAE;AACd;AACJ;AACJ;SACJ;;IAGL,WAAW,GAAA;QACP,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;QAErD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE;YAChC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;;;IAIjE,KAAK,GAAA;;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAE,IAAI,CAAC,SAAS,EAAE,CAAC,KAAa,CAAC,QAAQ,EAAG,IAAI,CAAC,SAAS,EAAE,CAAC,KAAa,CAAC,QAAQ;AACpG,aAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChD,aAAA,SAAS,EAAE;;IAGpB,uBAAuB,GAAA;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,EAAE;;IAGnE,cAAc,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE;;8GA5FjD,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,4OCf3B,+2JAiHA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,YAAA,EAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,MAAA,EAAA,OAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAS,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,eAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,QAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDlGa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;+BACI,WAAW,EAAA,QAAA,EAAA,+2JAAA,EAAA;;;MEJZ,sBAAsB,CAAA;8GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,0DCPnC,gCACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDMa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACI,oBAAoB,EAAA,QAAA,EAAA,gCAAA,EAAA;;;AEIlC;;AAEG;AACU,MAAA,MAAM,GAAW;AAC1B,IAAA,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,sBAAsB,EAAE;AAC7D,IAAA,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE;AACrD,IAAA,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc;;MAOjC,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,0CAFpB,YAAY,CAAA,EAAA,CAAA,CAAA;AAEb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,EAHpB,OAAA,EAAA,CAAA,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAC/C,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAEb,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC1D,OAAO,EAAE,CAAC,YAAY;AACzB,iBAAA;;;MCuBY,cAAc,CAAA;8GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,iBAVnB,cAAc;YACd,sBAAsB;AACtB,YAAA,kBAAkB,aAflB,YAAY;YACZ,qBAAqB;YACrB,eAAe;YACf,cAAc;YACd,WAAW;YACX,kBAAkB;YAClB,aAAa;YACb,aAAa;YACb,aAAa;YACb,YAAY;AACZ,YAAA,YAAY,aAQZ,cAAc;YACd,sBAAsB;YACtB,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAGb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAvBnB,YAAY;YACZ,qBAAqB;YACrB,eAAe;YACf,cAAc;YACd,WAAW;YAEX,aAAa;YACb,aAAa;YACb,aAAa;YACb,YAAY;YACZ,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAaP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAzB1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,qBAAqB;wBACrB,eAAe;wBACf,cAAc;wBACd,WAAW;wBACX,kBAAkB;wBAClB,aAAa;wBACb,aAAa;wBACb,aAAa;wBACb,YAAY;wBACZ;AACH,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACV,cAAc;wBACd,sBAAsB;wBACtB;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,cAAc;wBACd,sBAAsB;wBACtB;AACH;AACJ,iBAAA;;;AChCD;;AAEG;MAWU,eAAe,CAAA;AACxB;;;AAGG;IACH,OAAO,OAAO,CAAC,MAAuB,EAAA;QAClC,OAAO;AACH,YAAA,QAAQ,EAAE,eAAe;AACzB,YAAA,SAAS,EAAE;gBACP,EAAE,OAAO,EAAE,eAAe,CAAC,4BAA4B,EAAE,QAAQ,EAAE,MAAM;AAC5E;SACJ;;8GAXI,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YARpB,YAAY;YACZ,mBAAmB;YACnB,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAMjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAJb,SAAA,EAAA;YACP;AACH,SAAA,EAAA,OAAA,EAAA,CANG,YAAY;YACZ,mBAAmB;YACnB,sBAAsB,CAAA,EAAA,CAAA,CAAA;;2FAMjB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAV3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,mBAAmB;wBACnB;AACH,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACP;AACH;AACJ,iBAAA;;;ACrBD;;AAEG;;;;"}
@@ -224,7 +224,7 @@ class ModalContainerComponent extends BaseComponent {
224
224
  }
225
225
  }
226
226
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ModalContainerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
227
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ModalContainerComponent, selector: "upd-modal-container", host: { properties: { "id": "this.id", "class": "this.hostClass", "role": "this.role", "aria-hidden": "this.ariaHidden", "aria-modal": "this.ariaModal", "tabindex": "this.tabIndex", "style.display": "this.styleDisplay" } }, viewQueries: [{ propertyName: "dialog", first: true, predicate: ["dialog"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "bodyContentOutlet", first: true, predicate: NgComponentOutlet, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Modal'\">\n <div [ngClass]=\"classes\" #dialog>\n <div class=\"modal-content\" tabindex=\"-1\" #content>\n @if (!!contentType) {\n <ng-container [ngComponentOutlet]=\"contentType\" [ngComponentOutletInputs]=\"{modalRef: this, data: data}\"></ng-container>\n } @else {\n @if (!isAlert && (!!titleText || !!headerTemplateRef)) {\n <div class=\"modal-header\">\n @if (!!headerTemplateRef) {\n <ng-container [ngTemplateOutlet]=\"headerTemplateRef\" [ngTemplateOutletContext]=\"{modalRef: this, data: data}\">\n </ng-container>\n } @else {\n <h5 class=\"modal-title\">{{ titleText }}</h5>\n @if (showCloseButton) {\n <ng-container [ngTemplateOutlet]=\"closeBtnTpl\"></ng-container>\n }\n }\n </div>\n } @else if (showCloseButton) {\n <ng-container [ngTemplateOutlet]=\"closeBtnTpl\"></ng-container>\n }\n\n <div class=\"modal-body py-4\" [class.text-center]=\"isTextCentered || isAlert\">\n @if (isAlert && !!titleText) {\n <div class=\"d-flex justify-content-center align-content-start\"\n [class.flex-row]=\"titleIconPosition === 'left' || titleIconPosition === 'right'\"\n [class.flex-column]=\"titleIconPosition === 'top' || titleIconPosition === 'bottom'\">\n @if (!!titleIcon && (titleIconPosition === 'top' || titleIconPosition === 'left')) {\n <upd-icon [model]=\"titleIcon\" [class.me-2]=\"titleIconPosition === 'left'\"\n [class.mb-2]=\"titleIconPosition === 'top'\"></upd-icon>\n }\n\n <span class=\"align-self-center fs-3 fw-bold\" [class.mb-3]=\"!!titleIcon && titleIconPosition === 'top'\">\n {{ titleText }}\n </span>\n\n @if (!!titleIcon && (titleIconPosition === 'bottom' || titleIconPosition === 'right')) {\n <upd-icon [model]=\"titleIcon\" [class.ms-2]=\"titleIconPosition === 'right'\"\n [class.mb-2]=\"titleIconPosition === 'bottom'\"></upd-icon>\n }\n </div>\n }\n\n @if (!!bodyTemplateRef) {\n <ng-container [ngTemplateOutlet]=\"bodyTemplateRef!\" [ngTemplateOutletContext]=\"{modalRef: this, data: data}\">\n </ng-container>\n } @else if (!!bodyContentType) {\n <ng-container [ngComponentOutlet]=\"bodyContentType\" [ngComponentOutletInputs]=\"{modalRef: this, data: data}\">\n </ng-container>\n } @else {\n <div [innerHTML]=\"bodyText\" [class.text-secondary]=\"isAlert\"></div>\n }\n </div>\n\n @if (!!statusColor) {\n <div class=\"modal-status\" [style.position]=\"'relative'\" [ngClass]=\"statusColorClass\"></div>\n }\n\n @if (showCancelButton || actionButtons.length > 0 || !!footerTemplateRef) {\n <div class=\"modal-footer\">\n @if (!!footerTemplateRef) {\n <ng-container [ngTemplateOutlet]=\"footerTemplateRef\" [ngTemplateOutletContext]=\"{modalRef: this, data: data}\">\n </ng-container>\n } @else {\n @switch (footerLayout) {\n @case ('full-width') {\n <div class=\"w-100\">\n <div class=\"row\">\n @if (showCancelButton) {\n <div class=\"col\">\n <upd-button class=\"w-100\" [isNavigationLink]=\"true\" (clicked)=\"close()\">\n {{ t('Cancel') }}\n </upd-button>\n </div>\n }\n\n @for (btn of actionButtons; track btn) {\n <div class=\"col\">\n <upd-button class=\"w-100\" [model]=\"btn\"></upd-button>\n </div>\n }\n </div>\n </div>\n }\n @case ('centered') {\n <div class=\"d-flex justify-content-center w-100\">\n <ng-container [ngTemplateOutlet]=\"buttonsTpl\"></ng-container>\n </div>\n }\n @default {\n <ng-container [ngTemplateOutlet]=\"buttonsTpl\"></ng-container>\n }\n }\n }\n </div>\n }\n }\n </div>\n </div>\n\n <ng-template #closeBtnTpl>\n <upd-button (clicked)=\"close()\" [shouldIgnoreBtnClass]=\"true\" customClasses=\"btn-close\"></upd-button>\n </ng-template>\n\n <ng-template #buttonsTpl>\n @if (showCancelButton) {\n <upd-button colorStyle=\"secondary\" [isLink]=\"true\" (clicked)=\"close()\">\n {{ t('Cancel') }}\n </upd-button>\n }\n\n @for (btn of actionButtons; track btn) {\n <upd-button [model]=\"btn\" (clicked)=\"buttonClick($event, btn)\"></upd-button>\n }\n </ng-template>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title"], outputs: ["clicked"] }, { kind: "component", type: i3.IconComponent, selector: "upd-icon", inputs: ["model", "wrapperClasses", "color", "colorClass", "removeDefaultClasses", "customClasses", "tablerIcon", "tablerIconWeight", "tablerIconType", "tablerIconSize", "heroIcon", "heroIconSize", "heroIconType"] }, { kind: "directive", type: i1$1.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
227
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ModalContainerComponent, selector: "upd-modal-container", host: { properties: { "id": "this.id", "class": "this.hostClass", "role": "this.role", "aria-hidden": "this.ariaHidden", "aria-modal": "this.ariaModal", "tabindex": "this.tabIndex", "style.display": "this.styleDisplay" } }, viewQueries: [{ propertyName: "dialog", first: true, predicate: ["dialog"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "bodyContentOutlet", first: true, predicate: NgComponentOutlet, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Modal'\">\n <div [ngClass]=\"classes\" #dialog>\n <div class=\"modal-content\" tabindex=\"-1\" #content>\n @if (!!contentType) {\n <ng-container [ngComponentOutlet]=\"contentType\" [ngComponentOutletInputs]=\"{modalRef: this, data: data}\"></ng-container>\n } @else {\n @if (!isAlert && (!!titleText || !!headerTemplateRef)) {\n <div class=\"modal-header\">\n @if (!!headerTemplateRef) {\n <ng-container [ngTemplateOutlet]=\"headerTemplateRef\" [ngTemplateOutletContext]=\"{modalRef: this, data: data}\">\n </ng-container>\n } @else {\n <h5 class=\"modal-title\">{{ titleText }}</h5>\n @if (showCloseButton) {\n <ng-container [ngTemplateOutlet]=\"closeBtnTpl\"></ng-container>\n }\n }\n </div>\n } @else if (showCloseButton) {\n <ng-container [ngTemplateOutlet]=\"closeBtnTpl\"></ng-container>\n }\n\n <div class=\"modal-body py-4\" [class.text-center]=\"isTextCentered || isAlert\">\n @if (isAlert && !!titleText) {\n <div class=\"d-flex justify-content-center align-content-start\"\n [class.flex-row]=\"titleIconPosition === 'left' || titleIconPosition === 'right'\"\n [class.flex-column]=\"titleIconPosition === 'top' || titleIconPosition === 'bottom'\">\n @if (!!titleIcon && (titleIconPosition === 'top' || titleIconPosition === 'left')) {\n <upd-icon [model]=\"titleIcon\" [class.me-2]=\"titleIconPosition === 'left'\"\n [class.mb-2]=\"titleIconPosition === 'top'\"></upd-icon>\n }\n\n <span class=\"align-self-center fs-3 fw-bold\" [class.mb-3]=\"!!titleIcon && titleIconPosition === 'top'\">\n {{ titleText }}\n </span>\n\n @if (!!titleIcon && (titleIconPosition === 'bottom' || titleIconPosition === 'right')) {\n <upd-icon [model]=\"titleIcon\" [class.ms-2]=\"titleIconPosition === 'right'\"\n [class.mb-2]=\"titleIconPosition === 'bottom'\"></upd-icon>\n }\n </div>\n }\n\n @if (!!bodyTemplateRef) {\n <ng-container [ngTemplateOutlet]=\"bodyTemplateRef!\" [ngTemplateOutletContext]=\"{modalRef: this, data: data}\">\n </ng-container>\n } @else if (!!bodyContentType) {\n <ng-container [ngComponentOutlet]=\"bodyContentType\" [ngComponentOutletInputs]=\"{modalRef: this, data: data}\">\n </ng-container>\n } @else {\n <div [innerHTML]=\"bodyText\" [class.text-secondary]=\"isAlert\"></div>\n }\n </div>\n\n @if (!!statusColor) {\n <div class=\"modal-status\" [style.position]=\"'relative'\" [ngClass]=\"statusColorClass\"></div>\n }\n\n @if (showCancelButton || actionButtons.length > 0 || !!footerTemplateRef) {\n <div class=\"modal-footer\">\n @if (!!footerTemplateRef) {\n <ng-container [ngTemplateOutlet]=\"footerTemplateRef\" [ngTemplateOutletContext]=\"{modalRef: this, data: data}\">\n </ng-container>\n } @else {\n @switch (footerLayout) {\n @case ('full-width') {\n <div class=\"w-100\">\n <div class=\"row\">\n @if (showCancelButton) {\n <div class=\"col\">\n <upd-button class=\"w-100\" [isNavigationLink]=\"true\" (clicked)=\"close()\">\n {{ t('Cancel') }}\n </upd-button>\n </div>\n }\n\n @for (btn of actionButtons; track btn) {\n <div class=\"col\">\n <upd-button class=\"w-100\" [model]=\"btn\"></upd-button>\n </div>\n }\n </div>\n </div>\n }\n @case ('centered') {\n <div class=\"d-flex justify-content-center w-100\">\n <ng-container [ngTemplateOutlet]=\"buttonsTpl\"></ng-container>\n </div>\n }\n @default {\n <ng-container [ngTemplateOutlet]=\"buttonsTpl\"></ng-container>\n }\n }\n }\n </div>\n }\n }\n </div>\n </div>\n\n <ng-template #closeBtnTpl>\n <upd-button (clicked)=\"close()\" [shouldIgnoreBtnClass]=\"true\" customClasses=\"btn-close\"></upd-button>\n </ng-template>\n\n <ng-template #buttonsTpl>\n @if (showCancelButton) {\n <upd-button colorStyle=\"secondary\" [isLink]=\"true\" (clicked)=\"close()\">\n {{ t('Cancel') }}\n </upd-button>\n }\n\n @for (btn of actionButtons; track btn) {\n <upd-button [model]=\"btn\" (clicked)=\"buttonClick($event, btn)\"></upd-button>\n }\n </ng-template>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title", "stopPropagation"], outputs: ["clicked"] }, { kind: "component", type: i3.IconComponent, selector: "upd-icon", inputs: ["model", "wrapperClasses", "color", "colorClass", "removeDefaultClasses", "customClasses", "tablerIcon", "tablerIconWeight", "tablerIconType", "tablerIconSize", "heroIcon", "heroIconSize", "heroIconType"] }, { kind: "directive", type: i1$1.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
228
228
  }
229
229
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ModalContainerComponent, decorators: [{
230
230
  type: Component,