@mediusinc/mng-commons-layout 6.0.0-rc.5 → 6.0.0-rc.6

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 (195) hide show
  1. package/components/pages/error/index.d.ts +1 -3
  2. package/components/pages/not-found/index.d.ts +1 -3
  3. package/fesm2022/mediusinc-mng-commons-layout-components-pages-error.mjs +6 -7
  4. package/fesm2022/mediusinc-mng-commons-layout-components-pages-error.mjs.map +1 -1
  5. package/fesm2022/mediusinc-mng-commons-layout-components-pages-main.mjs +3 -3
  6. package/fesm2022/mediusinc-mng-commons-layout-components-pages-main.mjs.map +1 -1
  7. package/fesm2022/mediusinc-mng-commons-layout-components-pages-not-found.mjs +6 -7
  8. package/fesm2022/mediusinc-mng-commons-layout-components-pages-not-found.mjs.map +1 -1
  9. package/fesm2022/mediusinc-mng-commons-layout-components.mjs +62 -58
  10. package/fesm2022/mediusinc-mng-commons-layout-components.mjs.map +1 -1
  11. package/fesm2022/mediusinc-mng-commons-layout.mjs +21 -14
  12. package/fesm2022/mediusinc-mng-commons-layout.mjs.map +1 -1
  13. package/package.json +11 -21
  14. package/scss/commons.scss +1 -0
  15. package/scss/layout/_breadcrumb.scss +14 -11
  16. package/scss/layout/_config.scss +75 -7
  17. package/scss/layout/_content.scss +1 -1
  18. package/scss/layout/_main.scss +7 -9
  19. package/scss/layout/_profile.scss +1 -1
  20. package/scss/layout/_responsive.scss +4 -2
  21. package/scss/layout/_sass_variables.scss +1 -0
  22. package/scss/layout/_sidebar_drawer.scss +6 -5
  23. package/scss/layout/_sidebar_horizontal.scss +15 -11
  24. package/scss/layout/_sidebar_reveal.scss +16 -10
  25. package/scss/layout/_sidebar_slim.scss +5 -3
  26. package/scss/layout/_sidebar_slim_plus.scss +5 -2
  27. package/scss/layout/_sidebar_vertical.scss +13 -7
  28. package/scss/layout/_topbar.scss +75 -45
  29. package/scss/layout/_utils.scss +1 -5
  30. package/scss/layout/layout.scss +29 -22
  31. package/scss/layout/mng/{_mng_layout_menu.scss → layout/_mng_layout_menu.scss} +0 -4
  32. package/scss/layout/mng/{_mng_layout_topbar.scss → layout/_mng_layout_topbar.scss} +2 -2
  33. package/scss/layout/mng/theme/_mng_theme_button.scss +63 -0
  34. package/scss/{theme/theme-base/mng → layout/mng/theme}/_mng_theme_dialog.scss +44 -46
  35. package/scss/{theme/theme-base/mng → layout/mng/theme}/_mng_theme_toast.scss +4 -4
  36. package/scss/layout/mng/theme/_mng_theme_toggleswitch.scss +3 -0
  37. package/scss/layout/mng/variables/_mng-variables-common.scss +22 -0
  38. package/scss/layout/variables/_common.scss +15 -0
  39. package/scss/layout/variables/_dark.scss +10 -0
  40. package/scss/layout/variables/_light.scss +10 -0
  41. package/version-info.json +3 -3
  42. package/esm2022/components/index.mjs +0 -12
  43. package/esm2022/components/lib/components/breadcrumb.component.mjs +0 -29
  44. package/esm2022/components/lib/components/footer.component.mjs +0 -23
  45. package/esm2022/components/lib/components/main-layout.component.mjs +0 -86
  46. package/esm2022/components/lib/components/menu-item.component.mjs +0 -169
  47. package/esm2022/components/lib/components/menu.component.mjs +0 -36
  48. package/esm2022/components/lib/components/settings.component.mjs +0 -87
  49. package/esm2022/components/lib/components/sidebar.component.mjs +0 -51
  50. package/esm2022/components/lib/components/topbar-user.component.mjs +0 -51
  51. package/esm2022/components/lib/components/topbar.component.mjs +0 -37
  52. package/esm2022/components/lib/components/version.component.mjs +0 -95
  53. package/esm2022/components/mediusinc-mng-commons-layout-components.mjs +0 -5
  54. package/esm2022/components/pages/error/index.mjs +0 -4
  55. package/esm2022/components/pages/error/lib/error.page.component.mjs +0 -20
  56. package/esm2022/components/pages/error/mediusinc-mng-commons-layout-components-pages-error.mjs +0 -5
  57. package/esm2022/components/pages/main/index.mjs +0 -3
  58. package/esm2022/components/pages/main/lazy/index.mjs +0 -2
  59. package/esm2022/components/pages/main/lazy/lib/route-builder.mjs +0 -11
  60. package/esm2022/components/pages/main/lazy/mediusinc-mng-commons-layout-components-pages-main-lazy.mjs +0 -5
  61. package/esm2022/components/pages/main/lib/main-layout.component.mjs +0 -84
  62. package/esm2022/components/pages/main/lib/route-builder.mjs +0 -12
  63. package/esm2022/components/pages/main/mediusinc-mng-commons-layout-components-pages-main.mjs +0 -5
  64. package/esm2022/components/pages/not-found/index.mjs +0 -4
  65. package/esm2022/components/pages/not-found/lib/not-found.page.component.mjs +0 -20
  66. package/esm2022/components/pages/not-found/mediusinc-mng-commons-layout-components-pages-not-found.mjs +0 -5
  67. package/esm2022/index.mjs +0 -13
  68. package/esm2022/lib/helpers/menu-items.mjs +0 -29
  69. package/esm2022/lib/models/layout-state.model.mjs +0 -2
  70. package/esm2022/lib/models/menu.model.mjs +0 -2
  71. package/esm2022/lib/provide.mjs +0 -25
  72. package/esm2022/lib/services/layout-feature-config.token.mjs +0 -3
  73. package/esm2022/lib/services/layout.service.mjs +0 -167
  74. package/esm2022/lib/services/menu.service.mjs +0 -121
  75. package/esm2022/lib/services/version.service.mjs +0 -45
  76. package/esm2022/mediusinc-mng-commons-layout.mjs +0 -5
  77. package/scss/commons-dark.scss +0 -9
  78. package/scss/commons-light.scss +0 -9
  79. package/scss/layout/_animation.scss +0 -53
  80. package/scss/layout/_fonts.scss +0 -40
  81. package/scss/layout/_layout_dark.scss +0 -12
  82. package/scss/layout/_layout_light.scss +0 -12
  83. package/scss/layout/_typography.scss +0 -67
  84. package/scss/layout/mng/_mng_layout_styles.scss +0 -4
  85. package/scss/layout/preloading.scss +0 -84
  86. package/scss/theme/extensions/_fullcalendar.scss +0 -328
  87. package/scss/theme/theme-base/_colors.scss +0 -17
  88. package/scss/theme/theme-base/_common.scss +0 -76
  89. package/scss/theme/theme-base/_components.scss +0 -110
  90. package/scss/theme/theme-base/_mixins.scss +0 -337
  91. package/scss/theme/theme-base/components/button/_button.scss +0 -576
  92. package/scss/theme/theme-base/components/button/_speeddial.scss +0 -96
  93. package/scss/theme/theme-base/components/button/_splitbutton.scss +0 -348
  94. package/scss/theme/theme-base/components/data/_carousel.scss +0 -37
  95. package/scss/theme/theme-base/components/data/_datatable.scss +0 -338
  96. package/scss/theme/theme-base/components/data/_dataview.scss +0 -46
  97. package/scss/theme/theme-base/components/data/_filter.scss +0 -137
  98. package/scss/theme/theme-base/components/data/_orderlist.scss +0 -114
  99. package/scss/theme/theme-base/components/data/_organizationchart.scss +0 -50
  100. package/scss/theme/theme-base/components/data/_paginator.scss +0 -92
  101. package/scss/theme/theme-base/components/data/_picklist.scss +0 -114
  102. package/scss/theme/theme-base/components/data/_timeline.scss +0 -35
  103. package/scss/theme/theme-base/components/data/_tree.scss +0 -150
  104. package/scss/theme/theme-base/components/data/_treetable.scss +0 -255
  105. package/scss/theme/theme-base/components/data/_virtualscroller.scss +0 -28
  106. package/scss/theme/theme-base/components/file/_fileupload.scss +0 -64
  107. package/scss/theme/theme-base/components/input/_autocomplete.scss +0 -136
  108. package/scss/theme/theme-base/components/input/_calendar.scss +0 -267
  109. package/scss/theme/theme-base/components/input/_cascadeselect.scss +0 -135
  110. package/scss/theme/theme-base/components/input/_checkbox.scss +0 -94
  111. package/scss/theme/theme-base/components/input/_chips.scss +0 -65
  112. package/scss/theme/theme-base/components/input/_colorpicker.scss +0 -19
  113. package/scss/theme/theme-base/components/input/_dropdown.scss +0 -151
  114. package/scss/theme/theme-base/components/input/_editor.scss +0 -122
  115. package/scss/theme/theme-base/components/input/_inputgroup.scss +0 -74
  116. package/scss/theme/theme-base/components/input/_inputmask.scss +0 -16
  117. package/scss/theme/theme-base/components/input/_inputnumber.scss +0 -28
  118. package/scss/theme/theme-base/components/input/_inputswitch.scss +0 -60
  119. package/scss/theme/theme-base/components/input/_inputtext.scss +0 -100
  120. package/scss/theme/theme-base/components/input/_listbox.scss +0 -97
  121. package/scss/theme/theme-base/components/input/_multiselect.scss +0 -177
  122. package/scss/theme/theme-base/components/input/_password.scss +0 -52
  123. package/scss/theme/theme-base/components/input/_radiobutton.scss +0 -78
  124. package/scss/theme/theme-base/components/input/_rating.scss +0 -60
  125. package/scss/theme/theme-base/components/input/_selectbutton.scss +0 -50
  126. package/scss/theme/theme-base/components/input/_slider.scss +0 -75
  127. package/scss/theme/theme-base/components/input/_togglebutton.scss +0 -48
  128. package/scss/theme/theme-base/components/input/_treeselect.scss +0 -139
  129. package/scss/theme/theme-base/components/menu/_breadcrumb.scss +0 -42
  130. package/scss/theme/theme-base/components/menu/_contextmenu.scss +0 -39
  131. package/scss/theme/theme-base/components/menu/_dock.scss +0 -95
  132. package/scss/theme/theme-base/components/menu/_megamenu.scss +0 -55
  133. package/scss/theme/theme-base/components/menu/_menu.scss +0 -37
  134. package/scss/theme/theme-base/components/menu/_menubar.scss +0 -140
  135. package/scss/theme/theme-base/components/menu/_panelmenu.scss +0 -153
  136. package/scss/theme/theme-base/components/menu/_slidemenu.scss +0 -59
  137. package/scss/theme/theme-base/components/menu/_steps.scss +0 -56
  138. package/scss/theme/theme-base/components/menu/_tabmenu.scss +0 -73
  139. package/scss/theme/theme-base/components/menu/_tieredmenu.scss +0 -43
  140. package/scss/theme/theme-base/components/messages/_inlinemessage.scss +0 -69
  141. package/scss/theme/theme-base/components/messages/_message.scss +0 -107
  142. package/scss/theme/theme-base/components/messages/_toast.scss +0 -99
  143. package/scss/theme/theme-base/components/misc/_avatar.scss +0 -30
  144. package/scss/theme/theme-base/components/misc/_badge.scss +0 -48
  145. package/scss/theme/theme-base/components/misc/_blockui.scss +0 -0
  146. package/scss/theme/theme-base/components/misc/_chip.scss +0 -42
  147. package/scss/theme/theme-base/components/misc/_inplace.scss +0 -16
  148. package/scss/theme/theme-base/components/misc/_progressbar.scss +0 -17
  149. package/scss/theme/theme-base/components/misc/_scrolltop.scss +0 -25
  150. package/scss/theme/theme-base/components/misc/_skeleton.scss +0 -8
  151. package/scss/theme/theme-base/components/misc/_tag.scss +0 -40
  152. package/scss/theme/theme-base/components/misc/_terminal.scss +0 -12
  153. package/scss/theme/theme-base/components/multimedia/_galleria.scss +0 -155
  154. package/scss/theme/theme-base/components/multimedia/_image.scss +0 -49
  155. package/scss/theme/theme-base/components/overlay/_confirmpopup.scss +0 -70
  156. package/scss/theme/theme-base/components/overlay/_dialog.scss +0 -69
  157. package/scss/theme/theme-base/components/overlay/_overlaypanel.scss +0 -62
  158. package/scss/theme/theme-base/components/overlay/_sidebar.scss +0 -27
  159. package/scss/theme/theme-base/components/overlay/_tooltip.scss +0 -33
  160. package/scss/theme/theme-base/components/panel/_accordion.scss +0 -119
  161. package/scss/theme/theme-base/components/panel/_card.scss +0 -30
  162. package/scss/theme/theme-base/components/panel/_divider.scss +0 -31
  163. package/scss/theme/theme-base/components/panel/_fieldset.scss +0 -47
  164. package/scss/theme/theme-base/components/panel/_panel.scss +0 -63
  165. package/scss/theme/theme-base/components/panel/_scrollpanel.scss +0 -6
  166. package/scss/theme/theme-base/components/panel/_splitter.scss +0 -19
  167. package/scss/theme/theme-base/components/panel/_tabview.scss +0 -82
  168. package/scss/theme/theme-base/components/panel/_toolbar.scss +0 -11
  169. package/scss/theme/theme-base/mng/_mng_mixins.scss +0 -69
  170. package/scss/theme/theme-base/mng/_mng_theme_autocomplete.scss +0 -34
  171. package/scss/theme/theme-base/mng/_mng_theme_button.scss +0 -68
  172. package/scss/theme/theme-base/mng/_mng_theme_datatable.scss +0 -157
  173. package/scss/theme/theme-base/mng/_mng_theme_datepicker.scss +0 -21
  174. package/scss/theme/theme-base/mng/_mng_theme_dropdown.scss +0 -32
  175. package/scss/theme/theme-base/mng/_mng_theme_fileupload.scss +0 -24
  176. package/scss/theme/theme-base/mng/_mng_theme_forms.scss +0 -66
  177. package/scss/theme/theme-base/mng/_mng_theme_image.scss +0 -27
  178. package/scss/theme/theme-base/mng/_mng_theme_input.scss +0 -42
  179. package/scss/theme/theme-base/mng/_mng_theme_menu.scss +0 -5
  180. package/scss/theme/theme-base/mng/_mng_theme_multiselect.scss +0 -20
  181. package/scss/theme/theme-base/mng/_mng_theme_styles.scss +0 -19
  182. package/scss/theme/theme-base/mng/_mng_theme_table.scss +0 -54
  183. package/scss/theme/theme-base/mng/_mng_theme_tableview.scss +0 -41
  184. package/scss/theme/theme-base/mng/_mng_theme_tabview.scss +0 -14
  185. package/scss/theme/theme-base/mng/_mng_theme_tag.scss +0 -11
  186. package/scss/theme/theme-base/mng/_mng_theme_toolbar.scss +0 -5
  187. package/scss/theme/theme-base/mng/_mng_variables.scss +0 -15
  188. package/scss/theme/theme-dark/_extensions.scss +0 -109
  189. package/scss/theme/theme-dark/_variables.scss +0 -941
  190. package/scss/theme/theme-dark/blue/theme.scss +0 -14
  191. package/scss/theme/theme-light/_extensions.scss +0 -109
  192. package/scss/theme/theme-light/_variables.scss +0 -937
  193. package/scss/theme/theme-light/blue/theme.scss +0 -14
  194. /package/scss/layout/mng/{_mng_layout_footer.scss → layout/_mng_layout_footer.scss} +0 -0
  195. /package/scss/layout/mng/{_mng_sidebar_vertical.scss → layout/_mng_sidebar_vertical.scss} +0 -0
@@ -1,167 +0,0 @@
1
- import { DOCUMENT } from '@angular/common';
2
- import { Injectable, PLATFORM_ID, afterNextRender, computed, effect, inject, signal } from '@angular/core';
3
- import { Subject } from 'rxjs';
4
- import { COMMONS_MODULE_CONFIG_IT, CommonsStorageService } from '@mediusinc/mng-commons/core';
5
- import { COMMONS_LAYOUT_FEATURE_CONFIG_IT } from './layout-feature-config.token';
6
- import * as i0 from "@angular/core";
7
- export class LayoutService {
8
- getInitColorScheme() {
9
- let colorScheme = this.storageService.getItem(this.typeName, this.storageColorSchemeKey);
10
- if (colorScheme == null || !['dark', 'light', 'auto'].includes(colorScheme)) {
11
- colorScheme = this.getDefaultColorScheme();
12
- }
13
- return colorScheme;
14
- }
15
- getInitActualColorScheme(colorScheme) {
16
- if (colorScheme === 'auto') {
17
- return window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
18
- }
19
- else {
20
- return colorScheme;
21
- }
22
- }
23
- getDefaultColorScheme() {
24
- return this.config?.colorScheme ?? 'auto';
25
- }
26
- setColorScheme(scheme) {
27
- const defaultColorScheme = this.getDefaultColorScheme();
28
- if (scheme === defaultColorScheme) {
29
- this.storageService.removeItem(this.typeName, this.storageColorSchemeKey);
30
- }
31
- else {
32
- this.storageService.setItem(this.typeName, this.storageColorSchemeKey, scheme);
33
- }
34
- this._colorSchemeSetting.set(scheme);
35
- this._colorScheme.set(this.getInitActualColorScheme(scheme));
36
- }
37
- constructor() {
38
- this.typeName = 'MainLayoutComponentService';
39
- this.storageMenuModeKey = 'menuMode';
40
- this.storageColorSchemeKey = 'colorScheme';
41
- this.platformId = inject(PLATFORM_ID);
42
- this.document = inject(DOCUMENT);
43
- this.commonsConfig = inject(COMMONS_MODULE_CONFIG_IT, { optional: true });
44
- this.config = inject(COMMONS_LAYOUT_FEATURE_CONFIG_IT, { optional: true });
45
- this.storageService = inject(CommonsStorageService);
46
- this.state = signal({
47
- staticMenuDesktopInactive: false,
48
- overlayMenuActive: false,
49
- rightMenuActive: false,
50
- configSidebarVisible: false,
51
- staticMenuMobileActive: false,
52
- menuHoverActive: false,
53
- sidebarActive: false,
54
- anchored: false
55
- });
56
- this.overlayOpen = new Subject();
57
- this.overlayOpen$ = this.overlayOpen.asObservable();
58
- // color scheme
59
- this._colorSchemeSetting = signal(this.getInitColorScheme());
60
- this.colorSchemeSetting = this._colorSchemeSetting.asReadonly();
61
- this._colorScheme = signal(this.getInitActualColorScheme(this.colorSchemeSetting()));
62
- this.colorScheme = this._colorScheme.asReadonly();
63
- this.colorSchemeIsLight = computed(() => this._colorScheme() === 'light');
64
- // menu mode
65
- this.menuModes = this.config?.menuModes ?? ['static', 'overlay', 'reveal', 'drawer', 'slim', 'slim-plus'];
66
- this._menuMode = signal(this.initMenuMode());
67
- this.menuMode = this._menuMode.asReadonly();
68
- // logos
69
- this.appLogoLight = signal(this.config?.logoPathLight ?? this.config?.logoPath ?? 'assets/layout/images/logo.png');
70
- this.appLogoDark = signal(this.config?.logoPathLight ?? this.config?.logoPath ?? 'assets/layout/images/logo.png');
71
- this.appLogo = computed(() => (this.colorSchemeIsLight() ? this.appLogoLight() : this.appLogoDark()));
72
- this.appLogoNameLight = signal(this.config?.logoNamePathLight ?? this.config?.logoNamePath ?? 'assets/layout/images/logo-appname.png');
73
- this.appLogoNameDark = signal(this.config?.logoNamePathDark ?? this.config?.logoNamePath ?? 'assets/layout/images/logo-appname.png');
74
- this.appLogoName = computed(() => (this.colorSchemeIsLight() ? this.appLogoNameLight() : this.appLogoNameDark()));
75
- // overlays
76
- this.isOverlay = computed(() => this.menuMode() === 'overlay');
77
- this.isSlim = computed(() => this.menuMode() === 'slim');
78
- this.isSlimPlus = computed(() => this.menuMode() === 'slim-plus');
79
- // used for managing the submenu dropdown overlay in slim and slim+ layouts
80
- this.submenuOverlayKey = signal(undefined);
81
- afterNextRender(() => {
82
- window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => {
83
- if (this.colorSchemeSetting() === 'auto') {
84
- const newColorScheme = event.matches ? 'dark' : 'light';
85
- this._colorScheme.set(newColorScheme);
86
- }
87
- });
88
- });
89
- effect(() => {
90
- const colorScheme = this._colorScheme();
91
- const linkElement = this.document.getElementById('app-theme');
92
- if (colorScheme === 'dark' && linkElement?.href.includes('light')) {
93
- linkElement.href = 'theme-dark.css';
94
- }
95
- else if (colorScheme === 'light' && linkElement?.href.includes('dark')) {
96
- linkElement.href = 'theme-light.css';
97
- }
98
- });
99
- }
100
- onMenuModeChange(mode) {
101
- if (!this.menuModes.includes(mode)) {
102
- return;
103
- }
104
- if (mode === this.config?.menuMode) {
105
- this.storageService.removeItem(this.typeName, this.storageMenuModeKey);
106
- }
107
- else {
108
- this.storageService.setItem(this.typeName, this.storageMenuModeKey, mode);
109
- }
110
- this._menuMode.set(mode);
111
- }
112
- onMenuToggle() {
113
- if (this.isOverlay()) {
114
- this.state.update(state => ({
115
- ...state,
116
- overlayMenuActive: !state.overlayMenuActive
117
- }));
118
- if (this.state().overlayMenuActive) {
119
- this.overlayOpen.next(null);
120
- }
121
- }
122
- if (this.isDesktop()) {
123
- this.state.update(state => ({
124
- ...state,
125
- staticMenuDesktopInactive: !state.staticMenuDesktopInactive
126
- }));
127
- }
128
- else {
129
- this.state.update(state => ({
130
- ...state,
131
- staticMenuMobileActive: !state.staticMenuMobileActive
132
- }));
133
- if (this.state().staticMenuMobileActive) {
134
- this.overlayOpen.next(null);
135
- }
136
- }
137
- }
138
- onOverlaySubmenuOpen(key) {
139
- if (this.submenuOverlayKey() === key) {
140
- return;
141
- }
142
- this.submenuOverlayKey.set(key);
143
- this.overlayOpen.next(null);
144
- }
145
- onOverlaySubmenuClose() {
146
- this.submenuOverlayKey.set(undefined);
147
- }
148
- isDesktop() {
149
- return window.innerWidth > 991;
150
- }
151
- isMobile() {
152
- return !this.isDesktop();
153
- }
154
- initMenuMode() {
155
- const lsMode = this.storageService.getItem(this.typeName, this.storageMenuModeKey);
156
- if (lsMode && this.menuModes.includes(lsMode)) {
157
- return lsMode;
158
- }
159
- return this.config?.menuMode ?? 'static';
160
- }
161
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: LayoutService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
162
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: LayoutService }); }
163
- }
164
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: LayoutService, decorators: [{
165
- type: Injectable
166
- }], ctorParameters: () => [] });
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2xheW91dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpHLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFN0IsT0FBTyxFQUFDLHdCQUF3QixFQUFFLHFCQUFxQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFHNUYsT0FBTyxFQUFDLGdDQUFnQyxFQUE4QixNQUFNLCtCQUErQixDQUFDOztBQUc1RyxNQUFNLE9BQU8sYUFBYTtJQWdDZCxrQkFBa0I7UUFDdEIsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQWMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN0RyxJQUFJLFdBQVcsSUFBSSxJQUFJLElBQUksQ0FBRSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFtQixDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQzdGLFdBQVcsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMvQyxDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztJQUVPLHdCQUF3QixDQUFDLFdBQXdCO1FBQ3JELElBQUksV0FBVyxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3pCLE9BQU8sTUFBTSxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxN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QVEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNuRyxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzVDLE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxJQUFJLFFBQVEsQ0FBQztJQUM3QyxDQUFDOytHQTlLUSxhQUFhO21IQUFiLGFBQWE7OzRGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtJbmplY3RhYmxlLCBQTEFURk9STV9JRCwgYWZ0ZXJOZXh0UmVuZGVyLCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIHNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7U3ViamVjdH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7Q09NTU9OU19NT0RVTEVfQ09ORklHX0lULCBDb21tb25zU3RvcmFnZVNlcnZpY2V9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5cbmltcG9ydCB7TGF5b3V0U3RhdGV9IGZyb20gJy4uL21vZGVscy9sYXlvdXQtc3RhdGUubW9kZWwnO1xuaW1wb3J0IHtDT01NT05TX0xBWU9VVF9GRUFUVVJFX0NPTkZJR19JVCwgQ29sb3JTY2hlbWUsIExheW91dE1lbnVNb2RlfSBmcm9tICcuL2xheW91dC1mZWF0dXJlLWNvbmZpZy50b2tlbic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBMYXlvdXRTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHR5cGVOYW1lID0gJ01haW5MYXlvdXRDb21wb25lbnRTZXJ2aWNlJztcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2VNZW51TW9kZUtleSA9ICdtZW51TW9kZSc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlQ29sb3JTY2hlbWVLZXkgPSAnY29sb3JTY2hlbWUnO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbW1vbnNDb25maWcgPSBpbmplY3QoQ09NTU9OU19NT0RVTEVfQ09ORklHX0lULCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdChDT01NT05TX0xBWU9VVF9GRUFUVVJFX0NPTkZJR19JVCwge29wdGlvbmFsOiB0cnVlfSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlU2VydmljZSA9IGluamVjdChDb21tb25zU3RvcmFnZVNlcnZpY2UpO1xuXG4gICAgcHVibGljIHN0YXRlID0gc2lnbmFsPExheW91dFN0YXRlPih7XG4gICAgICAgIHN0YXRpY01lbnVEZXNrdG9wSW5hY3RpdmU6IGZhbHNlLFxuICAgICAgICBvdmVybGF5TWVudUFjdGl2ZTogZmFsc2UsXG4gICAgICAgIHJpZ2h0TWVudUFjdGl2ZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ1NpZGViYXJWaXNpYmxlOiBmYWxzZSxcbiAgICAgICAgc3RhdGljTWVudU1vYmlsZUFjdGl2ZTogZmFsc2UsXG4gICAgICAgIG1lbnVIb3ZlckFjdGl2ZTogZmFsc2UsXG4gICAgICAgIHNpZGViYXJBY3RpdmU6IGZhbHNlLFxuICAgICAgICBhbmNob3JlZDogZmFsc2VcbiAgICB9KTtcblxuICAgIHByaXZhdGUgb3ZlcmxheU9wZW4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gICAgcHVibGljIG92ZXJsYXlPcGVuJCA9IHRoaXMub3ZlcmxheU9wZW4uYXNPYnNlcnZhYmxlKCk7XG5cbiAgICAvLyBjb2xvciBzY2hlbWVcbiAgICBwcml2YXRlIF9jb2xvclNjaGVtZVNldHRpbmcgPSBzaWduYWwodGhpcy5nZXRJbml0Q29sb3JTY2hlbWUoKSk7XG4gICAgcHVibGljIGNvbG9yU2NoZW1lU2V0dGluZyA9IHRoaXMuX2NvbG9yU2NoZW1lU2V0dGluZy5hc1JlYWRvbmx5KCk7XG4gICAgcHJpdmF0ZSBfY29sb3JTY2hlbWUgPSBzaWduYWw8RXhjbHVkZTxDb2xvclNjaGVtZSwgJ3N5c3RlbSc+Pih0aGlzLmdldEluaXRBY3R1YWxDb2xvclNjaGVtZSh0aGlzLmNvbG9yU2NoZW1lU2V0dGluZygpKSk7XG4gICAgcHVibGljIGNvbG9yU2NoZW1lID0gdGhpcy5fY29sb3JTY2hlbWUuYXNSZWFkb25seSgpO1xuICAgIHB1YmxpYyBjb2xvclNjaGVtZUlzTGlnaHQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9jb2xvclNjaGVtZSgpID09PSAnbGlnaHQnKTtcblxuICAgIHByaXZhdGUgZ2V0SW5pdENvbG9yU2NoZW1lKCk6IENvbG9yU2NoZW1lIHtcbiAgICAgICAgbGV0IGNvbG9yU2NoZW1lID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRJdGVtPENvbG9yU2NoZW1lPih0aGlzLnR5cGVOYW1lLCB0aGlzLnN0b3JhZ2VDb2xvclNjaGVtZUtleSk7XG4gICAgICAgIGlmIChjb2xvclNjaGVtZSA9PSBudWxsIHx8ICEoWydkYXJrJywgJ2xpZ2h0JywgJ2F1dG8nXSBhcyBDb2xvclNjaGVtZVtdKS5pbmNsdWRlcyhjb2xvclNjaGVtZSkpIHtcbiAgICAgICAgICAgIGNvbG9yU2NoZW1lID0gdGhpcy5nZXREZWZhdWx0Q29sb3JTY2hlbWUoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29sb3JTY2hlbWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRJbml0QWN0dWFsQ29sb3JTY2hlbWUoY29sb3JTY2hlbWU6IENvbG9yU2NoZW1lKTogRXhjbHVkZTxDb2xvclNjaGVtZSwgJ3N5c3RlbSc+IHtcbiAgICAgICAgaWYgKGNvbG9yU2NoZW1lID09PSAnYXV0bycpIHtcbiAgICAgICAgICAgIHJldHVybiB3aW5kb3cubWF0Y2hNZWRpYSAmJiB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpLm1hdGNoZXMgPyAnZGFyaycgOiAnbGlnaHQnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGNvbG9yU2NoZW1lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREZWZhdWx0Q29sb3JTY2hlbWUoKTogQ29sb3JTY2hlbWUge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWc/LmNvbG9yU2NoZW1lID8/ICdhdXRvJztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0Q29sb3JTY2hlbWUoc2NoZW1lOiBDb2xvclNjaGVtZSkge1xuICAgICAgICBjb25zdCBkZWZhdWx0Q29sb3JTY2hlbWUgPSB0aGlzLmdldERlZmF1bHRDb2xvclNjaGVtZSgpO1xuICAgICAgICBpZiAoc2NoZW1lID09PSBkZWZhdWx0Q29sb3JTY2hlbWUpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UucmVtb3ZlSXRlbSh0aGlzLnR5cGVOYW1lLCB0aGlzLnN0b3JhZ2VDb2xvclNjaGVtZUtleSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0odGhpcy50eXBlTmFtZSwgdGhpcy5zdG9yYWdlQ29sb3JTY2hlbWVLZXksIHNjaGVtZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY29sb3JTY2hlbWVTZXR0aW5nLnNldChzY2hlbWUpO1xuICAgICAgICB0aGlzLl9jb2xvclNjaGVtZS5zZXQodGhpcy5nZXRJbml0QWN0dWFsQ29sb3JTY2hlbWUoc2NoZW1lKSk7XG4gICAgfVxuXG4gICAgLy8gbWVudSBtb2RlXG4gICAgcHVibGljIHJlYWRvbmx5IG1lbnVNb2RlczogTGF5b3V0TWVudU1vZGVbXSA9IHRoaXMuY29uZmlnPy5tZW51TW9kZXMgPz8gWydzdGF0aWMnLCAnb3ZlcmxheScsICdyZXZlYWwnLCAnZHJhd2VyJywgJ3NsaW0nLCAnc2xpbS1wbHVzJ107XG4gICAgcHJpdmF0ZSBfbWVudU1vZGUgPSBzaWduYWwodGhpcy5pbml0TWVudU1vZGUoKSk7XG4gICAgcHVibGljIG1lbnVNb2RlID0gdGhpcy5fbWVudU1vZGUuYXNSZWFkb25seSgpO1xuXG4gICAgLy8gbG9nb3NcbiAgICBwcml2YXRlIGFwcExvZ29MaWdodCA9IHNpZ25hbCh0aGlzLmNvbmZpZz8ubG9nb1BhdGhMaWdodCA/PyB0aGlzLmNvbmZpZz8ubG9nb1BhdGggPz8gJ2Fzc2V0cy9sYXlvdXQvaW1hZ2VzL2xvZ28ucG5nJyk7XG4gICAgcHJpdmF0ZSBhcHBMb2dvRGFyayA9IHNpZ25hbCh0aGlzLmNvbmZpZz8ubG9nb1BhdGhMaWdodCA/PyB0aGlzLmNvbmZpZz8ubG9nb1BhdGggPz8gJ2Fzc2V0cy9sYXlvdXQvaW1hZ2VzL2xvZ28ucG5nJyk7XG4gICAgcHVibGljIGFwcExvZ28gPSBjb21wdXRlZCgoKSA9PiAodGhpcy5jb2xvclNjaGVtZUlzTGlnaHQoKSA/IHRoaXMuYXBwTG9nb0xpZ2h0KCkgOiB0aGlzLmFwcExvZ29EYXJrKCkpKTtcblxuICAgIHByaXZhdGUgYXBwTG9nb05hbWVMaWdodCA9IHNpZ25hbCh0aGlzLmNvbmZpZz8ubG9nb05hbWVQYXRoTGlnaHQgPz8gdGhpcy5jb25maWc/LmxvZ29OYW1lUGF0aCA/PyAnYXNzZXRzL2xheW91dC9pbWFnZXMvbG9nby1hcHBuYW1lLnBuZycpO1xuICAgIHByaXZhdGUgYXBwTG9nb05hbWVEYXJrID0gc2lnbmFsKHRoaXMuY29uZmlnPy5sb2dvTmFtZVBhdGhEYXJrID8/IHRoaXMuY29uZmlnPy5sb2dvTmFtZVBhdGggPz8gJ2Fzc2V0cy9sYXlvdXQvaW1hZ2VzL2xvZ28tYXBwbmFtZS5wbmcnKTtcbiAgICBwdWJsaWMgYXBwTG9nb05hbWUgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5jb2xvclNjaGVtZUlzTGlnaHQoKSA/IHRoaXMuYXBwTG9nb05hbWVMaWdodCgpIDogdGhpcy5hcHBMb2dvTmFtZURhcmsoKSkpO1xuXG4gICAgLy8gb3ZlcmxheXNcbiAgICBwdWJsaWMgaXNPdmVybGF5ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5tZW51TW9kZSgpID09PSAnb3ZlcmxheScpO1xuICAgIHB1YmxpYyBpc1NsaW0gPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1lbnVNb2RlKCkgPT09ICdzbGltJyk7XG4gICAgcHVibGljIGlzU2xpbVBsdXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1lbnVNb2RlKCkgPT09ICdzbGltLXBsdXMnKTtcblxuICAgIC8vIHVzZWQgZm9yIG1hbmFnaW5nIHRoZSBzdWJtZW51IGRyb3Bkb3duIG92ZXJsYXkgaW4gc2xpbSBhbmQgc2xpbSsgbGF5b3V0c1xuICAgIHB1YmxpYyBzdWJtZW51T3ZlcmxheUtleSA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICAgICAgICAgIHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJykuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbG9yU2NoZW1lU2V0dGluZygpID09PSAnYXV0bycpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3Q29sb3JTY2hlbWUgPSBldmVudC5tYXRjaGVzID8gJ2RhcmsnIDogJ2xpZ2h0JztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29sb3JTY2hlbWUuc2V0KG5ld0NvbG9yU2NoZW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbG9yU2NoZW1lID0gdGhpcy5fY29sb3JTY2hlbWUoKTtcbiAgICAgICAgICAgIGNvbnN0IGxpbmtFbGVtZW50ID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXBwLXRoZW1lJykgYXMgSFRNTExpbmtFbGVtZW50IHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKGNvbG9yU2NoZW1lID09PSAnZGFyaycgJiYgbGlua0VsZW1lbnQ/LmhyZWYuaW5jbHVkZXMoJ2xpZ2h0JykpIHtcbiAgICAgICAgICAgICAgICBsaW5rRWxlbWVudC5ocmVmID0gJ3RoZW1lLWRhcmsuY3NzJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29sb3JTY2hlbWUgPT09ICdsaWdodCcgJiYgbGlua0VsZW1lbnQ/LmhyZWYuaW5jbHVkZXMoJ2RhcmsnKSkge1xuICAgICAgICAgICAgICAgIGxpbmtFbGVtZW50LmhyZWYgPSAndGhlbWUtbGlnaHQuY3NzJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25NZW51TW9kZUNoYW5nZShtb2RlOiBMYXlvdXRNZW51TW9kZSkge1xuICAgICAgICBpZiAoIXRoaXMubWVudU1vZGVzLmluY2x1ZGVzKG1vZGUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1vZGUgPT09IHRoaXMuY29uZmlnPy5tZW51TW9kZSkge1xuICAgICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVJdGVtKHRoaXMudHlwZU5hbWUsIHRoaXMuc3RvcmFnZU1lbnVNb2RlS2V5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSh0aGlzLnR5cGVOYW1lLCB0aGlzLnN0b3JhZ2VNZW51TW9kZUtleSwgbW9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbWVudU1vZGUuc2V0KG1vZGUpO1xuICAgIH1cblxuICAgIG9uTWVudVRvZ2dsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPdmVybGF5KCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUudXBkYXRlKHN0YXRlID0+ICh7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgb3ZlcmxheU1lbnVBY3RpdmU6ICFzdGF0ZS5vdmVybGF5TWVudUFjdGl2ZVxuICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0ZSgpLm92ZXJsYXlNZW51QWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5T3Blbi5uZXh0KG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEZXNrdG9wKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUudXBkYXRlKHN0YXRlID0+ICh7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgc3RhdGljTWVudURlc2t0b3BJbmFjdGl2ZTogIXN0YXRlLnN0YXRpY01lbnVEZXNrdG9wSW5hY3RpdmVcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUudXBkYXRlKHN0YXRlID0+ICh7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgc3RhdGljTWVudU1vYmlsZUFjdGl2ZTogIXN0YXRlLnN0YXRpY01lbnVNb2JpbGVBY3RpdmVcbiAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGUoKS5zdGF0aWNNZW51TW9iaWxlQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5T3Blbi5uZXh0KG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25PdmVybGF5U3VibWVudU9wZW4oa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuc3VibWVudU92ZXJsYXlLZXkoKSA9PT0ga2V5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN1Ym1lbnVPdmVybGF5S2V5LnNldChrZXkpO1xuICAgICAgICB0aGlzLm92ZXJsYXlPcGVuLm5leHQobnVsbCk7XG4gICAgfVxuXG4gICAgb25PdmVybGF5U3VibWVudUNsb3NlKCkge1xuICAgICAgICB0aGlzLnN1Ym1lbnVPdmVybGF5S2V5LnNldCh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIGlzRGVza3RvcCgpIHtcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoID4gOTkxO1xuICAgIH1cblxuICAgIGlzTW9iaWxlKCkge1xuICAgICAgICByZXR1cm4gIXRoaXMuaXNEZXNrdG9wKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0TWVudU1vZGUoKTogTGF5b3V0TWVudU1vZGUge1xuICAgICAgICBjb25zdCBsc01vZGUgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW08TGF5b3V0TWVudU1vZGU+KHRoaXMudHlwZU5hbWUsIHRoaXMuc3RvcmFnZU1lbnVNb2RlS2V5KTtcbiAgICAgICAgaWYgKGxzTW9kZSAmJiB0aGlzLm1lbnVNb2Rlcy5pbmNsdWRlcyhsc01vZGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gbHNNb2RlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZz8ubWVudU1vZGUgPz8gJ3N0YXRpYyc7XG4gICAgfVxufVxuIl19
@@ -1,121 +0,0 @@
1
- import { DestroyRef, Injectable, inject, signal } from '@angular/core';
2
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
- import { NavigationEnd, Router } from '@angular/router';
4
- import { ReplaySubject, startWith, take } from 'rxjs';
5
- import { filter, map } from 'rxjs/operators';
6
- import { CommonsRouterService, LoggerService, adjustRouteMenuLazyChildrenRouterLinks, doesUrlMatchRouterLink } from '@mediusinc/mng-commons/core';
7
- import { prepareMenuItemsToInternal } from '../helpers/menu-items';
8
- import * as i0 from "@angular/core";
9
- export class MenuService {
10
- constructor() {
11
- this.destroyRef = inject(DestroyRef);
12
- this.logger = LoggerService.create('MenuService');
13
- this.router = inject(Router);
14
- this.commonsRouter = inject(CommonsRouterService);
15
- this._menuItems = signal([]);
16
- this.menuItems = this._menuItems.asReadonly();
17
- this.menuChangeSubject = new ReplaySubject(1);
18
- this.menuChange$ = this.menuChangeSubject.asObservable();
19
- this.routeLoadedChildrenSubscriptions = [];
20
- }
21
- setItems(menuItems) {
22
- this.routeLoadedChildrenSubscriptions.forEach(s => s.unsubscribe());
23
- this.routeLoadedChildrenSubscriptions = [];
24
- this._menuItems.set(prepareMenuItemsToInternal(menuItems));
25
- this.appendListenersToLazyChildren(this._menuItems());
26
- this.router.events
27
- .pipe(startWith(new NavigationEnd(0, this.router.url, this.router.url)), filter(event => event instanceof NavigationEnd), map(e => e), takeUntilDestroyed(this.destroyRef))
28
- .subscribe(e => this.findAndSetActiveMenuItem(e.urlAfterRedirects));
29
- }
30
- appendListenersToLazyChildren(menuItems) {
31
- menuItems.forEach(item => {
32
- if (item.lazyChildren()) {
33
- this.listenToMenuItemLazyChildrenLoad(item);
34
- }
35
- else if (item.items()) {
36
- this.appendListenersToLazyChildren(item.items());
37
- }
38
- });
39
- }
40
- findAndSetActiveMenuItem(url) {
41
- const matches = this.findActiveRouteMatches(this.menuItems(), url);
42
- if (matches.length === 0) {
43
- this.reset();
44
- }
45
- else {
46
- const matchKey = matches[0][matches[0].length - 1].key;
47
- if (matchKey) {
48
- this.menuChangeSubject.next({
49
- key: matchKey,
50
- eventType: 'routeChange'
51
- });
52
- }
53
- else {
54
- this.logger.warn(`Found active menu item for url ${url}, but item key is not present`, matches);
55
- this.reset();
56
- }
57
- if (matches.length > 1) {
58
- this.logger.warn(`Multiple active menu items found for url ${url}`, matches);
59
- }
60
- }
61
- }
62
- listenToMenuItemLazyChildrenLoad(menuItem) {
63
- this.routeLoadedChildrenSubscriptions.push(this.commonsRouter
64
- .getRouteLoadedChildren$(menuItem.routerLink ?? '/')
65
- .pipe(take(1))
66
- .subscribe({
67
- next: routes => {
68
- const menuItemsFromRoutes = routes
69
- .filter(r => Array.isArray(r.data?.menuItems))
70
- .flatMap(r => r.data.menuItems);
71
- const menuItems = adjustRouteMenuLazyChildrenRouterLinks(menuItem, menuItemsFromRoutes);
72
- menuItem.items.set(prepareMenuItemsToInternal(menuItems, menuItem.key));
73
- this.appendListenersToLazyChildren(menuItem.items());
74
- menuItem.itemsVisibility.set(menuItem.items()?.map(() => signal(true)));
75
- menuItem.lazyChildren.set(false);
76
- this.findAndSetActiveMenuItem(this.router.url);
77
- }
78
- }));
79
- }
80
- findActiveRouteMatches(menuItems, url) {
81
- const matches = [];
82
- for (const menuItem of menuItems) {
83
- const children = menuItem.items();
84
- if (menuItem.routerLink) {
85
- const isActive = doesUrlMatchRouterLink(menuItem.routerLink, url);
86
- if (isActive) {
87
- if (Array.isArray(children)) {
88
- const itemsMatches = this.findActiveRouteMatches(children, url);
89
- if (itemsMatches.length > 0) {
90
- matches.push(...itemsMatches.map(c => [menuItem, ...c]));
91
- }
92
- else {
93
- matches.push([menuItem]);
94
- }
95
- }
96
- else {
97
- matches.push([menuItem]);
98
- }
99
- }
100
- }
101
- else if (Array.isArray(children)) {
102
- const itemsMatches = this.findActiveRouteMatches(children, url);
103
- if (itemsMatches.length > 0) {
104
- matches.push(...itemsMatches.map(c => [menuItem, ...c]));
105
- }
106
- }
107
- }
108
- return matches;
109
- }
110
- reset() {
111
- this.menuChangeSubject.next({
112
- eventType: 'reset'
113
- });
114
- }
115
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: MenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
116
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: MenuService }); }
117
- }
118
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: MenuService, decorators: [{
119
- type: Injectable
120
- }] });
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9tZW51LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsYUFBYSxFQUFFLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRXRELE9BQU8sRUFBQyxhQUFhLEVBQWdCLFNBQVMsRUFBRSxJQUFJLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBR0gsb0JBQW9CLEVBRXBCLGFBQWEsRUFDYixzQ0FBc0MsRUFDdEMsc0JBQXNCLEVBQ3pCLE1BQU0sNkJBQTZCLENBQUM7QUFFckMsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7O0FBSWpFLE1BQU0sT0FBTyxXQUFXO0lBRHhCO1FBRXFCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsV0FBTSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0MsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRTdDLGVBQVUsR0FBRyxNQUFNLENBQTRCLEVBQUUsQ0FBQyxDQUFDO1FBQzdELGNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRS9CLHNCQUFpQixHQUFHLElBQUksYUFBYSxDQUFrQixDQUFDLENBQUMsQ0FBQztRQUMzRSxn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QUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM3RCxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSztRQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7WUFDeEIsU0FBUyxFQUFFLE9BQU87U0FDckIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0F0SFEsV0FBVzttSEFBWCxXQUFXOzs0RkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEZXN0cm95UmVmLCBJbmplY3RhYmxlLCBpbmplY3QsIHNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtOYXZpZ2F0aW9uRW5kLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7UmVwbGF5U3ViamVjdCwgU3Vic2NyaXB0aW9uLCBzdGFydFdpdGgsIHRha2V9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaWx0ZXIsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICAgIENvbW1vbnNNZW51SXRlbSxcbiAgICBDb21tb25zUm91dGVEYXRhLFxuICAgIENvbW1vbnNSb3V0ZXJTZXJ2aWNlLFxuICAgIEludGVybmFsQ29tbW9uc01lbnVJdGVtLFxuICAgIExvZ2dlclNlcnZpY2UsXG4gICAgYWRqdXN0Um91dGVNZW51TGF6eUNoaWxkcmVuUm91dGVyTGlua3MsXG4gICAgZG9lc1VybE1hdGNoUm91dGVyTGlua1xufSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5pbXBvcnQge3ByZXBhcmVNZW51SXRlbXNUb0ludGVybmFsfSBmcm9tICcuLi9oZWxwZXJzL21lbnUtaXRlbXMnO1xuaW1wb3J0IHtNZW51Q2hhbmdlRXZlbnR9IGZyb20gJy4uL21vZGVscy9tZW51Lm1vZGVsJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1lbnVTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBMb2dnZXJTZXJ2aWNlLmNyZWF0ZSgnTWVudVNlcnZpY2UnKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29tbW9uc1JvdXRlciA9IGluamVjdChDb21tb25zUm91dGVyU2VydmljZSk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9tZW51SXRlbXMgPSBzaWduYWw8SW50ZXJuYWxDb21tb25zTWVudUl0ZW1bXT4oW10pO1xuICAgIHB1YmxpYyBtZW51SXRlbXMgPSB0aGlzLl9tZW51SXRlbXMuYXNSZWFkb25seSgpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZW51Q2hhbmdlU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PE1lbnVDaGFuZ2VFdmVudD4oMSk7XG4gICAgbWVudUNoYW5nZSQgPSB0aGlzLm1lbnVDaGFuZ2VTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgcHJpdmF0ZSByb3V0ZUxvYWRlZENoaWxkcmVuU3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICAgIHNldEl0ZW1zKG1lbnVJdGVtczogQXJyYXk8Q29tbW9uc01lbnVJdGVtPikge1xuICAgICAgICB0aGlzLnJvdXRlTG9hZGVkQ2hpbGRyZW5TdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgICAgICB0aGlzLnJvdXRlTG9hZGVkQ2hpbGRyZW5TdWJzY3JpcHRpb25zID0gW107XG5cbiAgICAgICAgdGhpcy5fbWVudUl0ZW1zLnNldChwcmVwYXJlTWVudUl0ZW1zVG9JbnRlcm5hbChtZW51SXRlbXMpKTtcbiAgICAgICAgdGhpcy5hcHBlbmRMaXN0ZW5lcnNUb0xhenlDaGlsZHJlbih0aGlzLl9tZW51SXRlbXMoKSk7XG5cbiAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgobmV3IE5hdmlnYXRpb25FbmQoMCwgdGhpcy5yb3V0ZXIudXJsLCB0aGlzLnJvdXRlci51cmwpKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcbiAgICAgICAgICAgICAgICBtYXAoZSA9PiBlIGFzIE5hdmlnYXRpb25FbmQpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGUgPT4gdGhpcy5maW5kQW5kU2V0QWN0aXZlTWVudUl0ZW0oKGUgYXMgTmF2aWdhdGlvbkVuZCkudXJsQWZ0ZXJSZWRpcmVjdHMpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGVuZExpc3RlbmVyc1RvTGF6eUNoaWxkcmVuKG1lbnVJdGVtczogSW50ZXJuYWxDb21tb25zTWVudUl0ZW1bXSkge1xuICAgICAgICBtZW51SXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLmxhenlDaGlsZHJlbigpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0ZW5Ub01lbnVJdGVtTGF6eUNoaWxkcmVuTG9hZChpdGVtKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS5pdGVtcygpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRMaXN0ZW5lcnNUb0xhenlDaGlsZHJlbihpdGVtLml0ZW1zKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRBbmRTZXRBY3RpdmVNZW51SXRlbSh1cmw6IHN0cmluZykge1xuICAgICAgICBjb25zdCBtYXRjaGVzID0gdGhpcy5maW5kQWN0aXZlUm91dGVNYXRjaGVzKHRoaXMubWVudUl0ZW1zKCksIHVybCk7XG4gICAgICAgIGlmIChtYXRjaGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hLZXkgPSBtYXRjaGVzWzBdW21hdGNoZXNbMF0ubGVuZ3RoIC0gMV0ua2V5O1xuICAgICAgICAgICAgaWYgKG1hdGNoS2V5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51Q2hhbmdlU3ViamVjdC5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBtYXRjaEtleSxcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRUeXBlOiAncm91dGVDaGFuZ2UnXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLndhcm4oYEZvdW5kIGFjdGl2ZSBtZW51IGl0ZW0gZm9yIHVybCAke3VybH0sIGJ1dCBpdGVtIGtleSBpcyBub3QgcHJlc2VudGAsIG1hdGNoZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG1hdGNoZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLndhcm4oYE11bHRpcGxlIGFjdGl2ZSBtZW51IGl0ZW1zIGZvdW5kIGZvciB1cmwgJHt1cmx9YCwgbWF0Y2hlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGxpc3RlblRvTWVudUl0ZW1MYXp5Q2hpbGRyZW5Mb2FkKG1lbnVJdGVtOiBJbnRlcm5hbENvbW1vbnNNZW51SXRlbSkge1xuICAgICAgICB0aGlzLnJvdXRlTG9hZGVkQ2hpbGRyZW5TdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNSb3V0ZXJcbiAgICAgICAgICAgICAgICAuZ2V0Um91dGVMb2FkZWRDaGlsZHJlbiQobWVudUl0ZW0ucm91dGVyTGluayA/PyAnLycpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dDogcm91dGVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lbnVJdGVtc0Zyb21Sb3V0ZXMgPSByb3V0ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKHIgPT4gQXJyYXkuaXNBcnJheSgoci5kYXRhIGFzIENvbW1vbnNSb3V0ZURhdGEgfCB1bmRlZmluZWQpPy5tZW51SXRlbXMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mbGF0TWFwKHIgPT4gKHIuZGF0YSBhcyBDb21tb25zUm91dGVEYXRhKS5tZW51SXRlbXMhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lbnVJdGVtcyA9IGFkanVzdFJvdXRlTWVudUxhenlDaGlsZHJlblJvdXRlckxpbmtzKG1lbnVJdGVtLCBtZW51SXRlbXNGcm9tUm91dGVzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgbWVudUl0ZW0uaXRlbXMuc2V0KHByZXBhcmVNZW51SXRlbXNUb0ludGVybmFsKG1lbnVJdGVtcywgbWVudUl0ZW0ua2V5KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZExpc3RlbmVyc1RvTGF6eUNoaWxkcmVuKG1lbnVJdGVtLml0ZW1zKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVudUl0ZW0uaXRlbXNWaXNpYmlsaXR5LnNldChtZW51SXRlbS5pdGVtcygpPy5tYXAoKCkgPT4gc2lnbmFsKHRydWUpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZW51SXRlbS5sYXp5Q2hpbGRyZW4uc2V0KGZhbHNlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5kQW5kU2V0QWN0aXZlTWVudUl0ZW0odGhpcy5yb3V0ZXIudXJsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kQWN0aXZlUm91dGVNYXRjaGVzKG1lbnVJdGVtczogQXJyYXk8SW50ZXJuYWxDb21tb25zTWVudUl0ZW0+LCB1cmw6IHN0cmluZyk6IEludGVybmFsQ29tbW9uc01lbnVJdGVtW11bXSB7XG4gICAgICAgIGNvbnN0IG1hdGNoZXM6IEludGVybmFsQ29tbW9uc01lbnVJdGVtW11bXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IG1lbnVJdGVtIG9mIG1lbnVJdGVtcykge1xuICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBtZW51SXRlbS5pdGVtcygpO1xuICAgICAgICAgICAgaWYgKG1lbnVJdGVtLnJvdXRlckxpbmspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IGRvZXNVcmxNYXRjaFJvdXRlckxpbmsobWVudUl0ZW0ucm91dGVyTGluaywgdXJsKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtc01hdGNoZXMgPSB0aGlzLmZpbmRBY3RpdmVSb3V0ZU1hdGNoZXMoY2hpbGRyZW4sIHVybCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbXNNYXRjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVzLnB1c2goLi4uaXRlbXNNYXRjaGVzLm1hcChjID0+IFttZW51SXRlbSwgLi4uY10pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcy5wdXNoKFttZW51SXRlbV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcy5wdXNoKFttZW51SXRlbV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zTWF0Y2hlcyA9IHRoaXMuZmluZEFjdGl2ZVJvdXRlTWF0Y2hlcyhjaGlsZHJlbiwgdXJsKTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbXNNYXRjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcy5wdXNoKC4uLml0ZW1zTWF0Y2hlcy5tYXAoYyA9PiBbbWVudUl0ZW0sIC4uLmNdKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXRjaGVzO1xuICAgIH1cblxuICAgIHJlc2V0KCkge1xuICAgICAgICB0aGlzLm1lbnVDaGFuZ2VTdWJqZWN0Lm5leHQoe1xuICAgICAgICAgICAgZXZlbnRUeXBlOiAncmVzZXQnXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,45 +0,0 @@
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: "18.2.12", 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: "18.2.12", ngImport: i0, type: VersionService }); }
41
- }
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: VersionService, decorators: [{
43
- type: Injectable
44
- }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.CommonsConfigurationService }] });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy92ZXJzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQU8sRUFBYSxhQUFhLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFL0MsT0FBTyxFQUFDLDJCQUEyQixFQUFFLGFBQWEsRUFBQyxNQUFNLDZCQUE2QixDQUFDOzs7O0FBR3ZGLE1BQU0sT0FBTyxjQUFjO0lBSXZCLFlBQ1ksSUFBZ0IsRUFDaEIsb0JBQWlEO1FBRGpELFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUE2QjtRQUw1QyxXQUFNLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2pFLFVBQUssR0FBNEMsRUFBRSxDQUFDO0lBS3pELENBQUM7SUFFSiw2REFBNkQ7SUFDdEQsV0FBVyxDQUFDLElBQVksRUFBRSxhQUFzQixFQUFFLFFBQVEsR0FBRyxHQUFHO1FBQ25FLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDeEUsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqRyxDQUFDO1FBQ0QsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNQLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxhQUFhLENBQVUsQ0FBQyxDQUFDLENBQUM7WUFFaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDMUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFO29CQUNSLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM5QixDQUFDO2dCQUNELEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRTtvQkFDVCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDN0QsQ0FBQzthQUNKLENBQUMsQ0FBQztRQUNQLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUMsQ0FBQzsrR0FsQ1EsY0FBYzttSEFBZCxjQUFjOzs0RkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge0luamVjdGFibGUsIGluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7T2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7Q29tbW9uc0NvbmZpZ3VyYXRpb25TZXJ2aWNlLCBMb2dnZXJTZXJ2aWNlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVmVyc2lvblNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gaW5qZWN0KExvZ2dlclNlcnZpY2UpLmNyZWF0ZSgnVmVyc2lvblNlcnZpY2UnKTtcbiAgICBwcml2YXRlIGNhY2hlOiB7W2tleTogc3RyaW5nXTogUmVwbGF5U3ViamVjdDx1bmtub3duPn0gPSB7fTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgICAgIHByaXZhdGUgY29uZmlndXJhdGlvblNlcnZpY2U6IENvbW1vbnNDb25maWd1cmF0aW9uU2VydmljZVxuICAgICkge31cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBwdWJsaWMgbG9hZFZlcnNpb24ocGF0aDogc3RyaW5nLCBiYXNlQ29uZmlnS2V5Pzogc3RyaW5nLCBqc29uUGF0aCA9ICckJyk6IE9ic2VydmFibGU8dW5rbm93bj4ge1xuICAgICAgICBjb25zdCB1cmxTZWdtZW50cyA9IFtdO1xuICAgICAgICBpZiAoYmFzZUNvbmZpZ0tleSkge1xuICAgICAgICAgICAgY29uc3QgYmFzZVVybCA9IHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2UuZ2V0Q29uZmlnVmFsdWUoYmFzZUNvbmZpZ0tleSk7XG4gICAgICAgICAgICB1cmxTZWdtZW50cy5wdXNoKGJhc2VVcmwuZW5kc1dpdGgoJy8nKSA/IGJhc2VVcmwuc3Vic3RyaW5nKDAsIGJhc2VVcmwubGVuZ3RoIC0gMSkgOiBiYXNlVXJsKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF0aCkge1xuICAgICAgICAgICAgdXJsU2VnbWVudHMucHVzaCghcGF0aC5zdGFydHNXaXRoKCcvJykgPyBgLyR7cGF0aH1gIDogcGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXJsID0gdXJsU2VnbWVudHMuam9pbignJyk7XG4gICAgICAgIGlmICghdGhpcy5jYWNoZVt1cmxdKSB7XG4gICAgICAgICAgICB0aGlzLmNhY2hlW3VybF0gPSBuZXcgUmVwbGF5U3ViamVjdDx1bmtub3duPigxKTtcblxuICAgICAgICAgICAgdGhpcy5odHRwLmdldCh1cmxTZWdtZW50cy5qb2luKCcnKSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiByZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhY2hlW3VybF0ubmV4dChyZXMpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdWZXJzaW9uIGNvdWxkIG5vdCBiZSByZXRyZWl2ZWQnLCBlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGVbdXJsXS5hc09ic2VydmFibGUoKTtcbiAgICB9XG59XG4iXX0=
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaXVzaW5jLW1uZy1jb21tb25zLWxheW91dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZWRpdXNpbmMtbW5nLWNvbW1vbnMtbGF5b3V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -1,9 +0,0 @@
1
- $multiselectHighlightBg: rgba(68, 72, 109, 0.12) !default;
2
- $multiselectHighlightTextColor: #44486d;
3
-
4
- $baseHref: '/' !default;
5
-
6
- // theme and layout
7
- @import 'theme/theme-dark/blue/theme';
8
- @import 'theme/theme-base/mng/mng_variables';
9
- @import 'layout/layout.scss';
@@ -1,9 +0,0 @@
1
- $multiselectHighlightBg: rgba(68, 72, 109, 0.12) !default;
2
- $multiselectHighlightTextColor: #44486d;
3
-
4
- $baseHref: '/' !default;
5
-
6
- // theme and layout
7
- @import 'theme/theme-light/blue/theme';
8
- @import 'theme/theme-base/mng/mng_variables';
9
- @import 'layout/layout.scss';
@@ -1,53 +0,0 @@
1
- @keyframes px-mask-in {
2
- from {
3
- background-color: transparent;
4
- }
5
-
6
- to {
7
- background-color: var(--maskbg);
8
- }
9
- }
10
-
11
- @keyframes px-scalein {
12
- 0% {
13
- opacity: 0;
14
- transform: scaleY(0.8);
15
- }
16
-
17
- 100% {
18
- opacity: 1;
19
- transform: scaleY(1);
20
- }
21
- }
22
-
23
- @keyframes px-fadein {
24
- 0% {
25
- opacity: 0;
26
- }
27
-
28
- 100% {
29
- opacity: 1;
30
- }
31
- }
32
-
33
- @keyframes px-fadeout {
34
- 0% {
35
- opacity: 1;
36
- }
37
-
38
- 100% {
39
- opacity: 0;
40
- }
41
- }
42
-
43
- .px-scalein {
44
- animation: px-scalein 0.12s cubic-bezier(0, 0, 0.2, 1);
45
- }
46
-
47
- .px-fadein {
48
- animation: px-fadein 0.15s linear;
49
- }
50
-
51
- .px-fadeout {
52
- animation: px-fadeout 0.15s linear;
53
- }
@@ -1,40 +0,0 @@
1
- /* poppins-regular - latin */
2
- @font-face {
3
- font-family: 'Poppins';
4
- font-style: normal;
5
- font-weight: 400;
6
- src:
7
- local(''),
8
- url('../../../assets/fonts/poppins-v20-latin-regular.woff2') format('woff2'),
9
- /* Chrome 26+, Opera 23+, Firefox 39+ */ url('../../../assets/fonts/poppins-v20-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
10
- }
11
- /* poppins-500 - latin */
12
- @font-face {
13
- font-family: 'Poppins';
14
- font-style: normal;
15
- font-weight: 500;
16
- src:
17
- local(''),
18
- url('../../../assets/fonts/poppins-v20-latin-500.woff2') format('woff2'),
19
- /* Chrome 26+, Opera 23+, Firefox 39+ */ url('../../../assets/fonts/poppins-v20-latin-500.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
20
- }
21
- /* poppins-600 - latin */
22
- @font-face {
23
- font-family: 'Poppins';
24
- font-style: normal;
25
- font-weight: 600;
26
- src:
27
- local(''),
28
- url('../../../assets/fonts/poppins-v20-latin-600.woff2') format('woff2'),
29
- /* Chrome 26+, Opera 23+, Firefox 39+ */ url('../../../assets/fonts/poppins-v20-latin-600.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
30
- }
31
- /* poppins-700 - latin */
32
- @font-face {
33
- font-family: 'Poppins';
34
- font-style: normal;
35
- font-weight: 700;
36
- src:
37
- local(''),
38
- url('../../../assets/fonts/poppins-v20-latin-700.woff2') format('woff2'),
39
- /* Chrome 26+, Opera 23+, Firefox 39+ */ url('../../../assets/fonts/poppins-v20-latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
40
- }
@@ -1,12 +0,0 @@
1
- $breakpoint: 992px !default;
2
- $scale: 14px !default;
3
-
4
- .layout-dark {
5
- --sidebar-shadow: none;
6
- --sidebar-border: 1px solid var(--surface-border);
7
- --card-shadow: none;
8
- --body-bg: linear-gradient(180deg, #2e323f 0%, #0a061a 100%);
9
- --body-image: url('#{$baseHref}assets/images/mng/effect-ondark.png');
10
- --root-menu-item-hover-bg: rgba(255, 255, 255, 0.05);
11
- --exception-pages-image: url('#{$baseHref}assets/images/mng/pages/exception-ondark.png');
12
- }
@@ -1,12 +0,0 @@
1
- $breakpoint: 992px !default;
2
- $scale: 14px !default;
3
-
4
- .layout-light {
5
- --sidebar-shadow: 0px 4px 50px #d9ddfc;
6
- --sidebar-border: 1px solid transparent;
7
- --card-shadow: 0px 4px 30px rgba(221, 224, 255, 0.54);
8
- --body-bg: linear-gradient(180deg, #f6f9fc 0%, #ececf9 100%);
9
- --body-image: url('#{$baseHref}assets/images/mng/effect-onlight.png');
10
- --root-menu-item-hover-bg: rgba(68, 72, 109, 0.07);
11
- --exception-pages-image: url('#{$baseHref}assets/images/mng/pages/exception-onlight.png');
12
- }
@@ -1,67 +0,0 @@
1
- h1,
2
- h2,
3
- h3,
4
- h4,
5
- h5,
6
- h6 {
7
- margin: 1.5rem 0 1rem 0;
8
- font-family: inherit;
9
- font-weight: 600;
10
- line-height: 1.2;
11
-
12
- &:first-child {
13
- margin-top: 0;
14
- }
15
- }
16
-
17
- h1 {
18
- font-size: 2.5rem;
19
- }
20
-
21
- h2 {
22
- font-size: 2rem;
23
- }
24
-
25
- h3 {
26
- font-size: 1.75rem;
27
- }
28
-
29
- h4 {
30
- font-size: 1.5rem;
31
- }
32
-
33
- h5 {
34
- font-size: 1.25rem;
35
- }
36
-
37
- h6 {
38
- font-size: 1rem;
39
- }
40
-
41
- mark {
42
- background: #fff8e1;
43
- padding: 0.25rem 0.4rem;
44
- border-radius: var(--border-radius);
45
- font-family: monospace;
46
- }
47
-
48
- blockquote {
49
- margin: 1rem 0;
50
- padding: 0 2rem;
51
- border-left: 4px solid #90a4ae;
52
- }
53
-
54
- hr {
55
- border-top: solid var(--surface-border);
56
- border-width: 1px 0 0 0;
57
- margin: 1rem 0;
58
- }
59
-
60
- p {
61
- margin: 0 0 1rem 0;
62
- line-height: 1.5;
63
-
64
- &:last-child {
65
- margin-bottom: 0;
66
- }
67
- }
@@ -1,4 +0,0 @@
1
- @import 'mng_layout_menu';
2
- @import 'mng_layout_topbar';
3
- @import 'mng_layout_footer';
4
- @import 'mng_sidebar_vertical';