@mediusinc/mng-commons-layout 5.0.0-rc.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 (194) hide show
  1. package/README.md +13 -0
  2. package/assets/fonts/poppins-v20-latin-500.woff +0 -0
  3. package/assets/fonts/poppins-v20-latin-500.woff2 +0 -0
  4. package/assets/fonts/poppins-v20-latin-600.woff +0 -0
  5. package/assets/fonts/poppins-v20-latin-600.woff2 +0 -0
  6. package/assets/fonts/poppins-v20-latin-700.woff +0 -0
  7. package/assets/fonts/poppins-v20-latin-700.woff2 +0 -0
  8. package/assets/fonts/poppins-v20-latin-regular.woff +0 -0
  9. package/assets/fonts/poppins-v20-latin-regular.woff2 +0 -0
  10. package/assets/images/effect-ondark.png +0 -0
  11. package/assets/images/effect-ondark.svg +38 -0
  12. package/assets/images/effect-ondark@2x.png +0 -0
  13. package/assets/images/effect-onlight.png +0 -0
  14. package/assets/images/effect-onlight.svg +38 -0
  15. package/assets/images/effect-onlight@2x.png +0 -0
  16. package/assets/images/pages/exception-ondark.png +0 -0
  17. package/assets/images/pages/exception-onlight.png +0 -0
  18. package/assets/images/pages/login-ondark.png +0 -0
  19. package/assets/images/pages/login-onlight.png +0 -0
  20. package/esm2022/index.mjs +23 -0
  21. package/esm2022/lib/components/breadcrumb.component.mjs +30 -0
  22. package/esm2022/lib/components/footer.component.mjs +28 -0
  23. package/esm2022/lib/components/main-layout.component.mjs +99 -0
  24. package/esm2022/lib/components/menu-item.component.mjs +275 -0
  25. package/esm2022/lib/components/menu.component.mjs +40 -0
  26. package/esm2022/lib/components/sidebar.component.mjs +61 -0
  27. package/esm2022/lib/components/topbar-user.component.mjs +39 -0
  28. package/esm2022/lib/components/topbar.component.mjs +57 -0
  29. package/esm2022/lib/components/version.component.mjs +63 -0
  30. package/esm2022/lib/helpers/route-builder.mjs +11 -0
  31. package/esm2022/lib/models/layout-state.model.mjs +2 -0
  32. package/esm2022/lib/models/menu.model.mjs +2 -0
  33. package/esm2022/lib/provide.mjs +23 -0
  34. package/esm2022/lib/services/layout-feature-config.token.mjs +3 -0
  35. package/esm2022/lib/services/main-layout.component.service.mjs +71 -0
  36. package/esm2022/lib/services/menu.service.mjs +120 -0
  37. package/esm2022/lib/services/version.service.mjs +45 -0
  38. package/esm2022/mediusinc-mng-commons-layout.mjs +5 -0
  39. package/fesm2022/mediusinc-mng-commons-layout.mjs +878 -0
  40. package/fesm2022/mediusinc-mng-commons-layout.mjs.map +1 -0
  41. package/index.d.ts +17 -0
  42. package/lib/components/breadcrumb.component.d.ts +10 -0
  43. package/lib/components/footer.component.d.ts +12 -0
  44. package/lib/components/main-layout.component.d.ts +27 -0
  45. package/lib/components/menu-item.component.d.ts +40 -0
  46. package/lib/components/menu.component.d.ts +14 -0
  47. package/lib/components/sidebar.component.d.ts +19 -0
  48. package/lib/components/topbar-user.component.d.ts +15 -0
  49. package/lib/components/topbar.component.d.ts +22 -0
  50. package/lib/components/version.component.d.ts +18 -0
  51. package/lib/helpers/route-builder.d.ts +6 -0
  52. package/lib/models/layout-state.model.d.ts +10 -0
  53. package/lib/models/menu.model.d.ts +4 -0
  54. package/lib/provide.d.ts +8 -0
  55. package/lib/services/layout-feature-config.token.d.ts +18 -0
  56. package/lib/services/main-layout.component.service.d.ts +17 -0
  57. package/lib/services/menu.service.d.ts +22 -0
  58. package/lib/services/version.service.d.ts +14 -0
  59. package/package.json +35 -0
  60. package/scss/commons-dark.scss +9 -0
  61. package/scss/commons-light.scss +9 -0
  62. package/scss/layout/_animation.scss +53 -0
  63. package/scss/layout/_breadcrumb.scss +97 -0
  64. package/scss/layout/_config.scss +42 -0
  65. package/scss/layout/_content.scss +3 -0
  66. package/scss/layout/_fonts.scss +40 -0
  67. package/scss/layout/_layout_dark.scss +12 -0
  68. package/scss/layout/_layout_light.scss +12 -0
  69. package/scss/layout/_main.scss +54 -0
  70. package/scss/layout/_profile.scss +10 -0
  71. package/scss/layout/_responsive.scss +131 -0
  72. package/scss/layout/_sidebar_drawer.scss +285 -0
  73. package/scss/layout/_sidebar_horizontal.scss +168 -0
  74. package/scss/layout/_sidebar_reveal.scss +203 -0
  75. package/scss/layout/_sidebar_slim.scss +157 -0
  76. package/scss/layout/_sidebar_slim_plus.scss +166 -0
  77. package/scss/layout/_sidebar_vertical.scss +178 -0
  78. package/scss/layout/_topbar.scss +174 -0
  79. package/scss/layout/_typography.scss +67 -0
  80. package/scss/layout/_utils.scss +33 -0
  81. package/scss/layout/layout.scss +24 -0
  82. package/scss/layout/mng/_mng_layout_footer.scss +39 -0
  83. package/scss/layout/mng/_mng_layout_menu.scss +10 -0
  84. package/scss/layout/mng/_mng_layout_styles.scss +3 -0
  85. package/scss/layout/mng/_mng_layout_topbar.scss +18 -0
  86. package/scss/layout/preloading.scss +84 -0
  87. package/scss/theme/extensions/_fullcalendar.scss +328 -0
  88. package/scss/theme/theme-base/_colors.scss +17 -0
  89. package/scss/theme/theme-base/_common.scss +76 -0
  90. package/scss/theme/theme-base/_components.scss +110 -0
  91. package/scss/theme/theme-base/_mixins.scss +337 -0
  92. package/scss/theme/theme-base/components/button/_button.scss +576 -0
  93. package/scss/theme/theme-base/components/button/_speeddial.scss +96 -0
  94. package/scss/theme/theme-base/components/button/_splitbutton.scss +348 -0
  95. package/scss/theme/theme-base/components/data/_carousel.scss +37 -0
  96. package/scss/theme/theme-base/components/data/_datatable.scss +338 -0
  97. package/scss/theme/theme-base/components/data/_dataview.scss +46 -0
  98. package/scss/theme/theme-base/components/data/_filter.scss +137 -0
  99. package/scss/theme/theme-base/components/data/_orderlist.scss +114 -0
  100. package/scss/theme/theme-base/components/data/_organizationchart.scss +50 -0
  101. package/scss/theme/theme-base/components/data/_paginator.scss +92 -0
  102. package/scss/theme/theme-base/components/data/_picklist.scss +114 -0
  103. package/scss/theme/theme-base/components/data/_timeline.scss +35 -0
  104. package/scss/theme/theme-base/components/data/_tree.scss +150 -0
  105. package/scss/theme/theme-base/components/data/_treetable.scss +255 -0
  106. package/scss/theme/theme-base/components/data/_virtualscroller.scss +28 -0
  107. package/scss/theme/theme-base/components/file/_fileupload.scss +64 -0
  108. package/scss/theme/theme-base/components/input/_autocomplete.scss +136 -0
  109. package/scss/theme/theme-base/components/input/_calendar.scss +267 -0
  110. package/scss/theme/theme-base/components/input/_cascadeselect.scss +135 -0
  111. package/scss/theme/theme-base/components/input/_checkbox.scss +94 -0
  112. package/scss/theme/theme-base/components/input/_chips.scss +65 -0
  113. package/scss/theme/theme-base/components/input/_colorpicker.scss +19 -0
  114. package/scss/theme/theme-base/components/input/_dropdown.scss +151 -0
  115. package/scss/theme/theme-base/components/input/_editor.scss +122 -0
  116. package/scss/theme/theme-base/components/input/_inputgroup.scss +74 -0
  117. package/scss/theme/theme-base/components/input/_inputmask.scss +16 -0
  118. package/scss/theme/theme-base/components/input/_inputnumber.scss +28 -0
  119. package/scss/theme/theme-base/components/input/_inputswitch.scss +60 -0
  120. package/scss/theme/theme-base/components/input/_inputtext.scss +100 -0
  121. package/scss/theme/theme-base/components/input/_listbox.scss +97 -0
  122. package/scss/theme/theme-base/components/input/_multiselect.scss +177 -0
  123. package/scss/theme/theme-base/components/input/_password.scss +52 -0
  124. package/scss/theme/theme-base/components/input/_radiobutton.scss +78 -0
  125. package/scss/theme/theme-base/components/input/_rating.scss +60 -0
  126. package/scss/theme/theme-base/components/input/_selectbutton.scss +50 -0
  127. package/scss/theme/theme-base/components/input/_slider.scss +75 -0
  128. package/scss/theme/theme-base/components/input/_togglebutton.scss +48 -0
  129. package/scss/theme/theme-base/components/input/_treeselect.scss +139 -0
  130. package/scss/theme/theme-base/components/menu/_breadcrumb.scss +42 -0
  131. package/scss/theme/theme-base/components/menu/_contextmenu.scss +39 -0
  132. package/scss/theme/theme-base/components/menu/_dock.scss +95 -0
  133. package/scss/theme/theme-base/components/menu/_megamenu.scss +55 -0
  134. package/scss/theme/theme-base/components/menu/_menu.scss +37 -0
  135. package/scss/theme/theme-base/components/menu/_menubar.scss +140 -0
  136. package/scss/theme/theme-base/components/menu/_panelmenu.scss +153 -0
  137. package/scss/theme/theme-base/components/menu/_slidemenu.scss +59 -0
  138. package/scss/theme/theme-base/components/menu/_steps.scss +56 -0
  139. package/scss/theme/theme-base/components/menu/_tabmenu.scss +73 -0
  140. package/scss/theme/theme-base/components/menu/_tieredmenu.scss +43 -0
  141. package/scss/theme/theme-base/components/messages/_inlinemessage.scss +69 -0
  142. package/scss/theme/theme-base/components/messages/_message.scss +107 -0
  143. package/scss/theme/theme-base/components/messages/_toast.scss +99 -0
  144. package/scss/theme/theme-base/components/misc/_avatar.scss +30 -0
  145. package/scss/theme/theme-base/components/misc/_badge.scss +48 -0
  146. package/scss/theme/theme-base/components/misc/_blockui.scss +0 -0
  147. package/scss/theme/theme-base/components/misc/_chip.scss +42 -0
  148. package/scss/theme/theme-base/components/misc/_inplace.scss +16 -0
  149. package/scss/theme/theme-base/components/misc/_progressbar.scss +17 -0
  150. package/scss/theme/theme-base/components/misc/_scrolltop.scss +25 -0
  151. package/scss/theme/theme-base/components/misc/_skeleton.scss +8 -0
  152. package/scss/theme/theme-base/components/misc/_tag.scss +40 -0
  153. package/scss/theme/theme-base/components/misc/_terminal.scss +12 -0
  154. package/scss/theme/theme-base/components/multimedia/_galleria.scss +155 -0
  155. package/scss/theme/theme-base/components/multimedia/_image.scss +49 -0
  156. package/scss/theme/theme-base/components/overlay/_confirmpopup.scss +70 -0
  157. package/scss/theme/theme-base/components/overlay/_dialog.scss +69 -0
  158. package/scss/theme/theme-base/components/overlay/_overlaypanel.scss +62 -0
  159. package/scss/theme/theme-base/components/overlay/_sidebar.scss +27 -0
  160. package/scss/theme/theme-base/components/overlay/_tooltip.scss +33 -0
  161. package/scss/theme/theme-base/components/panel/_accordion.scss +119 -0
  162. package/scss/theme/theme-base/components/panel/_card.scss +30 -0
  163. package/scss/theme/theme-base/components/panel/_divider.scss +31 -0
  164. package/scss/theme/theme-base/components/panel/_fieldset.scss +47 -0
  165. package/scss/theme/theme-base/components/panel/_panel.scss +63 -0
  166. package/scss/theme/theme-base/components/panel/_scrollpanel.scss +6 -0
  167. package/scss/theme/theme-base/components/panel/_splitter.scss +19 -0
  168. package/scss/theme/theme-base/components/panel/_tabview.scss +82 -0
  169. package/scss/theme/theme-base/components/panel/_toolbar.scss +11 -0
  170. package/scss/theme/theme-base/mng/_mng_mixins.scss +69 -0
  171. package/scss/theme/theme-base/mng/_mng_theme_autocomplete.scss +34 -0
  172. package/scss/theme/theme-base/mng/_mng_theme_button.scss +68 -0
  173. package/scss/theme/theme-base/mng/_mng_theme_datatable.scss +153 -0
  174. package/scss/theme/theme-base/mng/_mng_theme_datepicker.scss +21 -0
  175. package/scss/theme/theme-base/mng/_mng_theme_dialog.scss +206 -0
  176. package/scss/theme/theme-base/mng/_mng_theme_dropdown.scss +32 -0
  177. package/scss/theme/theme-base/mng/_mng_theme_fileupload.scss +24 -0
  178. package/scss/theme/theme-base/mng/_mng_theme_forms.scss +66 -0
  179. package/scss/theme/theme-base/mng/_mng_theme_image.scss +27 -0
  180. package/scss/theme/theme-base/mng/_mng_theme_input.scss +31 -0
  181. package/scss/theme/theme-base/mng/_mng_theme_menu.scss +5 -0
  182. package/scss/theme/theme-base/mng/_mng_theme_multiselect.scss +20 -0
  183. package/scss/theme/theme-base/mng/_mng_theme_styles.scss +17 -0
  184. package/scss/theme/theme-base/mng/_mng_theme_tableview.scss +97 -0
  185. package/scss/theme/theme-base/mng/_mng_theme_tabview.scss +14 -0
  186. package/scss/theme/theme-base/mng/_mng_theme_toast.scss +3 -0
  187. package/scss/theme/theme-base/mng/_mng_theme_toolbar.scss +5 -0
  188. package/scss/theme/theme-base/mng/_mng_variables.scss +15 -0
  189. package/scss/theme/theme-dark/_extensions.scss +109 -0
  190. package/scss/theme/theme-dark/_variables.scss +940 -0
  191. package/scss/theme/theme-dark/blue/theme.scss +14 -0
  192. package/scss/theme/theme-light/_extensions.scss +109 -0
  193. package/scss/theme/theme-light/_variables.scss +936 -0
  194. package/scss/theme/theme-light/blue/theme.scss +14 -0
@@ -0,0 +1,57 @@
1
+ import { AsyncPipe, NgClass } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, ElementRef, ViewChild, inject } from '@angular/core';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { ButtonModule } from 'primeng/button';
5
+ import { DropdownModule } from 'primeng/dropdown';
6
+ import { RippleModule } from 'primeng/ripple';
7
+ import { StyleClassModule } from 'primeng/styleclass';
8
+ import { CommonsService, ComponentDirective } from '@mediusinc/mng-commons/core';
9
+ import { COMMONS_LAYOUT_FEATURE_CONFIG_IT } from '../services/layout-feature-config.token';
10
+ import { MainLayoutComponentService } from '../services/main-layout.component.service';
11
+ import { BreadcrumbComponent } from './breadcrumb.component';
12
+ import { SidebarComponent } from './sidebar.component';
13
+ import { TopbarUserComponent } from './topbar-user.component';
14
+ import * as i0 from "@angular/core";
15
+ import * as i1 from "primeng/dropdown";
16
+ import * as i2 from "@angular/forms";
17
+ export class TopbarComponent {
18
+ constructor() {
19
+ this.el = inject(ElementRef);
20
+ this.commons = inject(CommonsService);
21
+ this.mainLayoutService = inject(MainLayoutComponentService);
22
+ this.config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, { optional: true });
23
+ this.breadcrumbComponent = BreadcrumbComponent;
24
+ this.topbarUserComponent = TopbarUserComponent;
25
+ this.languages = ['en'];
26
+ this.selectedLanguage = 'en';
27
+ }
28
+ ngOnInit() {
29
+ if (this.config?.components?.topbarUser !== undefined) {
30
+ this.topbarUserComponent = this.config.components.topbarUser;
31
+ }
32
+ if (this.config?.components?.breadcrumb !== undefined) {
33
+ this.breadcrumbComponent = this.config.components.breadcrumb;
34
+ }
35
+ this.languages = this.commons.appLanguages;
36
+ this.selectedLanguage = this.commons.getOrInitLanguage();
37
+ }
38
+ onMenuButtonClick() {
39
+ this.mainLayoutService.onMenuToggle();
40
+ }
41
+ switchLanguage(language) {
42
+ this.commons.appLanguage = language;
43
+ }
44
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: TopbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
45
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: TopbarComponent, isStandalone: true, selector: "mng-topbar", viewQueries: [{ propertyName: "menuButton", first: true, predicate: ["menubutton"], descendants: true }, { propertyName: "appSidebar", first: true, predicate: SidebarComponent, descendants: true }], ngImport: i0, template: "<div class=\"layout-topbar\">\n <div class=\"topbar-start\">\n <button #menubutton type=\"button\" class=\"topbar-menubutton p-link p-trigger\" (click)=\"onMenuButtonClick()\">\n <i class=\"pi pi-bars\"></i>\n </button>\n\n @if (breadcrumbComponent) {\n <div class=\"topbar-breadcrumb\">\n <div [mngComponent]=\"breadcrumbComponent\" [attachToHost]=\"true\"></div>\n </div>\n }\n </div>\n <div class=\"layout-topbar-menu-section\">\n <mng-sidebar></mng-sidebar>\n </div>\n <div class=\"topbar-end\">\n <ul class=\"topbar-menu\">\n @if (languages.length > 1) {\n <li class=\"profile-item\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-dropdown [ngModel]=\"selectedLanguage\" [options]=\"languages\" (onChange)=\"switchLanguage($event.value)\"></p-dropdown>\n </li>\n }\n @if (topbarUserComponent) {\n <li #userMenuItem class=\"profile-item topbar-item mr-3\" [mngComponent]=\"topbarUserComponent\" [attachToHost]=\"true\"></li>\n }\n </ul>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: SidebarComponent, selector: "mng-sidebar" }, { kind: "ngmodule", type: ButtonModule }, { kind: "ngmodule", type: StyleClassModule }, { kind: "ngmodule", type: RippleModule }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i1.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "directive", type: ComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "injectionToken", "inputs", "attachToHost", "nodeInjector"], outputs: ["instanceCreated"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
46
+ }
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: TopbarComponent, decorators: [{
48
+ type: Component,
49
+ args: [{ standalone: true, selector: 'mng-topbar', imports: [SidebarComponent, NgClass, ButtonModule, StyleClassModule, RippleModule, BreadcrumbComponent, AsyncPipe, DropdownModule, ComponentDirective, FormsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"layout-topbar\">\n <div class=\"topbar-start\">\n <button #menubutton type=\"button\" class=\"topbar-menubutton p-link p-trigger\" (click)=\"onMenuButtonClick()\">\n <i class=\"pi pi-bars\"></i>\n </button>\n\n @if (breadcrumbComponent) {\n <div class=\"topbar-breadcrumb\">\n <div [mngComponent]=\"breadcrumbComponent\" [attachToHost]=\"true\"></div>\n </div>\n }\n </div>\n <div class=\"layout-topbar-menu-section\">\n <mng-sidebar></mng-sidebar>\n </div>\n <div class=\"topbar-end\">\n <ul class=\"topbar-menu\">\n @if (languages.length > 1) {\n <li class=\"profile-item\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-dropdown [ngModel]=\"selectedLanguage\" [options]=\"languages\" (onChange)=\"switchLanguage($event.value)\"></p-dropdown>\n </li>\n }\n @if (topbarUserComponent) {\n <li #userMenuItem class=\"profile-item topbar-item mr-3\" [mngComponent]=\"topbarUserComponent\" [attachToHost]=\"true\"></li>\n }\n </ul>\n </div>\n</div>\n" }]
50
+ }], propDecorators: { menuButton: [{
51
+ type: ViewChild,
52
+ args: ['menubutton']
53
+ }], appSidebar: [{
54
+ type: ViewChild,
55
+ args: [SidebarComponent]
56
+ }] } });
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90b3BiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL3RvcGJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE9BQU8sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFnQixTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRCxPQUFPLEVBQUMsY0FBYyxFQUFFLGtCQUFrQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFFL0UsT0FBTyxFQUFDLGdDQUFnQyxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDekYsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDckYsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0seUJBQXlCLENBQUM7Ozs7QUFTNUQsTUFBTSxPQUFPLGVBQWU7SUFQNUI7UUFRVyxPQUFFLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hCLFlBQU8sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakMsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDdEQsV0FBTSxHQUFHLE1BQU0sQ0FBQyxnQ0FBZ0MsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBS3JFLHdCQUFtQixHQUFzQixtQkFBbUIsQ0FBQztRQUM3RCx3QkFBbUIsR0FBc0IsbUJBQW1CLENBQUM7UUFFN0QsY0FBUyxHQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLHFCQUFnQixHQUFHLElBQUksQ0FBQztLQXFCbEM7SUFuQkcsUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsVUFBVSxLQUFLLFNBQVMsRUFBRTtZQUNuRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO1NBQ2hFO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxVQUFVLEtBQUssU0FBUyxFQUFFO1lBQ25ELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7U0FDaEU7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQzNDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDN0QsQ0FBQztJQUVNLGlCQUFpQjtRQUNwQixJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVNLGNBQWMsQ0FBQyxRQUFnQjtRQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUM7SUFDeEMsQ0FBQzs4R0FqQ1EsZUFBZTtrR0FBZixlQUFlLDZNQU9iLGdCQUFnQixnREMvQi9CLGdyQ0E2QkEsNENEVGMsZ0JBQWdCLHVEQUFXLFlBQVksOEJBQUUsZ0JBQWdCLDhCQUFFLFlBQVksOEJBQWtDLGNBQWMsMG5DQUFFLGtCQUFrQiw4S0FBRSxXQUFXOzsyRkFJekosZUFBZTtrQkFQM0IsU0FBUztpQ0FDTSxJQUFJLFlBQ04sWUFBWSxXQUNiLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxXQUFXLENBQUMsbUJBRWxKLHVCQUF1QixDQUFDLE1BQU07OEJBUXRCLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFDTSxVQUFVO3NCQUF0QyxTQUFTO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXN5bmNQaXBlLCBOZ0NsYXNzfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFR5cGUsIFZpZXdDaGlsZCwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtCdXR0b25Nb2R1bGV9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcbmltcG9ydCB7RHJvcGRvd25Nb2R1bGV9IGZyb20gJ3ByaW1lbmcvZHJvcGRvd24nO1xuaW1wb3J0IHtSaXBwbGVNb2R1bGV9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcbmltcG9ydCB7U3R5bGVDbGFzc01vZHVsZX0gZnJvbSAncHJpbWVuZy9zdHlsZWNsYXNzJztcblxuaW1wb3J0IHtDb21tb25zU2VydmljZSwgQ29tcG9uZW50RGlyZWN0aXZlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5pbXBvcnQge0NPTU1PTlNfTEFZT1VUX0ZFQVRVUkVfQ09ORklHX0lUfSBmcm9tICcuLi9zZXJ2aWNlcy9sYXlvdXQtZmVhdHVyZS1jb25maWcudG9rZW4nO1xuaW1wb3J0IHtNYWluTGF5b3V0Q29tcG9uZW50U2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvbWFpbi1sYXlvdXQuY29tcG9uZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtCcmVhZGNydW1iQ29tcG9uZW50fSBmcm9tICcuL2JyZWFkY3J1bWIuY29tcG9uZW50JztcbmltcG9ydCB7U2lkZWJhckNvbXBvbmVudH0gZnJvbSAnLi9zaWRlYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQge1RvcGJhclVzZXJDb21wb25lbnR9IGZyb20gJy4vdG9wYmFyLXVzZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ21uZy10b3BiYXInLFxuICAgIGltcG9ydHM6IFtTaWRlYmFyQ29tcG9uZW50LCBOZ0NsYXNzLCBCdXR0b25Nb2R1bGUsIFN0eWxlQ2xhc3NNb2R1bGUsIFJpcHBsZU1vZHVsZSwgQnJlYWRjcnVtYkNvbXBvbmVudCwgQXN5bmNQaXBlLCBEcm9wZG93bk1vZHVsZSwgQ29tcG9uZW50RGlyZWN0aXZlLCBGb3Jtc01vZHVsZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RvcGJhci5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVG9wYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwdWJsaWMgZWwgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gICAgcHVibGljIGNvbW1vbnMgPSBpbmplY3QoQ29tbW9uc1NlcnZpY2UpO1xuICAgIHB1YmxpYyBtYWluTGF5b3V0U2VydmljZSA9IGluamVjdChNYWluTGF5b3V0Q29tcG9uZW50U2VydmljZSk7XG4gICAgcHJpdmF0ZSBjb25maWcgPSBpbmplY3QoQ09NTU9OU19MQVlPVVRfRkVBVFVSRV9DT05GSUdfSVQsIHtvcHRpb25hbDogdHJ1ZX0pO1xuXG4gICAgQFZpZXdDaGlsZCgnbWVudWJ1dHRvbicpIG1lbnVCdXR0b24hOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoU2lkZWJhckNvbXBvbmVudCkgYXBwU2lkZWJhciE6IFNpZGViYXJDb21wb25lbnQ7XG5cbiAgICBwdWJsaWMgYnJlYWRjcnVtYkNvbXBvbmVudDogVHlwZTxhbnk+IHwgZmFsc2UgPSBCcmVhZGNydW1iQ29tcG9uZW50O1xuICAgIHB1YmxpYyB0b3BiYXJVc2VyQ29tcG9uZW50OiBUeXBlPGFueT4gfCBmYWxzZSA9IFRvcGJhclVzZXJDb21wb25lbnQ7XG5cbiAgICBwdWJsaWMgbGFuZ3VhZ2VzOiBBcnJheTxzdHJpbmc+ID0gWydlbiddO1xuICAgIHB1YmxpYyBzZWxlY3RlZExhbmd1YWdlID0gJ2VuJztcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jb25maWc/LmNvbXBvbmVudHM/LnRvcGJhclVzZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy50b3BiYXJVc2VyQ29tcG9uZW50ID0gdGhpcy5jb25maWcuY29tcG9uZW50cy50b3BiYXJVc2VyO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZz8uY29tcG9uZW50cz8uYnJlYWRjcnVtYiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLmJyZWFkY3J1bWJDb21wb25lbnQgPSB0aGlzLmNvbmZpZy5jb21wb25lbnRzLmJyZWFkY3J1bWI7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxhbmd1YWdlcyA9IHRoaXMuY29tbW9ucy5hcHBMYW5ndWFnZXM7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMYW5ndWFnZSA9IHRoaXMuY29tbW9ucy5nZXRPckluaXRMYW5ndWFnZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk1lbnVCdXR0b25DbGljaygpIHtcbiAgICAgICAgdGhpcy5tYWluTGF5b3V0U2VydmljZS5vbk1lbnVUb2dnbGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3dpdGNoTGFuZ3VhZ2UobGFuZ3VhZ2U6IHN0cmluZykge1xuICAgICAgICB0aGlzLmNvbW1vbnMuYXBwTGFuZ3VhZ2UgPSBsYW5ndWFnZTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibGF5b3V0LXRvcGJhclwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0b3BiYXItc3RhcnRcIj5cbiAgICAgICAgPGJ1dHRvbiAjbWVudWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ0b3BiYXItbWVudWJ1dHRvbiBwLWxpbmsgcC10cmlnZ2VyXCIgKGNsaWNrKT1cIm9uTWVudUJ1dHRvbkNsaWNrKClcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktYmFyc1wiPjwvaT5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgQGlmIChicmVhZGNydW1iQ29tcG9uZW50KSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9wYmFyLWJyZWFkY3J1bWJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IFttbmdDb21wb25lbnRdPVwiYnJlYWRjcnVtYkNvbXBvbmVudFwiIFthdHRhY2hUb0hvc3RdPVwidHJ1ZVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXRvcGJhci1tZW51LXNlY3Rpb25cIj5cbiAgICAgICAgPG1uZy1zaWRlYmFyPjwvbW5nLXNpZGViYXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRvcGJhci1lbmRcIj5cbiAgICAgICAgPHVsIGNsYXNzPVwidG9wYmFyLW1lbnVcIj5cbiAgICAgICAgICAgIEBpZiAobGFuZ3VhZ2VzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJwcm9maWxlLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1mdyBwaS1nbG9iZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPHAtZHJvcGRvd24gW25nTW9kZWxdPVwic2VsZWN0ZWRMYW5ndWFnZVwiIFtvcHRpb25zXT1cImxhbmd1YWdlc1wiIChvbkNoYW5nZSk9XCJzd2l0Y2hMYW5ndWFnZSgkZXZlbnQudmFsdWUpXCI+PC9wLWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHRvcGJhclVzZXJDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICA8bGkgI3VzZXJNZW51SXRlbSBjbGFzcz1cInByb2ZpbGUtaXRlbSB0b3BiYXItaXRlbSBtci0zXCIgW21uZ0NvbXBvbmVudF09XCJ0b3BiYXJVc2VyQ29tcG9uZW50XCIgW2F0dGFjaFRvSG9zdF09XCJ0cnVlXCI+PC9saT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC91bD5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,63 @@
1
+ import { AsyncPipe } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
3
+ import { BehaviorSubject, take } from 'rxjs';
4
+ import { JsonPathPipe } from '@mediusinc/mng-commons/core';
5
+ import { VersionService } from '../services/version.service';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@mediusinc/mng-commons/core";
8
+ import * as i2 from "../services/version.service";
9
+ export class VersionComponent {
10
+ constructor(jsonPathPipe, versionService) {
11
+ this.jsonPathPipe = jsonPathPipe;
12
+ this.versionService = versionService;
13
+ this.loadingSubject = new BehaviorSubject(false);
14
+ this.loading$ = this.loadingSubject.asObservable();
15
+ }
16
+ ngOnInit() {
17
+ if (Array.isArray(this.initVersion)) {
18
+ this.versions = this.initVersion;
19
+ }
20
+ else if (typeof this.initVersion === 'string') {
21
+ this.displayVersion = this.initVersion;
22
+ }
23
+ else if (typeof this.initVersion !== 'undefined') {
24
+ if (this.initVersion['info'] || this.initVersion['urlPath']) {
25
+ const config = this.initVersion;
26
+ this.displayName = config.displayName;
27
+ if (config.urlPath) {
28
+ this.loadingSubject.next(true);
29
+ this.versionService
30
+ .loadVersion(config.urlPath, config.urlBaseConfigKey)
31
+ .pipe(take(1))
32
+ .subscribe({
33
+ next: res => {
34
+ this.displayVersion = this.jsonPathPipe.transform(res, config.infoJsonPath ?? '$');
35
+ this.loadingSubject.next(false);
36
+ },
37
+ error: () => {
38
+ this.displayVersion = '';
39
+ this.loadingSubject.next(false);
40
+ }
41
+ });
42
+ }
43
+ else {
44
+ this.displayVersion = this.jsonPathPipe.transform(config.info, config.infoJsonPath ?? '$.raw');
45
+ }
46
+ }
47
+ else {
48
+ const info = this.initVersion;
49
+ this.displayVersion = this.jsonPathPipe.transform(info, '$.raw');
50
+ }
51
+ }
52
+ }
53
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: VersionComponent, deps: [{ token: i1.JsonPathPipe }, { token: i2.VersionService }], target: i0.ɵɵFactoryTarget.Component }); }
54
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: VersionComponent, isStandalone: true, selector: "mng-version", inputs: { initVersion: ["version", "initVersion"] }, ngImport: i0, template: "@if (versions) {\n @for (v of versions; track v; let last = $last) {\n <mng-version [version]=\"v\"></mng-version>\n @if (!last) {\n <br />\n }\n }\n} @else {\n @if (displayName) {\n {{ displayName }}:\n }\n @if ((loading$ | async) === false) {\n {{ displayVersion }}\n }\n}\n", dependencies: [{ kind: "component", type: VersionComponent, selector: "mng-version", inputs: ["version"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
55
+ }
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: VersionComponent, decorators: [{
57
+ type: Component,
58
+ args: [{ standalone: true, selector: 'mng-version', imports: [AsyncPipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (versions) {\n @for (v of versions; track v; let last = $last) {\n <mng-version [version]=\"v\"></mng-version>\n @if (!last) {\n <br />\n }\n }\n} @else {\n @if (displayName) {\n {{ displayName }}:\n }\n @if ((loading$ | async) === false) {\n {{ displayVersion }}\n }\n}\n" }]
59
+ }], ctorParameters: () => [{ type: i1.JsonPathPipe }, { type: i2.VersionService }], propDecorators: { initVersion: [{
60
+ type: Input,
61
+ args: ['version']
62
+ }] } });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdmVyc2lvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdmVyc2lvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFFaEYsT0FBTyxFQUFDLGVBQWUsRUFBRSxJQUFJLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFM0MsT0FBTyxFQUFDLFlBQVksRUFBZ0QsTUFBTSw2QkFBNkIsQ0FBQztBQUV4RyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNkJBQTZCLENBQUM7Ozs7QUFTM0QsTUFBTSxPQUFPLGdCQUFnQjtJQVV6QixZQUNZLFlBQTBCLEVBQzFCLGNBQThCO1FBRDlCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUxsQyxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdDLGFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBS2xELENBQUM7SUFFSixRQUFRO1FBQ0osSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDcEM7YUFBTSxJQUFJLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQUU7WUFDN0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQzFDO2FBQU0sSUFBSSxPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssV0FBVyxFQUFFO1lBQ2hELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFzQixDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUF5QixDQUFDLEVBQUU7Z0JBQ3pGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUE0QixDQUFDO2dCQUNqRCxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7Z0JBRXRDLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRTtvQkFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQy9CLElBQUksQ0FBQyxjQUFjO3lCQUNkLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQzt5QkFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzt5QkFDYixTQUFTLENBQUM7d0JBQ1AsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFOzRCQUNSLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxZQUFZLElBQUksR0FBRyxDQUFDLENBQUM7NEJBQ25GLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUNwQyxDQUFDO3dCQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7NEJBQ1IsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7NEJBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUNwQyxDQUFDO3FCQUNKLENBQUMsQ0FBQztpQkFDVjtxQkFBTTtvQkFDSCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLFlBQVksSUFBSSxPQUFPLENBQUMsQ0FBQztpQkFDbEc7YUFDSjtpQkFBTTtnQkFDSCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBMEIsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDcEU7U0FDSjtJQUNMLENBQUM7OEdBaERRLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLDRIQ2hCN0Isc1ZBZUEsNENEQ2EsZ0JBQWdCLHdFQUhmLFNBQVM7OzJGQUdWLGdCQUFnQjtrQkFQNUIsU0FBUztpQ0FDTSxJQUFJLFlBQ04sYUFBYSxXQUVkLENBQUMsU0FBUyxDQUFDLG1CQUNILHVCQUF1QixDQUFDLE1BQU07OEdBR3RCLFdBQVc7c0JBQW5DLEtBQUs7dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXN5bmNQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIHRha2V9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0pzb25QYXRoUGlwZSwgVmVyc2lvbkNvbmZpZywgVmVyc2lvbkNvbmZpZ1R5cGUsIFZlcnNpb25JbmZvfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5pbXBvcnQge1ZlcnNpb25TZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy92ZXJzaW9uLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnbW5nLXZlcnNpb24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi92ZXJzaW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBpbXBvcnRzOiBbQXN5bmNQaXBlXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBWZXJzaW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoJ3ZlcnNpb24nKSBwdWJsaWMgaW5pdFZlcnNpb24/OiBWZXJzaW9uQ29uZmlnVHlwZTtcblxuICAgIHB1YmxpYyBkaXNwbGF5TmFtZT86IHN0cmluZztcbiAgICBwdWJsaWMgZGlzcGxheVZlcnNpb24/OiBzdHJpbmc7XG4gICAgcHVibGljIHZlcnNpb25zPzogQXJyYXk8VmVyc2lvbkNvbmZpZz47XG5cbiAgICBwcml2YXRlIGxvYWRpbmdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gICAgcHVibGljIGxvYWRpbmckID0gdGhpcy5sb2FkaW5nU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGpzb25QYXRoUGlwZTogSnNvblBhdGhQaXBlLFxuICAgICAgICBwcml2YXRlIHZlcnNpb25TZXJ2aWNlOiBWZXJzaW9uU2VydmljZVxuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmluaXRWZXJzaW9uKSkge1xuICAgICAgICAgICAgdGhpcy52ZXJzaW9ucyA9IHRoaXMuaW5pdFZlcnNpb247XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuaW5pdFZlcnNpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlWZXJzaW9uID0gdGhpcy5pbml0VmVyc2lvbjtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5pbml0VmVyc2lvbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmluaXRWZXJzaW9uWydpbmZvJyBhcyBrZXlvZiBvYmplY3RdIHx8IHRoaXMuaW5pdFZlcnNpb25bJ3VybFBhdGgnIGFzIGtleW9mIG9iamVjdF0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLmluaXRWZXJzaW9uIGFzIFZlcnNpb25Db25maWc7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5TmFtZSA9IGNvbmZpZy5kaXNwbGF5TmFtZTtcblxuICAgICAgICAgICAgICAgIGlmIChjb25maWcudXJsUGF0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmVyc2lvblNlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgICAgIC5sb2FkVmVyc2lvbihjb25maWcudXJsUGF0aCwgY29uZmlnLnVybEJhc2VDb25maWdLZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDogcmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5VmVyc2lvbiA9IHRoaXMuanNvblBhdGhQaXBlLnRyYW5zZm9ybShyZXMsIGNvbmZpZy5pbmZvSnNvblBhdGggPz8gJyQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheVZlcnNpb24gPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlWZXJzaW9uID0gdGhpcy5qc29uUGF0aFBpcGUudHJhbnNmb3JtKGNvbmZpZy5pbmZvLCBjb25maWcuaW5mb0pzb25QYXRoID8/ICckLnJhdycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5mbyA9IHRoaXMuaW5pdFZlcnNpb24gYXMgVmVyc2lvbkluZm87XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5VmVyc2lvbiA9IHRoaXMuanNvblBhdGhQaXBlLnRyYW5zZm9ybShpbmZvLCAnJC5yYXcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBpZiAodmVyc2lvbnMpIHtcbiAgICBAZm9yICh2IG9mIHZlcnNpb25zOyB0cmFjayB2OyBsZXQgbGFzdCA9ICRsYXN0KSB7XG4gICAgICAgIDxtbmctdmVyc2lvbiBbdmVyc2lvbl09XCJ2XCI+PC9tbmctdmVyc2lvbj5cbiAgICAgICAgQGlmICghbGFzdCkge1xuICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgIH1cbiAgICB9XG59IEBlbHNlIHtcbiAgICBAaWYgKGRpc3BsYXlOYW1lKSB7XG4gICAgICAgIHt7IGRpc3BsYXlOYW1lIH19OlxuICAgIH1cbiAgICBAaWYgKChsb2FkaW5nJCB8IGFzeW5jKSA9PT0gZmFsc2UpIHtcbiAgICAgICAge3sgZGlzcGxheVZlcnNpb24gfX1cbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,11 @@
1
+ import { RouteBuilder } from '@mediusinc/mng-commons/core';
2
+ import { MainLayoutComponent } from '../components/main-layout.component';
3
+ export class LayoutRouteBuilder {
4
+ static create(path) {
5
+ return RouteBuilder.create(path, MainLayoutComponent);
6
+ }
7
+ static fromComponent(path, component) {
8
+ return RouteBuilder.create(path, component);
9
+ }
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvaGVscGVycy9yb3V0ZS1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUV6RCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUV4RSxNQUFNLE9BQU8sa0JBQWtCO0lBQ3BCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBWTtRQUM3QixPQUFPLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUNNLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBWSxFQUFFLFNBQW9CO1FBQzFELE9BQU8sWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDaEQsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtSb3V0ZUJ1aWxkZXJ9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5cbmltcG9ydCB7TWFpbkxheW91dENvbXBvbmVudH0gZnJvbSAnLi4vY29tcG9uZW50cy9tYWluLWxheW91dC5jb21wb25lbnQnO1xuXG5leHBvcnQgY2xhc3MgTGF5b3V0Um91dGVCdWlsZGVyIHtcbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShwYXRoOiBzdHJpbmcpOiBSb3V0ZUJ1aWxkZXIge1xuICAgICAgICByZXR1cm4gUm91dGVCdWlsZGVyLmNyZWF0ZShwYXRoLCBNYWluTGF5b3V0Q29tcG9uZW50KTtcbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyBmcm9tQ29tcG9uZW50KHBhdGg6IHN0cmluZywgY29tcG9uZW50OiBUeXBlPGFueT4pOiBSb3V0ZUJ1aWxkZXIge1xuICAgICAgICByZXR1cm4gUm91dGVCdWlsZGVyLmNyZWF0ZShwYXRoLCBjb21wb25lbnQpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LXN0YXRlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2RlbHMvbGF5b3V0LXN0YXRlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIExheW91dFN0YXRlIHtcbiAgICBzdGF0aWNNZW51RGVza3RvcEluYWN0aXZlOiBib29sZWFuO1xuICAgIG92ZXJsYXlNZW51QWN0aXZlOiBib29sZWFuO1xuICAgIHJpZ2h0TWVudUFjdGl2ZTogYm9vbGVhbjtcbiAgICBjb25maWdTaWRlYmFyVmlzaWJsZTogYm9vbGVhbjtcbiAgICBzdGF0aWNNZW51TW9iaWxlQWN0aXZlOiBib29sZWFuO1xuICAgIG1lbnVIb3ZlckFjdGl2ZTogYm9vbGVhbjtcbiAgICBzaWRlYmFyQWN0aXZlOiBib29sZWFuO1xuICAgIGFuY2hvcmVkOiBib29sZWFuO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbW9kZWxzL21lbnUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgTWVudUNoYW5nZUV2ZW50IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICByb3V0ZUV2ZW50PzogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -0,0 +1,23 @@
1
+ import { CommonsFeatureTypeEnum } from '@mediusinc/mng-commons/core';
2
+ import { COMMONS_LAYOUT_FEATURE_CONFIG_IT } from './services/layout-feature-config.token';
3
+ import { MenuService } from './services/menu.service';
4
+ import { VersionService } from './services/version.service';
5
+ /**
6
+ * Prepares providers for usage of the layout functionalities.
7
+ *
8
+ * @returns {CommonsFeature} The `CommonsFeature` object with the layout configuration.
9
+ */
10
+ export function withLayout(config) {
11
+ return {
12
+ type: CommonsFeatureTypeEnum.Layout,
13
+ providers: [
14
+ MenuService,
15
+ VersionService,
16
+ {
17
+ provide: COMMONS_LAYOUT_FEATURE_CONFIG_IT,
18
+ useValue: config
19
+ }
20
+ ]
21
+ };
22
+ }
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvcHJvdmlkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLHNCQUFzQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFFbkYsT0FBTyxFQUFDLGdDQUFnQyxFQUFzQixNQUFNLHdDQUF3QyxDQUFDO0FBQzdHLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFMUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsTUFBNEI7SUFDbkQsT0FBTztRQUNILElBQUksRUFBRSxzQkFBc0IsQ0FBQyxNQUFNO1FBQ25DLFNBQVMsRUFBRTtZQUNQLFdBQVc7WUFDWCxjQUFjO1lBQ2Q7Z0JBQ0ksT0FBTyxFQUFFLGdDQUFnQztnQkFDekMsUUFBUSxFQUFFLE1BQU07YUFDbkI7U0FDSjtLQUNKLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21tb25zRmVhdHVyZSwgQ29tbW9uc0ZlYXR1cmVUeXBlRW51bX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxuaW1wb3J0IHtDT01NT05TX0xBWU9VVF9GRUFUVVJFX0NPTkZJR19JVCwgTGF5b3V0RmVhdHVyZUNvbmZpZ30gZnJvbSAnLi9zZXJ2aWNlcy9sYXlvdXQtZmVhdHVyZS1jb25maWcudG9rZW4nO1xuaW1wb3J0IHtNZW51U2VydmljZX0gZnJvbSAnLi9zZXJ2aWNlcy9tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHtWZXJzaW9uU2VydmljZX0gZnJvbSAnLi9zZXJ2aWNlcy92ZXJzaW9uLnNlcnZpY2UnO1xuXG4vKipcbiAqIFByZXBhcmVzIHByb3ZpZGVycyBmb3IgdXNhZ2Ugb2YgdGhlIGxheW91dCBmdW5jdGlvbmFsaXRpZXMuXG4gKlxuICogQHJldHVybnMge0NvbW1vbnNGZWF0dXJlfSBUaGUgYENvbW1vbnNGZWF0dXJlYCBvYmplY3Qgd2l0aCB0aGUgbGF5b3V0IGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoTGF5b3V0KGNvbmZpZz86IExheW91dEZlYXR1cmVDb25maWcpOiBDb21tb25zRmVhdHVyZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogQ29tbW9uc0ZlYXR1cmVUeXBlRW51bS5MYXlvdXQsXG4gICAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAgICAgTWVudVNlcnZpY2UsXG4gICAgICAgICAgICBWZXJzaW9uU2VydmljZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcm92aWRlOiBDT01NT05TX0xBWU9VVF9GRUFUVVJFX0NPTkZJR19JVCxcbiAgICAgICAgICAgICAgICB1c2VWYWx1ZTogY29uZmlnXG4gICAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICB9O1xufVxuIl19
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const COMMONS_LAYOUT_FEATURE_CONFIG_IT = new InjectionToken('COMMONS_LAYOUT_FEATURE_CONFIG');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWZlYXR1cmUtY29uZmlnLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9sYXlvdXQtZmVhdHVyZS1jb25maWcudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGNBQWMsRUFBTyxNQUFNLGVBQWUsQ0FBQztBQXFCbkQsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsSUFBSSxjQUFjLENBQXNCLCtCQUErQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGlvblRva2VuLCBUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtNZW51SXRlbX0gZnJvbSAncHJpbWVuZy9hcGknO1xuXG5leHBvcnQgdHlwZSBMYXlvdXRNZW51TW9kZSA9ICdzdGF0aWMnIHwgJ292ZXJsYXknIHwgJ3JldmVhbCcgfCAnZHJhd2VyJyB8ICdzbGltJyB8ICdzbGltLXBsdXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIExheW91dEZlYXR1cmVDb25maWcge1xuICAgIG1lbnVNb2RlPzogTGF5b3V0TWVudU1vZGU7XG4gICAgbWVudUl0ZW1zPzogTWVudUl0ZW1bXTtcbiAgICByaXBwbGU/OiBib29sZWFuO1xuICAgIGRpc2FibGVOb3RpZmljYXRpb25XcmFwcGVyPzogYm9vbGVhbjtcbiAgICBjb21wb25lbnRzPzoge1xuICAgICAgICB0b3BiYXI/OiBUeXBlPGFueT4gfCBmYWxzZTtcbiAgICAgICAgbWVudT86IFR5cGU8YW55PiB8IGZhbHNlO1xuICAgICAgICBmb290ZXI/OiBUeXBlPGFueT4gfCBmYWxzZTtcbiAgICAgICAgYnJlYWRjcnVtYj86IFR5cGU8YW55PiB8IGZhbHNlO1xuICAgICAgICB0b3BiYXJVc2VyPzogVHlwZTxhbnk+IHwgZmFsc2U7XG4gICAgICAgIHZlcnNpb24/OiBUeXBlPGFueT4gfCBmYWxzZTtcbiAgICB9O1xufVxuXG5leHBvcnQgY29uc3QgQ09NTU9OU19MQVlPVVRfRkVBVFVSRV9DT05GSUdfSVQgPSBuZXcgSW5qZWN0aW9uVG9rZW48TGF5b3V0RmVhdHVyZUNvbmZpZz4oJ0NPTU1PTlNfTEFZT1VUX0ZFQVRVUkVfQ09ORklHJyk7XG4iXX0=
@@ -0,0 +1,71 @@
1
+ import { Injectable, inject, signal } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { COMMONS_LAYOUT_FEATURE_CONFIG_IT } from './layout-feature-config.token';
4
+ import * as i0 from "@angular/core";
5
+ export class MainLayoutComponentService {
6
+ constructor() {
7
+ this.config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, { optional: true });
8
+ this.state = signal({
9
+ staticMenuDesktopInactive: false,
10
+ overlayMenuActive: false,
11
+ rightMenuActive: false,
12
+ configSidebarVisible: false,
13
+ staticMenuMobileActive: false,
14
+ menuHoverActive: false,
15
+ sidebarActive: false,
16
+ anchored: false
17
+ });
18
+ this.overlayOpen = new Subject();
19
+ this.overlayOpen$ = this.overlayOpen.asObservable();
20
+ }
21
+ onMenuToggle() {
22
+ if (this.isOverlay()) {
23
+ this.state.update(state => ({
24
+ ...state,
25
+ overlayMenuActive: !state.overlayMenuActive
26
+ }));
27
+ if (this.state().overlayMenuActive) {
28
+ this.overlayOpen.next(null);
29
+ }
30
+ }
31
+ if (this.isDesktop()) {
32
+ this.state.update(state => ({
33
+ ...state,
34
+ staticMenuDesktopInactive: !state.staticMenuDesktopInactive
35
+ }));
36
+ }
37
+ else {
38
+ this.state.update(state => ({
39
+ ...state,
40
+ staticMenuMobileActive: !state.staticMenuMobileActive
41
+ }));
42
+ if (this.state().staticMenuMobileActive) {
43
+ this.overlayOpen.next(null);
44
+ }
45
+ }
46
+ }
47
+ onOverlaySubmenuOpen() {
48
+ this.overlayOpen.next(null);
49
+ }
50
+ isOverlay() {
51
+ return this.config?.menuMode === 'overlay';
52
+ }
53
+ isSlim() {
54
+ return this.config?.menuMode === 'slim';
55
+ }
56
+ isSlimPlus() {
57
+ return this.config?.menuMode === 'slim-plus';
58
+ }
59
+ isDesktop() {
60
+ return window.innerWidth > 991;
61
+ }
62
+ isMobile() {
63
+ return !this.isDesktop();
64
+ }
65
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: MainLayoutComponentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
66
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: MainLayoutComponentService }); }
67
+ }
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: MainLayoutComponentService, decorators: [{
69
+ type: Injectable
70
+ }] });
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1sYXlvdXQuY29tcG9uZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL21haW4tbGF5b3V0LmNvbXBvbmVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRzdCLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBQyxNQUFNLCtCQUErQixDQUFDOztBQUcvRSxNQUFNLE9BQU8sMEJBQTBCO0lBRHZDO1FBRVksV0FBTSxHQUFHLE1BQU0sQ0FBQyxnQ0FBZ0MsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBRXJFLFVBQUssR0FBRyxNQUFNLENBQWM7WUFDL0IseUJBQXlCLEVBQUUsS0FBSztZQUNoQyxpQkFBaUIsRUFBRSxLQUFLO1lBQ3hCLGVBQWUsRUFBRSxLQUFLO1lBQ3RCLG9CQUFvQixFQUFFLEtBQUs7WUFDM0Isc0JBQXNCLEVBQUUsS0FBSztZQUM3QixlQUFlLEVBQUUsS0FBSztZQUN0QixhQUFhLEVBQUUsS0FBSztZQUNwQixRQUFRLEVBQUUsS0FBSztTQUNsQixDQUFDLENBQUM7UUFFSyxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFDbEMsaUJBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO0tBc0R6RDtJQXBERyxZQUFZO1FBQ1IsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN4QixHQUFHLEtBQUs7Z0JBQ1IsaUJBQWlCLEVBQUUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCO2FBQzlDLENBQUMsQ0FBQyxDQUFDO1lBRUosSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsaUJBQWlCLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQy9CO1NBQ0o7UUFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3hCLEdBQUcsS0FBSztnQkFDUix5QkFBeUIsRUFBRSxDQUFDLEtBQUssQ0FBQyx5QkFBeUI7YUFDOUQsQ0FBQyxDQUFDLENBQUM7U0FDUDthQUFNO1lBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN4QixHQUFHLEtBQUs7Z0JBQ1Isc0JBQXNCLEVBQUUsQ0FBQyxLQUFLLENBQUMsc0JBQXNCO2FBQ3hELENBQUMsQ0FBQyxDQUFDO1lBRUosSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsc0JBQXNCLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQy9CO1NBQ0o7SUFDTCxDQUFDO0lBRUQsb0JBQW9CO1FBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFTO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsS0FBSyxTQUFTLENBQUM7SUFDL0MsQ0FBQztJQUVELE1BQU07UUFDRixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxLQUFLLE1BQU0sQ0FBQztJQUM1QyxDQUFDO0lBRUQsVUFBVTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLEtBQUssV0FBVyxDQUFDO0lBQ2pELENBQUM7SUFFRCxTQUFTO1FBQ0wsT0FBTyxNQUFNLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztJQUNuQyxDQUFDO0lBRUQsUUFBUTtRQUNKLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDN0IsQ0FBQzs4R0FwRVEsMEJBQTBCO2tIQUExQiwwQkFBMEI7OzJGQUExQiwwQkFBMEI7a0JBRHRDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIGluamVjdCwgc2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtMYXlvdXRTdGF0ZX0gZnJvbSAnLi4vbW9kZWxzL2xheW91dC1zdGF0ZS5tb2RlbCc7XG5pbXBvcnQge0NPTU1PTlNfTEFZT1VUX0ZFQVRVUkVfQ09ORklHX0lUfSBmcm9tICcuL2xheW91dC1mZWF0dXJlLWNvbmZpZy50b2tlbic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNYWluTGF5b3V0Q29tcG9uZW50U2VydmljZSB7XG4gICAgcHJpdmF0ZSBjb25maWcgPSBpbmplY3QoQ09NTU9OU19MQVlPVVRfRkVBVFVSRV9DT05GSUdfSVQsIHtvcHRpb25hbDogdHJ1ZX0pO1xuXG4gICAgcHVibGljIHN0YXRlID0gc2lnbmFsPExheW91dFN0YXRlPih7XG4gICAgICAgIHN0YXRpY01lbnVEZXNrdG9wSW5hY3RpdmU6IGZhbHNlLFxuICAgICAgICBvdmVybGF5TWVudUFjdGl2ZTogZmFsc2UsXG4gICAgICAgIHJpZ2h0TWVudUFjdGl2ZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ1NpZGViYXJWaXNpYmxlOiBmYWxzZSxcbiAgICAgICAgc3RhdGljTWVudU1vYmlsZUFjdGl2ZTogZmFsc2UsXG4gICAgICAgIG1lbnVIb3ZlckFjdGl2ZTogZmFsc2UsXG4gICAgICAgIHNpZGViYXJBY3RpdmU6IGZhbHNlLFxuICAgICAgICBhbmNob3JlZDogZmFsc2VcbiAgICB9KTtcblxuICAgIHByaXZhdGUgb3ZlcmxheU9wZW4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gICAgcHVibGljIG92ZXJsYXlPcGVuJCA9IHRoaXMub3ZlcmxheU9wZW4uYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBvbk1lbnVUb2dnbGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzT3ZlcmxheSgpKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLnVwZGF0ZShzdGF0ZSA9PiAoe1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgIG92ZXJsYXlNZW51QWN0aXZlOiAhc3RhdGUub3ZlcmxheU1lbnVBY3RpdmVcbiAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGUoKS5vdmVybGF5TWVudUFjdGl2ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub3ZlcmxheU9wZW4ubmV4dChudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzRGVza3RvcCgpKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLnVwZGF0ZShzdGF0ZSA9PiAoe1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgIHN0YXRpY01lbnVEZXNrdG9wSW5hY3RpdmU6ICFzdGF0ZS5zdGF0aWNNZW51RGVza3RvcEluYWN0aXZlXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLnVwZGF0ZShzdGF0ZSA9PiAoe1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgIHN0YXRpY01lbnVNb2JpbGVBY3RpdmU6ICFzdGF0ZS5zdGF0aWNNZW51TW9iaWxlQWN0aXZlXG4gICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlKCkuc3RhdGljTWVudU1vYmlsZUFjdGl2ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub3ZlcmxheU9wZW4ubmV4dChudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uT3ZlcmxheVN1Ym1lbnVPcGVuKCkge1xuICAgICAgICB0aGlzLm92ZXJsYXlPcGVuLm5leHQobnVsbCk7XG4gICAgfVxuXG4gICAgaXNPdmVybGF5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWc/Lm1lbnVNb2RlID09PSAnb3ZlcmxheSc7XG4gICAgfVxuXG4gICAgaXNTbGltKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWc/Lm1lbnVNb2RlID09PSAnc2xpbSc7XG4gICAgfVxuXG4gICAgaXNTbGltUGx1cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnPy5tZW51TW9kZSA9PT0gJ3NsaW0tcGx1cyc7XG4gICAgfVxuXG4gICAgaXNEZXNrdG9wKCkge1xuICAgICAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGggPiA5OTE7XG4gICAgfVxuXG4gICAgaXNNb2JpbGUoKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5pc0Rlc2t0b3AoKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,120 @@
1
+ import { Injectable, inject } from '@angular/core';
2
+ import { NavigationEnd, Router } from '@angular/router';
3
+ import { ReplaySubject, Subject, take } from 'rxjs';
4
+ import { filter } from 'rxjs/operators';
5
+ import { CommonsRouterService, LoggerService, RouteUtil } from '@mediusinc/mng-commons/core';
6
+ import * as i0 from "@angular/core";
7
+ export class MenuService {
8
+ constructor() {
9
+ this.logger = LoggerService.create('MenuService');
10
+ this.router = inject(Router);
11
+ this.commonsRouter = inject(CommonsRouterService);
12
+ this.menuSource = new ReplaySubject(1);
13
+ this.resetSource = new Subject();
14
+ this.menuSource$ = this.menuSource.asObservable();
15
+ this.resetSource$ = this.resetSource.asObservable();
16
+ this.menuItems = [];
17
+ this.routeLoadedChildrenSubscriptions = [];
18
+ }
19
+ initialize(menuItems) {
20
+ this.menuItems = menuItems;
21
+ this.routeLoadedChildrenSubscriptions.forEach(s => s.unsubscribe());
22
+ this.routeLoadedChildrenSubscriptions = [];
23
+ this.generateMenuItemKeys(menuItems);
24
+ this.router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe(e => {
25
+ this.findAndSetActiveMenuItem(e.urlAfterRedirects);
26
+ });
27
+ this.findAndSetActiveMenuItem(this.router.url);
28
+ }
29
+ generateMenuItemKeys(menuItems, parentKey = '') {
30
+ menuItems.forEach((item, idx) => {
31
+ if (!item.index) {
32
+ item.index = idx;
33
+ item.key = parentKey ? parentKey + '-' + idx : idx.toString();
34
+ }
35
+ if (item.items) {
36
+ this.generateMenuItemKeys(item.items, item.key);
37
+ }
38
+ else if (item.lazyChildren) {
39
+ this.listenToMenuItemLazyChildrenLoad(item);
40
+ }
41
+ });
42
+ }
43
+ findAndSetActiveMenuItem(url) {
44
+ const matches = this.findActiveRouteMatches(this.menuItems, url);
45
+ if (matches.length === 0) {
46
+ this.reset();
47
+ }
48
+ else {
49
+ const matchKey = matches[0][matches[0].length - 1].key;
50
+ if (matchKey) {
51
+ this.menuSource.next({
52
+ key: matchKey,
53
+ routeEvent: true
54
+ });
55
+ }
56
+ else {
57
+ this.logger.warn(`Found active menu item for url ${url}, but item key is not present`, matches);
58
+ this.reset();
59
+ }
60
+ if (matches.length > 1) {
61
+ this.logger.warn(`Multiple active menu items found for url ${url}`, matches);
62
+ }
63
+ }
64
+ }
65
+ listenToMenuItemLazyChildrenLoad(menuItem) {
66
+ this.routeLoadedChildrenSubscriptions.push(this.commonsRouter
67
+ .getRouteLoadedChildren$(menuItem.routerLink ?? '/')
68
+ .pipe(take(1))
69
+ .subscribe({
70
+ next: routes => {
71
+ let menuItems = routes
72
+ .filter(r => Array.isArray(r.data?.menuItems))
73
+ .flatMap(r => r.data.menuItems);
74
+ menuItems = RouteUtil.adjustMenuLazyChildrenRouterLinks(menuItem, menuItems);
75
+ menuItem.items = menuItems;
76
+ menuItem.lazyChildren = false;
77
+ this.generateMenuItemKeys(menuItem.items, menuItem.key);
78
+ this.findAndSetActiveMenuItem(this.router.url);
79
+ }
80
+ }));
81
+ }
82
+ findActiveRouteMatches(menuItems, url) {
83
+ const matches = [];
84
+ for (const menuItem of menuItems) {
85
+ if (menuItem.routerLink) {
86
+ const isActive = RouteUtil.doesUrlMatchRouterLink(menuItem.routerLink, url);
87
+ if (isActive) {
88
+ if (Array.isArray(menuItem.items)) {
89
+ const itemsMatches = this.findActiveRouteMatches(menuItem.items, url);
90
+ if (itemsMatches.length > 0) {
91
+ matches.push(...itemsMatches.map(c => [menuItem, ...c]));
92
+ }
93
+ else {
94
+ matches.push([menuItem]);
95
+ }
96
+ }
97
+ else {
98
+ matches.push([menuItem]);
99
+ }
100
+ }
101
+ }
102
+ else if (Array.isArray(menuItem.items)) {
103
+ const itemsMatches = this.findActiveRouteMatches(menuItem.items, url);
104
+ if (itemsMatches.length > 0) {
105
+ matches.push(...itemsMatches.map(c => [menuItem, ...c]));
106
+ }
107
+ }
108
+ }
109
+ return matches;
110
+ }
111
+ reset() {
112
+ this.resetSource.next(true);
113
+ }
114
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: MenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
115
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: MenuService }); }
116
+ }
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: MenuService, decorators: [{
118
+ type: Injectable
119
+ }] });
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9tZW51LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV0RCxPQUFPLEVBQUMsYUFBYSxFQUFFLE9BQU8sRUFBZ0IsSUFBSSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2hFLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxPQUFPLEVBQW9DLG9CQUFvQixFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQzs7QUFLOUgsTUFBTSxPQUFPLFdBQVc7SUFEeEI7UUFFcUIsV0FBTSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0MsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzdDLGVBQVUsR0FBRyxJQUFJLGFBQWEsQ0FBa0IsQ0FBQyxDQUFDLENBQUM7UUFDbkQsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRTdDLGdCQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM3QyxpQkFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFdkMsY0FBUyxHQUEyQixFQUFFLENBQUM7UUFDdkMscUNBQWdDLEdBQW1CLEVBQUUsQ0FBQztLQTBHakU7SUF4R0csVUFBVSxDQUFDLFNBQWlDO1FBQ3hDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBRTNCLElBQUksQ0FBQyxn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SUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTs0QkFDekIsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt5QkFDNUQ7NkJBQU07NEJBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7eUJBQzVCO3FCQUNKO3lCQUFNO3dCQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO3FCQUM1QjtpQkFDSjthQUNKO2lCQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUN0RSxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUN6QixPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUM1RDthQUNKO1NBQ0o7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSztRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7OEdBcEhRLFdBQVc7a0hBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFEdkIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmF2aWdhdGlvbkVuZCwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge1JlcGxheVN1YmplY3QsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGFrZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpbHRlcn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0NvbW1vbnNNZW51SXRlbSwgQ29tbW9uc1JvdXRlRGF0YSwgQ29tbW9uc1JvdXRlclNlcnZpY2UsIExvZ2dlclNlcnZpY2UsIFJvdXRlVXRpbH0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxuaW1wb3J0IHtNZW51Q2hhbmdlRXZlbnR9IGZyb20gJy4uL21vZGVscy9tZW51Lm1vZGVsJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1lbnVTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IExvZ2dlclNlcnZpY2UuY3JlYXRlKCdNZW51U2VydmljZScpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb21tb25zUm91dGVyID0gaW5qZWN0KENvbW1vbnNSb3V0ZXJTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1lbnVTb3VyY2UgPSBuZXcgUmVwbGF5U3ViamVjdDxNZW51Q2hhbmdlRXZlbnQ+KDEpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzZXRTb3VyY2UgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgbWVudVNvdXJjZSQgPSB0aGlzLm1lbnVTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG4gICAgcmVzZXRTb3VyY2UkID0gdGhpcy5yZXNldFNvdXJjZS5hc09ic2VydmFibGUoKTtcblxuICAgIHByaXZhdGUgbWVudUl0ZW1zOiBBcnJheTxDb21tb25zTWVudUl0ZW0+ID0gW107XG4gICAgcHJpdmF0ZSByb3V0ZUxvYWRlZENoaWxkcmVuU3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICAgIGluaXRpYWxpemUobWVudUl0ZW1zOiBBcnJheTxDb21tb25zTWVudUl0ZW0+KSB7XG4gICAgICAgIHRoaXMubWVudUl0ZW1zID0gbWVudUl0ZW1zO1xuXG4gICAgICAgIHRoaXMucm91dGVMb2FkZWRDaGlsZHJlblN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgICAgIHRoaXMucm91dGVMb2FkZWRDaGlsZHJlblN1YnNjcmlwdGlvbnMgPSBbXTtcblxuICAgICAgICB0aGlzLmdlbmVyYXRlTWVudUl0ZW1LZXlzKG1lbnVJdGVtcyk7XG5cbiAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpLnN1YnNjcmliZShlID0+IHtcbiAgICAgICAgICAgIHRoaXMuZmluZEFuZFNldEFjdGl2ZU1lbnVJdGVtKChlIGFzIE5hdmlnYXRpb25FbmQpLnVybEFmdGVyUmVkaXJlY3RzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5maW5kQW5kU2V0QWN0aXZlTWVudUl0ZW0odGhpcy5yb3V0ZXIudXJsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlTWVudUl0ZW1LZXlzKG1lbnVJdGVtczogQXJyYXk8Q29tbW9uc01lbnVJdGVtPiwgcGFyZW50S2V5ID0gJycpIHtcbiAgICAgICAgbWVudUl0ZW1zLmZvckVhY2goKGl0ZW0sIGlkeCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFpdGVtLmluZGV4KSB7XG4gICAgICAgICAgICAgICAgaXRlbS5pbmRleCA9IGlkeDtcbiAgICAgICAgICAgICAgICBpdGVtLmtleSA9IHBhcmVudEtleSA/IHBhcmVudEtleSArICctJyArIGlkeCA6IGlkeC50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXRlbS5pdGVtcykge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVNZW51SXRlbUtleXMoaXRlbS5pdGVtcywgaXRlbS5rZXkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLmxhenlDaGlsZHJlbikge1xuICAgICAgICAgICAgICAgIHRoaXMubGlzdGVuVG9NZW51SXRlbUxhenlDaGlsZHJlbkxvYWQoaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmluZEFuZFNldEFjdGl2ZU1lbnVJdGVtKHVybDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoZXMgPSB0aGlzLmZpbmRBY3RpdmVSb3V0ZU1hdGNoZXModGhpcy5tZW51SXRlbXMsIHVybCk7XG4gICAgICAgIGlmIChtYXRjaGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hLZXkgPSBtYXRjaGVzWzBdW21hdGNoZXNbMF0ubGVuZ3RoIC0gMV0ua2V5O1xuICAgICAgICAgICAgaWYgKG1hdGNoS2V5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51U291cmNlLm5leHQoe1xuICAgICAgICAgICAgICAgICAgICBrZXk6IG1hdGNoS2V5LFxuICAgICAgICAgICAgICAgICAgICByb3V0ZUV2ZW50OiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLndhcm4oYEZvdW5kIGFjdGl2ZSBtZW51IGl0ZW0gZm9yIHVybCAke3VybH0sIGJ1dCBpdGVtIGtleSBpcyBub3QgcHJlc2VudGAsIG1hdGNoZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG1hdGNoZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLndhcm4oYE11bHRpcGxlIGFjdGl2ZSBtZW51IGl0ZW1zIGZvdW5kIGZvciB1cmwgJHt1cmx9YCwgbWF0Y2hlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGxpc3RlblRvTWVudUl0ZW1MYXp5Q2hpbGRyZW5Mb2FkKG1lbnVJdGVtOiBDb21tb25zTWVudUl0ZW0pIHtcbiAgICAgICAgdGhpcy5yb3V0ZUxvYWRlZENoaWxkcmVuU3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgdGhpcy5jb21tb25zUm91dGVyXG4gICAgICAgICAgICAgICAgLmdldFJvdXRlTG9hZGVkQ2hpbGRyZW4kKG1lbnVJdGVtLnJvdXRlckxpbmsgPz8gJy8nKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgICAgIG5leHQ6IHJvdXRlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWVudUl0ZW1zID0gcm91dGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihyID0+IEFycmF5LmlzQXJyYXkoKHIuZGF0YSBhcyBDb21tb25zUm91dGVEYXRhIHwgdW5kZWZpbmVkKT8ubWVudUl0ZW1zKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmxhdE1hcChyID0+IChyLmRhdGEgYXMgQ29tbW9uc1JvdXRlRGF0YSkubWVudUl0ZW1zISk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZW51SXRlbXMgPSBSb3V0ZVV0aWwuYWRqdXN0TWVudUxhenlDaGlsZHJlblJvdXRlckxpbmtzKG1lbnVJdGVtLCBtZW51SXRlbXMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBtZW51SXRlbS5pdGVtcyA9IG1lbnVJdGVtcztcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVJdGVtLmxhenlDaGlsZHJlbiA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlTWVudUl0ZW1LZXlzKG1lbnVJdGVtLml0ZW1zLCBtZW51SXRlbS5rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5kQW5kU2V0QWN0aXZlTWVudUl0ZW0odGhpcy5yb3V0ZXIudXJsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kQWN0aXZlUm91dGVNYXRjaGVzKG1lbnVJdGVtczogQXJyYXk8Q29tbW9uc01lbnVJdGVtPiwgdXJsOiBzdHJpbmcpOiBDb21tb25zTWVudUl0ZW1bXVtdIHtcbiAgICAgICAgY29uc3QgbWF0Y2hlczogQ29tbW9uc01lbnVJdGVtW11bXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IG1lbnVJdGVtIG9mIG1lbnVJdGVtcykge1xuICAgICAgICAgICAgaWYgKG1lbnVJdGVtLnJvdXRlckxpbmspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IFJvdXRlVXRpbC5kb2VzVXJsTWF0Y2hSb3V0ZXJMaW5rKG1lbnVJdGVtLnJvdXRlckxpbmssIHVybCk7XG4gICAgICAgICAgICAgICAgaWYgKGlzQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG1lbnVJdGVtLml0ZW1zKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbXNNYXRjaGVzID0gdGhpcy5maW5kQWN0aXZlUm91dGVNYXRjaGVzKG1lbnVJdGVtLml0ZW1zLCB1cmwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1zTWF0Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcy5wdXNoKC4uLml0ZW1zTWF0Y2hlcy5tYXAoYyA9PiBbbWVudUl0ZW0sIC4uLmNdKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXMucHVzaChbbWVudUl0ZW1dKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXMucHVzaChbbWVudUl0ZW1dKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShtZW51SXRlbS5pdGVtcykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtc01hdGNoZXMgPSB0aGlzLmZpbmRBY3RpdmVSb3V0ZU1hdGNoZXMobWVudUl0ZW0uaXRlbXMsIHVybCk7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW1zTWF0Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoZXMucHVzaCguLi5pdGVtc01hdGNoZXMubWFwKGMgPT4gW21lbnVJdGVtLCAuLi5jXSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF0Y2hlcztcbiAgICB9XG5cbiAgICByZXNldCgpIHtcbiAgICAgICAgdGhpcy5yZXNldFNvdXJjZS5uZXh0KHRydWUpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,45 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { Injectable, inject } from '@angular/core';
3
+ import { ReplaySubject } from 'rxjs';
4
+ import { CommonsConfigurationService, LoggerService } from '@mediusinc/mng-commons/core';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common/http";
7
+ import * as i2 from "@mediusinc/mng-commons/core";
8
+ export class VersionService {
9
+ constructor(http, configurationService) {
10
+ this.http = http;
11
+ this.configurationService = configurationService;
12
+ this.logger = inject(LoggerService).create('VersionService');
13
+ this.cache = {};
14
+ }
15
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
16
+ loadVersion(path, baseConfigKey, jsonPath = '$') {
17
+ const urlSegments = [];
18
+ if (baseConfigKey) {
19
+ const baseUrl = this.configurationService.getConfigValue(baseConfigKey);
20
+ urlSegments.push(baseUrl.endsWith('/') ? baseUrl.substring(0, baseUrl.length - 1) : baseUrl);
21
+ }
22
+ if (path) {
23
+ urlSegments.push(!path.startsWith('/') ? `/${path}` : path);
24
+ }
25
+ const url = urlSegments.join('');
26
+ if (!this.cache[url]) {
27
+ this.cache[url] = new ReplaySubject(1);
28
+ this.http.get(urlSegments.join('')).subscribe({
29
+ next: res => {
30
+ this.cache[url].next(res);
31
+ },
32
+ error: err => {
33
+ this.logger.error('Version could not be retreived', err);
34
+ }
35
+ });
36
+ }
37
+ return this.cache[url].asObservable();
38
+ }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: VersionService, deps: [{ token: i1.HttpClient }, { token: i2.CommonsConfigurationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
40
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: VersionService }); }
41
+ }
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: VersionService, decorators: [{
43
+ type: Injectable
44
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.CommonsConfigurationService }] });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy92ZXJzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQU8sRUFBYSxhQUFhLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFL0MsT0FBTyxFQUFDLDJCQUEyQixFQUFFLGFBQWEsRUFBQyxNQUFNLDZCQUE2QixDQUFDOzs7O0FBR3ZGLE1BQU0sT0FBTyxjQUFjO0lBSXZCLFlBQ1ksSUFBZ0IsRUFDaEIsb0JBQWlEO1FBRGpELFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUE2QjtRQUw1QyxXQUFNLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2pFLFVBQUssR0FBNEMsRUFBRSxDQUFDO0lBS3pELENBQUM7SUFFSiw2REFBNkQ7SUFDdEQsV0FBVyxDQUFDLElBQVksRUFBRSxhQUFzQixFQUFFLFFBQVEsR0FBRyxHQUFHO1FBQ25FLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLGFBQWEsRUFBRTtZQUNmLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDeEUsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNoRztRQUNELElBQUksSUFBSSxFQUFFO1lBQ04sV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQy9EO1FBQ0QsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksYUFBYSxDQUFVLENBQUMsQ0FBQyxDQUFDO1lBRWhELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQzFDLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRTtvQkFDUixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDOUIsQ0FBQztnQkFDRCxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7b0JBQ1QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQzdELENBQUM7YUFDSixDQUFDLENBQUM7U0FDTjtRQUVELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQyxDQUFDOzhHQWxDUSxjQUFjO2tIQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0h0dHBDbGllbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7SW5qZWN0YWJsZSwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0fSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtDb21tb25zQ29uZmlndXJhdGlvblNlcnZpY2UsIExvZ2dlclNlcnZpY2V9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBWZXJzaW9uU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBpbmplY3QoTG9nZ2VyU2VydmljZSkuY3JlYXRlKCdWZXJzaW9uU2VydmljZScpO1xuICAgIHByaXZhdGUgY2FjaGU6IHtba2V5OiBzdHJpbmddOiBSZXBsYXlTdWJqZWN0PHVua25vd24+fSA9IHt9O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uU2VydmljZTogQ29tbW9uc0NvbmZpZ3VyYXRpb25TZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIHB1YmxpYyBsb2FkVmVyc2lvbihwYXRoOiBzdHJpbmcsIGJhc2VDb25maWdLZXk/OiBzdHJpbmcsIGpzb25QYXRoID0gJyQnKTogT2JzZXJ2YWJsZTx1bmtub3duPiB7XG4gICAgICAgIGNvbnN0IHVybFNlZ21lbnRzID0gW107XG4gICAgICAgIGlmIChiYXNlQ29uZmlnS2V5KSB7XG4gICAgICAgICAgICBjb25zdCBiYXNlVXJsID0gdGhpcy5jb25maWd1cmF0aW9uU2VydmljZS5nZXRDb25maWdWYWx1ZShiYXNlQ29uZmlnS2V5KTtcbiAgICAgICAgICAgIHVybFNlZ21lbnRzLnB1c2goYmFzZVVybC5lbmRzV2l0aCgnLycpID8gYmFzZVVybC5zdWJzdHJpbmcoMCwgYmFzZVVybC5sZW5ndGggLSAxKSA6IGJhc2VVcmwpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXRoKSB7XG4gICAgICAgICAgICB1cmxTZWdtZW50cy5wdXNoKCFwYXRoLnN0YXJ0c1dpdGgoJy8nKSA/IGAvJHtwYXRofWAgOiBwYXRoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1cmwgPSB1cmxTZWdtZW50cy5qb2luKCcnKTtcbiAgICAgICAgaWYgKCF0aGlzLmNhY2hlW3VybF0pIHtcbiAgICAgICAgICAgIHRoaXMuY2FjaGVbdXJsXSA9IG5ldyBSZXBsYXlTdWJqZWN0PHVua25vd24+KDEpO1xuXG4gICAgICAgICAgICB0aGlzLmh0dHAuZ2V0KHVybFNlZ21lbnRzLmpvaW4oJycpKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVbdXJsXS5uZXh0KHJlcyk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ1ZlcnNpb24gY291bGQgbm90IGJlIHJldHJlaXZlZCcsIGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5jYWNoZVt1cmxdLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaXVzaW5jLW1uZy1jb21tb25zLWxheW91dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZWRpdXNpbmMtbW5nLWNvbW1vbnMtbGF5b3V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19