@mediusinc/mng-commons-layout 5.3.0-rc.0 → 5.3.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/index.mjs +4 -2
- package/esm2022/lib/components/footer.component.mjs +5 -3
- package/esm2022/lib/components/main-layout.component.mjs +11 -12
- package/esm2022/lib/components/menu-item.component.mjs +13 -13
- package/esm2022/lib/components/menu.component.mjs +4 -4
- package/esm2022/lib/components/pages/error/error.page.component.mjs +20 -0
- package/esm2022/lib/components/pages/not-found/not-found.page.component.mjs +20 -0
- package/esm2022/lib/components/settings.component.mjs +46 -8
- package/esm2022/lib/components/sidebar.component.mjs +11 -12
- package/esm2022/lib/components/topbar-user.component.mjs +11 -5
- package/esm2022/lib/components/topbar.component.mjs +4 -4
- package/esm2022/lib/helpers/menu-items.mjs +2 -2
- package/esm2022/lib/provide.mjs +3 -1
- package/esm2022/lib/services/layout-feature-config.token.mjs +1 -1
- package/esm2022/lib/services/layout.service.mjs +166 -0
- package/esm2022/lib/services/menu.service.mjs +2 -2
- package/fesm2022/mediusinc-mng-commons-layout.mjs +284 -143
- package/fesm2022/mediusinc-mng-commons-layout.mjs.map +1 -1
- package/index.d.ts +3 -1
- package/lib/components/footer.component.d.ts +2 -0
- package/lib/components/main-layout.component.d.ts +2 -4
- package/lib/components/menu-item.component.d.ts +1 -1
- package/lib/components/menu.component.d.ts +1 -1
- package/lib/components/pages/error/error.page.component.d.ts +7 -0
- package/lib/components/pages/not-found/not-found.page.component.d.ts +7 -0
- package/lib/components/settings.component.d.ts +11 -3
- package/lib/components/sidebar.component.d.ts +2 -4
- package/lib/components/topbar-user.component.d.ts +2 -0
- package/lib/components/topbar.component.d.ts +2 -2
- package/lib/services/layout-feature-config.token.d.ts +72 -0
- package/lib/services/layout.service.d.ts +46 -0
- package/package.json +2 -2
- package/scss/theme/theme-base/_components.scss +2 -2
- package/scss/theme/theme-base/mng/_mng_theme_datatable.scss +4 -0
- package/scss/theme/theme-base/mng/_mng_theme_input.scss +5 -0
- package/scss/theme/theme-base/mng/_mng_theme_styles.scss +1 -0
- package/scss/theme/theme-base/mng/_mng_theme_tableview.scss +4 -0
- package/scss/theme/theme-base/mng/_mng_theme_tag.scss +11 -0
- package/version-info.json +5 -5
- package/esm2022/lib/services/main-layout.component.service.mjs +0 -91
- package/lib/services/main-layout.component.service.d.ts +0 -26
|
@@ -0,0 +1,166 @@
|
|
|
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 ?? this.commonsConfig?.app?.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.commonsConfig?.app?.logoPathLight ?? this.config?.logoPath ?? this.commonsConfig?.app?.logoPath ?? 'assets/layout/images/logo.png');
|
|
70
|
+
this.appLogoDark = signal(this.config?.logoPathLight ?? this.commonsConfig?.app?.logoPathDark ?? this.config?.logoPath ?? this.commonsConfig?.app?.logoPath ?? 'assets/layout/images/logo.png');
|
|
71
|
+
this.appLogo = computed(() => (this.colorSchemeIsLight() ? this.appLogoLight() : this.appLogoDark()));
|
|
72
|
+
this.appLogoNameLight = signal(this.config?.logoNamePathLight ??
|
|
73
|
+
this.commonsConfig?.app?.logoNamePathLight ??
|
|
74
|
+
this.config?.logoNamePath ??
|
|
75
|
+
this.commonsConfig?.app?.logoNamePath ??
|
|
76
|
+
'assets/layout/images/logo-appname.png');
|
|
77
|
+
this.appLogoNameDark = signal(this.config?.logoNamePathDark ??
|
|
78
|
+
this.commonsConfig?.app?.logoNamePathDark ??
|
|
79
|
+
this.config?.logoNamePath ??
|
|
80
|
+
this.commonsConfig?.app?.logoNamePath ??
|
|
81
|
+
'assets/layout/images/logo-appname.png');
|
|
82
|
+
this.appLogoName = computed(() => (this.colorSchemeIsLight() ? this.appLogoNameLight() : this.appLogoNameDark()));
|
|
83
|
+
// overlays
|
|
84
|
+
this.isOverlay = computed(() => this.menuMode() === 'overlay');
|
|
85
|
+
this.isSlim = computed(() => this.menuMode() === 'slim');
|
|
86
|
+
this.isSlimPlus = computed(() => this.menuMode() === 'slim-plus');
|
|
87
|
+
afterNextRender(() => {
|
|
88
|
+
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => {
|
|
89
|
+
if (this.colorSchemeSetting() === 'auto') {
|
|
90
|
+
const newColorScheme = event.matches ? 'dark' : 'light';
|
|
91
|
+
this._colorScheme.set(newColorScheme);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
effect(() => {
|
|
96
|
+
const colorScheme = this._colorScheme();
|
|
97
|
+
const linkElement = this.document.getElementById('app-theme');
|
|
98
|
+
if (colorScheme === 'dark' && linkElement.href.includes('light')) {
|
|
99
|
+
linkElement.href = 'theme-dark.css';
|
|
100
|
+
}
|
|
101
|
+
else if (colorScheme === 'light' && linkElement.href.includes('dark')) {
|
|
102
|
+
linkElement.href = 'theme-light.css';
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
onMenuModeChange(mode) {
|
|
107
|
+
if (!this.menuModes.includes(mode)) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
if (mode === this.config?.menuMode) {
|
|
111
|
+
this.storageService.removeItem(this.typeName, this.storageMenuModeKey);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
this.storageService.setItem(this.typeName, this.storageMenuModeKey, mode);
|
|
115
|
+
}
|
|
116
|
+
this._menuMode.set(mode);
|
|
117
|
+
}
|
|
118
|
+
onMenuToggle() {
|
|
119
|
+
if (this.isOverlay()) {
|
|
120
|
+
this.state.update(state => ({
|
|
121
|
+
...state,
|
|
122
|
+
overlayMenuActive: !state.overlayMenuActive
|
|
123
|
+
}));
|
|
124
|
+
if (this.state().overlayMenuActive) {
|
|
125
|
+
this.overlayOpen.next(null);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
if (this.isDesktop()) {
|
|
129
|
+
this.state.update(state => ({
|
|
130
|
+
...state,
|
|
131
|
+
staticMenuDesktopInactive: !state.staticMenuDesktopInactive
|
|
132
|
+
}));
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
this.state.update(state => ({
|
|
136
|
+
...state,
|
|
137
|
+
staticMenuMobileActive: !state.staticMenuMobileActive
|
|
138
|
+
}));
|
|
139
|
+
if (this.state().staticMenuMobileActive) {
|
|
140
|
+
this.overlayOpen.next(null);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
onOverlaySubmenuOpen() {
|
|
145
|
+
this.overlayOpen.next(null);
|
|
146
|
+
}
|
|
147
|
+
isDesktop() {
|
|
148
|
+
return window.innerWidth > 991;
|
|
149
|
+
}
|
|
150
|
+
isMobile() {
|
|
151
|
+
return !this.isDesktop();
|
|
152
|
+
}
|
|
153
|
+
initMenuMode() {
|
|
154
|
+
const lsMode = this.storageService.getItem(this.typeName, this.storageMenuModeKey);
|
|
155
|
+
if (lsMode && this.menuModes.includes(lsMode)) {
|
|
156
|
+
return lsMode;
|
|
157
|
+
}
|
|
158
|
+
return this.config?.menuMode ?? 'static';
|
|
159
|
+
}
|
|
160
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: LayoutService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
161
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: LayoutService }); }
|
|
162
|
+
}
|
|
163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: LayoutService, decorators: [{
|
|
164
|
+
type: Injectable
|
|
165
|
+
}], ctorParameters: () => [] });
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2xheW91dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpHLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFN0IsT0FBTyxFQUFDLHdCQUF3QixFQUFFLHFCQUFxQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFHNUYsT0FBTyxFQUFDLGdDQUFnQyxFQUE4QixNQUFNLCtCQUErQixDQUFDOztBQUc1RyxNQUFNLE9BQU8sYUFBYTtJQWdDZCxrQkFBa0I7UUFDdEIsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQWMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN0RyxJQUFJLFdBQVcsSUFBSSxJQUFJLElBQUksQ0FBRSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFtQixDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQzdGLFdBQVcsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMvQyxDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztJQUVPLHdCQUF3QixDQUFDLFdBQXdCO1FBQ3JELElBQUksV0FBVyxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3pCLE9BQU8sTUFBTSxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxN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SSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFTyxZQUFZO1FBQ2hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFpQixJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ25HLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDNUMsT0FBTyxNQUFNLENBQUM7UUFDbEIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLElBQUksUUFBUSxDQUFDO0lBQzdDLENBQUM7OEdBbExRLGFBQWE7a0hBQWIsYUFBYTs7MkZBQWIsYUFBYTtrQkFEekIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0luamVjdGFibGUsIFBMQVRGT1JNX0lELCBhZnRlck5leHRSZW5kZXIsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgc2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtDT01NT05TX01PRFVMRV9DT05GSUdfSVQsIENvbW1vbnNTdG9yYWdlU2VydmljZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxuaW1wb3J0IHtMYXlvdXRTdGF0ZX0gZnJvbSAnLi4vbW9kZWxzL2xheW91dC1zdGF0ZS5tb2RlbCc7XG5pbXBvcnQge0NPTU1PTlNfTEFZT1VUX0ZFQVRVUkVfQ09ORklHX0lULCBDb2xvclNjaGVtZSwgTGF5b3V0TWVudU1vZGV9IGZyb20gJy4vbGF5b3V0LWZlYXR1cmUtY29uZmlnLnRva2VuJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIExheW91dFNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdHlwZU5hbWUgPSAnTWFpbkxheW91dENvbXBvbmVudFNlcnZpY2UnO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZU1lbnVNb2RlS2V5ID0gJ21lbnVNb2RlJztcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2VDb2xvclNjaGVtZUtleSA9ICdjb2xvclNjaGVtZSc7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29tbW9uc0NvbmZpZyA9IGluamVjdChDT01NT05TX01PRFVMRV9DT05GSUdfSVQsIHtvcHRpb25hbDogdHJ1ZX0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0KENPTU1PTlNfTEFZT1VUX0ZFQVRVUkVfQ09ORklHX0lULCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2VTZXJ2aWNlID0gaW5qZWN0KENvbW1vbnNTdG9yYWdlU2VydmljZSk7XG5cbiAgICBwdWJsaWMgc3RhdGUgPSBzaWduYWw8TGF5b3V0U3RhdGU+KHtcbiAgICAgICAgc3RhdGljTWVudURlc2t0b3BJbmFjdGl2ZTogZmFsc2UsXG4gICAgICAgIG92ZXJsYXlNZW51QWN0aXZlOiBmYWxzZSxcbiAgICAgICAgcmlnaHRNZW51QWN0aXZlOiBmYWxzZSxcbiAgICAgICAgY29uZmlnU2lkZWJhclZpc2libGU6IGZhbHNlLFxuICAgICAgICBzdGF0aWNNZW51TW9iaWxlQWN0aXZlOiBmYWxzZSxcbiAgICAgICAgbWVudUhvdmVyQWN0aXZlOiBmYWxzZSxcbiAgICAgICAgc2lkZWJhckFjdGl2ZTogZmFsc2UsXG4gICAgICAgIGFuY2hvcmVkOiBmYWxzZVxuICAgIH0pO1xuXG4gICAgcHJpdmF0ZSBvdmVybGF5T3BlbiA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgICBwdWJsaWMgb3ZlcmxheU9wZW4kID0gdGhpcy5vdmVybGF5T3Blbi5hc09ic2VydmFibGUoKTtcblxuICAgIC8vIGNvbG9yIHNjaGVtZVxuICAgIHByaXZhdGUgX2NvbG9yU2NoZW1lU2V0dGluZyA9IHNpZ25hbCh0aGlzLmdldEluaXRDb2xvclNjaGVtZSgpKTtcbiAgICBwdWJsaWMgY29sb3JTY2hlbWVTZXR0aW5nID0gdGhpcy5fY29sb3JTY2hlbWVTZXR0aW5nLmFzUmVhZG9ubHkoKTtcbiAgICBwcml2YXRlIF9jb2xvclNjaGVtZSA9IHNpZ25hbDxFeGNsdWRlPENvbG9yU2NoZW1lLCAnc3lzdGVtJz4+KHRoaXMuZ2V0SW5pdEFjdHVhbENvbG9yU2NoZW1lKHRoaXMuY29sb3JTY2hlbWVTZXR0aW5nKCkpKTtcbiAgICBwdWJsaWMgY29sb3JTY2hlbWUgPSB0aGlzLl9jb2xvclNjaGVtZS5hc1JlYWRvbmx5KCk7XG4gICAgcHVibGljIGNvbG9yU2NoZW1lSXNMaWdodCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2NvbG9yU2NoZW1lKCkgPT09ICdsaWdodCcpO1xuXG4gICAgcHJpdmF0ZSBnZXRJbml0Q29sb3JTY2hlbWUoKTogQ29sb3JTY2hlbWUge1xuICAgICAgICBsZXQgY29sb3JTY2hlbWUgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW08Q29sb3JTY2hlbWU+KHRoaXMudHlwZU5hbWUsIHRoaXMuc3RvcmFnZUNvbG9yU2NoZW1lS2V5KTtcbiAgICAgICAgaWYgKGNvbG9yU2NoZW1lID09IG51bGwgfHwgIShbJ2RhcmsnLCAnbGlnaHQnLCAnYXV0byddIGFzIENvbG9yU2NoZW1lW10pLmluY2x1ZGVzKGNvbG9yU2NoZW1lKSkge1xuICAgICAgICAgICAgY29sb3JTY2hlbWUgPSB0aGlzLmdldERlZmF1bHRDb2xvclNjaGVtZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xvclNjaGVtZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEluaXRBY3R1YWxDb2xvclNjaGVtZShjb2xvclNjaGVtZTogQ29sb3JTY2hlbWUpOiBFeGNsdWRlPENvbG9yU2NoZW1lLCAnc3lzdGVtJz4ge1xuICAgICAgICBpZiAoY29sb3JTY2hlbWUgPT09ICdhdXRvJykge1xuICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5tYXRjaE1lZGlhICYmIHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJykubWF0Y2hlcyA/ICdkYXJrJyA6ICdsaWdodCc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gY29sb3JTY2hlbWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERlZmF1bHRDb2xvclNjaGVtZSgpOiBDb2xvclNjaGVtZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZz8uY29sb3JTY2hlbWUgPz8gdGhpcy5jb21tb25zQ29uZmlnPy5hcHA/LmNvbG9yU2NoZW1lID8/ICdhdXRvJztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0Q29sb3JTY2hlbWUoc2NoZW1lOiBDb2xvclNjaGVtZSkge1xuICAgICAgICBjb25zdCBkZWZhdWx0Q29sb3JTY2hlbWUgPSB0aGlzLmdldERlZmF1bHRDb2xvclNjaGVtZSgpO1xuICAgICAgICBpZiAoc2NoZW1lID09PSBkZWZhdWx0Q29sb3JTY2hlbWUpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UucmVtb3ZlSXRlbSh0aGlzLnR5cGVOYW1lLCB0aGlzLnN0b3JhZ2VDb2xvclNjaGVtZUtleSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0odGhpcy50eXBlTmFtZSwgdGhpcy5zdG9yYWdlQ29sb3JTY2hlbWVLZXksIHNjaGVtZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY29sb3JTY2hlbWVTZXR0aW5nLnNldChzY2hlbWUpO1xuICAgICAgICB0aGlzLl9jb2xvclNjaGVtZS5zZXQodGhpcy5nZXRJbml0QWN0dWFsQ29sb3JTY2hlbWUoc2NoZW1lKSk7XG4gICAgfVxuXG4gICAgLy8gbWVudSBtb2RlXG4gICAgcHVibGljIHJlYWRvbmx5IG1lbnVNb2RlczogTGF5b3V0TWVudU1vZGVbXSA9IHRoaXMuY29uZmlnPy5tZW51TW9kZXMgPz8gWydzdGF0aWMnLCAnb3ZlcmxheScsICdyZXZlYWwnLCAnZHJhd2VyJywgJ3NsaW0nLCAnc2xpbS1wbHVzJ107XG4gICAgcHJpdmF0ZSBfbWVudU1vZGUgPSBzaWduYWwodGhpcy5pbml0TWVudU1vZGUoKSk7XG4gICAgcHVibGljIG1lbnVNb2RlID0gdGhpcy5fbWVudU1vZGUuYXNSZWFkb25seSgpO1xuXG4gICAgLy8gbG9nb3NcbiAgICBwcml2YXRlIGFwcExvZ29MaWdodCA9IHNpZ25hbChcbiAgICAgICAgdGhpcy5jb25maWc/LmxvZ29QYXRoTGlnaHQgPz8gdGhpcy5jb21tb25zQ29uZmlnPy5hcHA/LmxvZ29QYXRoTGlnaHQgPz8gdGhpcy5jb25maWc/LmxvZ29QYXRoID8/IHRoaXMuY29tbW9uc0NvbmZpZz8uYXBwPy5sb2dvUGF0aCA/PyAnYXNzZXRzL2xheW91dC9pbWFnZXMvbG9nby5wbmcnXG4gICAgKTtcbiAgICBwcml2YXRlIGFwcExvZ29EYXJrID0gc2lnbmFsKFxuICAgICAgICB0aGlzLmNvbmZpZz8ubG9nb1BhdGhMaWdodCA/PyB0aGlzLmNvbW1vbnNDb25maWc/LmFwcD8ubG9nb1BhdGhEYXJrID8/IHRoaXMuY29uZmlnPy5sb2dvUGF0aCA/PyB0aGlzLmNvbW1vbnNDb25maWc/LmFwcD8ubG9nb1BhdGggPz8gJ2Fzc2V0cy9sYXlvdXQvaW1hZ2VzL2xvZ28ucG5nJ1xuICAgICk7XG4gICAgcHVibGljIGFwcExvZ28gPSBjb21wdXRlZCgoKSA9PiAodGhpcy5jb2xvclNjaGVtZUlzTGlnaHQoKSA/IHRoaXMuYXBwTG9nb0xpZ2h0KCkgOiB0aGlzLmFwcExvZ29EYXJrKCkpKTtcblxuICAgIHByaXZhdGUgYXBwTG9nb05hbWVMaWdodCA9IHNpZ25hbChcbiAgICAgICAgdGhpcy5jb25maWc/LmxvZ29OYW1lUGF0aExpZ2h0ID8/XG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNDb25maWc/LmFwcD8ubG9nb05hbWVQYXRoTGlnaHQgPz9cbiAgICAgICAgICAgIHRoaXMuY29uZmlnPy5sb2dvTmFtZVBhdGggPz9cbiAgICAgICAgICAgIHRoaXMuY29tbW9uc0NvbmZpZz8uYXBwPy5sb2dvTmFtZVBhdGggPz9cbiAgICAgICAgICAgICdhc3NldHMvbGF5b3V0L2ltYWdlcy9sb2dvLWFwcG5hbWUucG5nJ1xuICAgICk7XG4gICAgcHJpdmF0ZSBhcHBMb2dvTmFtZURhcmsgPSBzaWduYWwoXG4gICAgICAgIHRoaXMuY29uZmlnPy5sb2dvTmFtZVBhdGhEYXJrID8/XG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNDb25maWc/LmFwcD8ubG9nb05hbWVQYXRoRGFyayA/P1xuICAgICAgICAgICAgdGhpcy5jb25maWc/LmxvZ29OYW1lUGF0aCA/P1xuICAgICAgICAgICAgdGhpcy5jb21tb25zQ29uZmlnPy5hcHA/LmxvZ29OYW1lUGF0aCA/P1xuICAgICAgICAgICAgJ2Fzc2V0cy9sYXlvdXQvaW1hZ2VzL2xvZ28tYXBwbmFtZS5wbmcnXG4gICAgKTtcbiAgICBwdWJsaWMgYXBwTG9nb05hbWUgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5jb2xvclNjaGVtZUlzTGlnaHQoKSA/IHRoaXMuYXBwTG9nb05hbWVMaWdodCgpIDogdGhpcy5hcHBMb2dvTmFtZURhcmsoKSkpO1xuXG4gICAgLy8gb3ZlcmxheXNcbiAgICBwdWJsaWMgaXNPdmVybGF5ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5tZW51TW9kZSgpID09PSAnb3ZlcmxheScpO1xuICAgIHB1YmxpYyBpc1NsaW0gPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1lbnVNb2RlKCkgPT09ICdzbGltJyk7XG4gICAgcHVibGljIGlzU2xpbVBsdXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1lbnVNb2RlKCkgPT09ICdzbGltLXBsdXMnKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgICAgICAgd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29sb3JTY2hlbWVTZXR0aW5nKCkgPT09ICdhdXRvJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdDb2xvclNjaGVtZSA9IGV2ZW50Lm1hdGNoZXMgPyAnZGFyaycgOiAnbGlnaHQnO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jb2xvclNjaGVtZS5zZXQobmV3Q29sb3JTY2hlbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29sb3JTY2hlbWUgPSB0aGlzLl9jb2xvclNjaGVtZSgpO1xuICAgICAgICAgICAgY29uc3QgbGlua0VsZW1lbnQgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcHAtdGhlbWUnKSBhcyBIVE1MTGlua0VsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoY29sb3JTY2hlbWUgPT09ICdkYXJrJyAmJiBsaW5rRWxlbWVudC5ocmVmLmluY2x1ZGVzKCdsaWdodCcpKSB7XG4gICAgICAgICAgICAgICAgbGlua0VsZW1lbnQuaHJlZiA9ICd0aGVtZS1kYXJrLmNzcyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbG9yU2NoZW1lID09PSAnbGlnaHQnICYmIGxpbmtFbGVtZW50LmhyZWYuaW5jbHVkZXMoJ2RhcmsnKSkge1xuICAgICAgICAgICAgICAgIGxpbmtFbGVtZW50LmhyZWYgPSAndGhlbWUtbGlnaHQuY3NzJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25NZW51TW9kZUNoYW5nZShtb2RlOiBMYXlvdXRNZW51TW9kZSkge1xuICAgICAgICBpZiAoIXRoaXMubWVudU1vZGVzLmluY2x1ZGVzKG1vZGUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1vZGUgPT09IHRoaXMuY29uZmlnPy5tZW51TW9kZSkge1xuICAgICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVJdGVtKHRoaXMudHlwZU5hbWUsIHRoaXMuc3RvcmFnZU1lbnVNb2RlS2V5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSh0aGlzLnR5cGVOYW1lLCB0aGlzLnN0b3JhZ2VNZW51TW9kZUtleSwgbW9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbWVudU1vZGUuc2V0KG1vZGUpO1xuICAgIH1cblxuICAgIG9uTWVudVRvZ2dsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPdmVybGF5KCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUudXBkYXRlKHN0YXRlID0+ICh7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgb3ZlcmxheU1lbnVBY3RpdmU6ICFzdGF0ZS5vdmVybGF5TWVudUFjdGl2ZVxuICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0ZSgpLm92ZXJsYXlNZW51QWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5T3Blbi5uZXh0KG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEZXNrdG9wKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUudXBkYXRlKHN0YXRlID0+ICh7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgc3RhdGljTWVudURlc2t0b3BJbmFjdGl2ZTogIXN0YXRlLnN0YXRpY01lbnVEZXNrdG9wSW5hY3RpdmVcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUudXBkYXRlKHN0YXRlID0+ICh7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgc3RhdGljTWVudU1vYmlsZUFjdGl2ZTogIXN0YXRlLnN0YXRpY01lbnVNb2JpbGVBY3RpdmVcbiAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGUoKS5zdGF0aWNNZW51TW9iaWxlQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5T3Blbi5uZXh0KG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25PdmVybGF5U3VibWVudU9wZW4oKSB7XG4gICAgICAgIHRoaXMub3ZlcmxheU9wZW4ubmV4dChudWxsKTtcbiAgICB9XG5cbiAgICBpc0Rlc2t0b3AoKSB7XG4gICAgICAgIHJldHVybiB3aW5kb3cuaW5uZXJXaWR0aCA+IDk5MTtcbiAgICB9XG5cbiAgICBpc01vYmlsZSgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzRGVza3RvcCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdE1lbnVNb2RlKCk6IExheW91dE1lbnVNb2RlIHtcbiAgICAgICAgY29uc3QgbHNNb2RlID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRJdGVtPExheW91dE1lbnVNb2RlPih0aGlzLnR5cGVOYW1lLCB0aGlzLnN0b3JhZ2VNZW51TW9kZUtleSk7XG4gICAgICAgIGlmIChsc01vZGUgJiYgdGhpcy5tZW51TW9kZXMuaW5jbHVkZXMobHNNb2RlKSkge1xuICAgICAgICAgICAgcmV0dXJuIGxzTW9kZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jb25maWc/Lm1lbnVNb2RlID8/ICdzdGF0aWMnO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -74,7 +74,7 @@ export class MenuService {
|
|
|
74
74
|
const menuItems = adjustRouteMenuLazyChildrenRouterLinks(menuItem, menuItemsFromRoutes);
|
|
75
75
|
menuItem.items.set(prepareMenuItemsToInternal(menuItems, menuItem.key));
|
|
76
76
|
this.appendListenersToLazyChildren(menuItem.items());
|
|
77
|
-
menuItem.itemsVisibility.set(menuItem.items()?.map(
|
|
77
|
+
menuItem.itemsVisibility.set(menuItem.items()?.map(() => signal(true)));
|
|
78
78
|
menuItem.lazyChildren.set(false);
|
|
79
79
|
this.findAndSetActiveMenuItem(this.router.url);
|
|
80
80
|
}
|
|
@@ -121,4 +121,4 @@ export class MenuService {
|
|
|
121
121
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: MenuService, decorators: [{
|
|
122
122
|
type: Injectable
|
|
123
123
|
}] });
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9tZW51LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsYUFBYSxFQUFFLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRXRELE9BQU8sRUFBQyxhQUFhLEVBQWdCLFNBQVMsRUFBRSxJQUFJLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBR0gsb0JBQW9CLEVBRXBCLGFBQWEsRUFDYixzQ0FBc0MsRUFDdEMsc0JBQXNCLEVBQ3pCLE1BQU0sNkJBQTZCLENBQUM7QUFFckMsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7O0FBSWpFLE1BQU0sT0FBTyxXQUFXO0lBRHhCO1FBRXFCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsV0FBTSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0MsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRXRELGVBQVUsR0FBRyxNQUFNLENBQTRCLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELGNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRS9CLHNCQUFpQixHQUFHLElBQUksYUFBYSxDQUFrQixDQUFDLENBQUMsQ0FBQztRQUMzRSxn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O2dCQUNqRSxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQzFCLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzdELENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQztZQUN4QixTQUFTLEVBQUUsT0FBTztTQUNyQixDQUFDLENBQUM7SUFDUCxDQUFDOzhHQXpIUSxXQUFXO2tIQUFYLFdBQVc7OzJGQUFYLFdBQVc7a0JBRHZCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Rlc3Ryb3lSZWYsIEluamVjdGFibGUsIGluamVjdCwgc2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge05hdmlnYXRpb25FbmQsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtSZXBsYXlTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHN0YXJ0V2l0aCwgdGFrZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpbHRlciwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gICAgQ29tbW9uc01lbnVJdGVtLFxuICAgIENvbW1vbnNSb3V0ZURhdGEsXG4gICAgQ29tbW9uc1JvdXRlclNlcnZpY2UsXG4gICAgSW50ZXJuYWxDb21tb25zTWVudUl0ZW0sXG4gICAgTG9nZ2VyU2VydmljZSxcbiAgICBhZGp1c3RSb3V0ZU1lbnVMYXp5Q2hpbGRyZW5Sb3V0ZXJMaW5rcyxcbiAgICBkb2VzVXJsTWF0Y2hSb3V0ZXJMaW5rXG59IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5cbmltcG9ydCB7cHJlcGFyZU1lbnVJdGVtc1RvSW50ZXJuYWx9IGZyb20gJy4uL2hlbHBlcnMvbWVudS1pdGVtcyc7XG5pbXBvcnQge01lbnVDaGFuZ2VFdmVudH0gZnJvbSAnLi4vbW9kZWxzL21lbnUubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTWVudVNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IExvZ2dlclNlcnZpY2UuY3JlYXRlKCdNZW51U2VydmljZScpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb21tb25zUm91dGVyID0gaW5qZWN0KENvbW1vbnNSb3V0ZXJTZXJ2aWNlKTtcblxuICAgIHByaXZhdGUgX21lbnVJdGVtcyA9IHNpZ25hbDxJbnRlcm5hbENvbW1vbnNNZW51SXRlbVtdPihbXSk7XG4gICAgcHVibGljIG1lbnVJdGVtcyA9IHRoaXMuX21lbnVJdGVtcy5hc1JlYWRvbmx5KCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IG1lbnVDaGFuZ2VTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8TWVudUNoYW5nZUV2ZW50PigxKTtcbiAgICBtZW51Q2hhbmdlJCA9IHRoaXMubWVudUNoYW5nZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBwcml2YXRlIHJvdXRlTG9hZGVkQ2hpbGRyZW5TdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gICAgc2V0SXRlbXMobWVudUl0ZW1zOiBBcnJheTxDb21tb25zTWVudUl0ZW0+KSB7XG4gICAgICAgIHRoaXMucm91dGVMb2FkZWRDaGlsZHJlblN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgICAgIHRoaXMucm91dGVMb2FkZWRDaGlsZHJlblN1YnNjcmlwdGlvbnMgPSBbXTtcblxuICAgICAgICB0aGlzLl9tZW51SXRlbXMuc2V0KHByZXBhcmVNZW51SXRlbXNUb0ludGVybmFsKG1lbnVJdGVtcykpO1xuICAgICAgICB0aGlzLmFwcGVuZExpc3RlbmVyc1RvTGF6eUNoaWxkcmVuKHRoaXMuX21lbnVJdGVtcygpKTtcblxuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHM7XG4gICAgICAgIHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKG5ldyBOYXZpZ2F0aW9uRW5kKDAsIHRoaXMucm91dGVyLnVybCwgdGhpcy5yb3V0ZXIudXJsKSksXG4gICAgICAgICAgICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXG4gICAgICAgICAgICAgICAgbWFwKGUgPT4gZSBhcyBOYXZpZ2F0aW9uRW5kKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZShlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbmRBbmRTZXRBY3RpdmVNZW51SXRlbSgoZSBhcyBOYXZpZ2F0aW9uRW5kKS51cmxBZnRlclJlZGlyZWN0cyk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGVuZExpc3RlbmVyc1RvTGF6eUNoaWxkcmVuKG1lbnVJdGVtczogSW50ZXJuYWxDb21tb25zTWVudUl0ZW1bXSkge1xuICAgICAgICBtZW51SXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLmxhenlDaGlsZHJlbigpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0ZW5Ub01lbnVJdGVtTGF6eUNoaWxkcmVuTG9hZChpdGVtKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS5pdGVtcygpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRMaXN0ZW5lcnNUb0xhenlDaGlsZHJlbihpdGVtLml0ZW1zKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRBbmRTZXRBY3RpdmVNZW51SXRlbSh1cmw6IHN0cmluZykge1xuICAgICAgICBjb25zdCBtYXRjaGVzID0gdGhpcy5maW5kQWN0aXZlUm91dGVNYXRjaGVzKHRoaXMubWVudUl0ZW1zKCksIHVybCk7XG4gICAgICAgIGlmIChtYXRjaGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hLZXkgPSBtYXRjaGVzWzBdW21hdGNoZXNbMF0ubGVuZ3RoIC0gMV0ua2V5O1xuICAgICAgICAgICAgaWYgKG1hdGNoS2V5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51Q2hhbmdlU3ViamVjdC5uZXh0KHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBtYXRjaEtleSxcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRUeXBlOiAncm91dGVDaGFuZ2UnXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLndhcm4oYEZvdW5kIGFjdGl2ZSBtZW51IGl0ZW0gZm9yIHVybCAke3VybH0sIGJ1dCBpdGVtIGtleSBpcyBub3QgcHJlc2VudGAsIG1hdGNoZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG1hdGNoZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLndhcm4oYE11bHRpcGxlIGFjdGl2ZSBtZW51IGl0ZW1zIGZvdW5kIGZvciB1cmwgJHt1cmx9YCwgbWF0Y2hlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGxpc3RlblRvTWVudUl0ZW1MYXp5Q2hpbGRyZW5Mb2FkKG1lbnVJdGVtOiBJbnRlcm5hbENvbW1vbnNNZW51SXRlbSkge1xuICAgICAgICB0aGlzLnJvdXRlTG9hZGVkQ2hpbGRyZW5TdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgICAgICB0aGlzLmNvbW1vbnNSb3V0ZXJcbiAgICAgICAgICAgICAgICAuZ2V0Um91dGVMb2FkZWRDaGlsZHJlbiQobWVudUl0ZW0ucm91dGVyTGluayA/PyAnLycpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dDogcm91dGVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lbnVJdGVtc0Zyb21Sb3V0ZXMgPSByb3V0ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKHIgPT4gQXJyYXkuaXNBcnJheSgoci5kYXRhIGFzIENvbW1vbnNSb3V0ZURhdGEgfCB1bmRlZmluZWQpPy5tZW51SXRlbXMpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mbGF0TWFwKHIgPT4gKHIuZGF0YSBhcyBDb21tb25zUm91dGVEYXRhKS5tZW51SXRlbXMhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lbnVJdGVtcyA9IGFkanVzdFJvdXRlTWVudUxhenlDaGlsZHJlblJvdXRlckxpbmtzKG1lbnVJdGVtLCBtZW51SXRlbXNGcm9tUm91dGVzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgbWVudUl0ZW0uaXRlbXMuc2V0KHByZXBhcmVNZW51SXRlbXNUb0ludGVybmFsKG1lbnVJdGVtcywgbWVudUl0ZW0ua2V5KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZExpc3RlbmVyc1RvTGF6eUNoaWxkcmVuKG1lbnVJdGVtLml0ZW1zKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVudUl0ZW0uaXRlbXNWaXNpYmlsaXR5LnNldChtZW51SXRlbS5pdGVtcygpPy5tYXAoaSA9PiBzaWduYWwodHJ1ZSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVJdGVtLmxhenlDaGlsZHJlbi5zZXQoZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbmRBbmRTZXRBY3RpdmVNZW51SXRlbSh0aGlzLnJvdXRlci51cmwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRBY3RpdmVSb3V0ZU1hdGNoZXMobWVudUl0ZW1zOiBBcnJheTxJbnRlcm5hbENvbW1vbnNNZW51SXRlbT4sIHVybDogc3RyaW5nKTogSW50ZXJuYWxDb21tb25zTWVudUl0ZW1bXVtdIHtcbiAgICAgICAgY29uc3QgbWF0Y2hlczogSW50ZXJuYWxDb21tb25zTWVudUl0ZW1bXVtdID0gW107XG4gICAgICAgIGZvciAoY29uc3QgbWVudUl0ZW0gb2YgbWVudUl0ZW1zKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlkbGRyZW4gPSBtZW51SXRlbS5pdGVtcygpO1xuICAgICAgICAgICAgaWYgKG1lbnVJdGVtLnJvdXRlckxpbmspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IGRvZXNVcmxNYXRjaFJvdXRlckxpbmsobWVudUl0ZW0ucm91dGVyTGluaywgdXJsKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpZGxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbXNNYXRjaGVzID0gdGhpcy5maW5kQWN0aXZlUm91dGVNYXRjaGVzKGNoaWRsZHJlbiwgdXJsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtc01hdGNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXMucHVzaCguLi5pdGVtc01hdGNoZXMubWFwKGMgPT4gW21lbnVJdGVtLCAuLi5jXSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVzLnB1c2goW21lbnVJdGVtXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVzLnB1c2goW21lbnVJdGVtXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoY2hpZGxkcmVuKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zTWF0Y2hlcyA9IHRoaXMuZmluZEFjdGl2ZVJvdXRlTWF0Y2hlcyhjaGlkbGRyZW4sIHVybCk7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW1zTWF0Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoZXMucHVzaCguLi5pdGVtc01hdGNoZXMubWFwKGMgPT4gW21lbnVJdGVtLCAuLi5jXSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF0Y2hlcztcbiAgICB9XG5cbiAgICByZXNldCgpIHtcbiAgICAgICAgdGhpcy5tZW51Q2hhbmdlU3ViamVjdC5uZXh0KHtcbiAgICAgICAgICAgIGV2ZW50VHlwZTogJ3Jlc2V0J1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9tZW51LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsYUFBYSxFQUFFLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRXRELE9BQU8sRUFBQyxhQUFhLEVBQWdCLFNBQVMsRUFBRSxJQUFJLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBR0gsb0JBQW9CLEVBRXBCLGFBQWEsRUFDYixzQ0FBc0MsRUFDdEMsc0JBQXNCLEVBQ3pCLE1BQU0sNkJBQTZCLENBQUM7QUFFckMsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7O0FBSWpFLE1BQU0sT0FBTyxXQUFXO0lBRHhCO1FBRXFCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsV0FBTSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0MsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRXRELGVBQVUsR0FBRyxNQUFNLENBQTRCLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELGNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRS9CLHNCQUFpQixHQUFHLElBQUksYUFBYSxDQUFrQixDQUFDLENBQUMsQ0FBQztRQUMzRSxn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akUsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUMxQixPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM3RCxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSztRQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7WUFDeEIsU0FBUyxFQUFFLE9BQU87U0FDckIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0F6SFEsV0FBVztrSEFBWCxXQUFXOzsyRkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEZXN0cm95UmVmLCBJbmplY3RhYmxlLCBpbmplY3QsIHNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtOYXZpZ2F0aW9uRW5kLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7UmVwbGF5U3ViamVjdCwgU3Vic2NyaXB0aW9uLCBzdGFydFdpdGgsIHRha2V9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaWx0ZXIsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICAgIENvbW1vbnNNZW51SXRlbSxcbiAgICBDb21tb25zUm91dGVEYXRhLFxuICAgIENvbW1vbnNSb3V0ZXJTZXJ2aWNlLFxuICAgIEludGVybmFsQ29tbW9uc01lbnVJdGVtLFxuICAgIExvZ2dlclNlcnZpY2UsXG4gICAgYWRqdXN0Um91dGVNZW51TGF6eUNoaWxkcmVuUm91dGVyTGlua3MsXG4gICAgZG9lc1VybE1hdGNoUm91dGVyTGlua1xufSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5pbXBvcnQge3ByZXBhcmVNZW51SXRlbXNUb0ludGVybmFsfSBmcm9tICcuLi9oZWxwZXJzL21lbnUtaXRlbXMnO1xuaW1wb3J0IHtNZW51Q2hhbmdlRXZlbnR9IGZyb20gJy4uL21vZGVscy9tZW51Lm1vZGVsJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1lbnVTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBMb2dnZXJTZXJ2aWNlLmNyZWF0ZSgnTWVudVNlcnZpY2UnKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29tbW9uc1JvdXRlciA9IGluamVjdChDb21tb25zUm91dGVyU2VydmljZSk7XG5cbiAgICBwcml2YXRlIF9tZW51SXRlbXMgPSBzaWduYWw8SW50ZXJuYWxDb21tb25zTWVudUl0ZW1bXT4oW10pO1xuICAgIHB1YmxpYyBtZW51SXRlbXMgPSB0aGlzLl9tZW51SXRlbXMuYXNSZWFkb25seSgpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZW51Q2hhbmdlU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PE1lbnVDaGFuZ2VFdmVudD4oMSk7XG4gICAgbWVudUNoYW5nZSQgPSB0aGlzLm1lbnVDaGFuZ2VTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgcHJpdmF0ZSByb3V0ZUxvYWRlZENoaWxkcmVuU3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICAgIHNldEl0ZW1zKG1lbnVJdGVtczogQXJyYXk8Q29tbW9uc01lbnVJdGVtPikge1xuICAgICAgICB0aGlzLnJvdXRlTG9hZGVkQ2hpbGRyZW5TdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgICAgICB0aGlzLnJvdXRlTG9hZGVkQ2hpbGRyZW5TdWJzY3JpcHRpb25zID0gW107XG5cbiAgICAgICAgdGhpcy5fbWVudUl0ZW1zLnNldChwcmVwYXJlTWVudUl0ZW1zVG9JbnRlcm5hbChtZW51SXRlbXMpKTtcbiAgICAgICAgdGhpcy5hcHBlbmRMaXN0ZW5lcnNUb0xhenlDaGlsZHJlbih0aGlzLl9tZW51SXRlbXMoKSk7XG5cbiAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzO1xuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChuZXcgTmF2aWdhdGlvbkVuZCgwLCB0aGlzLnJvdXRlci51cmwsIHRoaXMucm91dGVyLnVybCkpLFxuICAgICAgICAgICAgICAgIGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxuICAgICAgICAgICAgICAgIG1hcChlID0+IGUgYXMgTmF2aWdhdGlvbkVuZCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5maW5kQW5kU2V0QWN0aXZlTWVudUl0ZW0oKGUgYXMgTmF2aWdhdGlvbkVuZCkudXJsQWZ0ZXJSZWRpcmVjdHMpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBlbmRMaXN0ZW5lcnNUb0xhenlDaGlsZHJlbihtZW51SXRlbXM6IEludGVybmFsQ29tbW9uc01lbnVJdGVtW10pIHtcbiAgICAgICAgbWVudUl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5sYXp5Q2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgICAgIHRoaXMubGlzdGVuVG9NZW51SXRlbUxhenlDaGlsZHJlbkxvYWQoaXRlbSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0uaXRlbXMoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kTGlzdGVuZXJzVG9MYXp5Q2hpbGRyZW4oaXRlbS5pdGVtcygpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kQW5kU2V0QWN0aXZlTWVudUl0ZW0odXJsOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgbWF0Y2hlcyA9IHRoaXMuZmluZEFjdGl2ZVJvdXRlTWF0Y2hlcyh0aGlzLm1lbnVJdGVtcygpLCB1cmwpO1xuICAgICAgICBpZiAobWF0Y2hlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoS2V5ID0gbWF0Y2hlc1swXVttYXRjaGVzWzBdLmxlbmd0aCAtIDFdLmtleTtcbiAgICAgICAgICAgIGlmIChtYXRjaEtleSkge1xuICAgICAgICAgICAgICAgIHRoaXMubWVudUNoYW5nZVN1YmplY3QubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgIGtleTogbWF0Y2hLZXksXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50VHlwZTogJ3JvdXRlQ2hhbmdlJ1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci53YXJuKGBGb3VuZCBhY3RpdmUgbWVudSBpdGVtIGZvciB1cmwgJHt1cmx9LCBidXQgaXRlbSBrZXkgaXMgbm90IHByZXNlbnRgLCBtYXRjaGVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChtYXRjaGVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci53YXJuKGBNdWx0aXBsZSBhY3RpdmUgbWVudSBpdGVtcyBmb3VuZCBmb3IgdXJsICR7dXJsfWAsIG1hdGNoZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsaXN0ZW5Ub01lbnVJdGVtTGF6eUNoaWxkcmVuTG9hZChtZW51SXRlbTogSW50ZXJuYWxDb21tb25zTWVudUl0ZW0pIHtcbiAgICAgICAgdGhpcy5yb3V0ZUxvYWRlZENoaWxkcmVuU3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgdGhpcy5jb21tb25zUm91dGVyXG4gICAgICAgICAgICAgICAgLmdldFJvdXRlTG9hZGVkQ2hpbGRyZW4kKG1lbnVJdGVtLnJvdXRlckxpbmsgPz8gJy8nKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgICAgIG5leHQ6IHJvdXRlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtZW51SXRlbXNGcm9tUm91dGVzID0gcm91dGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihyID0+IEFycmF5LmlzQXJyYXkoKHIuZGF0YSBhcyBDb21tb25zUm91dGVEYXRhIHwgdW5kZWZpbmVkKT8ubWVudUl0ZW1zKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmxhdE1hcChyID0+IChyLmRhdGEgYXMgQ29tbW9uc1JvdXRlRGF0YSkubWVudUl0ZW1zISk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtZW51SXRlbXMgPSBhZGp1c3RSb3V0ZU1lbnVMYXp5Q2hpbGRyZW5Sb3V0ZXJMaW5rcyhtZW51SXRlbSwgbWVudUl0ZW1zRnJvbVJvdXRlcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVJdGVtLml0ZW1zLnNldChwcmVwYXJlTWVudUl0ZW1zVG9JbnRlcm5hbChtZW51SXRlbXMsIG1lbnVJdGVtLmtleSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRMaXN0ZW5lcnNUb0xhenlDaGlsZHJlbihtZW51SXRlbS5pdGVtcygpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVJdGVtLml0ZW1zVmlzaWJpbGl0eS5zZXQobWVudUl0ZW0uaXRlbXMoKT8ubWFwKCgpID0+IHNpZ25hbCh0cnVlKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVudUl0ZW0ubGF6eUNoaWxkcmVuLnNldChmYWxzZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmluZEFuZFNldEFjdGl2ZU1lbnVJdGVtKHRoaXMucm91dGVyLnVybCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmluZEFjdGl2ZVJvdXRlTWF0Y2hlcyhtZW51SXRlbXM6IEFycmF5PEludGVybmFsQ29tbW9uc01lbnVJdGVtPiwgdXJsOiBzdHJpbmcpOiBJbnRlcm5hbENvbW1vbnNNZW51SXRlbVtdW10ge1xuICAgICAgICBjb25zdCBtYXRjaGVzOiBJbnRlcm5hbENvbW1vbnNNZW51SXRlbVtdW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBtZW51SXRlbSBvZiBtZW51SXRlbXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWRsZHJlbiA9IG1lbnVJdGVtLml0ZW1zKCk7XG4gICAgICAgICAgICBpZiAobWVudUl0ZW0ucm91dGVyTGluaykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzQWN0aXZlID0gZG9lc1VybE1hdGNoUm91dGVyTGluayhtZW51SXRlbS5yb3V0ZXJMaW5rLCB1cmwpO1xuICAgICAgICAgICAgICAgIGlmIChpc0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlkbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtc01hdGNoZXMgPSB0aGlzLmZpbmRBY3RpdmVSb3V0ZU1hdGNoZXMoY2hpZGxkcmVuLCB1cmwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1zTWF0Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcy5wdXNoKC4uLml0ZW1zTWF0Y2hlcy5tYXAoYyA9PiBbbWVudUl0ZW0sIC4uLmNdKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXMucHVzaChbbWVudUl0ZW1dKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXMucHVzaChbbWVudUl0ZW1dKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShjaGlkbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbXNNYXRjaGVzID0gdGhpcy5maW5kQWN0aXZlUm91dGVNYXRjaGVzKGNoaWRsZHJlbiwgdXJsKTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbXNNYXRjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcy5wdXNoKC4uLml0ZW1zTWF0Y2hlcy5tYXAoYyA9PiBbbWVudUl0ZW0sIC4uLmNdKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXRjaGVzO1xuICAgIH1cblxuICAgIHJlc2V0KCkge1xuICAgICAgICB0aGlzLm1lbnVDaGFuZ2VTdWJqZWN0Lm5leHQoe1xuICAgICAgICAgICAgZXZlbnRUeXBlOiAncmVzZXQnXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|