@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,43 +1,38 @@
1
- import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, HostBinding, Inject, Input, Renderer2, signal, ViewChild, ViewContainerRef, ViewEncapsulation, } from '@angular/core';
2
1
  import { animate, style, transition, trigger, } from '@angular/animations';
2
+ import { NgClass, NgIf, } from '@angular/common';
3
+ import { ChangeDetectionStrategy, Component, computed, ElementRef, forwardRef, inject, input, Renderer2, signal, ViewEncapsulation, } from '@angular/core';
4
+ import { MatRippleModule } from '@angular/material/core';
5
+ import { MatDividerModule } from '@angular/material/divider';
6
+ import { MatIconModule } from '@angular/material/icon';
3
7
  import { NavigationEnd, Router, RouterLink, RouterLinkActive, } from '@angular/router';
8
+ import { IconDirective } from '@rxap/material-directives/icon';
4
9
  import { debounceTime, Subscription, } from 'rxjs';
5
10
  import { filter, startWith, tap, } from 'rxjs/operators';
6
- import { Overlay } from '@angular/cdk/overlay';
7
- import { SidenavComponentService } from '../../sidenav/sidenav.component.service';
11
+ import { LayoutService } from '../../layout.service';
8
12
  import { NavigationComponent } from '../navigation.component';
9
- import { MatDividerModule } from '@angular/material/divider';
10
- import { IconDirective } from '@rxap/material-directives/icon';
11
- import { MatIconModule } from '@angular/material/icon';
12
- import { MatRippleModule } from '@angular/material/core';
13
- import { NgClass, NgIf, } from '@angular/common';
14
13
  import * as i0 from "@angular/core";
15
14
  import * as i1 from "@angular/material/core";
16
15
  import * as i2 from "@angular/material/icon";
17
16
  import * as i3 from "@angular/material/divider";
18
- import * as i4 from "@angular/router";
19
- import * as i5 from "../../sidenav/sidenav.component.service";
20
- import * as i6 from "@angular/cdk/overlay";
21
17
  export class NavigationItemComponent {
22
- get isActive() {
23
- return this._isActive;
24
- }
25
- set isActive(value) {
26
- this._isActive = value;
27
- this.active.set(value);
28
- }
29
- constructor(router, sidenav, elementRef, renderer, overlay, viewContainerRef) {
30
- this.router = router;
31
- this.sidenav = sidenav;
32
- this.elementRef = elementRef;
33
- this.renderer = renderer;
34
- this.overlay = overlay;
35
- this.viewContainerRef = viewContainerRef;
36
- this.level = 0;
37
- this._isActive = false;
18
+ constructor() {
19
+ this.level = input(0);
38
20
  this.children = null;
21
+ this.item = input.required();
39
22
  this.active = signal(false);
23
+ this.itemClasses = computed(() => {
24
+ let classes = `level-${this.level() * 4}`;
25
+ if (this.collapsed()) {
26
+ classes += ' invisible';
27
+ }
28
+ return classes;
29
+ });
30
+ this.layoutService = inject(LayoutService);
31
+ this.collapsed = computed(() => this.layoutService.collapsed());
40
32
  this._subscription = new Subscription();
33
+ this.router = inject(Router);
34
+ this.elementRef = inject(ElementRef);
35
+ this.renderer = inject(Renderer2);
41
36
  }
42
37
  ngOnChanges(changes) {
43
38
  if (changes['item']) {
@@ -54,13 +49,13 @@ export class NavigationItemComponent {
54
49
  if (urlParts[0] === '') {
55
50
  urlParts[0] = '/';
56
51
  }
57
- for (let i = 0; i < this.item.routerLink.length; i++) {
58
- if (urlParts[i] !== this.item.routerLink[i]) {
52
+ for (let i = 0; i < this.item().routerLink.length; i++) {
53
+ if (urlParts[i] !== this.item().routerLink[i]) {
59
54
  isActive = false;
60
55
  break;
61
56
  }
62
57
  }
63
- this.isActive = isActive;
58
+ this.active.set(isActive);
64
59
  if (isActive) {
65
60
  this.renderer.addClass(this.elementRef.nativeElement, 'active');
66
61
  }
@@ -87,8 +82,8 @@ export class NavigationItemComponent {
87
82
  }
88
83
  return item;
89
84
  }
90
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: NavigationItemComponent, deps: [{ token: Router }, { token: SidenavComponentService }, { token: ElementRef }, { token: Renderer2 }, { token: Overlay }, { token: ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
91
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: NavigationItemComponent, isStandalone: true, selector: "li[rxap-navigation-item]", inputs: { level: "level", item: "item" }, host: { properties: { "class.active": "this.isActive" } }, viewQueries: [{ propertyName: "routerLinkActive", first: true, predicate: RouterLinkActive, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<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", styles: [""], dependencies: [{ kind: "directive", type: i0.forwardRef(() => RouterLinkActive), selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i0.forwardRef(() => RouterLink), selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i0.forwardRef(() => NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatRippleModule) }, { kind: "directive", type: i0.forwardRef(() => i1.MatRipple), selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatIconModule) }, { kind: "component", type: i0.forwardRef(() => i2.MatIcon), selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i0.forwardRef(() => IconDirective), selector: "mat-icon[rxapIcon]", inputs: ["rxapIcon"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatDividerModule) }, { kind: "component", type: i0.forwardRef(() => i3.MatDivider), selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i0.forwardRef(() => NavigationComponent), selector: "ul[rxap-navigation]", inputs: ["items", "level", "root"] }, { kind: "directive", type: i0.forwardRef(() => NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [
85
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: NavigationItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
86
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.1", type: NavigationItemComponent, isStandalone: true, selector: "li[rxap-navigation-item]", inputs: { level: { classPropertyName: "level", publicName: "level", isSignal: true, isRequired: false, transformFunction: null }, item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null } }, usesOnChanges: true, ngImport: i0, template: "<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", styles: [""], dependencies: [{ kind: "directive", type: i0.forwardRef(() => RouterLinkActive), selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i0.forwardRef(() => RouterLink), selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i0.forwardRef(() => NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatRippleModule) }, { kind: "directive", type: i0.forwardRef(() => i1.MatRipple), selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatIconModule) }, { kind: "component", type: i0.forwardRef(() => i2.MatIcon), selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i0.forwardRef(() => IconDirective), selector: "mat-icon[rxapIcon]", inputs: ["rxapIcon"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatDividerModule) }, { kind: "component", type: i0.forwardRef(() => i3.MatDivider), selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i0.forwardRef(() => NavigationComponent), selector: "ul[rxap-navigation]", inputs: ["items", "level", "root"] }, { kind: "directive", type: i0.forwardRef(() => NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [
92
87
  trigger('sub-nav', [
93
88
  transition(':enter', [
94
89
  style({
@@ -134,35 +129,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
134
129
  MatDividerModule,
135
130
  forwardRef(() => NavigationComponent),
136
131
  NgClass,
137
- ], template: "<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" }]
138
- }], ctorParameters: () => [{ type: i4.Router, decorators: [{
139
- type: Inject,
140
- args: [Router]
141
- }] }, { type: i5.SidenavComponentService, decorators: [{
142
- type: Inject,
143
- args: [SidenavComponentService]
144
- }] }, { type: i0.ElementRef, decorators: [{
145
- type: Inject,
146
- args: [ElementRef]
147
- }] }, { type: i0.Renderer2, decorators: [{
148
- type: Inject,
149
- args: [Renderer2]
150
- }] }, { type: i6.Overlay, decorators: [{
151
- type: Inject,
152
- args: [Overlay]
153
- }] }, { type: i0.ViewContainerRef, decorators: [{
154
- type: Inject,
155
- args: [ViewContainerRef]
156
- }] }], propDecorators: { level: [{
157
- type: Input
158
- }], routerLinkActive: [{
159
- type: ViewChild,
160
- args: [RouterLinkActive, { static: true }]
161
- }], item: [{
162
- type: Input,
163
- args: [{ required: true }]
164
- }], isActive: [{
165
- type: HostBinding,
166
- args: ['class.active']
167
- }] } });
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLWl0ZW0vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLWl0ZW0vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBR0wsU0FBUyxFQUNULE1BQU0sRUFFTixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsT0FBTyxFQUNQLEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxHQUNSLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLGFBQWEsRUFDYixNQUFNLEVBQ04sVUFBVSxFQUNWLGdCQUFnQixHQUNqQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFDTCxZQUFZLEVBQ1osWUFBWSxHQUNiLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFB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Q0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0NBQ3BDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQzs2QkFDM0IsQ0FBQzt5QkFDSCxDQUFDO3FCQUNILGNBQ1csSUFBSSxXQUNQO3dCQUNQLGdCQUFnQjt3QkFDaEIsVUFBVTt3QkFDVixJQUFJO3dCQUNKLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO3dCQUNyQyxPQUFPO3FCQUNSOzswQkFpQ0UsTUFBTTsyQkFBQyxNQUFNOzswQkFFYixNQUFNOzJCQUFDLHVCQUF1Qjs7MEJBRTlCLE1BQU07MkJBQUMsVUFBVTs7MEJBRWpCLE1BQU07MkJBQUMsU0FBUzs7MEJBRWhCLE1BQU07MkJBQUMsT0FBTzs7MEJBRWQsTUFBTTsyQkFBQyxnQkFBZ0I7eUNBckNuQixLQUFLO3NCQURYLEtBQUs7Z0JBUUMsZ0JBQWdCO3NCQUR0QixTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJdEMsSUFBSTtzQkFEVixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFNckIsUUFBUTtzQkFEWCxXQUFXO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIFJlbmRlcmVyMixcbiAgc2lnbmFsLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlcXVpcmVkIH0gZnJvbSAnQHJ4YXAvdXRpbGl0aWVzJztcbmltcG9ydCB7XG4gIGFuaW1hdGUsXG4gIHN0eWxlLFxuICB0cmFuc2l0aW9uLFxuICB0cmlnZ2VyLFxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7XG4gIE5hdmlnYXRpb25FbmQsXG4gIFJvdXRlcixcbiAgUm91dGVyTGluayxcbiAgUm91dGVyTGlua0FjdGl2ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIGRlYm91bmNlVGltZSxcbiAgU3Vic2NyaXB0aW9uLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGZpbHRlcixcbiAgc3RhcnRXaXRoLFxuICB0YXAsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBTaWRlbmF2Q29tcG9uZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NpZGVuYXYvc2lkZW5hdi5jb21wb25lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vbmF2aWdhdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xuaW1wb3J0IHsgSWNvbkRpcmVjdGl2ZSB9IGZyb20gJ0ByeGFwL21hdGVyaWFsLWRpcmVjdGl2ZXMvaWNvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRSaXBwbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7XG4gIE5nQ2xhc3MsXG4gIE5nSWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBOYXZpZ2F0aW9uLFxuICBOYXZpZ2F0aW9uRGl2aWRlckl0ZW0sXG4gIE5hdmlnYXRpb25JdGVtLFxufSBmcm9tICcuLi9uYXZpZ2F0aW9uLWl0ZW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaVtyeGFwLW5hdmlnYXRpb24taXRlbV0nLFxuICB0ZW1wbGF0ZVVybDogJy4vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbICcuL25hdmlnYXRpb24taXRlbS5jb21wb25lbnQuc2NzcycgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdzdWItbmF2JywgW1xuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgICAgICAgICBoZWlnaHQ6ICcwJyxcbiAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgIH0pLFxuICAgICAgICBhbmltYXRlKDE1MCwgc3R5bGUoeyBoZWlnaHQ6ICcqJyB9KSksXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgc3R5bGUoeyBvdmVyZmxvdzogJ2hpZGRlbicgfSksXG4gICAgICAgIGFuaW1hdGUoMzAwLCBzdHlsZSh7IGhlaWdodDogJzAnIH0pKSxcbiAgICAgICAgc3R5bGUoeyBkaXNwbGF5OiAnbm9uZScgfSksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFJvdXRlckxpbmtBY3RpdmUsXG4gICAgUm91dGVyTGluayxcbiAgICBOZ0lmLFxuICAgIE1hdFJpcHBsZU1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIEljb25EaXJlY3RpdmUsXG4gICAgTWF0RGl2aWRlck1vZHVsZSxcbiAgICBmb3J3YXJkUmVmKCgpID0+IE5hdmlnYXRpb25Db21wb25lbnQpLFxuICAgIE5nQ2xhc3MsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE5hdmlnYXRpb25JdGVtQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsZXZlbCA9IDA7XG5cbiAgcHJpdmF0ZSBfaXNBY3RpdmUgPSBmYWxzZTtcblxuICBwdWJsaWMgY2hpbGRyZW46IE5hdmlnYXRpb24gfCBudWxsID0gbnVsbDtcblxuICBAVmlld0NoaWxkKFJvdXRlckxpbmtBY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHB1YmxpYyByb3V0ZXJMaW5rQWN0aXZlITogUm91dGVyTGlua0FjdGl2ZTtcblxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBwdWJsaWMgaXRlbSE6IE5hdmlnYXRpb25JdGVtO1xuXG4gIHB1YmxpYyBhY3RpdmUgPSBzaWduYWwoZmFsc2UpO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYWN0aXZlJylcbiAgZ2V0IGlzQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0FjdGl2ZTtcbiAgfVxuXG4gIHNldCBpc0FjdGl2ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzQWN0aXZlID0gdmFsdWU7XG4gICAgdGhpcy5hY3RpdmUuc2V0KHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFJvdXRlcilcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIEBJbmplY3QoU2lkZW5hdkNvbXBvbmVudFNlcnZpY2UpXG4gICAgcHVibGljIHJlYWRvbmx5IHNpZGVuYXY6IFNpZGVuYXZDb21wb25lbnRTZXJ2aWNlLFxuICAgIEBJbmplY3QoRWxlbWVudFJlZilcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgQEluamVjdChSZW5kZXJlcjIpXG4gICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIEBJbmplY3QoT3ZlcmxheSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXk6IE92ZXJsYXksXG4gICAgQEluamVjdChWaWV3Q29udGFpbmVyUmVmKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgKSB7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydpdGVtJ10pIHtcbiAgICAgIGNvbnN0IGl0ZW06IE5hdmlnYXRpb25JdGVtID0gY2hhbmdlc1snaXRlbSddLmN1cnJlbnRWYWx1ZTtcbiAgICAgIHRoaXMuY2hpbGRyZW4gPVxuICAgICAgICBpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID8gaXRlbS5jaGlsZHJlbiA6IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxuICAgICAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICAgICAgICBzdGFydFdpdGgodHJ1ZSksXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICBsZXQgaXNBY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgICBjb25zdCB1cmxQYXJ0cyA9IHRoaXMucm91dGVyLnVybC5zcGxpdCgnLycpO1xuICAgICAgICAgICAgICBpZiAodXJsUGFydHNbMF0gPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdXJsUGFydHNbMF0gPSAnLyc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLml0ZW0ucm91dGVyTGluay5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICh1cmxQYXJ0c1tpXSAhPT0gdGhpcy5pdGVtLnJvdXRlckxpbmtbaV0pIHtcbiAgICAgICAgICAgICAgICAgIGlzQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhpcy5pc0FjdGl2ZSA9IGlzQWN0aXZlO1xuICAgICAgICAgICAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnYWN0aXZlJyk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2FjdGl2ZScpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLy8gcmVnaW9uIHR5cGUgc2F2ZSBpdGVtIHByb3BlcnR5XG5cbiAgLy8gcmVxdWlyZWQgdG8gY2hlY2sgdGhlIHR5cGUgb2YgdGhlIGl0ZW0gcHJvcGVydHkgaW4gdGhlIG5nRm9yIGxvb3BcblxuICBwdWJsaWMgaXNOYXZpZ2F0aW9uRGl2aWRlckl0ZW0oXG4gICAgaXRlbTogTmF2aWdhdGlvbkl0ZW0gfCBOYXZpZ2F0aW9uRGl2aWRlckl0ZW0sXG4gICk6IGl0ZW0gaXMgTmF2aWdhdGlvbkRpdmlkZXJJdGVtIHtcbiAgICByZXR1cm4gKGl0ZW0gYXMgYW55KVsnZGl2aWRlciddO1xuICB9XG5cbiAgcHVibGljIGlzTmF2aWdhdGlvbkl0ZW0oXG4gICAgaXRlbTogTmF2aWdhdGlvbkl0ZW0gfCBOYXZpZ2F0aW9uRGl2aWRlckl0ZW0sXG4gICk6IGl0ZW0gaXMgTmF2aWdhdGlvbkl0ZW0ge1xuICAgIHJldHVybiAhdGhpcy5pc05hdmlnYXRpb25EaXZpZGVySXRlbShpdGVtKTtcbiAgfVxuXG4gIHB1YmxpYyBhc05hdmlnYXRpb25JdGVtKFxuICAgIGl0ZW06IE5hdmlnYXRpb25JdGVtIHwgTmF2aWdhdGlvbkRpdmlkZXJJdGVtLFxuICApOiBOYXZpZ2F0aW9uSXRlbSB7XG4gICAgaWYgKCF0aGlzLmlzTmF2aWdhdGlvbkl0ZW0oaXRlbSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGl0ZW0gaXMgbm90IGEgTmF2aWdhdGlvbkl0ZW0nKTtcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW07XG4gIH1cblxuICAvLyBlbmRyZWdpb25cbn1cbiIsIjxkaXYgW25nQ2xhc3NdPVwie1xuICAgICAnYm9yZGVyLWwtNCB0ZXh0LWFjY2VudC00MDAgYm9yZGVyLWFjY2VudC02MDAnOiBhY3RpdmUoKSxcbiAgICAgfVwiPlxuICA8YSBbcm91dGVyTGlua109XCJpdGVtLnJvdXRlckxpbmtcIlxuICAgICBjbGFzcz1cImgtMTIgcGwtNCBwci01IGZsZXggZmxleC1yb3cganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWNlbnRlciBnYXAteC00XCJcbiAgICAgbWF0UmlwcGxlXG4gICAgIHJvdXRlckxpbmtBY3RpdmVcblxuICA+XG4gICAgPHNwYW5cbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3BsLTAnOiBsZXZlbCA9PT0gMCxcbiAgICAgICAgJ3BsLTQnOiBsZXZlbCA9PT0gMSxcbiAgICAgICAgJ3BsLTgnOiBsZXZlbCA9PT0gMixcbiAgICAgICAgJ3BsLTEyJzogbGV2ZWwgPT09IDNcbiAgICAgIH1cIlxuICAgICAgY2xhc3M9XCJncm93IHdoaXRlc3BhY2Utbm93cmFwXCJcbiAgICA+XG4gICAgICB7eyBpdGVtLmxhYmVsIH19XG4gICAgPC9zcGFuPlxuICAgIDxtYXQtaWNvbiAqbmdJZj1cIml0ZW0uaWNvblwiIFtyeGFwSWNvbl09XCJpdGVtLmljb25cIj48L21hdC1pY29uPlxuICA8L2E+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uY2hpbGRyZW4/Lmxlbmd0aCAmJiBhY3RpdmUoKVwiPlxuXG4gICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG5cbiAgICA8dWwgW0BzdWItbmF2XVxuICAgICAgICBbaXRlbXNdPVwiY2hpbGRyZW4gPz8gW11cIlxuICAgICAgICBbbGV2ZWxdPVwibGV2ZWwgKyAxXCJcbiAgICAgICAgcnhhcC1uYXZpZ2F0aW9uXG4gICAgPlxuICAgIDwvdWw+XG5cbiAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cblxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
132
+ ], template: "<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" }]
133
+ }] });
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLWl0ZW0vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLWl0ZW0vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxPQUFPLEVBQ1AsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEdBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQ0wsT0FBTyxFQUNQLElBQUksR0FDTCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixVQUFVLEVBQ1YsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBR0wsU0FBUyxFQUNULE1BQU0sRUFHTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQ0wsYUFBYSxFQUNiLE1BQU0sRUFDTixVQUFVLEVBQ1YsZ0JBQWdCLEdBQ2pCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFDTCxZQUFZLEVBQ1osWUFBWSxHQUNiLE1BQU0sTUFBTSxDQUFDO0FBQ2Qs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RyxFQUFFLENBQUMsQ0FBQztnQ0FDcEMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDOzZCQUMzQixDQUFDO3lCQUNILENBQUM7cUJBQ0gsY0FDVyxJQUFJLFdBQ1A7d0JBQ1AsZ0JBQWdCO3dCQUNoQixVQUFVO3dCQUNWLElBQUk7d0JBQ0osZUFBZTt3QkFDZixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUM7d0JBQ3JDLE9BQU87cUJBQ1IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhbmltYXRlLFxuICBzdHlsZSxcbiAgdHJhbnNpdGlvbixcbiAgdHJpZ2dlcixcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICBOZ0NsYXNzLFxuICBOZ0lmLFxufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIEVsZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBSZW5kZXJlcjIsXG4gIHNpZ25hbCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgdmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRSaXBwbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdERpdmlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7XG4gIE5hdmlnYXRpb25FbmQsXG4gIFJvdXRlcixcbiAgUm91dGVyTGluayxcbiAgUm91dGVyTGlua0FjdGl2ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEljb25EaXJlY3RpdmUgfSBmcm9tICdAcnhhcC9tYXRlcmlhbC1kaXJlY3RpdmVzL2ljb24nO1xuaW1wb3J0IHtcbiAgZGVib3VuY2VUaW1lLFxuICBTdWJzY3JpcHRpb24sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZmlsdGVyLFxuICBzdGFydFdpdGgsXG4gIHRhcCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uL2xheW91dC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIE5hdmlnYXRpb24sXG4gIE5hdmlnYXRpb25EaXZpZGVySXRlbSxcbiAgTmF2aWdhdGlvbkl0ZW0sXG59IGZyb20gJy4uL25hdmlnYXRpb24taXRlbSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vbmF2aWdhdGlvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaVtyeGFwLW5hdmlnYXRpb24taXRlbV0nLFxuICB0ZW1wbGF0ZVVybDogJy4vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbICcuL25hdmlnYXRpb24taXRlbS5jb21wb25lbnQuc2NzcycgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdzdWItbmF2JywgW1xuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgICAgICAgICBoZWlnaHQ6ICcwJyxcbiAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgIH0pLFxuICAgICAgICBhbmltYXRlKDE1MCwgc3R5bGUoeyBoZWlnaHQ6ICcqJyB9KSksXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgc3R5bGUoeyBvdmVyZmxvdzogJ2hpZGRlbicgfSksXG4gICAgICAgIGFuaW1hdGUoMzAwLCBzdHlsZSh7IGhlaWdodDogJzAnIH0pKSxcbiAgICAgICAgc3R5bGUoeyBkaXNwbGF5OiAnbm9uZScgfSksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFJvdXRlckxpbmtBY3RpdmUsXG4gICAgUm91dGVyTGluayxcbiAgICBOZ0lmLFxuICAgIE1hdFJpcHBsZU1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIEljb25EaXJlY3RpdmUsXG4gICAgTWF0RGl2aWRlck1vZHVsZSxcbiAgICBmb3J3YXJkUmVmKCgpID0+IE5hdmlnYXRpb25Db21wb25lbnQpLFxuICAgIE5nQ2xhc3MsXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvbkl0ZW1Db21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG5cbiAgcHVibGljIHJlYWRvbmx5IGxldmVsID0gaW5wdXQoMCk7XG5cbiAgcHVibGljIGNoaWxkcmVuOiBOYXZpZ2F0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIHJlYWRvbmx5IGl0ZW0gPSBpbnB1dC5yZXF1aXJlZDxOYXZpZ2F0aW9uSXRlbT4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGFjdGl2ZSA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGl0ZW1DbGFzc2VzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGxldCBjbGFzc2VzID0gYGxldmVsLSR7IHRoaXMubGV2ZWwoKSAqIDQgfWA7XG4gICAgaWYgKHRoaXMuY29sbGFwc2VkKCkpIHtcbiAgICAgIGNsYXNzZXMgKz0gJyBpbnZpc2libGUnO1xuICAgIH1cbiAgICByZXR1cm4gY2xhc3NlcztcbiAgfSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBsYXlvdXRTZXJ2aWNlID0gaW5qZWN0KExheW91dFNlcnZpY2UpO1xuXG4gIHB1YmxpYyByZWFkb25seSBjb2xsYXBzZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmxheW91dFNlcnZpY2UuY29sbGFwc2VkKCkpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydpdGVtJ10pIHtcbiAgICAgIGNvbnN0IGl0ZW06IE5hdmlnYXRpb25JdGVtID0gY2hhbmdlc1snaXRlbSddLmN1cnJlbnRWYWx1ZTtcbiAgICAgIHRoaXMuY2hpbGRyZW4gPVxuICAgICAgICBpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID8gaXRlbS5jaGlsZHJlbiA6IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxuICAgICAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICAgICAgICBzdGFydFdpdGgodHJ1ZSksXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICBsZXQgaXNBY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgICBjb25zdCB1cmxQYXJ0cyA9IHRoaXMucm91dGVyLnVybC5zcGxpdCgnLycpO1xuICAgICAgICAgICAgICBpZiAodXJsUGFydHNbMF0gPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdXJsUGFydHNbMF0gPSAnLyc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLml0ZW0oKS5yb3V0ZXJMaW5rLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHVybFBhcnRzW2ldICE9PSB0aGlzLml0ZW0oKS5yb3V0ZXJMaW5rW2ldKSB7XG4gICAgICAgICAgICAgICAgICBpc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRoaXMuYWN0aXZlLnNldChpc0FjdGl2ZSk7XG4gICAgICAgICAgICAgIGlmIChpc0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdhY3RpdmUnKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnYWN0aXZlJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvLyByZWdpb24gdHlwZSBzYXZlIGl0ZW0gcHJvcGVydHlcblxuICAvLyByZXF1aXJlZCB0byBjaGVjayB0aGUgdHlwZSBvZiB0aGUgaXRlbSBwcm9wZXJ0eSBpbiB0aGUgbmdGb3IgbG9vcFxuXG4gIHB1YmxpYyBpc05hdmlnYXRpb25EaXZpZGVySXRlbShcbiAgICBpdGVtOiBOYXZpZ2F0aW9uSXRlbSB8IE5hdmlnYXRpb25EaXZpZGVySXRlbSxcbiAgKTogaXRlbSBpcyBOYXZpZ2F0aW9uRGl2aWRlckl0ZW0ge1xuICAgIHJldHVybiAoaXRlbSBhcyBhbnkpWydkaXZpZGVyJ107XG4gIH1cblxuICBwdWJsaWMgaXNOYXZpZ2F0aW9uSXRlbShcbiAgICBpdGVtOiBOYXZpZ2F0aW9uSXRlbSB8IE5hdmlnYXRpb25EaXZpZGVySXRlbSxcbiAgKTogaXRlbSBpcyBOYXZpZ2F0aW9uSXRlbSB7XG4gICAgcmV0dXJuICF0aGlzLmlzTmF2aWdhdGlvbkRpdmlkZXJJdGVtKGl0ZW0pO1xuICB9XG5cbiAgcHVibGljIGFzTmF2aWdhdGlvbkl0ZW0oXG4gICAgaXRlbTogTmF2aWdhdGlvbkl0ZW0gfCBOYXZpZ2F0aW9uRGl2aWRlckl0ZW0sXG4gICk6IE5hdmlnYXRpb25JdGVtIHtcbiAgICBpZiAoIXRoaXMuaXNOYXZpZ2F0aW9uSXRlbShpdGVtKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgaXRlbSBpcyBub3QgYSBOYXZpZ2F0aW9uSXRlbScpO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbTtcbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxufVxuIiwiPGRpdiBbbmdDbGFzc109XCJ7XG4gICAgICdib3JkZXItbC00IHRleHQtYWNjZW50LTQwMCBib3JkZXItYWNjZW50LTYwMCc6IGFjdGl2ZSgpLFxuICAgICB9XCI+XG4gIDxhIFtyb3V0ZXJMaW5rXT1cIml0ZW0oKS5yb3V0ZXJMaW5rXCJcbiAgICAgY2xhc3M9XCJoLTEyIHBsLTQgcHItNSBmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgZ2FwLXgtNFwiXG4gICAgIG1hdFJpcHBsZVxuICAgICByb3V0ZXJMaW5rQWN0aXZlXG5cbiAgPlxuICAgIDxzcGFuXG4gICAgICBbbmdDbGFzc109XCJpdGVtQ2xhc3NlcygpXCJcbiAgICAgIGNsYXNzPVwiZ3JvdyB3aGl0ZXNwYWNlLW5vd3JhcFwiXG4gICAgPlxuICAgICAge3sgaXRlbSgpLmxhYmVsIH19XG4gICAgPC9zcGFuPlxuICAgIDxtYXQtaWNvbiAqbmdJZj1cIml0ZW0oKS5pY29uXCIgW3J4YXBJY29uXT1cIml0ZW0oKS5pY29uXCI+PC9tYXQtaWNvbj5cbiAgPC9hPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtKCkuY2hpbGRyZW4/Lmxlbmd0aCAmJiBhY3RpdmUoKVwiPlxuXG4gICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG5cbiAgICA8dWwgW0BzdWItbmF2XVxuICAgICAgICBbaXRlbXNdPVwiY2hpbGRyZW4gPz8gW11cIlxuICAgICAgICBbbGV2ZWxdPVwibGV2ZWwoKSArIDFcIlxuICAgICAgICByeGFwLW5hdmlnYXRpb25cbiAgICA+XG4gICAgPC91bD5cblxuICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuXG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
@@ -1,37 +1,29 @@
1
1
  import { AsyncPipe, NgFor, NgIf, } from '@angular/common';
2
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, HostBinding, Inject, Input, ViewEncapsulation, } from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component, computed, forwardRef, inject, INJECTOR, input, runInInjectionContext, ViewEncapsulation, } from '@angular/core';
3
+ import { toSignal } from '@angular/core/rxjs-interop';
3
4
  import { MatDividerModule } from '@angular/material/divider';
4
- import { coerceBoolean } from '@rxap/utilities';
5
- import { tap } from 'rxjs/operators';
6
- import { SidenavComponentService } from '../sidenav/sidenav.component.service';
5
+ import { LayoutService } from '../layout.service';
6
+ import { NavigationService } from '../navigation.service';
7
7
  import { NavigationItemComponent } from './navigation-item/navigation-item.component';
8
- import { NavigationService } from './navigation.service';
9
8
  import * as i0 from "@angular/core";
10
9
  import * as i1 from "@angular/material/divider";
11
- import * as i2 from "./navigation.service";
12
- import * as i3 from "../sidenav/sidenav.component.service";
13
10
  export class NavigationComponent {
14
- constructor(navigationService, cdr, sidenav) {
15
- this.navigationService = navigationService;
16
- this.cdr = cdr;
17
- this.sidenav = sidenav;
18
- this.level = 0;
19
- this._root = false;
20
- }
21
- set root(value) {
22
- this._root = coerceBoolean(value);
11
+ constructor() {
12
+ this.items = input();
13
+ this.level = input(0);
14
+ this.navigationService = inject(NavigationService);
15
+ this.layoutService = inject(LayoutService);
16
+ this.collapsed = computed(() => this.layoutService.collapsed());
17
+ this.navigationItems = computed(() => this.items() ?? []);
18
+ this.root = input(false);
19
+ this.injector = inject(INJECTOR);
23
20
  }
24
21
  ngOnInit() {
25
- if (this._root) {
26
- this.items = [];
27
- this.subscription = this.navigationService.config$
28
- .pipe(tap((navigation) => (this.items = navigation)), tap(() => this.cdr.detectChanges()))
29
- .subscribe();
22
+ if (this.root()) {
23
+ runInInjectionContext(this.injector, () => {
24
+ this.navigationItems = toSignal(this.navigationService.config$, { initialValue: [] });
25
+ });
30
26
  }
31
- this.items ??= [];
32
- }
33
- ngOnDestroy() {
34
- this.subscription?.unsubscribe();
35
27
  }
36
28
  // region type save item property
37
29
  // required to check the type of the item property in the ngFor loop
@@ -47,8 +39,8 @@ export class NavigationComponent {
47
39
  }
48
40
  return item;
49
41
  }
50
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: NavigationComponent, deps: [{ token: NavigationService }, { token: ChangeDetectorRef }, { token: SidenavComponentService }], target: i0.ɵɵFactoryTarget.Component }); }
51
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: NavigationComponent, isStandalone: true, selector: "ul[rxap-navigation]", inputs: { items: "items", level: "level", root: "root" }, host: { properties: { "class.rxap-root-navigation": "this._root" }, classAttribute: "list-none dark:text-neutral-400 text-neutral-700" }, ngImport: i0, template: "<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", styles: [""], dependencies: [{ kind: "directive", type: i0.forwardRef(() => NgFor), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatDividerModule) }, { kind: "component", type: i0.forwardRef(() => i1.MatDivider), selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i0.forwardRef(() => NavigationItemComponent), selector: "li[rxap-navigation-item]", inputs: ["level", "item"] }, { kind: "pipe", type: i0.forwardRef(() => AsyncPipe), name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
42
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: NavigationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
43
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.1", type: NavigationComponent, isStandalone: true, selector: "ul[rxap-navigation]", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, level: { classPropertyName: "level", publicName: "level", isSignal: true, isRequired: false, transformFunction: null }, root: { classPropertyName: "root", publicName: "root", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "list-none dark:text-neutral-400 text-neutral-700" }, ngImport: i0, template: "<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", styles: [""], dependencies: [{ kind: "directive", type: i0.forwardRef(() => NgFor), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatDividerModule) }, { kind: "component", type: i0.forwardRef(() => i1.MatDivider), selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i0.forwardRef(() => NavigationItemComponent), selector: "li[rxap-navigation-item]", inputs: ["level", "item"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
52
44
  }
53
45
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: NavigationComponent, decorators: [{
54
46
  type: Component,
@@ -60,24 +52,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
60
52
  MatDividerModule,
61
53
  forwardRef(() => NavigationItemComponent),
62
54
  AsyncPipe,
63
- ], template: "<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" }]
64
- }], ctorParameters: () => [{ type: i2.NavigationService, decorators: [{
65
- type: Inject,
66
- args: [NavigationService]
67
- }] }, { type: i0.ChangeDetectorRef, decorators: [{
68
- type: Inject,
69
- args: [ChangeDetectorRef]
70
- }] }, { type: i3.SidenavComponentService, decorators: [{
71
- type: Inject,
72
- args: [SidenavComponentService]
73
- }] }], propDecorators: { items: [{
74
- type: Input
75
- }], level: [{
76
- type: Input
77
- }], _root: [{
78
- type: HostBinding,
79
- args: ['class.rxap-root-navigation']
80
- }], root: [{
81
- type: Input
82
- }] } });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL2xheW91dC9zcmMvbGliL25hdmlnYXRpb24vbmF2aWdhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL2xheW91dC9zcmMvbGliL25hdmlnYXRpb24vbmF2aWdhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxJQUFJLEdBQ0wsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUdMLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFaEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBTS9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7OztBQXNCekQsTUFBTSxPQUFPLG1CQUFtQjtJQU85QixZQUVtQixpQkFBb0MsRUFFcEMsR0FBc0IsRUFFdkIsT0FBZ0M7UUFKL0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUVwQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUV2QixZQUFPLEdBQVAsT0FBTyxDQUF5QjtRQVIzQyxVQUFLLEdBQUcsQ0FBQyxDQUFDO1FBYVYsVUFBSyxHQUFHLEtBQUssQ0FBQztJQUhyQixDQUFDO0lBS0QsSUFDVyxJQUFJLENBQUMsS0FBbUI7UUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU87aUJBQ3pCLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsQ0FBQyxFQUM5QyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUNwQztpQkFDQSxTQUFTLEVBQUUsQ0FBQztRQUN2QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsaUNBQWlDO0lBRWpDLG9FQUFvRTtJQUU3RCx1QkFBdUIsQ0FDNUIsSUFBNEM7UUFFNUMsT0FBUSxJQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVNLGdCQUFnQixDQUNyQixJQUE0QztRQUU1QyxPQUFPLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTSxnQkFBZ0IsQ0FDckIsSUFBNEM7UUFFNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzhHQWpFVSxtQkFBbUIsa0JBUXBCLGlCQUFpQixhQUVqQixpQkFBaUIsYUFFakIsdUJBQXVCO2tHQVp0QixtQkFBbUIsbVJDbERoQywyaEJBWUEsOEVEK0JJLEtBQUssd0lBQ0wsSUFBSSxpSEFDSixnQkFBZ0IsNktBQ0MsdUJBQXVCLGdIQUN4QyxTQUFTOzsyRkFHQSxtQkFBbUI7a0JBcEIvQixTQUFTOytCQUVFLHFCQUFxQixtQkFHZCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGNBQ3pCLElBQUksUUFFVjt3QkFDSixLQUFLLEVBQUUsa0RBQWtEO3FCQUMxRCxXQUNRO3dCQUNQLEtBQUs7d0JBQ0wsSUFBSTt3QkFDSixnQkFBZ0I7d0JBQ2hCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzt3QkFDekMsU0FBUztxQkFDVjs7MEJBVUUsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUV4QixNQUFNOzJCQUFDLGlCQUFpQjs7MEJBRXhCLE1BQU07MkJBQUMsdUJBQXVCO3lDQVYxQixLQUFLO3NCQURYLEtBQUs7Z0JBSUMsS0FBSztzQkFEWCxLQUFLO2dCQWNDLEtBQUs7c0JBRFgsV0FBVzt1QkFBQyw0QkFBNEI7Z0JBSTlCLElBQUk7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFzeW5jUGlwZSxcbiAgTmdGb3IsXG4gIE5nSWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgZm9yd2FyZFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaXZpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlcic7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuIH0gZnJvbSAnQHJ4YXAvdXRpbGl0aWVzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU2lkZW5hdkNvbXBvbmVudFNlcnZpY2UgfSBmcm9tICcuLi9zaWRlbmF2L3NpZGVuYXYuY29tcG9uZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgTmF2aWdhdGlvbixcbiAgTmF2aWdhdGlvbkRpdmlkZXJJdGVtLFxuICBOYXZpZ2F0aW9uSXRlbSxcbn0gZnJvbSAnLi9uYXZpZ2F0aW9uLWl0ZW0nO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkl0ZW1Db21wb25lbnQgfSBmcm9tICcuL25hdmlnYXRpb24taXRlbS9uYXZpZ2F0aW9uLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICd1bFtyeGFwLW5hdmlnYXRpb25dJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25hdmlnYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsgJy4vbmF2aWdhdGlvbi5jb21wb25lbnQuc2NzcycgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taG9zdC1tZXRhZGF0YS1wcm9wZXJ0eVxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdsaXN0LW5vbmUgZGFyazp0ZXh0LW5ldXRyYWwtNDAwIHRleHQtbmV1dHJhbC03MDAnLFxuICB9LFxuICBpbXBvcnRzOiBbXG4gICAgTmdGb3IsXG4gICAgTmdJZixcbiAgICBNYXREaXZpZGVyTW9kdWxlLFxuICAgIGZvcndhcmRSZWYoKCkgPT4gTmF2aWdhdGlvbkl0ZW1Db21wb25lbnQpLFxuICAgIEFzeW5jUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgcHVibGljIGl0ZW1zITogTmF2aWdhdGlvbjtcbiAgcHVibGljIHN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgQElucHV0KClcbiAgcHVibGljIGxldmVsID0gMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KE5hdmlnYXRpb25TZXJ2aWNlKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmF2aWdhdGlvblNlcnZpY2U6IE5hdmlnYXRpb25TZXJ2aWNlLFxuICAgIEBJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBJbmplY3QoU2lkZW5hdkNvbXBvbmVudFNlcnZpY2UpXG4gICAgcHVibGljIHJlYWRvbmx5IHNpZGVuYXY6IFNpZGVuYXZDb21wb25lbnRTZXJ2aWNlLFxuICApIHtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucnhhcC1yb290LW5hdmlnYXRpb24nKVxuICBwdWJsaWMgX3Jvb3QgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHJvb3QodmFsdWU6IGJvb2xlYW4gfCAnJykge1xuICAgIHRoaXMuX3Jvb3QgPSBjb2VyY2VCb29sZWFuKHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fcm9vdCkge1xuICAgICAgdGhpcy5pdGVtcyA9IFtdO1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmNvbmZpZyRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXAoKG5hdmlnYXRpb24pID0+ICh0aGlzLml0ZW1zID0gbmF2aWdhdGlvbikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5pdGVtcyA/Pz0gW107XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvLyByZWdpb24gdHlwZSBzYXZlIGl0ZW0gcHJvcGVydHlcblxuICAvLyByZXF1aXJlZCB0byBjaGVjayB0aGUgdHlwZSBvZiB0aGUgaXRlbSBwcm9wZXJ0eSBpbiB0aGUgbmdGb3IgbG9vcFxuXG4gIHB1YmxpYyBpc05hdmlnYXRpb25EaXZpZGVySXRlbShcbiAgICBpdGVtOiBOYXZpZ2F0aW9uSXRlbSB8IE5hdmlnYXRpb25EaXZpZGVySXRlbSxcbiAgKTogaXRlbSBpcyBOYXZpZ2F0aW9uRGl2aWRlckl0ZW0ge1xuICAgIHJldHVybiAoaXRlbSBhcyBhbnkpWydkaXZpZGVyJ107XG4gIH1cblxuICBwdWJsaWMgaXNOYXZpZ2F0aW9uSXRlbShcbiAgICBpdGVtOiBOYXZpZ2F0aW9uSXRlbSB8IE5hdmlnYXRpb25EaXZpZGVySXRlbSxcbiAgKTogaXRlbSBpcyBOYXZpZ2F0aW9uSXRlbSB7XG4gICAgcmV0dXJuICF0aGlzLmlzTmF2aWdhdGlvbkRpdmlkZXJJdGVtKGl0ZW0pO1xuICB9XG5cbiAgcHVibGljIGFzTmF2aWdhdGlvbkl0ZW0oXG4gICAgaXRlbTogTmF2aWdhdGlvbkl0ZW0gfCBOYXZpZ2F0aW9uRGl2aWRlckl0ZW0sXG4gICk6IE5hdmlnYXRpb25JdGVtIHtcbiAgICBpZiAoIXRoaXMuaXNOYXZpZ2F0aW9uSXRlbShpdGVtKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgaXRlbSBpcyBub3QgYSBOYXZpZ2F0aW9uSXRlbScpO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbTtcbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxufVxuIiwiPG5nLXRlbXBsYXRlIFtuZ0Zvck9mXT1cIml0ZW1zXCIgbGV0LWl0ZW0gbmdGb3I+XG4gIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJpc05hdmlnYXRpb25EaXZpZGVySXRlbShpdGVtKVwiPlxuICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICAgIDxkaXYgKm5nSWY9XCIoc2lkZW5hdi5jb2xsYXBzZWQkIHwgYXN5bmMpID09PSBmYWxzZVwiIGNsYXNzPVwicGwtNSBoLTZcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiaXRlbS50aXRsZVwiPnt7aXRlbS50aXRsZX19PC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgW25nSWZdPVwiaXNOYXZpZ2F0aW9uSXRlbShpdGVtKVwiPlxuICAgIDxsaSBbaXRlbV09XCJhc05hdmlnYXRpb25JdGVtKGl0ZW0pXCIgW2xldmVsXT1cImxldmVsXCIgY2xhc3M9XCJkYXJrOmhvdmVyOnRleHQtd2hpdGUgaG92ZXI6dGV4dC1ibGFja1wiXG4gICAgICAgIHJ4YXAtbmF2aWdhdGlvbi1pdGVtPjwvbGk+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuIl19
55
+ ], template: "<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" }]
56
+ }] });
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL2xheW91dC9zcmMvbGliL25hdmlnYXRpb24vbmF2aWdhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL2xheW91dC9zcmMvbGliL25hdmlnYXRpb24vbmF2aWdhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxJQUFJLEdBQ0wsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUVMLHFCQUFxQixFQUNyQixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQU0xRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7O0FBc0J0RixNQUFNLE9BQU8sbUJBQW1CO0lBcEJoQztRQXNCUyxVQUFLLEdBQUcsS0FBSyxFQUFjLENBQUM7UUFFNUIsVUFBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVQLHNCQUFpQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRTlDLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXZDLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRXBFLG9CQUFlLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUU1QyxTQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRW5CLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7S0FtQzlDO0lBakNRLFFBQVE7UUFDYixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ2hCLHFCQUFxQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO2dCQUN4QyxJQUFJLENBQUMsZUFBZSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDeEYsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUNELGlDQUFpQztJQUVqQyxvRUFBb0U7SUFFN0QsdUJBQXVCLENBQzVCLElBQTRDO1FBRTVDLE9BQVEsSUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTSxnQkFBZ0IsQ0FDckIsSUFBNEM7UUFFNUMsT0FBTyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU0sZ0JBQWdCLENBQ3JCLElBQTRDO1FBRTVDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs4R0FoRFUsbUJBQW1CO2tHQUFuQixtQkFBbUIsOGdCQ2hEaEMsbWhCQWVBLDhFRDBCSSxLQUFLLHdJQUNMLElBQUksaUhBQ0osZ0JBQWdCLDZLQUNDLHVCQUF1Qjs7MkZBSS9CLG1CQUFtQjtrQkFwQi9CLFNBQVM7K0JBRUUscUJBQXFCLG1CQUdkLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksY0FDekIsSUFBSSxRQUVWO3dCQUNKLEtBQUssRUFBRSxrREFBa0Q7cUJBQzFELFdBQ1E7d0JBQ1AsS0FBSzt3QkFDTCxJQUFJO3dCQUNKLGdCQUFnQjt3QkFDaEIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDO3dCQUN6QyxTQUFTO3FCQUNWIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXN5bmNQaXBlLFxuICBOZ0ZvcixcbiAgTmdJZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBmb3J3YXJkUmVmLFxuICBpbmplY3QsXG4gIElOSkVDVE9SLFxuICBpbnB1dCxcbiAgT25Jbml0LFxuICBydW5JbkluamVjdGlvbkNvbnRleHQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uL2xheW91dC5zZXJ2aWNlJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIE5hdmlnYXRpb24sXG4gIE5hdmlnYXRpb25EaXZpZGVySXRlbSxcbiAgTmF2aWdhdGlvbkl0ZW0sXG59IGZyb20gJy4vbmF2aWdhdGlvbi1pdGVtJztcbmltcG9ydCB7IE5hdmlnYXRpb25JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9uYXZpZ2F0aW9uLWl0ZW0vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ3VsW3J4YXAtbmF2aWdhdGlvbl0nLFxuICB0ZW1wbGF0ZVVybDogJy4vbmF2aWdhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWyAnLi9uYXZpZ2F0aW9uLmNvbXBvbmVudC5zY3NzJyBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1ob3N0LW1ldGFkYXRhLXByb3BlcnR5XG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2xpc3Qtbm9uZSBkYXJrOnRleHQtbmV1dHJhbC00MDAgdGV4dC1uZXV0cmFsLTcwMCcsXG4gIH0sXG4gIGltcG9ydHM6IFtcbiAgICBOZ0ZvcixcbiAgICBOZ0lmLFxuICAgIE1hdERpdmlkZXJNb2R1bGUsXG4gICAgZm9yd2FyZFJlZigoKSA9PiBOYXZpZ2F0aW9uSXRlbUNvbXBvbmVudCksXG4gICAgQXN5bmNQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgaXRlbXMgPSBpbnB1dDxOYXZpZ2F0aW9uPigpO1xuXG4gIHB1YmxpYyBsZXZlbCA9IGlucHV0KDApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbmF2aWdhdGlvblNlcnZpY2UgPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbGF5b3V0U2VydmljZSA9IGluamVjdChMYXlvdXRTZXJ2aWNlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY29sbGFwc2VkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5sYXlvdXRTZXJ2aWNlLmNvbGxhcHNlZCgpKTtcblxuICBwdWJsaWMgbmF2aWdhdGlvbkl0ZW1zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pdGVtcygpID8/IFtdKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgcm9vdCA9IGlucHV0KGZhbHNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KElOSkVDVE9SKTtcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucm9vdCgpKSB7XG4gICAgICBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4ge1xuICAgICAgICB0aGlzLm5hdmlnYXRpb25JdGVtcyA9IHRvU2lnbmFsKHRoaXMubmF2aWdhdGlvblNlcnZpY2UuY29uZmlnJCwgeyBpbml0aWFsVmFsdWU6IFtdIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIC8vIHJlZ2lvbiB0eXBlIHNhdmUgaXRlbSBwcm9wZXJ0eVxuXG4gIC8vIHJlcXVpcmVkIHRvIGNoZWNrIHRoZSB0eXBlIG9mIHRoZSBpdGVtIHByb3BlcnR5IGluIHRoZSBuZ0ZvciBsb29wXG5cbiAgcHVibGljIGlzTmF2aWdhdGlvbkRpdmlkZXJJdGVtKFxuICAgIGl0ZW06IE5hdmlnYXRpb25JdGVtIHwgTmF2aWdhdGlvbkRpdmlkZXJJdGVtLFxuICApOiBpdGVtIGlzIE5hdmlnYXRpb25EaXZpZGVySXRlbSB7XG4gICAgcmV0dXJuIChpdGVtIGFzIGFueSlbJ2RpdmlkZXInXTtcbiAgfVxuXG4gIHB1YmxpYyBpc05hdmlnYXRpb25JdGVtKFxuICAgIGl0ZW06IE5hdmlnYXRpb25JdGVtIHwgTmF2aWdhdGlvbkRpdmlkZXJJdGVtLFxuICApOiBpdGVtIGlzIE5hdmlnYXRpb25JdGVtIHtcbiAgICByZXR1cm4gIXRoaXMuaXNOYXZpZ2F0aW9uRGl2aWRlckl0ZW0oaXRlbSk7XG4gIH1cblxuICBwdWJsaWMgYXNOYXZpZ2F0aW9uSXRlbShcbiAgICBpdGVtOiBOYXZpZ2F0aW9uSXRlbSB8IE5hdmlnYXRpb25EaXZpZGVySXRlbSxcbiAgKTogTmF2aWdhdGlvbkl0ZW0ge1xuICAgIGlmICghdGhpcy5pc05hdmlnYXRpb25JdGVtKGl0ZW0pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBpdGVtIGlzIG5vdCBhIE5hdmlnYXRpb25JdGVtJyk7XG4gICAgfVxuICAgIHJldHVybiBpdGVtO1xuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG59XG4iLCI8bmctdGVtcGxhdGUgW25nRm9yT2ZdPVwibmF2aWdhdGlvbkl0ZW1zKClcIiBsZXQtaXRlbSBuZ0Zvcj5cbiAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImlzTmF2aWdhdGlvbkRpdmlkZXJJdGVtKGl0ZW0pXCI+XG4gICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gICAgPGRpdiAqbmdJZj1cIiFjb2xsYXBzZWQoKSAmJiBpdGVtLnRpdGxlXCIgY2xhc3M9XCJwbC01IGgtNlwiPlxuICAgICAge3tpdGVtLnRpdGxlfX1cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImlzTmF2aWdhdGlvbkl0ZW0oaXRlbSlcIj5cbiAgICA8bGkgW2l0ZW1dPVwiYXNOYXZpZ2F0aW9uSXRlbShpdGVtKVwiXG4gICAgICAgIFtsZXZlbF09XCJsZXZlbCgpXCJcbiAgICAgICAgY2xhc3M9XCJkYXJrOmhvdmVyOnRleHQtd2hpdGUgaG92ZXI6dGV4dC1ibGFja1wiXG4gICAgICAgIHJ4YXAtbmF2aWdhdGlvbi1pdGVtPlxuICAgIDwvbGk+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -0,0 +1,23 @@
1
+ import { ChangeDetectionStrategy, Component, inject, } from '@angular/core';
2
+ import { toSignal } from '@angular/core/rxjs-interop';
3
+ import { MatProgressBar } from '@angular/material/progress-bar';
4
+ import { NavigationCancel, NavigationEnd, NavigationStart, Router, } from '@angular/router';
5
+ import { filter, map, } from 'rxjs/operators';
6
+ import * as i0 from "@angular/core";
7
+ export class NavigationProgressBarComponent {
8
+ constructor() {
9
+ this.router = inject(Router);
10
+ this.navigating = toSignal(this.router.events.pipe(filter(event => event instanceof NavigationStart ||
11
+ event instanceof NavigationEnd ||
12
+ event instanceof NavigationCancel), map(event => event instanceof NavigationStart)), { initialValue: true });
13
+ }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: NavigationProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: NavigationProgressBarComponent, isStandalone: true, selector: "rxap-navigation-progress-bar", ngImport: i0, template: "@if (navigating()) {\n<mat-progress-bar color=\"accent\" mode=\"indeterminate\"></mat-progress-bar>\n}\n", styles: [""], dependencies: [{ kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: NavigationProgressBarComponent, decorators: [{
18
+ type: Component,
19
+ args: [{ selector: 'rxap-navigation-progress-bar', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
20
+ MatProgressBar,
21
+ ], template: "@if (navigating()) {\n<mat-progress-bar color=\"accent\" mode=\"indeterminate\"></mat-progress-bar>\n}\n" }]
22
+ }] });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1wcm9ncmVzcy1iYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci9sYXlvdXQvc3JjL2xpYi9uYXZpZ2F0aW9uLXByb2dyZXNzLWJhci9uYXZpZ2F0aW9uLXByb2dyZXNzLWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL2xheW91dC9zcmMvbGliL25hdmlnYXRpb24tcHJvZ3Jlc3MtYmFyL25hdmlnYXRpb24tcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGVBQWUsRUFDZixNQUFNLEdBQ1AsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQ0wsTUFBTSxFQUNOLEdBQUcsR0FDSixNQUFNLGdCQUFnQixDQUFDOztBQVl4QixNQUFNLE9BQU8sOEJBQThCO0lBVjNDO1FBWWtCLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFeEIsZUFBVSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzNELE1BQU0sQ0FDSixLQUFLLENBQUMsRUFBRSxDQUNOLEtBQUssWUFBWSxlQUFlO1lBQ2hDLEtBQUssWUFBWSxhQUFhO1lBQzlCLEtBQUssWUFBWSxnQkFBZ0IsQ0FDcEMsRUFDRCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLFlBQVksZUFBZSxDQUFDLENBQy9DLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztLQUU1Qjs4R0FkWSw4QkFBOEI7a0dBQTlCLDhCQUE4Qix3RkM1QjNDLDBHQUdBLDBERHNCSSxjQUFjOzsyRkFHTCw4QkFBOEI7a0JBVjFDLFNBQVM7K0JBQ0UsOEJBQThCLG1CQUd2Qix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxjQUFjO3FCQUNmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xuaW1wb3J0IHtcbiAgTmF2aWdhdGlvbkNhbmNlbCxcbiAgTmF2aWdhdGlvbkVuZCxcbiAgTmF2aWdhdGlvblN0YXJ0LFxuICBSb3V0ZXIsXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBmaWx0ZXIsXG4gIG1hcCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyeGFwLW5hdmlnYXRpb24tcHJvZ3Jlc3MtYmFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25hdmlnYXRpb24tcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbICcuL25hdmlnYXRpb24tcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5zY3NzJyBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdFByb2dyZXNzQmFyLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0aW9uUHJvZ3Jlc3NCYXJDb21wb25lbnQge1xuXG4gIHB1YmxpYyByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbmF2aWdhdGluZyA9IHRvU2lnbmFsKHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxuICAgIGZpbHRlcihcbiAgICAgIGV2ZW50ID0+XG4gICAgICAgIGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0IHx8XG4gICAgICAgIGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCB8fFxuICAgICAgICBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25DYW5jZWwsXG4gICAgKSxcbiAgICBtYXAoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpLFxuICApLCB7IGluaXRpYWxWYWx1ZTogdHJ1ZSB9KTtcblxufVxuIiwiQGlmIChuYXZpZ2F0aW5nKCkpIHtcbjxtYXQtcHJvZ3Jlc3MtYmFyIGNvbG9yPVwiYWNjZW50XCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG59XG4iXX0=
@@ -0,0 +1,141 @@
1
+ import { inject, Inject, Injectable, INJECTOR, Optional, } from '@angular/core';
2
+ import { combineLatest, from, of, ReplaySubject, } from 'rxjs';
3
+ import { catchError, map, switchMap, } from 'rxjs/operators';
4
+ import { IsNavigationDividerItem, IsNavigationInsertItem, IsNavigationItem, } from './navigation/navigation-item';
5
+ import { RXAP_NAVIGATION_CONFIG, RXAP_NAVIGATION_CONFIG_INSERTS, } from './tokens';
6
+ import * as i0 from "@angular/core";
7
+ export class NavigationService {
8
+ constructor(navigation, inserts = null) {
9
+ this.inserts = new Map();
10
+ this.navigation$ = new ReplaySubject(1);
11
+ this.injector = inject(INJECTOR);
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
63
+ .status
64
+ .map((statusToken) => this.injector.get(statusToken))
65
+ .map((status) => {
66
+ const isVisible = status.isVisible(navigationItem);
67
+ if (typeof isVisible === 'boolean') {
68
+ return of(isVisible);
69
+ }
70
+ else {
71
+ return from(isVisible);
72
+ }
73
+ })
74
+ .map(isVisible$ => isVisible$.pipe(catchError(e => {
75
+ console.error(`isVisible method failed: ${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: 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 }); }
129
+ }
130
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: NavigationService, decorators: [{
131
+ type: Injectable
132
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
133
+ type: Inject,
134
+ args: [RXAP_NAVIGATION_CONFIG]
135
+ }] }, { type: undefined, decorators: [{
136
+ type: Optional
137
+ }, {
138
+ type: Inject,
139
+ args: [RXAP_NAVIGATION_CONFIG_INSERTS]
140
+ }] }] });
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci9sYXlvdXQvc3JjL2xpYi9uYXZpZ2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sVUFBVSxFQUVWLFFBQVEsRUFDUixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGFBQWEsRUFDYixJQUFJLEVBRUosRUFBRSxFQUNGLGFBQWEsR0FDZCxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFDTCxVQUFVLEVBQ1YsR0FBRyxFQUNILFNBQVMsR0FDVixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsc0JBQXNCLEVBQ3RCLGdCQUFnQixHQUtqQixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsOEJBQThCLEdBQy9CLE1BQU0sVUFBVSxDQUFDOztBQUdsQixNQUFNLE9BQU8saUJBQWlCO0lBVzVCLFlBRUksVUFBZSxFQUdmLFVBQXNCLElBQUk7UUFidEIsWUFBTyxHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO1FBSTFDLGdCQUFXLEdBQUcsSUFBSSxhQUFhLENBQWEsQ0FBQyxDQUFDLENBQUM7UUFFL0MsYUFBUSxHQUFhLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQVNyRCxJQUFJLE9BQU8sVUFBVSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDakMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUMvQixDQUFDO1FBQ0QsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFD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QUM7UUFFRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDOzhHQXJMVSxpQkFBaUIsa0JBWWxCLHNCQUFzQixhQUd0Qiw4QkFBOEI7a0hBZjdCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVTs7MEJBYU4sTUFBTTsyQkFBQyxzQkFBc0I7OzBCQUU3QixRQUFROzswQkFDUixNQUFNOzJCQUFDLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGluamVjdCxcbiAgSW5qZWN0LFxuICBJbmplY3RhYmxlLFxuICBJbmplY3RvcixcbiAgSU5KRUNUT1IsXG4gIE9wdGlvbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZyb20sXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBSZXBsYXlTdWJqZWN0LFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGNhdGNoRXJyb3IsXG4gIG1hcCxcbiAgc3dpdGNoTWFwLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBJc05hdmlnYXRpb25EaXZpZGVySXRlbSxcbiAgSXNOYXZpZ2F0aW9uSW5zZXJ0SXRlbSxcbiAgSXNOYXZpZ2F0aW9uSXRlbSxcbiAgTmF2aWdhdGlvbixcbiAgTmF2aWdhdGlvbkRpdmlkZXJJdGVtLFxuICBOYXZpZ2F0aW9uSXRlbSxcbiAgTmF2aWdhdGlvbldpdGhJbnNlcnRzLFxufSBmcm9tICcuL25hdmlnYXRpb24vbmF2aWdhdGlvbi1pdGVtJztcbmltcG9ydCB7XG4gIFJYQVBfTkFWSUdBVElPTl9DT05GSUcsXG4gIFJYQVBfTkFWSUdBVElPTl9DT05GSUdfSU5TRVJUUyxcbn0gZnJvbSAnLi90b2tlbnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvblNlcnZpY2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgY29uZmlnJDogT2JzZXJ2YWJsZTxOYXZpZ2F0aW9uPjtcblxuICBwcml2YXRlIGluc2VydHMgPSBuZXcgTWFwPHN0cmluZywgTmF2aWdhdGlvbldpdGhJbnNlcnRzPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbmF2aWdhdGlvbjogTmF2aWdhdGlvbldpdGhJbnNlcnRzO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbmF2aWdhdGlvbiQgPSBuZXcgUmVwbGF5U3ViamVjdDxOYXZpZ2F0aW9uPigxKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvciA9IGluamVjdChJTkpFQ1RPUik7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChSWEFQX05BVklHQVRJT05fQ09ORklHKVxuICAgICAgbmF2aWdhdGlvbjogYW55LFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChSWEFQX05BVklHQVRJT05fQ09ORklHX0lOU0VSVFMpXG4gICAgICBpbnNlcnRzOiBhbnkgfCBudWxsID0gbnVsbCxcbiAgKSB7XG4gICAgaWYgKHR5cGVvZiBuYXZpZ2F0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLm5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubmF2aWdhdGlvbiA9IG5hdmlnYXRpb247XG4gICAgfVxuICAgIGlmIChpbnNlcnRzKSB7XG4gICAgICBPYmplY3QuZW50cmllcyhpbnNlcnRzKS5mb3JFYWNoKChbIGlkLCBpbnNlcnQgXTogWyBzdHJpbmcsIGFueSBdKSA9PlxuICAgICAgICB0aGlzLmluc2VydChpZCwgaW5zZXJ0LCBmYWxzZSksXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZU5hdmlnYXRpb24oKTtcbiAgICB0aGlzLmNvbmZpZyQgPSB0aGlzLm5hdmlnYXRpb24kLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKG5hdmlnYXRpb25XaXRob3V0U3RhdHVzQ2hlY2spID0+XG4gICAgICAgIHRoaXMuY2hlY2tOYXZpZ2F0aW9uU3RhdHVzUHJvdmlkZXJzKG5hdmlnYXRpb25XaXRob3V0U3RhdHVzQ2hlY2spLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBhZGQgaW5zdGVhZFxuICAgKiBAcGFyYW0gaWRcbiAgICogQHBhcmFtIHZhbHVlXG4gICAqIEBwYXJhbSB1cGRhdGVcbiAgICovXG4gIHB1YmxpYyBpbnNlcnQoXG4gICAgaWQ6IHN0cmluZyxcbiAgICB2YWx1ZTogTmF2aWdhdGlvbldpdGhJbnNlcnRzLFxuICAgIHVwZGF0ZSA9IHRydWUsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuYWRkKGlkLCB2YWx1ZSwgdXBkYXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGQoXG4gICAgaWQ6IHN0cmluZyxcbiAgICB2YWx1ZTogTmF2aWdhdGlvbldpdGhJbnNlcnRzLFxuICAgIHVwZGF0ZSA9IHRydWUsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuaW5zZXJ0cy5zZXQoaWQsIHZhbHVlKTtcbiAgICBpZiAodXBkYXRlKSB7XG4gICAgICB0aGlzLnVwZGF0ZU5hdmlnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFzKGlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbnNlcnRzLmhhcyhpZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0KGlkOiBzdHJpbmcpOiBOYXZpZ2F0aW9uV2l0aEluc2VydHMgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmluc2VydHMuZ2V0KGlkKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmUoaWQ6IHN0cmluZywgdXBkYXRlID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMuaW5zZXJ0cy5kZWxldGUoaWQpO1xuICAgIGlmICh1cGRhdGUpIHtcbiAgICAgIHRoaXMudXBkYXRlTmF2aWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVOYXZpZ2F0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMubmF2aWdhdGlvbiQubmV4dCh0aGlzLnJlcGxhY2VJbnNlcnRzKHRoaXMubmF2aWdhdGlvbikpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAcGFyYW0gbmF2aWdhdGlvbkl0ZW1cbiAgICovXG4gIHB1YmxpYyBjaGVja05hdmlnYXRpb25JdGVtU3RhdHVzUHJvdmlkZXJzKFxuICAgIG5hdmlnYXRpb25JdGVtOiBOYXZpZ2F0aW9uSXRlbSB8IE5hdmlnYXRpb25EaXZpZGVySXRlbSxcbiAgKTogT2JzZXJ2YWJsZTxOYXZpZ2F0aW9uSXRlbSB8IE5hdmlnYXRpb25EaXZpZGVySXRlbSB8IG51bGw+IHtcbiAgICBpZiAoSXNOYXZpZ2F0aW9uRGl2aWRlckl0ZW0obmF2aWdhdGlvbkl0ZW0pIHx8ICFuYXZpZ2F0aW9uSXRlbS5zdGF0dXMpIHtcbiAgICAgIHJldHVybiBvZihuYXZpZ2F0aW9uSXRlbSk7XG4gICAgfVxuICAgIGNvbnN0IGlzVmlzaWJsZUFycmF5JDogQXJyYXk8T2JzZXJ2YWJsZTxib29sZWFuPj4gPSBuYXZpZ2F0aW9uSXRlbVxuICAgICAgLnN0YXR1c1xuICAgICAgLm1hcCgoc3RhdHVzVG9rZW4pID0+IHRoaXMuaW5qZWN0b3IuZ2V0KFxuICAgICAgICBzdGF0dXNUb2tlbikpXG4gICAgICAubWFwKChzdGF0dXMpID0+IHtcbiAgICAgICAgY29uc3QgaXNWaXNpYmxlID0gc3RhdHVzLmlzVmlzaWJsZShcbiAgICAgICAgICBuYXZpZ2F0aW9uSXRlbSk7XG4gICAgICAgIGlmICh0eXBlb2YgaXNWaXNpYmxlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICByZXR1cm4gb2YoaXNWaXNpYmxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gZnJvbShpc1Zpc2libGUpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLm1hcChpc1Zpc2libGUkID0+IGlzVmlzaWJsZSQucGlwZShjYXRjaEVycm9yKGUgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBpc1Zpc2libGUgbWV0aG9kIGZhaWxlZDogJHsgZS5tZXNzYWdlIH1gKTtcbiAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgIH0pKSk7XG4gICAgLy8gVE9ETyA6IGRvbnQgd2FpdCBmb3IgYWxsIHN0YXR1cyBzZXJ2aWNlcyB0byBjb21wbGV0ZSwgYnV0IGNhbmNlbCB3YWl0aW5nIGlmIG9uZSByZXR1cm5zIGZhbHNlXG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoaXNWaXNpYmxlQXJyYXkkKS5waXBlKFxuICAgICAgbWFwKChpc1Zpc2libGVBcnJheSkgPT5cbiAgICAgICAgaXNWaXNpYmxlQXJyYXkucmVkdWNlKChhY2MsIGlzVmlzaWJsZSkgPT4gYWNjICYmIGlzVmlzaWJsZSwgdHJ1ZSksXG4gICAgICApLFxuICAgICAgbWFwKChpc1Zpc2libGUpID0+IChpc1Zpc2libGUgPyBuYXZpZ2F0aW9uSXRlbSA6IG51bGwpKSxcbiAgICAgIHN3aXRjaE1hcCgobmF2aWdhdGlvbkl0ZW1Pck51bGwpID0+IHtcbiAgICAgICAgaWYgKG5hdmlnYXRpb25JdGVtT3JOdWxsKSB7XG4gICAgICAgICAgaWYgKG5hdmlnYXRpb25JdGVtT3JOdWxsLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNoZWNrTmF2aWdhdGlvblN0YXR1c1Byb3ZpZGVycyhcbiAgICAgICAgICAgICAgbmF2aWdhdGlvbkl0ZW1Pck51bGwuY2hpbGRyZW4sXG4gICAgICAgICAgICApLnBpcGUoXG4gICAgICAgICAgICAgIG1hcCgoY2hpbGRyZW4pID0+ICh7XG4gICAgICAgICAgICAgICAgLi4ubmF2aWdhdGlvbkl0ZW1Pck51bGwsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBvZihuYXZpZ2F0aW9uSXRlbU9yTnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQHBhcmFtIG5hdmlnYXRpb25JdGVtXG4gICAqL1xuICBwdWJsaWMgY2hlY2tOYXZpZ2F0aW9uU3RhdHVzUHJvdmlkZXJzKFxuICAgIG5hdmlnYXRpb246IE5hdmlnYXRpb24sXG4gICk6IE9ic2VydmFibGU8TmF2aWdhdGlvbj4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFxuICAgICAgbmF2aWdhdGlvbi5tYXAoKG5hdmlnYXRpb25JdGVtKSA9PlxuICAgICAgICB0aGlzLmNoZWNrTmF2aWdhdGlvbkl0ZW1TdGF0dXNQcm92aWRlcnMobmF2aWdhdGlvbkl0ZW0pLFxuICAgICAgKSxcbiAgICApLnBpcGUoXG4gICAgICBtYXAoKG5hdmlnYXRpb25XaXRoTnVsbEl0ZW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IGNsZWFuTmF2aWdhdGlvbjogTmF2aWdhdGlvbiA9IFtdO1xuXG4gICAgICAgIGZvciAoY29uc3QgbmF2aWdhdGlvbkl0ZW0gb2YgbmF2aWdhdGlvbldpdGhOdWxsSXRlbXMpIHtcbiAgICAgICAgICBpZiAobmF2aWdhdGlvbkl0ZW0gIT09IG51bGwpIHtcbiAgICAgICAgICAgIGNsZWFuTmF2aWdhdGlvbi5wdXNoKG5hdmlnYXRpb25JdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2xlYW5OYXZpZ2F0aW9uO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVwbGFjZUluc2VydHMoXG4gICAgbmF2aWdhdGlvbldpdGhJbnNlcnRzOiBOYXZpZ2F0aW9uV2l0aEluc2VydHMsXG4gICk6IE5hdmlnYXRpb24ge1xuICAgIGNvbnN0IG5hdmlnYXRpb246IE5hdmlnYXRpb24gPSBbXTtcblxuICAgIGZvciAoY29uc3QgbmF2aWdhdGlvbkl0ZW0gb2YgbmF2aWdhdGlvbldpdGhJbnNlcnRzKSB7XG4gICAgICBpZiAoSXNOYXZpZ2F0aW9uSW5zZXJ0SXRlbShuYXZpZ2F0aW9uSXRlbSkpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5zZXJ0cy5oYXMobmF2aWdhdGlvbkl0ZW0uaW5zZXJ0KSkge1xuICAgICAgICAgIG5hdmlnYXRpb24ucHVzaChcbiAgICAgICAgICAgIC4uLnRoaXMucmVwbGFjZUluc2VydHModGhpcy5pbnNlcnRzLmdldChuYXZpZ2F0aW9uSXRlbS5pbnNlcnQpISksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChJc05hdmlnYXRpb25JdGVtKG5hdmlnYXRpb25JdGVtKSkge1xuICAgICAgICBuYXZpZ2F0aW9uLnB1c2goe1xuICAgICAgICAgIC4uLm5hdmlnYXRpb25JdGVtLFxuICAgICAgICAgIGNoaWxkcmVuOiB0aGlzLnJlcGxhY2VJbnNlcnRzKG5hdmlnYXRpb25JdGVtLmNoaWxkcmVuID8/IFtdKSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKElzTmF2aWdhdGlvbkRpdmlkZXJJdGVtKG5hdmlnYXRpb25JdGVtKSkge1xuICAgICAgICBuYXZpZ2F0aW9uLnB1c2gobmF2aWdhdGlvbkl0ZW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuYXZpZ2F0aW9uO1xuICB9XG59XG4iXX0=