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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +280 -1
  3. package/compodoc/changelog.html +13 -0
  4. package/compodoc/components/AppsButtonComponent.html +185 -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 +11 -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 +183 -1
  26. package/compodoc/injectables/ExternalAppsService.html +1274 -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 +544 -1
  38. package/compodoc/miscellaneous/typealiases.html +40 -2
  39. package/compodoc/miscellaneous/variables.html +100 -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 +18 -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 +8546 -8346
  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/withFooterComponents.html +1 -0
  77. package/docs/functions/withHeaderComponents.html +1 -0
  78. package/docs/functions/withNavigationConfig.html +1 -0
  79. package/docs/functions/withNavigationInserts.html +1 -0
  80. package/docs/functions/withReleaseInfoModules.html +1 -0
  81. package/docs/functions/withSettingsMenuItems.html +1 -0
  82. package/docs/index.html +74 -2
  83. package/docs/interfaces/NavigationDividerItem.html +2 -2
  84. package/docs/interfaces/NavigationInsertItem.html +2 -2
  85. package/docs/interfaces/NavigationItem.html +2 -2
  86. package/docs/interfaces/NavigationStatus.html +2 -2
  87. package/docs/interfaces/ReleaseInfoModule.html +4 -0
  88. package/docs/interfaces/SettingsMenuItem.html +4 -0
  89. package/docs/modules.html +29 -17
  90. package/docs/types/ExternalApps.html +1 -0
  91. package/docs/types/ExtractUsernameFromProfileFn.html +1 -1
  92. package/docs/types/Navigation.html +1 -1
  93. package/docs/types/NavigationWithInserts.html +1 -1
  94. package/docs/types/SettingsMenuItemComponent.html +1 -0
  95. package/docs/variables/EXTRACT_USERNAME_FROM_PROFILE.html +1 -1
  96. package/docs/variables/RXAP_EXTERNAL_APP_FILTER.html +1 -0
  97. package/docs/variables/RXAP_FOOTER_COMPONENT.html +1 -1
  98. package/docs/variables/RXAP_HEADER_COMPONENT.html +1 -1
  99. package/docs/variables/RXAP_LAYOUT_APPS_GRID.html +1 -1
  100. package/docs/variables/RXAP_LOGO_CONFIG.html +1 -1
  101. package/docs/variables/RXAP_NAVIGATION_CONFIG.html +1 -1
  102. package/docs/variables/RXAP_NAVIGATION_CONFIG_INSERTS.html +1 -1
  103. package/docs/variables/RXAP_RELEASE_INFO_MODULE.html +1 -0
  104. package/docs/variables/RXAP_SETTINGS_MENU_ITEM.html +1 -0
  105. package/docs/variables/RXAP_SETTINGS_MENU_ITEM_COMPONENT.html +1 -0
  106. package/esm2022/index.mjs +35 -40
  107. package/esm2022/lib/base-layout/base-layout.component.mjs +16 -0
  108. package/esm2022/lib/default-header/apps-button/apps-button.component.mjs +38 -0
  109. package/esm2022/lib/default-header/default-header.component.mjs +32 -0
  110. package/esm2022/lib/default-header/settings-button/settings-button.component.mjs +73 -0
  111. package/esm2022/lib/default-header/sidenav-toggle-button/sidenav-toggle-button.component.mjs +24 -0
  112. package/esm2022/lib/default-header/user-profile-icon/user-profile-icon.component.mjs +35 -0
  113. package/esm2022/lib/external-apps.service.mjs +97 -0
  114. package/esm2022/lib/footer/footer.component.mjs +13 -13
  115. package/esm2022/lib/footer/footer.directive.mjs +30 -0
  116. package/esm2022/lib/footer.service.mjs +58 -0
  117. package/esm2022/lib/header/header.component.mjs +17 -65
  118. package/esm2022/lib/header/header.directive.mjs +30 -0
  119. package/esm2022/lib/header.service.mjs +60 -0
  120. package/esm2022/lib/layout/layout.component.mjs +33 -47
  121. package/esm2022/lib/layout.service.mjs +93 -0
  122. package/esm2022/lib/logo.service.mjs +23 -0
  123. package/esm2022/lib/minimal-layout/minimal-layout.component.mjs +14 -0
  124. package/esm2022/lib/navigation/navigation-item/navigation-item.component.mjs +30 -64
  125. package/esm2022/lib/navigation/navigation.component.mjs +22 -48
  126. package/esm2022/lib/navigation-progress-bar/navigation-progress-bar.component.mjs +23 -0
  127. package/esm2022/lib/navigation.service.mjs +141 -0
  128. package/esm2022/lib/provide.mjs +73 -0
  129. package/esm2022/lib/release-info/release-info.component.mjs +28 -0
  130. package/esm2022/lib/sidenav/sidenav.component.mjs +50 -33
  131. package/esm2022/lib/tokens.mjs +9 -1
  132. package/esm2022/lib/types.mjs +1 -1
  133. package/fesm2022/rxap-layout.mjs +845 -833
  134. package/fesm2022/rxap-layout.mjs.map +1 -1
  135. package/index.d.ts +18 -19
  136. package/lib/base-layout/base-layout.component.d.ts +5 -0
  137. package/lib/default-header/apps-button/apps-button.component.d.ts +15 -0
  138. package/lib/default-header/default-header.component.d.ts +11 -0
  139. package/lib/{header → default-header}/settings-button/settings-button.component.d.ts +6 -14
  140. package/lib/{header → default-header}/sidenav-toggle-button/sidenav-toggle-button.component.d.ts +3 -5
  141. package/lib/default-header/user-profile-icon/user-profile-icon.component.d.ts +10 -0
  142. package/lib/external-apps.service.d.ts +25 -0
  143. package/lib/footer/footer.component.d.ts +3 -3
  144. package/lib/{footer.directive.d.ts → footer/footer.directive.d.ts} +2 -4
  145. package/lib/footer.service.d.ts +32 -0
  146. package/lib/header/header.component.d.ts +6 -12
  147. package/lib/header/header.directive.d.ts +12 -0
  148. package/lib/header.service.d.ts +34 -0
  149. package/lib/layout/layout.component.d.ts +4 -17
  150. package/lib/layout.service.d.ts +26 -0
  151. package/lib/logo.service.d.ts +10 -0
  152. package/lib/minimal-layout/minimal-layout.component.d.ts +5 -0
  153. package/lib/navigation/navigation-item/navigation-item.component.d.ts +10 -18
  154. package/lib/navigation/navigation.component.d.ts +10 -15
  155. package/lib/{header/navigation-progress-bar → navigation-progress-bar}/navigation-progress-bar.component.d.ts +1 -3
  156. package/lib/{navigation/navigation.service.d.ts → navigation.service.d.ts} +4 -5
  157. package/lib/provide.d.ts +12 -0
  158. package/lib/release-info/release-info.component.d.ts +9 -0
  159. package/lib/sidenav/sidenav.component.d.ts +18 -6
  160. package/lib/tokens.d.ts +11 -3
  161. package/lib/types.d.ts +15 -4
  162. package/package.json +32 -66
  163. package/theme.css +1 -1
  164. package/docs/classes/AppUrlService.html +0 -13
  165. package/docs/classes/AuthenticationServiceMock.html +0 -3
  166. package/docs/classes/LanguageSelectorComponent.html +0 -3
  167. package/docs/classes/LayoutComponentService.html +0 -15
  168. package/docs/classes/ReplaceRouterPathsPipe.html +0 -4
  169. package/docs/classes/ReplaceRouterPathsService.html +0 -3
  170. package/docs/classes/ResetButtonComponent.html +0 -3
  171. package/docs/classes/SidenavComponentService.html +0 -5
  172. package/docs/classes/SignOutComponent.html +0 -4
  173. package/docs/classes/ToggleWindowSidenavButtonComponent.html +0 -5
  174. package/docs/classes/VersionComponent.html +0 -7
  175. package/docs/classes/WindowContainerSidenavComponent.html +0 -10
  176. package/docs/interfaces/ExternalApps.html +0 -8
  177. package/docs/interfaces/LogoConfig.html +0 -4
  178. package/esm2022/lib/app-url.service.mjs +0 -78
  179. package/esm2022/lib/authentication.service.mock.mjs +0 -13
  180. package/esm2022/lib/footer.directive.mjs +0 -40
  181. package/esm2022/lib/header/apps-button/apps-button.component.mjs +0 -46
  182. package/esm2022/lib/header/language-selector/language-selector.component.mjs +0 -35
  183. package/esm2022/lib/header/navigation-progress-bar/navigation-progress-bar.component.mjs +0 -30
  184. package/esm2022/lib/header/reset-button/reset-button.component.mjs +0 -23
  185. package/esm2022/lib/header/settings-button/settings-button.component.mjs +0 -87
  186. package/esm2022/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.mjs +0 -26
  187. package/esm2022/lib/header/sign-out/sign-out.component.mjs +0 -23
  188. package/esm2022/lib/header/user-profile-icon/user-profile-icon.component.mjs +0 -45
  189. package/esm2022/lib/layout/layout.component.service.mjs +0 -77
  190. package/esm2022/lib/navigation/navigation.service.mjs +0 -145
  191. package/esm2022/lib/navigation/replace-router-paths.pipe.mjs +0 -22
  192. package/esm2022/lib/navigation/replace-router-paths.service.mjs +0 -15
  193. package/esm2022/lib/sidenav/sidenav.component.service.mjs +0 -22
  194. package/esm2022/lib/sidenav/version/version.component.mjs +0 -28
  195. package/esm2022/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.mjs +0 -30
  196. package/esm2022/lib/window-container-sidenav/window-container-sidenav.component.mjs +0 -54
  197. package/lib/app-url.service.d.ts +0 -29
  198. package/lib/authentication.service.mock.d.ts +0 -6
  199. package/lib/header/apps-button/apps-button.component.d.ts +0 -16
  200. package/lib/header/language-selector/language-selector.component.d.ts +0 -8
  201. package/lib/header/reset-button/reset-button.component.d.ts +0 -8
  202. package/lib/header/sign-out/sign-out.component.d.ts +0 -9
  203. package/lib/header/user-profile-icon/user-profile-icon.component.d.ts +0 -15
  204. package/lib/layout/layout.component.service.d.ts +0 -25
  205. package/lib/navigation/replace-router-paths.pipe.d.ts +0 -11
  206. package/lib/navigation/replace-router-paths.service.d.ts +0 -7
  207. package/lib/sidenav/sidenav.component.service.d.ts +0 -11
  208. package/lib/sidenav/version/version.component.d.ts +0 -14
  209. package/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.d.ts +0 -9
  210. package/lib/window-container-sidenav/window-container-sidenav.component.d.ts +0 -17
@@ -1,45 +0,0 @@
1
- import { AsyncPipe, NgIf, } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, Inject, InjectionToken, } from '@angular/core';
3
- import { toSignal } from '@angular/core/rxjs-interop';
4
- import { MatIconModule } from '@angular/material/icon';
5
- import { MatMenuModule } from '@angular/material/menu';
6
- import { RxapAuthenticationService } from '@rxap/authentication';
7
- import { UserProfileDataSource } from '@rxap/ngx-user';
8
- import { distinctUntilChanged, filter, skip, } from 'rxjs';
9
- import { map, switchMap, } from 'rxjs/operators';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@rxap/ngx-user";
12
- import * as i2 from "@rxap/authentication";
13
- import * as i3 from "@angular/material/menu";
14
- import * as i4 from "@angular/material/icon";
15
- export const EXTRACT_USERNAME_FROM_PROFILE = new InjectionToken('extract-username-from-profile', {
16
- providedIn: 'root',
17
- factory: () => (profile) => (profile ? profile.username ?? profile.email ?? profile.name : null) ?? null,
18
- });
19
- export class UserProfileIconComponent {
20
- constructor(userProfileService, authenticationService, extractUsernameFromProfile) {
21
- this.userProfileService = userProfileService;
22
- this.authenticationService = authenticationService;
23
- this.username = toSignal(this.authenticationService.isAuthenticated$.pipe(filter(Boolean), switchMap(() => this.userProfileService.connect({
24
- viewChange: this.authenticationService.isAuthenticated$.pipe(skip(1), filter(Boolean), distinctUntilChanged()),
25
- })), filter(Boolean), map(extractUsernameFromProfile)), { initialValue: null });
26
- }
27
- async logout() {
28
- await this.authenticationService.signOut();
29
- }
30
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: UserProfileIconComponent, deps: [{ token: i1.UserProfileDataSource }, { token: i2.RxapAuthenticationService }, { token: EXTRACT_USERNAME_FROM_PROFILE }], target: i0.ɵɵFactoryTarget.Component }); }
31
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: UserProfileIconComponent, isStandalone: true, selector: "rxap-user-profile-icon", ngImport: i0, template: "<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", styles: [".profile-icon{border-radius:100%;border:none;height:32px;width:32px;overflow:hidden;background-position:center center;background-repeat:no-repeat;background-size:cover}.profile-icon .avatar-icon{width:32px;height:32px;font-size:32px}.profile-icon:hover{cursor:pointer}.profile-icon:focus{outline:none}\n"], dependencies: [{ kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
32
- }
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: UserProfileIconComponent, decorators: [{
34
- type: Component,
35
- args: [{ selector: 'rxap-user-profile-icon', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
36
- MatMenuModule,
37
- MatIconModule,
38
- NgIf,
39
- AsyncPipe,
40
- ], template: "<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", styles: [".profile-icon{border-radius:100%;border:none;height:32px;width:32px;overflow:hidden;background-position:center center;background-repeat:no-repeat;background-size:cover}.profile-icon .avatar-icon{width:32px;height:32px;font-size:32px}.profile-icon:hover{cursor:pointer}.profile-icon:focus{outline:none}\n"] }]
41
- }], ctorParameters: () => [{ type: i1.UserProfileDataSource }, { type: i2.RxapAuthenticationService }, { type: undefined, decorators: [{
42
- type: Inject,
43
- args: [EXTRACT_USERNAME_FROM_PROFILE]
44
- }] }] });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wcm9maWxlLWljb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci9sYXlvdXQvc3JjL2xpYi9oZWFkZXIvdXNlci1wcm9maWxlLWljb24vdXNlci1wcm9maWxlLWljb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci9sYXlvdXQvc3JjL2xpYi9oZWFkZXIvdXNlci1wcm9maWxlLWljb24vdXNlci1wcm9maWxlLWljb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxJQUFJLEdBQ0wsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxNQUFNLEVBQ04sY0FBYyxHQUVmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLElBQUksR0FDTCxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFDTCxHQUFHLEVBQ0gsU0FBUyxHQUNWLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQUl4QixNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxJQUFJLGNBQWMsQ0FDN0QsK0JBQStCLEVBQy9CO0lBQ0UsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUk7Q0FDOUcsQ0FDRixDQUFDO0FBZUYsTUFBTSxPQUFPLHdCQUF3QjtJQUluQyxZQUNtQixrQkFBNEMsRUFDNUMscUJBQWdELEVBRS9ELDBCQUEyRDtRQUg1Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQTBCO1FBQzVDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBMkI7UUFJakUsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FDdkUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUNmLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDO1lBQzlDLFVBQVUsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUMxRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUNmLG9CQUFvQixFQUFFLENBQ3ZCO1NBQ0YsQ0FBQyxDQUFDLEVBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUNmLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUNoQyxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVNLEtBQUssQ0FBQyxNQUFNO1FBQ2pCLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzdDLENBQUM7OEdBMUJVLHdCQUF3QixnR0FPekIsNkJBQTZCO2tHQVA1Qix3QkFBd0Isa0ZDakRyQyw0ckJBb0JBLHdXRHVCSSxhQUFhLDZ2QkFDYixhQUFhOzsyRkFLSix3QkFBd0I7a0JBYnBDLFNBQVM7K0JBQ0Usd0JBQXdCLG1CQUdqQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsSUFBSTt3QkFDSixTQUFTO3FCQUNWOzswQkFTRSxNQUFNOzJCQUFDLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFzeW5jUGlwZSxcbiAgTmdJZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEluamVjdCxcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIFNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IFJ4YXBBdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tICdAcnhhcC9hdXRoZW50aWNhdGlvbic7XG5pbXBvcnQgeyBVc2VyUHJvZmlsZURhdGFTb3VyY2UgfSBmcm9tICdAcnhhcC9uZ3gtdXNlcic7XG5pbXBvcnQge1xuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgZmlsdGVyLFxuICBza2lwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIG1hcCxcbiAgc3dpdGNoTWFwLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCB0eXBlIEV4dHJhY3RVc2VybmFtZUZyb21Qcm9maWxlRm48VCA9IHVua25vd24+ID0gKHByb2ZpbGU6IFQpID0+IHN0cmluZyB8IG51bGw7XG5cbmV4cG9ydCBjb25zdCBFWFRSQUNUX1VTRVJOQU1FX0ZST01fUFJPRklMRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFeHRyYWN0VXNlcm5hbWVGcm9tUHJvZmlsZUZuPihcbiAgJ2V4dHJhY3QtdXNlcm5hbWUtZnJvbS1wcm9maWxlJyxcbiAge1xuICAgIHByb3ZpZGVkSW46ICdyb290JyxcbiAgICBmYWN0b3J5OiAoKSA9PiAocHJvZmlsZTogYW55KSA9PiAocHJvZmlsZSA/IHByb2ZpbGUudXNlcm5hbWUgPz8gcHJvZmlsZS5lbWFpbCA/PyBwcm9maWxlLm5hbWUgOiBudWxsKSA/PyBudWxsLFxuICB9LFxuKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncnhhcC11c2VyLXByb2ZpbGUtaWNvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLXByb2ZpbGUtaWNvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWyAnLi91c2VyLXByb2ZpbGUtaWNvbi5jb21wb25lbnQuc2NzcycgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBNYXRNZW51TW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTmdJZixcbiAgICBBc3luY1BpcGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJQcm9maWxlSWNvbkNvbXBvbmVudDxUID0gdW5rbm93bj4ge1xuXG4gIHB1YmxpYyB1c2VybmFtZTogU2lnbmFsPHN0cmluZyB8IG51bGw+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlclByb2ZpbGVTZXJ2aWNlOiBVc2VyUHJvZmlsZURhdGFTb3VyY2U8VD4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdXRoZW50aWNhdGlvblNlcnZpY2U6IFJ4YXBBdXRoZW50aWNhdGlvblNlcnZpY2UsXG4gICAgQEluamVjdChFWFRSQUNUX1VTRVJOQU1FX0ZST01fUFJPRklMRSlcbiAgICAgIGV4dHJhY3RVc2VybmFtZUZyb21Qcm9maWxlOiBFeHRyYWN0VXNlcm5hbWVGcm9tUHJvZmlsZUZuPFQ+LFxuICApIHtcbiAgICB0aGlzLnVzZXJuYW1lID0gdG9TaWduYWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuaXNBdXRoZW50aWNhdGVkJC5waXBlKFxuICAgICAgZmlsdGVyKEJvb2xlYW4pLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMudXNlclByb2ZpbGVTZXJ2aWNlLmNvbm5lY3Qoe1xuICAgICAgICB2aWV3Q2hhbmdlOiB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQkLnBpcGUoXG4gICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICBmaWx0ZXIoQm9vbGVhbiksXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgKSxcbiAgICAgIH0pKSxcbiAgICAgIGZpbHRlcihCb29sZWFuKSxcbiAgICAgIG1hcChleHRyYWN0VXNlcm5hbWVGcm9tUHJvZmlsZSksXG4gICAgKSwgeyBpbml0aWFsVmFsdWU6IG51bGwgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbG9nb3V0KCkge1xuICAgIGF3YWl0IHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLnNpZ25PdXQoKTtcbiAgfVxuXG5cbn1cbiIsIjxidXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIXVzZXJuYW1lKClcIlxuICAgICAgICBjbGFzcz1cInByb2ZpbGUtaWNvbiBmbGV4IGZsZXgtcm93IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlclwiPlxuICA8bWF0LWljb24gY2xhc3M9XCJhdmF0YXItaWNvblwiIHN2Z0ljb249XCJhY2NvdW50LWNpcmNsZVwiPjwvbWF0LWljb24+XG48L2J1dHRvbj5cblxuPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiIFt5UG9zaXRpb25dPVwiJ2JlbG93J1wiIGNsYXNzPVwiIW1heC13LW5vbmVcIj5cbiAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtPlxuICAgIDxzcGFuIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtMlwiPlxuICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJhY2NvdW50XCI+PC9tYXQtaWNvbj5cbiAgICAgIDxzcGFuPnt7dXNlcm5hbWUoKX19PC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG4gIDxidXR0b24gKGNsaWNrKT1cImxvZ291dCgpXCIgbWF0LW1lbnUtaXRlbT5cbiAgICA8c3BhbiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTJcIj5cbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwibG9nb3V0XCI+PC9tYXQtaWNvbj5cbiAgICAgIDxzcGFuIGkxOG4+TG9nb3V0PC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG48L21hdC1tZW51PlxuIl19
@@ -1,77 +0,0 @@
1
- import { MediaMatcher } from '@angular/cdk/layout';
2
- import { computed, effect, Inject, Injectable, Optional, signal, } from '@angular/core';
3
- import { toSignal } from '@angular/core/rxjs-interop';
4
- import { ConfigService } from '@rxap/config';
5
- import { ObserveCurrentThemeDensity } from '@rxap/ngx-theme';
6
- import { FooterService, HeaderService, } from '@rxap/services';
7
- import { RXAP_LOGO_CONFIG } from '../tokens';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@rxap/services";
10
- import * as i2 from "@angular/cdk/layout";
11
- import * as i3 from "@rxap/config";
12
- export class LayoutComponentService {
13
- constructor(footerComponentService, headerComponentService, logoConfig = null, config, mediaMatcher) {
14
- this.footerComponentService = footerComponentService;
15
- this.headerComponentService = headerComponentService;
16
- this.config = config;
17
- this.currentThemeDensity = toSignal(ObserveCurrentThemeDensity());
18
- const mobileQuery = mediaMatcher.matchMedia('(max-width: 959px)');
19
- const mobile = mobileQuery.matches;
20
- const initialCollapsable = this.config.get('navigation.collapsable', true);
21
- const collapsable = initialCollapsable && !mobile;
22
- const pinned = this.config.get('navigation.pinned', false);
23
- const mode = this.config.get('navigation.mode', pinned || !collapsable ? 'side' : 'over');
24
- const opened = this.config.get('navigation.opened', (!collapsable || pinned) && !mobile);
25
- this.opened = signal(opened);
26
- this.mode = signal(mode);
27
- this.pinned = signal(pinned);
28
- this.collapsable = signal(collapsable);
29
- this.fixedBottomGap = computed(() => this.footerComponentService.portalCount() * (64 + (this.currentThemeDensity() ?? 0) * 4));
30
- this.fixedTopGap = computed(() => this.headerComponentService.componentCount() * (64 + (this.currentThemeDensity() ?? 0) * 4));
31
- this.logo = logoConfig ?? {
32
- src: 'assets/logo.png',
33
- width: 192,
34
- };
35
- mobileQuery.addEventListener('change', (event) => {
36
- if (initialCollapsable) {
37
- this.collapsable.set(!event.matches);
38
- if (this.collapsable()) {
39
- if (!this.pinned()) {
40
- this.opened.set(false);
41
- }
42
- }
43
- }
44
- });
45
- effect(() => {
46
- if (this.pinned()) {
47
- this.mode.set('side');
48
- this.opened.set(true);
49
- }
50
- else {
51
- this.mode.set('over');
52
- this.opened.set(false);
53
- }
54
- }, { allowSignalWrites: true });
55
- }
56
- toggleOpened() {
57
- this.opened.set(!this.opened());
58
- }
59
- togglePinned() {
60
- this.pinned.set(!this.pinned());
61
- }
62
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: LayoutComponentService, deps: [{ token: i1.FooterService }, { token: i1.HeaderService }, { token: RXAP_LOGO_CONFIG, optional: true }, { token: ConfigService }, { token: i2.MediaMatcher }], target: i0.ɵɵFactoryTarget.Injectable }); }
63
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: LayoutComponentService, providedIn: 'root' }); }
64
- }
65
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: LayoutComponentService, decorators: [{
66
- type: Injectable,
67
- args: [{ providedIn: 'root' }]
68
- }], ctorParameters: () => [{ type: i1.FooterService }, { type: i1.HeaderService }, { type: undefined, decorators: [{
69
- type: Optional
70
- }, {
71
- type: Inject,
72
- args: [RXAP_LOGO_CONFIG]
73
- }] }, { type: i3.ConfigService, decorators: [{
74
- type: Inject,
75
- args: [ConfigService]
76
- }] }, { type: i2.MediaMatcher }] });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmNvbXBvbmVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci9sYXlvdXQvc3JjL2xpYi9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sVUFBVSxFQUNWLFFBQVEsRUFDUixNQUFNLEdBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXRELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0QsT0FBTyxFQUNMLGFBQWEsRUFDYixhQUFhLEdBQ2QsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7O0FBSTdDLE1BQU0sT0FBTyxzQkFBc0I7SUFjakMsWUFDa0Isc0JBQXFDLEVBQ3JDLHNCQUFxQyxFQUNmLGFBQWdDLElBQUksRUFFekQsTUFBcUIsRUFDdEMsWUFBMEI7UUFMViwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQWU7UUFDckMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUFlO1FBR3BDLFdBQU0sR0FBTixNQUFNLENBQWU7UUFSdkIsd0JBQW1CLEdBQUcsUUFBUSxDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQztRQVc1RSxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDbEUsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQztRQUNuQyxNQUFNLGtCQUFr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O1FBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVNLFlBQVk7UUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNsQyxDQUFDOzhHQTdFVSxzQkFBc0IsNEVBaUJYLGdCQUFnQiw2QkFDNUIsYUFBYTtrSEFsQlosc0JBQXNCLGNBRFQsTUFBTTs7MkZBQ25CLHNCQUFzQjtrQkFEbEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQWtCN0IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUNuQyxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZWRpYU1hdGNoZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7XG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIEluamVjdCxcbiAgSW5qZWN0YWJsZSxcbiAgT3B0aW9uYWwsXG4gIHNpZ25hbCxcbiAgU2lnbmFsLFxuICBXcml0YWJsZVNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IE1hdERyYXdlck1vZGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAcnhhcC9jb25maWcnO1xuaW1wb3J0IHsgT2JzZXJ2ZUN1cnJlbnRUaGVtZURlbnNpdHkgfSBmcm9tICdAcnhhcC9uZ3gtdGhlbWUnO1xuaW1wb3J0IHtcbiAgRm9vdGVyU2VydmljZSxcbiAgSGVhZGVyU2VydmljZSxcbn0gZnJvbSAnQHJ4YXAvc2VydmljZXMnO1xuaW1wb3J0IHsgUlhBUF9MT0dPX0NPTkZJRyB9IGZyb20gJy4uL3Rva2Vucyc7XG5pbXBvcnQgeyBMb2dvQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIExheW91dENvbXBvbmVudFNlcnZpY2Uge1xuXG4gIHB1YmxpYyBsb2dvOiBMb2dvQ29uZmlnO1xuXG4gIHB1YmxpYyByZWFkb25seSBvcGVuZWQ6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+O1xuICBwdWJsaWMgcmVhZG9ubHkgbW9kZTogV3JpdGFibGVTaWduYWw8TWF0RHJhd2VyTW9kZT47XG4gIHB1YmxpYyByZWFkb25seSBwaW5uZWQ6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+O1xuICBwdWJsaWMgcmVhZG9ubHkgY29sbGFwc2FibGU6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+O1xuICBwdWJsaWMgcmVhZG9ubHkgZml4ZWRCb3R0b21HYXA6IFNpZ25hbDxudW1iZXI+O1xuICBwdWJsaWMgcmVhZG9ubHkgZml4ZWRUb3BHYXA6IFNpZ25hbDxudW1iZXI+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY3VycmVudFRoZW1lRGVuc2l0eSA9IHRvU2lnbmFsKE9ic2VydmVDdXJyZW50VGhlbWVEZW5zaXR5KCkpO1xuXG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBmb290ZXJDb21wb25lbnRTZXJ2aWNlOiBGb290ZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyByZWFkb25seSBoZWFkZXJDb21wb25lbnRTZXJ2aWNlOiBIZWFkZXJTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUlhBUF9MT0dPX0NPTkZJRykgbG9nb0NvbmZpZzogTG9nb0NvbmZpZyB8IG51bGwgPSBudWxsLFxuICAgIEBJbmplY3QoQ29uZmlnU2VydmljZSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZzogQ29uZmlnU2VydmljZSxcbiAgICBtZWRpYU1hdGNoZXI6IE1lZGlhTWF0Y2hlcixcbiAgKSB7XG4gICAgY29uc3QgbW9iaWxlUXVlcnkgPSBtZWRpYU1hdGNoZXIubWF0Y2hNZWRpYSgnKG1heC13aWR0aDogOTU5cHgpJyk7XG4gICAgY29uc3QgbW9iaWxlID0gbW9iaWxlUXVlcnkubWF0Y2hlcztcbiAgICBjb25zdCBpbml0aWFsQ29sbGFwc2FibGUgPSB0aGlzLmNvbmZpZy5nZXQoJ25hdmlnYXRpb24uY29sbGFwc2FibGUnLCB0cnVlKTtcbiAgICBjb25zdCBjb2xsYXBzYWJsZSA9IGluaXRpYWxDb2xsYXBzYWJsZSAmJiAhbW9iaWxlO1xuICAgIGNvbnN0IHBpbm5lZCA9IHRoaXMuY29uZmlnLmdldCgnbmF2aWdhdGlvbi5waW5uZWQnLCBmYWxzZSk7XG4gICAgY29uc3QgbW9kZSA9IHRoaXMuY29uZmlnLmdldCgnbmF2aWdhdGlvbi5tb2RlJywgcGlubmVkIHx8ICFjb2xsYXBzYWJsZSA/ICdzaWRlJyA6ICdvdmVyJyk7XG4gICAgY29uc3Qgb3BlbmVkID0gdGhpcy5jb25maWcuZ2V0KCduYXZpZ2F0aW9uLm9wZW5lZCcsICghY29sbGFwc2FibGUgfHwgcGlubmVkKSAmJiAhbW9iaWxlKTtcblxuICAgIHRoaXMub3BlbmVkID0gc2lnbmFsKG9wZW5lZCk7XG4gICAgdGhpcy5tb2RlID0gc2lnbmFsKG1vZGUpO1xuICAgIHRoaXMucGlubmVkID0gc2lnbmFsKHBpbm5lZCk7XG4gICAgdGhpcy5jb2xsYXBzYWJsZSA9IHNpZ25hbChjb2xsYXBzYWJsZSk7XG5cbiAgICB0aGlzLmZpeGVkQm90dG9tR2FwID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5mb290ZXJDb21wb25lbnRTZXJ2aWNlLnBvcnRhbENvdW50KCkgKiAoXG4gICAgICA2NCArIChcbiAgICAgICAgICAgdGhpcy5jdXJyZW50VGhlbWVEZW5zaXR5KCkgPz8gMFxuICAgICAgICAgKSAqIDRcbiAgICApKTtcbiAgICB0aGlzLmZpeGVkVG9wR2FwID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5oZWFkZXJDb21wb25lbnRTZXJ2aWNlLmNvbXBvbmVudENvdW50KCkgKiAoXG4gICAgICA2NCArIChcbiAgICAgICAgICAgdGhpcy5jdXJyZW50VGhlbWVEZW5zaXR5KCkgPz8gMFxuICAgICAgICAgKSAqIDRcbiAgICApKTtcblxuICAgIHRoaXMubG9nbyA9IGxvZ29Db25maWcgPz8ge1xuICAgICAgc3JjOiAnYXNzZXRzL2xvZ28ucG5nJyxcbiAgICAgIHdpZHRoOiAxOTIsXG4gICAgfTtcbiAgICBtb2JpbGVRdWVyeS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoZXZlbnQpID0+IHtcbiAgICAgIGlmIChpbml0aWFsQ29sbGFwc2FibGUpIHtcbiAgICAgICAgdGhpcy5jb2xsYXBzYWJsZS5zZXQoIWV2ZW50Lm1hdGNoZXMpO1xuICAgICAgICBpZiAodGhpcy5jb2xsYXBzYWJsZSgpKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLnBpbm5lZCgpKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5lZC5zZXQoZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5waW5uZWQoKSkge1xuICAgICAgICB0aGlzLm1vZGUuc2V0KCdzaWRlJyk7XG4gICAgICAgIHRoaXMub3BlbmVkLnNldCh0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubW9kZS5zZXQoJ292ZXInKTtcbiAgICAgICAgdGhpcy5vcGVuZWQuc2V0KGZhbHNlKTtcbiAgICAgIH1cbiAgICB9LCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZU9wZW5lZCgpIHtcbiAgICB0aGlzLm9wZW5lZC5zZXQoIXRoaXMub3BlbmVkKCkpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVBpbm5lZCgpIHtcbiAgICB0aGlzLnBpbm5lZC5zZXQoIXRoaXMucGlubmVkKCkpO1xuICB9XG5cbn1cbiJdfQ==
@@ -1,145 +0,0 @@
1
- import { Inject, Injectable, INJECTOR, Optional, } from '@angular/core';
2
- import { combineLatest, from, of, ReplaySubject, } from 'rxjs';
3
- import { IsNavigationDividerItem, IsNavigationInsertItem, IsNavigationItem, } from './navigation-item';
4
- import { RXAP_NAVIGATION_CONFIG, RXAP_NAVIGATION_CONFIG_INSERTS, } from '../tokens';
5
- import { catchError, map, switchMap, } from 'rxjs/operators';
6
- import * as i0 from "@angular/core";
7
- export class NavigationService {
8
- constructor(navigation, injector, inserts = null) {
9
- this.injector = injector;
10
- this.inserts = new Map();
11
- this.navigation$ = new ReplaySubject(1);
12
- if (typeof navigation === 'function') {
13
- this.navigation = navigation();
14
- }
15
- else {
16
- this.navigation = navigation;
17
- }
18
- if (inserts) {
19
- Object.entries(inserts).forEach(([id, insert]) => this.insert(id, insert, false));
20
- }
21
- this.updateNavigation();
22
- this.config$ = this.navigation$.pipe(switchMap((navigationWithoutStatusCheck) => this.checkNavigationStatusProviders(navigationWithoutStatusCheck)));
23
- }
24
- /**
25
- * @deprecated use add instead
26
- * @param id
27
- * @param value
28
- * @param update
29
- */
30
- insert(id, value, update = true) {
31
- this.add(id, value, update);
32
- }
33
- add(id, value, update = true) {
34
- this.inserts.set(id, value);
35
- if (update) {
36
- this.updateNavigation();
37
- }
38
- }
39
- has(id) {
40
- return this.inserts.has(id);
41
- }
42
- get(id) {
43
- return this.inserts.get(id);
44
- }
45
- remove(id, update = true) {
46
- this.inserts.delete(id);
47
- if (update) {
48
- this.updateNavigation();
49
- }
50
- }
51
- updateNavigation() {
52
- this.navigation$.next(this.replaceInserts(this.navigation));
53
- }
54
- /**
55
- * @internal
56
- * @param navigationItem
57
- */
58
- checkNavigationItemStatusProviders(navigationItem) {
59
- if (IsNavigationDividerItem(navigationItem) || !navigationItem.status) {
60
- return of(navigationItem);
61
- }
62
- const isVisibleArray$ = navigationItem.status
63
- .map((statusToken) => this.injector.get(statusToken))
64
- .map((status) => {
65
- const isVisible = status.isVisible(navigationItem);
66
- if (typeof isVisible === 'boolean') {
67
- return of(isVisible);
68
- }
69
- else {
70
- return from(isVisible);
71
- }
72
- })
73
- .map(isVisible$ => isVisible$.pipe(catchError(e => {
74
- console.error('isVisible method failed: ' +
75
- e.message);
76
- return of(false);
77
- })));
78
- // TODO : dont wait for all status services to complete, but cancel waiting if one returns false
79
- return combineLatest(isVisibleArray$).pipe(map((isVisibleArray) => isVisibleArray.reduce((acc, isVisible) => acc && isVisible, true)), map((isVisible) => (isVisible ? navigationItem : null)), switchMap((navigationItemOrNull) => {
80
- if (navigationItemOrNull) {
81
- if (navigationItemOrNull.children?.length) {
82
- return this.checkNavigationStatusProviders(navigationItemOrNull.children).pipe(map((children) => ({
83
- ...navigationItemOrNull,
84
- children,
85
- })));
86
- }
87
- return of(navigationItemOrNull);
88
- }
89
- return of(null);
90
- }));
91
- }
92
- /**
93
- * @internal
94
- * @param navigationItem
95
- */
96
- checkNavigationStatusProviders(navigation) {
97
- return combineLatest(navigation.map((navigationItem) => this.checkNavigationItemStatusProviders(navigationItem))).pipe(map((navigationWithNullItems) => {
98
- const cleanNavigation = [];
99
- for (const navigationItem of navigationWithNullItems) {
100
- if (navigationItem !== null) {
101
- cleanNavigation.push(navigationItem);
102
- }
103
- }
104
- return cleanNavigation;
105
- }));
106
- }
107
- replaceInserts(navigationWithInserts) {
108
- const navigation = [];
109
- for (const navigationItem of navigationWithInserts) {
110
- if (IsNavigationInsertItem(navigationItem)) {
111
- if (this.inserts.has(navigationItem.insert)) {
112
- navigation.push(...this.replaceInserts(this.inserts.get(navigationItem.insert)));
113
- }
114
- }
115
- else if (IsNavigationItem(navigationItem)) {
116
- navigation.push({
117
- ...navigationItem,
118
- children: this.replaceInserts(navigationItem.children ?? []),
119
- });
120
- }
121
- else if (IsNavigationDividerItem(navigationItem)) {
122
- navigation.push(navigationItem);
123
- }
124
- }
125
- return navigation;
126
- }
127
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: NavigationService, deps: [{ token: RXAP_NAVIGATION_CONFIG }, { token: INJECTOR }, { token: RXAP_NAVIGATION_CONFIG_INSERTS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
128
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: NavigationService, providedIn: 'root' }); }
129
- }
130
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: NavigationService, decorators: [{
131
- type: Injectable,
132
- args: [{ providedIn: 'root' }]
133
- }], ctorParameters: () => [{ type: undefined, decorators: [{
134
- type: Inject,
135
- args: [RXAP_NAVIGATION_CONFIG]
136
- }] }, { type: undefined, decorators: [{
137
- type: Inject,
138
- args: [INJECTOR]
139
- }] }, { type: undefined, decorators: [{
140
- type: Optional
141
- }, {
142
- type: Inject,
143
- args: [RXAP_NAVIGATION_CONFIG_INSERTS]
144
- }] }] });
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci9sYXlvdXQvc3JjL2xpYi9uYXZpZ2F0aW9uL25hdmlnYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsTUFBTSxFQUNOLFVBQVUsRUFDVixRQUFRLEVBQ1IsUUFBUSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxhQUFhLEVBQ2IsSUFBSSxFQUVKLEVBQUUsRUFDRixhQUFhLEdBQ2QsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixnQkFBZ0IsR0FLakIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLDhCQUE4QixHQUMvQixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQ0wsVUFBVSxFQUNWLEdBQUcsRUFDSCxTQUFTLEdBQ1YsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFHeEIsTUFBTSxPQUFPLGlCQUFpQjtJQVM1QixZQUVJLFVBQWUsRUFFQSxRQUFrQixFQUdqQyxVQUFzQixJQUFJO1FBSFgsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQVY3QixZQUFPLEdBQUcsSUFBSSxHQUFHLEVBQWlDLENBQUM7UUFJMUMsZ0JBQVcsR0FBRyxJQUFJLGFBQWEsQ0FBYSxDQUFDLENBQUMsQ0FBQztRQVc5RCxJQUFJLE9BQU8sVUFBVSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDakMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUMvQixDQUFDO1FBQ0QsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFD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QUFDO1FBRUQsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQzs4R0FyTFUsaUJBQWlCLGtCQVVsQixzQkFBc0IsYUFFdEIsUUFBUSxhQUdSLDhCQUE4QjtrSEFmN0IsaUJBQWlCLGNBREosTUFBTTs7MkZBQ25CLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQVc3QixNQUFNOzJCQUFDLHNCQUFzQjs7MEJBRTdCLE1BQU07MkJBQUMsUUFBUTs7MEJBRWYsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyw4QkFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBJbmplY3QsXG4gIEluamVjdGFibGUsXG4gIElOSkVDVE9SLFxuICBPcHRpb25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBjb21iaW5lTGF0ZXN0LFxuICBmcm9tLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgUmVwbGF5U3ViamVjdCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBJc05hdmlnYXRpb25EaXZpZGVySXRlbSxcbiAgSXNOYXZpZ2F0aW9uSW5zZXJ0SXRlbSxcbiAgSXNOYXZpZ2F0aW9uSXRlbSxcbiAgTmF2aWdhdGlvbixcbiAgTmF2aWdhdGlvbkRpdmlkZXJJdGVtLFxuICBOYXZpZ2F0aW9uSXRlbSxcbiAgTmF2aWdhdGlvbldpdGhJbnNlcnRzLFxufSBmcm9tICcuL25hdmlnYXRpb24taXRlbSc7XG5pbXBvcnQge1xuICBSWEFQX05BVklHQVRJT05fQ09ORklHLFxuICBSWEFQX05BVklHQVRJT05fQ09ORklHX0lOU0VSVFMsXG59IGZyb20gJy4uL3Rva2Vucyc7XG5pbXBvcnQge1xuICBjYXRjaEVycm9yLFxuICBtYXAsXG4gIHN3aXRjaE1hcCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE5hdmlnYXRpb25TZXJ2aWNlIHtcbiAgcHVibGljIHJlYWRvbmx5IGNvbmZpZyQ6IE9ic2VydmFibGU8TmF2aWdhdGlvbj47XG5cbiAgcHJpdmF0ZSBpbnNlcnRzID0gbmV3IE1hcDxzdHJpbmcsIE5hdmlnYXRpb25XaXRoSW5zZXJ0cz4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IG5hdmlnYXRpb246IE5hdmlnYXRpb25XaXRoSW5zZXJ0cztcblxuICBwcml2YXRlIHJlYWRvbmx5IG5hdmlnYXRpb24kID0gbmV3IFJlcGxheVN1YmplY3Q8TmF2aWdhdGlvbj4oMSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChSWEFQX05BVklHQVRJT05fQ09ORklHKVxuICAgICAgbmF2aWdhdGlvbjogYW55LFxuICAgIEBJbmplY3QoSU5KRUNUT1IpXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KFJYQVBfTkFWSUdBVElPTl9DT05GSUdfSU5TRVJUUylcbiAgICAgIGluc2VydHM6IGFueSB8IG51bGwgPSBudWxsLFxuICApIHtcbiAgICBpZiAodHlwZW9mIG5hdmlnYXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMubmF2aWdhdGlvbiA9IG5hdmlnYXRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5uYXZpZ2F0aW9uID0gbmF2aWdhdGlvbjtcbiAgICB9XG4gICAgaWYgKGluc2VydHMpIHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKGluc2VydHMpLmZvckVhY2goKFsgaWQsIGluc2VydCBdOiBbIHN0cmluZywgYW55IF0pID0+XG4gICAgICAgIHRoaXMuaW5zZXJ0KGlkLCBpbnNlcnQsIGZhbHNlKSxcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlTmF2aWdhdGlvbigpO1xuICAgIHRoaXMuY29uZmlnJCA9IHRoaXMubmF2aWdhdGlvbiQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgobmF2aWdhdGlvbldpdGhvdXRTdGF0dXNDaGVjaykgPT5cbiAgICAgICAgdGhpcy5jaGVja05hdmlnYXRpb25TdGF0dXNQcm92aWRlcnMobmF2aWdhdGlvbldpdGhvdXRTdGF0dXNDaGVjayksXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGFkZCBpbnN0ZWFkXG4gICAqIEBwYXJhbSBpZFxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICogQHBhcmFtIHVwZGF0ZVxuICAgKi9cbiAgcHVibGljIGluc2VydChcbiAgICBpZDogc3RyaW5nLFxuICAgIHZhbHVlOiBOYXZpZ2F0aW9uV2l0aEluc2VydHMsXG4gICAgdXBkYXRlID0gdHJ1ZSxcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5hZGQoaWQsIHZhbHVlLCB1cGRhdGUpO1xuICB9XG5cbiAgcHVibGljIGFkZChcbiAgICBpZDogc3RyaW5nLFxuICAgIHZhbHVlOiBOYXZpZ2F0aW9uV2l0aEluc2VydHMsXG4gICAgdXBkYXRlID0gdHJ1ZSxcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5pbnNlcnRzLnNldChpZCwgdmFsdWUpO1xuICAgIGlmICh1cGRhdGUpIHtcbiAgICAgIHRoaXMudXBkYXRlTmF2aWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYXMoaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmluc2VydHMuaGFzKGlkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQoaWQ6IHN0cmluZyk6IE5hdmlnYXRpb25XaXRoSW5zZXJ0cyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuaW5zZXJ0cy5nZXQoaWQpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZShpZDogc3RyaW5nLCB1cGRhdGUgPSB0cnVlKTogdm9pZCB7XG4gICAgdGhpcy5pbnNlcnRzLmRlbGV0ZShpZCk7XG4gICAgaWYgKHVwZGF0ZSkge1xuICAgICAgdGhpcy51cGRhdGVOYXZpZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZU5hdmlnYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5uYXZpZ2F0aW9uJC5uZXh0KHRoaXMucmVwbGFjZUluc2VydHModGhpcy5uYXZpZ2F0aW9uKSk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEBwYXJhbSBuYXZpZ2F0aW9uSXRlbVxuICAgKi9cbiAgcHVibGljIGNoZWNrTmF2aWdhdGlvbkl0ZW1TdGF0dXNQcm92aWRlcnMoXG4gICAgbmF2aWdhdGlvbkl0ZW06IE5hdmlnYXRpb25JdGVtIHwgTmF2aWdhdGlvbkRpdmlkZXJJdGVtLFxuICApOiBPYnNlcnZhYmxlPE5hdmlnYXRpb25JdGVtIHwgTmF2aWdhdGlvbkRpdmlkZXJJdGVtIHwgbnVsbD4ge1xuICAgIGlmIChJc05hdmlnYXRpb25EaXZpZGVySXRlbShuYXZpZ2F0aW9uSXRlbSkgfHwgIW5hdmlnYXRpb25JdGVtLnN0YXR1cykge1xuICAgICAgcmV0dXJuIG9mKG5hdmlnYXRpb25JdGVtKTtcbiAgICB9XG4gICAgY29uc3QgaXNWaXNpYmxlQXJyYXkkOiBBcnJheTxPYnNlcnZhYmxlPGJvb2xlYW4+PiA9IG5hdmlnYXRpb25JdGVtLnN0YXR1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHN0YXR1c1Rva2VuKSA9PiB0aGlzLmluamVjdG9yLmdldChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c1Rva2VuKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKChzdGF0dXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzVmlzaWJsZSA9IHN0YXR1cy5pc1Zpc2libGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25JdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaXNWaXNpYmxlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGlzVmlzaWJsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnJvbShpc1Zpc2libGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChpc1Zpc2libGUkID0+IGlzVmlzaWJsZSQucGlwZShjYXRjaEVycm9yKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignaXNWaXNpYmxlIG1ldGhvZCBmYWlsZWQ6ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpO1xuICAgIC8vIFRPRE8gOiBkb250IHdhaXQgZm9yIGFsbCBzdGF0dXMgc2VydmljZXMgdG8gY29tcGxldGUsIGJ1dCBjYW5jZWwgd2FpdGluZyBpZiBvbmUgcmV0dXJucyBmYWxzZVxuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KGlzVmlzaWJsZUFycmF5JCkucGlwZShcbiAgICAgIG1hcCgoaXNWaXNpYmxlQXJyYXkpID0+XG4gICAgICAgIGlzVmlzaWJsZUFycmF5LnJlZHVjZSgoYWNjLCBpc1Zpc2libGUpID0+IGFjYyAmJiBpc1Zpc2libGUsIHRydWUpLFxuICAgICAgKSxcbiAgICAgIG1hcCgoaXNWaXNpYmxlKSA9PiAoaXNWaXNpYmxlID8gbmF2aWdhdGlvbkl0ZW0gOiBudWxsKSksXG4gICAgICBzd2l0Y2hNYXAoKG5hdmlnYXRpb25JdGVtT3JOdWxsKSA9PiB7XG4gICAgICAgIGlmIChuYXZpZ2F0aW9uSXRlbU9yTnVsbCkge1xuICAgICAgICAgIGlmIChuYXZpZ2F0aW9uSXRlbU9yTnVsbC5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jaGVja05hdmlnYXRpb25TdGF0dXNQcm92aWRlcnMoXG4gICAgICAgICAgICAgIG5hdmlnYXRpb25JdGVtT3JOdWxsLmNoaWxkcmVuLFxuICAgICAgICAgICAgKS5waXBlKFxuICAgICAgICAgICAgICBtYXAoKGNoaWxkcmVuKSA9PiAoe1xuICAgICAgICAgICAgICAgIC4uLm5hdmlnYXRpb25JdGVtT3JOdWxsLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuLFxuICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gb2YobmF2aWdhdGlvbkl0ZW1Pck51bGwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEBwYXJhbSBuYXZpZ2F0aW9uSXRlbVxuICAgKi9cbiAgcHVibGljIGNoZWNrTmF2aWdhdGlvblN0YXR1c1Byb3ZpZGVycyhcbiAgICBuYXZpZ2F0aW9uOiBOYXZpZ2F0aW9uLFxuICApOiBPYnNlcnZhYmxlPE5hdmlnYXRpb24+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChcbiAgICAgIG5hdmlnYXRpb24ubWFwKChuYXZpZ2F0aW9uSXRlbSkgPT5cbiAgICAgICAgdGhpcy5jaGVja05hdmlnYXRpb25JdGVtU3RhdHVzUHJvdmlkZXJzKG5hdmlnYXRpb25JdGVtKSxcbiAgICAgICksXG4gICAgKS5waXBlKFxuICAgICAgbWFwKChuYXZpZ2F0aW9uV2l0aE51bGxJdGVtcykgPT4ge1xuICAgICAgICBjb25zdCBjbGVhbk5hdmlnYXRpb246IE5hdmlnYXRpb24gPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IG5hdmlnYXRpb25JdGVtIG9mIG5hdmlnYXRpb25XaXRoTnVsbEl0ZW1zKSB7XG4gICAgICAgICAgaWYgKG5hdmlnYXRpb25JdGVtICE9PSBudWxsKSB7XG4gICAgICAgICAgICBjbGVhbk5hdmlnYXRpb24ucHVzaChuYXZpZ2F0aW9uSXRlbSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNsZWFuTmF2aWdhdGlvbjtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VJbnNlcnRzKFxuICAgIG5hdmlnYXRpb25XaXRoSW5zZXJ0czogTmF2aWdhdGlvbldpdGhJbnNlcnRzLFxuICApOiBOYXZpZ2F0aW9uIHtcbiAgICBjb25zdCBuYXZpZ2F0aW9uOiBOYXZpZ2F0aW9uID0gW107XG5cbiAgICBmb3IgKGNvbnN0IG5hdmlnYXRpb25JdGVtIG9mIG5hdmlnYXRpb25XaXRoSW5zZXJ0cykge1xuICAgICAgaWYgKElzTmF2aWdhdGlvbkluc2VydEl0ZW0obmF2aWdhdGlvbkl0ZW0pKSB7XG4gICAgICAgIGlmICh0aGlzLmluc2VydHMuaGFzKG5hdmlnYXRpb25JdGVtLmluc2VydCkpIHtcbiAgICAgICAgICBuYXZpZ2F0aW9uLnB1c2goXG4gICAgICAgICAgICAuLi50aGlzLnJlcGxhY2VJbnNlcnRzKHRoaXMuaW5zZXJ0cy5nZXQobmF2aWdhdGlvbkl0ZW0uaW5zZXJ0KSEpLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoSXNOYXZpZ2F0aW9uSXRlbShuYXZpZ2F0aW9uSXRlbSkpIHtcbiAgICAgICAgbmF2aWdhdGlvbi5wdXNoKHtcbiAgICAgICAgICAuLi5uYXZpZ2F0aW9uSXRlbSxcbiAgICAgICAgICBjaGlsZHJlbjogdGhpcy5yZXBsYWNlSW5zZXJ0cyhuYXZpZ2F0aW9uSXRlbS5jaGlsZHJlbiA/PyBbXSksXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChJc05hdmlnYXRpb25EaXZpZGVySXRlbShuYXZpZ2F0aW9uSXRlbSkpIHtcbiAgICAgICAgbmF2aWdhdGlvbi5wdXNoKG5hdmlnYXRpb25JdGVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmF2aWdhdGlvbjtcbiAgfVxufVxuIl19
@@ -1,22 +0,0 @@
1
- import { Pipe, } from '@angular/core';
2
- import { ReplaceRouterPathsService } from './replace-router-paths.service';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "./replace-router-paths.service";
5
- export class ReplaceRouterPathsPipe {
6
- constructor(rrp) {
7
- this.rrp = rrp;
8
- }
9
- transform(routerLink) {
10
- return this.rrp.transform(routerLink);
11
- }
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ReplaceRouterPathsPipe, deps: [{ token: i1.ReplaceRouterPathsService }], target: i0.ɵɵFactoryTarget.Pipe }); }
13
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.1", ngImport: i0, type: ReplaceRouterPathsPipe, isStandalone: true, name: "replaceRouterPaths" }); }
14
- }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ReplaceRouterPathsPipe, decorators: [{
16
- type: Pipe,
17
- args: [{
18
- name: 'replaceRouterPaths',
19
- standalone: true,
20
- }]
21
- }], ctorParameters: () => [{ type: i1.ReplaceRouterPathsService }] });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZS1yb3V0ZXItcGF0aHMucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvbmF2aWdhdGlvbi9yZXBsYWNlLXJvdXRlci1wYXRocy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxJQUFJLEdBRUwsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7OztBQU0zRSxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLFlBQ1MsR0FBOEI7UUFBOUIsUUFBRyxHQUFILEdBQUcsQ0FBMkI7SUFFdkMsQ0FBQztJQUVELFNBQVMsQ0FBQyxVQUFvQjtRQUM1QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7OEdBUlUsc0JBQXNCOzRHQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBSmxDLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLG9CQUFvQjtvQkFDMUIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgUGlwZSxcbiAgUGlwZVRyYW5zZm9ybSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSZXBsYWNlUm91dGVyUGF0aHNTZXJ2aWNlIH0gZnJvbSAnLi9yZXBsYWNlLXJvdXRlci1wYXRocy5zZXJ2aWNlJztcblxuQFBpcGUoe1xuICBuYW1lOiAncmVwbGFjZVJvdXRlclBhdGhzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgUmVwbGFjZVJvdXRlclBhdGhzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcnJwOiBSZXBsYWNlUm91dGVyUGF0aHNTZXJ2aWNlLFxuICApIHtcbiAgfVxuXG4gIHRyYW5zZm9ybShyb3V0ZXJMaW5rOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy5ycnAudHJhbnNmb3JtKHJvdXRlckxpbmspO1xuICB9XG59XG5cblxuIl19
@@ -1,15 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { of, } from 'rxjs';
3
- import * as i0 from "@angular/core";
4
- export class ReplaceRouterPathsService {
5
- transform(routerLink) {
6
- return of(routerLink);
7
- }
8
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ReplaceRouterPathsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
9
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ReplaceRouterPathsService, providedIn: 'root' }); }
10
- }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ReplaceRouterPathsService, decorators: [{
12
- type: Injectable,
13
- args: [{ providedIn: 'root' }]
14
- }] });
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGFjZS1yb3V0ZXItcGF0aHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvbmF2aWdhdGlvbi9yZXBsYWNlLXJvdXRlci1wYXRocy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUVMLEVBQUUsR0FDSCxNQUFNLE1BQU0sQ0FBQzs7QUFHZCxNQUFNLE9BQU8seUJBQXlCO0lBRTdCLFNBQVMsQ0FBQyxVQUFvQjtRQUNuQyxPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4QixDQUFDOzhHQUpVLHlCQUF5QjtrSEFBekIseUJBQXlCLGNBRFosTUFBTTs7MkZBQ25CLHlCQUF5QjtrQkFEckMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBPYnNlcnZhYmxlLFxuICBvZixcbn0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUmVwbGFjZVJvdXRlclBhdGhzU2VydmljZSB7XG5cbiAgcHVibGljIHRyYW5zZm9ybShyb3V0ZXJMaW5rOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gb2Yocm91dGVyTGluayk7XG4gIH1cblxufVxuIl19
@@ -1,22 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { BehaviorSubject } from 'rxjs';
3
- import { ConfigService } from '@rxap/config';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@rxap/config";
6
- export class SidenavComponentService {
7
- constructor(config) {
8
- this.config = config;
9
- this.collapsed$ = new BehaviorSubject(true);
10
- this.collapsed$.next(this.config.get('navigation.collapsed', this.collapsed$.value));
11
- }
12
- toggleNavigationCollapse() {
13
- this.collapsed$.next(!this.collapsed$.value);
14
- }
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: SidenavComponentService, deps: [{ token: i1.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
16
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: SidenavComponentService, providedIn: 'root' }); }
17
- }
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: SidenavComponentService, decorators: [{
19
- type: Injectable,
20
- args: [{ providedIn: 'root' }]
21
- }], ctorParameters: () => [{ type: i1.ConfigService }] });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi5jb21wb25lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvc2lkZW5hdi9zaWRlbmF2LmNvbXBvbmVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7QUFHN0MsTUFBTSxPQUFPLHVCQUF1QjtJQUlsQyxZQUE2QixNQUFxQjtRQUFyQixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBRmxDLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUdyRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVNLHdCQUF3QjtRQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQzs4R0FWVSx1QkFBdUI7a0hBQXZCLHVCQUF1QixjQURWLE1BQU07OzJGQUNuQix1QkFBdUI7a0JBRG5DLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQHJ4YXAvY29uZmlnJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBTaWRlbmF2Q29tcG9uZW50U2VydmljZSB7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNvbGxhcHNlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRydWUpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY29uZmlnOiBDb25maWdTZXJ2aWNlKSB7XG4gICAgdGhpcy5jb2xsYXBzZWQkLm5leHQodGhpcy5jb25maWcuZ2V0KCduYXZpZ2F0aW9uLmNvbGxhcHNlZCcsIHRoaXMuY29sbGFwc2VkJC52YWx1ZSkpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZU5hdmlnYXRpb25Db2xsYXBzZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbGxhcHNlZCQubmV4dCghdGhpcy5jb2xsYXBzZWQkLnZhbHVlKTtcbiAgfVxuXG59XG4iXX0=
@@ -1,28 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Inject, } from '@angular/core';
2
- import { VersionService, } from '@rxap/services';
3
- import { tap } from 'rxjs/operators';
4
- import { KeyValuePipe, NgFor, } from '@angular/common';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@rxap/services";
7
- export class VersionComponent {
8
- constructor(version) {
9
- this.version = version;
10
- }
11
- ngOnInit() {
12
- this.modules = this.version.get();
13
- this.subscription = this.version.update$.pipe(tap(() => this.modules = this.version.get())).subscribe();
14
- }
15
- ngOnDestroy() {
16
- this.subscription?.unsubscribe();
17
- }
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: VersionComponent, deps: [{ token: VersionService }], target: i0.ɵɵFactoryTarget.Component }); }
19
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: VersionComponent, isStandalone: true, selector: "rxap-version", ngImport: i0, template: "<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", styles: [".version{width:100%;font-size:9px;padding:8px}.version .name{padding-bottom:12px;font-size:10px}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
20
- }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: VersionComponent, decorators: [{
22
- type: Component,
23
- args: [{ selector: 'rxap-version', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgFor, KeyValuePipe], template: "<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", styles: [".version{width:100%;font-size:9px;padding:8px}.version .name{padding-bottom:12px;font-size:10px}\n"] }]
24
- }], ctorParameters: () => [{ type: i1.VersionService, decorators: [{
25
- type: Inject,
26
- args: [VersionService]
27
- }] }] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL2xheW91dC9zcmMvbGliL3NpZGVuYXYvdmVyc2lvbi92ZXJzaW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvc2lkZW5hdi92ZXJzaW9uL3ZlcnNpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsTUFBTSxHQUdQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxjQUFjLEdBQ2YsTUFBTSxnQkFBZ0IsQ0FBQztBQUt4QixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUNMLFlBQVksRUFDWixLQUFLLEdBQ04sTUFBTSxpQkFBaUIsQ0FBQzs7O0FBVXpCLE1BQU0sT0FBTyxnQkFBZ0I7SUFNM0IsWUFDa0MsT0FBdUI7UUFBdkIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7SUFFekQsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQzNDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FDN0MsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7OEdBcEJVLGdCQUFnQixrQkFPakIsY0FBYztrR0FQYixnQkFBZ0Isd0VDOUI3QixnVkFPQSw0SkRxQmEsS0FBSyw4R0FBRSxZQUFZOzsyRkFFbkIsZ0JBQWdCO2tCQVI1QixTQUFTOytCQUNFLGNBQWMsbUJBR1AsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBRSxLQUFLLEVBQUUsWUFBWSxDQUFFOzswQkFTN0IsTUFBTTsyQkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBWZXJzaW9uLFxuICBWZXJzaW9uU2VydmljZSxcbn0gZnJvbSAnQHJ4YXAvc2VydmljZXMnO1xuaW1wb3J0IHtcbiAgS2V5VmFsdWUsXG4gIFJlcXVpcmVkLFxufSBmcm9tICdAcnhhcC91dGlsaXRpZXMnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBLZXlWYWx1ZVBpcGUsXG4gIE5nRm9yLFxufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyeGFwLXZlcnNpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vdmVyc2lvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWyAnLi92ZXJzaW9uLmNvbXBvbmVudC5zY3NzJyBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogWyBOZ0ZvciwgS2V5VmFsdWVQaXBlIF0sXG59KVxuZXhwb3J0IGNsYXNzIFZlcnNpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgcHVibGljIG1vZHVsZXMhOiBLZXlWYWx1ZTxWZXJzaW9uPjtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFZlcnNpb25TZXJ2aWNlKSBwcml2YXRlIHZlcnNpb246IFZlcnNpb25TZXJ2aWNlLFxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm1vZHVsZXMgPSB0aGlzLnZlcnNpb24uZ2V0KCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnZlcnNpb24udXBkYXRlJC5waXBlKFxuICAgICAgdGFwKCgpID0+IHRoaXMubW9kdWxlcyA9IHRoaXMudmVyc2lvbi5nZXQoKSksXG4gICAgKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwidmVyc2lvbiBmbGV4IGZsZXgtY29sIGdhcC0yXCI+XG4gIDxkaXYgKm5nRm9yPVwibGV0IG1vZHVsZSBvZiBtb2R1bGVzIHwga2V5dmFsdWVcIiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cbiAgICA8c3BhbiBjbGFzcz1cIm5hbWUgZ3Jvdy0wXCI+e3ttb2R1bGUudmFsdWUubmFtZX19PC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwic2VtYW50aWMgZ3Jvdy0wXCI+e3ttb2R1bGUudmFsdWUuc2VtYW50aWN9fTwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cImhhc2ggZ3Jvdy0wXCI+e3ttb2R1bGUudmFsdWUuaGFzaH19PC9zcGFuPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,30 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
2
- import { MatIconModule } from '@angular/material/icon';
3
- import { NgIf } from '@angular/common';
4
- import { MatButtonModule } from '@angular/material/button';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/material/button";
7
- import * as i2 from "@angular/material/icon";
8
- export class ToggleWindowSidenavButtonComponent {
9
- constructor() {
10
- this.openWindowSidenav = false;
11
- this.openWindowSidenavChange = new EventEmitter();
12
- }
13
- toggle() {
14
- this.openWindowSidenav = !this.openWindowSidenav;
15
- this.openWindowSidenavChange.emit(this.openWindowSidenav);
16
- }
17
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ToggleWindowSidenavButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
18
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: ToggleWindowSidenavButtonComponent, isStandalone: true, selector: "rxap-toggle-window-sidenav-button", inputs: { openWindowSidenav: "openWindowSidenav" }, outputs: { openWindowSidenavChange: "openWindowSidenavChange" }, host: { classAttribute: "rxap-toggle-window-sidenav-button" }, ngImport: i0, template: "<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", styles: [".toggle-button{position:absolute;top:70px;right:0;z-index:10000;border-radius:15px 0 0 15px;border:1px solid black;background:#000}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
19
- }
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ToggleWindowSidenavButtonComponent, decorators: [{
21
- type: Component,
22
- args: [{ selector: 'rxap-toggle-window-sidenav-button', changeDetection: ChangeDetectionStrategy.OnPush, host: {
23
- class: 'rxap-toggle-window-sidenav-button',
24
- }, standalone: true, imports: [MatButtonModule, NgIf, MatIconModule], template: "<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", styles: [".toggle-button{position:absolute;top:70px;right:0;z-index:10000;border-radius:15px 0 0 15px;border:1px solid black;background:#000}\n"] }]
25
- }], propDecorators: { openWindowSidenav: [{
26
- type: Input
27
- }], openWindowSidenavChange: [{
28
- type: Output
29
- }] } });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLXdpbmRvdy1zaWRlbmF2LWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL2xheW91dC9zcmMvbGliL3RvZ2dsZS13aW5kb3ctc2lkZW5hdi1idXR0b24vdG9nZ2xlLXdpbmRvdy1zaWRlbmF2LWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL2xheW91dC9zcmMvbGliL3RvZ2dsZS13aW5kb3ctc2lkZW5hdi1idXR0b24vdG9nZ2xlLXdpbmRvdy1zaWRlbmF2LWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQWMzRCxNQUFNLE9BQU8sa0NBQWtDO0lBWi9DO1FBZVMsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBRzFCLDRCQUF1QixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7S0FPOUQ7SUFMUSxNQUFNO1FBQ1gsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQ2pELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDNUQsQ0FBQzs4R0FYVSxrQ0FBa0M7a0dBQWxDLGtDQUFrQyxpUkN2Qi9DLGdXQVVBLDhMRFdhLGVBQWUsNElBQUUsSUFBSSw0RkFBRSxhQUFhOzsyRkFFcEMsa0NBQWtDO2tCQVo5QyxTQUFTOytCQUNFLG1DQUFtQyxtQkFHNUIsdUJBQXVCLENBQUMsTUFBTSxRQUV6Qzt3QkFDSixLQUFLLEVBQUUsbUNBQW1DO3FCQUMzQyxjQUNXLElBQUksV0FDUCxDQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFFOzhCQUsxQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBSUMsdUJBQXVCO3NCQUQ3QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncnhhcC10b2dnbGUtd2luZG93LXNpZGVuYXYtYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RvZ2dsZS13aW5kb3ctc2lkZW5hdi1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsgJy4vdG9nZ2xlLXdpbmRvdy1zaWRlbmF2LWJ1dHRvbi5jb21wb25lbnQuc2NzcycgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taG9zdC1tZXRhZGF0YS1wcm9wZXJ0eVxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdyeGFwLXRvZ2dsZS13aW5kb3ctc2lkZW5hdi1idXR0b24nLFxuICB9LFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbIE1hdEJ1dHRvbk1vZHVsZSwgTmdJZiwgTWF0SWNvbk1vZHVsZSBdLFxufSlcbmV4cG9ydCBjbGFzcyBUb2dnbGVXaW5kb3dTaWRlbmF2QnV0dG9uQ29tcG9uZW50IHtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgb3BlbldpbmRvd1NpZGVuYXYgPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIG9wZW5XaW5kb3dTaWRlbmF2Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHB1YmxpYyB0b2dnbGUoKSB7XG4gICAgdGhpcy5vcGVuV2luZG93U2lkZW5hdiA9ICF0aGlzLm9wZW5XaW5kb3dTaWRlbmF2O1xuICAgIHRoaXMub3BlbldpbmRvd1NpZGVuYXZDaGFuZ2UuZW1pdCh0aGlzLm9wZW5XaW5kb3dTaWRlbmF2KTtcbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwidG9nZ2xlLWJ1dHRvblwiPlxuICA8YnV0dG9uIChjbGljayk9XCJ0b2dnbGUoKVwiIG1hdC1pY29uLWJ1dHRvbj5cbiAgICA8bmctdGVtcGxhdGUgW25nSWZFbHNlXT1cImhpZGVcIiBbbmdJZl09XCIhb3BlbldpbmRvd1NpZGVuYXZcIj5cbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiYXJyb3ctbGVmdC1ib2xkXCI+PC9tYXQtaWNvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjaGlkZT5cbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiYXJyb3ctcmlnaHQtYm9sZFwiPjwvbWF0LWljb24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
@@ -1,54 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Inject, } from '@angular/core';
2
- import { WindowContainerSidenavService, } from '@rxap/services';
3
- import { ComponentPortal, PortalModule, } from '@angular/cdk/portal';
4
- import { tap } from 'rxjs/operators';
5
- import { Subscription } from 'rxjs';
6
- import { NgFor } from '@angular/common';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/cdk/portal";
9
- import * as i2 from "@rxap/services";
10
- export class WindowContainerSidenavComponent {
11
- constructor(service) {
12
- this.service = service;
13
- this.portals = new Map();
14
- this.subscription = new Subscription();
15
- }
16
- ngOnInit() {
17
- const components = this.service.getAll();
18
- for (const component of components) {
19
- this.add(component);
20
- }
21
- this.subscription.add(this.service.add$.pipe(tap(component => this.add(component))).subscribe());
22
- this.subscription.add(this.service.remove$.pipe(tap(component => this.remove(component))).subscribe());
23
- }
24
- ngOnDestroy() {
25
- this.subscription.unsubscribe();
26
- }
27
- trackBy(index, id) {
28
- return id;
29
- }
30
- add(component) {
31
- if (this.portals.has(component.id)) {
32
- throw new Error(`Component portal with id ${component.id} already exists`);
33
- }
34
- const portal = new ComponentPortal(component.component, component.viewContainerRef, component.injector, component.componentFactoryResolver);
35
- this.portals.set(component.id, portal);
36
- }
37
- remove(component) {
38
- if (this.portals.has(component.id)) {
39
- const portal = this.portals.get(component.id);
40
- this.portals.delete(component.id);
41
- portal.detach();
42
- }
43
- }
44
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: WindowContainerSidenavComponent, deps: [{ token: WindowContainerSidenavService }], target: i0.ɵɵFactoryTarget.Component }); }
45
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: WindowContainerSidenavComponent, isStandalone: true, selector: "rxap-window-container-sidenav", ngImport: i0, template: "<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", styles: [""], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
46
- }
47
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: WindowContainerSidenavComponent, decorators: [{
48
- type: Component,
49
- args: [{ selector: 'rxap-window-container-sidenav', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgFor, PortalModule], template: "<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" }]
50
- }], ctorParameters: () => [{ type: i2.WindowContainerSidenavService, decorators: [{
51
- type: Inject,
52
- args: [WindowContainerSidenavService]
53
- }] }] });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93LWNvbnRhaW5lci1zaWRlbmF2LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvd2luZG93LWNvbnRhaW5lci1zaWRlbmF2L3dpbmRvdy1jb250YWluZXItc2lkZW5hdi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL2xheW91dC9zcmMvbGliL3dpbmRvdy1jb250YWluZXItc2lkZW5hdi93aW5kb3ctY29udGFpbmVyLXNpZGVuYXYuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsTUFBTSxHQUdQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCw2QkFBNkIsR0FDOUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsZUFBZSxFQUNmLFlBQVksR0FDYixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQVV4QyxNQUFNLE9BQU8sK0JBQStCO0lBTTFDLFlBRWtCLE9BQXNDO1FBQXRDLFlBQU8sR0FBUCxPQUFPLENBQStCO1FBTmpELFlBQU8sR0FBRyxJQUFJLEdBQUcsRUFBZ0MsQ0FBQztRQUVqRCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFNMUMsQ0FBQztJQUVNLFFBQVE7UUFDYixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3pDLEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0QixDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUMxQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQ3RDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDN0MsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUN6QyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRU0sT0FBTyxDQUFDLEtBQWEsRUFBRSxFQUFVO1FBQ3RDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVPLEdBQUcsQ0FBQyxTQUE2QjtRQUN2QyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTZCLFNBQVMsQ0FBQyxFQUFHLGlCQUFpQixDQUFDLENBQUM7UUFDL0UsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLElBQUksZUFBZSxDQUNoQyxTQUFTLENBQUMsU0FBUyxFQUNuQixTQUFTLENBQUMsZ0JBQWdCLEVBQzFCLFNBQVMsQ0FBQyxRQUFRLEVBQ2xCLFNBQVMsQ0FBQyx3QkFBd0IsQ0FDbkMsQ0FBQztRQUNGLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVPLE1BQU0sQ0FBQyxTQUE2QjtRQUMxQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ25DLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDOzhHQXBEVSwrQkFBK0Isa0JBT2hDLDZCQUE2QjtrR0FQNUIsK0JBQStCLHlGQzNCNUMsb09BT0EsMEREa0JhLEtBQUssa0hBQUUsWUFBWTs7MkZBRW5CLCtCQUErQjtrQkFSM0MsU0FBUzsrQkFDRSwrQkFBK0IsbUJBR3hCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUUsS0FBSyxFQUFFLFlBQVksQ0FBRTs7MEJBUzdCLE1BQU07MkJBQUMsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250YWluZXJDb21wb25lbnQsXG4gIFdpbmRvd0NvbnRhaW5lclNpZGVuYXZTZXJ2aWNlLFxufSBmcm9tICdAcnhhcC9zZXJ2aWNlcyc7XG5pbXBvcnQge1xuICBDb21wb25lbnRQb3J0YWwsXG4gIFBvcnRhbE1vZHVsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5nRm9yIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncnhhcC13aW5kb3ctY29udGFpbmVyLXNpZGVuYXYnLFxuICB0ZW1wbGF0ZVVybDogJy4vd2luZG93LWNvbnRhaW5lci1zaWRlbmF2LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbICcuL3dpbmRvdy1jb250YWluZXItc2lkZW5hdi5jb21wb25lbnQuc2NzcycgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFsgTmdGb3IsIFBvcnRhbE1vZHVsZSBdLFxufSlcbmV4cG9ydCBjbGFzcyBXaW5kb3dDb250YWluZXJTaWRlbmF2Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHB1YmxpYyBwb3J0YWxzID0gbmV3IE1hcDxzdHJpbmcsIENvbXBvbmVudFBvcnRhbDxhbnk+PigpO1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoV2luZG93Q29udGFpbmVyU2lkZW5hdlNlcnZpY2UpXG4gICAgcHVibGljIHJlYWRvbmx5IHNlcnZpY2U6IFdpbmRvd0NvbnRhaW5lclNpZGVuYXZTZXJ2aWNlLFxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBjb21wb25lbnRzID0gdGhpcy5zZXJ2aWNlLmdldEFsbCgpO1xuICAgIGZvciAoY29uc3QgY29tcG9uZW50IG9mIGNvbXBvbmVudHMpIHtcbiAgICAgIHRoaXMuYWRkKGNvbXBvbmVudCk7XG4gICAgfVxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnNlcnZpY2UuYWRkJC5waXBlKFxuICAgICAgdGFwKGNvbXBvbmVudCA9PiB0aGlzLmFkZChjb21wb25lbnQpKSxcbiAgICApLnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQodGhpcy5zZXJ2aWNlLnJlbW92ZSQucGlwZShcbiAgICAgIHRhcChjb21wb25lbnQgPT4gdGhpcy5yZW1vdmUoY29tcG9uZW50KSksXG4gICAgKS5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyB0cmFja0J5KGluZGV4OiBudW1iZXIsIGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gaWQ7XG4gIH1cblxuICBwcml2YXRlIGFkZChjb21wb25lbnQ6IENvbnRhaW5lckNvbXBvbmVudCkge1xuICAgIGlmICh0aGlzLnBvcnRhbHMuaGFzKGNvbXBvbmVudC5pZCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcG9uZW50IHBvcnRhbCB3aXRoIGlkICR7IGNvbXBvbmVudC5pZCB9IGFscmVhZHkgZXhpc3RzYCk7XG4gICAgfVxuICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoXG4gICAgICBjb21wb25lbnQuY29tcG9uZW50LFxuICAgICAgY29tcG9uZW50LnZpZXdDb250YWluZXJSZWYsXG4gICAgICBjb21wb25lbnQuaW5qZWN0b3IsXG4gICAgICBjb21wb25lbnQuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICk7XG4gICAgdGhpcy5wb3J0YWxzLnNldChjb21wb25lbnQuaWQsIHBvcnRhbCk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZShjb21wb25lbnQ6IENvbnRhaW5lckNvbXBvbmVudCkge1xuICAgIGlmICh0aGlzLnBvcnRhbHMuaGFzKGNvbXBvbmVudC5pZCkpIHtcbiAgICAgIGNvbnN0IHBvcnRhbCA9IHRoaXMucG9ydGFscy5nZXQoY29tcG9uZW50LmlkKSE7XG4gICAgICB0aGlzLnBvcnRhbHMuZGVsZXRlKGNvbXBvbmVudC5pZCk7XG4gICAgICBwb3J0YWwuZGV0YWNoKCk7XG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC00IHAtMlwiPlxuXG4gIDxkaXYgKm5nRm9yPVwibGV0IHBvcnRhbElkIG9mIHBvcnRhbHMua2V5cygpOyB0cmFja0J5OiB0cmFja0J5XCIgY2xhc3M9XCJncm93LTBcIj5cbiAgICA8bmctdGVtcGxhdGUgW2Nka1BvcnRhbE91dGxldF09XCJwb3J0YWxzLmdldChwb3J0YWxJZClcIj48L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cblxuPC9kaXY+XG4iXX0=
@@ -1,29 +0,0 @@
1
- import { AuthorizationService } from '@rxap/authorization';
2
- import { ConfigService } from '@rxap/config';
3
- import { Environment } from '@rxap/environment';
4
- import * as i0 from "@angular/core";
5
- export interface ExternalApps {
6
- image?: string;
7
- label: string;
8
- href: string;
9
- empty?: false;
10
- hidden?: boolean;
11
- id?: string;
12
- permissions: string[];
13
- }
14
- export declare class AppUrlService {
15
- private readonly config;
16
- private readonly localeId;
17
- private readonly authorizationService;
18
- private readonly environment;
19
- private _apps;
20
- constructor(config: ConfigService, localeId: string, authorizationService: AuthorizationService, environment: Environment);
21
- getApp(appId: string): ExternalApps | null;
22
- getAppUrl(appId: string, path: string, infix?: string | null): string | null;
23
- getAppUrlOrThrow(appId: string, path: string): string;
24
- navigate(appId: string, path: string): void;
25
- getAppList(): Promise<Array<ExternalApps>>;
26
- private getPathPrefix;
27
- static ɵfac: i0.ɵɵFactoryDeclaration<AppUrlService, never>;
28
- static ɵprov: i0.ɵɵInjectableDeclaration<AppUrlService>;
29
- }
@@ -1,6 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export declare class AuthenticationServiceMock {
3
- signOut(): void;
4
- static ɵfac: i0.ɵɵFactoryDeclaration<AuthenticationServiceMock, never>;
5
- static ɵprov: i0.ɵɵInjectableDeclaration<AuthenticationServiceMock>;
6
- }
@@ -1,16 +0,0 @@
1
- import { OnDestroy, OnInit } from '@angular/core';
2
- import { AppUrlService, ExternalApps } from '../../app-url.service';
3
- import { RxapAuthenticationService } from '@rxap/authentication';
4
- import * as i0 from "@angular/core";
5
- export declare class AppsButtonComponent implements OnInit, OnDestroy {
6
- private readonly appUrlService;
7
- private readonly authenticationService;
8
- isOpen: boolean;
9
- readonly appList: import("@angular/core").WritableSignal<ExternalApps[]>;
10
- private _subscription?;
11
- constructor(grid: any, appUrlService: AppUrlService, authenticationService: RxapAuthenticationService);
12
- ngOnInit(): void;
13
- ngOnDestroy(): void;
14
- static ɵfac: i0.ɵɵFactoryDeclaration<AppsButtonComponent, [{ optional: true; }, null, null]>;
15
- static ɵcmp: i0.ɵɵComponentDeclaration<AppsButtonComponent, "rxap-apps-button", never, {}, {}, never, never, true, never>;
16
- }