@rxap/layout 18.0.3-dev.1 → 18.1.0-dev.1

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 (212) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +267 -1
  3. package/compodoc/changelog.html +16 -0
  4. package/compodoc/components/AppsButtonComponent.html +197 -153
  5. package/compodoc/components/BaseLayoutComponent.html +351 -0
  6. package/compodoc/components/DefaultHeaderComponent.html +545 -0
  7. package/compodoc/components/FooterComponent.html +58 -79
  8. package/compodoc/components/HeaderComponent.html +49 -294
  9. package/compodoc/components/LanguageSelectorComponent.html +6 -54
  10. package/compodoc/components/LayoutComponent.html +69 -464
  11. package/compodoc/components/MinimalLayoutComponent.html +349 -0
  12. package/compodoc/components/NavigationComponent.html +116 -312
  13. package/compodoc/components/NavigationItemComponent.html +130 -361
  14. package/compodoc/components/NavigationProgressBarComponent.html +41 -107
  15. package/compodoc/components/ReleaseInfoComponent.html +536 -0
  16. package/compodoc/components/SettingsButtonComponent.html +186 -225
  17. package/compodoc/components/SidenavComponent.html +566 -142
  18. package/compodoc/components/SidenavToggleButtonComponent.html +71 -91
  19. package/compodoc/components/SignOutComponent.html +7 -60
  20. package/compodoc/components/UserProfileIconComponent.html +97 -161
  21. package/compodoc/dependencies.html +9 -25
  22. package/compodoc/directives/FooterDirective-1.html +293 -0
  23. package/compodoc/directives/FooterDirective.html +8 -86
  24. package/compodoc/directives/HeaderDirective.html +293 -0
  25. package/compodoc/index.html +177 -2
  26. package/compodoc/injectables/ExternalAppsService.html +1311 -0
  27. package/compodoc/injectables/FooterService.html +573 -0
  28. package/compodoc/injectables/HeaderService.html +576 -0
  29. package/compodoc/injectables/LayoutService.html +899 -0
  30. package/compodoc/injectables/LogoService.html +411 -0
  31. package/compodoc/injectables/NavigationService.html +46 -57
  32. package/compodoc/interfaces/ReleaseInfoModule.html +385 -0
  33. package/compodoc/interfaces/SettingsMenuItem.html +385 -0
  34. package/compodoc/js/menu-wc.js +24 -40
  35. package/compodoc/js/menu-wc_es5.js +1 -1
  36. package/compodoc/js/search/search_index.js +2 -2
  37. package/compodoc/miscellaneous/functions.html +532 -0
  38. package/compodoc/miscellaneous/typealiases.html +40 -2
  39. package/compodoc/miscellaneous/variables.html +123 -9
  40. package/compodoc/overview.html +2 -10
  41. package/compodoc/properties.html +1 -1
  42. package/docs/assets/highlight.css +42 -0
  43. package/docs/assets/navigation.js +1 -1
  44. package/docs/assets/search.js +1 -1
  45. package/docs/classes/AppsButtonComponent.html +8 -8
  46. package/docs/classes/BaseLayoutComponent.html +2 -0
  47. package/docs/classes/DefaultHeaderComponent.html +7 -0
  48. package/docs/classes/ExternalAppsService.html +19 -0
  49. package/docs/classes/FooterComponent.html +5 -3
  50. package/docs/classes/FooterDirective.html +2 -2
  51. package/docs/classes/FooterService.html +14 -0
  52. package/docs/classes/HeaderComponent.html +6 -8
  53. package/docs/classes/HeaderDirective.html +8 -0
  54. package/docs/classes/HeaderService.html +14 -0
  55. package/docs/classes/LayoutComponent.html +4 -12
  56. package/docs/classes/LayoutService.html +20 -0
  57. package/docs/classes/LogoService.html +7 -0
  58. package/docs/classes/MinimalLayoutComponent.html +2 -0
  59. package/docs/classes/NavigationComponent.html +7 -8
  60. package/docs/classes/NavigationItemComponent.html +6 -9
  61. package/docs/classes/NavigationProgressBarComponent.html +3 -3
  62. package/docs/classes/NavigationService.html +3 -3
  63. package/docs/classes/ReleaseInfoComponent.html +6 -0
  64. package/docs/classes/SettingsButtonComponent.html +6 -11
  65. package/docs/classes/SidenavComponent.html +17 -5
  66. package/docs/classes/SidenavFooterDirective.html +2 -2
  67. package/docs/classes/SidenavHeaderDirective.html +2 -2
  68. package/docs/classes/SidenavToggleButtonComponent.html +4 -3
  69. package/docs/classes/UserProfileIconComponent.html +5 -4
  70. package/docs/documentation.json +9635 -9292
  71. package/docs/functions/IsNavigationDividerItem.html +1 -1
  72. package/docs/functions/IsNavigationInsertItem.html +1 -1
  73. package/docs/functions/IsNavigationItem.html +1 -1
  74. package/docs/functions/provideLayout.html +1 -0
  75. package/docs/functions/widthDefaultHeaderComponent.html +1 -0
  76. package/docs/functions/withExternalApps.html +1 -0
  77. package/docs/functions/withFooterComponents.html +1 -0
  78. package/docs/functions/withHeaderComponents.html +1 -0
  79. package/docs/functions/withNavigationConfig.html +1 -0
  80. package/docs/functions/withNavigationInserts.html +1 -0
  81. package/docs/functions/withReleaseInfoModules.html +1 -0
  82. package/docs/functions/withSettingsMenuItems.html +1 -0
  83. package/docs/index.html +65 -2
  84. package/docs/interfaces/NavigationDividerItem.html +2 -2
  85. package/docs/interfaces/NavigationInsertItem.html +2 -2
  86. package/docs/interfaces/NavigationItem.html +2 -2
  87. package/docs/interfaces/NavigationStatus.html +2 -2
  88. package/docs/interfaces/ReleaseInfoModule.html +4 -0
  89. package/docs/interfaces/SettingsMenuItem.html +4 -0
  90. package/docs/modules.html +31 -17
  91. package/docs/types/ExternalApp.html +1 -0
  92. package/docs/types/ExtractUsernameFromProfileFn.html +1 -1
  93. package/docs/types/Navigation.html +1 -1
  94. package/docs/types/NavigationWithInserts.html +1 -1
  95. package/docs/types/SettingsMenuItemComponent.html +1 -0
  96. package/docs/variables/EXTRACT_USERNAME_FROM_PROFILE.html +1 -1
  97. package/docs/variables/RXAP_EXTERNAL_APP.html +1 -0
  98. package/docs/variables/RXAP_EXTERNAL_APP_FILTER.html +1 -0
  99. package/docs/variables/RXAP_FOOTER_COMPONENT.html +1 -1
  100. package/docs/variables/RXAP_HEADER_COMPONENT.html +1 -1
  101. package/docs/variables/RXAP_LAYOUT_APPS_GRID.html +1 -1
  102. package/docs/variables/RXAP_LOGO_CONFIG.html +1 -1
  103. package/docs/variables/RXAP_NAVIGATION_CONFIG.html +1 -1
  104. package/docs/variables/RXAP_NAVIGATION_CONFIG_INSERTS.html +1 -1
  105. package/docs/variables/RXAP_RELEASE_INFO_MODULE.html +1 -0
  106. package/docs/variables/RXAP_SETTINGS_MENU_ITEM.html +1 -0
  107. package/docs/variables/RXAP_SETTINGS_MENU_ITEM_COMPONENT.html +1 -0
  108. package/esm2022/index.mjs +35 -40
  109. package/esm2022/lib/base-layout/base-layout.component.mjs +16 -0
  110. package/esm2022/lib/default-header/apps-button/apps-button.component.mjs +40 -0
  111. package/esm2022/lib/default-header/default-header.component.mjs +32 -0
  112. package/esm2022/lib/default-header/settings-button/settings-button.component.mjs +73 -0
  113. package/esm2022/lib/default-header/sidenav-toggle-button/sidenav-toggle-button.component.mjs +24 -0
  114. package/esm2022/lib/default-header/user-profile-icon/user-profile-icon.component.mjs +35 -0
  115. package/esm2022/lib/external-apps.service.mjs +99 -0
  116. package/esm2022/lib/footer/footer.component.mjs +13 -13
  117. package/esm2022/lib/footer/footer.directive.mjs +30 -0
  118. package/esm2022/lib/footer.service.mjs +58 -0
  119. package/esm2022/lib/header/header.component.mjs +17 -65
  120. package/esm2022/lib/header/header.directive.mjs +30 -0
  121. package/esm2022/lib/header.service.mjs +60 -0
  122. package/esm2022/lib/layout/layout.component.mjs +33 -47
  123. package/esm2022/lib/layout.service.mjs +93 -0
  124. package/esm2022/lib/logo.service.mjs +23 -0
  125. package/esm2022/lib/minimal-layout/minimal-layout.component.mjs +14 -0
  126. package/esm2022/lib/navigation/navigation-item/navigation-item.component.mjs +30 -64
  127. package/esm2022/lib/navigation/navigation.component.mjs +22 -48
  128. package/esm2022/lib/navigation-progress-bar/navigation-progress-bar.component.mjs +23 -0
  129. package/esm2022/lib/navigation.service.mjs +141 -0
  130. package/esm2022/lib/provide.mjs +80 -0
  131. package/esm2022/lib/release-info/release-info.component.mjs +28 -0
  132. package/esm2022/lib/sidenav/sidenav.component.mjs +50 -33
  133. package/esm2022/lib/tokens.mjs +10 -1
  134. package/esm2022/lib/types.mjs +1 -1
  135. package/fesm2022/rxap-layout.mjs +856 -833
  136. package/fesm2022/rxap-layout.mjs.map +1 -1
  137. package/index.d.ts +18 -19
  138. package/lib/base-layout/base-layout.component.d.ts +5 -0
  139. package/lib/default-header/apps-button/apps-button.component.d.ts +15 -0
  140. package/lib/default-header/default-header.component.d.ts +11 -0
  141. package/lib/{header → default-header}/settings-button/settings-button.component.d.ts +6 -14
  142. package/lib/{header → default-header}/sidenav-toggle-button/sidenav-toggle-button.component.d.ts +3 -5
  143. package/lib/default-header/user-profile-icon/user-profile-icon.component.d.ts +10 -0
  144. package/lib/external-apps.service.d.ts +26 -0
  145. package/lib/footer/footer.component.d.ts +3 -3
  146. package/lib/{footer.directive.d.ts → footer/footer.directive.d.ts} +2 -4
  147. package/lib/footer.service.d.ts +32 -0
  148. package/lib/header/header.component.d.ts +6 -12
  149. package/lib/header/header.directive.d.ts +12 -0
  150. package/lib/header.service.d.ts +34 -0
  151. package/lib/layout/layout.component.d.ts +4 -17
  152. package/lib/layout.service.d.ts +26 -0
  153. package/lib/logo.service.d.ts +10 -0
  154. package/lib/minimal-layout/minimal-layout.component.d.ts +5 -0
  155. package/lib/navigation/navigation-item/navigation-item.component.d.ts +10 -18
  156. package/lib/navigation/navigation.component.d.ts +10 -15
  157. package/lib/{header/navigation-progress-bar → navigation-progress-bar}/navigation-progress-bar.component.d.ts +1 -3
  158. package/lib/{navigation/navigation.service.d.ts → navigation.service.d.ts} +4 -5
  159. package/lib/provide.d.ts +13 -0
  160. package/lib/release-info/release-info.component.d.ts +9 -0
  161. package/lib/sidenav/sidenav.component.d.ts +18 -6
  162. package/lib/tokens.d.ts +12 -3
  163. package/lib/types.d.ts +15 -4
  164. package/package.json +30 -66
  165. package/theme.css +1 -1
  166. package/docs/classes/AppUrlService.html +0 -13
  167. package/docs/classes/AuthenticationServiceMock.html +0 -3
  168. package/docs/classes/LanguageSelectorComponent.html +0 -3
  169. package/docs/classes/LayoutComponentService.html +0 -15
  170. package/docs/classes/ReplaceRouterPathsPipe.html +0 -4
  171. package/docs/classes/ReplaceRouterPathsService.html +0 -3
  172. package/docs/classes/ResetButtonComponent.html +0 -3
  173. package/docs/classes/SidenavComponentService.html +0 -5
  174. package/docs/classes/SignOutComponent.html +0 -4
  175. package/docs/classes/ToggleWindowSidenavButtonComponent.html +0 -5
  176. package/docs/classes/VersionComponent.html +0 -7
  177. package/docs/classes/WindowContainerSidenavComponent.html +0 -10
  178. package/docs/interfaces/ExternalApps.html +0 -8
  179. package/docs/interfaces/LogoConfig.html +0 -4
  180. package/esm2022/lib/app-url.service.mjs +0 -78
  181. package/esm2022/lib/authentication.service.mock.mjs +0 -13
  182. package/esm2022/lib/footer.directive.mjs +0 -40
  183. package/esm2022/lib/header/apps-button/apps-button.component.mjs +0 -46
  184. package/esm2022/lib/header/language-selector/language-selector.component.mjs +0 -35
  185. package/esm2022/lib/header/navigation-progress-bar/navigation-progress-bar.component.mjs +0 -30
  186. package/esm2022/lib/header/reset-button/reset-button.component.mjs +0 -23
  187. package/esm2022/lib/header/settings-button/settings-button.component.mjs +0 -87
  188. package/esm2022/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.mjs +0 -26
  189. package/esm2022/lib/header/sign-out/sign-out.component.mjs +0 -23
  190. package/esm2022/lib/header/user-profile-icon/user-profile-icon.component.mjs +0 -45
  191. package/esm2022/lib/layout/layout.component.service.mjs +0 -77
  192. package/esm2022/lib/navigation/navigation.service.mjs +0 -145
  193. package/esm2022/lib/navigation/replace-router-paths.pipe.mjs +0 -22
  194. package/esm2022/lib/navigation/replace-router-paths.service.mjs +0 -15
  195. package/esm2022/lib/sidenav/sidenav.component.service.mjs +0 -22
  196. package/esm2022/lib/sidenav/version/version.component.mjs +0 -28
  197. package/esm2022/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.mjs +0 -30
  198. package/esm2022/lib/window-container-sidenav/window-container-sidenav.component.mjs +0 -54
  199. package/lib/app-url.service.d.ts +0 -29
  200. package/lib/authentication.service.mock.d.ts +0 -6
  201. package/lib/header/apps-button/apps-button.component.d.ts +0 -16
  202. package/lib/header/language-selector/language-selector.component.d.ts +0 -8
  203. package/lib/header/reset-button/reset-button.component.d.ts +0 -8
  204. package/lib/header/sign-out/sign-out.component.d.ts +0 -9
  205. package/lib/header/user-profile-icon/user-profile-icon.component.d.ts +0 -15
  206. package/lib/layout/layout.component.service.d.ts +0 -25
  207. package/lib/navigation/replace-router-paths.pipe.d.ts +0 -11
  208. package/lib/navigation/replace-router-paths.service.d.ts +0 -7
  209. package/lib/sidenav/sidenav.component.service.d.ts +0 -11
  210. package/lib/sidenav/version/version.component.d.ts +0 -14
  211. package/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.d.ts +0 -9
  212. package/lib/window-container-sidenav/window-container-sidenav.component.d.ts +0 -17
@@ -1 +1 @@
1
- {"version":3,"file":"rxap-layout.mjs","sources":["../../../../../packages/angular/layout/src/lib/window-container-sidenav/window-container-sidenav.component.ts","../../../../../packages/angular/layout/src/lib/window-container-sidenav/window-container-sidenav.component.html","../../../../../packages/angular/layout/src/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.ts","../../../../../packages/angular/layout/src/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.html","../../../../../packages/angular/layout/src/lib/sidenav/version/version.component.ts","../../../../../packages/angular/layout/src/lib/sidenav/version/version.component.html","../../../../../packages/angular/layout/src/lib/sidenav/sidenav-footer.directive.ts","../../../../../packages/angular/layout/src/lib/sidenav/sidenav-header.directive.ts","../../../../../packages/angular/layout/src/lib/sidenav/sidenav.component.service.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation-item/navigation-item.component.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation-item/navigation-item.component.html","../../../../../packages/angular/layout/src/lib/navigation/navigation-item.ts","../../../../../packages/angular/layout/src/lib/tokens.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation.service.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation.component.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation.component.html","../../../../../packages/angular/layout/src/lib/sidenav/sidenav.component.ts","../../../../../packages/angular/layout/src/lib/sidenav/sidenav.component.html","../../../../../packages/angular/layout/src/lib/navigation/replace-router-paths.service.ts","../../../../../packages/angular/layout/src/lib/navigation/replace-router-paths.pipe.ts","../../../../../packages/angular/layout/src/lib/layout/layout.component.service.ts","../../../../../packages/angular/layout/src/lib/footer/footer.component.ts","../../../../../packages/angular/layout/src/lib/footer/footer.component.html","../../../../../packages/angular/layout/src/lib/app-url.service.ts","../../../../../packages/angular/layout/src/lib/header/apps-button/apps-button.component.ts","../../../../../packages/angular/layout/src/lib/header/apps-button/apps-button.component.html","../../../../../packages/angular/layout/src/lib/header/navigation-progress-bar/navigation-progress-bar.component.ts","../../../../../packages/angular/layout/src/lib/header/navigation-progress-bar/navigation-progress-bar.component.html","../../../../../packages/angular/layout/src/lib/header/language-selector/language-selector.component.ts","../../../../../packages/angular/layout/src/lib/header/language-selector/language-selector.component.html","../../../../../packages/angular/layout/src/lib/header/settings-button/settings-button.component.ts","../../../../../packages/angular/layout/src/lib/header/settings-button/settings-button.component.html","../../../../../packages/angular/layout/src/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.ts","../../../../../packages/angular/layout/src/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.html","../../../../../packages/angular/layout/src/lib/header/user-profile-icon/user-profile-icon.component.ts","../../../../../packages/angular/layout/src/lib/header/user-profile-icon/user-profile-icon.component.html","../../../../../packages/angular/layout/src/lib/header/header.component.ts","../../../../../packages/angular/layout/src/lib/header/header.component.html","../../../../../packages/angular/layout/src/lib/layout/layout.component.ts","../../../../../packages/angular/layout/src/lib/layout/layout.component.html","../../../../../packages/angular/layout/src/lib/header/sign-out/sign-out.component.ts","../../../../../packages/angular/layout/src/lib/header/sign-out/sign-out.component.html","../../../../../packages/angular/layout/src/lib/header/reset-button/reset-button.component.ts","../../../../../packages/angular/layout/src/lib/header/reset-button/reset-button.component.html","../../../../../packages/angular/layout/src/lib/authentication.service.mock.ts","../../../../../packages/angular/layout/src/lib/footer.directive.ts","../../../../../packages/angular/layout/src/index.ts","../../../../../packages/angular/layout/src/rxap-layout.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {\n ContainerComponent,\n WindowContainerSidenavService,\n} from '@rxap/services';\nimport {\n ComponentPortal,\n PortalModule,\n} from '@angular/cdk/portal';\nimport { tap } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\nimport { NgFor } from '@angular/common';\n\n@Component({\n selector: 'rxap-window-container-sidenav',\n templateUrl: './window-container-sidenav.component.html',\n styleUrls: [ './window-container-sidenav.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ NgFor, PortalModule ],\n})\nexport class WindowContainerSidenavComponent implements OnInit, OnDestroy {\n\n public portals = new Map<string, ComponentPortal<any>>();\n\n private subscription = new Subscription();\n\n constructor(\n @Inject(WindowContainerSidenavService)\n public readonly service: WindowContainerSidenavService,\n ) {\n }\n\n public ngOnInit(): void {\n const components = this.service.getAll();\n for (const component of components) {\n this.add(component);\n }\n this.subscription.add(this.service.add$.pipe(\n tap(component => this.add(component)),\n ).subscribe());\n this.subscription.add(this.service.remove$.pipe(\n tap(component => this.remove(component)),\n ).subscribe());\n }\n\n public ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n public trackBy(index: number, id: string) {\n return id;\n }\n\n private add(component: ContainerComponent) {\n if (this.portals.has(component.id)) {\n throw new Error(`Component portal with id ${ component.id } already exists`);\n }\n const portal = new ComponentPortal(\n component.component,\n component.viewContainerRef,\n component.injector,\n component.componentFactoryResolver,\n );\n this.portals.set(component.id, portal);\n }\n\n private remove(component: ContainerComponent) {\n if (this.portals.has(component.id)) {\n const portal = this.portals.get(component.id)!;\n this.portals.delete(component.id);\n portal.detach();\n }\n }\n\n}\n","<div class=\"flex flex-col gap-4 p-2\">\n\n <div *ngFor=\"let portalId of portals.keys(); trackBy: trackBy\" class=\"grow-0\">\n <ng-template [cdkPortalOutlet]=\"portals.get(portalId)\"></ng-template>\n </div>\n\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { NgIf } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rxap-toggle-window-sidenav-button',\n templateUrl: './toggle-window-sidenav-button.component.html',\n styleUrls: [ './toggle-window-sidenav-button.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'rxap-toggle-window-sidenav-button',\n },\n standalone: true,\n imports: [ MatButtonModule, NgIf, MatIconModule ],\n})\nexport class ToggleWindowSidenavButtonComponent {\n\n @Input()\n public openWindowSidenav = false;\n\n @Output()\n public openWindowSidenavChange = new EventEmitter<boolean>();\n\n public toggle() {\n this.openWindowSidenav = !this.openWindowSidenav;\n this.openWindowSidenavChange.emit(this.openWindowSidenav);\n }\n\n}\n","<div class=\"toggle-button\">\n <button (click)=\"toggle()\" mat-icon-button>\n <ng-template [ngIfElse]=\"hide\" [ngIf]=\"!openWindowSidenav\">\n <mat-icon svgIcon=\"arrow-left-bold\"></mat-icon>\n </ng-template>\n <ng-template #hide>\n <mat-icon svgIcon=\"arrow-right-bold\"></mat-icon>\n </ng-template>\n </button>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {\n Version,\n VersionService,\n} from '@rxap/services';\nimport {\n KeyValue,\n Required,\n} from '@rxap/utilities';\nimport { tap } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\nimport {\n KeyValuePipe,\n NgFor,\n} from '@angular/common';\n\n@Component({\n selector: 'rxap-version',\n templateUrl: './version.component.html',\n styleUrls: [ './version.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ NgFor, KeyValuePipe ],\n})\nexport class VersionComponent implements OnInit, OnDestroy {\n\n public modules!: KeyValue<Version>;\n\n private subscription?: Subscription;\n\n constructor(\n @Inject(VersionService) private version: VersionService,\n ) {\n }\n\n public ngOnInit(): void {\n this.modules = this.version.get();\n this.subscription = this.version.update$.pipe(\n tap(() => this.modules = this.version.get()),\n ).subscribe();\n }\n\n public ngOnDestroy() {\n this.subscription?.unsubscribe();\n }\n\n}\n","<div class=\"version flex flex-col gap-2\">\n <div *ngFor=\"let module of modules | keyvalue\" class=\"flex flex-col\">\n <span class=\"name grow-0\">{{module.value.name}}</span>\n <span class=\"semantic grow-0\">{{module.value.semantic}}</span>\n <span class=\"hash grow-0\">{{module.value.hash}}</span>\n </div>\n</div>\n","import {\n Directive,\n Inject,\n TemplateRef,\n} from '@angular/core';\n\n@Directive({\n selector: '[rxapSidenavFooter]',\n standalone: true,\n})\nexport class SidenavFooterDirective {\n constructor(\n @Inject(TemplateRef)\n public readonly template: TemplateRef<void>,\n ) {\n }\n}\n","import {\n Directive,\n Inject,\n TemplateRef,\n} from '@angular/core';\n\n@Directive({\n selector: '[rxapSidenavHeader]',\n standalone: true,\n})\nexport class SidenavHeaderDirective {\n constructor(\n @Inject(TemplateRef)\n public readonly template: TemplateRef<void>,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { ConfigService } from '@rxap/config';\n\n@Injectable({ providedIn: 'root' })\nexport class SidenavComponentService {\n\n public readonly collapsed$ = new BehaviorSubject(true);\n\n constructor(private readonly config: ConfigService) {\n this.collapsed$.next(this.config.get('navigation.collapsed', this.collapsed$.value));\n }\n\n public toggleNavigationCollapse(): void {\n this.collapsed$.next(!this.collapsed$.value);\n }\n\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Renderer2,\n signal,\n SimpleChanges,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Required } from '@rxap/utilities';\nimport {\n animate,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport {\n NavigationEnd,\n Router,\n RouterLink,\n RouterLinkActive,\n} from '@angular/router';\nimport {\n debounceTime,\n Subscription,\n} from 'rxjs';\nimport {\n filter,\n startWith,\n tap,\n} from 'rxjs/operators';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { SidenavComponentService } from '../../sidenav/sidenav.component.service';\nimport { NavigationComponent } from '../navigation.component';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { IconDirective } from '@rxap/material-directives/icon';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatRippleModule } from '@angular/material/core';\nimport {\n NgClass,\n NgIf,\n} from '@angular/common';\nimport {\n Navigation,\n NavigationDividerItem,\n NavigationItem,\n} from '../navigation-item';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'li[rxap-navigation-item]',\n templateUrl: './navigation-item.component.html',\n styleUrls: [ './navigation-item.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('sub-nav', [\n transition(':enter', [\n style({\n display: 'block',\n height: '0',\n overflow: 'hidden',\n }),\n animate(150, style({ height: '*' })),\n ]),\n transition(':leave', [\n style({ overflow: 'hidden' }),\n animate(300, style({ height: '0' })),\n style({ display: 'none' }),\n ]),\n ]),\n ],\n standalone: true,\n imports: [\n RouterLinkActive,\n RouterLink,\n NgIf,\n MatRippleModule,\n MatIconModule,\n IconDirective,\n MatDividerModule,\n forwardRef(() => NavigationComponent),\n NgClass,\n ],\n})\nexport class NavigationItemComponent\n implements OnChanges, OnDestroy {\n\n @Input()\n public level = 0;\n\n private _isActive = false;\n\n public children: Navigation | null = null;\n\n @ViewChild(RouterLinkActive, { static: true })\n public routerLinkActive!: RouterLinkActive;\n\n @Input({ required: true })\n public item!: NavigationItem;\n\n public active = signal(false);\n\n @HostBinding('class.active')\n get isActive(): boolean {\n return this._isActive;\n }\n\n set isActive(value: boolean) {\n this._isActive = value;\n this.active.set(value);\n }\n\n private readonly _subscription = new Subscription();\n\n constructor(\n @Inject(Router)\n private readonly router: Router,\n @Inject(SidenavComponentService)\n public readonly sidenav: SidenavComponentService,\n @Inject(ElementRef)\n private readonly elementRef: ElementRef,\n @Inject(Renderer2)\n private readonly renderer: Renderer2,\n @Inject(Overlay)\n private readonly overlay: Overlay,\n @Inject(ViewContainerRef)\n private readonly viewContainerRef: ViewContainerRef,\n ) {\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes['item']) {\n const item: NavigationItem = changes['item'].currentValue;\n this.children =\n item.children && item.children.length ? item.children : null;\n }\n }\n\n public ngAfterViewInit() {\n this._subscription.add(\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n debounceTime(100),\n startWith(true),\n tap(() => {\n let isActive = true;\n const urlParts = this.router.url.split('/');\n if (urlParts[0] === '') {\n urlParts[0] = '/';\n }\n for (let i = 0; i < this.item.routerLink.length; i++) {\n if (urlParts[i] !== this.item.routerLink[i]) {\n isActive = false;\n break;\n }\n }\n this.isActive = isActive;\n if (isActive) {\n this.renderer.addClass(this.elementRef.nativeElement, 'active');\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, 'active');\n }\n }),\n )\n .subscribe(),\n );\n }\n\n public ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n // region type save item property\n\n // required to check the type of the item property in the ngFor loop\n\n public isNavigationDividerItem(\n item: NavigationItem | NavigationDividerItem,\n ): item is NavigationDividerItem {\n return (item as any)['divider'];\n }\n\n public isNavigationItem(\n item: NavigationItem | NavigationDividerItem,\n ): item is NavigationItem {\n return !this.isNavigationDividerItem(item);\n }\n\n public asNavigationItem(\n item: NavigationItem | NavigationDividerItem,\n ): NavigationItem {\n if (!this.isNavigationItem(item)) {\n throw new Error('The item is not a NavigationItem');\n }\n return item;\n }\n\n // endregion\n}\n","<div [ngClass]=\"{\n 'border-l-4 text-accent-400 border-accent-600': active(),\n }\">\n <a [routerLink]=\"item.routerLink\"\n class=\"h-12 pl-4 pr-5 flex flex-row justify-between items-center gap-x-4\"\n matRipple\n routerLinkActive\n\n >\n <span\n [ngClass]=\"{\n 'pl-0': level === 0,\n 'pl-4': level === 1,\n 'pl-8': level === 2,\n 'pl-12': level === 3\n }\"\n class=\"grow whitespace-nowrap\"\n >\n {{ item.label }}\n </span>\n <mat-icon *ngIf=\"item.icon\" [rxapIcon]=\"item.icon\"></mat-icon>\n </a>\n\n <ng-container *ngIf=\"item.children?.length && active()\">\n\n <mat-divider></mat-divider>\n\n <ul [@sub-nav]\n [items]=\"children ?? []\"\n [level]=\"level + 1\"\n rxap-navigation\n >\n </ul>\n\n <mat-divider></mat-divider>\n\n </ng-container>\n</div>\n","import { IconConfig } from '@rxap/utilities';\nimport {\n AbstractType,\n InjectionToken,\n Type,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport type Navigation = Array<NavigationItem | NavigationDividerItem>;\n\nexport type NavigationWithInserts = Array<\n | NavigationItem<NavigationWithInserts>\n | NavigationDividerItem\n | NavigationInsertItem\n>;\n\nexport interface NavigationDividerItem {\n divider: boolean;\n title?: string;\n}\n\nexport function IsNavigationDividerItem(\n item: any,\n): item is NavigationDividerItem {\n return !!item && !!item['divider'];\n}\n\nexport interface NavigationInsertItem {\n insert: string;\n}\n\nexport function IsNavigationInsertItem(\n item: any,\n): item is NavigationInsertItem {\n return !!item && !!item['insert'];\n}\n\nexport interface NavigationStatus {\n isVisible(\n navigationItem: NavigationItem,\n ): Observable<boolean> | Promise<boolean> | boolean;\n}\n\nexport interface NavigationItem<Children = Navigation> extends Record<string, unknown> {\n routerLink: string[];\n label: string;\n children?: Children;\n icon?: IconConfig;\n status?: Array<\n | Type<NavigationStatus>\n | InjectionToken<NavigationStatus>\n | AbstractType<NavigationStatus>\n >;\n}\n\nexport function IsNavigationItem(item: any): item is NavigationItem {\n return (\n !!item && !!item['routerLink'] && !!item['label']\n );\n}\n","import { InjectionToken } from '@angular/core';\nimport { LogoConfig } from './types';\nimport { NavigationWithInserts } from './navigation/navigation-item';\n\nexport const RXAP_NAVIGATION_CONFIG = new InjectionToken<NavigationWithInserts | (() => NavigationWithInserts)>(\n 'rxap/layout/navigation-config');\nexport const RXAP_NAVIGATION_CONFIG_INSERTS = new InjectionToken<Record<string, NavigationWithInserts>>(\n 'rxap/layout/navigation-config-inserts');\n\nexport const RXAP_FOOTER_COMPONENT = new InjectionToken('rxap/layout/footer-component');\nexport const RXAP_HEADER_COMPONENT = new InjectionToken('rxap/layout/header-component');\nexport const RXAP_LOGO_CONFIG = new InjectionToken<LogoConfig>('rxap/layout/logo-config');\nexport const RXAP_LAYOUT_APPS_GRID = new InjectionToken('rxap/layout/apps-grid');\n","import type { Injector } from '@angular/core';\nimport {\n Inject,\n Injectable,\n INJECTOR,\n Optional,\n} from '@angular/core';\nimport {\n combineLatest,\n from,\n Observable,\n of,\n ReplaySubject,\n} from 'rxjs';\nimport {\n IsNavigationDividerItem,\n IsNavigationInsertItem,\n IsNavigationItem,\n Navigation,\n NavigationDividerItem,\n NavigationItem,\n NavigationWithInserts,\n} from './navigation-item';\nimport {\n RXAP_NAVIGATION_CONFIG,\n RXAP_NAVIGATION_CONFIG_INSERTS,\n} from '../tokens';\nimport {\n catchError,\n map,\n switchMap,\n} from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class NavigationService {\n public readonly config$: Observable<Navigation>;\n\n private inserts = new Map<string, NavigationWithInserts>();\n\n private readonly navigation: NavigationWithInserts;\n\n private readonly navigation$ = new ReplaySubject<Navigation>(1);\n\n constructor(\n @Inject(RXAP_NAVIGATION_CONFIG)\n navigation: any,\n @Inject(INJECTOR)\n private readonly injector: Injector,\n @Optional()\n @Inject(RXAP_NAVIGATION_CONFIG_INSERTS)\n inserts: any | null = null,\n ) {\n if (typeof navigation === 'function') {\n this.navigation = navigation();\n } else {\n this.navigation = navigation;\n }\n if (inserts) {\n Object.entries(inserts).forEach(([ id, insert ]: [ string, any ]) =>\n this.insert(id, insert, false),\n );\n }\n this.updateNavigation();\n this.config$ = this.navigation$.pipe(\n switchMap((navigationWithoutStatusCheck) =>\n this.checkNavigationStatusProviders(navigationWithoutStatusCheck),\n ),\n );\n }\n\n /**\n * @deprecated use add instead\n * @param id\n * @param value\n * @param update\n */\n public insert(\n id: string,\n value: NavigationWithInserts,\n update = true,\n ): void {\n this.add(id, value, update);\n }\n\n public add(\n id: string,\n value: NavigationWithInserts,\n update = true,\n ): void {\n this.inserts.set(id, value);\n if (update) {\n this.updateNavigation();\n }\n }\n\n public has(id: string): boolean {\n return this.inserts.has(id);\n }\n\n public get(id: string): NavigationWithInserts | undefined {\n return this.inserts.get(id);\n }\n\n public remove(id: string, update = true): void {\n this.inserts.delete(id);\n if (update) {\n this.updateNavigation();\n }\n }\n\n public updateNavigation(): void {\n this.navigation$.next(this.replaceInserts(this.navigation));\n }\n\n /**\n * @internal\n * @param navigationItem\n */\n public checkNavigationItemStatusProviders(\n navigationItem: NavigationItem | NavigationDividerItem,\n ): Observable<NavigationItem | NavigationDividerItem | null> {\n if (IsNavigationDividerItem(navigationItem) || !navigationItem.status) {\n return of(navigationItem);\n }\n const isVisibleArray$: Array<Observable<boolean>> = navigationItem.status\n .map((statusToken) => this.injector.get(\n statusToken))\n .map((status) => {\n const isVisible = status.isVisible(\n navigationItem);\n if (typeof isVisible === 'boolean') {\n return of(isVisible);\n } else {\n return from(isVisible);\n }\n })\n .map(isVisible$ => isVisible$.pipe(catchError(e => {\n console.error('isVisible method failed: ' +\n e.message);\n return of(false);\n })));\n // TODO : dont wait for all status services to complete, but cancel waiting if one returns false\n return combineLatest(isVisibleArray$).pipe(\n map((isVisibleArray) =>\n isVisibleArray.reduce((acc, isVisible) => acc && isVisible, true),\n ),\n map((isVisible) => (isVisible ? navigationItem : null)),\n switchMap((navigationItemOrNull) => {\n if (navigationItemOrNull) {\n if (navigationItemOrNull.children?.length) {\n return this.checkNavigationStatusProviders(\n navigationItemOrNull.children,\n ).pipe(\n map((children) => ({\n ...navigationItemOrNull,\n children,\n })),\n );\n }\n return of(navigationItemOrNull);\n }\n return of(null);\n }),\n );\n }\n\n /**\n * @internal\n * @param navigationItem\n */\n public checkNavigationStatusProviders(\n navigation: Navigation,\n ): Observable<Navigation> {\n return combineLatest(\n navigation.map((navigationItem) =>\n this.checkNavigationItemStatusProviders(navigationItem),\n ),\n ).pipe(\n map((navigationWithNullItems) => {\n const cleanNavigation: Navigation = [];\n\n for (const navigationItem of navigationWithNullItems) {\n if (navigationItem !== null) {\n cleanNavigation.push(navigationItem);\n }\n }\n\n return cleanNavigation;\n }),\n );\n }\n\n private replaceInserts(\n navigationWithInserts: NavigationWithInserts,\n ): Navigation {\n const navigation: Navigation = [];\n\n for (const navigationItem of navigationWithInserts) {\n if (IsNavigationInsertItem(navigationItem)) {\n if (this.inserts.has(navigationItem.insert)) {\n navigation.push(\n ...this.replaceInserts(this.inserts.get(navigationItem.insert)!),\n );\n }\n } else if (IsNavigationItem(navigationItem)) {\n navigation.push({\n ...navigationItem,\n children: this.replaceInserts(navigationItem.children ?? []),\n });\n } else if (IsNavigationDividerItem(navigationItem)) {\n navigation.push(navigationItem);\n }\n }\n\n return navigation;\n }\n}\n","import {\n AsyncPipe,\n NgFor,\n NgIf,\n} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { coerceBoolean } from '@rxap/utilities';\nimport { Subscription } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { SidenavComponentService } from '../sidenav/sidenav.component.service';\nimport {\n Navigation,\n NavigationDividerItem,\n NavigationItem,\n} from './navigation-item';\nimport { NavigationItemComponent } from './navigation-item/navigation-item.component';\nimport { NavigationService } from './navigation.service';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'ul[rxap-navigation]',\n templateUrl: './navigation.component.html',\n styleUrls: [ './navigation.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'list-none dark:text-neutral-400 text-neutral-700',\n },\n imports: [\n NgFor,\n NgIf,\n MatDividerModule,\n forwardRef(() => NavigationItemComponent),\n AsyncPipe,\n ],\n})\nexport class NavigationComponent implements OnInit, OnDestroy {\n @Input()\n public items!: Navigation;\n public subscription?: Subscription;\n @Input()\n public level = 0;\n\n constructor(\n @Inject(NavigationService)\n private readonly navigationService: NavigationService,\n @Inject(ChangeDetectorRef)\n private readonly cdr: ChangeDetectorRef,\n @Inject(SidenavComponentService)\n public readonly sidenav: SidenavComponentService,\n ) {\n }\n\n @HostBinding('class.rxap-root-navigation')\n public _root = false;\n\n @Input()\n public set root(value: boolean | '') {\n this._root = coerceBoolean(value);\n }\n\n public ngOnInit(): void {\n if (this._root) {\n this.items = [];\n this.subscription = this.navigationService.config$\n .pipe(\n tap((navigation) => (this.items = navigation)),\n tap(() => this.cdr.detectChanges()),\n )\n .subscribe();\n }\n this.items ??= [];\n }\n\n public ngOnDestroy() {\n this.subscription?.unsubscribe();\n }\n\n // region type save item property\n\n // required to check the type of the item property in the ngFor loop\n\n public isNavigationDividerItem(\n item: NavigationItem | NavigationDividerItem,\n ): item is NavigationDividerItem {\n return (item as any)['divider'];\n }\n\n public isNavigationItem(\n item: NavigationItem | NavigationDividerItem,\n ): item is NavigationItem {\n return !this.isNavigationDividerItem(item);\n }\n\n public asNavigationItem(\n item: NavigationItem | NavigationDividerItem,\n ): NavigationItem {\n if (!this.isNavigationItem(item)) {\n throw new Error('The item is not a NavigationItem');\n }\n return item;\n }\n\n // endregion\n}\n","<ng-template [ngForOf]=\"items\" let-item ngFor>\n <ng-template [ngIf]=\"isNavigationDividerItem(item)\">\n <mat-divider></mat-divider>\n <div *ngIf=\"(sidenav.collapsed$ | async) === false\" class=\"pl-5 h-6\">\n <span *ngIf=\"item.title\">{{item.title}}</span>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"isNavigationItem(item)\">\n <li [item]=\"asNavigationItem(item)\" [level]=\"level\" class=\"dark:hover:text-white hover:text-black\"\n rxap-navigation-item></li>\n </ng-template>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n} from '@angular/core';\nimport { SidenavFooterDirective } from './sidenav-footer.directive';\nimport { SidenavHeaderDirective } from './sidenav-header.directive';\nimport { SidenavComponentService } from './sidenav.component.service';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { NavigationComponent } from '../navigation/navigation.component';\nimport { MatDividerModule } from '@angular/material/divider';\nimport {\n AsyncPipe,\n NgClass,\n NgIf,\n NgTemplateOutlet,\n} from '@angular/common';\n\n@Component({\n selector: 'rxap-sidenav',\n templateUrl: './sidenav.component.html',\n styleUrls: [ './sidenav.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'rxap-layout-sidenav',\n },\n standalone: true,\n imports: [\n NgClass,\n NgIf,\n NgTemplateOutlet,\n MatDividerModule,\n NavigationComponent,\n MatButtonModule,\n MatIconModule,\n AsyncPipe,\n ],\n})\nexport class SidenavComponent {\n\n @ContentChild(SidenavFooterDirective)\n public sidenavFooterDirective?: SidenavFooterDirective;\n\n @ContentChild(SidenavHeaderDirective)\n public sidenavHeaderDirective?: SidenavHeaderDirective;\n\n constructor(public readonly sidenav: SidenavComponentService) {\n }\n\n}\n","<div [ngClass]=\"{ 'collapsed': sidenav.collapsed$ | async }\" class=\"rxap-container\">\n <div class=\"inner flex flex-col justify-between items-stretch\">\n <ng-template [ngIf]=\"sidenavHeaderDirective?.template\">\n <div [ngClass]=\"{ hidden: sidenav.collapsed$ | async }\" class=\"header grow-0\">\n <ng-container *ngTemplateOutlet=\"sidenavHeaderDirective?.template ?? null\"></ng-container>\n </div>\n <mat-divider [ngClass]=\"{ hidden: sidenav.collapsed$ | async }\" class=\"grow-0\"></mat-divider>\n </ng-template>\n <div class=\"nav-container grow\">\n <ul class=\"flex flex-col\" root rxap-navigation></ul>\n </div>\n <mat-divider class=\"grow-0\"></mat-divider>\n <button (click)=\"sidenav.toggleNavigationCollapse()\" [ngClass]=\"{ 'collapsed': sidenav.collapsed$ | async }\"\n class=\"sidebar-toggle grow-0\"\n mat-button>\n <span class=\"sidebar-toggle-inner flex flex-row items-center gap-4\">\n <mat-icon class=\"arrow grow-0\">double_arrow</mat-icon>\n <span [ngClass]=\"{ hidden: sidenav.collapsed$ | async }\" class=\"label grow-0\" i18n>Collapse sidebar</span>\n </span>\n </button>\n <ng-template [ngIf]=\"sidenavFooterDirective?.template ?? null\">\n <mat-divider [ngClass]=\"{ hidden: sidenav.collapsed$ | async }\" class=\"grow-0\"></mat-divider>\n <div [ngClass]=\"{ hidden: sidenav.collapsed$ | async }\" class=\"footer grow-0\">\n <ng-container *ngTemplateOutlet=\"sidenavFooterDirective?.template ?? null\"></ng-container>\n </div>\n </ng-template>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport {\n Observable,\n of,\n} from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class ReplaceRouterPathsService {\n\n public transform(routerLink: string[]): Observable<string[]> {\n return of(routerLink);\n }\n\n}\n","import {\n Pipe,\n PipeTransform,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ReplaceRouterPathsService } from './replace-router-paths.service';\n\n@Pipe({\n name: 'replaceRouterPaths',\n standalone: true,\n})\nexport class ReplaceRouterPathsPipe implements PipeTransform {\n constructor(\n public rrp: ReplaceRouterPathsService,\n ) {\n }\n\n transform(routerLink: string[]): Observable<string[]> {\n return this.rrp.transform(routerLink);\n }\n}\n\n\n","import { MediaMatcher } from '@angular/cdk/layout';\nimport {\n computed,\n effect,\n Inject,\n Injectable,\n Optional,\n signal,\n Signal,\n WritableSignal,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MatDrawerMode } from '@angular/material/sidenav';\nimport { ConfigService } from '@rxap/config';\nimport { ObserveCurrentThemeDensity } from '@rxap/ngx-theme';\nimport {\n FooterService,\n HeaderService,\n} from '@rxap/services';\nimport { RXAP_LOGO_CONFIG } from '../tokens';\nimport { LogoConfig } from '../types';\n\n@Injectable({ providedIn: 'root' })\nexport class LayoutComponentService {\n\n public logo: LogoConfig;\n\n public readonly opened: WritableSignal<boolean>;\n public readonly mode: WritableSignal<MatDrawerMode>;\n public readonly pinned: WritableSignal<boolean>;\n public readonly collapsable: WritableSignal<boolean>;\n public readonly fixedBottomGap: Signal<number>;\n public readonly fixedTopGap: Signal<number>;\n\n private readonly currentThemeDensity = toSignal(ObserveCurrentThemeDensity());\n\n\n public constructor(\n public readonly footerComponentService: FooterService,\n public readonly headerComponentService: HeaderService,\n @Optional() @Inject(RXAP_LOGO_CONFIG) logoConfig: LogoConfig | null = null,\n @Inject(ConfigService)\n private readonly config: ConfigService,\n mediaMatcher: MediaMatcher,\n ) {\n const mobileQuery = mediaMatcher.matchMedia('(max-width: 959px)');\n const mobile = mobileQuery.matches;\n const initialCollapsable = this.config.get('navigation.collapsable', true);\n const collapsable = initialCollapsable && !mobile;\n const pinned = this.config.get('navigation.pinned', false);\n const mode = this.config.get('navigation.mode', pinned || !collapsable ? 'side' : 'over');\n const opened = this.config.get('navigation.opened', (!collapsable || pinned) && !mobile);\n\n this.opened = signal(opened);\n this.mode = signal(mode);\n this.pinned = signal(pinned);\n this.collapsable = signal(collapsable);\n\n this.fixedBottomGap = computed(() => this.footerComponentService.portalCount() * (\n 64 + (\n this.currentThemeDensity() ?? 0\n ) * 4\n ));\n this.fixedTopGap = computed(() => this.headerComponentService.componentCount() * (\n 64 + (\n this.currentThemeDensity() ?? 0\n ) * 4\n ));\n\n this.logo = logoConfig ?? {\n src: 'assets/logo.png',\n width: 192,\n };\n mobileQuery.addEventListener('change', (event) => {\n if (initialCollapsable) {\n this.collapsable.set(!event.matches);\n if (this.collapsable()) {\n if (!this.pinned()) {\n this.opened.set(false);\n }\n }\n }\n });\n effect(() => {\n if (this.pinned()) {\n this.mode.set('side');\n this.opened.set(true);\n } else {\n this.mode.set('over');\n this.opened.set(false);\n }\n }, { allowSignalWrites: true });\n }\n\n public toggleOpened() {\n this.opened.set(!this.opened());\n }\n\n public togglePinned() {\n this.pinned.set(!this.pinned());\n }\n\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n} from '@angular/core';\nimport { FooterService } from '@rxap/services';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport {\n AsyncPipe,\n NgFor,\n NgIf,\n} from '@angular/common';\n\n@Component({\n selector: 'rxap-footer',\n templateUrl: './footer.component.html',\n styleUrls: [ './footer.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ NgIf, MatToolbarModule, NgFor, PortalModule, AsyncPipe ],\n})\nexport class FooterComponent {\n\n constructor(\n public readonly footerService: FooterService,\n ) {\n }\n\n}\n","<ng-template [ngIf]=\"footerService.portals()\" let-portals>\n <mat-toolbar *ngIf=\"portals.length\" class=\"footer mat-elevation-z1\">\n <mat-toolbar-row *ngFor=\"let portal of portals\">\n <ng-template [cdkPortalOutlet]=\"portal\"></ng-template>\n </mat-toolbar-row>\n </mat-toolbar>\n</ng-template>\n","import {\n Inject,\n Injectable,\n LOCALE_ID,\n} from '@angular/core';\nimport { AuthorizationService } from '@rxap/authorization';\n// eslint-disable-next-line @nx/enforce-module-boundaries\nimport { ClickOnLink } from '@rxap/browser-utilities';\nimport { ConfigService } from '@rxap/config';\nimport {\n Environment,\n RXAP_ENVIRONMENT,\n} from '@rxap/environment';\nimport { JoinPath } from '@rxap/utilities';\nimport { firstValueFrom } from 'rxjs';\n\nexport interface ExternalApps {\n image?: string;\n label: string;\n href: string;\n empty?: false;\n hidden?: boolean;\n id?: string;\n permissions: string[];\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AppUrlService {\n\n private _apps: Array<ExternalApps>;\n\n constructor(\n private readonly config: ConfigService,\n @Inject(LOCALE_ID)\n private readonly localeId: string,\n private readonly authorizationService: AuthorizationService,\n @Inject(RXAP_ENVIRONMENT)\n private readonly environment: Environment,\n ) {\n this._apps = this.config.get('navigation.apps', []);\n }\n\n public getApp(appId: string): ExternalApps | null {\n return this._apps.find(app => app.id === appId) ?? null;\n }\n\n public getAppUrl(appId: string, path: string, infix: string | null = this.getPathPrefix()): string | null {\n\n const app = this.getApp(appId);\n\n if (app) {\n return JoinPath(app.href, infix, path);\n }\n\n return null;\n\n }\n\n public getAppUrlOrThrow(appId: string, path: string): string {\n const url = this.getAppUrl(appId, path);\n if (url) {\n return url;\n }\n throw new Error(`Could not find app with id \"${ appId }\"`);\n }\n\n public navigate(appId: string, path: string): void {\n\n const url = this.getAppUrl(appId, path);\n\n if (url) {\n ClickOnLink(url);\n }\n\n }\n\n public async getAppList(): Promise<Array<ExternalApps>> {\n const appList = this\n ._apps\n .filter(app => !app.hidden)\n .map(app => ({\n ...app,\n href: JoinPath(app.href, this.getPathPrefix()),\n }));\n\n const filteredAppList: Array<ExternalApps> = [];\n for (const app of appList) {\n if (await firstValueFrom(this.authorizationService.hasPermission$(app.permissions))) {\n filteredAppList.push(app);\n }\n }\n return filteredAppList;\n }\n\n private getPathPrefix(): string {\n if (this.environment.production && this.localeId) {\n return this.localeId.replace(/-.+$/, '');\n }\n return '';\n }\n\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n signal,\n} from '@angular/core';\nimport { RXAP_LAYOUT_APPS_GRID } from '../../tokens';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n NgFor,\n NgIf,\n NgOptimizedImage,\n} from '@angular/common';\nimport {\n AppUrlService,\n ExternalApps,\n} from '../../app-url.service';\nimport { RxapAuthenticationService } from '@rxap/authentication';\nimport {\n Subscription,\n switchMap,\n} from 'rxjs';\nimport {\n filter,\n tap,\n} from 'rxjs/operators';\n\n@Component({\n selector: 'rxap-apps-button',\n templateUrl: './apps-button.component.html',\n styleUrls: [ './apps-button.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgIf,\n NgFor,\n MatButtonModule,\n MatIconModule,\n NgOptimizedImage,\n ],\n})\nexport class AppsButtonComponent implements OnInit, OnDestroy {\n public isOpen = false;\n\n public readonly appList = signal<Array<ExternalApps>>([]);\n\n private _subscription?: Subscription;\n\n constructor(\n @Optional()\n @Inject(RXAP_LAYOUT_APPS_GRID)\n grid: any,\n private readonly appUrlService: AppUrlService,\n private readonly authenticationService: RxapAuthenticationService,\n ) {}\n\n ngOnInit() {\n this._subscription = this.authenticationService.isAuthenticated$.pipe(\n filter(Boolean),\n switchMap(() => this.appUrlService.getAppList()),\n tap((apps) => this.appList.set(apps)),\n ).subscribe();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n}\n","<div *ngIf=\"appList()?.length\" class=\"flex flex-row items-center gap-8\">\n\n <div *ngIf=\"isOpen\" class=\"flex flex-row items-center gap-6\">\n\n <div *ngFor=\"let app of appList()\" class=\"h-10\">\n <a [href]=\"app.href\" mat-stroked-button>\n <span class=\"flex flex-row items-center gap-4\">\n <img *ngIf=\"app.image\" [alt]=\"app.label\" [ngSrc]=\"app.image\" height=\"40\" width=\"40\">\n <span class=\"label grow-0\">{{app.label}}</span>\n </span>\n </a>\n </div>\n\n </div>\n\n <button (click)=\"isOpen = !isOpen\" mat-icon-button>\n <mat-icon svgIcon=\"apps\"></mat-icon>\n </button>\n\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\nimport {\n NavigationCancel,\n NavigationEnd,\n NavigationStart,\n Router,\n} from '@angular/router';\nimport {\n filter,\n map,\n} from 'rxjs/operators';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport {\n AsyncPipe,\n NgIf,\n} from '@angular/common';\n\n@Component({\n selector: 'rxap-navigation-progress-bar',\n templateUrl: './navigation-progress-bar.component.html',\n styleUrls: [ './navigation-progress-bar.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgIf,\n MatProgressBarModule,\n AsyncPipe,\n ],\n})\nexport class NavigationProgressBarComponent {\n\n public navigating$: Observable<boolean>;\n\n public constructor(\n @Inject(Router) public readonly router: Router,\n ) {\n this.navigating$ = this.router.events.pipe(\n filter(\n event =>\n event instanceof NavigationStart ||\n event instanceof NavigationEnd ||\n event instanceof NavigationCancel,\n ),\n map(event => event instanceof NavigationStart),\n );\n }\n\n}\n","<mat-progress-bar\n *ngIf=\"navigating$ | async\"\n color=\"accent\"\n mode=\"indeterminate\"\n></mat-progress-bar>\n","import {\n KeyValuePipe,\n NgFor,\n NgIf,\n} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { StopPropagationDirective } from '@rxap/directives';\nimport { LanguageSelectorService } from '@rxap/ngx-localize';\n\n@Component({\n selector: 'rxap-language-selector',\n templateUrl: './language-selector.component.html',\n styleUrls: [ './language-selector.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgIf,\n MatFormFieldModule,\n StopPropagationDirective,\n MatSelectModule,\n FormsModule,\n NgFor,\n MatOptionModule,\n KeyValuePipe,\n ],\n})\nexport class LanguageSelectorComponent {\n constructor(public readonly language: LanguageSelectorService) {\n }\n\n}\n","<ng-template [ngIf]=\"(language.languages | keyvalue).length\">\n <div>\n <mat-form-field appearance=\"outline\" class=\"language-selector\" rxapStopPropagation>\n <mat-label i18n>Select Language</mat-label>\n <mat-select (ngModelChange)=\"language.setLanguage($event)\" [ngModel]=\"language.selectedLanguage\">\n <mat-option *ngFor=\"let item of language.languages | keyvalue\" [value]=\"item.key\">{{item.value}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n</ng-template>\n","import {\n ComponentPortal,\n ComponentType,\n PortalModule,\n} from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport {\n Component,\n Injector,\n isDevMode,\n OnDestroy,\n OnInit,\n signal,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { ActivatedRoute } from '@angular/router';\nimport { ChangelogService } from '@rxap/ngx-changelog';\nimport {\n ThemeDensity,\n ThemeService,\n} from '@rxap/ngx-theme';\nimport { Subscription } from 'rxjs';\nimport {\n map,\n tap,\n} from 'rxjs/operators';\nimport { LanguageSelectorComponent } from '../language-selector/language-selector.component';\n\n@Component({\n selector: 'rxap-settings-button',\n standalone: true,\n imports: [ CommonModule, MatButtonModule, MatIconModule, LanguageSelectorComponent, MatMenuModule, PortalModule ],\n templateUrl: './settings-button.component.html',\n styleUrls: [ './settings-button.component.scss' ],\n})\nexport class SettingsButtonComponent implements OnInit, OnDestroy {\n\n public isDevMode = isDevMode();\n items = signal<Array<ComponentPortal<unknown>>>([]);\n private _subscription?: Subscription;\n\n private savePreviewDensityValue = false;\n private currentDensityValue: ThemeDensity | null = null;\n\n private savePreviewTypographyValue = false;\n private currentTypographyValue: string | null = null;\n\n public readonly availableTypographies: string[] | null;\n private savePreviewThemeValue = false;\n\n public readonly availableThemes: string[] | null;\n private currentThemeValue: string | null = null;\n\n constructor(\n public readonly theme: ThemeService,\n private readonly route: ActivatedRoute,\n private readonly injector: Injector,\n private readonly changelogService: ChangelogService,\n ) {\n this.availableThemes = this.theme.getAvailableThemes();\n this.availableTypographies = this.theme.getAvailableTypographies();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n ngOnInit() {\n this._subscription = this.route.data.pipe(\n map(data => this.getCustomMenuItems(data)),\n map(items => items.map(item => new ComponentPortal(item, undefined, this.injector))),\n tap(items => this.items.set(items)),\n ).subscribe();\n }\n\n private getCustomMenuItems(data: any): Array<ComponentType<unknown>> {\n if (data?.layout?.header?.menu?.items?.length) {\n return data.layout.header.menu.items;\n }\n return [];\n }\n\n openChangelogDialog() {\n this.changelogService.showChangelogDialog();\n }\n\n previewDensity(density: ThemeDensity) {\n this.theme.applyDensity(density);\n }\n\n restoreDensity() {\n this.theme.applyDensity(this.theme.density());\n }\n\n setDensity(density: ThemeDensity) {\n this.theme.setDensity(density);\n }\n\n previewTypography(typography: string) {\n this.theme.applyTypography(typography);\n }\n\n restoreTypography() {\n this.theme.applyTypography(this.theme.typography());\n }\n\n setTypography(typography: string) {\n this.theme.setTypography(typography);\n }\n\n previewTheme(theme: string) {\n this.theme.applyTheme(theme);\n }\n\n restoreTheme() {\n this.theme.applyTheme(this.theme.themeName());\n }\n\n setTheme(theme: string) {\n this.theme.setTheme(theme);\n }\n\n}\n","<button [matMenuTriggerFor]=\"menu\" mat-icon-button>\n <mat-icon svgIcon=\"cog\"></mat-icon>\n</button>\n\n<mat-menu #menu=\"matMenu\">\n <button (click)=\"theme.toggleDarkTheme()\" mat-menu-item>\n <mat-icon *ngIf=\"theme.darkMode()\" svgIcon=\"brightness-2\"></mat-icon>\n <mat-icon *ngIf=\"!theme.darkMode()\" svgIcon=\"brightness-5\"></mat-icon>\n <span i18n>Mode</span>\n </button>\n <button [matMenuTriggerFor]=\"themeMenu\" mat-menu-item>\n <mat-icon svgIcon=\"compare\"></mat-icon>\n <span i18n>Theme</span>\n </button>\n <rxap-language-selector></rxap-language-selector>\n <button (click)=\"openChangelogDialog()\" mat-menu-item>\n <mat-icon svgIcon=\"format-list-numbered\"></mat-icon>\n <span i18n>What's new</span>\n </button>\n <ng-container *ngFor=\"let item of items()\">\n <ng-template [cdkPortalOutlet]=\"item\"></ng-template>\n </ng-container>\n</mat-menu>\n\n<mat-menu #themeMenu=\"matMenu\" xPosition=\"before\">\n <button [matMenuTriggerFor]=\"themeDensityMenu\" mat-menu-item>\n <mat-icon svgIcon=\"move-resize\"></mat-icon>\n <span i18n>Density</span>\n </button>\n <button *ngIf=\"availableTypographies?.length\" [matMenuTriggerFor]=\"themeFontMenu\" mat-menu-item>\n <mat-icon svgIcon=\"format-font\"></mat-icon>\n <span i18n>Font</span>\n </button>\n <button *ngIf=\"availableThemes?.length\" [matMenuTriggerFor]=\"themePresetMenu\" mat-menu-item>\n <mat-icon svgIcon=\"shape-outline\"></mat-icon>\n <span i18n>Preset</span>\n </button>\n</mat-menu>\n\n<mat-menu #themeDensityMenu=\"matMenu\" xPosition=\"before\">\n <button (click)=\"setDensity(0)\" (mouseenter)=\"previewDensity(0)\" (mouseleave)=\"restoreDensity()\" mat-menu-item>\n <mat-icon svgIcon=\"size-l\"></mat-icon>\n <span i18n>Normal</span>\n </button>\n <button (click)=\"setDensity(-1)\" (mouseenter)=\"previewDensity(-1)\" (mouseleave)=\"restoreDensity()\" mat-menu-item>\n <mat-icon svgIcon=\"size-m\"></mat-icon>\n <span i18n>Dense</span>\n </button>\n <button (click)=\"setDensity(-2)\" (mouseenter)=\"previewDensity(-2)\" (mouseleave)=\"restoreDensity()\" mat-menu-item>\n <mat-icon svgIcon=\"size-s\"></mat-icon>\n <span i18n>Very Dense</span>\n </button>\n <button (click)=\"setDensity(-3)\" (mouseenter)=\"previewDensity(-3)\" (mouseleave)=\"restoreDensity()\" mat-menu-item>\n <mat-icon svgIcon=\"size-xs\"></mat-icon>\n <span i18n>Extreme Dense</span>\n </button>\n</mat-menu>\n<mat-menu #themeFontMenu=\"matMenu\" xPosition=\"before\">\n <ng-template [ngIf]=\"availableTypographies?.length\">\n <button (click)=\"setTypography(typographyName)\"\n (mouseenter)=\"previewTypography(typographyName)\"\n (mouseleave)=\"restoreTypography()\"\n *ngFor=\"let typographyName of availableTypographies\"\n mat-menu-item>\n {{ typographyName }}\n </button>\n </ng-template>\n</mat-menu>\n\n<mat-menu #themePresetMenu=\"matMenu\" xPosition=\"before\">\n <ng-template [ngIf]=\"availableThemes?.length\">\n <button (click)=\"setTheme(themeName)\"\n (mouseenter)=\"previewTheme(themeName)\"\n (mouseleave)=\"restoreTheme()\"\n *ngFor=\"let themeName of availableThemes\"\n mat-menu-item>\n {{ themeName }}\n </button>\n </ng-template>\n</mat-menu>\n","import { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Signal,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { LayoutComponentService } from '../../layout/layout.component.service';\n\n@Component({\n selector: 'rxap-sidenav-toggle-button',\n templateUrl: './sidenav-toggle-button.component.html',\n styleUrls: [ './sidenav-toggle-button.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatButtonModule,\n NgIf,\n MatIconModule,\n ],\n})\nexport class SidenavToggleButtonComponent {\n\n public readonly opened: Signal<boolean>;\n\n constructor(public readonly layoutComponentService: LayoutComponentService) {\n this.opened = layoutComponentService.opened;\n }\n\n}\n","<button (click)=\"layoutComponentService.toggleOpened()\" mat-icon-button>\n <mat-icon *ngIf=\"!opened()\">menu</mat-icon>\n <mat-icon *ngIf=\"opened()\">menu_open</mat-icon>\n</button>\n","import {\n AsyncPipe,\n NgIf,\n} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Inject,\n InjectionToken,\n Signal,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { RxapAuthenticationService } from '@rxap/authentication';\nimport { UserProfileDataSource } from '@rxap/ngx-user';\nimport {\n distinctUntilChanged,\n filter,\n skip,\n} from 'rxjs';\nimport {\n map,\n switchMap,\n} from 'rxjs/operators';\n\nexport type ExtractUsernameFromProfileFn<T = unknown> = (profile: T) => string | null;\n\nexport const EXTRACT_USERNAME_FROM_PROFILE = new InjectionToken<ExtractUsernameFromProfileFn>(\n 'extract-username-from-profile',\n {\n providedIn: 'root',\n factory: () => (profile: any) => (profile ? profile.username ?? profile.email ?? profile.name : null) ?? null,\n },\n);\n\n@Component({\n selector: 'rxap-user-profile-icon',\n templateUrl: './user-profile-icon.component.html',\n styleUrls: [ './user-profile-icon.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatMenuModule,\n MatIconModule,\n NgIf,\n AsyncPipe,\n ],\n})\nexport class UserProfileIconComponent<T = unknown> {\n\n public username: Signal<string | null>;\n\n constructor(\n private readonly userProfileService: UserProfileDataSource<T>,\n private readonly authenticationService: RxapAuthenticationService,\n @Inject(EXTRACT_USERNAME_FROM_PROFILE)\n extractUsernameFromProfile: ExtractUsernameFromProfileFn<T>,\n ) {\n this.username = toSignal(this.authenticationService.isAuthenticated$.pipe(\n filter(Boolean),\n switchMap(() => this.userProfileService.connect({\n viewChange: this.authenticationService.isAuthenticated$.pipe(\n skip(1),\n filter(Boolean),\n distinctUntilChanged(),\n ),\n })),\n filter(Boolean),\n map(extractUsernameFromProfile),\n ), { initialValue: null });\n }\n\n public async logout() {\n await this.authenticationService.signOut();\n }\n\n\n}\n","<button [matMenuTriggerFor]=\"menu\"\n [disabled]=\"!username()\"\n class=\"profile-icon flex flex-row justify-center items-center\">\n <mat-icon class=\"avatar-icon\" svgIcon=\"account-circle\"></mat-icon>\n</button>\n\n<mat-menu #menu=\"matMenu\" [yPosition]=\"'below'\" class=\"!max-w-none\">\n <button mat-menu-item>\n <span class=\"flex flex-row gap-2\">\n <mat-icon svgIcon=\"account\"></mat-icon>\n <span>{{username()}}</span>\n </span>\n </button>\n <button (click)=\"logout()\" mat-menu-item>\n <span class=\"flex flex-row gap-2\">\n <mat-icon svgIcon=\"logout\"></mat-icon>\n <span i18n>Logout</span>\n </span>\n </button>\n</mat-menu>\n","import {\n AsyncPipe,\n NgClass,\n NgIf,\n} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Inject,\n Input,\n Optional,\n Signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport {\n MatOptionModule,\n ThemePalette,\n} from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { DataSourceCollectionDirective } from '@rxap/data-source/directive';\nimport { StopPropagationDirective } from '@rxap/directives';\nimport { HeaderService } from '@rxap/services';\nimport { LayoutComponentService } from '../layout/layout.component.service';\nimport { RXAP_HEADER_COMPONENT } from '../tokens';\nimport { AppsButtonComponent } from './apps-button/apps-button.component';\nimport { NavigationProgressBarComponent } from './navigation-progress-bar/navigation-progress-bar.component';\nimport { SettingsButtonComponent } from './settings-button/settings-button.component';\nimport { SidenavToggleButtonComponent } from './sidenav-toggle-button/sidenav-toggle-button.component';\nimport { UserProfileIconComponent } from './user-profile-icon/user-profile-icon.component';\n\n@Component({\n selector: 'rxap-header',\n templateUrl: './header.component.html',\n styleUrls: [ './header.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatToolbarModule,\n NgClass,\n NgIf,\n MatButtonModule,\n MatMenuModule,\n MatIconModule,\n MatFormFieldModule,\n StopPropagationDirective,\n MatSelectModule,\n FormsModule,\n MatOptionModule,\n DataSourceCollectionDirective,\n MatSlideToggleModule,\n AsyncPipe,\n NavigationProgressBarComponent,\n UserProfileIconComponent,\n AppsButtonComponent,\n SettingsButtonComponent,\n SidenavToggleButtonComponent,\n ],\n})\nexport class HeaderComponent {\n\n @Input()\n public color: ThemePalette = undefined;\n\n public readonly collapsable: Signal<boolean>;\n public readonly opened: Signal<boolean>;\n\n constructor(\n @Inject(HeaderService)\n public readonly headerComponentService: HeaderService,\n public readonly layoutComponentService: LayoutComponentService,\n @Optional() @Inject(RXAP_HEADER_COMPONENT) public headerComponent: any,\n ) {\n this.collapsable = layoutComponentService.collapsable;\n this.opened = layoutComponentService.opened;\n }\n\n}\n","<mat-toolbar [color]=\"color\" [ngClass]=\"{ open: opened() }\" class=\"mat-elevation-z3 header\">\n <div class=\"w-full flex flex-row gap-x-4 justify-between items-center\">\n <rxap-sidenav-toggle-button *ngIf=\"!collapsable()\"></rxap-sidenav-toggle-button>\n <div class=\"grow\">\n <ng-content></ng-content>\n </div>\n <rxap-apps-button class=\"grow-0\"></rxap-apps-button>\n <rxap-settings-button class=\"grow-0\"></rxap-settings-button>\n <rxap-user-profile-icon class=\"grow-0\"></rxap-user-profile-icon>\n </div>\n</mat-toolbar>\n\n<rxap-navigation-progress-bar></rxap-navigation-progress-bar>\n","import {\n AsyncPipe,\n NgClass,\n NgIf,\n NgOptimizedImage,\n NgStyle,\n} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n Inject,\n OnDestroy,\n OnInit,\n Signal,\n ViewChild,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport {\n MatDrawerMode,\n MatSidenav,\n MatSidenavModule,\n} from '@angular/material/sidenav';\nimport {\n RouterLink,\n RouterOutlet,\n} from '@angular/router';\nimport {\n DetermineReleaseName,\n Environment,\n RXAP_ENVIRONMENT,\n} from '@rxap/environment';\nimport { IconLoaderService } from '@rxap/icon';\nimport { StatusIndicatorComponent } from '@rxap/ngx-status-check';\nimport { ThemeService } from '@rxap/ngx-theme';\nimport {\n IsThemeDensity,\n ThemeDensity,\n UserSettingsThemeService,\n} from '@rxap/ngx-user';\nimport { FooterComponent } from '../footer/footer.component';\nimport { HeaderComponent } from '../header/header.component';\nimport { NavigationComponent } from '../navigation/navigation.component';\nimport { LayoutComponentService } from './layout.component.service';\n\n\n@Component({\n selector: 'rxap-layout',\n templateUrl: './layout.component.html',\n styleUrls: [ './layout.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n HeaderComponent,\n MatSidenavModule,\n AsyncPipe,\n MatIconModule,\n MatButtonModule,\n RouterLink,\n NgIf,\n FooterComponent,\n MatMenuModule,\n NgOptimizedImage,\n NavigationComponent,\n RouterOutlet,\n StatusIndicatorComponent,\n NgStyle,\n NgClass,\n ],\n})\nexport class LayoutComponent implements OnInit, OnDestroy {\n\n public readonly sidenavMode: Signal<MatDrawerMode>;\n public readonly fixedBottomGap: Signal<number>;\n public readonly fixedTopGap: Signal<number>;\n public readonly pinned: Signal<boolean>;\n public readonly collapsable: Signal<boolean>;\n public readonly logoSrc: string;\n public readonly logoWidth: number;\n public readonly release: string;\n public readonly opened: Signal<boolean>;\n\n @ViewChild(MatSidenav, { static: true }) public sidenav!: MatSidenav;\n\n private readonly userSettingsThemeService = inject(UserSettingsThemeService);\n private readonly themeService = inject(ThemeService);\n\n constructor(\n public readonly layoutComponentService: LayoutComponentService,\n @Inject(RXAP_ENVIRONMENT)\n private readonly environment: Environment,\n iconLoaderService: IconLoaderService,\n ) {\n iconLoaderService.load();\n this.fixedBottomGap = layoutComponentService.fixedBottomGap;\n this.fixedTopGap = layoutComponentService.fixedTopGap;\n this.pinned = layoutComponentService.pinned;\n this.collapsable = layoutComponentService.collapsable;\n this.opened = layoutComponentService.opened;\n this.sidenavMode = layoutComponentService.mode;\n this.logoSrc = this.layoutComponentService.logo.src ?? 'https://via.placeholder.com/256x128px';\n this.logoWidth = this.layoutComponentService.logo.width ?? 256;\n this.release = DetermineReleaseName(this.environment);\n }\n\n ngOnDestroy() {\n this.userSettingsThemeService.stopSync();\n }\n\n ngOnInit() {\n this.userSettingsThemeService.startSync();\n this.userSettingsThemeService.get().then(theme => {\n if (theme.preset && theme.preset !== 'default') {\n this.themeService.setTheme(theme.preset, true);\n }\n if (theme.density && IsThemeDensity(theme.density) && theme.density !== ThemeDensity.Normal) {\n this.themeService.setDensity(theme.density, true);\n }\n if (theme.typography && theme.typography !== 'default') {\n this.themeService.setTypography(theme.typography, true);\n }\n });\n }\n\n}\n","<rxap-status-indicator class=\"fixed bottom-0 right-0 z-10\"></rxap-status-indicator>\n<div class=\"flex flex-col h-screen justify-between\">\n <rxap-header class=\"z-10 w-full fixed top-0\"></rxap-header>\n <mat-sidenav-container [ngStyle]=\"{\n 'margin-top.px': fixedTopGap(),\n 'margin-bottom.px': fixedBottomGap(),\n }\" class=\"grow\">\n <mat-sidenav\n #matSidenav=\"matSidenav\"\n [fixedBottomGap]=\"fixedBottomGap()\"\n [fixedInViewport]=\"true\"\n [fixedTopGap]=\"fixedTopGap()\"\n [mode]=\"sidenavMode()\"\n [ngClass]=\"{ collapsable: collapsable() }\"\n class=\"sidenav\"\n [opened]=\"opened()\"\n >\n <div (mouseleave)=\"collapsable() && !pinned() && matSidenav.close()\"\n class=\"h-full py-2 flex flex-col items-center gap-y-5 justify-items-stretch\">\n\n <div (click)=\"layoutComponentService.togglePinned()\" *ngIf=\"collapsable()\"\n class=\"pl-2 self-stretch grow-0 flex flex-row justify-between items-center\">\n <span class=\"text-lg\" i18n>Navigation</span>\n <div class=\"flex flex-row items-center justify-center\" style=\"width: 64px\">\n <button mat-icon-button>\n <mat-icon *ngIf=\"!pinned()\">radio_button_unchecked</mat-icon>\n <mat-icon *ngIf=\"pinned()\">radio_button_checked</mat-icon>\n </button>\n </div>\n </div>\n\n <ul\n (mouseenter)=\"collapsable() && !pinned() && matSidenav.open()\"\n class=\"grow self-stretch\"\n root\n rxap-navigation\n >\n </ul>\n\n <img\n [src]=\"logoSrc\"\n [routerLink]=\"['/']\"\n [width]=\"logoWidth\"\n alt=\"logo\"\n class=\"grow-0 mx-16\"\n />\n <div class=\"grow-0 px-16\">\n <span>{{release}}</span>\n </div>\n </div>\n </mat-sidenav>\n <mat-sidenav-content [ngClass]=\"{ 'ml-16': collapsable() }\" class=\"p-4\">\n <router-outlet></router-outlet>\n </mat-sidenav-content>\n </mat-sidenav-container>\n <rxap-footer class=\"z-10 w-full fixed bottom-0\"></rxap-footer>\n</div>\n<!--<rxap-window-task-bar-container></rxap-window-task-bar-container>-->\n","import {\n ChangeDetectionStrategy,\n Component,\n} from '@angular/core';\nimport { RxapAuthenticationService } from '@rxap/authentication';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rxap-sign-out',\n templateUrl: './sign-out.component.html',\n styleUrls: [ './sign-out.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ MatButtonModule, MatIconModule ],\n})\nexport class SignOutComponent {\n\n constructor(\n private readonly authenticationService: RxapAuthenticationService,\n ) {\n }\n\n public async logout() {\n await this.authenticationService.signOut();\n }\n\n}\n","<button\n mat-icon-button\n (click)=\"logout()\"\n>\n <mat-icon svgIcon=\"logout\"></mat-icon>\n</button>\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n} from '@angular/core';\nimport { ResetService } from '@rxap/services';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'rxap-reset-button',\n templateUrl: './reset-button.component.html',\n styleUrls: [ './reset-button.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ MatButtonModule, MatIconModule ],\n})\nexport class ResetButtonComponent {\n constructor(\n @Inject(ResetService)\n public readonly resetService: ResetService,\n ) {\n }\n}\n","<button (click)=\"resetService.resetAll()\" mat-icon-button>\n <mat-icon svgIcon=\"refresh\"></mat-icon>\n</button>\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class AuthenticationServiceMock {\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public signOut(): void {\n }\n\n}\n","import {\n Directive,\n Inject,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { FooterService } from '@rxap/services';\nimport { TemplatePortal } from '@angular/cdk/portal';\n\n@Directive({\n selector: '[rxapFooter]',\n standalone: true,\n})\nexport class FooterDirective implements OnInit, OnDestroy {\n private _portal?: TemplatePortal<void>;\n\n constructor(\n @Inject(FooterService)\n private readonly footerService: FooterService,\n @Inject(TemplateRef)\n private readonly template: TemplateRef<void>,\n @Inject(ViewContainerRef)\n private readonly viewContainerRef: ViewContainerRef,\n ) {\n }\n\n public ngOnInit() {\n this._portal = new TemplatePortal<void>(\n this.template,\n this.viewContainerRef,\n );\n this.footerService.pushPortal(this._portal);\n }\n\n public ngOnDestroy() {\n if (this._portal) {\n this.footerService.removePortal(this._portal);\n }\n }\n}\n\n\n","// region window-container-sidenav\nexport * from './lib/window-container-sidenav/window-container-sidenav.component';\n// endregion\n\n// region toggle-window-sidenav-button\nexport * from './lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component';\n// endregion\n\n// region sidenav version\nexport * from './lib/sidenav/version/version.component';\n// endregion\n\n// region sidenav\nexport * from './lib/sidenav/sidenav-footer.directive';\nexport * from './lib/sidenav/sidenav-header.directive';\nexport * from './lib/sidenav/sidenav.component.service';\nexport * from './lib/sidenav/sidenav.component';\n// endregion\n\n// region navigation navigation-item\nexport * from './lib/navigation/navigation-item/navigation-item.component';\n// endregion\n\n// region navigation\nexport * from './lib/navigation/navigation-item';\nexport * from './lib/navigation/navigation.component';\nexport * from './lib/navigation/navigation.service';\nexport * from './lib/navigation/replace-router-paths.pipe';\nexport * from './lib/navigation/replace-router-paths.service';\n// endregion\n\n// region layout\nexport * from './lib/layout/layout.component.service';\nexport * from './lib/layout/layout.component';\n// endregion\n\n// region header user-profile-icon\nexport * from './lib/header/user-profile-icon/user-profile-icon.component';\n// endregion\n\n// region header sign-out\nexport * from './lib/header/sign-out/sign-out.component';\n// endregion\n\n// region header sidenav-toggle-button\nexport * from './lib/header/sidenav-toggle-button/sidenav-toggle-button.component';\n// endregion\n\n// region header settings-button\nexport * from './lib/header/settings-button/settings-button.component';\n// endregion\n\n// region header reset-button\nexport * from './lib/header/reset-button/reset-button.component';\n// endregion\n\n// region header navigation-progress-bar\nexport * from './lib/header/navigation-progress-bar/navigation-progress-bar.component';\n// endregion\n\n// region header language-selector\nexport * from './lib/header/language-selector/language-selector.component';\n// endregion\n\n// region header apps-button\nexport * from './lib/header/apps-button/apps-button.component';\n// endregion\n\n// region header\nexport * from './lib/header/header.component';\n// endregion\n\n// region footer\nexport * from './lib/footer/footer.component';\n// endregion\n\n// region \nexport * from './lib/app-url.service';\nexport * from './lib/authentication.service.mock';\nexport * from './lib/footer.directive';\nexport * from './lib/tokens';\nexport * from './lib/types';\n// endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i1.SidenavComponentService","i1.ReplaceRouterPathsService","switchMap","i1.AppUrlService","i4","i5","i6","i8","i1.LayoutComponentService","filter"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA2Ba,+BAA+B,CAAA;AAM1C,IAAA,WAAA,CAEkB,OAAsC,EAAA;QAAtC,IAAO,CAAA,OAAA,GAAP,OAAO,CAA+B;AANjD,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,GAAG,EAAgC,CAAC;AAEjD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;KAMzC;IAEM,QAAQ,GAAA;QACb,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AACzC,QAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;AAClC,YAAA,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;SACrB;AACD,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAC1C,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CACtC,CAAC,SAAS,EAAE,CAAC,CAAC;AACf,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAC7C,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CACzC,CAAC,SAAS,EAAE,CAAC,CAAC;KAChB;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KACjC;IAEM,OAAO,CAAC,KAAa,EAAE,EAAU,EAAA;AACtC,QAAA,OAAO,EAAE,CAAC;KACX;AAEO,IAAA,GAAG,CAAC,SAA6B,EAAA;QACvC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;YAClC,MAAM,IAAI,KAAK,CAAC,CAAA,yBAAA,EAA6B,SAAS,CAAC,EAAG,CAAiB,eAAA,CAAA,CAAC,CAAC;SAC9E;QACD,MAAM,MAAM,GAAG,IAAI,eAAe,CAChC,SAAS,CAAC,SAAS,EACnB,SAAS,CAAC,gBAAgB,EAC1B,SAAS,CAAC,QAAQ,EAClB,SAAS,CAAC,wBAAwB,CACnC,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;KACxC;AAEO,IAAA,MAAM,CAAC,SAA6B,EAAA;QAC1C,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;AAClC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAE,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,EAAE,CAAC;SACjB;KACF;AApDU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,kBAOhC,6BAA6B,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAP5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,EC3B5C,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,oOAOA,EDkBa,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,KAAK,kHAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAEnB,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAR3C,SAAS;+BACE,+BAA+B,EAAA,eAAA,EAGxB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EAAA,OAAA,EACP,CAAE,KAAK,EAAE,YAAY,CAAE,EAAA,QAAA,EAAA,oOAAA,EAAA,CAAA;;0BAS7B,MAAM;2BAAC,6BAA6B,CAAA;;;MEX5B,kCAAkC,CAAA;AAZ/C,IAAA,WAAA,GAAA;QAeS,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;AAG1B,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,YAAY,EAAW,CAAC;AAO9D,KAAA;IALQ,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;QACjD,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;KAC3D;8GAXU,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kCAAkC,iRCvB/C,gWAUA,EAAA,MAAA,EAAA,CAAA,uIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDWa,eAAe,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAI,4FAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAEpC,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAZ9C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mCAAmC,EAG5B,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAEzC,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE,mCAAmC;qBAC3C,EACW,UAAA,EAAA,IAAI,WACP,CAAE,eAAe,EAAE,IAAI,EAAE,aAAa,CAAE,EAAA,QAAA,EAAA,gWAAA,EAAA,MAAA,EAAA,CAAA,uIAAA,CAAA,EAAA,CAAA;8BAK1C,iBAAiB,EAAA,CAAA;sBADvB,KAAK;gBAIC,uBAAuB,EAAA,CAAA;sBAD7B,MAAM;;;MEEI,gBAAgB,CAAA;AAM3B,IAAA,WAAA,CACkC,OAAuB,EAAA;QAAvB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAgB;KAExD;IAEM,QAAQ,GAAA;QACb,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAClC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAC3C,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAC7C,CAAC,SAAS,EAAE,CAAC;KACf;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC;KAClC;AApBU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,kBAOjB,cAAc,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAPb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EC9B7B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,gVAOA,EDqBa,MAAA,EAAA,CAAA,oGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,KAAK,8GAAE,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAEnB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAR5B,SAAS;+BACE,cAAc,EAAA,eAAA,EAGP,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EAAA,OAAA,EACP,CAAE,KAAK,EAAE,YAAY,CAAE,EAAA,QAAA,EAAA,gVAAA,EAAA,MAAA,EAAA,CAAA,oGAAA,CAAA,EAAA,CAAA;;0BAS7B,MAAM;2BAAC,cAAc,CAAA;;;ME3Bb,sBAAsB,CAAA;AACjC,IAAA,WAAA,CAEkB,QAA2B,EAAA;QAA3B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAmB;KAE5C;AALU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,kBAEvB,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAFV,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;0BAGI,MAAM;2BAAC,WAAW,CAAA;;;MCFV,sBAAsB,CAAA;AACjC,IAAA,WAAA,CAEkB,QAA2B,EAAA;QAA3B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAmB;KAE5C;AALU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,kBAEvB,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAFV,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;0BAGI,MAAM;2BAAC,WAAW,CAAA;;;MCPV,uBAAuB,CAAA;AAIlC,IAAA,WAAA,CAA6B,MAAqB,EAAA;QAArB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;AAFlC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;QAGrD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;KACtF;IAEM,wBAAwB,GAAA;AAC7B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KAC9C;8GAVU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cADV,MAAM,EAAA,CAAA,CAAA,EAAA;;2FACnB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;MCyFrB,uBAAuB,CAAA;AAkBlC,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IAED,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACxB;IAID,WAEmB,CAAA,MAAc,EAEf,OAAgC,EAE/B,UAAsB,EAEtB,QAAmB,EAEnB,OAAgB,EAEhB,gBAAkC,EAAA;QAVlC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QAEf,IAAO,CAAA,OAAA,GAAP,OAAO,CAAyB;QAE/B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QAEtB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAEnB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;QAEhB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAtC9C,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;QAET,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAEnB,IAAQ,CAAA,QAAA,GAAsB,IAAI,CAAC;AAQnC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAYb,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;KAgBnD;AAEM,IAAA,WAAW,CAAC,OAAsB,EAAA;AACvC,QAAA,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;YACnB,MAAM,IAAI,GAAmB,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC;AAC1D,YAAA,IAAI,CAAC,QAAQ;AACX,gBAAA,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SAChE;KACF;IAEM,eAAe,GAAA;QACpB,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,MAAM,CAAC,MAAM;aACb,IAAI,CACH,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,YAAY,aAAa,CAAC,EACjD,YAAY,CAAC,GAAG,CAAC,EACjB,SAAS,CAAC,IAAI,CAAC,EACf,GAAG,CAAC,MAAK;YACP,IAAI,QAAQ,GAAG,IAAI,CAAC;AACpB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5C,YAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;AACtB,gBAAA,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;aACnB;AACD,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpD,gBAAA,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;oBAC3C,QAAQ,GAAG,KAAK,CAAC;oBACjB,MAAM;iBACP;aACF;AACD,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACzB,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;aACjE;iBAAM;AACL,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;aACpE;AACH,SAAC,CAAC,CACH;aACA,SAAS,EAAE,CACjB,CAAC;KACH;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC;KACnC;;;AAMM,IAAA,uBAAuB,CAC5B,IAA4C,EAAA;AAE5C,QAAA,OAAQ,IAAY,CAAC,SAAS,CAAC,CAAC;KACjC;AAEM,IAAA,gBAAgB,CACrB,IAA4C,EAAA;AAE5C,QAAA,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;KAC5C;AAEM,IAAA,gBAAgB,CACrB,IAA4C,EAAA;QAE5C,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;SACrD;AACD,QAAA,OAAO,IAAI,CAAC;KACb;8GAhHU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EA+BxB,MAAM,EAAA,EAAA,EAAA,KAAA,EAEN,uBAAuB,EAAA,EAAA,EAAA,KAAA,EAEvB,UAAU,EAAA,EAAA,EAAA,KAAA,EAEV,SAAS,EAAA,EAAA,EAAA,KAAA,EAET,OAAO,EAAA,EAAA,EAAA,KAAA,EAEP,gBAAgB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAzCf,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAUvB,gBAAgB,ECvG7B,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,s3BAsCA,8ED4CI,gBAAgB,CAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAChB,UAAU,CAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACV,IAAI,CAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACJ,eAAe,CACf,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAAA,IAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,aAAa,8NACb,aAAa,CAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACb,gBAAgB,CACC,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAAE,IAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,mBAAmB,CACpC,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAA,OAAO,CA3BG,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACV,OAAO,CAAC,SAAS,EAAE;gBACjB,UAAU,CAAC,QAAQ,EAAE;AACnB,oBAAA,KAAK,CAAC;AACJ,wBAAA,OAAO,EAAE,OAAO;AAChB,wBAAA,MAAM,EAAE,GAAG;AACX,wBAAA,QAAQ,EAAE,QAAQ;qBACnB,CAAC;oBACF,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;iBACrC,CAAC;gBACF,UAAU,CAAC,QAAQ,EAAE;AACnB,oBAAA,KAAK,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;oBAC7B,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;AACpC,oBAAA,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;iBAC3B,CAAC;aACH,CAAC;AACH,SAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAcU,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBArCnC,SAAS;+BAEE,0BAA0B,EAAA,eAAA,EAGnB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EACzB,UAAA,EAAA;wBACV,OAAO,CAAC,SAAS,EAAE;4BACjB,UAAU,CAAC,QAAQ,EAAE;AACnB,gCAAA,KAAK,CAAC;AACJ,oCAAA,OAAO,EAAE,OAAO;AAChB,oCAAA,MAAM,EAAE,GAAG;AACX,oCAAA,QAAQ,EAAE,QAAQ;iCACnB,CAAC;gCACF,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;6BACrC,CAAC;4BACF,UAAU,CAAC,QAAQ,EAAE;AACnB,gCAAA,KAAK,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;gCAC7B,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;AACpC,gCAAA,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;6BAC3B,CAAC;yBACH,CAAC;AACH,qBAAA,EAAA,UAAA,EACW,IAAI,EACP,OAAA,EAAA;wBACP,gBAAgB;wBAChB,UAAU;wBACV,IAAI;wBACJ,eAAe;wBACf,aAAa;wBACb,aAAa;wBACb,gBAAgB;AAChB,wBAAA,UAAU,CAAC,MAAM,mBAAmB,CAAC;wBACrC,OAAO;AACR,qBAAA,EAAA,QAAA,EAAA,s3BAAA,EAAA,CAAA;;0BAiCE,MAAM;2BAAC,MAAM,CAAA;;0BAEb,MAAM;2BAAC,uBAAuB,CAAA;;0BAE9B,MAAM;2BAAC,UAAU,CAAA;;0BAEjB,MAAM;2BAAC,SAAS,CAAA;;0BAEhB,MAAM;2BAAC,OAAO,CAAA;;0BAEd,MAAM;2BAAC,gBAAgB,CAAA;yCArCnB,KAAK,EAAA,CAAA;sBADX,KAAK;gBAQC,gBAAgB,EAAA,CAAA;sBADtB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAItC,IAAI,EAAA,CAAA;sBADV,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;gBAMrB,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,cAAc,CAAA;;;AE1FvB,SAAU,uBAAuB,CACrC,IAAS,EAAA;IAET,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACrC,CAAC;AAMK,SAAU,sBAAsB,CACpC,IAAS,EAAA;IAET,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpC,CAAC;AAoBK,SAAU,gBAAgB,CAAC,IAAS,EAAA;AACxC,IAAA,QACE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EACjD;AACJ;;MCvDa,sBAAsB,GAAG,IAAI,cAAc,CACtD,+BAA+B,EAAE;MACtB,8BAA8B,GAAG,IAAI,cAAc,CAC9D,uCAAuC,EAAE;MAE9B,qBAAqB,GAAG,IAAI,cAAc,CAAC,8BAA8B,EAAE;MAC3E,qBAAqB,GAAG,IAAI,cAAc,CAAC,8BAA8B,EAAE;MAC3E,gBAAgB,GAAG,IAAI,cAAc,CAAa,yBAAyB,EAAE;MAC7E,qBAAqB,GAAG,IAAI,cAAc,CAAC,uBAAuB;;MCsBlE,iBAAiB,CAAA;AAS5B,IAAA,WAAA,CAEI,UAAe,EAEA,QAAkB,EAGjC,UAAsB,IAAI,EAAA;QAHX,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AAV7B,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,GAAG,EAAiC,CAAC;AAI1C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,aAAa,CAAa,CAAC,CAAC,CAAC;AAW9D,QAAA,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE;AACpC,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC;SAChC;aAAM;AACL,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;SAC9B;QACD,IAAI,OAAO,EAAE;AACX,YAAA,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,EAAE,EAAE,MAAM,CAAmB,KAC9D,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAC/B,CAAC;SACH;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAClC,SAAS,CAAC,CAAC,4BAA4B,KACrC,IAAI,CAAC,8BAA8B,CAAC,4BAA4B,CAAC,CAClE,CACF,CAAC;KACH;AAED;;;;;AAKG;AACI,IAAA,MAAM,CACX,EAAU,EACV,KAA4B,EAC5B,MAAM,GAAG,IAAI,EAAA;QAEb,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;KAC7B;AAEM,IAAA,GAAG,CACR,EAAU,EACV,KAA4B,EAC5B,MAAM,GAAG,IAAI,EAAA;QAEb,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC5B,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;KACF;AAEM,IAAA,GAAG,CAAC,EAAU,EAAA;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KAC7B;AAEM,IAAA,GAAG,CAAC,EAAU,EAAA;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KAC7B;AAEM,IAAA,MAAM,CAAC,EAAU,EAAE,MAAM,GAAG,IAAI,EAAA;AACrC,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;KACF;IAEM,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;KAC7D;AAED;;;AAGG;AACI,IAAA,kCAAkC,CACvC,cAAsD,EAAA;QAEtD,IAAI,uBAAuB,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AACrE,YAAA,OAAO,EAAE,CAAC,cAAc,CAAC,CAAC;SAC3B;AACD,QAAA,MAAM,eAAe,GAA+B,cAAc,CAAC,MAAM;AACN,aAAA,GAAG,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,CACrC,WAAW,CAAC,CAAC;AACd,aAAA,GAAG,CAAC,CAAC,MAAM,KAAI;YACd,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAChC,cAAc,CAAC,CAAC;AAClB,YAAA,IAAI,OAAO,SAAS,KAAK,SAAS,EAAE;AAClC,gBAAA,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;aACtB;iBAAM;AACL,gBAAA,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;aACxB;AACH,SAAC,CAAC;AACD,aAAA,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAG;YAChD,OAAO,CAAC,KAAK,CAAC,2BAA2B;gBACvC,CAAC,CAAC,OAAO,CAAC,CAAC;AACb,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;SAClB,CAAC,CAAC,CAAC,CAAC;;QAEvE,OAAO,aAAa,CAAC,eAAe,CAAC,CAAC,IAAI,CACxC,GAAG,CAAC,CAAC,cAAc,KACjB,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,SAAS,KAAK,GAAG,IAAI,SAAS,EAAE,IAAI,CAAC,CAClE,EACD,GAAG,CAAC,CAAC,SAAS,MAAM,SAAS,GAAG,cAAc,GAAG,IAAI,CAAC,CAAC,EACvD,SAAS,CAAC,CAAC,oBAAoB,KAAI;YACjC,IAAI,oBAAoB,EAAE;AACxB,gBAAA,IAAI,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE;AACzC,oBAAA,OAAO,IAAI,CAAC,8BAA8B,CACxC,oBAAoB,CAAC,QAAQ,CAC9B,CAAC,IAAI,CACJ,GAAG,CAAC,CAAC,QAAQ,MAAM;AACjB,wBAAA,GAAG,oBAAoB;wBACvB,QAAQ;qBACT,CAAC,CAAC,CACJ,CAAC;iBACH;AACD,gBAAA,OAAO,EAAE,CAAC,oBAAoB,CAAC,CAAC;aACjC;AACD,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;SACjB,CAAC,CACH,CAAC;KACH;AAED;;;AAGG;AACI,IAAA,8BAA8B,CACnC,UAAsB,EAAA;QAEtB,OAAO,aAAa,CAClB,UAAU,CAAC,GAAG,CAAC,CAAC,cAAc,KAC5B,IAAI,CAAC,kCAAkC,CAAC,cAAc,CAAC,CACxD,CACF,CAAC,IAAI,CACJ,GAAG,CAAC,CAAC,uBAAuB,KAAI;YAC9B,MAAM,eAAe,GAAe,EAAE,CAAC;AAEvC,YAAA,KAAK,MAAM,cAAc,IAAI,uBAAuB,EAAE;AACpD,gBAAA,IAAI,cAAc,KAAK,IAAI,EAAE;AAC3B,oBAAA,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;iBACtC;aACF;AAED,YAAA,OAAO,eAAe,CAAC;SACxB,CAAC,CACH,CAAC;KACH;AAEO,IAAA,cAAc,CACpB,qBAA4C,EAAA;QAE5C,MAAM,UAAU,GAAe,EAAE,CAAC;AAElC,QAAA,KAAK,MAAM,cAAc,IAAI,qBAAqB,EAAE;AAClD,YAAA,IAAI,sBAAsB,CAAC,cAAc,CAAC,EAAE;gBAC1C,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;oBAC3C,UAAU,CAAC,IAAI,CACb,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAE,CAAC,CACjE,CAAC;iBACH;aACF;AAAM,iBAAA,IAAI,gBAAgB,CAAC,cAAc,CAAC,EAAE;gBAC3C,UAAU,CAAC,IAAI,CAAC;AACd,oBAAA,GAAG,cAAc;oBACjB,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,IAAI,EAAE,CAAC;AAC7D,iBAAA,CAAC,CAAC;aACJ;AAAM,iBAAA,IAAI,uBAAuB,CAAC,cAAc,CAAC,EAAE;AAClD,gBAAA,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aACjC;SACF;AAED,QAAA,OAAO,UAAU,CAAC;KACnB;AArLU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAUlB,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,sBAAsB,EAEtB,EAAA,EAAA,KAAA,EAAA,QAAQ,aAGR,8BAA8B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAf7B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cADJ,MAAM,EAAA,CAAA,CAAA,EAAA;;2FACnB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;0BAW7B,MAAM;2BAAC,sBAAsB,CAAA;;0BAE7B,MAAM;2BAAC,QAAQ,CAAA;;0BAEf,QAAQ;;0BACR,MAAM;2BAAC,8BAA8B,CAAA;;;MCC7B,mBAAmB,CAAA;AAO9B,IAAA,WAAA,CAEmB,iBAAoC,EAEpC,GAAsB,EAEvB,OAAgC,EAAA;QAJ/B,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QAEpC,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QAEvB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAyB;QAR3C,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;QAaV,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;KAHpB;IAKD,IACW,IAAI,CAAC,KAAmB,EAAA;AACjC,QAAA,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;KACnC;IAEM,QAAQ,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AAChB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO;AACzB,iBAAA,IAAI,CACH,GAAG,CAAC,CAAC,UAAU,MAAM,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,EAC9C,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CACpC;AACA,iBAAA,SAAS,EAAE,CAAC;SACtC;AACD,QAAA,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;KACnB;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC;KAClC;;;AAMM,IAAA,uBAAuB,CAC5B,IAA4C,EAAA;AAE5C,QAAA,OAAQ,IAAY,CAAC,SAAS,CAAC,CAAC;KACjC;AAEM,IAAA,gBAAgB,CACrB,IAA4C,EAAA;AAE5C,QAAA,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;KAC5C;AAEM,IAAA,gBAAgB,CACrB,IAA4C,EAAA;QAE5C,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;SACrD;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAjEU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAQpB,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,iBAAiB,EAEjB,EAAA,EAAA,KAAA,EAAA,iBAAiB,aAEjB,uBAAuB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAZtB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,4BAAA,EAAA,YAAA,EAAA,EAAA,cAAA,EAAA,kDAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClDhC,2hBAYA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MD+BI,KAAK,CAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACL,IAAI,CAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACJ,gBAAgB,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAAAF,IAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACC,uBAAuB,CAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MACxC,SAAS,CAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAGA,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBApB/B,SAAS;+BAEE,qBAAqB,EAAA,eAAA,EAGd,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EACzB,UAAA,EAAA,IAAI,EAEV,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE,kDAAkD;qBAC1D,EACQ,OAAA,EAAA;wBACP,KAAK;wBACL,IAAI;wBACJ,gBAAgB;AAChB,wBAAA,UAAU,CAAC,MAAM,uBAAuB,CAAC;wBACzC,SAAS;AACV,qBAAA,EAAA,QAAA,EAAA,2hBAAA,EAAA,CAAA;;0BAUE,MAAM;2BAAC,iBAAiB,CAAA;;0BAExB,MAAM;2BAAC,iBAAiB,CAAA;;0BAExB,MAAM;2BAAC,uBAAuB,CAAA;yCAV1B,KAAK,EAAA,CAAA;sBADX,KAAK;gBAIC,KAAK,EAAA,CAAA;sBADX,KAAK;gBAcC,KAAK,EAAA,CAAA;sBADX,WAAW;uBAAC,4BAA4B,CAAA;gBAI9B,IAAI,EAAA,CAAA;sBADd,KAAK;;;ME9BK,gBAAgB,CAAA;AAQ3B,IAAA,WAAA,CAA4B,OAAgC,EAAA;QAAhC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAyB;KAC3D;8GATU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAG,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAEb,sBAAsB,EAGtB,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,sBAAsB,gDC7CtC,qlDA4BA,EAAA,MAAA,EAAA,CAAA,myBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDEI,OAAO,EACP,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAI,6FACJ,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,gBAAgB,EAChB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mBAAmB,mGACnB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACb,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAGA,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBArB5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAGP,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAEzC,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE,qBAAqB;AAC7B,qBAAA,EAAA,UAAA,EACW,IAAI,EACP,OAAA,EAAA;wBACP,OAAO;wBACP,IAAI;wBACJ,gBAAgB;wBAChB,gBAAgB;wBAChB,mBAAmB;wBACnB,eAAe;wBACf,aAAa;wBACb,SAAS;AACV,qBAAA,EAAA,QAAA,EAAA,qlDAAA,EAAA,MAAA,EAAA,CAAA,myBAAA,CAAA,EAAA,CAAA;yFAKM,sBAAsB,EAAA,CAAA;sBAD5B,YAAY;uBAAC,sBAAsB,CAAA;gBAI7B,sBAAsB,EAAA,CAAA;sBAD5B,YAAY;uBAAC,sBAAsB,CAAA;;;MEtCzB,yBAAyB,CAAA;AAE7B,IAAA,SAAS,CAAC,UAAoB,EAAA;AACnC,QAAA,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC;KACvB;8GAJU,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cADZ,MAAM,EAAA,CAAA,CAAA,EAAA;;2FACnB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;MCKrB,sBAAsB,CAAA;AACjC,IAAA,WAAA,CACS,GAA8B,EAAA;QAA9B,IAAG,CAAA,GAAA,GAAH,GAAG,CAA2B;KAEtC;AAED,IAAA,SAAS,CAAC,UAAoB,EAAA;QAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;KACvC;8GARU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAG,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,oBAAA,EAAA,CAAA,CAAA,EAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,oBAAoB;AAC1B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;MCaY,sBAAsB,CAAA;IAcjC,WACkB,CAAA,sBAAqC,EACrC,sBAAqC,EACf,aAAgC,IAAI,EAEzD,MAAqB,EACtC,YAA0B,EAAA;QALV,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAe;QACrC,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAe;QAGpC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;AARvB,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,0BAA0B,EAAE,CAAC,CAAC;QAW5E,MAAM,WAAW,GAAG,YAAY,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;AAClE,QAAA,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC;AACnC,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;AAC3E,QAAA,MAAM,WAAW,GAAG,kBAAkB,IAAI,CAAC,MAAM,CAAC;AAClD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,IAAI,CAAC,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;QAC1F,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,WAAW,IAAI,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;AAEzF,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvC,QAAA,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,IAC5E,EAAE,GAAG,CACA,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,IAC7B,CAAC,CACT,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,IAC5E,EAAE,GAAG,CACA,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,IAC7B,CAAC,CACT,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,IAAI,GAAG,UAAU,IAAI;AACxB,YAAA,GAAG,EAAE,iBAAiB;AACtB,YAAA,KAAK,EAAE,GAAG;SACX,CAAC;QACF,WAAW,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,KAAI;YAC/C,IAAI,kBAAkB,EAAE;gBACtB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACrC,gBAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,oBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;AAClB,wBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;qBACxB;iBACF;aACF;AACH,SAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACjB,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtB,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACvB;iBAAM;AACL,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtB,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;aACxB;AACH,SAAC,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;KACjC;IAEM,YAAY,GAAA;QACjB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;KACjC;IAEM,YAAY,GAAA;QACjB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;KACjC;8GA7EU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAiBX,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAC5B,aAAa,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAlBZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cADT,MAAM,EAAA,CAAA,CAAA,EAAA;;2FACnB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;0BAkB7B,QAAQ;;0BAAI,MAAM;2BAAC,gBAAgB,CAAA;;0BACnC,MAAM;2BAAC,aAAa,CAAA;;;MCpBZ,eAAe,CAAA;AAE1B,IAAA,WAAA,CACkB,aAA4B,EAAA;QAA5B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;KAE7C;8GALU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrB5B,8TAOA,EDYa,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAI,4FAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,KAAK,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAE3C,eAAe,EAAA,UAAA,EAAA,CAAA;kBAR3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,mBAGN,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA,CAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,CAAE,EAAA,QAAA,EAAA,8TAAA,EAAA,CAAA;;;MEQxD,aAAa,CAAA;AAIxB,IAAA,WAAA,CACmB,MAAqB,EAErB,QAAgB,EAChB,oBAA0C,EAE1C,WAAwB,EAAA;QALxB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QAErB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAQ;QAChB,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;QAE1C,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AAEzC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;KACrD;AAEM,IAAA,MAAM,CAAC,KAAa,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC;KACzD;IAEM,SAAS,CAAC,KAAa,EAAE,IAAY,EAAE,KAAuB,GAAA,IAAI,CAAC,aAAa,EAAE,EAAA;QAEvF,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE/B,IAAI,GAAG,EAAE;YACP,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;SACxC;AAED,QAAA,OAAO,IAAI,CAAC;KAEb;IAEM,gBAAgB,CAAC,KAAa,EAAE,IAAY,EAAA;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,GAAG,EAAE;AACP,YAAA,OAAO,GAAG,CAAC;SACZ;AACD,QAAA,MAAM,IAAI,KAAK,CAAC,+BAAgC,KAAM,CAAA,CAAA,CAAG,CAAC,CAAC;KAC5D;IAEM,QAAQ,CAAC,KAAa,EAAE,IAAY,EAAA;QAEzC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAExC,IAAI,GAAG,EAAE;YACP,WAAW,CAAC,GAAG,CAAC,CAAC;SAClB;KAEF;AAEM,IAAA,MAAM,UAAU,GAAA;QACrB,MAAM,OAAO,GAAG,IAAI;aACjB,KAAK;aACL,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AAC1B,aAAA,GAAG,CAAC,GAAG,KAAK;AACX,YAAA,GAAG,GAAG;YACN,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;AAC/C,SAAA,CAAC,CAAC,CAAC;QAEN,MAAM,eAAe,GAAwB,EAAE,CAAC;AAChD,QAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;AACzB,YAAA,IAAI,MAAM,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,EAAE;AACnF,gBAAA,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAC3B;SACF;AACD,QAAA,OAAO,eAAe,CAAC;KACxB;IAEO,aAAa,GAAA;QACnB,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE;YAChD,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SAC1C;AACD,QAAA,OAAO,EAAE,CAAC;KACX;8GAxEU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAMd,SAAS,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAGT,gBAAgB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AATf,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cADA,MAAM,EAAA,CAAA,CAAA,EAAA;;2FACnB,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;0BAO7B,MAAM;2BAAC,SAAS,CAAA;;0BAGhB,MAAM;2BAAC,gBAAgB,CAAA;;;MCSf,mBAAmB,CAAA;AAO9B,IAAA,WAAA,CAGI,IAAS,EACM,aAA4B,EAC5B,qBAAgD,EAAA;QADhD,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAA2B;QAX5D,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;AAEN,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAsB,EAAE,CAAC,CAAC;KAUtD;IAEJ,QAAQ,GAAA;QACN,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CACnE,MAAM,CAAC,OAAO,CAAC,EACfI,WAAS,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,EAChD,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CACtC,CAAC,SAAS,EAAE,CAAC;KACf;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC;KACnC;AAzBU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,kBASpB,qBAAqB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAL,IAAA,CAAA,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGATpB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7ChC,0pBAoBA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDkBI,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,KAAK,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACL,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,gFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAGP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAd/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,mBAGX,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,IAAI;wBACJ,KAAK;wBACL,eAAe;wBACf,aAAa;wBACb,gBAAgB;AACjB,qBAAA,EAAA,QAAA,EAAA,0pBAAA,EAAA,CAAA;;0BAUE,QAAQ;;0BACR,MAAM;2BAAC,qBAAqB,CAAA;;;MEpBpB,8BAA8B,CAAA;AAIzC,IAAA,WAAA,CACkC,MAAc,EAAA;QAAd,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAE9C,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CACxC,MAAM,CACJ,KAAK,IACH,KAAK,YAAY,eAAe;AAChC,YAAA,KAAK,YAAY,aAAa;AAC9B,YAAA,KAAK,YAAY,gBAAgB,CACpC,EACD,GAAG,CAAC,KAAK,IAAI,KAAK,YAAY,eAAe,CAAC,CAC/C,CAAC;KACH;AAhBU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,kBAK/B,MAAM,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AALL,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,wFClC3C,0HAKA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDwBI,IAAI,EACJ,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,oBAAoB,sNACpB,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAGA,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAZ1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,mBAGvB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,IAAI;wBACJ,oBAAoB;wBACpB,SAAS;AACV,qBAAA,EAAA,QAAA,EAAA,0HAAA,EAAA,CAAA;;0BAOE,MAAM;2BAAC,MAAM,CAAA;;;MENL,yBAAyB,CAAA;AACpC,IAAA,WAAA,CAA4B,QAAiC,EAAA;QAAjC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAyB;KAC5D;8GAFU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,kFCjCtC,0gBAUA,EAAA,MAAA,EAAA,CAAA,2WAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDaI,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACJ,kBAAkB,EAClB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,wBAAwB,EACxB,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,urBACf,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,KAAK,EACL,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,0BACf,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAGH,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAjBrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,mBAGjB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,IAAI;wBACJ,kBAAkB;wBAClB,wBAAwB;wBACxB,eAAe;wBACf,WAAW;wBACX,KAAK;wBACL,eAAe;wBACf,YAAY;AACb,qBAAA,EAAA,QAAA,EAAA,0gBAAA,EAAA,MAAA,EAAA,CAAA,2WAAA,CAAA,EAAA,CAAA;;;MEMU,uBAAuB,CAAA;AAkBlC,IAAA,WAAA,CACkB,KAAmB,EAClB,KAAqB,EACrB,QAAkB,EAClB,gBAAkC,EAAA;QAHnC,IAAK,CAAA,KAAA,GAAL,KAAK,CAAc;QAClB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;QACrB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QApB9C,IAAS,CAAA,SAAA,GAAG,SAAS,EAAE,CAAC;AAC/B,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAkC,EAAE,CAAC,CAAC;QAG5C,IAAuB,CAAA,uBAAA,GAAG,KAAK,CAAC;QAChC,IAAmB,CAAA,mBAAA,GAAwB,IAAI,CAAC;QAEhD,IAA0B,CAAA,0BAAA,GAAG,KAAK,CAAC;QACnC,IAAsB,CAAA,sBAAA,GAAkB,IAAI,CAAC;QAG7C,IAAqB,CAAA,qBAAA,GAAG,KAAK,CAAC;QAG9B,IAAiB,CAAA,iBAAA,GAAkB,IAAI,CAAC;QAQ9C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;QACvD,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,EAAE,CAAC;KACpE;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC;KACnC;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CACvC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAC1C,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EACpF,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CACpC,CAAC,SAAS,EAAE,CAAC;KACf;AAEO,IAAA,kBAAkB,CAAC,IAAS,EAAA;AAClC,QAAA,IAAI,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;YAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;SACtC;AACD,QAAA,OAAO,EAAE,CAAC;KACX;IAED,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC;KAC7C;AAED,IAAA,cAAc,CAAC,OAAqB,EAAA;AAClC,QAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;KAClC;IAED,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;KAC/C;AAED,IAAA,UAAU,CAAC,OAAqB,EAAA;AAC9B,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;KAChC;AAED,IAAA,iBAAiB,CAAC,UAAkB,EAAA;AAClC,QAAA,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;KACxC;IAED,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;KACrD;AAED,IAAA,aAAa,CAAC,UAAkB,EAAA;AAC9B,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;KACtC;AAED,IAAA,YAAY,CAAC,KAAa,EAAA;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KAC9B;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;KAC/C;AAED,IAAA,QAAQ,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC5B;8GArFU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,ECrCpC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,gxGAgFA,ED/Ca,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,yBAAyB,EAAE,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,6vBAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAIpG,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EACpB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,yBAAyB,EAAE,aAAa,EAAE,YAAY,CAAE,EAAA,QAAA,EAAA,gxGAAA,EAAA,CAAA;;;MEXtG,4BAA4B,CAAA;AAIvC,IAAA,WAAA,CAA4B,sBAA8C,EAAA;QAA9C,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;AACxE,QAAA,IAAI,CAAC,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC;KAC7C;8GANU,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,sFCtBzC,+LAIA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDaI,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAI,4FACJ,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAGJ,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAZxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,mBAGrB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,eAAe;wBACf,IAAI;wBACJ,aAAa;AACd,qBAAA,EAAA,QAAA,EAAA,+LAAA,EAAA,CAAA;;;MEQU,6BAA6B,GAAG,IAAI,cAAc,CAC7D,+BAA+B,EAC/B;AACE,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM,CAAC,OAAY,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,KAAK,IAAI;AAC9G,CAAA,EACD;MAeW,wBAAwB,CAAA;AAInC,IAAA,WAAA,CACmB,kBAA4C,EAC5C,qBAAgD,EAE/D,0BAA2D,EAAA;QAH5C,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAA0B;QAC5C,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAA2B;AAIjE,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CACvEU,QAAM,CAAC,OAAO,CAAC,EACf,SAAS,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;YAC9C,UAAU,EAAE,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAC1D,IAAI,CAAC,CAAC,CAAC,EACPA,QAAM,CAAC,OAAO,CAAC,EACf,oBAAoB,EAAE,CACvB;AACF,SAAA,CAAC,CAAC,EACHA,QAAM,CAAC,OAAO,CAAC,EACf,GAAG,CAAC,0BAA0B,CAAC,CAChC,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;KAC5B;AAEM,IAAA,MAAM,MAAM,GAAA;AACjB,QAAA,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;KAC5C;AA1BU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,oGAOzB,6BAA6B,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAP5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,ECjDrC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,4rBAoBA,EDuBI,MAAA,EAAA,CAAA,iTAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,6vBACb,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAKJ,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAbpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,mBAGjB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,aAAa;wBACb,aAAa;wBACb,IAAI;wBACJ,SAAS;AACV,qBAAA,EAAA,QAAA,EAAA,4rBAAA,EAAA,MAAA,EAAA,CAAA,iTAAA,CAAA,EAAA,CAAA;;0BASE,MAAM;2BAAC,6BAA6B,CAAA;;;MEQ5B,eAAe,CAAA;AAQ1B,IAAA,WAAA,CAEkB,sBAAqC,EACrC,sBAA8C,EACZ,eAAoB,EAAA;QAFtD,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAe;QACrC,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;QACZ,IAAe,CAAA,eAAA,GAAf,eAAe,CAAK;QATjE,IAAK,CAAA,KAAA,GAAiB,SAAS,CAAC;AAWrC,QAAA,IAAI,CAAC,WAAW,GAAG,sBAAsB,CAAC,WAAW,CAAC;AACtD,QAAA,IAAI,CAAC,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC;KAC7C;8GAhBU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAShB,aAAa,EAAA,EAAA,EAAA,KAAA,EAAAD,sBAAA,EAAA,EAAA,EAAA,KAAA,EAGD,qBAAqB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAZhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EChE5B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,qnBAaA,ED8BI,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,gBAAgB,mJAChB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACJ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,kBAAkB,EAElB,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,EACX,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,8BAEf,oBAAoB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEpB,8BAA8B,EAAA,QAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC9B,wBAAwB,EACxB,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,uBAAuB,iEACvB,4BAA4B,EAAA,QAAA,EAAA,4BAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAGnB,eAAe,EAAA,UAAA,EAAA,CAAA;kBA5B3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,mBAGN,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,gBAAgB;wBAChB,OAAO;wBACP,IAAI;wBACJ,eAAe;wBACf,aAAa;wBACb,aAAa;wBACb,kBAAkB;wBAClB,wBAAwB;wBACxB,eAAe;wBACf,WAAW;wBACX,eAAe;wBACf,6BAA6B;wBAC7B,oBAAoB;wBACpB,SAAS;wBACT,8BAA8B;wBAC9B,wBAAwB;wBACxB,mBAAmB;wBACnB,uBAAuB;wBACvB,4BAA4B;AAC7B,qBAAA,EAAA,QAAA,EAAA,qnBAAA,EAAA,CAAA;;0BAWE,MAAM;2BAAC,aAAa,CAAA;;0BAGpB,QAAQ;;0BAAI,MAAM;2BAAC,qBAAqB,CAAA;yCATpC,KAAK,EAAA,CAAA;sBADX,KAAK;;;MEMK,eAAe,CAAA;AAiB1B,IAAA,WAAA,CACkB,sBAA8C,EAE7C,WAAwB,EACzC,iBAAoC,EAAA;QAHpB,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;QAE7C,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AAN1B,QAAA,IAAA,CAAA,wBAAwB,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAC5D,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;QAQnD,iBAAiB,CAAC,IAAI,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,cAAc,GAAG,sBAAsB,CAAC,cAAc,CAAC;AAC5D,QAAA,IAAI,CAAC,WAAW,GAAG,sBAAsB,CAAC,WAAW,CAAC;AACtD,QAAA,IAAI,CAAC,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC;AAC5C,QAAA,IAAI,CAAC,WAAW,GAAG,sBAAsB,CAAC,WAAW,CAAC;AACtD,QAAA,IAAI,CAAC,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC;AAC5C,QAAA,IAAI,CAAC,WAAW,GAAG,sBAAsB,CAAC,IAAI,CAAC;AAC/C,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,IAAI,uCAAuC,CAAC;AAC/F,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC;QAC/D,IAAI,CAAC,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACvD;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,CAAC;KAC1C;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,wBAAwB,CAAC,SAAS,EAAE,CAAC;QAC1C,IAAI,CAAC,wBAAwB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,IAAG;YAC/C,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;gBAC9C,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;aAChD;AACD,YAAA,IAAI,KAAK,CAAC,OAAO,IAAI,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,YAAY,CAAC,MAAM,EAAE;gBAC3F,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;aACnD;YACD,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE;gBACtD,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;aACzD;AACH,SAAC,CAAC,CAAC;KACJ;AApDU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,qDAmBhB,gBAAgB,EAAA,EAAA,EAAA,KAAA,EAAAV,IAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAnBf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAYf,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,UAAU,ECpFvB,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,4sEA0DA,EDHI,MAAA,EAAA,CAAA,4WAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,eAAe,EACf,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,gBAAgB,EAEhB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,EACb,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAU,EACV,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAI,EACJ,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,eAAe,EACf,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,EAEb,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mBAAmB,EACnB,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,YAAY,EACZ,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,EAAA,wBAAwB,EACxB,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,2EACP,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAGE,eAAe,EAAA,UAAA,EAAA,CAAA;kBAxB3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,mBAGN,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,eAAe;wBACf,gBAAgB;wBAChB,SAAS;wBACT,aAAa;wBACb,eAAe;wBACf,UAAU;wBACV,IAAI;wBACJ,eAAe;wBACf,aAAa;wBACb,gBAAgB;wBAChB,mBAAmB;wBACnB,YAAY;wBACZ,wBAAwB;wBACxB,OAAO;wBACP,OAAO;AACR,qBAAA,EAAA,QAAA,EAAA,4sEAAA,EAAA,MAAA,EAAA,CAAA,4WAAA,CAAA,EAAA,CAAA;;0BAqBE,MAAM;2BAAC,gBAAgB,CAAA;2EAPsB,OAAO,EAAA,CAAA;sBAAtD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;MEpE5B,gBAAgB,CAAA;AAE3B,IAAA,WAAA,CACmB,qBAAgD,EAAA;QAAhD,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAA2B;KAElE;AAEM,IAAA,MAAM,MAAM,GAAA;AACjB,QAAA,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;KAC5C;8GATU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAR,IAAA,CAAA,yBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EChB7B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,gHAMA,EDQa,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,2IAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAE9B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAR5B,SAAS;+BACE,eAAe,EAAA,eAAA,EAGR,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EAAA,OAAA,EACP,CAAE,eAAe,EAAE,aAAa,CAAE,EAAA,QAAA,EAAA,gHAAA,EAAA,CAAA;;;MEGhC,oBAAoB,CAAA;AAC/B,IAAA,WAAA,CAEkB,YAA0B,EAAA;QAA1B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;KAE3C;AALU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,kBAErB,YAAY,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAFX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,ECjBjC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,wHAGA,EDYa,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,2IAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAE9B,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;+BACE,mBAAmB,EAAA,eAAA,EAGZ,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EAAA,OAAA,EACP,CAAE,eAAe,EAAE,aAAa,CAAE,EAAA,QAAA,EAAA,wHAAA,EAAA,CAAA;;0BAIxC,MAAM;2BAAC,YAAY,CAAA;;;MEhBX,yBAAyB,CAAA;;IAG7B,OAAO,GAAA;KACb;8GAJU,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAzB,yBAAyB,EAAA,CAAA,CAAA,EAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,UAAU;;;MCaE,eAAe,CAAA;AAG1B,IAAA,WAAA,CAEmB,aAA4B,EAE5B,QAA2B,EAE3B,gBAAkC,EAAA;QAJlC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAE5B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAmB;QAE3B,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;KAEpD;IAEM,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,CAC/B,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,gBAAgB,CACtB,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC7C;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC/C;KACF;AAzBU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAIhB,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,aAAa,EAEb,EAAA,EAAA,KAAA,EAAA,WAAW,aAEX,gBAAgB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGARf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;0BAKI,MAAM;2BAAC,aAAa,CAAA;;0BAEpB,MAAM;2BAAC,WAAW,CAAA;;0BAElB,MAAM;2BAAC,gBAAgB,CAAA;;;ACvB5B;AAkFA;;AClFA;;AAEG;;;;"}
1
+ {"version":3,"file":"rxap-layout.mjs","sources":["../../../../../packages/angular/layout/src/lib/sidenav/sidenav-footer.directive.ts","../../../../../packages/angular/layout/src/lib/sidenav/sidenav-header.directive.ts","../../../../../packages/angular/layout/src/lib/tokens.ts","../../../../../packages/angular/layout/src/lib/footer.service.ts","../../../../../packages/angular/layout/src/lib/header.service.ts","../../../../../packages/angular/layout/src/lib/layout.service.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation-item.ts","../../../../../packages/angular/layout/src/lib/navigation.service.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation-item/navigation-item.component.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation-item/navigation-item.component.html","../../../../../packages/angular/layout/src/lib/navigation/navigation.component.ts","../../../../../packages/angular/layout/src/lib/navigation/navigation.component.html","../../../../../packages/angular/layout/src/lib/sidenav/sidenav.component.ts","../../../../../packages/angular/layout/src/lib/sidenav/sidenav.component.html","../../../../../packages/angular/layout/src/lib/release-info/release-info.component.ts","../../../../../packages/angular/layout/src/lib/release-info/release-info.component.html","../../../../../packages/angular/layout/src/lib/navigation-progress-bar/navigation-progress-bar.component.ts","../../../../../packages/angular/layout/src/lib/navigation-progress-bar/navigation-progress-bar.component.html","../../../../../packages/angular/layout/src/lib/footer/footer.component.ts","../../../../../packages/angular/layout/src/lib/footer/footer.component.html","../../../../../packages/angular/layout/src/lib/header/header.component.ts","../../../../../packages/angular/layout/src/lib/header/header.component.html","../../../../../packages/angular/layout/src/lib/base-layout/base-layout.component.ts","../../../../../packages/angular/layout/src/lib/base-layout/base-layout.component.html","../../../../../packages/angular/layout/src/lib/minimal-layout/minimal-layout.component.ts","../../../../../packages/angular/layout/src/lib/minimal-layout/minimal-layout.component.html","../../../../../packages/angular/layout/src/lib/logo.service.ts","../../../../../packages/angular/layout/src/lib/layout/layout.component.ts","../../../../../packages/angular/layout/src/lib/layout/layout.component.html","../../../../../packages/angular/layout/src/lib/header/header.directive.ts","../../../../../packages/angular/layout/src/lib/footer/footer.directive.ts","../../../../../packages/angular/layout/src/lib/default-header/user-profile-icon/user-profile-icon.component.ts","../../../../../packages/angular/layout/src/lib/default-header/user-profile-icon/user-profile-icon.component.html","../../../../../packages/angular/layout/src/lib/default-header/sidenav-toggle-button/sidenav-toggle-button.component.ts","../../../../../packages/angular/layout/src/lib/default-header/sidenav-toggle-button/sidenav-toggle-button.component.html","../../../../../packages/angular/layout/src/lib/default-header/settings-button/settings-button.component.ts","../../../../../packages/angular/layout/src/lib/default-header/settings-button/settings-button.component.html","../../../../../packages/angular/layout/src/lib/external-apps.service.ts","../../../../../packages/angular/layout/src/lib/default-header/apps-button/apps-button.component.ts","../../../../../packages/angular/layout/src/lib/default-header/apps-button/apps-button.component.html","../../../../../packages/angular/layout/src/lib/default-header/default-header.component.ts","../../../../../packages/angular/layout/src/lib/default-header/default-header.component.html","../../../../../packages/angular/layout/src/lib/provide.ts","../../../../../packages/angular/layout/src/index.ts","../../../../../packages/angular/layout/src/rxap-layout.ts"],"sourcesContent":["import {\n Directive,\n Inject,\n TemplateRef,\n} from '@angular/core';\n\n@Directive({\n selector: '[rxapSidenavFooter]',\n standalone: true,\n})\nexport class SidenavFooterDirective {\n constructor(\n @Inject(TemplateRef)\n public readonly template: TemplateRef<void>,\n ) {\n }\n}\n","import {\n Directive,\n Inject,\n TemplateRef,\n} from '@angular/core';\n\n@Directive({\n selector: '[rxapSidenavHeader]',\n standalone: true,\n})\nexport class SidenavHeaderDirective {\n constructor(\n @Inject(TemplateRef)\n public readonly template: TemplateRef<void>,\n ) {\n }\n}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { InjectionToken } from '@angular/core';\nimport { LogoConfig } from '@rxap/config';\nimport { MethodWithParameters } from '@rxap/pattern';\nimport { NavigationWithInserts } from './navigation/navigation-item';\nimport {\n ExternalApp,\n ExtractUsernameFromProfileFn,\n ReleaseInfoModule,\n SettingsMenuItem,\n SettingsMenuItemComponent,\n} from './types';\n\nexport const RXAP_NAVIGATION_CONFIG = new InjectionToken<NavigationWithInserts | (() => NavigationWithInserts)>(\n 'rxap/layout/navigation-config');\nexport const RXAP_NAVIGATION_CONFIG_INSERTS = new InjectionToken<Record<string, NavigationWithInserts>>(\n 'rxap/layout/navigation-config-inserts');\n\nexport const RXAP_FOOTER_COMPONENT = new InjectionToken<ComponentType<unknown>>('rxap/layout/footer-component');\nexport const RXAP_HEADER_COMPONENT = new InjectionToken<ComponentType<unknown>>('rxap/layout/header-component');\nexport const RXAP_LOGO_CONFIG = new InjectionToken<LogoConfig>('rxap/layout/logo-config');\nexport const RXAP_LAYOUT_APPS_GRID = new InjectionToken('rxap/layout/apps-grid');\n\nexport const RXAP_EXTERNAL_APP_FILTER = new InjectionToken<MethodWithParameters<ExternalApp[], ExternalApp[]>>('rxap/layout/app-config-filter');\nexport const EXTRACT_USERNAME_FROM_PROFILE = new InjectionToken<ExtractUsernameFromProfileFn>(\n 'extract-username-from-profile',\n {\n providedIn: 'root',\n factory: () => (profile: any) => (\n profile ? profile.username ?? profile.email ?? profile.name : null\n ) ?? null,\n },\n);\n\nexport const RXAP_EXTERNAL_APP = new InjectionToken<ExternalApp>('rxap/layout/external-app');\n\nexport const RXAP_RELEASE_INFO_MODULE = new InjectionToken<ReleaseInfoModule>('rxap/layout/release-info-module');\n\nexport const RXAP_SETTINGS_MENU_ITEM_COMPONENT = new InjectionToken<SettingsMenuItemComponent>('rxap/layout/settings-menu-item-component');\n\nexport const RXAP_SETTINGS_MENU_ITEM = new InjectionToken<SettingsMenuItem>('rxap/layout/settings-menu-item');\n","import {\n ComponentPortal,\n Portal,\n} from '@angular/cdk/portal';\nimport {\n computed,\n inject,\n Injectable,\n isDevMode,\n signal,\n} from '@angular/core';\nimport { RXAP_FOOTER_COMPONENT } from './tokens';\nimport { coerceArray } from '@rxap/utilities';\n\n@Injectable()\nexport class FooterService {\n\n private readonly components = coerceArray(inject(RXAP_FOOTER_COMPONENT, { optional: true }));\n\n /**\n * Represents an array of `Portal` objects with unknown type.\n */\n public readonly portals = signal<Array<Portal<unknown>>>(this.components.map(component => new ComponentPortal(component)));\n\n\n /**\n * Computes the count of portals.\n *\n * @returns {number} The count of portals.\n */\n public readonly portalCount = computed(() => this.portals().length);\n\n /**\n * Adds a portal to the list of portals.\n *\n * @param {Portal<unknown>} portal - The portal to be added.\n *\n * @return {void}\n */\n public pushPortal(portal: Portal<unknown>) {\n if (!this.portals().includes(portal)) {\n this.portals.update(portals => [ ...portals, portal ]);\n } else {\n if (isDevMode()) {\n console.warn('Can not add the same portal multiple times');\n }\n }\n }\n\n /**\n * Removes a portal from the list of portals.\n *\n * @param {Portal<unknown>} portal - The portal to be removed.\n * @return {void}\n */\n public removePortal(portal: Portal<unknown>) {\n const index = this.portals().indexOf(portal);\n if (index !== -1) {\n this.portals.update(portals => {\n portals.splice(index, 1);\n return portals.slice();\n });\n }\n }\n\n}\n","import {\n ComponentPortal,\n Portal,\n} from '@angular/cdk/portal';\nimport {\n computed,\n inject,\n Injectable,\n isDevMode,\n signal,\n} from '@angular/core';\nimport { RXAP_HEADER_COMPONENT } from './tokens';\nimport { coerceArray } from '@rxap/utilities';\n\n@Injectable()\nexport class HeaderService {\n\n private readonly components = coerceArray(inject(RXAP_HEADER_COMPONENT, { optional: true }));\n\n /**\n * Represents an array of `Portal` objects with unknown type.\n *\n * @typedef {Array<Portal<unknown>>} SignalPortals\n */\n public readonly portals = signal<Array<Portal<unknown>>>(this.components.map(component => new ComponentPortal(component)));\n\n\n /**\n * Computes the count of portals.\n *\n * @returns {number} The count of portals.\n */\n public readonly portalCount = computed(() => this.portals().length);\n\n\n /**\n * Adds a portal to the list of portals.\n *\n * @param {Portal<unknown>} portal - The portal to be added.\n *\n * @return {void}\n */\n public pushPortal(portal: Portal<unknown>) {\n if (!this.portals().includes(portal)) {\n this.portals.update(portals => [ ...portals, portal ]);\n } else {\n if (isDevMode()) {\n console.warn('Can not add the same portal multiple times');\n }\n }\n }\n\n /**\n * Removes a portal from the list of portals.\n *\n * @param {Portal<unknown>} portal - The portal to be removed.\n * @return {void}\n */\n public removePortal(portal: Portal<unknown>) {\n const index = this.portals().indexOf(portal);\n if (index !== -1) {\n this.portals.update(portals => {\n portals.splice(index, 1);\n return portals.slice();\n });\n }\n }\n\n}\n","import { MediaMatcher } from '@angular/cdk/layout';\nimport {\n computed,\n effect,\n inject,\n Injectable,\n isDevMode,\n signal,\n Signal,\n WritableSignal,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MatDrawerMode } from '@angular/material/sidenav';\nimport { ConfigService } from '@rxap/config';\nimport { ObserveCurrentThemeDensity } from '@rxap/ngx-theme';\nimport { Observable } from 'rxjs';\nimport { FooterService } from './footer.service';\nimport { HeaderService } from './header.service';\n\n@Injectable()\nexport class LayoutService {\n\n public readonly opened: WritableSignal<boolean>;\n public readonly mode: WritableSignal<MatDrawerMode>;\n public readonly pinned: WritableSignal<boolean>;\n public readonly collapsable: WritableSignal<boolean>;\n public readonly fixedBottomGap: Signal<number>;\n public readonly fixedTopGap: Signal<number>;\n public readonly currentThemeDensity = toSignal(ObserveCurrentThemeDensity());\n public readonly isMobile: Signal<boolean>;\n public readonly fixedInViewport: WritableSignal<boolean>;\n public readonly collapsed: Signal<boolean>;\n\n private readonly footerService = inject(FooterService);\n private readonly headerService = inject(HeaderService);\n private readonly config = inject(ConfigService);\n private readonly mediaMatcher = inject(MediaMatcher);\n\n constructor() {\n const mobileQuery = this.mediaMatcher.matchMedia('(max-width: 959px)');\n this.isMobile = toSignal(new Observable<boolean>(subscriber => {\n mobileQuery.addEventListener('change', (event) => {\n subscriber.next(event.matches);\n });\n }), { initialValue: mobileQuery.matches });\n\n const initialCollapsable = this.config.get('navigation.collapsable', true);\n const collapsable = initialCollapsable && !this.isMobile();\n const pinned = this.config.get('navigation.pinned', false);\n const mode = this.config.get('navigation.mode', pinned || !collapsable ? 'side' : 'over');\n const opened = this.config.get('navigation.opened', (!collapsable || pinned) && !this.isMobile());\n const fixedInViewport = this.config.get('navigation.fixedInViewport', true);\n\n if (isDevMode()) {\n console.log({\n initialCollapsable,\n collapsable,\n pinned,\n mode,\n opened,\n fixedInViewport,\n });\n }\n\n this.opened = signal(opened);\n this.mode = signal(mode);\n this.pinned = signal(pinned);\n this.collapsable = signal(collapsable);\n this.fixedInViewport = signal(fixedInViewport);\n this.collapsed = computed(() => this.collapsable() && !this.opened() && !this.pinned());\n\n this.fixedBottomGap = computed(() => {\n const footerPortalCount = this.footerService.portalCount();\n const currentThemeDensity = this.currentThemeDensity() ?? 0;\n return footerPortalCount * (currentThemeDensity * 4 + 64);\n });\n\n this.fixedTopGap = computed(() => {\n const headerPortalCount = this.headerService.portalCount();\n const currentThemeDensity = this.currentThemeDensity() ?? 0;\n return headerPortalCount * (currentThemeDensity * 4 + 64);\n });\n\n if (initialCollapsable) {\n effect(() => {\n const isMobile = this.isMobile();\n this.collapsable.set(!isMobile);\n if (!isMobile && !this.pinned()) {\n this.opened.set(false);\n }\n }, { allowSignalWrites: true });\n }\n effect(() => {\n if (this.pinned()) {\n this.mode.set('side');\n this.opened.set(true);\n } else {\n this.mode.set('over');\n this.opened.set(false);\n }\n }, { allowSignalWrites: true });\n }\n\n public toggleOpened() {\n this.opened.update(opened => !opened);\n }\n\n public togglePinned() {\n this.pinned.update(pinned => !pinned);\n }\n\n openSidenav() {\n this.opened.set(true);\n }\n\n closeSidenav() {\n this.opened.set(false);\n }\n}\n","import { IconConfig } from '@rxap/utilities';\nimport {\n AbstractType,\n InjectionToken,\n Type,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport type Navigation = Array<NavigationItem | NavigationDividerItem>;\n\nexport type NavigationWithInserts = Array<\n | NavigationItem<NavigationWithInserts>\n | NavigationDividerItem\n | NavigationInsertItem\n>;\n\nexport interface NavigationDividerItem {\n divider: boolean;\n title?: string;\n}\n\nexport function IsNavigationDividerItem(\n item: any,\n): item is NavigationDividerItem {\n return !!item && !!item['divider'];\n}\n\nexport interface NavigationInsertItem {\n insert: string;\n}\n\nexport function IsNavigationInsertItem(\n item: any,\n): item is NavigationInsertItem {\n return !!item && !!item['insert'];\n}\n\nexport interface NavigationStatus {\n isVisible(\n navigationItem: NavigationItem,\n ): Observable<boolean> | Promise<boolean> | boolean;\n}\n\nexport interface NavigationItem<Children = Navigation> extends Record<string, unknown> {\n routerLink: string[];\n label: string;\n children?: Children;\n icon?: IconConfig;\n status?: Array<\n | Type<NavigationStatus>\n | InjectionToken<NavigationStatus>\n | AbstractType<NavigationStatus>\n >;\n}\n\nexport function IsNavigationItem(item: any): item is NavigationItem {\n return (\n !!item && !!item['routerLink'] && !!item['label']\n );\n}\n","import {\n inject,\n Inject,\n Injectable,\n Injector,\n INJECTOR,\n Optional,\n} from '@angular/core';\nimport {\n combineLatest,\n from,\n Observable,\n of,\n ReplaySubject,\n} from 'rxjs';\nimport {\n catchError,\n map,\n switchMap,\n} from 'rxjs/operators';\nimport {\n IsNavigationDividerItem,\n IsNavigationInsertItem,\n IsNavigationItem,\n Navigation,\n NavigationDividerItem,\n NavigationItem,\n NavigationWithInserts,\n} from './navigation/navigation-item';\nimport {\n RXAP_NAVIGATION_CONFIG,\n RXAP_NAVIGATION_CONFIG_INSERTS,\n} from './tokens';\n\n@Injectable()\nexport class NavigationService {\n public readonly config$: Observable<Navigation>;\n\n private inserts = new Map<string, NavigationWithInserts>();\n\n private readonly navigation: NavigationWithInserts;\n\n private readonly navigation$ = new ReplaySubject<Navigation>(1);\n\n private readonly injector: Injector = inject(INJECTOR);\n\n constructor(\n @Inject(RXAP_NAVIGATION_CONFIG)\n navigation: any,\n @Optional()\n @Inject(RXAP_NAVIGATION_CONFIG_INSERTS)\n inserts: any | null = null,\n ) {\n if (typeof navigation === 'function') {\n this.navigation = navigation();\n } else {\n this.navigation = navigation;\n }\n if (inserts) {\n Object.entries(inserts).forEach(([ id, insert ]: [ string, any ]) =>\n this.insert(id, insert, false),\n );\n }\n this.updateNavigation();\n this.config$ = this.navigation$.pipe(\n switchMap((navigationWithoutStatusCheck) =>\n this.checkNavigationStatusProviders(navigationWithoutStatusCheck),\n ),\n );\n }\n\n /**\n * @deprecated use add instead\n * @param id\n * @param value\n * @param update\n */\n public insert(\n id: string,\n value: NavigationWithInserts,\n update = true,\n ): void {\n this.add(id, value, update);\n }\n\n public add(\n id: string,\n value: NavigationWithInserts,\n update = true,\n ): void {\n this.inserts.set(id, value);\n if (update) {\n this.updateNavigation();\n }\n }\n\n public has(id: string): boolean {\n return this.inserts.has(id);\n }\n\n public get(id: string): NavigationWithInserts | undefined {\n return this.inserts.get(id);\n }\n\n public remove(id: string, update = true): void {\n this.inserts.delete(id);\n if (update) {\n this.updateNavigation();\n }\n }\n\n public updateNavigation(): void {\n this.navigation$.next(this.replaceInserts(this.navigation));\n }\n\n /**\n * @internal\n * @param navigationItem\n */\n public checkNavigationItemStatusProviders(\n navigationItem: NavigationItem | NavigationDividerItem,\n ): Observable<NavigationItem | NavigationDividerItem | null> {\n if (IsNavigationDividerItem(navigationItem) || !navigationItem.status) {\n return of(navigationItem);\n }\n const isVisibleArray$: Array<Observable<boolean>> = navigationItem\n .status\n .map((statusToken) => this.injector.get(\n statusToken))\n .map((status) => {\n const isVisible = status.isVisible(\n navigationItem);\n if (typeof isVisible === 'boolean') {\n return of(isVisible);\n } else {\n return from(isVisible);\n }\n })\n .map(isVisible$ => isVisible$.pipe(catchError(e => {\n console.error(`isVisible method failed: ${ e.message }`);\n return of(false);\n })));\n // TODO : dont wait for all status services to complete, but cancel waiting if one returns false\n return combineLatest(isVisibleArray$).pipe(\n map((isVisibleArray) =>\n isVisibleArray.reduce((acc, isVisible) => acc && isVisible, true),\n ),\n map((isVisible) => (isVisible ? navigationItem : null)),\n switchMap((navigationItemOrNull) => {\n if (navigationItemOrNull) {\n if (navigationItemOrNull.children?.length) {\n return this.checkNavigationStatusProviders(\n navigationItemOrNull.children,\n ).pipe(\n map((children) => ({\n ...navigationItemOrNull,\n children,\n })),\n );\n }\n return of(navigationItemOrNull);\n }\n return of(null);\n }),\n );\n }\n\n /**\n * @internal\n * @param navigationItem\n */\n public checkNavigationStatusProviders(\n navigation: Navigation,\n ): Observable<Navigation> {\n return combineLatest(\n navigation.map((navigationItem) =>\n this.checkNavigationItemStatusProviders(navigationItem),\n ),\n ).pipe(\n map((navigationWithNullItems) => {\n const cleanNavigation: Navigation = [];\n\n for (const navigationItem of navigationWithNullItems) {\n if (navigationItem !== null) {\n cleanNavigation.push(navigationItem);\n }\n }\n\n return cleanNavigation;\n }),\n );\n }\n\n private replaceInserts(\n navigationWithInserts: NavigationWithInserts,\n ): Navigation {\n const navigation: Navigation = [];\n\n for (const navigationItem of navigationWithInserts) {\n if (IsNavigationInsertItem(navigationItem)) {\n if (this.inserts.has(navigationItem.insert)) {\n navigation.push(\n ...this.replaceInserts(this.inserts.get(navigationItem.insert)!),\n );\n }\n } else if (IsNavigationItem(navigationItem)) {\n navigation.push({\n ...navigationItem,\n children: this.replaceInserts(navigationItem.children ?? []),\n });\n } else if (IsNavigationDividerItem(navigationItem)) {\n navigation.push(navigationItem);\n }\n }\n\n return navigation;\n }\n}\n","import {\n animate,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport {\n NgClass,\n NgIf,\n} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n forwardRef,\n inject,\n input,\n OnChanges,\n OnDestroy,\n Renderer2,\n signal,\n SimpleChanges,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n NavigationEnd,\n Router,\n RouterLink,\n RouterLinkActive,\n} from '@angular/router';\nimport { IconDirective } from '@rxap/material-directives/icon';\nimport {\n debounceTime,\n Subscription,\n} from 'rxjs';\nimport {\n filter,\n startWith,\n tap,\n} from 'rxjs/operators';\nimport { LayoutService } from '../../layout.service';\nimport {\n Navigation,\n NavigationDividerItem,\n NavigationItem,\n} from '../navigation-item';\nimport { NavigationComponent } from '../navigation.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'li[rxap-navigation-item]',\n templateUrl: './navigation-item.component.html',\n styleUrls: [ './navigation-item.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('sub-nav', [\n transition(':enter', [\n style({\n display: 'block',\n height: '0',\n overflow: 'hidden',\n }),\n animate(150, style({ height: '*' })),\n ]),\n transition(':leave', [\n style({ overflow: 'hidden' }),\n animate(300, style({ height: '0' })),\n style({ display: 'none' }),\n ]),\n ]),\n ],\n standalone: true,\n imports: [\n RouterLinkActive,\n RouterLink,\n NgIf,\n MatRippleModule,\n MatIconModule,\n IconDirective,\n MatDividerModule,\n forwardRef(() => NavigationComponent),\n NgClass,\n ]\n})\nexport class NavigationItemComponent\n implements OnChanges, OnDestroy {\n\n public readonly level = input(0);\n\n public children: Navigation | null = null;\n\n public readonly item = input.required<NavigationItem>();\n public readonly active = signal(false);\n\n public readonly itemClasses = computed(() => {\n let classes = `level-${ this.level() * 4 }`;\n if (this.collapsed()) {\n classes += ' invisible';\n }\n return classes;\n });\n\n private readonly layoutService = inject(LayoutService);\n\n public readonly collapsed = computed(() => this.layoutService.collapsed());\n\n private readonly _subscription = new Subscription();\n\n private readonly router = inject(Router);\n private readonly elementRef = inject(ElementRef);\n private readonly renderer = inject(Renderer2);\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes['item']) {\n const item: NavigationItem = changes['item'].currentValue;\n this.children =\n item.children && item.children.length ? item.children : null;\n }\n }\n\n public ngAfterViewInit() {\n this._subscription.add(\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n debounceTime(100),\n startWith(true),\n tap(() => {\n let isActive = true;\n const urlParts = this.router.url.split('/');\n if (urlParts[0] === '') {\n urlParts[0] = '/';\n }\n for (let i = 0; i < this.item().routerLink.length; i++) {\n if (urlParts[i] !== this.item().routerLink[i]) {\n isActive = false;\n break;\n }\n }\n this.active.set(isActive);\n if (isActive) {\n this.renderer.addClass(this.elementRef.nativeElement, 'active');\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, 'active');\n }\n }),\n )\n .subscribe(),\n );\n }\n\n public ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n // region type save item property\n\n // required to check the type of the item property in the ngFor loop\n\n public isNavigationDividerItem(\n item: NavigationItem | NavigationDividerItem,\n ): item is NavigationDividerItem {\n return (item as any)['divider'];\n }\n\n public isNavigationItem(\n item: NavigationItem | NavigationDividerItem,\n ): item is NavigationItem {\n return !this.isNavigationDividerItem(item);\n }\n\n public asNavigationItem(\n item: NavigationItem | NavigationDividerItem,\n ): NavigationItem {\n if (!this.isNavigationItem(item)) {\n throw new Error('The item is not a NavigationItem');\n }\n return item;\n }\n\n // endregion\n}\n","<div [ngClass]=\"{\n 'border-l-4 text-accent-400 border-accent-600': active(),\n }\">\n <a [routerLink]=\"item().routerLink\"\n class=\"h-12 pl-4 pr-5 flex flex-row justify-between items-center gap-x-4\"\n matRipple\n routerLinkActive\n\n >\n <span\n [ngClass]=\"itemClasses()\"\n class=\"grow whitespace-nowrap\"\n >\n {{ item().label }}\n </span>\n <mat-icon *ngIf=\"item().icon\" [rxapIcon]=\"item().icon\"></mat-icon>\n </a>\n\n <ng-container *ngIf=\"item().children?.length && active()\">\n\n <mat-divider></mat-divider>\n\n <ul [@sub-nav]\n [items]=\"children ?? []\"\n [level]=\"level() + 1\"\n rxap-navigation\n >\n </ul>\n\n <mat-divider></mat-divider>\n\n </ng-container>\n</div>\n","import {\n AsyncPipe,\n NgFor,\n NgIf,\n} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n inject,\n INJECTOR,\n input,\n OnInit,\n runInInjectionContext,\n ViewEncapsulation,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { LayoutService } from '../layout.service';\nimport { NavigationService } from '../navigation.service';\nimport {\n Navigation,\n NavigationDividerItem,\n NavigationItem,\n} from './navigation-item';\nimport { NavigationItemComponent } from './navigation-item/navigation-item.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'ul[rxap-navigation]',\n templateUrl: './navigation.component.html',\n styleUrls: [ './navigation.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'list-none dark:text-neutral-400 text-neutral-700',\n },\n imports: [\n NgFor,\n NgIf,\n MatDividerModule,\n forwardRef(() => NavigationItemComponent),\n AsyncPipe,\n ],\n})\nexport class NavigationComponent implements OnInit {\n\n public items = input<Navigation>();\n\n public level = input(0);\n\n private readonly navigationService = inject(NavigationService);\n\n private readonly layoutService = inject(LayoutService);\n\n public readonly collapsed = computed(() => this.layoutService.collapsed());\n\n public navigationItems = computed(() => this.items() ?? []);\n\n public readonly root = input(false);\n\n private readonly injector = inject(INJECTOR);\n\n public ngOnInit(): void {\n if (this.root()) {\n runInInjectionContext(this.injector, () => {\n this.navigationItems = toSignal(this.navigationService.config$, { initialValue: [] });\n });\n }\n }\n // region type save item property\n\n // required to check the type of the item property in the ngFor loop\n\n public isNavigationDividerItem(\n item: NavigationItem | NavigationDividerItem,\n ): item is NavigationDividerItem {\n return (item as any)['divider'];\n }\n\n public isNavigationItem(\n item: NavigationItem | NavigationDividerItem,\n ): item is NavigationItem {\n return !this.isNavigationDividerItem(item);\n }\n\n public asNavigationItem(\n item: NavigationItem | NavigationDividerItem,\n ): NavigationItem {\n if (!this.isNavigationItem(item)) {\n throw new Error('The item is not a NavigationItem');\n }\n return item;\n }\n\n // endregion\n}\n","<ng-template [ngForOf]=\"navigationItems()\" let-item ngFor>\n <ng-template [ngIf]=\"isNavigationDividerItem(item)\">\n <mat-divider></mat-divider>\n <div *ngIf=\"!collapsed() && item.title\" class=\"pl-5 h-6\">\n {{item.title}}\n </div>\n </ng-template>\n <ng-template [ngIf]=\"isNavigationItem(item)\">\n <li [item]=\"asNavigationItem(item)\"\n [level]=\"level()\"\n class=\"dark:hover:text-white hover:text-black\"\n rxap-navigation-item>\n </li>\n </ng-template>\n</ng-template>\n","import {\n NgClass,\n NgIf,\n NgStyle,\n NgTemplateOutlet,\n} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n inject,\n Signal,\n viewChild,\n} from '@angular/core';\nimport {\n MatButton,\n MatIconButton,\n} from '@angular/material/button';\nimport { MatDivider } from '@angular/material/divider';\nimport { MatIcon } from '@angular/material/icon';\nimport {\n MatDrawerMode,\n MatSidenav,\n MatSidenavContainer,\n MatSidenavContent,\n} from '@angular/material/sidenav';\nimport { RouterOutlet } from '@angular/router';\nimport { LayoutService } from '../layout.service';\nimport { NavigationComponent } from '../navigation/navigation.component';\nimport { SidenavFooterDirective } from './sidenav-footer.directive';\nimport { SidenavHeaderDirective } from './sidenav-header.directive';\n\n@Component({\n selector: 'rxap-sidenav',\n templateUrl: './sidenav.component.html',\n styleUrls: [ './sidenav.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatIcon,\n MatIconButton,\n MatSidenav,\n MatSidenavContainer,\n MatSidenavContent,\n NavigationComponent,\n NgIf,\n RouterOutlet,\n NgClass,\n NgStyle,\n MatDivider,\n NgTemplateOutlet,\n MatButton,\n ],\n})\nexport class SidenavComponent {\n\n private readonly layoutService = inject(LayoutService);\n\n\n private readonly sidenav = viewChild(MatSidenav);\n\n public readonly sidenavMode: Signal<MatDrawerMode> = computed(() => this.layoutService.mode());\n public readonly fixedBottomGap: Signal<number> = computed(() => this.layoutService.fixedBottomGap());\n public readonly fixedTopGap: Signal<number> = computed(() => this.layoutService.fixedTopGap());\n public readonly fixedInViewport: Signal<boolean> = computed(() => this.layoutService.fixedInViewport());\n public readonly pinned: Signal<boolean> = computed(() => this.layoutService.pinned());\n public readonly collapsed: Signal<boolean> = computed(() => this.layoutService.collapsed());\n public readonly collapsable: Signal<boolean> = computed(() => this.layoutService.collapsable());\n public readonly opened: Signal<boolean> = computed(() => this.layoutService.opened());\n public readonly sidenavFooterDirective = contentChild(SidenavFooterDirective);\n public readonly sidenavHeaderDirective = contentChild(SidenavHeaderDirective);\n\n togglePinned() {\n this.layoutService.togglePinned();\n }\n\n async openSidenav() {\n await this.sidenav()?.open();\n this.layoutService.openSidenav();\n }\n\n async closeSidenav() {\n await this.sidenav()?.close();\n this.layoutService.closeSidenav();\n }\n\n}\n","<mat-sidenav-container [ngStyle]=\"{\n 'padding-top.px': fixedTopGap(),\n 'padding-bottom.px': fixedBottomGap(),\n }\" class=\"h-full\">\n <mat-sidenav\n [fixedBottomGap]=\"fixedBottomGap()\"\n [fixedInViewport]=\"fixedInViewport()\"\n [fixedTopGap]=\"fixedTopGap()\"\n [mode]=\"sidenavMode()\"\n [ngClass]=\"{ collapsable: collapsable() }\"\n [opened]=\"opened()\"\n >\n <div (mouseleave)=\"collapsable() && !pinned() && closeSidenav()\"\n class=\"h-full py-2 flex flex-col items-center gap-y-5 justify-items-stretch\">\n\n <div (click)=\"togglePinned()\" *ngIf=\"collapsable()\"\n class=\"pl-2 self-stretch grow-0 flex flex-row justify-between items-center\">\n <span class=\"text-lg\" i18n>Navigation</span>\n <div class=\"flex flex-row items-center justify-center\" style=\"width: 64px\">\n <button mat-icon-button>\n <mat-icon *ngIf=\"!pinned()\">radio_button_unchecked</mat-icon>\n <mat-icon *ngIf=\"pinned()\">radio_button_checked</mat-icon>\n </button>\n </div>\n </div>\n\n @if (sidenavHeaderDirective()?.template; as template) {\n <div [ngClass]=\"{ hidden: collapsed() }\" class=\"header grow-0\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </div>\n <mat-divider [ngClass]=\"{ hidden: collapsed() }\" class=\"grow-0\"></mat-divider>\n }\n\n <ul\n (mouseenter)=\"collapsable() && !pinned() && openSidenav()\"\n class=\"grow self-stretch\"\n [root]=\"true\"\n rxap-navigation\n >\n </ul>\n\n @if (sidenavFooterDirective()?.template; as template) {\n <mat-divider [ngClass]=\"{ hidden: collapsed() }\" class=\"grow-0\"></mat-divider>\n <div [ngClass]=\"{ hidden: collapsed() }\" class=\"footer grow-0\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </div>\n }\n </div>\n </mat-sidenav>\n <mat-sidenav-content [ngClass]=\"{ 'ml-16': collapsable() }\" class=\"p-4\">\n <ng-content></ng-content>\n </mat-sidenav-content>\n</mat-sidenav-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n} from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimport { MatDialog } from '@angular/material/dialog';\nimport {\n DetermineReleaseName,\n EnvironmentComponent,\n RXAP_ENVIRONMENT,\n} from '@rxap/environment';\nimport { RXAP_RELEASE_INFO_MODULE } from '../tokens';\nimport { coerceArray } from '@rxap/utilities';\n\n@Component({\n selector: 'rxap-release-info',\n standalone: true,\n imports: [\n MatButton,\n ],\n templateUrl: './release-info.component.html',\n styleUrl: './release-info.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ReleaseInfoComponent {\n\n public readonly modules = coerceArray(inject(RXAP_RELEASE_INFO_MODULE, { optional: true }));\n public readonly release = DetermineReleaseName(inject(RXAP_ENVIRONMENT));\n\n private readonly dialog = inject(MatDialog);\n\n openEnvironmentInfo() {\n this.dialog.open(EnvironmentComponent, {\n closeOnNavigation: true,\n });\n }\n\n}\n","<div class=\"flex flex-col gap-2 w-full justify-center\">\n <button (click)=\"openEnvironmentInfo()\" mat-button>{{ release }}</button>\n @if (modules.length) {\n <table class=\"table-auto border-separate border-spacing-2 bg-white dark:bg-slate-800 text-sm shadow-sm\">\n <thead class=\"bg-slate-50 dark:bg-slate-700\">\n <th class=\"text-sm border-slate-300 dark:border-slate-600 text-slate-900 dark:text-slate-200 border p-2\">Module</th>\n <th class=\"text-sm border-slate-300 dark:border-slate-600 text-slate-900 dark:text-slate-200 border p-2\">Version</th>\n <th class=\"text-sm border-slate-300 dark:border-slate-600 text-slate-900 dark:text-slate-200 border p-2\">Hash</th>\n </thead>\n <tbody>\n @for (module of modules; track module.name) {\n <tr>\n <th class=\"text-sm border border-slate-300 dark:border-slate-700 text-slate-500 dark:text-slate-400 py-2 px-4\">{{ module.name }}</th>\n <td class=\"text-sm border border-slate-300 dark:border-slate-700 text-slate-500 dark:text-slate-400 p-2\">{{ module.version }}</td>\n <td class=\"text-sm border border-slate-300 dark:border-slate-700 text-slate-500 dark:text-slate-400 p-2\">{{ module.hash }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport {\n NavigationCancel,\n NavigationEnd,\n NavigationStart,\n Router,\n} from '@angular/router';\nimport {\n filter,\n map,\n} from 'rxjs/operators';\n\n@Component({\n selector: 'rxap-navigation-progress-bar',\n templateUrl: './navigation-progress-bar.component.html',\n styleUrls: [ './navigation-progress-bar.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatProgressBar,\n ],\n})\nexport class NavigationProgressBarComponent {\n\n public readonly router = inject(Router);\n\n public readonly navigating = toSignal(this.router.events.pipe(\n filter(\n event =>\n event instanceof NavigationStart ||\n event instanceof NavigationEnd ||\n event instanceof NavigationCancel,\n ),\n map(event => event instanceof NavigationStart),\n ), { initialValue: true });\n\n}\n","@if (navigating()) {\n<mat-progress-bar color=\"accent\" mode=\"indeterminate\"></mat-progress-bar>\n}\n","import { PortalModule } from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n} from '@angular/core';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { FooterService } from '../footer.service';\n\n@Component({\n selector: 'rxap-footer',\n templateUrl: './footer.component.html',\n styleUrls: [ './footer.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ MatToolbarModule, PortalModule ],\n})\nexport class FooterComponent {\n\n private readonly footerService = inject(FooterService);\n\n public readonly portals = computed(() => this.footerService.portals());\n public readonly hasPortals = computed(() => this.portals().length > 0);\n\n}\n","@if (hasPortals()) {\n <mat-toolbar class=\"mat-elevation-z1\">\n @for (portal of portals(); track portal) {\n <mat-toolbar-row>\n <ng-template [cdkPortalOutlet]=\"portal\"></ng-template>\n </mat-toolbar-row>\n }\n </mat-toolbar>\n}\n","import { CdkPortalOutlet } from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n} from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport {\n MatToolbar,\n MatToolbarRow,\n} from '@angular/material/toolbar';\nimport { HeaderService } from '../header.service';\n\n@Component({\n selector: 'rxap-header',\n templateUrl: './header.component.html',\n styleUrls: [ './header.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatToolbar,\n MatToolbarRow,\n CdkPortalOutlet,\n ],\n})\nexport class HeaderComponent {\n\n public readonly color = input<ThemePalette>();\n\n private readonly headerService = inject(HeaderService);\n\n public readonly portals = computed(() => this.headerService.portals());\n public readonly hasPortals = computed(() => this.portals().length > 0);\n\n}\n","@if (hasPortals()) {\n <mat-toolbar [color]=\"color()\" class=\"mat-elevation-z1\">\n @for (portal of portals(); track portal) {\n <mat-toolbar-row>\n <ng-template [cdkPortalOutlet]=\"portal\"></ng-template>\n </mat-toolbar-row>\n }\n </mat-toolbar>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n} from '@angular/core';\nimport { FooterComponent } from '../footer/footer.component';\nimport { HeaderComponent } from '../header/header.component';\n\n@Component({\n selector: 'rxap-base-layout',\n standalone: true,\n imports: [\n HeaderComponent,\n FooterComponent,\n ],\n templateUrl: './base-layout.component.html',\n styleUrl: './base-layout.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BaseLayoutComponent {}\n","<div class=\"flex flex-col h-screen justify-between\">\n <rxap-header class=\"z-10 w-full fixed top-0\"></rxap-header>\n <ng-content></ng-content>\n <rxap-footer class=\"z-10 w-full fixed bottom-0\"></rxap-footer>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n} from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\nimport { BaseLayoutComponent } from '../base-layout/base-layout.component';\nimport { NavigationProgressBarComponent } from '../navigation-progress-bar/navigation-progress-bar.component';\n\n@Component({\n selector: 'rxap-minimal-layout',\n standalone: true,\n imports: [ RouterOutlet, BaseLayoutComponent, NavigationProgressBarComponent ],\n templateUrl: './minimal-layout.component.html',\n styleUrl: './minimal-layout.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MinimalLayoutComponent {}\n","<rxap-base-layout>\n <rxap-navigation-progress-bar></rxap-navigation-progress-bar>\n <router-outlet></router-outlet>\n</rxap-base-layout>\n","import {\n computed,\n inject,\n Injectable,\n signal,\n} from '@angular/core';\nimport { ConfigService } from '@rxap/config';\nimport { RXAP_LOGO_CONFIG } from './tokens';\n\n@Injectable()\nexport class LogoService {\n\n private readonly config = inject(ConfigService);\n public readonly logo = signal(\n inject(RXAP_LOGO_CONFIG, { optional: true }) ??\n this.config.get('logo', {\n src: 'logo.png',\n width: 192,\n }),\n );\n\n public readonly src = computed(() => this.logo().src);\n public readonly width = computed(() => this.logo().width);\n public readonly height = computed(() => this.logo().height);\n\n}\n","import {\n AsyncPipe,\n NgClass,\n NgIf,\n NgOptimizedImage,\n NgStyle,\n} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n OnDestroy,\n OnInit,\n Signal,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport {\n RouterLink,\n RouterOutlet,\n} from '@angular/router';\nimport { ThemeService } from '@rxap/ngx-theme';\nimport {\n IsThemeDensity,\n ThemeDensity,\n UserSettingsThemeService,\n} from '@rxap/ngx-user';\nimport { FooterComponent } from '../footer/footer.component';\nimport { HeaderComponent } from '../header/header.component';\nimport { NavigationProgressBarComponent } from '../navigation-progress-bar/navigation-progress-bar.component';\nimport { LogoService } from '../logo.service';\nimport { NavigationComponent } from '../navigation/navigation.component';\nimport { ReleaseInfoComponent } from '../release-info/release-info.component';\nimport { SidenavFooterDirective } from '../sidenav/sidenav-footer.directive';\nimport { SidenavComponent } from '../sidenav/sidenav.component';\n\n\n@Component({\n selector: 'rxap-layout',\n templateUrl: './layout.component.html',\n styleUrls: [ './layout.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n HeaderComponent,\n MatSidenavModule,\n AsyncPipe,\n MatIconModule,\n MatButtonModule,\n RouterLink,\n NgIf,\n FooterComponent,\n MatMenuModule,\n NgOptimizedImage,\n NavigationComponent,\n RouterOutlet,\n NgStyle,\n NgClass,\n SidenavComponent,\n ReleaseInfoComponent,\n SidenavFooterDirective,\n NavigationProgressBarComponent,\n ],\n})\nexport class LayoutComponent implements OnInit, OnDestroy {\n\n private readonly userSettingsThemeService = inject(UserSettingsThemeService);\n private readonly themeService = inject(ThemeService);\n private readonly logoService = inject(LogoService);\n public readonly logoSrc: Signal<string> = computed(() => this.logoService.src());\n public readonly logoWidth: Signal<number> = computed(() => this.logoService.width());\n public readonly logoHeight: Signal<number> = computed(() => this.logoService.height());\n\n\n ngOnDestroy() {\n this.userSettingsThemeService.stopSync();\n }\n\n ngOnInit() {\n this.userSettingsThemeService.startSync().then(() => {\n this.userSettingsThemeService.get().then(theme => {\n if (theme.preset && theme.preset !== 'default') {\n this.themeService.setTheme(theme.preset, true);\n }\n if (theme.density && IsThemeDensity(theme.density) && theme.density !== ThemeDensity.Normal) {\n this.themeService.setDensity(theme.density, true);\n }\n if (theme.typography && theme.typography !== 'default') {\n this.themeService.setTypography(theme.typography, true);\n }\n });\n });\n }\n\n}\n","<rxap-header class=\"z-10 w-full fixed top-0\"></rxap-header>\n<rxap-navigation-progress-bar></rxap-navigation-progress-bar>\n<rxap-sidenav>\n <router-outlet></router-outlet>\n <ng-template rxapSidenavFooter>\n <img\n [src]=\"logoSrc()\"\n [routerLink]=\"['/']\"\n [width]=\"logoWidth()\"\n [height]=\"logoHeight()\"\n alt=\"logo\"\n class=\"grow-0 mx-16 cursor-pointer\"\n />\n <div class=\"grow-0 px-16 mt-4\">\n <rxap-release-info></rxap-release-info>\n </div>\n </ng-template>\n</rxap-sidenav>\n<rxap-footer class=\"z-10 w-full fixed bottom-0\"></rxap-footer>\n","import { TemplatePortal } from '@angular/cdk/portal';\nimport {\n Directive,\n inject,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { HeaderService } from '../header.service';\n\n@Directive({\n selector: '[rxapHeader]',\n standalone: true,\n})\nexport class HeaderDirective implements OnInit, OnDestroy {\n private _portal?: TemplatePortal<void>;\n\n private readonly headerService = inject(HeaderService);\n private readonly template: TemplateRef<void> = inject(TemplateRef);\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n public ngOnInit() {\n this._portal = new TemplatePortal<void>(\n this.template,\n this.viewContainerRef,\n );\n this.headerService.pushPortal(this._portal);\n }\n\n public ngOnDestroy() {\n if (this._portal) {\n this.headerService.removePortal(this._portal);\n }\n }\n}\n\n\n","import { TemplatePortal } from '@angular/cdk/portal';\nimport {\n Directive,\n inject,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { FooterService } from '../footer.service';\n\n@Directive({\n selector: '[rxapFooter]',\n standalone: true,\n})\nexport class FooterDirective implements OnInit, OnDestroy {\n private _portal?: TemplatePortal<void>;\n\n private readonly footerService = inject(FooterService);\n private readonly template: TemplateRef<void> = inject(TemplateRef);\n private readonly viewContainerRef = inject(ViewContainerRef);\n\n public ngOnInit() {\n this._portal = new TemplatePortal<void>(\n this.template,\n this.viewContainerRef,\n );\n this.footerService.pushPortal(this._portal);\n }\n\n public ngOnDestroy() {\n if (this._portal) {\n this.footerService.removePortal(this._portal);\n }\n }\n}\n\n\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { PubSubService } from '@rxap/ngx-pub-sub';\nimport { EXTRACT_USERNAME_FROM_PROFILE } from '../../tokens';\nimport { ExtractUsernameFromProfileFn } from '../../types';\n\n@Component({\n selector: 'rxap-user-profile-icon',\n templateUrl: './user-profile-icon.component.html',\n styleUrls: [ './user-profile-icon.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatMenuModule,\n MatIconModule,\n ],\n})\nexport class UserProfileIconComponent {\n\n private readonly extractUsernameFromProfile: ExtractUsernameFromProfileFn = inject(EXTRACT_USERNAME_FROM_PROFILE);\n private readonly pubSubService = inject(PubSubService);\n\n public readonly profile = input.required();\n\n public readonly username = computed(() => {\n const profile = this.profile();\n if (profile) {\n return this.extractUsernameFromProfile(profile);\n }\n return null;\n });\n\n public logout() {\n this.pubSubService.publish('authentication.logout');\n }\n\n\n}\n","<button [matMenuTriggerFor]=\"menu\"\n class=\"rounded-full cursor-pointer outline-none overflow-hidden h-8 w-8 bg-center bg-no-repeat bg-cover flex flex-row justify-center items-center\">\n <mat-icon class=\"h-8 w-8 text-[32px]\" svgIcon=\"account-circle\"></mat-icon>\n</button>\n\n<mat-menu #menu=\"matMenu\" [yPosition]=\"'below'\" class=\"!max-w-none\">\n @if (this.username(); as username) {\n <button mat-menu-item>\n <span class=\"flex flex-row gap-2\">\n <mat-icon svgIcon=\"account\"></mat-icon>\n <span>{{username}}</span>\n </span>\n </button>\n }\n <button (click)=\"logout()\" mat-menu-item>\n <span class=\"flex flex-row gap-2\">\n <mat-icon svgIcon=\"logout\"></mat-icon>\n <span i18n>Logout</span>\n </span>\n </button>\n</mat-menu>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n} from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { LayoutService } from '../../layout.service';\n\n@Component({\n selector: 'rxap-sidenav-toggle-button',\n templateUrl: './sidenav-toggle-button.component.html',\n styleUrls: [ './sidenav-toggle-button.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatIcon,\n MatIconButton,\n ],\n})\nexport class SidenavToggleButtonComponent {\n\n private readonly layoutComponentService = inject(LayoutService);\n\n public readonly opened = computed(() => this.layoutComponentService.opened());\n\n public toggle() {\n this.layoutComponentService.toggleOpened();\n }\n\n}\n","<button (click)=\"toggle()\" mat-icon-button>\n @if (opened()) {\n <mat-icon>menu_open</mat-icon>\n } @else {\n <mat-icon>menu</mat-icon>\n }\n</button>\n","import {\n CdkPortalOutlet,\n ComponentPortal,\n} from '@angular/cdk/portal';\nimport {\n Component,\n inject,\n Injector,\n isDevMode,\n runInInjectionContext,\n signal,\n} from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport {\n MatMenu,\n MatMenuItem,\n MatMenuTrigger,\n} from '@angular/material/menu';\nimport { IconDirective } from '@rxap/material-directives/icon';\nimport {\n ThemeDensity,\n ThemeService,\n} from '@rxap/ngx-theme';\nimport { coerceArray } from '@rxap/utilities';\nimport {\n RXAP_SETTINGS_MENU_ITEM,\n RXAP_SETTINGS_MENU_ITEM_COMPONENT,\n} from '../../tokens';\nimport { SettingsMenuItem } from '../../types';\n\n@Component({\n selector: 'rxap-settings-button',\n standalone: true,\n templateUrl: './settings-button.component.html',\n styleUrls: [ './settings-button.component.scss' ],\n imports: [\n MatIconButton,\n MatIcon,\n MatMenu,\n MatMenuTrigger,\n MatMenuItem,\n CdkPortalOutlet,\n IconDirective,\n ],\n})\nexport class SettingsButtonComponent {\n\n public isDevMode = isDevMode();\n\n public readonly theme = inject(ThemeService);\n private readonly injector = inject(Injector);\n\n customItemComponents = signal(\n coerceArray(inject(RXAP_SETTINGS_MENU_ITEM_COMPONENT, { optional: true }))\n .map(item => new ComponentPortal(item, null, this.injector)),\n );\n\n customItems = signal(coerceArray(inject(RXAP_SETTINGS_MENU_ITEM, { optional: true })));\n\n private savePreviewDensityValue = false;\n private currentDensityValue: ThemeDensity | null = null;\n\n private savePreviewTypographyValue = false;\n private currentTypographyValue: string | null = null;\n\n public readonly availableTypographies = this.theme.getAvailableTypographies();\n private savePreviewThemeValue = false;\n\n public readonly availableThemes = this.theme.getAvailableThemes();\n private currentThemeValue: string | null = null;\n\n previewDensity(density: ThemeDensity) {\n this.theme.applyDensity(density);\n }\n\n restoreDensity() {\n this.theme.applyDensity(this.theme.density());\n }\n\n setDensity(density: ThemeDensity) {\n this.theme.setDensity(density);\n }\n\n previewTypography(typography: string) {\n this.theme.applyTypography(typography);\n }\n\n restoreTypography() {\n this.theme.applyTypography(this.theme.typography());\n }\n\n setTypography(typography: string) {\n this.theme.setTypography(typography);\n }\n\n previewTheme(theme: string) {\n this.theme.applyTheme(theme);\n }\n\n restoreTheme() {\n this.theme.applyTheme(this.theme.themeName());\n }\n\n setTheme(theme: string) {\n this.theme.setTheme(theme);\n }\n\n clickItem(item: SettingsMenuItem) {\n runInInjectionContext(this.injector, () => item.action());\n }\n}\n","<button [matMenuTriggerFor]=\"menu\" mat-icon-button>\n <mat-icon svgIcon=\"cog\"></mat-icon>\n</button>\n\n<mat-menu #menu=\"matMenu\">\n <button (click)=\"theme.toggleDarkTheme()\" mat-menu-item>\n @if (theme.darkMode()) {\n <mat-icon svgIcon=\"brightness-2\"></mat-icon>\n } @else {\n <mat-icon svgIcon=\"brightness-5\"></mat-icon>\n }\n <span i18n>Mode</span>\n </button>\n <button [matMenuTriggerFor]=\"themeMenu\" mat-menu-item>\n <mat-icon svgIcon=\"compare\"></mat-icon>\n <span i18n>Theme</span>\n </button>\n @for (item of customItems(); track item.label) {\n <button (click)=\"clickItem(item)\" mat-menu-item>\n <mat-icon [rxapIcon]=\"item.icon\"></mat-icon>\n <span>{{ item.label }}</span>\n </button>\n }\n @for (item of customItemComponents(); track item) {\n <ng-template [cdkPortalOutlet]=\"item\"></ng-template>\n }\n</mat-menu>\n\n<mat-menu #themeMenu=\"matMenu\" xPosition=\"before\">\n <button [matMenuTriggerFor]=\"themeDensityMenu\" mat-menu-item>\n <mat-icon svgIcon=\"move-resize\"></mat-icon>\n <span i18n>Density</span>\n </button>\n @if (availableTypographies?.length) {\n <button [matMenuTriggerFor]=\"themeFontMenu\" mat-menu-item>\n <mat-icon svgIcon=\"format-font\"></mat-icon>\n <span i18n>Font</span>\n </button>\n }\n @if (availableThemes?.length) {\n <button [matMenuTriggerFor]=\"themePresetMenu\" mat-menu-item>\n <mat-icon svgIcon=\"shape-outline\"></mat-icon>\n <span i18n>Preset</span>\n </button>\n }\n</mat-menu>\n\n<mat-menu #themeDensityMenu=\"matMenu\" xPosition=\"before\">\n <button (click)=\"setDensity(0)\" (mouseenter)=\"previewDensity(0)\" (mouseleave)=\"restoreDensity()\" mat-menu-item>\n <mat-icon svgIcon=\"size-l\"></mat-icon>\n <span i18n>Normal</span>\n </button>\n <button (click)=\"setDensity(-1)\" (mouseenter)=\"previewDensity(-1)\" (mouseleave)=\"restoreDensity()\" mat-menu-item>\n <mat-icon svgIcon=\"size-m\"></mat-icon>\n <span i18n>Dense</span>\n </button>\n <button (click)=\"setDensity(-2)\" (mouseenter)=\"previewDensity(-2)\" (mouseleave)=\"restoreDensity()\" mat-menu-item>\n <mat-icon svgIcon=\"size-s\"></mat-icon>\n <span i18n>Very Dense</span>\n </button>\n <button (click)=\"setDensity(-3)\" (mouseenter)=\"previewDensity(-3)\" (mouseleave)=\"restoreDensity()\" mat-menu-item>\n <mat-icon svgIcon=\"size-xs\"></mat-icon>\n <span i18n>Extreme Dense</span>\n </button>\n</mat-menu>\n<mat-menu #themeFontMenu=\"matMenu\" xPosition=\"before\">\n @for (typographyName of availableTypographies ?? []; track typographyName) {\n <button (click)=\"setTypography(typographyName)\"\n (mouseenter)=\"previewTypography(typographyName)\"\n (mouseleave)=\"restoreTypography()\"\n mat-menu-item>\n {{ typographyName }}\n </button>\n }\n</mat-menu>\n\n<mat-menu #themePresetMenu=\"matMenu\" xPosition=\"before\">\n @for (themeName of availableThemes ?? []; track themeName) {\n <button (click)=\"setTheme(themeName)\"\n (mouseenter)=\"previewTheme(themeName)\"\n (mouseleave)=\"restoreTheme()\"\n mat-menu-item>\n {{ themeName }}\n </button>\n }\n</mat-menu>\n","import {\n inject,\n Injectable,\n LOCALE_ID,\n signal,\n} from '@angular/core';\n// eslint-disable-next-line @nx/enforce-module-boundaries\nimport { ClickOnLink } from '@rxap/browser-utilities';\nimport { ConfigService } from '@rxap/config';\nimport { RXAP_ENVIRONMENT } from '@rxap/environment';\nimport {\n coerceArray,\n JoinPath,\n} from '@rxap/utilities';\nimport {\n RXAP_EXTERNAL_APP,\n RXAP_EXTERNAL_APP_FILTER,\n} from './tokens';\nimport { ExternalApp } from './types';\n\n@Injectable()\nexport class ExternalAppsService {\n\n protected readonly appFilterList = coerceArray(inject(RXAP_EXTERNAL_APP_FILTER, { optional: true }));\n protected readonly config = inject(ConfigService);\n protected readonly localeId = inject(LOCALE_ID);\n protected readonly environment = inject(RXAP_ENVIRONMENT);\n protected readonly apps: Array<ExternalApp> = this.config.get('navigation.apps', []);\n protected readonly externalApps = coerceArray(inject(RXAP_EXTERNAL_APP, { optional: true }));\n\n /**\n * The list of active apps that is processed by the getAppList method\n */\n public readonly activeAppList = signal<Array<ExternalApp>>([]);\n\n public hasApp(appId: string): boolean {\n return this.apps.some(app => app.id === appId);\n }\n\n public getApp(appId: string): ExternalApp | null {\n if (!this.hasApp(appId)) {\n return null;\n }\n const app = this.apps.find(app => app.id === appId);\n if (!app) {\n throw new Error(`FATAL: App with id \"${ appId }\" not found!`);\n }\n return structuredClone(app);\n }\n\n public getAppUrl(appId: string, path: string, infix: string | null = this.getPathPrefix()): string | null {\n\n const app = this.getApp(appId);\n\n if (!app || !app.href) {\n return null;\n }\n\n return JoinPath(app.href, infix, path);\n\n }\n\n public getAppRouterLink(appId: string, path: string): string[] | null {\n\n const app = this.getApp(appId);\n\n if (!app || !app.routerLink) {\n return null;\n }\n\n return [ ...app.routerLink, path ];\n }\n\n public getAppUrlOrThrow(appId: string, path: string): string {\n const url = this.getAppUrl(appId, path);\n if (url) {\n return url;\n }\n throw new Error(`Could not find url for app with id \"${ appId }\"`);\n }\n\n public getAppRouterLinkOrThrow(appId: string, path: string): string[] {\n const routerLink = this.getAppRouterLink(appId, path);\n if (routerLink) {\n return routerLink;\n }\n throw new Error(`Could not find router link for app with id \"${ appId }\"`);\n }\n\n public navigate(appId: string, path: string): void {\n\n const url = this.getAppUrl(appId, path);\n\n if (url) {\n ClickOnLink(url);\n }\n\n }\n\n public async getAppList(): Promise<Array<ExternalApp>> {\n let appList: ExternalApp[] = [\n ...this.externalApps,\n ...this.apps,\n ].filter(app => !app.hidden)\n .map(app => structuredClone(app));\n\n appList.forEach(app => {\n if (app.href) {\n app.href = JoinPath(app.href, this.getPathPrefix());\n }\n });\n\n for (const appFilter of this.appFilterList) {\n appList = await appFilter.call(structuredClone(appList));\n }\n\n appList = structuredClone(appList);\n this.activeAppList.set(appList);\n return appList;\n }\n\n protected getPathPrefix(): string {\n if (this.environment.production && this.localeId) {\n return this.localeId.replace(/-.+$/, '');\n }\n return '';\n }\n\n}\n","import { NgOptimizedImage } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n OnInit,\n signal,\n} from '@angular/core';\nimport {\n MatAnchor,\n MatButton,\n MatIconButton,\n} from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { RouterLink } from '@angular/router';\nimport { IconDirective } from '@rxap/material-directives/icon';\nimport { ExternalAppsService } from '../../external-apps.service';\n\n@Component({\n selector: 'rxap-apps-button',\n templateUrl: './apps-button.component.html',\n styleUrls: [ './apps-button.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgOptimizedImage,\n MatButton,\n RouterLink,\n MatAnchor,\n MatIconButton,\n MatIcon,\n IconDirective,\n ],\n})\nexport class AppsButtonComponent implements OnInit {\n /**\n * The signal that indicates if the app list is open\n */\n public readonly isOpen = signal(false);\n\n private readonly externalAppsService = inject(ExternalAppsService);\n public readonly appList = computed(() => this.externalAppsService.activeAppList());\n public readonly hasApps = computed(() => this.appList().length > 0);\n\n public toggle(): void {\n this.isOpen.update(isOpen => !isOpen);\n }\n\n public ngOnInit(): void {\n this.externalAppsService.getAppList();\n }\n\n}\n","@if (hasApps()) {\n <div class=\"flex flex-row items-center gap-8\">\n\n @if (isOpen()) {\n <div class=\"flex flex-row items-center gap-6 h-10\">\n\n @for (app of appList(); track app.label) {\n @if (app.href) {\n <a [href]=\"app.href\" [target]=\"app.target ?? '_self'\" mat-stroked-button>\n <span class=\"flex flex-row items-center gap-4\">\n @if (app.icon) {\n <mat-icon [rxapIcon]=\"app.icon\"></mat-icon>\n }\n @if (app.image) {\n <img [alt]=\"app.label\" [ngSrc]=\"app.image\" height=\"40\" width=\"40\">\n }\n <span class=\"label grow-0\">{{ app.label }}</span>\n </span>\n </a>\n } @else if (app.routerLink) {\n <a mat-stroked-button [routerLink]=\"app.routerLink\">\n <span class=\"flex flex-row items-center gap-4\">\n @if (app.icon) {\n <mat-icon [rxapIcon]=\"app.icon\"></mat-icon>\n }\n @if (app.image) {\n <img [alt]=\"app.label\" [ngSrc]=\"app.image\" height=\"40\" width=\"40\">\n }\n <span class=\"label grow-0\">{{ app.label }}</span>\n </span>\n </a>\n } @else {\n <button mat-stroked-button [disabled]=\"true\">\n <span class=\"flex flex-row items-center gap-4\">\n @if (app.icon) {\n <mat-icon [rxapIcon]=\"app.icon\"></mat-icon>\n }\n @if (app.image) {\n <img [alt]=\"app.label\" [ngSrc]=\"app.image\" height=\"40\" width=\"40\">\n }\n <span class=\"label grow-0\">{{ app.label }}</span>\n </span>\n </button>\n }\n }\n\n </div>\n }\n\n <button (click)=\"toggle()\" mat-icon-button>\n <mat-icon svgIcon=\"apps\"></mat-icon>\n </button>\n\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { LayoutService } from '../layout.service';\nimport { UserProfileDataSource } from '@rxap/ngx-user';\nimport { AppsButtonComponent } from './apps-button/apps-button.component';\nimport { SettingsButtonComponent } from './settings-button/settings-button.component';\nimport { SidenavToggleButtonComponent } from './sidenav-toggle-button/sidenav-toggle-button.component';\nimport { UserProfileIconComponent } from './user-profile-icon/user-profile-icon.component';\n\n@Component({\n selector: 'rxap-default-header',\n standalone: true,\n imports: [\n AppsButtonComponent,\n SettingsButtonComponent,\n SidenavToggleButtonComponent,\n UserProfileIconComponent,\n ],\n host: {\n 'class': 'grow',\n },\n templateUrl: './default-header.component.html',\n styleUrl: './default-header.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DefaultHeaderComponent {\n\n public readonly layoutComponentService = inject(LayoutService);\n\n public readonly collapsable = computed(() => this.layoutComponentService.collapsable());\n public readonly opened = computed(() => this.layoutComponentService.opened());\n\n private readonly userProfileService: UserProfileDataSource = inject(UserProfileDataSource);\n public readonly profile = toSignal(this.userProfileService.connect('user-profile'), { initialValue: null });\n\n}\n","<div class=\"w-full flex flex-row gap-x-4 justify-between items-center\">\n @if (!collapsable()) {\n <rxap-sidenav-toggle-button></rxap-sidenav-toggle-button>\n }\n <div class=\"grow\">\n <ng-content></ng-content>\n </div>\n <rxap-apps-button class=\"grow-0\"></rxap-apps-button>\n <rxap-settings-button class=\"grow-0\"></rxap-settings-button>\n @if (this.profile(); as profile) {\n <rxap-user-profile-icon [profile]=\"profile\" class=\"grow-0\"></rxap-user-profile-icon>\n }\n</div>\n","import { ComponentType } from '@angular/cdk/portal';\nimport { Provider } from '@angular/core';\nimport { DefaultHeaderComponent } from './default-header/default-header.component';\nimport { ExternalAppsService } from './external-apps.service';\nimport { FooterService } from './footer.service';\nimport { HeaderService } from './header.service';\nimport { LayoutService } from './layout.service';\nimport { LogoService } from './logo.service';\nimport { NavigationService } from './navigation.service';\nimport { NavigationWithInserts } from './navigation/navigation-item';\nimport {\n RXAP_EXTERNAL_APP,\n RXAP_FOOTER_COMPONENT,\n RXAP_HEADER_COMPONENT,\n RXAP_NAVIGATION_CONFIG,\n RXAP_NAVIGATION_CONFIG_INSERTS,\n RXAP_RELEASE_INFO_MODULE,\n RXAP_SETTINGS_MENU_ITEM,\n RXAP_SETTINGS_MENU_ITEM_COMPONENT,\n} from './tokens';\nimport {\n ExternalApp,\n ReleaseInfoModule,\n SettingsMenuItem,\n SettingsMenuItemComponent,\n} from './types';\n\nexport function provideLayout(...additionalProviders: Provider[]): Provider[] {\n return [\n ExternalAppsService,\n LayoutService,\n LogoService,\n NavigationService,\n HeaderService,\n FooterService,\n ...additionalProviders,\n ];\n}\n\nexport function withNavigationConfig(\n config: NavigationWithInserts | (() => NavigationWithInserts),\n): Provider[] {\n return [\n {\n provide: RXAP_NAVIGATION_CONFIG,\n useValue: config,\n },\n ];\n}\n\nexport function withExternalApps(...apps: ExternalApp[]): Provider[] {\n return apps.map(app => (\n {\n provide: RXAP_EXTERNAL_APP,\n useValue: app,\n multi: true,\n }\n ));\n}\n\nexport function withNavigationInserts(inserts: Record<string, NavigationWithInserts>): Provider[] {\n return [{\n provide: RXAP_NAVIGATION_CONFIG_INSERTS,\n useValue: inserts,\n }];\n}\n\nexport function withSettingsMenuItems(...items: Array<SettingsMenuItemComponent | SettingsMenuItem>): Provider[] {\n return [\n ...items.filter((item): item is SettingsMenuItemComponent => typeof item === 'function').map(component => (\n {\n provide: RXAP_SETTINGS_MENU_ITEM_COMPONENT,\n useValue: component,\n multi: true,\n }\n )),\n ...items.filter((item): item is SettingsMenuItem => typeof item !== 'function').map(item => (\n {\n provide: RXAP_SETTINGS_MENU_ITEM,\n useValue: item,\n multi: true,\n }\n )),\n ];\n}\n\nexport function withReleaseInfoModules(...module: ReleaseInfoModule[]): Provider[] {\n return module.map(item => (\n {\n provide: RXAP_RELEASE_INFO_MODULE,\n useValue: item,\n multi: true,\n }\n ));\n}\n\nexport function withHeaderComponents(components: Array<ComponentType<unknown>>): Provider[] {\n return components.map(component => (\n {\n provide: RXAP_HEADER_COMPONENT,\n useValue: component,\n }\n ));\n}\n\nexport function withFooterComponents(components: Array<ComponentType<unknown>>): Provider[] {\n return components.map(component => (\n {\n provide: RXAP_FOOTER_COMPONENT,\n useValue: component,\n }\n ));\n}\n\nexport function widthDefaultHeaderComponent(): Provider {\n return {\n provide: RXAP_HEADER_COMPONENT,\n useValue: DefaultHeaderComponent,\n };\n}\n","// region sidenav\nexport * from './lib/sidenav/sidenav-footer.directive';\nexport * from './lib/sidenav/sidenav-header.directive';\nexport * from './lib/sidenav/sidenav.component';\n// endregion\n\n// region release-info\nexport * from './lib/release-info/release-info.component';\n// endregion\n\n// region navigation navigation-item\nexport * from './lib/navigation/navigation-item/navigation-item.component';\n// endregion\n\n// region navigation-progress-bar\nexport * from './lib/navigation-progress-bar/navigation-progress-bar.component';\n// endregion\n\n// region navigation\nexport * from './lib/navigation/navigation-item';\nexport * from './lib/navigation/navigation.component';\n// endregion\n\n// region minimal-layout\nexport * from './lib/minimal-layout/minimal-layout.component';\n// endregion\n\n// region layout\nexport * from './lib/layout/layout.component';\n// endregion\n\n// region header\nexport * from './lib/header/header.component';\nexport * from './lib/header/header.directive';\n// endregion\n\n// region footer\nexport * from './lib/footer/footer.component';\nexport * from './lib/footer/footer.directive';\n// endregion\n\n// region default-header user-profile-icon\nexport * from './lib/default-header/user-profile-icon/user-profile-icon.component';\n// endregion\n\n// region default-header sidenav-toggle-button\nexport * from './lib/default-header/sidenav-toggle-button/sidenav-toggle-button.component';\n// endregion\n\n// region default-header settings-button\nexport * from './lib/default-header/settings-button/settings-button.component';\n// endregion\n\n// region default-header apps-button\nexport * from './lib/default-header/apps-button/apps-button.component';\n// endregion\n\n// region default-header\nexport * from './lib/default-header/default-header.component';\n// endregion\n\n// region base-layout\nexport * from './lib/base-layout/base-layout.component';\n// endregion\n\n// region \nexport * from './lib/external-apps.service';\nexport * from './lib/footer.service';\nexport * from './lib/header.service';\nexport * from './lib/layout.service';\nexport * from './lib/logo.service';\nexport * from './lib/navigation.service';\nexport * from './lib/provide';\nexport * from './lib/tokens';\nexport * from './lib/types';\n// endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}