@sumaris-net/ngx-components 2.4.132 → 2.4.133
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/esm2020/src/app/core/home/home.mjs +1 -1
- package/esm2020/src/app/core/menu/menu.component.mjs +14 -11
- package/esm2020/src/app/core/menu/menu.model.mjs +116 -33
- package/esm2020/src/app/core/menu/menu.module.mjs +14 -4
- package/esm2020/src/app/core/menu/menu.service.mjs +179 -114
- package/esm2020/src/app/core/menu/sub-menu-tab.directive.mjs +47 -25
- package/esm2020/src/app/core/menu/testing/menu-other.testing.mjs +8 -7
- package/esm2020/src/app/core/menu/testing/menu.testing.mjs +27 -11
- package/esm2020/src/app/core/settings/settings.page.mjs +1 -1
- package/fesm2015/sumaris-net.ngx-components.mjs +471 -268
- package/fesm2015/sumaris-net.ngx-components.mjs.map +1 -1
- package/fesm2020/sumaris-net.ngx-components.mjs +400 -200
- package/fesm2020/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/src/app/core/home/home.d.ts +5 -5
- package/src/app/core/menu/menu.component.d.ts +6 -6
- package/src/app/core/menu/menu.model.d.ts +59 -9
- package/src/app/core/menu/menu.module.d.ts +4 -2
- package/src/app/core/menu/menu.service.d.ts +22 -15
- package/src/app/core/menu/sub-menu-tab.directive.d.ts +8 -3
- package/src/app/core/menu/testing/menu.testing.d.ts +4 -2
- package/src/app/core/settings/settings.page.d.ts +5 -5
|
@@ -1,6 +1,85 @@
|
|
|
1
|
-
import { isNilOrBlank, isNotNil } from '../../shared/functions';
|
|
1
|
+
import { isNilOrBlank, isNotNil, isNotNilOrBlank, toBoolean } from '../../shared/functions';
|
|
2
2
|
import { BehaviorSubject } from 'rxjs';
|
|
3
3
|
import { AccountUtils } from '../services/model/account.model';
|
|
4
|
+
export class MenuItem {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.$title = new BehaviorSubject(undefined);
|
|
7
|
+
this.$children = new BehaviorSubject([]);
|
|
8
|
+
}
|
|
9
|
+
static fromObject(source) {
|
|
10
|
+
if (!source)
|
|
11
|
+
return null;
|
|
12
|
+
if (source instanceof MenuItem)
|
|
13
|
+
return source;
|
|
14
|
+
const target = new MenuItem();
|
|
15
|
+
target.fromObject(source);
|
|
16
|
+
return target;
|
|
17
|
+
}
|
|
18
|
+
fromObject(source) {
|
|
19
|
+
this.id = source.id;
|
|
20
|
+
this.title = source.title;
|
|
21
|
+
this.titleProperty = source.titleProperty;
|
|
22
|
+
this.titleArgs = source.titleArgs;
|
|
23
|
+
// Clean path
|
|
24
|
+
if (source.path) {
|
|
25
|
+
const { path, params } = MenuItems.parsePathWithQuery(source.path);
|
|
26
|
+
this.path = path;
|
|
27
|
+
this.pathParams = { ...source.pathParams, ...params };
|
|
28
|
+
}
|
|
29
|
+
// Clean parent path
|
|
30
|
+
if (source.parentPath) {
|
|
31
|
+
const { path, params } = MenuItems.parsePathWithQuery(source.parentPath);
|
|
32
|
+
this.parentPath = path;
|
|
33
|
+
this.parentPathParams = { ...source.parentPathParams, ...params };
|
|
34
|
+
}
|
|
35
|
+
this.after = source.after;
|
|
36
|
+
this.before = source.before;
|
|
37
|
+
this.action = source.action;
|
|
38
|
+
this.profile = source.profile;
|
|
39
|
+
this.exactProfile = source.exactProfile;
|
|
40
|
+
this.color = source.color;
|
|
41
|
+
this.cssClass = source.cssClass;
|
|
42
|
+
this.ifProperty = source.ifProperty;
|
|
43
|
+
this.pinned = toBoolean(source.pinned, false);
|
|
44
|
+
this.children = (source.children || []).map(MenuItem.fromObject) || [];
|
|
45
|
+
}
|
|
46
|
+
asObject() {
|
|
47
|
+
const target = Object.assign({}, this);
|
|
48
|
+
delete target.$children;
|
|
49
|
+
target.children = (this.children || []).map(c => c.asObject());
|
|
50
|
+
return target;
|
|
51
|
+
}
|
|
52
|
+
// addChild(child: MenuItem) {
|
|
53
|
+
// this.$children.next(this.$children.value)
|
|
54
|
+
// }
|
|
55
|
+
get children() {
|
|
56
|
+
return this.$children.value;
|
|
57
|
+
}
|
|
58
|
+
set children(value) {
|
|
59
|
+
this.$children.next(value);
|
|
60
|
+
}
|
|
61
|
+
get title() {
|
|
62
|
+
return this.$title.value;
|
|
63
|
+
}
|
|
64
|
+
set title(value) {
|
|
65
|
+
if (this.pinned) {
|
|
66
|
+
// If loading, keep existing title if pinned (avoid to show skeleton)
|
|
67
|
+
if (isNotNilOrBlank(value))
|
|
68
|
+
this.$title.next(value);
|
|
69
|
+
}
|
|
70
|
+
else if (isNotNil(value)) {
|
|
71
|
+
this.$title.next(value);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
get detached() {
|
|
75
|
+
return !this.parentPath || !this.parent;
|
|
76
|
+
}
|
|
77
|
+
isPinned() {
|
|
78
|
+
if (this.pinned)
|
|
79
|
+
return true;
|
|
80
|
+
return (this.children || []).some(child => child.isPinned());
|
|
81
|
+
}
|
|
82
|
+
}
|
|
4
83
|
export class MenuItems {
|
|
5
84
|
/**
|
|
6
85
|
* Compare, without checking the children
|
|
@@ -9,12 +88,29 @@ export class MenuItems {
|
|
|
9
88
|
* @param otherItem
|
|
10
89
|
*/
|
|
11
90
|
static isSame(mainItem, otherItem) {
|
|
91
|
+
return this.isSameIdOrPathAndParams(mainItem, otherItem)
|
|
92
|
+
&& mainItem.title === otherItem.title;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Compare, without checking the children and the title
|
|
96
|
+
*
|
|
97
|
+
* @param mainItem
|
|
98
|
+
* @param otherItem
|
|
99
|
+
*/
|
|
100
|
+
static isSameIdOrPathAndParams(mainItem, otherItem) {
|
|
12
101
|
return (isNotNil(mainItem?.id) && mainItem.id === otherItem?.id)
|
|
13
|
-
|| (mainItem
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
102
|
+
|| this.isSamePathAndParams(mainItem, otherItem);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Compare, without checking the children
|
|
106
|
+
*
|
|
107
|
+
* @param mainItem
|
|
108
|
+
* @param otherItem
|
|
109
|
+
*/
|
|
110
|
+
static isSamePathAndParams(mainItem, otherItem) {
|
|
111
|
+
return mainItem && mainItem.path === otherItem?.path
|
|
112
|
+
&& mainItem.parentPath === otherItem.parentPath
|
|
113
|
+
&& this.isSameParams(mainItem.pathParams, otherItem.pathParams);
|
|
18
114
|
}
|
|
19
115
|
/**
|
|
20
116
|
* All key/value of the mainParams should exist (and be equals) in the other params
|
|
@@ -23,27 +119,10 @@ export class MenuItems {
|
|
|
23
119
|
* @param otherParams
|
|
24
120
|
*/
|
|
25
121
|
static isSameParams(mainParams, otherParams) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
item = {
|
|
31
|
-
$children: item.$children || new BehaviorSubject([]),
|
|
32
|
-
pinned: false,
|
|
33
|
-
...item,
|
|
34
|
-
};
|
|
35
|
-
// Clean
|
|
36
|
-
if (item.path) {
|
|
37
|
-
const { path, params } = MenuItems.parsePathWithQuery(item.path);
|
|
38
|
-
item.path = path;
|
|
39
|
-
item.pathParams = { ...item.pathParams, ...params };
|
|
40
|
-
}
|
|
41
|
-
if (item.parentPath) {
|
|
42
|
-
const { path, params } = MenuItems.parsePathWithQuery(item.parentPath);
|
|
43
|
-
item.parentPath = path;
|
|
44
|
-
item.parentPathParams = { ...item.parentPathParams, ...params };
|
|
45
|
-
}
|
|
46
|
-
return item;
|
|
122
|
+
const mainEntries = Object.entries(mainParams);
|
|
123
|
+
const otherEntries = Object.entries(otherParams);
|
|
124
|
+
// TODO: est-ce que un item ne pourrait pas avoir plus de params dans l'item existant ?
|
|
125
|
+
return (mainEntries.length === otherEntries.length) && mainEntries.every(([key, value]) => value === otherParams[key]);
|
|
47
126
|
}
|
|
48
127
|
static isParent(child, parent) {
|
|
49
128
|
return child.parentPath && child.parentPath === parent?.path
|
|
@@ -79,12 +158,16 @@ export class MenuItems {
|
|
|
79
158
|
}
|
|
80
159
|
return true;
|
|
81
160
|
}
|
|
82
|
-
static
|
|
83
|
-
if (item
|
|
161
|
+
static checkIfSubMenuVisible(item, currentPathParam) {
|
|
162
|
+
if (!item.parentPath)
|
|
163
|
+
return false; // Should have a parent
|
|
164
|
+
if (item.isPinned())
|
|
165
|
+
return true; // Always keep pinned items
|
|
166
|
+
// Keep each menu items in the scope of the current url path
|
|
167
|
+
if (currentPathParam?.path.startsWith(item.path))
|
|
84
168
|
return true;
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
return item.$children.value.some(i => MenuItems.isPinned(i));
|
|
169
|
+
// Not visible
|
|
170
|
+
return false;
|
|
88
171
|
}
|
|
89
172
|
static parsePathWithQuery(pathWithQuery) {
|
|
90
173
|
const index = pathWithQuery.lastIndexOf('?');
|
|
@@ -107,4 +190,4 @@ export class MenuItems {
|
|
|
107
190
|
}
|
|
108
191
|
export class MenuOptions {
|
|
109
192
|
}
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9tZW51L21lbnUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZDLE9BQU8sRUFBVyxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQTZCeEUsTUFBTSxPQUFPLFNBQVM7SUFFcEI7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQWtCLEVBQUUsU0FBbUI7UUFDbkQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksUUFBUSxDQUFDLEVBQUUsS0FBSyxTQUFTLEVBQUUsRUFBRSxDQUFDO2VBQzNELENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsSUFBSTttQkFDakMsUUFBUSxDQUFDLFVBQVUsS0FBSyxTQUFTLENBQUMsVUFBVTtnQkFDL0Msa0NBQWtDO2dCQUNsQyx1Q0FBdUM7bUJBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsVUFBVSxDQUFDLENBQ2hFLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQW1DLEVBQUUsV0FBb0M7UUFDM0YsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVELG1DQUFtQztJQUNuQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQWM7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QU0sRUFBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQWM7UUFDMUIsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxJQUFZLEVBQUUsTUFBWTtRQUN2RCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEcsSUFBSSxZQUFZLENBQUMsV0FBVyxDQUFDO1lBQUUsT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2pELE9BQU8sR0FBRyxJQUFJLElBQUcsRUFBRSxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxXQUFXO0NBRXZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXNlclByb2ZpbGVMYWJlbCB9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL3BlcnNvbi5tb2RlbCc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvY29uZmlnLm1vZGVsJztcbmltcG9ydCB7IEljb25SZWYgfSBmcm9tICcuLi8uLi9zaGFyZWQvdHlwZXMnO1xuaW1wb3J0IHsgaXNOaWxPckJsYW5rLCBpc05vdE5pbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNZW51UGF0aFBhcmFtIH0gZnJvbSAnLi9tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHsgQWNjb3VudCwgQWNjb3VudFV0aWxzIH0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvYWNjb3VudC5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVudUl0ZW0gZXh0ZW5kcyBJY29uUmVmIHtcbiAgaWQ/OiBudW1iZXI7IC8vIEludGVybmFsIGlkIChzZXQgYnkgbWVudS1zZXJ2aWNlKVxuICB0aXRsZTogc3RyaW5nO1xuICBwYXRoPzogc3RyaW5nO1xuXG4gIC8vIEluamVjdGlvbiBwb2ludFxuICBhZnRlcj86IHN0cmluZztcbiAgYmVmb3JlPzogc3RyaW5nO1xuXG4gIGFjdGlvbj86IHN0cmluZyB8IGFueTtcbiAgcHJvZmlsZT86IFVzZXJQcm9maWxlTGFiZWw7XG4gIGV4YWN0UHJvZmlsZT86IFVzZXJQcm9maWxlTGFiZWw7XG4gIGNvbG9yPzogc3RyaW5nO1xuICBjc3NDbGFzcz86IHN0cmluZztcbiAgLy8gQSBjb25maWcgcHJvcGVydHksIHRvIGVuYWJsZSB0aGUgbWVudSBpdGVtXG4gIGlmUHJvcGVydHk/OiBzdHJpbmc7XG4gIC8vIEEgY29uZmlnIHByb3BlcnR5LCB0byBvdmVycmlkZSB0aGUgdGl0bGVcbiAgdGl0bGVQcm9wZXJ0eT86IHN0cmluZztcbiAgdGl0bGVBcmdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcGF0aFBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIHBhcmVudFBhdGg/OiBzdHJpbmc7XG4gIHBhcmVudFBhdGhQYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICBwaW5uZWQ/OiBib29sZWFuO1xuXG4gICRjaGlsZHJlbj86IEJlaGF2aW9yU3ViamVjdDxNZW51SXRlbVtdPjtcbn1cblxuZXhwb3J0IGNsYXNzIE1lbnVJdGVtcyB7XG5cbiAgLyoqXG4gICAqIENvbXBhcmUsIHdpdGhvdXQgY2hlY2tpbmcgdGhlIGNoaWxkcmVuXG4gICAqXG4gICAqIEBwYXJhbSBtYWluSXRlbVxuICAgKiBAcGFyYW0gb3RoZXJJdGVtXG4gICAqL1xuICBzdGF0aWMgaXNTYW1lKG1haW5JdGVtOiBNZW51SXRlbSwgb3RoZXJJdGVtOiBNZW51SXRlbSkge1xuICAgIHJldHVybiAoaXNOb3ROaWwobWFpbkl0ZW0/LmlkKSAmJiBtYWluSXRlbS5pZCA9PT0gb3RoZXJJdGVtPy5pZClcbiAgICAgIHx8IChtYWluSXRlbS5wYXRoID09PSBvdGhlckl0ZW0ucGF0aFxuICAgICAgJiYgbWFpbkl0ZW0ucGFyZW50UGF0aCA9PT0gb3RoZXJJdGVtLnBhcmVudFBhdGhcbiAgICAgIC8vIEZJWE1FOiBjaGVjayBpZiBjYW4gYmUgZGlzYWJsZWRcbiAgICAgIC8vJiYgbWFpbkl0ZW0udGl0bGUgPT09IG90aGVySXRlbS50aXRsZVxuICAgICAgJiYgdGhpcy5pc1NhbWVQYXJhbXMobWFpbkl0ZW0ucGF0aFBhcmFtcywgb3RoZXJJdGVtLnBhdGhQYXJhbXMpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGwga2V5L3ZhbHVlIG9mIHRoZSBtYWluUGFyYW1zIHNob3VsZCBleGlzdCAoYW5kIGJlIGVxdWFscykgaW4gdGhlIG90aGVyIHBhcmFtc1xuICAgKlxuICAgKiBAcGFyYW0gbWFpblBhcmFtc1xuICAgKiBAcGFyYW0gb3RoZXJQYXJhbXNcbiAgICovXG4gIHN0YXRpYyBpc1NhbWVQYXJhbXMobWFpblBhcmFtczoge1trZXk6IHN0cmluZ106IHN0cmluZ30sIG90aGVyUGFyYW1zOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSkge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhtYWluUGFyYW1zKS5ldmVyeSgoW2tleSwgdmFsdWVdKSA9PiB2YWx1ZSA9PT0gb3RoZXJQYXJhbXNba2V5XSk7XG4gIH1cblxuICAvLyBUT0RPIDogUmVwbGFjZSB0aGlzIGJ5IGEgY2xhc3MgP1xuICBzdGF0aWMgcHJlcGFyZUl0ZW0oaXRlbTogTWVudUl0ZW0pOiBNZW51SXRlbSB7XG4gICAgaXRlbSA9IDxNZW51SXRlbT57XG4gICAgICAkY2hpbGRyZW46IGl0ZW0uJGNoaWxkcmVuIHx8IG5ldyBCZWhhdmlvclN1YmplY3Q8TWVudUl0ZW1bXT4oW10pLFxuICAgICAgcGlubmVkOiBmYWxzZSxcbiAgICAgIC4uLml0ZW0sXG4gICAgfTtcblxuICAgIC8vIENsZWFuXG4gICAgaWYgKGl0ZW0ucGF0aCkge1xuICAgICAgY29uc3Qge3BhdGgsIHBhcmFtc30gPSBNZW51SXRlbXMucGFyc2VQYXRoV2l0aFF1ZXJ5KGl0ZW0ucGF0aCk7XG4gICAgICBpdGVtLnBhdGggPSBwYXRoO1xuICAgICAgaXRlbS5wYXRoUGFyYW1zID0gey4uLml0ZW0ucGF0aFBhcmFtcywgLi4ucGFyYW1zfTtcbiAgICB9XG4gICAgaWYgKGl0ZW0ucGFyZW50UGF0aCkge1xuICAgICAgY29uc3Qge3BhdGgsIHBhcmFtc30gPSBNZW51SXRlbXMucGFyc2VQYXRoV2l0aFF1ZXJ5KGl0ZW0ucGFyZW50UGF0aCk7XG4gICAgICBpdGVtLnBhcmVudFBhdGggPSBwYXRoO1xuICAgICAgaXRlbS5wYXJlbnRQYXRoUGFyYW1zID0gey4uLml0ZW0ucGFyZW50UGF0aFBhcmFtcywgLi4ucGFyYW1zfTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbTtcbiAgfVxuXG4gIHN0YXRpYyBpc1BhcmVudChjaGlsZDogTWVudUl0ZW0sIHBhcmVudDogTWVudUl0ZW0gfCBNZW51UGF0aFBhcmFtKSB7XG4gICAgcmV0dXJuIGNoaWxkLnBhcmVudFBhdGggJiYgY2hpbGQucGFyZW50UGF0aCA9PT0gcGFyZW50Py5wYXRoXG4gICAgICAgICYmIHRoaXMuaXNTYW1lUGFyYW1zKGNoaWxkLnBhcmVudFBhdGhQYXJhbXMsIHBhcmVudFsncGF0aFBhcmFtcyddIHx8IHBhcmVudFsncGFyYW1zJ10pIHx8IGZhbHNlO1xuICB9XG5cbiAgc3RhdGljIGNoZWNrSWZWaXNpYmxlKGl0ZW06IE1lbnVJdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3VudDogQWNjb3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZzogQ29uZmlndXJhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdHM/OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9naW4/OiBib29sZWFuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Zz86IGJvb2xlYW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ1ByZWZpeD86IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pOiBib29sZWFuIHtcbiAgICBvcHRzID0gb3B0cyB8fCB7fTtcbiAgICBpZiAoaXRlbS5wcm9maWxlKSB7XG4gICAgICBjb25zdCBoYXNQcm9maWxlID0gQWNjb3VudFV0aWxzLmhhc01pblByb2ZpbGUoYWNjb3VudCwgaXRlbS5wcm9maWxlKTtcbiAgICAgIGlmICghaGFzUHJvZmlsZSkge1xuICAgICAgICBpZiAob3B0cy5kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHtvcHRzICYmIG9wdHMubG9nUHJlZml4IHx8ICdbbWVudS1zZXJ2aWNlXSd9IEhpZGUgaXRlbSAnJHtpdGVtLnRpdGxlfSc6IG5lZWQgdGhlIG1pbiBwcm9maWxlICcke2l0ZW0ucHJvZmlsZX0nIHRvIGFjY2VzcyBwYXRoICcke2l0ZW0ucGF0aH0nYCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBlbHNlIGlmIChpdGVtLmV4YWN0UHJvZmlsZSkge1xuICAgICAgY29uc3QgaGFzRXhhY3RQcm9maWxlID0gQWNjb3VudFV0aWxzLmhhc0V4YWN0UHJvZmlsZShhY2NvdW50LCBpdGVtLmV4YWN0UHJvZmlsZSk7XG4gICAgICBpZiAoIWhhc0V4YWN0UHJvZmlsZSkge1xuICAgICAgICBpZiAob3B0cy5kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgJHtvcHRzICYmIG9wdHMubG9nUHJlZml4IHx8ICdbbWVudS1zZXJ2aWNlXSd9IEhpZGUgaXRlbSAnJHtpdGVtLnRpdGxlfSc6IG5lZWQgZXhhY3QgcHJvZmlsZSAnJHtpdGVtLmV4YWN0UHJvZmlsZX0nIHRvIGFjY2VzcyBwYXRoICcke2l0ZW0ucGF0aH0nYCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiBlbmFibGUgYnkgY29uZmlnXG4gICAgaWYgKGl0ZW0uaWZQcm9wZXJ0eSkge1xuICAgICAgLy9jb25zb2xlLmRlYnVnKFwiW21lbnVdIENoZWNraW5nIGlmIHByb3BlcnR5IGVuYWJsZSA/IFwiICsgaXRlbS5pZlByb3BlcnR5LCBjb25maWcgJiYgY29uZmlnLnByb3BlcnRpZXMpO1xuICAgICAgY29uc3QgaXNFbmFibGVCeUNvbmZpZyA9IGNvbmZpZyAmJiBjb25maWcucHJvcGVydGllc1tpdGVtLmlmUHJvcGVydHldID09PSAndHJ1ZSc7XG4gICAgICBpZiAoIWlzRW5hYmxlQnlDb25maWcpIHtcbiAgICAgICAgaWYgKG9wdHMuZGVidWcpIGNvbnNvbGUuZGVidWcoJ1ttZW51LXNlcnZpY2VdIENvbmZpZyBwcm9wZXJ0eSBcXCcnICsgaXRlbS5pZlByb3BlcnR5ICsgJ1xcJyBub3QgXFwndHJ1ZVxcJyBmb3IgJywgaXRlbS5wYXRoKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgc3RhdGljIGlzUGlubmVkKGl0ZW06IE1lbnVJdGVtKSB7XG4gICAgaWYgKGl0ZW0/LnBpbm5lZCkgcmV0dXJuIHRydWU7XG4gICAgaWYgKCFpdGVtPy4kY2hpbGRyZW4gfHwgaXRlbS4kY2hpbGRyZW4udmFsdWUubGVuZ3RoIDwgMSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBpdGVtLiRjaGlsZHJlbi52YWx1ZS5zb21lKGkgPT4gTWVudUl0ZW1zLmlzUGlubmVkKGkpKTtcbiAgfVxuXG4gIHN0YXRpYyBwYXJzZVBhdGhXaXRoUXVlcnkocGF0aFdpdGhRdWVyeTogc3RyaW5nKTogTWVudVBhdGhQYXJhbSB7XG4gICAgY29uc3QgaW5kZXggPSBwYXRoV2l0aFF1ZXJ5Lmxhc3RJbmRleE9mKCc/Jyk7XG4gICAgaWYgKGluZGV4IDwgMCkgcmV0dXJuIHtwYXRoOiBwYXRoV2l0aFF1ZXJ5LCBwYXJhbXM6IHt9fTtcbiAgICBjb25zdCBwYXRoID0gcGF0aFdpdGhRdWVyeS5zdWJzdHJpbmcoMCwgaW5kZXgpO1xuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gcGF0aFdpdGhRdWVyeS5zdWJzdHJpbmcoaW5kZXgpO1xuICAgIGNvbnN0IHBhcmFtcyA9IE9iamVjdC5mcm9tRW50cmllcyhuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5U3RyaW5nKSk7XG4gICAgcmV0dXJuIHtwYXRoLCBwYXJhbXN9O1xuICB9XG5cbiAgc3RhdGljIGdldFVybChpdGVtOiBNZW51SXRlbSkge1xuICAgIHJldHVybiB0aGlzLmdldFVybEZyb21QYXRoQW5kUGFyYW1zKGl0ZW0/LnBhdGgsIGl0ZW0/LnBhdGhQYXJhbXMpO1xuICB9XG5cbiAgc3RhdGljIGdldFVybEZyb21QYXRoQW5kUGFyYW1zKHBhdGg6IHN0cmluZywgcGFyYW1zPzogYW55KSB7XG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSBPYmplY3QuZW50cmllcyhwYXJhbXMgfHwge30pLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9PSR7dmFsdWV9YCkuam9pbignJicpO1xuICAgIGlmIChpc05pbE9yQmxhbmsocXVlcnlTdHJpbmcpKSByZXR1cm4gcGF0aCB8fCAnJztcbiAgICByZXR1cm4gYCR7cGF0aCB8fCcnfT8ke3F1ZXJ5U3RyaW5nfWA7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1lbnVPcHRpb25zIHtcbiAgLy8gVE9ETyBhZGQgb3B0aW9ucywgd2hlbiBuZWVkIHNwZWNpZmljIGJlaGF2aW9yIG9uIHByb2plY3RzXG59XG4iXX0=
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9tZW51L21lbnUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzFGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkMsT0FBTyxFQUFXLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBOEJ4RSxNQUFNLE9BQU8sUUFBUTtJQUFyQjtRQTZCRSxXQUFNLEdBQUUsSUFBSSxlQUFlLENBQVMsU0FBUyxDQUFDLENBQUM7UUFDL0MsY0FBUyxHQUFFLElBQUksZUFBZSxDQUFhLEVBQUUsQ0FBQyxDQUFDO0lBc0ZqRCxDQUFDO0lBcEZDLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBVztRQUMzQixJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3pCLElBQUksTUFBTSxZQUFZLFFBQVE7WUFBRSxPQUFPLE1BQU0sQ0FBQztRQUM5QyxNQUFNLE1BQU0sR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUIsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFXO1FBRXBCLElBQUksQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUVwQixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO1FBQzFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUVsQyxhQUFhO1FBQ2IsSUFBSSxNQUFNLENBQUMsSUFBSSxF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LENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwRyxJQUFJLFlBQVksQ0FBQyxXQUFXLENBQUM7WUFBRSxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7UUFDakQsT0FBTyxHQUFHLElBQUksSUFBRyxFQUFFLElBQUksV0FBVyxFQUFFLENBQUM7SUFDdkMsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLFdBQVc7Q0FFdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVc2VyUHJvZmlsZUxhYmVsIH0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvcGVyc29uLm1vZGVsJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9zZXJ2aWNlcy9tb2RlbC9jb25maWcubW9kZWwnO1xuaW1wb3J0IHsgSWNvblJlZiB9IGZyb20gJy4uLy4uL3NoYXJlZC90eXBlcyc7XG5pbXBvcnQge2lzTmlsT3JCbGFuaywgaXNOb3ROaWwsIGlzTm90TmlsT3JCbGFuaywgdG9Cb29sZWFufSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWVudVBhdGhQYXJhbSB9IGZyb20gJy4vbWVudS5zZXJ2aWNlJztcbmltcG9ydCB7IEFjY291bnQsIEFjY291bnRVdGlscyB9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL2FjY291bnQubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElNZW51SXRlbSBleHRlbmRzIEljb25SZWYge1xuICB0aXRsZTogc3RyaW5nO1xuICBwYXRoPzogc3RyaW5nO1xuXG4gIC8vIEluamVjdGlvbiBwb2ludFxuICBhZnRlcj86IHN0cmluZztcbiAgYmVmb3JlPzogc3RyaW5nO1xuXG4gIGFjdGlvbj86IHN0cmluZyB8IGFueTtcbiAgcHJvZmlsZT86IFVzZXJQcm9maWxlTGFiZWw7XG4gIGV4YWN0UHJvZmlsZT86IFVzZXJQcm9maWxlTGFiZWw7XG4gIGNvbG9yPzogc3RyaW5nO1xuICBjc3NDbGFzcz86IHN0cmluZztcbiAgLy8gQSBjb25maWcgcHJvcGVydHksIHRvIGVuYWJsZSB0aGUgbWVudSBpdGVtXG4gIGlmUHJvcGVydHk/OiBzdHJpbmc7XG4gIC8vIEEgY29uZmlnIHByb3BlcnR5LCB0byBvdmVycmlkZSB0aGUgdGl0bGVcbiAgdGl0bGVQcm9wZXJ0eT86IHN0cmluZztcbiAgdGl0bGVBcmdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcGF0aFBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIHBhcmVudFBhdGg/OiBzdHJpbmc7XG4gIHBhcmVudFBhdGhQYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICBwaW5uZWQ/OiBib29sZWFuO1xuXG4gIC8vIEludGVybmFsIEFQSSAtLSBGSVhNRSByZW1vdmUgaWYgcG9zc2libGVcbiAgaWQ/OiBudW1iZXI7XG4gIGNoaWxkcmVuPzogSU1lbnVJdGVtW107XG59XG5cbmV4cG9ydCBjbGFzcyBNZW51SXRlbSBpbXBsZW1lbnRzIElNZW51SXRlbSB7XG5cbiAgLy8gSW50ZXJuYWwgQVBJXG4gIGlkPzogbnVtYmVyO1xuXG4gIF90aXRsZTogc3RyaW5nO1xuICB0aXRsZVByb3BlcnR5Pzogc3RyaW5nOyAvLyBBIGNvbmZpZyBwcm9wZXJ0eSwgdG8gb3ZlcnJpZGUgdGhlIHRpdGxlXG4gIHRpdGxlQXJncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgcGF0aD86IHN0cmluZztcbiAgcGF0aFBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIHBhcmVudFBhdGg/OiBzdHJpbmc7XG4gIHBhcmVudFBhdGhQYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8vIEluamVjdGlvbiBwb2ludFxuICBhZnRlcj86IHN0cmluZztcbiAgYmVmb3JlPzogc3RyaW5nO1xuXG4gIGFjdGlvbj86IHN0cmluZyB8IGFueTtcbiAgcHJvZmlsZT86IFVzZXJQcm9maWxlTGFiZWw7XG4gIGV4YWN0UHJvZmlsZT86IFVzZXJQcm9maWxlTGFiZWw7XG4gIGNvbG9yPzogc3RyaW5nO1xuICBjc3NDbGFzcz86IHN0cmluZztcbiAgLy8gQSBjb25maWcgcHJvcGVydHksIHRvIGVuYWJsZSB0aGUgbWVudSBpdGVtXG4gIGlmUHJvcGVydHk/OiBzdHJpbmc7XG4gIHBpbm5lZD86IGJvb2xlYW47XG5cbiAgcGFyZW50PzogTWVudUl0ZW07XG5cbiAgJHRpdGxlPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4odW5kZWZpbmVkKTtcbiAgJGNoaWxkcmVuPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1lbnVJdGVtW10+KFtdKTtcblxuICBzdGF0aWMgZnJvbU9iamVjdChzb3VyY2U6IGFueSk6IE1lbnVJdGVtIHtcbiAgICBpZiAoIXNvdXJjZSkgcmV0dXJuIG51bGw7XG4gICAgaWYgKHNvdXJjZSBpbnN0YW5jZW9mIE1lbnVJdGVtKSByZXR1cm4gc291cmNlO1xuICAgIGNvbnN0IHRhcmdldCA9IG5ldyBNZW51SXRlbSgpO1xuICAgIHRhcmdldC5mcm9tT2JqZWN0KHNvdXJjZSk7XG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIGZyb21PYmplY3Qoc291cmNlOiBhbnkpIHtcblxuICAgIHRoaXMuaWQgPSBzb3VyY2UuaWQ7XG5cbiAgICB0aGlzLnRpdGxlID0gc291cmNlLnRpdGxlO1xuICAgIHRoaXMudGl0bGVQcm9wZXJ0eSA9IHNvdXJjZS50aXRsZVByb3BlcnR5O1xuICAgIHRoaXMudGl0bGVBcmdzID0gc291cmNlLnRpdGxlQXJncztcblxuICAgIC8vIENsZWFuIHBhdGhcbiAgICBpZiAoc291cmNlLnBhdGgpIHtcbiAgICAgIGNvbnN0IHtwYXRoLCBwYXJhbXN9ID0gTWVudUl0ZW1zLnBhcnNlUGF0aFdpdGhRdWVyeShzb3VyY2UucGF0aCk7XG4gICAgICB0aGlzLnBhdGggPSBwYXRoO1xuICAgICAgdGhpcy5wYXRoUGFyYW1zID0gey4uLnNvdXJjZS5wYXRoUGFyYW1zLCAuLi5wYXJhbXN9O1xuICAgIH1cbiAgICAvLyBDbGVhbiBwYXJlbnQgcGF0aFxuICAgIGlmIChzb3VyY2UucGFyZW50UGF0aCkge1xuICAgICAgY29uc3Qge3BhdGgsIHBhcmFtc30gPSBNZW51SXRlbXMucGFyc2VQYXRoV2l0aFF1ZXJ5KHNvdXJjZS5wYXJlbnRQYXRoKTtcbiAgICAgIHRoaXMucGFyZW50UGF0aCA9IHBhdGg7XG4gICAgICB0aGlzLnBhcmVudFBhdGhQYXJhbXMgPSB7Li4uc291cmNlLnBhcmVudFBhdGhQYXJhbXMsIC4uLnBhcmFtc307XG4gICAgfVxuXG4gICAgdGhpcy5hZnRlciA9IHNvdXJjZS5hZnRlcjtcbiAgICB0aGlzLmJlZm9yZSA9IHNvdXJjZS5iZWZvcmU7XG5cbiAgICB0aGlzLmFjdGlvbiA9IHNvdXJjZS5hY3Rpb247XG4gICAgdGhpcy5wcm9maWxlID0gc291cmNlLnByb2ZpbGU7XG4gICAgdGhpcy5leGFjdFByb2ZpbGUgPSBzb3VyY2UuZXhhY3RQcm9maWxlO1xuICAgIHRoaXMuY29sb3IgPSBzb3VyY2UuY29sb3I7XG4gICAgdGhpcy5jc3NDbGFzcyA9IHNvdXJjZS5jc3NDbGFzcztcbiAgICB0aGlzLmlmUHJvcGVydHkgPSBzb3VyY2UuaWZQcm9wZXJ0eTtcbiAgICB0aGlzLnBpbm5lZCA9IHRvQm9vbGVhbihzb3VyY2UucGlubmVkLCBmYWxzZSk7XG5cbiAgICB0aGlzLmNoaWxkcmVuID0gKHNvdXJjZS5jaGlsZHJlbiB8fCBbXSkubWFwKE1lbnVJdGVtLmZyb21PYmplY3QpIHx8IFtdO1xuICB9XG5cbiAgYXNPYmplY3QoKTogYW55IHtcbiAgICBjb25zdCB0YXJnZXQgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzKTtcbiAgICBkZWxldGUgdGFyZ2V0LiRjaGlsZHJlbjtcblxuICAgIHRhcmdldC5jaGlsZHJlbiA9ICh0aGlzLmNoaWxkcmVuIHx8IFtdKS5tYXAoYyA9PiBjLmFzT2JqZWN0KCkpO1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIC8vIGFkZENoaWxkKGNoaWxkOiBNZW51SXRlbSkge1xuICAvLyAgIHRoaXMuJGNoaWxkcmVuLm5leHQodGhpcy4kY2hpbGRyZW4udmFsdWUpXG4gIC8vIH1cblxuICBnZXQgY2hpbGRyZW4oKTogTWVudUl0ZW1bXSB7XG4gICAgcmV0dXJuIHRoaXMuJGNoaWxkcmVuLnZhbHVlO1xuICB9XG4gIHNldCBjaGlsZHJlbih2YWx1ZTogTWVudUl0ZW1bXSkge1xuICAgIHRoaXMuJGNoaWxkcmVuLm5leHQodmFsdWUpO1xuICB9XG5cbiAgZ2V0IHRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuJHRpdGxlLnZhbHVlO1xuICB9XG4gIHNldCB0aXRsZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMucGlubmVkKSB7XG4gICAgICAvLyBJZiBsb2FkaW5nLCBrZWVwIGV4aXN0aW5nIHRpdGxlIGlmIHBpbm5lZCAoYXZvaWQgdG8gc2hvdyBza2VsZXRvbilcbiAgICAgIGlmIChpc05vdE5pbE9yQmxhbmsodmFsdWUpKSB0aGlzLiR0aXRsZS5uZXh0KHZhbHVlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNOb3ROaWwodmFsdWUpKSB7XG4gICAgICB0aGlzLiR0aXRsZS5uZXh0KHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgZGV0YWNoZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnBhcmVudFBhdGggfHwgIXRoaXMucGFyZW50O1xuICB9XG5cbiAgaXNQaW5uZWQoKSB7XG4gICAgaWYgKHRoaXMucGlubmVkKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gKHRoaXMuY2hpbGRyZW4gfHwgW10pLnNvbWUoY2hpbGQgPT4gY2hpbGQuaXNQaW5uZWQoKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1lbnVJdGVtcyB7XG5cbiAgLyoqXG4gICAqIENvbXBhcmUsIHdpdGhvdXQgY2hlY2tpbmcgdGhlIGNoaWxkcmVuXG4gICAqXG4gICAqIEBwYXJhbSBtYWluSXRlbVxuICAgKiBAcGFyYW0gb3RoZXJJdGVtXG4gICAqL1xuICBzdGF0aWMgaXNTYW1lKG1haW5JdGVtOiBJTWVudUl0ZW0sIG90aGVySXRlbTogSU1lbnVJdGVtKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNTYW1lSWRPclBhdGhBbmRQYXJhbXMobWFpbkl0ZW0sIG90aGVySXRlbSlcbiAgICAgICYmIG1haW5JdGVtLnRpdGxlID09PSBvdGhlckl0ZW0udGl0bGU7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGFyZSwgd2l0aG91dCBjaGVja2luZyB0aGUgY2hpbGRyZW4gYW5kIHRoZSB0aXRsZVxuICAgKlxuICAgKiBAcGFyYW0gbWFpbkl0ZW1cbiAgICogQHBhcmFtIG90aGVySXRlbVxuICAgKi9cbiAgc3RhdGljIGlzU2FtZUlkT3JQYXRoQW5kUGFyYW1zKG1haW5JdGVtOiBJTWVudUl0ZW0sIG90aGVySXRlbTogSU1lbnVJdGVtKSB7XG4gICAgcmV0dXJuIChpc05vdE5pbChtYWluSXRlbT8uaWQpICYmIG1haW5JdGVtLmlkID09PSBvdGhlckl0ZW0/LmlkKVxuICAgICAgfHwgdGhpcy5pc1NhbWVQYXRoQW5kUGFyYW1zKG1haW5JdGVtLCBvdGhlckl0ZW0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBhcmUsIHdpdGhvdXQgY2hlY2tpbmcgdGhlIGNoaWxkcmVuXG4gICAqXG4gICAqIEBwYXJhbSBtYWluSXRlbVxuICAgKiBAcGFyYW0gb3RoZXJJdGVtXG4gICAqL1xuICBzdGF0aWMgaXNTYW1lUGF0aEFuZFBhcmFtcyhtYWluSXRlbTogSU1lbnVJdGVtLCBvdGhlckl0ZW06IElNZW51SXRlbSkge1xuICAgIHJldHVybiBtYWluSXRlbSAmJiBtYWluSXRlbS5wYXRoID09PSBvdGhlckl0ZW0/LnBhdGhcbiAgICAgICYmIG1haW5JdGVtLnBhcmVudFBhdGggPT09IG90aGVySXRlbS5wYXJlbnRQYXRoXG4gICAgICAmJiB0aGlzLmlzU2FtZVBhcmFtcyhtYWluSXRlbS5wYXRoUGFyYW1zLCBvdGhlckl0ZW0ucGF0aFBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICogQWxsIGtleS92YWx1ZSBvZiB0aGUgbWFpblBhcmFtcyBzaG91bGQgZXhpc3QgKGFuZCBiZSBlcXVhbHMpIGluIHRoZSBvdGhlciBwYXJhbXNcbiAgICpcbiAgICogQHBhcmFtIG1haW5QYXJhbXNcbiAgICogQHBhcmFtIG90aGVyUGFyYW1zXG4gICAqL1xuICBzdGF0aWMgaXNTYW1lUGFyYW1zKG1haW5QYXJhbXM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9LCBvdGhlclBhcmFtczoge1trZXk6IHN0cmluZ106IHN0cmluZ30pIHtcbiAgICBjb25zdCBtYWluRW50cmllcyA9IE9iamVjdC5lbnRyaWVzKG1haW5QYXJhbXMpO1xuICAgIGNvbnN0IG90aGVyRW50cmllcyA9IE9iamVjdC5lbnRyaWVzKG90aGVyUGFyYW1zKTtcbiAgICAvLyBUT0RPOiBlc3QtY2UgcXVlIHVuIGl0ZW0gbmUgcG91cnJhaXQgcGFzIGF2b2lyIHBsdXMgZGUgcGFyYW1zIGRhbnMgbCdpdGVtIGV4aXN0YW50ID9cbiAgICByZXR1cm4gKG1haW5FbnRyaWVzLmxlbmd0aCA9PT0gb3RoZXJFbnRyaWVzLmxlbmd0aCkgJiYgbWFpbkVudHJpZXMuZXZlcnkoKFtrZXksIHZhbHVlXSkgPT4gdmFsdWUgPT09IG90aGVyUGFyYW1zW2tleV0pO1xuICB9XG5cbiAgc3RhdGljIGlzUGFyZW50KGNoaWxkOiBJTWVudUl0ZW0sIHBhcmVudDogSU1lbnVJdGVtIHwgTWVudVBhdGhQYXJhbSkge1xuICAgIHJldHVybiBjaGlsZC5wYXJlbnRQYXRoICYmIGNoaWxkLnBhcmVudFBhdGggPT09IHBhcmVudD8ucGF0aFxuICAgICAgICAmJiB0aGlzLmlzU2FtZVBhcmFtcyhjaGlsZC5wYXJlbnRQYXRoUGFyYW1zLCBwYXJlbnRbJ3BhdGhQYXJhbXMnXSB8fCBwYXJlbnRbJ3BhcmFtcyddKSB8fCBmYWxzZTtcbiAgfVxuXG4gIHN0YXRpYyBjaGVja0lmVmlzaWJsZShpdGVtOiBJTWVudUl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBhY2NvdW50OiBBY2NvdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnOiBDb25maWd1cmF0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0cz86IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2dpbj86IGJvb2xlYW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnPzogYm9vbGVhbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nUHJlZml4Pzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk6IGJvb2xlYW4ge1xuICAgIG9wdHMgPSBvcHRzIHx8IHt9O1xuICAgIGlmIChpdGVtLnByb2ZpbGUpIHtcbiAgICAgIGNvbnN0IGhhc1Byb2ZpbGUgPSBBY2NvdW50VXRpbHMuaGFzTWluUHJvZmlsZShhY2NvdW50LCBpdGVtLnByb2ZpbGUpO1xuICAgICAgaWYgKCFoYXNQcm9maWxlKSB7XG4gICAgICAgIGlmIChvcHRzLmRlYnVnKSBjb25zb2xlLmRlYnVnKGAke29wdHMgJiYgb3B0cy5sb2dQcmVmaXggfHwgJ1ttZW51LXNlcnZpY2VdJ30gSGlkZSBpdGVtICcke2l0ZW0udGl0bGV9JzogbmVlZCB0aGUgbWluIHByb2ZpbGUgJyR7aXRlbS5wcm9maWxlfScgdG8gYWNjZXNzIHBhdGggJyR7aXRlbS5wYXRofSdgKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGVsc2UgaWYgKGl0ZW0uZXhhY3RQcm9maWxlKSB7XG4gICAgICBjb25zdCBoYXNFeGFjdFByb2ZpbGUgPSBBY2NvdW50VXRpbHMuaGFzRXhhY3RQcm9maWxlKGFjY291bnQsIGl0ZW0uZXhhY3RQcm9maWxlKTtcbiAgICAgIGlmICghaGFzRXhhY3RQcm9maWxlKSB7XG4gICAgICAgIGlmIChvcHRzLmRlYnVnKSBjb25zb2xlLmRlYnVnKGAke29wdHMgJiYgb3B0cy5sb2dQcmVmaXggfHwgJ1ttZW51LXNlcnZpY2VdJ30gSGlkZSBpdGVtICcke2l0ZW0udGl0bGV9JzogbmVlZCBleGFjdCBwcm9maWxlICcke2l0ZW0uZXhhY3RQcm9maWxlfScgdG8gYWNjZXNzIHBhdGggJyR7aXRlbS5wYXRofSdgKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIGVuYWJsZSBieSBjb25maWdcbiAgICBpZiAoaXRlbS5pZlByb3BlcnR5KSB7XG4gICAgICAvL2NvbnNvbGUuZGVidWcoXCJbbWVudV0gQ2hlY2tpbmcgaWYgcHJvcGVydHkgZW5hYmxlID8gXCIgKyBpdGVtLmlmUHJvcGVydHksIGNvbmZpZyAmJiBjb25maWcucHJvcGVydGllcyk7XG4gICAgICBjb25zdCBpc0VuYWJsZUJ5Q29uZmlnID0gY29uZmlnICYmIGNvbmZpZy5wcm9wZXJ0aWVzW2l0ZW0uaWZQcm9wZXJ0eV0gPT09ICd0cnVlJztcbiAgICAgIGlmICghaXNFbmFibGVCeUNvbmZpZykge1xuICAgICAgICBpZiAob3B0cy5kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW21lbnUtc2VydmljZV0gQ29uZmlnIHByb3BlcnR5IFxcJycgKyBpdGVtLmlmUHJvcGVydHkgKyAnXFwnIG5vdCBcXCd0cnVlXFwnIGZvciAnLCBpdGVtLnBhdGgpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBzdGF0aWMgY2hlY2tJZlN1Yk1lbnVWaXNpYmxlKGl0ZW06IE1lbnVJdGVtLCBjdXJyZW50UGF0aFBhcmFtOiBNZW51UGF0aFBhcmFtKSB7XG4gICAgaWYgKCFpdGVtLnBhcmVudFBhdGgpIHJldHVybiBmYWxzZTsgLy8gU2hvdWxkIGhhdmUgYSBwYXJlbnRcblxuICAgIGlmIChpdGVtLmlzUGlubmVkKCkpIHJldHVybiB0cnVlOyAvLyBBbHdheXMga2VlcCBwaW5uZWQgaXRlbXNcblxuICAgIC8vIEtlZXAgZWFjaCBtZW51IGl0ZW1zIGluIHRoZSBzY29wZSBvZiB0aGUgY3VycmVudCB1cmwgcGF0aFxuICAgIGlmIChjdXJyZW50UGF0aFBhcmFtPy5wYXRoLnN0YXJ0c1dpdGgoaXRlbS5wYXRoKSkgcmV0dXJuIHRydWU7XG5cbiAgICAvLyBOb3QgdmlzaWJsZVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0YXRpYyBwYXJzZVBhdGhXaXRoUXVlcnkocGF0aFdpdGhRdWVyeTogc3RyaW5nKTogTWVudVBhdGhQYXJhbSB7XG4gICAgY29uc3QgaW5kZXggPSBwYXRoV2l0aFF1ZXJ5Lmxhc3RJbmRleE9mKCc/Jyk7XG4gICAgaWYgKGluZGV4IDwgMCkgcmV0dXJuIHtwYXRoOiBwYXRoV2l0aFF1ZXJ5LCBwYXJhbXM6IHt9fTtcbiAgICBjb25zdCBwYXRoID0gcGF0aFdpdGhRdWVyeS5zdWJzdHJpbmcoMCwgaW5kZXgpO1xuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gcGF0aFdpdGhRdWVyeS5zdWJzdHJpbmcoaW5kZXgpO1xuICAgIGNvbnN0IHBhcmFtcyA9IE9iamVjdC5mcm9tRW50cmllcyhuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5U3RyaW5nKSk7XG4gICAgcmV0dXJuIHtwYXRoLCBwYXJhbXN9O1xuICB9XG5cbiAgc3RhdGljIGdldFVybChpdGVtOiBJTWVudUl0ZW0pIHtcbiAgICByZXR1cm4gdGhpcy5nZXRVcmxGcm9tUGF0aEFuZFBhcmFtcyhpdGVtPy5wYXRoLCBpdGVtPy5wYXRoUGFyYW1zKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRVcmxGcm9tUGF0aEFuZFBhcmFtcyhwYXRoOiBzdHJpbmcsIHBhcmFtcz86IGFueSkge1xuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gT2JqZWN0LmVudHJpZXMocGFyYW1zIHx8IHt9KS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCR7a2V5fT0ke3ZhbHVlfWApLmpvaW4oJyYnKTtcbiAgICBpZiAoaXNOaWxPckJsYW5rKHF1ZXJ5U3RyaW5nKSkgcmV0dXJuIHBhdGggfHwgJyc7XG4gICAgcmV0dXJuIGAke3BhdGggfHwnJ30/JHtxdWVyeVN0cmluZ31gO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNZW51T3B0aW9ucyB7XG4gIC8vIFRPRE8gYWRkIG9wdGlvbnMsIHdoZW4gbmVlZCBzcGVjaWZpYyBiZWhhdmlvciBvbiBwcm9qZWN0c1xufVxuIl19
|
|
@@ -5,6 +5,8 @@ import { TranslateModule } from '@ngx-translate/core';
|
|
|
5
5
|
import { RouterModule } from '@angular/router';
|
|
6
6
|
import { ForModule } from '@rx-angular/template/for';
|
|
7
7
|
import { SubMenuTabDirective } from './sub-menu-tab.directive';
|
|
8
|
+
import { IfModule } from '@rx-angular/template/if';
|
|
9
|
+
import { LetModule } from '@rx-angular/template/let';
|
|
8
10
|
import * as i0 from "@angular/core";
|
|
9
11
|
import * as i1 from "@ngx-translate/core";
|
|
10
12
|
export class AppMenuModule {
|
|
@@ -14,20 +16,28 @@ AppMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version:
|
|
|
14
16
|
// Components
|
|
15
17
|
MenuComponent,
|
|
16
18
|
// Directive
|
|
17
|
-
SubMenuTabDirective], imports: [SharedModule, RouterModule,
|
|
19
|
+
SubMenuTabDirective], imports: [SharedModule, RouterModule,
|
|
20
|
+
// Rx angular
|
|
21
|
+
ForModule, IfModule, LetModule, i1.TranslateModule], exports: [
|
|
18
22
|
// Modules
|
|
19
23
|
TranslateModule,
|
|
20
24
|
// Components
|
|
21
25
|
MenuComponent,
|
|
22
26
|
// Directive
|
|
23
27
|
SubMenuTabDirective] });
|
|
24
|
-
AppMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AppMenuModule, imports: [SharedModule, RouterModule,
|
|
28
|
+
AppMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AppMenuModule, imports: [SharedModule, RouterModule,
|
|
29
|
+
// Rx angular
|
|
30
|
+
ForModule, IfModule, LetModule,
|
|
31
|
+
TranslateModule.forChild(),
|
|
25
32
|
// Modules
|
|
26
33
|
TranslateModule] });
|
|
27
34
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AppMenuModule, decorators: [{
|
|
28
35
|
type: NgModule,
|
|
29
36
|
args: [{
|
|
30
|
-
imports: [SharedModule, RouterModule,
|
|
37
|
+
imports: [SharedModule, RouterModule,
|
|
38
|
+
// Rx angular
|
|
39
|
+
ForModule, IfModule, LetModule,
|
|
40
|
+
TranslateModule.forChild()],
|
|
31
41
|
declarations: [
|
|
32
42
|
// Components
|
|
33
43
|
MenuComponent,
|
|
@@ -44,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
44
54
|
],
|
|
45
55
|
}]
|
|
46
56
|
}] });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvbWVudS9tZW51Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ2pELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBd0JuRCxNQUFNLE9BQU8sYUFBYTs7MEdBQWIsYUFBYTsyR0FBYixhQUFhO1FBZHRCLGFBQWE7UUFDYixhQUFhO1FBQ2IsWUFBWTtRQUNaLG1CQUFtQixhQVZYLFlBQVksRUFBRSxZQUFZO1FBQ2xDLGFBQWE7UUFDYixTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVM7UUFXOUIsVUFBVTtRQUNWLGVBQWU7UUFDZixhQUFhO1FBQ2IsYUFBYTtRQUNiLFlBQVk7UUFDWixtQkFBbUI7MkdBR1YsYUFBYSxZQXJCZCxZQUFZLEVBQUUsWUFBWTtRQUNsQyxhQUFhO1FBQ2IsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTO1FBRTlCLGVBQWUsQ0FBQyxRQUFRLEVBQUU7UUFTMUIsVUFBVTtRQUNWLGVBQWU7MkZBT04sYUFBYTtrQkF0QnpCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVk7d0JBQ2xDLGFBQWE7d0JBQ2IsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTO3dCQUU5QixlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBRTdCLFlBQVksRUFBRTt3QkFDWixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsWUFBWTt3QkFDWixtQkFBbUI7cUJBQ3BCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxVQUFVO3dCQUNWLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixhQUFhO3dCQUNiLFlBQVk7d0JBQ1osbUJBQW1CO3FCQUNwQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTaGFyZWRNb2R1bGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2hhcmVkLm1vZHVsZSc7XG5pbXBvcnQgeyBNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBGb3JNb2R1bGUgfSBmcm9tICdAcngtYW5ndWxhci90ZW1wbGF0ZS9mb3InO1xuaW1wb3J0IHtTdWJNZW51VGFiRGlyZWN0aXZlfSBmcm9tICcuL3N1Yi1tZW51LXRhYi5kaXJlY3RpdmUnO1xuaW1wb3J0IHtJZk1vZHVsZX0gZnJvbSAnQHJ4LWFuZ3VsYXIvdGVtcGxhdGUvaWYnO1xuaW1wb3J0IHtMZXRNb2R1bGV9IGZyb20gJ0ByeC1hbmd1bGFyL3RlbXBsYXRlL2xldCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtTaGFyZWRNb2R1bGUsIFJvdXRlck1vZHVsZSxcbiAgICAvLyBSeCBhbmd1bGFyXG4gICAgRm9yTW9kdWxlLCBJZk1vZHVsZSwgTGV0TW9kdWxlLFxuXG4gICAgVHJhbnNsYXRlTW9kdWxlLmZvckNoaWxkKCldLFxuXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIC8vIENvbXBvbmVudHNcbiAgICBNZW51Q29tcG9uZW50LFxuICAgIC8vIERpcmVjdGl2ZVxuICAgIFN1Yk1lbnVUYWJEaXJlY3RpdmUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICAvLyBNb2R1bGVzXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIC8vIENvbXBvbmVudHNcbiAgICBNZW51Q29tcG9uZW50LFxuICAgIC8vIERpcmVjdGl2ZVxuICAgIFN1Yk1lbnVUYWJEaXJlY3RpdmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFwcE1lbnVNb2R1bGUge31cbiJdfQ==
|