@rxap/layout 18.3.4-dev.0 → 19.0.0-dev.2

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 (146) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +1 -1
  3. package/compodoc/changelog.html +89 -0
  4. package/compodoc/components/AppsButtonComponent.html +18 -23
  5. package/compodoc/components/BaseLayoutComponent.html +8 -13
  6. package/compodoc/components/DefaultHeaderComponent.html +76 -35
  7. package/compodoc/components/FooterComponent.html +7 -12
  8. package/compodoc/components/HeaderComponent.html +13 -18
  9. package/compodoc/components/LayoutComponent.html +29 -72
  10. package/compodoc/components/MinimalLayoutComponent.html +5 -10
  11. package/compodoc/components/NavigationComponent.html +31 -36
  12. package/compodoc/components/NavigationItemComponent.html +52 -51
  13. package/compodoc/components/NavigationProgressBarComponent.html +9 -14
  14. package/compodoc/components/ReleaseInfoComponent.html +11 -16
  15. package/compodoc/components/SettingsButtonComponent.html +64 -53
  16. package/compodoc/components/SidenavComponent.html +35 -40
  17. package/compodoc/components/SidenavToggleButtonComponent.html +11 -16
  18. package/compodoc/components/UserProfileIconComponent.html +18 -20
  19. package/compodoc/dependencies.html +23 -17
  20. package/compodoc/index.html +1 -1
  21. package/compodoc/injectables/DefaultHeaderService.html +585 -0
  22. package/compodoc/interfaces/NavigationDividerItem.html +1 -1
  23. package/compodoc/interfaces/NavigationInsertItem.html +1 -1
  24. package/compodoc/interfaces/NavigationItem.html +3 -3
  25. package/compodoc/interfaces/NavigationStatus.html +1 -1
  26. package/compodoc/interfaces/ReleaseInfoModule.html +2 -0
  27. package/compodoc/interfaces/SettingsMenuItem.html +2 -0
  28. package/compodoc/js/menu-wc.js +3 -0
  29. package/compodoc/js/menu-wc_es5.js +2 -2
  30. package/compodoc/js/search/search_index.js +2 -2
  31. package/compodoc/miscellaneous/functions.html +387 -6
  32. package/compodoc/miscellaneous/typealiases.html +19 -0
  33. package/compodoc/miscellaneous/variables.html +50 -1
  34. package/compodoc/overview.html +1 -1
  35. package/compodoc/properties.html +1 -1
  36. package/docs/assets/navigation.js +1 -1
  37. package/docs/assets/search.js +1 -1
  38. package/docs/classes/AppsButtonComponent.html +3 -3
  39. package/docs/classes/BaseLayoutComponent.html +1 -1
  40. package/docs/classes/DefaultHeaderComponent.html +5 -2
  41. package/docs/classes/DefaultHeaderService.html +16 -0
  42. package/docs/classes/ExternalAppsService.html +2 -2
  43. package/docs/classes/FooterComponent.html +2 -2
  44. package/docs/classes/FooterDirective.html +2 -2
  45. package/docs/classes/FooterService.html +6 -6
  46. package/docs/classes/HeaderComponent.html +2 -2
  47. package/docs/classes/HeaderDirective.html +2 -2
  48. package/docs/classes/HeaderService.html +6 -6
  49. package/docs/classes/LayoutComponent.html +2 -2
  50. package/docs/classes/LayoutService.html +2 -2
  51. package/docs/classes/LogoService.html +2 -2
  52. package/docs/classes/MinimalLayoutComponent.html +1 -1
  53. package/docs/classes/NavigationComponent.html +2 -2
  54. package/docs/classes/NavigationItemComponent.html +2 -2
  55. package/docs/classes/NavigationProgressBarComponent.html +2 -2
  56. package/docs/classes/NavigationService.html +3 -3
  57. package/docs/classes/ReleaseInfoComponent.html +2 -2
  58. package/docs/classes/SettingsButtonComponent.html +2 -2
  59. package/docs/classes/SidenavComponent.html +2 -2
  60. package/docs/classes/SidenavFooterDirective.html +2 -2
  61. package/docs/classes/SidenavHeaderDirective.html +2 -2
  62. package/docs/classes/SidenavToggleButtonComponent.html +2 -2
  63. package/docs/classes/UserProfileIconComponent.html +2 -2
  64. package/docs/documentation.json +2279 -1170
  65. package/docs/functions/IsNavigationDividerItem.html +1 -1
  66. package/docs/functions/IsNavigationInsertItem.html +1 -1
  67. package/docs/functions/IsNavigationItem.html +1 -1
  68. package/docs/functions/provideExternalApps.html +1 -1
  69. package/docs/functions/provideLayout.html +1 -1
  70. package/docs/functions/withDefaultHeaderComponent.html +1 -1
  71. package/docs/functions/withDefaultHeaderItems.html +1 -0
  72. package/docs/functions/withFooterComponents.html +1 -1
  73. package/docs/functions/withHeaderComponents.html +1 -1
  74. package/docs/functions/withNavigationConfig.html +1 -1
  75. package/docs/functions/withNavigationInserts.html +1 -1
  76. package/docs/functions/withReleaseInfoModules.html +1 -1
  77. package/docs/functions/withSettingsMenuItems.html +1 -1
  78. package/docs/functions/withUserProfileDataSource.html +1 -1
  79. package/docs/index.html +1 -1
  80. package/docs/interfaces/NavigationDividerItem.html +2 -2
  81. package/docs/interfaces/NavigationInsertItem.html +2 -2
  82. package/docs/interfaces/NavigationItem.html +2 -2
  83. package/docs/interfaces/NavigationStatus.html +2 -2
  84. package/docs/interfaces/ReleaseInfoModule.html +2 -2
  85. package/docs/interfaces/SettingsMenuItem.html +2 -2
  86. package/docs/modules.html +5 -1
  87. package/docs/types/DefaultHeaderItemComponent.html +1 -0
  88. package/docs/types/ExternalApp.html +1 -1
  89. package/docs/types/ExtractUsernameFromProfileFn.html +1 -1
  90. package/docs/types/Navigation.html +1 -1
  91. package/docs/types/NavigationWithInserts.html +1 -1
  92. package/docs/types/SettingsMenuItemComponent.html +1 -1
  93. package/docs/variables/EXTRACT_USERNAME_FROM_PROFILE.html +1 -1
  94. package/docs/variables/RXAP_DEFAULT_HEADER_ITEM_COMPONENT.html +1 -0
  95. package/docs/variables/RXAP_EXTERNAL_APP.html +1 -1
  96. package/docs/variables/RXAP_EXTERNAL_APP_FILTER.html +1 -1
  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 -1
  104. package/docs/variables/RXAP_SETTINGS_MENU_ITEM.html +1 -1
  105. package/docs/variables/RXAP_SETTINGS_MENU_ITEM_COMPONENT.html +1 -1
  106. package/docs/variables/RXAP_USER_PROFILE_DATA_SOURCE.html +1 -1
  107. package/fesm2022/rxap-layout.mjs +93 -93
  108. package/fesm2022/rxap-layout.mjs.map +1 -1
  109. package/package.json +43 -46
  110. package/src/migrations/18.0.0/add-seperate-external-apps-provider/__snapshots__/add-seperate-external-apps-provider.spec.ts.snap +22 -0
  111. package/src/migrations/18.0.0/add-theme-provider-to-app-config/__snapshots__/add-theme-provider-to-app-config.spec.ts.snap +18 -0
  112. package/src/migrations/18.0.0/add-user-theme-provider-to-layout-providers/__snapshots__/add-user-theme-provider-to-layout-providers.spec.ts.snap +51 -0
  113. package/src/migrations/18.0.0/add-with-user-profile-provider/__snapshots__/add-with-user-profile-provider.spec.ts.snap +53 -0
  114. package/theme.css +425 -1
  115. package/esm2022/index.mjs +0 -63
  116. package/esm2022/lib/base-layout/base-layout.component.mjs +0 -16
  117. package/esm2022/lib/default-header/apps-button/apps-button.component.mjs +0 -40
  118. package/esm2022/lib/default-header/default-header.component.mjs +0 -39
  119. package/esm2022/lib/default-header/default-header.service.mjs +0 -65
  120. package/esm2022/lib/default-header/settings-button/settings-button.component.mjs +0 -78
  121. package/esm2022/lib/default-header/sidenav-toggle-button/sidenav-toggle-button.component.mjs +0 -24
  122. package/esm2022/lib/default-header/user-profile-icon/user-profile-icon.component.mjs +0 -35
  123. package/esm2022/lib/external-apps.service.mjs +0 -99
  124. package/esm2022/lib/footer/footer.component.mjs +0 -21
  125. package/esm2022/lib/footer/footer.directive.mjs +0 -30
  126. package/esm2022/lib/footer.service.mjs +0 -58
  127. package/esm2022/lib/header/header.component.mjs +0 -24
  128. package/esm2022/lib/header/header.directive.mjs +0 -30
  129. package/esm2022/lib/header.service.mjs +0 -60
  130. package/esm2022/lib/layout/layout.component.mjs +0 -50
  131. package/esm2022/lib/layout.service.mjs +0 -93
  132. package/esm2022/lib/logo.service.mjs +0 -23
  133. package/esm2022/lib/minimal-layout/minimal-layout.component.mjs +0 -16
  134. package/esm2022/lib/navigation/navigation-item/navigation-item.component.mjs +0 -139
  135. package/esm2022/lib/navigation/navigation-item.mjs +0 -10
  136. package/esm2022/lib/navigation/navigation.component.mjs +0 -57
  137. package/esm2022/lib/navigation-progress-bar/navigation-progress-bar.component.mjs +0 -23
  138. package/esm2022/lib/navigation.service.mjs +0 -141
  139. package/esm2022/lib/provide.mjs +0 -105
  140. package/esm2022/lib/release-info/release-info.component.mjs +0 -28
  141. package/esm2022/lib/sidenav/sidenav-footer.directive.mjs +0 -20
  142. package/esm2022/lib/sidenav/sidenav-header.directive.mjs +0 -20
  143. package/esm2022/lib/sidenav/sidenav.component.mjs +0 -60
  144. package/esm2022/lib/tokens.mjs +0 -23
  145. package/esm2022/lib/types.mjs +0 -2
  146. package/esm2022/rxap-layout.mjs +0 -5
@@ -1,60 +0,0 @@
1
- import { ComponentPortal, } from '@angular/cdk/portal';
2
- import { computed, inject, Injectable, isDevMode, signal, } from '@angular/core';
3
- import { RXAP_HEADER_COMPONENT } from './tokens';
4
- import { coerceArray } from '@rxap/utilities';
5
- import * as i0 from "@angular/core";
6
- export class HeaderService {
7
- constructor() {
8
- this.components = coerceArray(inject(RXAP_HEADER_COMPONENT, { optional: true }));
9
- /**
10
- * Represents an array of `Portal` objects with unknown type.
11
- *
12
- * @typedef {Array<Portal<unknown>>} SignalPortals
13
- */
14
- this.portals = signal(this.components.map(component => new ComponentPortal(component)));
15
- /**
16
- * Computes the count of portals.
17
- *
18
- * @returns {number} The count of portals.
19
- */
20
- this.portalCount = computed(() => this.portals().length);
21
- }
22
- /**
23
- * Adds a portal to the list of portals.
24
- *
25
- * @param {Portal<unknown>} portal - The portal to be added.
26
- *
27
- * @return {void}
28
- */
29
- pushPortal(portal) {
30
- if (!this.portals().includes(portal)) {
31
- this.portals.update(portals => [...portals, portal]);
32
- }
33
- else {
34
- if (isDevMode()) {
35
- console.warn('Can not add the same portal multiple times');
36
- }
37
- }
38
- }
39
- /**
40
- * Removes a portal from the list of portals.
41
- *
42
- * @param {Portal<unknown>} portal - The portal to be removed.
43
- * @return {void}
44
- */
45
- removePortal(portal) {
46
- const index = this.portals().indexOf(portal);
47
- if (index !== -1) {
48
- this.portals.update(portals => {
49
- portals.splice(index, 1);
50
- return portals.slice();
51
- });
52
- }
53
- }
54
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: HeaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
55
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: HeaderService }); }
56
- }
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: HeaderService, decorators: [{
58
- type: Injectable
59
- }] });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL2xheW91dC9zcmMvbGliL2hlYWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxlQUFlLEdBRWhCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04sVUFBVSxFQUNWLFNBQVMsRUFDVCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFHOUMsTUFBTSxPQUFPLGFBQWE7SUFEMUI7UUFHbUIsZUFBVSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMscUJBQXFCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTdGOzs7O1dBSUc7UUFDYSxZQUFPLEdBQUcsTUFBTSxDQUF5QixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUczSDs7OztXQUlHO1FBQ2EsZ0JBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBb0NyRTtJQWpDQzs7Ozs7O09BTUc7SUFDSSxVQUFVLENBQUMsTUFBdUI7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUUsR0FBRyxPQUFPLEVBQUUsTUFBTSxDQUFFLENBQUMsQ0FBQztRQUN6RCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksU0FBUyxFQUFFLEVBQUUsQ0FBQztnQkFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1lBQzdELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksWUFBWSxDQUFDLE1BQXVCO1FBQ3pDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0MsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDNUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pCLE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7OEdBbkRVLGFBQWE7a0hBQWIsYUFBYTs7MkZBQWIsYUFBYTtrQkFEekIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudFBvcnRhbCxcbiAgUG9ydGFsLFxufSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIEluamVjdGFibGUsXG4gIGlzRGV2TW9kZSxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJYQVBfSEVBREVSX0NPTVBPTkVOVCB9IGZyb20gJy4vdG9rZW5zJztcbmltcG9ydCB7IGNvZXJjZUFycmF5IH0gZnJvbSAnQHJ4YXAvdXRpbGl0aWVzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEhlYWRlclNlcnZpY2Uge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50cyA9IGNvZXJjZUFycmF5KGluamVjdChSWEFQX0hFQURFUl9DT01QT05FTlQsIHsgb3B0aW9uYWw6IHRydWUgfSkpO1xuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIGFuIGFycmF5IG9mIGBQb3J0YWxgIG9iamVjdHMgd2l0aCB1bmtub3duIHR5cGUuXG4gICAqXG4gICAqIEB0eXBlZGVmIHtBcnJheTxQb3J0YWw8dW5rbm93bj4+fSBTaWduYWxQb3J0YWxzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcG9ydGFscyA9IHNpZ25hbDxBcnJheTxQb3J0YWw8dW5rbm93bj4+Pih0aGlzLmNvbXBvbmVudHMubWFwKGNvbXBvbmVudCA9PiBuZXcgQ29tcG9uZW50UG9ydGFsKGNvbXBvbmVudCkpKTtcblxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgY291bnQgb2YgcG9ydGFscy5cbiAgICpcbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIGNvdW50IG9mIHBvcnRhbHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcG9ydGFsQ291bnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnBvcnRhbHMoKS5sZW5ndGgpO1xuXG5cbiAgLyoqXG4gICAqIEFkZHMgYSBwb3J0YWwgdG8gdGhlIGxpc3Qgb2YgcG9ydGFscy5cbiAgICpcbiAgICogQHBhcmFtIHtQb3J0YWw8dW5rbm93bj59IHBvcnRhbCAtIFRoZSBwb3J0YWwgdG8gYmUgYWRkZWQuXG4gICAqXG4gICAqIEByZXR1cm4ge3ZvaWR9XG4gICAqL1xuICBwdWJsaWMgcHVzaFBvcnRhbChwb3J0YWw6IFBvcnRhbDx1bmtub3duPikge1xuICAgIGlmICghdGhpcy5wb3J0YWxzKCkuaW5jbHVkZXMocG9ydGFsKSkge1xuICAgICAgdGhpcy5wb3J0YWxzLnVwZGF0ZShwb3J0YWxzID0+IFsgLi4ucG9ydGFscywgcG9ydGFsIF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdDYW4gbm90IGFkZCB0aGUgc2FtZSBwb3J0YWwgbXVsdGlwbGUgdGltZXMnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIHBvcnRhbCBmcm9tIHRoZSBsaXN0IG9mIHBvcnRhbHMuXG4gICAqXG4gICAqIEBwYXJhbSB7UG9ydGFsPHVua25vd24+fSBwb3J0YWwgLSBUaGUgcG9ydGFsIHRvIGJlIHJlbW92ZWQuXG4gICAqIEByZXR1cm4ge3ZvaWR9XG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlUG9ydGFsKHBvcnRhbDogUG9ydGFsPHVua25vd24+KSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnBvcnRhbHMoKS5pbmRleE9mKHBvcnRhbCk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5wb3J0YWxzLnVwZGF0ZShwb3J0YWxzID0+IHtcbiAgICAgICAgcG9ydGFscy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICByZXR1cm4gcG9ydGFscy5zbGljZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
@@ -1,50 +0,0 @@
1
- import { AsyncPipe, NgClass, NgIf, NgOptimizedImage, NgStyle, } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, computed, inject, } from '@angular/core';
3
- import { MatButtonModule } from '@angular/material/button';
4
- import { MatIconModule } from '@angular/material/icon';
5
- import { MatMenuModule } from '@angular/material/menu';
6
- import { MatSidenavModule } from '@angular/material/sidenav';
7
- import { RouterLink, RouterOutlet, } from '@angular/router';
8
- import { FooterComponent } from '../footer/footer.component';
9
- import { HeaderComponent } from '../header/header.component';
10
- import { LogoService } from '../logo.service';
11
- import { NavigationProgressBarComponent } from '../navigation-progress-bar/navigation-progress-bar.component';
12
- import { NavigationComponent } from '../navigation/navigation.component';
13
- import { ReleaseInfoComponent } from '../release-info/release-info.component';
14
- import { SidenavFooterDirective } from '../sidenav/sidenav-footer.directive';
15
- import { SidenavComponent } from '../sidenav/sidenav.component';
16
- import * as i0 from "@angular/core";
17
- export class LayoutComponent {
18
- constructor() {
19
- this.logoService = inject(LogoService);
20
- this.logoSrc = computed(() => this.logoService.src());
21
- this.logoWidth = computed(() => this.logoService.width());
22
- this.logoHeight = computed(() => this.logoService.height());
23
- }
24
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: LayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
25
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: LayoutComponent, isStandalone: true, selector: "rxap-layout", ngImport: i0, template: "<rxap-header class=\"z-10 w-full fixed top-0\"></rxap-header>\n<rxap-navigation-progress-bar></rxap-navigation-progress-bar>\n<rxap-sidenav>\n <router-outlet></router-outlet>\n <ng-template rxapSidenavFooter>\n <img\n [src]=\"logoSrc()\"\n [routerLink]=\"['/']\"\n [width]=\"logoWidth()\"\n [height]=\"logoHeight()\"\n alt=\"logo\"\n class=\"grow-0 mx-16 cursor-pointer\"\n />\n <div class=\"grow-0 px-16 mt-4\">\n <rxap-release-info></rxap-release-info>\n </div>\n </ng-template>\n</rxap-sidenav>\n<rxap-footer class=\"z-10 w-full fixed bottom-0\"></rxap-footer>\n", styles: [""], dependencies: [{ kind: "component", type: HeaderComponent, selector: "rxap-header", inputs: ["color"] }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: FooterComponent, selector: "rxap-footer" }, { kind: "ngmodule", type: MatMenuModule }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: SidenavComponent, selector: "rxap-sidenav" }, { kind: "component", type: ReleaseInfoComponent, selector: "rxap-release-info" }, { kind: "directive", type: SidenavFooterDirective, selector: "[rxapSidenavFooter]" }, { kind: "component", type: NavigationProgressBarComponent, selector: "rxap-navigation-progress-bar" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
26
- }
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: LayoutComponent, decorators: [{
28
- type: Component,
29
- args: [{ selector: 'rxap-layout', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
30
- HeaderComponent,
31
- MatSidenavModule,
32
- AsyncPipe,
33
- MatIconModule,
34
- MatButtonModule,
35
- RouterLink,
36
- NgIf,
37
- FooterComponent,
38
- MatMenuModule,
39
- NgOptimizedImage,
40
- NavigationComponent,
41
- RouterOutlet,
42
- NgStyle,
43
- NgClass,
44
- SidenavComponent,
45
- ReleaseInfoComponent,
46
- SidenavFooterDirective,
47
- NavigationProgressBarComponent,
48
- ], template: "<rxap-header class=\"z-10 w-full fixed top-0\"></rxap-header>\n<rxap-navigation-progress-bar></rxap-navigation-progress-bar>\n<rxap-sidenav>\n <router-outlet></router-outlet>\n <ng-template rxapSidenavFooter>\n <img\n [src]=\"logoSrc()\"\n [routerLink]=\"['/']\"\n [width]=\"logoWidth()\"\n [height]=\"logoHeight()\"\n alt=\"logo\"\n class=\"grow-0 mx-16 cursor-pointer\"\n />\n <div class=\"grow-0 px-16 mt-4\">\n <rxap-release-info></rxap-release-info>\n </div>\n </ng-template>\n</rxap-sidenav>\n<rxap-footer class=\"z-10 w-full fixed bottom-0\"></rxap-footer>\n" }]
49
- }] });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvbGF5b3V0L2xheW91dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL2xheW91dC9zcmMvbGliL2xheW91dC9sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxPQUFPLEVBQ1AsSUFBSSxFQUNKLGdCQUFnQixFQUNoQixPQUFPLEdBQ1IsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFDTCxVQUFVLEVBQ1YsWUFBWSxHQUNiLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDOUcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBOEJoRSxNQUFNLE9BQU8sZUFBZTtJQTNCNUI7UUE2Qm1CLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLFlBQU8sR0FBbUIsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNqRSxjQUFTLEdBQW1CLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDckUsZUFBVSxHQUFtQixRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0tBRXhGOzhHQVBZLGVBQWU7a0dBQWYsZUFBZSx1RUMzRDVCLHltQkFtQkEsMEREb0JJLGVBQWUsMEVBQ2YsZ0JBQWdCLDhCQUVoQixhQUFhLDhCQUNiLGVBQWUsK0JBQ2YsVUFBVSxvT0FFVixlQUFlLHVEQUNmLGFBQWEsK0JBR2IsWUFBWSwySkFHWixnQkFBZ0IseURBQ2hCLG9CQUFvQiw4REFDcEIsc0JBQXNCLGdFQUN0Qiw4QkFBOEI7OzJGQUdyQixlQUFlO2tCQTNCM0IsU0FBUzsrQkFDRSxhQUFhLG1CQUdOLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixTQUFTO3dCQUNULGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixVQUFVO3dCQUNWLElBQUk7d0JBQ0osZUFBZTt3QkFDZixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQixZQUFZO3dCQUNaLE9BQU87d0JBQ1AsT0FBTzt3QkFDUCxnQkFBZ0I7d0JBQ2hCLG9CQUFvQjt3QkFDcEIsc0JBQXNCO3dCQUN0Qiw4QkFBOEI7cUJBQy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXN5bmNQaXBlLFxuICBOZ0NsYXNzLFxuICBOZ0lmLFxuICBOZ09wdGltaXplZEltYWdlLFxuICBOZ1N0eWxlLFxufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNYXRTaWRlbmF2TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5pbXBvcnQge1xuICBSb3V0ZXJMaW5rLFxuICBSb3V0ZXJPdXRsZXQsXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBGb290ZXJDb21wb25lbnQgfSBmcm9tICcuLi9mb290ZXIvZm9vdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb2dvU2VydmljZSB9IGZyb20gJy4uL2xvZ28uc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uUHJvZ3Jlc3NCYXJDb21wb25lbnQgfSBmcm9tICcuLi9uYXZpZ2F0aW9uLXByb2dyZXNzLWJhci9uYXZpZ2F0aW9uLXByb2dyZXNzLWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL25hdmlnYXRpb24vbmF2aWdhdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVsZWFzZUluZm9Db21wb25lbnQgfSBmcm9tICcuLi9yZWxlYXNlLWluZm8vcmVsZWFzZS1pbmZvLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTaWRlbmF2Rm9vdGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vc2lkZW5hdi9zaWRlbmF2LWZvb3Rlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU2lkZW5hdkNvbXBvbmVudCB9IGZyb20gJy4uL3NpZGVuYXYvc2lkZW5hdi5jb21wb25lbnQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3J4YXAtbGF5b3V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xheW91dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWyAnLi9sYXlvdXQuY29tcG9uZW50LnNjc3MnIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgSGVhZGVyQ29tcG9uZW50LFxuICAgIE1hdFNpZGVuYXZNb2R1bGUsXG4gICAgQXN5bmNQaXBlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIFJvdXRlckxpbmssXG4gICAgTmdJZixcbiAgICBGb290ZXJDb21wb25lbnQsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBOZ09wdGltaXplZEltYWdlLFxuICAgIE5hdmlnYXRpb25Db21wb25lbnQsXG4gICAgUm91dGVyT3V0bGV0LFxuICAgIE5nU3R5bGUsXG4gICAgTmdDbGFzcyxcbiAgICBTaWRlbmF2Q29tcG9uZW50LFxuICAgIFJlbGVhc2VJbmZvQ29tcG9uZW50LFxuICAgIFNpZGVuYXZGb290ZXJEaXJlY3RpdmUsXG4gICAgTmF2aWdhdGlvblByb2dyZXNzQmFyQ29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBMYXlvdXRDb21wb25lbnQge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nb1NlcnZpY2UgPSBpbmplY3QoTG9nb1NlcnZpY2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgbG9nb1NyYzogU2lnbmFsPHN0cmluZz4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmxvZ29TZXJ2aWNlLnNyYygpKTtcbiAgcHVibGljIHJlYWRvbmx5IGxvZ29XaWR0aDogU2lnbmFsPG51bWJlcj4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmxvZ29TZXJ2aWNlLndpZHRoKCkpO1xuICBwdWJsaWMgcmVhZG9ubHkgbG9nb0hlaWdodDogU2lnbmFsPG51bWJlcj4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmxvZ29TZXJ2aWNlLmhlaWdodCgpKTtcblxufVxuIiwiPHJ4YXAtaGVhZGVyIGNsYXNzPVwiei0xMCB3LWZ1bGwgZml4ZWQgdG9wLTBcIj48L3J4YXAtaGVhZGVyPlxuPHJ4YXAtbmF2aWdhdGlvbi1wcm9ncmVzcy1iYXI+PC9yeGFwLW5hdmlnYXRpb24tcHJvZ3Jlc3MtYmFyPlxuPHJ4YXAtc2lkZW5hdj5cbiAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxuICA8bmctdGVtcGxhdGUgcnhhcFNpZGVuYXZGb290ZXI+XG4gICAgPGltZ1xuICAgICAgW3NyY109XCJsb2dvU3JjKClcIlxuICAgICAgW3JvdXRlckxpbmtdPVwiWycvJ11cIlxuICAgICAgW3dpZHRoXT1cImxvZ29XaWR0aCgpXCJcbiAgICAgIFtoZWlnaHRdPVwibG9nb0hlaWdodCgpXCJcbiAgICAgIGFsdD1cImxvZ29cIlxuICAgICAgY2xhc3M9XCJncm93LTAgbXgtMTYgY3Vyc29yLXBvaW50ZXJcIlxuICAgIC8+XG4gICAgPGRpdiBjbGFzcz1cImdyb3ctMCBweC0xNiBtdC00XCI+XG4gICAgICA8cnhhcC1yZWxlYXNlLWluZm8+PC9yeGFwLXJlbGVhc2UtaW5mbz5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvcnhhcC1zaWRlbmF2PlxuPHJ4YXAtZm9vdGVyIGNsYXNzPVwiei0xMCB3LWZ1bGwgZml4ZWQgYm90dG9tLTBcIj48L3J4YXAtZm9vdGVyPlxuIl19
@@ -1,93 +0,0 @@
1
- import { MediaMatcher } from '@angular/cdk/layout';
2
- import { computed, effect, inject, Injectable, isDevMode, 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 { Observable } from 'rxjs';
7
- import { FooterService } from './footer.service';
8
- import { HeaderService } from './header.service';
9
- import * as i0 from "@angular/core";
10
- export class LayoutService {
11
- constructor() {
12
- this.currentThemeDensity = toSignal(ObserveCurrentThemeDensity());
13
- this.footerService = inject(FooterService);
14
- this.headerService = inject(HeaderService);
15
- this.config = inject(ConfigService);
16
- this.mediaMatcher = inject(MediaMatcher);
17
- const mobileQuery = this.mediaMatcher.matchMedia('(max-width: 959px)');
18
- this.isMobile = toSignal(new Observable(subscriber => {
19
- mobileQuery.addEventListener('change', (event) => {
20
- subscriber.next(event.matches);
21
- });
22
- }), { initialValue: mobileQuery.matches });
23
- const initialCollapsable = this.config.get('navigation.collapsable', true);
24
- const collapsable = initialCollapsable && !this.isMobile();
25
- const pinned = this.config.get('navigation.pinned', false);
26
- const mode = this.config.get('navigation.mode', pinned || !collapsable ? 'side' : 'over');
27
- const opened = this.config.get('navigation.opened', (!collapsable || pinned) && !this.isMobile());
28
- const fixedInViewport = this.config.get('navigation.fixedInViewport', true);
29
- if (isDevMode()) {
30
- console.log({
31
- initialCollapsable,
32
- collapsable,
33
- pinned,
34
- mode,
35
- opened,
36
- fixedInViewport,
37
- });
38
- }
39
- this.opened = signal(opened);
40
- this.mode = signal(mode);
41
- this.pinned = signal(pinned);
42
- this.collapsable = signal(collapsable);
43
- this.fixedInViewport = signal(fixedInViewport);
44
- this.collapsed = computed(() => this.collapsable() && !this.opened() && !this.pinned());
45
- this.fixedBottomGap = computed(() => {
46
- const footerPortalCount = this.footerService.portalCount();
47
- const currentThemeDensity = this.currentThemeDensity() ?? 0;
48
- return footerPortalCount * (currentThemeDensity * 4 + 64);
49
- });
50
- this.fixedTopGap = computed(() => {
51
- const headerPortalCount = this.headerService.portalCount();
52
- const currentThemeDensity = this.currentThemeDensity() ?? 0;
53
- return headerPortalCount * (currentThemeDensity * 4 + 64);
54
- });
55
- if (initialCollapsable) {
56
- effect(() => {
57
- const isMobile = this.isMobile();
58
- this.collapsable.set(!isMobile);
59
- if (!isMobile && !this.pinned()) {
60
- this.opened.set(false);
61
- }
62
- }, { allowSignalWrites: true });
63
- }
64
- effect(() => {
65
- if (this.pinned()) {
66
- this.mode.set('side');
67
- this.opened.set(true);
68
- }
69
- else {
70
- this.mode.set('over');
71
- this.opened.set(false);
72
- }
73
- }, { allowSignalWrites: true });
74
- }
75
- toggleOpened() {
76
- this.opened.update(opened => !opened);
77
- }
78
- togglePinned() {
79
- this.pinned.update(pinned => !pinned);
80
- }
81
- openSidenav() {
82
- this.opened.set(true);
83
- }
84
- closeSidenav() {
85
- this.opened.set(false);
86
- }
87
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: LayoutService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
88
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: LayoutService }); }
89
- }
90
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: LayoutService, decorators: [{
91
- type: Injectable
92
- }], ctorParameters: () => [] });
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL2xheW91dC9zcmMvbGliL2xheW91dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sVUFBVSxFQUNWLFNBQVMsRUFDVCxNQUFNLEdBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXRELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQUdqRCxNQUFNLE9BQU8sYUFBYTtJQWtCeEI7UUFWZ0Isd0JBQW1CLEdBQUcsUUFBUSxDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQztRQUs1RCxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxXQUFNLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQy9CLGlCQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBR25ELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMs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QUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7OEdBakdVLGFBQWE7a0hBQWIsYUFBYTs7MkZBQWIsYUFBYTtrQkFEekIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1lZGlhTWF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHtcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBJbmplY3RhYmxlLFxuICBpc0Rldk1vZGUsXG4gIHNpZ25hbCxcbiAgU2lnbmFsLFxuICBXcml0YWJsZVNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IE1hdERyYXdlck1vZGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAcnhhcC9jb25maWcnO1xuaW1wb3J0IHsgT2JzZXJ2ZUN1cnJlbnRUaGVtZURlbnNpdHkgfSBmcm9tICdAcnhhcC9uZ3gtdGhlbWUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9vdGVyU2VydmljZSB9IGZyb20gJy4vZm9vdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGVhZGVyU2VydmljZSB9IGZyb20gJy4vaGVhZGVyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTGF5b3V0U2VydmljZSB7XG5cbiAgcHVibGljIHJlYWRvbmx5IG9wZW5lZDogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj47XG4gIHB1YmxpYyByZWFkb25seSBtb2RlOiBXcml0YWJsZVNpZ25hbDxNYXREcmF3ZXJNb2RlPjtcbiAgcHVibGljIHJlYWRvbmx5IHBpbm5lZDogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj47XG4gIHB1YmxpYyByZWFkb25seSBjb2xsYXBzYWJsZTogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj47XG4gIHB1YmxpYyByZWFkb25seSBmaXhlZEJvdHRvbUdhcDogU2lnbmFsPG51bWJlcj47XG4gIHB1YmxpYyByZWFkb25seSBmaXhlZFRvcEdhcDogU2lnbmFsPG51bWJlcj47XG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50VGhlbWVEZW5zaXR5ID0gdG9TaWduYWwoT2JzZXJ2ZUN1cnJlbnRUaGVtZURlbnNpdHkoKSk7XG4gIHB1YmxpYyByZWFkb25seSBpc01vYmlsZTogU2lnbmFsPGJvb2xlYW4+O1xuICBwdWJsaWMgcmVhZG9ubHkgZml4ZWRJblZpZXdwb3J0OiBXcml0YWJsZVNpZ25hbDxib29sZWFuPjtcbiAgcHVibGljIHJlYWRvbmx5IGNvbGxhcHNlZDogU2lnbmFsPGJvb2xlYW4+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZm9vdGVyU2VydmljZSA9IGluamVjdChGb290ZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBoZWFkZXJTZXJ2aWNlID0gaW5qZWN0KEhlYWRlclNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdChDb25maWdTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBtZWRpYU1hdGNoZXIgPSBpbmplY3QoTWVkaWFNYXRjaGVyKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCBtb2JpbGVRdWVyeSA9IHRoaXMubWVkaWFNYXRjaGVyLm1hdGNoTWVkaWEoJyhtYXgtd2lkdGg6IDk1OXB4KScpO1xuICAgIHRoaXMuaXNNb2JpbGUgPSB0b1NpZ25hbChuZXcgT2JzZXJ2YWJsZTxib29sZWFuPihzdWJzY3JpYmVyID0+IHtcbiAgICAgIG1vYmlsZVF1ZXJ5LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIChldmVudCkgPT4ge1xuICAgICAgICBzdWJzY3JpYmVyLm5leHQoZXZlbnQubWF0Y2hlcyk7XG4gICAgICB9KTtcbiAgICB9KSwgeyBpbml0aWFsVmFsdWU6IG1vYmlsZVF1ZXJ5Lm1hdGNoZXMgfSk7XG5cbiAgICBjb25zdCBpbml0aWFsQ29sbGFwc2FibGUgPSB0aGlzLmNvbmZpZy5nZXQoJ25hdmlnYXRpb24uY29sbGFwc2FibGUnLCB0cnVlKTtcbiAgICBjb25zdCBjb2xsYXBzYWJsZSA9IGluaXRpYWxDb2xsYXBzYWJsZSAmJiAhdGhpcy5pc01vYmlsZSgpO1xuICAgIGNvbnN0IHBpbm5lZCA9IHRoaXMuY29uZmlnLmdldCgnbmF2aWdhdGlvbi5waW5uZWQnLCBmYWxzZSk7XG4gICAgY29uc3QgbW9kZSA9IHRoaXMuY29uZmlnLmdldCgnbmF2aWdhdGlvbi5tb2RlJywgcGlubmVkIHx8ICFjb2xsYXBzYWJsZSA/ICdzaWRlJyA6ICdvdmVyJyk7XG4gICAgY29uc3Qgb3BlbmVkID0gdGhpcy5jb25maWcuZ2V0KCduYXZpZ2F0aW9uLm9wZW5lZCcsICghY29sbGFwc2FibGUgfHwgcGlubmVkKSAmJiAhdGhpcy5pc01vYmlsZSgpKTtcbiAgICBjb25zdCBmaXhlZEluVmlld3BvcnQgPSB0aGlzLmNvbmZpZy5nZXQoJ25hdmlnYXRpb24uZml4ZWRJblZpZXdwb3J0JywgdHJ1ZSk7XG5cbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgIGNvbnNvbGUubG9nKHtcbiAgICAgICAgaW5pdGlhbENvbGxhcHNhYmxlLFxuICAgICAgICBjb2xsYXBzYWJsZSxcbiAgICAgICAgcGlubmVkLFxuICAgICAgICBtb2RlLFxuICAgICAgICBvcGVuZWQsXG4gICAgICAgIGZpeGVkSW5WaWV3cG9ydCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMub3BlbmVkID0gc2lnbmFsKG9wZW5lZCk7XG4gICAgdGhpcy5tb2RlID0gc2lnbmFsKG1vZGUpO1xuICAgIHRoaXMucGlubmVkID0gc2lnbmFsKHBpbm5lZCk7XG4gICAgdGhpcy5jb2xsYXBzYWJsZSA9IHNpZ25hbChjb2xsYXBzYWJsZSk7XG4gICAgdGhpcy5maXhlZEluVmlld3BvcnQgPSBzaWduYWwoZml4ZWRJblZpZXdwb3J0KTtcbiAgICB0aGlzLmNvbGxhcHNlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29sbGFwc2FibGUoKSAmJiAhdGhpcy5vcGVuZWQoKSAmJiAhdGhpcy5waW5uZWQoKSk7XG5cbiAgICB0aGlzLmZpeGVkQm90dG9tR2FwID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgZm9vdGVyUG9ydGFsQ291bnQgPSB0aGlzLmZvb3RlclNlcnZpY2UucG9ydGFsQ291bnQoKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRUaGVtZURlbnNpdHkgPSB0aGlzLmN1cnJlbnRUaGVtZURlbnNpdHkoKSA/PyAwO1xuICAgICAgcmV0dXJuIGZvb3RlclBvcnRhbENvdW50ICogKGN1cnJlbnRUaGVtZURlbnNpdHkgKiA0ICsgNjQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5maXhlZFRvcEdhcCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IGhlYWRlclBvcnRhbENvdW50ID0gdGhpcy5oZWFkZXJTZXJ2aWNlLnBvcnRhbENvdW50KCk7XG4gICAgICBjb25zdCBjdXJyZW50VGhlbWVEZW5zaXR5ID0gdGhpcy5jdXJyZW50VGhlbWVEZW5zaXR5KCkgPz8gMDtcbiAgICAgIHJldHVybiBoZWFkZXJQb3J0YWxDb3VudCAqIChjdXJyZW50VGhlbWVEZW5zaXR5ICogNCArIDY0KTtcbiAgICB9KTtcblxuICAgIGlmIChpbml0aWFsQ29sbGFwc2FibGUpIHtcbiAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzTW9iaWxlID0gdGhpcy5pc01vYmlsZSgpO1xuICAgICAgICB0aGlzLmNvbGxhcHNhYmxlLnNldCghaXNNb2JpbGUpO1xuICAgICAgICBpZiAoIWlzTW9iaWxlICYmICF0aGlzLnBpbm5lZCgpKSB7XG4gICAgICAgICAgdGhpcy5vcGVuZWQuc2V0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KTtcbiAgICB9XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnBpbm5lZCgpKSB7XG4gICAgICAgIHRoaXMubW9kZS5zZXQoJ3NpZGUnKTtcbiAgICAgICAgdGhpcy5vcGVuZWQuc2V0KHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tb2RlLnNldCgnb3ZlcicpO1xuICAgICAgICB0aGlzLm9wZW5lZC5zZXQoZmFsc2UpO1xuICAgICAgfVxuICAgIH0sIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlT3BlbmVkKCkge1xuICAgIHRoaXMub3BlbmVkLnVwZGF0ZShvcGVuZWQgPT4gIW9wZW5lZCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlUGlubmVkKCkge1xuICAgIHRoaXMucGlubmVkLnVwZGF0ZShwaW5uZWQgPT4gIXBpbm5lZCk7XG4gIH1cblxuICBvcGVuU2lkZW5hdigpIHtcbiAgICB0aGlzLm9wZW5lZC5zZXQodHJ1ZSk7XG4gIH1cblxuICBjbG9zZVNpZGVuYXYoKSB7XG4gICAgdGhpcy5vcGVuZWQuc2V0KGZhbHNlKTtcbiAgfVxufVxuIl19
@@ -1,23 +0,0 @@
1
- import { computed, inject, Injectable, signal, } from '@angular/core';
2
- import { ConfigService } from '@rxap/config';
3
- import { RXAP_LOGO_CONFIG } from './tokens';
4
- import * as i0 from "@angular/core";
5
- export class LogoService {
6
- constructor() {
7
- this.config = inject(ConfigService);
8
- this.logo = signal(inject(RXAP_LOGO_CONFIG, { optional: true }) ??
9
- this.config.get('logo', {
10
- src: 'logo.png',
11
- width: 192,
12
- }));
13
- this.src = computed(() => this.logo().src);
14
- this.width = computed(() => this.logo().width);
15
- this.height = computed(() => this.logo().height);
16
- }
17
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: LogoService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
18
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: LogoService }); }
19
- }
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: LogoService, decorators: [{
21
- type: Injectable
22
- }] });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nby5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci9sYXlvdXQvc3JjL2xpYi9sb2dvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04sVUFBVSxFQUNWLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFHNUMsTUFBTSxPQUFPLFdBQVc7SUFEeEI7UUFHbUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoQyxTQUFJLEdBQUcsTUFBTSxDQUMzQixNQUFNLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFO2dCQUN0QixHQUFHLEVBQUUsVUFBVTtnQkFDZixLQUFLLEVBQUUsR0FBRzthQUNYLENBQUMsQ0FDSCxDQUFDO1FBRWMsUUFBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsVUFBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsV0FBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7S0FFN0Q7OEdBZlksV0FBVztrSEFBWCxXQUFXOzsyRkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgSW5qZWN0YWJsZSxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAcnhhcC9jb25maWcnO1xuaW1wb3J0IHsgUlhBUF9MT0dPX0NPTkZJRyB9IGZyb20gJy4vdG9rZW5zJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIExvZ29TZXJ2aWNlIHtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdChDb25maWdTZXJ2aWNlKTtcbiAgcHVibGljIHJlYWRvbmx5IGxvZ28gPSBzaWduYWwoXG4gICAgaW5qZWN0KFJYQVBfTE9HT19DT05GSUcsIHsgb3B0aW9uYWw6IHRydWUgfSkgPz9cbiAgICB0aGlzLmNvbmZpZy5nZXQoJ2xvZ28nLCB7XG4gICAgICBzcmM6ICdsb2dvLnBuZycsXG4gICAgICB3aWR0aDogMTkyLFxuICAgIH0pLFxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBzcmMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmxvZ28oKS5zcmMpO1xuICBwdWJsaWMgcmVhZG9ubHkgd2lkdGggPSBjb21wdXRlZCgoKSA9PiB0aGlzLmxvZ28oKS53aWR0aCk7XG4gIHB1YmxpYyByZWFkb25seSBoZWlnaHQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmxvZ28oKS5oZWlnaHQpO1xuXG59XG4iXX0=
@@ -1,16 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, } from '@angular/core';
2
- import { RouterOutlet } from '@angular/router';
3
- import { BaseLayoutComponent } from '../base-layout/base-layout.component';
4
- import { FooterComponent } from '../footer/footer.component';
5
- import { HeaderComponent } from '../header/header.component';
6
- import { NavigationProgressBarComponent } from '../navigation-progress-bar/navigation-progress-bar.component';
7
- import * as i0 from "@angular/core";
8
- export class MinimalLayoutComponent {
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MinimalLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: MinimalLayoutComponent, isStandalone: true, selector: "rxap-minimal-layout", ngImport: i0, template: "<rxap-header class=\"z-10 w-full fixed top-0\"></rxap-header>\n<rxap-navigation-progress-bar></rxap-navigation-progress-bar>\n<router-outlet></router-outlet>\n<rxap-footer class=\"z-10 w-full fixed bottom-0\"></rxap-footer>\n", styles: [""], dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: NavigationProgressBarComponent, selector: "rxap-navigation-progress-bar" }, { kind: "component", type: HeaderComponent, selector: "rxap-header", inputs: ["color"] }, { kind: "component", type: FooterComponent, selector: "rxap-footer" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11
- }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MinimalLayoutComponent, decorators: [{
13
- type: Component,
14
- args: [{ selector: 'rxap-minimal-layout', standalone: true, imports: [RouterOutlet, BaseLayoutComponent, NavigationProgressBarComponent, HeaderComponent, FooterComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<rxap-header class=\"z-10 w-full fixed top-0\"></rxap-header>\n<rxap-navigation-progress-bar></rxap-navigation-progress-bar>\n<router-outlet></router-outlet>\n<rxap-footer class=\"z-10 w-full fixed bottom-0\"></rxap-footer>\n" }]
15
- }] });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluaW1hbC1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci9sYXlvdXQvc3JjL2xpYi9taW5pbWFsLWxheW91dC9taW5pbWFsLWxheW91dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL2xheW91dC9zcmMvbGliL21pbmltYWwtbGF5b3V0L21pbmltYWwtbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDOztBQVU5RyxNQUFNLE9BQU8sc0JBQXNCOzhHQUF0QixzQkFBc0I7a0dBQXRCLHNCQUFzQiwrRUNsQm5DLG1PQUlBLDBERFNhLFlBQVksMkpBQXVCLDhCQUE4Qix5RUFBRSxlQUFlLDJFQUFFLGVBQWU7OzJGQUtuRyxzQkFBc0I7a0JBUmxDLFNBQVM7K0JBQ0UscUJBQXFCLGNBQ25CLElBQUksV0FDUCxDQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSw4QkFBOEIsRUFBRSxlQUFlLEVBQUUsZUFBZSxDQUFFLG1CQUcvRix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXJPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQmFzZUxheW91dENvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtbGF5b3V0L2Jhc2UtbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb290ZXJDb21wb25lbnQgfSBmcm9tICcuLi9mb290ZXIvZm9vdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uUHJvZ3Jlc3NCYXJDb21wb25lbnQgfSBmcm9tICcuLi9uYXZpZ2F0aW9uLXByb2dyZXNzLWJhci9uYXZpZ2F0aW9uLXByb2dyZXNzLWJhci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyeGFwLW1pbmltYWwtbGF5b3V0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogWyBSb3V0ZXJPdXRsZXQsIEJhc2VMYXlvdXRDb21wb25lbnQsIE5hdmlnYXRpb25Qcm9ncmVzc0JhckNvbXBvbmVudCwgSGVhZGVyQ29tcG9uZW50LCBGb290ZXJDb21wb25lbnQgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL21pbmltYWwtbGF5b3V0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL21pbmltYWwtbGF5b3V0LmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE1pbmltYWxMYXlvdXRDb21wb25lbnQge31cbiIsIjxyeGFwLWhlYWRlciBjbGFzcz1cInotMTAgdy1mdWxsIGZpeGVkIHRvcC0wXCI+PC9yeGFwLWhlYWRlcj5cbjxyeGFwLW5hdmlnYXRpb24tcHJvZ3Jlc3MtYmFyPjwvcnhhcC1uYXZpZ2F0aW9uLXByb2dyZXNzLWJhcj5cbjxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbjxyeGFwLWZvb3RlciBjbGFzcz1cInotMTAgdy1mdWxsIGZpeGVkIGJvdHRvbS0wXCI+PC9yeGFwLWZvb3Rlcj5cbiJdfQ==
@@ -1,139 +0,0 @@
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';
7
- import { NavigationEnd, Router, RouterLink, RouterLinkActive, } from '@angular/router';
8
- import { IconDirective } from '@rxap/material-directives/icon';
9
- import { coerceArray } from '@rxap/utilities';
10
- import { debounceTime, Subscription, } from 'rxjs';
11
- import { filter, startWith, tap, } from 'rxjs/operators';
12
- import { LayoutService } from '../../layout.service';
13
- import { NavigationComponent } from '../navigation.component';
14
- import * as i0 from "@angular/core";
15
- import * as i1 from "@angular/material/core";
16
- import * as i2 from "@angular/material/icon";
17
- import * as i3 from "@angular/material/divider";
18
- export class NavigationItemComponent {
19
- constructor() {
20
- this.level = input(0);
21
- this.children = null;
22
- this.item = input.required();
23
- this.active = signal(false);
24
- this.itemClasses = computed(() => {
25
- let classes = `level-${this.level() * 4}`;
26
- if (this.collapsed()) {
27
- classes += ' invisible';
28
- }
29
- return classes;
30
- });
31
- this.layoutService = inject(LayoutService);
32
- this.collapsed = computed(() => this.layoutService.collapsed());
33
- this._subscription = new Subscription();
34
- this.router = inject(Router);
35
- this.elementRef = inject(ElementRef);
36
- this.renderer = inject(Renderer2);
37
- }
38
- ngOnChanges(changes) {
39
- if (changes['item']) {
40
- const item = changes['item'].currentValue;
41
- this.children =
42
- item.children && item.children.length ? item.children : null;
43
- }
44
- }
45
- ngAfterViewInit() {
46
- this._subscription.add(this.router.events
47
- .pipe(filter((event) => event instanceof NavigationEnd), debounceTime(100), startWith(true), tap(() => {
48
- let isActive = true;
49
- const urlParts = this.router.url.split('/');
50
- if (urlParts[0] === '') {
51
- urlParts[0] = '/';
52
- }
53
- const routerLink = coerceArray(this.item().routerLink).map(fragment => fragment.split('/')).flat();
54
- if (routerLink[0] === '') {
55
- routerLink[0] = '/';
56
- }
57
- for (let i = 0; i < routerLink.length; i++) {
58
- if (urlParts[i] !== routerLink[i]) {
59
- isActive = false;
60
- break;
61
- }
62
- }
63
- this.active.set(isActive);
64
- if (isActive) {
65
- this.renderer.addClass(this.elementRef.nativeElement, 'active');
66
- }
67
- else {
68
- this.renderer.removeClass(this.elementRef.nativeElement, 'active');
69
- }
70
- }))
71
- .subscribe());
72
- }
73
- ngOnDestroy() {
74
- this._subscription?.unsubscribe();
75
- }
76
- // region type save item property
77
- // required to check the type of the item property in the ngFor loop
78
- isNavigationDividerItem(item) {
79
- return item['divider'];
80
- }
81
- isNavigationItem(item) {
82
- return !this.isNavigationDividerItem(item);
83
- }
84
- asNavigationItem(item) {
85
- if (!this.isNavigationItem(item)) {
86
- throw new Error('The item is not a NavigationItem');
87
- }
88
- return item;
89
- }
90
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NavigationItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
91
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.0", 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 as icon\" [rxapIcon]=\"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
- trigger('sub-nav', [
93
- transition(':enter', [
94
- style({
95
- display: 'block',
96
- height: '0',
97
- overflow: 'hidden',
98
- }),
99
- animate(150, style({ height: '*' })),
100
- ]),
101
- transition(':leave', [
102
- style({ overflow: 'hidden' }),
103
- animate(300, style({ height: '0' })),
104
- style({ display: 'none' }),
105
- ]),
106
- ]),
107
- ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
108
- }
109
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NavigationItemComponent, decorators: [{
110
- type: Component,
111
- args: [{ selector: 'li[rxap-navigation-item]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, animations: [
112
- trigger('sub-nav', [
113
- transition(':enter', [
114
- style({
115
- display: 'block',
116
- height: '0',
117
- overflow: 'hidden',
118
- }),
119
- animate(150, style({ height: '*' })),
120
- ]),
121
- transition(':leave', [
122
- style({ overflow: 'hidden' }),
123
- animate(300, style({ height: '0' })),
124
- style({ display: 'none' }),
125
- ]),
126
- ]),
127
- ], standalone: true, imports: [
128
- RouterLinkActive,
129
- RouterLink,
130
- NgIf,
131
- MatRippleModule,
132
- MatIconModule,
133
- IconDirective,
134
- MatDividerModule,
135
- forwardRef(() => NavigationComponent),
136
- 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]=\"itemClasses()\"\n class=\"grow whitespace-nowrap\"\n >\n {{ item().label }}\n </span>\n <mat-icon *ngIf=\"item().icon as icon\" [rxapIcon]=\"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
- }] });
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLWl0ZW0vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLWl0ZW0vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxPQUFPLEVBQ1AsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEdBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQ0wsT0FBTyxFQUNQLElBQUksR0FDTCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixVQUFVLEVBQ1YsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBR0wsU0FBUyxFQUNULE1BQU0sRUFHTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQ0wsYUFBYSxFQUNiLE1BQU0sRUFDTixVQUFVLEVBQ1YsZ0JBQWdCLEdBQ2pCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQ0wsWUFBWSxFQUNaLFlBQVksR0FDYixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQU1yRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7QUF1QzlELE1BQU0sT0FBTyx1QkFBdUI7SUFyQ3BDO1FBd0NrQixVQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTFCLGFBQVEsR0FBc0IsSUFBSSxDQUFDO1FBRTFCLFNBQUksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFrQixDQUFDO1FBQ3hDLFdBQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdkIsZ0JBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzFDLElBQUksT0FBTyxHQUFHLFNBQVUsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUUsRUFBRSxDQUFDO1lBQzVDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7Z0JBQ3JCLE9BQU8sSUFBSSxZQUFZLENBQUM7WUFDMUIsQ0FBQztZQUNELE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO1FBRWMsa0JBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFdkMsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFFMUQsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRW5DLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxhQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBMkUvQztJQXpFUSxXQUFXLENBQUMsT0FBc0I7UUFDdkMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksR0FBbUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQztZQUMxRCxJQUFJLENBQUMsUUFBUTtnQkFDWCxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDakUsQ0FBQztJQUNILENBQUM7SUFFTSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07YUFDYixJQUFJLENBQ0gsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLFlBQVksYUFBYSxDQUFDLEVBQ2pELFlBQVksQ0FBQyxHQUFHLENBQUMsRUFDakIsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUNmLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDcEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVDLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUN2QixRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1lBQ3BCLENBQUM7WUFDRCxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNuRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDekIsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztZQUN0QixDQUFDO1lBQ0QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDM0MsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ2xDLFFBQVEsR0FBRyxLQUFLLENBQUM7b0JBQ2pCLE1BQU07Z0JBQ1IsQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxQixJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2xFLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNyRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLEVBQUUsQ0FDakIsQ0FBQztJQUNKLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELGlDQUFpQztJQUVqQyxvRUFBb0U7SUFFN0QsdUJBQXVCLENBQzVCLElBQTRDO1FBRTVDLE9BQVEsSUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTSxnQkFBZ0IsQ0FDckIsSUFBNEM7UUFFNUMsT0FBTyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU0sZ0JBQWdCLENBQ3JCLElBQTRDO1FBRTVDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs4R0FsR1UsdUJBQXVCO2tHQUF2Qix1QkFBdUIsaVdDM0ZwQyw4d0JBaUNBLDhFRCtDSSxnQkFBZ0IsbU9BQ2hCLFVBQVUseVBBQ1YsSUFBSSxpSEFDSixlQUFlLDRVQUNmLGFBQWEsOE5BQ2IsYUFBYSx5R0FDYixnQkFBZ0IsNktBQ0MsbUJBQW1CLHlIQUNwQyxPQUFPLHVFQTNCRztZQUNWLE9BQU8sQ0FBQyxTQUFTLEVBQUU7Z0JBQ2pCLFVBQVUsQ0FBQyxRQUFRLEVBQUU7b0JBQ25CLEtBQUssQ0FBQzt3QkFDSixPQUFPLEVBQUUsT0FBTzt3QkFDaEIsTUFBTSxFQUFFLEdBQUc7d0JBQ1gsUUFBUSxFQUFFLFFBQVE7cUJBQ25CLENBQUM7b0JBQ0YsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztpQkFDckMsQ0FBQztnQkFDRixVQUFVLENBQUMsUUFBUSxFQUFFO29CQUNuQixLQUFLLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUM7b0JBQzdCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7b0JBQ3BDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztpQkFDM0IsQ0FBQzthQUNILENBQUM7U0FDSDs7MkZBY1UsdUJBQXVCO2tCQXJDbkMsU0FBUzsrQkFFRSwwQkFBMEIsbUJBR25CLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksY0FDekI7d0JBQ1YsT0FBTyxDQUFDLFNBQVMsRUFBRTs0QkFDakIsVUFBVSxDQUFDLFFBQVEsRUFBRTtnQ0FDbkIsS0FBSyxDQUFDO29DQUNKLE9BQU8sRUFBRSxPQUFPO29DQUNoQixNQUFNLEVBQUUsR0FBRztvQ0FDWCxRQUFRLEVBQUUsUUFBUTtpQ0FDbkIsQ0FBQztnQ0FDRixPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDOzZCQUNyQyxDQUFDOzRCQUNGLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0NBQ25CLEtBQUssQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQztnQ0FDN0IsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztnQ0FDcEMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDOzZCQUMzQixDQUFDO3lCQUNILENBQUM7cUJBQ0gsY0FDVyxJQUFJLFdBQ1A7d0JBQ1AsZ0JBQWdCO3dCQUNoQixVQUFVO3dCQUNWLElBQUk7d0JBQ0osZUFBZTt3QkFDZixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUM7d0JBQ3JDLE9BQU87cUJBQ1IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhbmltYXRlLFxuICBzdHlsZSxcbiAgdHJhbnNpdGlvbixcbiAgdHJpZ2dlcixcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICBOZ0NsYXNzLFxuICBOZ0lmLFxufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIEVsZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBSZW5kZXJlcjIsXG4gIHNpZ25hbCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgdmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbiwgQWZ0ZXJWaWV3SW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRSaXBwbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdERpdmlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7XG4gIE5hdmlnYXRpb25FbmQsXG4gIFJvdXRlcixcbiAgUm91dGVyTGluayxcbiAgUm91dGVyTGlua0FjdGl2ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEljb25EaXJlY3RpdmUgfSBmcm9tICdAcnhhcC9tYXRlcmlhbC1kaXJlY3RpdmVzL2ljb24nO1xuaW1wb3J0IHsgY29lcmNlQXJyYXkgfSBmcm9tICdAcnhhcC91dGlsaXRpZXMnO1xuaW1wb3J0IHtcbiAgZGVib3VuY2VUaW1lLFxuICBTdWJzY3JpcHRpb24sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZmlsdGVyLFxuICBzdGFydFdpdGgsXG4gIHRhcCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4uLy4uL2xheW91dC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIE5hdmlnYXRpb24sXG4gIE5hdmlnYXRpb25EaXZpZGVySXRlbSxcbiAgTmF2aWdhdGlvbkl0ZW0sXG59IGZyb20gJy4uL25hdmlnYXRpb24taXRlbSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vbmF2aWdhdGlvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaVtyeGFwLW5hdmlnYXRpb24taXRlbV0nLFxuICB0ZW1wbGF0ZVVybDogJy4vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbICcuL25hdmlnYXRpb24taXRlbS5jb21wb25lbnQuc2NzcycgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdzdWItbmF2JywgW1xuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgICAgICAgICBoZWlnaHQ6ICcwJyxcbiAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgIH0pLFxuICAgICAgICBhbmltYXRlKDE1MCwgc3R5bGUoeyBoZWlnaHQ6ICcqJyB9KSksXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgc3R5bGUoeyBvdmVyZmxvdzogJ2hpZGRlbicgfSksXG4gICAgICAgIGFuaW1hdGUoMzAwLCBzdHlsZSh7IGhlaWdodDogJzAnIH0pKSxcbiAgICAgICAgc3R5bGUoeyBkaXNwbGF5OiAnbm9uZScgfSksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFJvdXRlckxpbmtBY3RpdmUsXG4gICAgUm91dGVyTGluayxcbiAgICBOZ0lmLFxuICAgIE1hdFJpcHBsZU1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIEljb25EaXJlY3RpdmUsXG4gICAgTWF0RGl2aWRlck1vZHVsZSxcbiAgICBmb3J3YXJkUmVmKCgpID0+IE5hdmlnYXRpb25Db21wb25lbnQpLFxuICAgIE5nQ2xhc3MsXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvbkl0ZW1Db21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgcHVibGljIHJlYWRvbmx5IGxldmVsID0gaW5wdXQoMCk7XG5cbiAgcHVibGljIGNoaWxkcmVuOiBOYXZpZ2F0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIHJlYWRvbmx5IGl0ZW0gPSBpbnB1dC5yZXF1aXJlZDxOYXZpZ2F0aW9uSXRlbT4oKTtcbiAgcHVibGljIHJlYWRvbmx5IGFjdGl2ZSA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGl0ZW1DbGFzc2VzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGxldCBjbGFzc2VzID0gYGxldmVsLSR7IHRoaXMubGV2ZWwoKSAqIDQgfWA7XG4gICAgaWYgKHRoaXMuY29sbGFwc2VkKCkpIHtcbiAgICAgIGNsYXNzZXMgKz0gJyBpbnZpc2libGUnO1xuICAgIH1cbiAgICByZXR1cm4gY2xhc3NlcztcbiAgfSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBsYXlvdXRTZXJ2aWNlID0gaW5qZWN0KExheW91dFNlcnZpY2UpO1xuXG4gIHB1YmxpYyByZWFkb25seSBjb2xsYXBzZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmxheW91dFNlcnZpY2UuY29sbGFwc2VkKCkpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydpdGVtJ10pIHtcbiAgICAgIGNvbnN0IGl0ZW06IE5hdmlnYXRpb25JdGVtID0gY2hhbmdlc1snaXRlbSddLmN1cnJlbnRWYWx1ZTtcbiAgICAgIHRoaXMuY2hpbGRyZW4gPVxuICAgICAgICBpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID8gaXRlbS5jaGlsZHJlbiA6IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxuICAgICAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICAgICAgICBzdGFydFdpdGgodHJ1ZSksXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICBsZXQgaXNBY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgICBjb25zdCB1cmxQYXJ0cyA9IHRoaXMucm91dGVyLnVybC5zcGxpdCgnLycpO1xuICAgICAgICAgICAgICBpZiAodXJsUGFydHNbMF0gPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdXJsUGFydHNbMF0gPSAnLyc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3Qgcm91dGVyTGluayA9IGNvZXJjZUFycmF5KHRoaXMuaXRlbSgpLnJvdXRlckxpbmspLm1hcChmcmFnbWVudCA9PiBmcmFnbWVudC5zcGxpdCgnLycpKS5mbGF0KCk7XG4gICAgICAgICAgICAgIGlmIChyb3V0ZXJMaW5rWzBdID09PSAnJykge1xuICAgICAgICAgICAgICAgIHJvdXRlckxpbmtbMF0gPSAnLyc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3V0ZXJMaW5rLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHVybFBhcnRzW2ldICE9PSByb3V0ZXJMaW5rW2ldKSB7XG4gICAgICAgICAgICAgICAgICBpc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRoaXMuYWN0aXZlLnNldChpc0FjdGl2ZSk7XG4gICAgICAgICAgICAgIGlmIChpc0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdhY3RpdmUnKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnYWN0aXZlJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvLyByZWdpb24gdHlwZSBzYXZlIGl0ZW0gcHJvcGVydHlcblxuICAvLyByZXF1aXJlZCB0byBjaGVjayB0aGUgdHlwZSBvZiB0aGUgaXRlbSBwcm9wZXJ0eSBpbiB0aGUgbmdGb3IgbG9vcFxuXG4gIHB1YmxpYyBpc05hdmlnYXRpb25EaXZpZGVySXRlbShcbiAgICBpdGVtOiBOYXZpZ2F0aW9uSXRlbSB8IE5hdmlnYXRpb25EaXZpZGVySXRlbSxcbiAgKTogaXRlbSBpcyBOYXZpZ2F0aW9uRGl2aWRlckl0ZW0ge1xuICAgIHJldHVybiAoaXRlbSBhcyBhbnkpWydkaXZpZGVyJ107XG4gIH1cblxuICBwdWJsaWMgaXNOYXZpZ2F0aW9uSXRlbShcbiAgICBpdGVtOiBOYXZpZ2F0aW9uSXRlbSB8IE5hdmlnYXRpb25EaXZpZGVySXRlbSxcbiAgKTogaXRlbSBpcyBOYXZpZ2F0aW9uSXRlbSB7XG4gICAgcmV0dXJuICF0aGlzLmlzTmF2aWdhdGlvbkRpdmlkZXJJdGVtKGl0ZW0pO1xuICB9XG5cbiAgcHVibGljIGFzTmF2aWdhdGlvbkl0ZW0oXG4gICAgaXRlbTogTmF2aWdhdGlvbkl0ZW0gfCBOYXZpZ2F0aW9uRGl2aWRlckl0ZW0sXG4gICk6IE5hdmlnYXRpb25JdGVtIHtcbiAgICBpZiAoIXRoaXMuaXNOYXZpZ2F0aW9uSXRlbShpdGVtKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgaXRlbSBpcyBub3QgYSBOYXZpZ2F0aW9uSXRlbScpO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbTtcbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxufVxuIiwiPGRpdiBbbmdDbGFzc109XCJ7XG4gICAgICdib3JkZXItbC00IHRleHQtYWNjZW50LTQwMCBib3JkZXItYWNjZW50LTYwMCc6IGFjdGl2ZSgpLFxuICAgICB9XCI+XG4gIDxhIFtyb3V0ZXJMaW5rXT1cIml0ZW0oKS5yb3V0ZXJMaW5rXCJcbiAgICAgY2xhc3M9XCJoLTEyIHBsLTQgcHItNSBmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgZ2FwLXgtNFwiXG4gICAgIG1hdFJpcHBsZVxuICAgICByb3V0ZXJMaW5rQWN0aXZlXG5cbiAgPlxuICAgIDxzcGFuXG4gICAgICBbbmdDbGFzc109XCJpdGVtQ2xhc3NlcygpXCJcbiAgICAgIGNsYXNzPVwiZ3JvdyB3aGl0ZXNwYWNlLW5vd3JhcFwiXG4gICAgPlxuICAgICAge3sgaXRlbSgpLmxhYmVsIH19XG4gICAgPC9zcGFuPlxuICAgIDxtYXQtaWNvbiAqbmdJZj1cIml0ZW0oKS5pY29uIGFzIGljb25cIiBbcnhhcEljb25dPVwiaWNvblwiPjwvbWF0LWljb24+XG4gIDwvYT5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbSgpLmNoaWxkcmVuPy5sZW5ndGggJiYgYWN0aXZlKClcIj5cblxuICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuXG4gICAgPHVsIFtAc3ViLW5hdl1cbiAgICAgICAgW2l0ZW1zXT1cImNoaWxkcmVuID8/IFtdXCJcbiAgICAgICAgW2xldmVsXT1cImxldmVsKCkgKyAxXCJcbiAgICAgICAgcnhhcC1uYXZpZ2F0aW9uXG4gICAgPlxuICAgIDwvdWw+XG5cbiAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cblxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
@@ -1,10 +0,0 @@
1
- export function IsNavigationDividerItem(item) {
2
- return !!item && !!item['divider'];
3
- }
4
- export function IsNavigationInsertItem(item) {
5
- return !!item && !!item['insert'];
6
- }
7
- export function IsNavigationItem(item) {
8
- return (!!item && !!item['routerLink'] && !!item['label']);
9
- }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci9sYXlvdXQvc3JjL2xpYi9uYXZpZ2F0aW9uL25hdmlnYXRpb24taXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxQkEsTUFBTSxVQUFVLHVCQUF1QixDQUNyQyxJQUFTO0lBRVQsT0FBTyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDckMsQ0FBQztBQU1ELE1BQU0sVUFBVSxzQkFBc0IsQ0FDcEMsSUFBUztJQUVULE9BQU8sQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFvQkQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLElBQVM7SUFDeEMsT0FBTyxDQUNMLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUNsRCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEljb25Db25maWcgfSBmcm9tICdAcnhhcC91dGlsaXRpZXMnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RUeXBlLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgVHlwZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCB0eXBlIE5hdmlnYXRpb24gPSBBcnJheTxOYXZpZ2F0aW9uSXRlbSB8IE5hdmlnYXRpb25EaXZpZGVySXRlbT47XG5cbmV4cG9ydCB0eXBlIE5hdmlnYXRpb25XaXRoSW5zZXJ0cyA9IEFycmF5PFxuICB8IE5hdmlnYXRpb25JdGVtPE5hdmlnYXRpb25XaXRoSW5zZXJ0cz5cbiAgfCBOYXZpZ2F0aW9uRGl2aWRlckl0ZW1cbiAgfCBOYXZpZ2F0aW9uSW5zZXJ0SXRlbVxuPjtcblxuZXhwb3J0IGludGVyZmFjZSBOYXZpZ2F0aW9uRGl2aWRlckl0ZW0ge1xuICBkaXZpZGVyOiBib29sZWFuO1xuICB0aXRsZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIElzTmF2aWdhdGlvbkRpdmlkZXJJdGVtKFxuICBpdGVtOiBhbnksXG4pOiBpdGVtIGlzIE5hdmlnYXRpb25EaXZpZGVySXRlbSB7XG4gIHJldHVybiAhIWl0ZW0gJiYgISFpdGVtWydkaXZpZGVyJ107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmF2aWdhdGlvbkluc2VydEl0ZW0ge1xuICBpbnNlcnQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIElzTmF2aWdhdGlvbkluc2VydEl0ZW0oXG4gIGl0ZW06IGFueSxcbik6IGl0ZW0gaXMgTmF2aWdhdGlvbkluc2VydEl0ZW0ge1xuICByZXR1cm4gISFpdGVtICYmICEhaXRlbVsnaW5zZXJ0J107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmF2aWdhdGlvblN0YXR1cyB7XG4gIGlzVmlzaWJsZShcbiAgICBuYXZpZ2F0aW9uSXRlbTogTmF2aWdhdGlvbkl0ZW0sXG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBQcm9taXNlPGJvb2xlYW4+IHwgYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOYXZpZ2F0aW9uSXRlbTxDaGlsZHJlbiA9IE5hdmlnYXRpb24+IGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByb3V0ZXJMaW5rOiBzdHJpbmdbXSB8IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgY2hpbGRyZW4/OiBDaGlsZHJlbjtcbiAgaWNvbj86IEljb25Db25maWc7XG4gIHN0YXR1cz86IEFycmF5PFxuICAgIHwgVHlwZTxOYXZpZ2F0aW9uU3RhdHVzPlxuICAgIHwgSW5qZWN0aW9uVG9rZW48TmF2aWdhdGlvblN0YXR1cz5cbiAgICB8IEFic3RyYWN0VHlwZTxOYXZpZ2F0aW9uU3RhdHVzPlxuICA+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gSXNOYXZpZ2F0aW9uSXRlbShpdGVtOiBhbnkpOiBpdGVtIGlzIE5hdmlnYXRpb25JdGVtIHtcbiAgcmV0dXJuIChcbiAgICAhIWl0ZW0gJiYgISFpdGVtWydyb3V0ZXJMaW5rJ10gJiYgISFpdGVtWydsYWJlbCddXG4gICk7XG59XG4iXX0=
@@ -1,57 +0,0 @@
1
- import { AsyncPipe, NgFor, NgIf, } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, computed, forwardRef, inject, INJECTOR, input, runInInjectionContext, ViewEncapsulation, } from '@angular/core';
3
- import { toSignal } from '@angular/core/rxjs-interop';
4
- import { MatDividerModule } from '@angular/material/divider';
5
- import { LayoutService } from '../layout.service';
6
- import { NavigationService } from '../navigation.service';
7
- import { NavigationItemComponent } from './navigation-item/navigation-item.component';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/material/divider";
10
- export class NavigationComponent {
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);
20
- }
21
- ngOnInit() {
22
- if (this.root()) {
23
- runInInjectionContext(this.injector, () => {
24
- this.navigationItems = toSignal(this.navigationService.config$, { initialValue: [] });
25
- });
26
- }
27
- }
28
- // region type save item property
29
- // required to check the type of the item property in the ngFor loop
30
- isNavigationDividerItem(item) {
31
- return item['divider'];
32
- }
33
- isNavigationItem(item) {
34
- return !this.isNavigationDividerItem(item);
35
- }
36
- asNavigationItem(item) {
37
- if (!this.isNavigationItem(item)) {
38
- throw new Error('The item is not a NavigationItem');
39
- }
40
- return item;
41
- }
42
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NavigationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
43
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.0", 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 }); }
44
- }
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NavigationComponent, decorators: [{
46
- type: Component,
47
- args: [{ selector: 'ul[rxap-navigation]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, host: {
48
- class: 'list-none dark:text-neutral-400 text-neutral-700',
49
- }, imports: [
50
- NgFor,
51
- NgIf,
52
- MatDividerModule,
53
- forwardRef(() => NavigationItemComponent),
54
- AsyncPipe,
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
@@ -1,23 +0,0 @@
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.2.0", ngImport: i0, type: NavigationProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", 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.2.0", 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=