@delon/theme 15.2.1 → 16.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/compact.css +5 -14
- package/compact.min.css +1 -1
- package/dark.css +5 -14
- package/dark.min.css +1 -1
- package/default.css +5 -14
- package/default.min.css +1 -1
- package/esm2022/layout-default/layout-header-item-trigger.directive.mjs +17 -0
- package/esm2022/layout-default/layout-header-item.component.mjs +34 -0
- package/esm2022/layout-default/layout-header.component.mjs +127 -0
- package/esm2022/layout-default/layout-nav.component.mjs +295 -0
- package/esm2022/layout-default/layout-top-menu-item.mjs +40 -0
- package/esm2022/layout-default/layout.component.mjs +163 -0
- package/esm2022/layout-default/layout.module.mjs +72 -0
- package/esm2022/layout-default/layout.service.mjs +66 -0
- package/esm2022/setting-drawer/setting-drawer-item.component.mjs +36 -0
- package/esm2022/setting-drawer/setting-drawer.component.mjs +195 -0
- package/esm2022/setting-drawer/setting-drawer.module.mjs +67 -0
- package/esm2022/src/locale/locale.module.mjs +18 -0
- package/esm2022/src/locale/locale.service.mjs +46 -0
- package/esm2022/src/pipes/date/date.pipe.mjs +25 -0
- package/esm2022/src/pipes/keys/keys.pipe.mjs +22 -0
- package/esm2022/src/pipes/safe/html.pipe.mjs +19 -0
- package/esm2022/src/pipes/safe/url.pipe.mjs +19 -0
- package/esm2022/src/pipes/yn/yn.pipe.mjs +39 -0
- package/esm2022/src/services/drawer/drawer.helper.mjs +92 -0
- package/esm2022/src/services/http/http.client.mjs +154 -0
- package/esm2022/src/services/http/http.decorator.mjs +216 -0
- package/esm2022/src/services/i18n/i18n-url.guard.mjs +37 -0
- package/esm2022/src/services/i18n/i18n.mjs +98 -0
- package/esm2022/src/services/i18n/i18n.pipe.mjs +22 -0
- package/esm2022/src/services/menu/menu.service.mjs +302 -0
- package/esm2022/src/services/modal/modal.helper.mjs +107 -0
- package/esm2022/src/services/responsive/responsive.mjs +47 -0
- package/esm2022/src/services/rtl/rtl.service.mjs +102 -0
- package/esm2022/src/services/settings/settings.service.mjs +101 -0
- package/esm2022/src/services/title/title.service.mjs +147 -0
- package/esm2022/src/theme.module.mjs +77 -0
- package/{esm2020 → esm2022}/src/version.mjs +1 -1
- package/esm2022/theme-btn/theme-btn.component.mjs +110 -0
- package/esm2022/theme-btn/theme-btn.module.mjs +33 -0
- package/{fesm2020 → fesm2022}/layout-default.mjs +55 -55
- package/{fesm2015 → fesm2022}/layout-default.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/setting-drawer.mjs +32 -32
- package/{fesm2015 → fesm2022}/setting-drawer.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/theme-btn.mjs +12 -12
- package/fesm2022/theme-btn.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/theme.mjs +75 -75
- package/{fesm2020 → fesm2022}/theme.mjs.map +1 -1
- package/layout-default/layout-header-item.component.d.ts +1 -1
- package/layout-default/layout-header.component.d.ts +1 -1
- package/layout-default/layout-nav.component.d.ts +1 -1
- package/layout-default/layout-top-menu-item.d.ts +1 -1
- package/layout-default/layout.component.d.ts +1 -1
- package/package.json +20 -34
- package/setting-drawer/setting-drawer-item.component.d.ts +1 -1
- package/setting-drawer/setting-drawer.component.d.ts +1 -1
- package/system/utils/_other.less +1 -4
- package/system/widgets/_abs.less +1 -4
- package/theme-btn/theme-btn.component.d.ts +1 -1
- package/esm2020/layout-default/layout-header-item-trigger.directive.mjs +0 -16
- package/esm2020/layout-default/layout-header-item.component.mjs +0 -33
- package/esm2020/layout-default/layout-header.component.mjs +0 -126
- package/esm2020/layout-default/layout-nav.component.mjs +0 -294
- package/esm2020/layout-default/layout-top-menu-item.mjs +0 -39
- package/esm2020/layout-default/layout.component.mjs +0 -162
- package/esm2020/layout-default/layout.module.mjs +0 -71
- package/esm2020/layout-default/layout.service.mjs +0 -65
- package/esm2020/setting-drawer/setting-drawer-item.component.mjs +0 -35
- package/esm2020/setting-drawer/setting-drawer.component.mjs +0 -194
- package/esm2020/setting-drawer/setting-drawer.module.mjs +0 -66
- package/esm2020/src/locale/locale.module.mjs +0 -17
- package/esm2020/src/locale/locale.service.mjs +0 -45
- package/esm2020/src/pipes/date/date.pipe.mjs +0 -24
- package/esm2020/src/pipes/keys/keys.pipe.mjs +0 -21
- package/esm2020/src/pipes/safe/html.pipe.mjs +0 -18
- package/esm2020/src/pipes/safe/url.pipe.mjs +0 -18
- package/esm2020/src/pipes/yn/yn.pipe.mjs +0 -38
- package/esm2020/src/services/drawer/drawer.helper.mjs +0 -91
- package/esm2020/src/services/http/http.client.mjs +0 -153
- package/esm2020/src/services/http/http.decorator.mjs +0 -215
- package/esm2020/src/services/i18n/i18n-url.guard.mjs +0 -36
- package/esm2020/src/services/i18n/i18n.mjs +0 -96
- package/esm2020/src/services/i18n/i18n.pipe.mjs +0 -21
- package/esm2020/src/services/menu/menu.service.mjs +0 -301
- package/esm2020/src/services/modal/modal.helper.mjs +0 -106
- package/esm2020/src/services/responsive/responsive.mjs +0 -46
- package/esm2020/src/services/rtl/rtl.service.mjs +0 -101
- package/esm2020/src/services/settings/settings.service.mjs +0 -100
- package/esm2020/src/services/title/title.service.mjs +0 -146
- package/esm2020/src/theme.module.mjs +0 -76
- package/esm2020/theme-btn/theme-btn.component.mjs +0 -109
- package/esm2020/theme-btn/theme-btn.module.mjs +0 -32
- package/fesm2015/layout-default.mjs +0 -773
- package/fesm2015/setting-drawer.mjs +0 -487
- package/fesm2015/theme-btn.mjs +0 -147
- package/fesm2015/theme-btn.mjs.map +0 -1
- package/fesm2015/theme.mjs +0 -2696
- package/fesm2015/theme.mjs.map +0 -1
- package/fesm2020/layout-blank.mjs +0 -7
- package/fesm2020/layout-blank.mjs.map +0 -1
- package/fesm2020/layout-default.mjs.map +0 -1
- package/fesm2020/setting-drawer.mjs.map +0 -1
- package/fesm2020/theme-btn.mjs.map +0 -1
- /package/{esm2020 → esm2022}/layout-blank/layout-blank.mjs +0 -0
- /package/{esm2020 → esm2022}/layout-blank/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/layout-default/layout-default.mjs +0 -0
- /package/{esm2020 → esm2022}/layout-default/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/layout-default/types.mjs +0 -0
- /package/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/setting-drawer/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/setting-drawer/setting-drawer.mjs +0 -0
- /package/{esm2020 → esm2022}/setting-drawer/setting-drawer.types.mjs +0 -0
- /package/{esm2020 → esm2022}/src/config.mjs +0 -0
- /package/{esm2020 → esm2022}/src/locale/index.mjs +0 -0
- /package/{esm2020 → esm2022}/src/locale/languages/el-GR.mjs +0 -0
- /package/{esm2020 → esm2022}/src/locale/languages/en-US.mjs +0 -0
- /package/{esm2020 → esm2022}/src/locale/languages/es-ES.mjs +0 -0
- /package/{esm2020 → esm2022}/src/locale/languages/fr-FR.mjs +0 -0
- /package/{esm2020 → esm2022}/src/locale/languages/hr-HR.mjs +0 -0
- /package/{esm2020 → esm2022}/src/locale/languages/it-IT.mjs +0 -0
- /package/{esm2020 → esm2022}/src/locale/languages/ja-JP.mjs +0 -0
- /package/{esm2020 → esm2022}/src/locale/languages/ko-KR.mjs +0 -0
- /package/{esm2020 → esm2022}/src/locale/languages/pl-PL.mjs +0 -0
- /package/{esm2020 → esm2022}/src/locale/languages/sl-SI.mjs +0 -0
- /package/{esm2020 → esm2022}/src/locale/languages/tr-TR.mjs +0 -0
- /package/{esm2020 → esm2022}/src/locale/languages/zh-CN.mjs +0 -0
- /package/{esm2020 → esm2022}/src/locale/languages/zh-TW.mjs +0 -0
- /package/{esm2020 → esm2022}/src/locale/locale.tokens.mjs +0 -0
- /package/{esm2020 → esm2022}/src/locale/locale.types.mjs +0 -0
- /package/{esm2020 → esm2022}/src/locale/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/src/router/optional-preloader.mjs +0 -0
- /package/{esm2020 → esm2022}/src/services/http/http.token.mjs +0 -0
- /package/{esm2020 → esm2022}/src/services/http/index.mjs +0 -0
- /package/{esm2020 → esm2022}/src/services/i18n/index.mjs +0 -0
- /package/{esm2020 → esm2022}/src/services/menu/interface.mjs +0 -0
- /package/{esm2020 → esm2022}/src/services/preloader/preloader.mjs +0 -0
- /package/{esm2020 → esm2022}/src/services/settings/types.mjs +0 -0
- /package/{esm2020 → esm2022}/theme-btn/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/theme-btn/theme-btn.mjs +0 -0
- /package/{esm2020 → esm2022}/theme.mjs +0 -0
- /package/{fesm2015 → fesm2022}/layout-blank.mjs +0 -0
- /package/{fesm2015 → fesm2022}/layout-blank.mjs.map +0 -0
|
@@ -1,294 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { DOCUMENT } from '@angular/common';
|
|
3
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Optional, Output, ViewEncapsulation } from '@angular/core';
|
|
4
|
-
import { NavigationEnd } from '@angular/router';
|
|
5
|
-
import { Subject, filter, takeUntil } from 'rxjs';
|
|
6
|
-
import { InputBoolean, InputNumber, ZoneOutside } from '@delon/util/decorator';
|
|
7
|
-
import { WINDOW } from '@delon/util/token';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "@delon/theme";
|
|
10
|
-
import * as i2 from "@angular/router";
|
|
11
|
-
import * as i3 from "@angular/platform-browser";
|
|
12
|
-
import * as i4 from "@angular/cdk/bidi";
|
|
13
|
-
import * as i5 from "@angular/common";
|
|
14
|
-
import * as i6 from "ng-zorro-antd/tooltip";
|
|
15
|
-
import * as i7 from "ng-zorro-antd/icon";
|
|
16
|
-
import * as i8 from "ng-zorro-antd/badge";
|
|
17
|
-
const SHOWCLS = 'sidebar-nav__floating-show';
|
|
18
|
-
const FLOATINGCLS = 'sidebar-nav__floating';
|
|
19
|
-
export class LayoutDefaultNavComponent {
|
|
20
|
-
set openStrictly(value) {
|
|
21
|
-
this.menuSrv.openStrictly = value;
|
|
22
|
-
}
|
|
23
|
-
get collapsed() {
|
|
24
|
-
return this.settings.layout.collapsed;
|
|
25
|
-
}
|
|
26
|
-
constructor(menuSrv, settings, router, render, cdr, ngZone, sanitizer, doc, win, directionality) {
|
|
27
|
-
this.menuSrv = menuSrv;
|
|
28
|
-
this.settings = settings;
|
|
29
|
-
this.router = router;
|
|
30
|
-
this.render = render;
|
|
31
|
-
this.cdr = cdr;
|
|
32
|
-
this.ngZone = ngZone;
|
|
33
|
-
this.sanitizer = sanitizer;
|
|
34
|
-
this.doc = doc;
|
|
35
|
-
this.win = win;
|
|
36
|
-
this.directionality = directionality;
|
|
37
|
-
this.destroy$ = new Subject();
|
|
38
|
-
this.dir = 'ltr';
|
|
39
|
-
this.list = [];
|
|
40
|
-
this.disabledAcl = false;
|
|
41
|
-
this.autoCloseUnderPad = true;
|
|
42
|
-
this.recursivePath = true;
|
|
43
|
-
this.maxLevelIcon = 3;
|
|
44
|
-
this.select = new EventEmitter();
|
|
45
|
-
}
|
|
46
|
-
getLinkNode(node) {
|
|
47
|
-
node = node.nodeName === 'A' ? node : node.parentNode;
|
|
48
|
-
return node.nodeName !== 'A' ? null : node;
|
|
49
|
-
}
|
|
50
|
-
floatingClickHandle(e) {
|
|
51
|
-
e.stopPropagation();
|
|
52
|
-
const linkNode = this.getLinkNode(e.target);
|
|
53
|
-
if (linkNode == null) {
|
|
54
|
-
return false;
|
|
55
|
-
}
|
|
56
|
-
const id = +linkNode.dataset.id;
|
|
57
|
-
// Should be ingore children title trigger event
|
|
58
|
-
if (isNaN(id)) {
|
|
59
|
-
return false;
|
|
60
|
-
}
|
|
61
|
-
let item;
|
|
62
|
-
this.menuSrv.visit(this.list, (i) => {
|
|
63
|
-
if (!item && i._id === id) {
|
|
64
|
-
item = i;
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
this.to(item);
|
|
68
|
-
this.hideAll();
|
|
69
|
-
e.preventDefault();
|
|
70
|
-
return false;
|
|
71
|
-
}
|
|
72
|
-
clearFloating() {
|
|
73
|
-
if (!this.floatingEl)
|
|
74
|
-
return;
|
|
75
|
-
this.floatingEl.removeEventListener('click', this.floatingClickHandle.bind(this));
|
|
76
|
-
// fix ie: https://github.com/ng-alain/delon/issues/52
|
|
77
|
-
if (this.floatingEl.hasOwnProperty('remove')) {
|
|
78
|
-
this.floatingEl.remove();
|
|
79
|
-
}
|
|
80
|
-
else if (this.floatingEl.parentNode) {
|
|
81
|
-
this.floatingEl.parentNode.removeChild(this.floatingEl);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
genFloating() {
|
|
85
|
-
this.clearFloating();
|
|
86
|
-
this.floatingEl = this.render.createElement('div');
|
|
87
|
-
this.floatingEl.classList.add(`${FLOATINGCLS}-container`);
|
|
88
|
-
this.floatingEl.addEventListener('click', this.floatingClickHandle.bind(this), false);
|
|
89
|
-
this.bodyEl.appendChild(this.floatingEl);
|
|
90
|
-
}
|
|
91
|
-
genSubNode(linkNode, item) {
|
|
92
|
-
const id = `_sidebar-nav-${item._id}`;
|
|
93
|
-
const childNode = item.badge ? linkNode.nextElementSibling.nextElementSibling : linkNode.nextElementSibling;
|
|
94
|
-
const node = childNode.cloneNode(true);
|
|
95
|
-
node.id = id;
|
|
96
|
-
node.classList.add(FLOATINGCLS);
|
|
97
|
-
node.addEventListener('mouseleave', () => {
|
|
98
|
-
node.classList.remove(SHOWCLS);
|
|
99
|
-
}, false);
|
|
100
|
-
this.floatingEl.appendChild(node);
|
|
101
|
-
return node;
|
|
102
|
-
}
|
|
103
|
-
hideAll() {
|
|
104
|
-
const allNode = this.floatingEl.querySelectorAll(`.${FLOATINGCLS}`);
|
|
105
|
-
for (let i = 0; i < allNode.length; i++) {
|
|
106
|
-
allNode[i].classList.remove(SHOWCLS);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
// calculate the node position values.
|
|
110
|
-
calPos(linkNode, node) {
|
|
111
|
-
const rect = linkNode.getBoundingClientRect();
|
|
112
|
-
// bug: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/14721015/
|
|
113
|
-
const scrollTop = Math.max(this.doc.documentElement.scrollTop, this.bodyEl.scrollTop);
|
|
114
|
-
const docHeight = Math.max(this.doc.documentElement.clientHeight, this.bodyEl.clientHeight);
|
|
115
|
-
const spacing = 5;
|
|
116
|
-
let offsetHeight = -spacing;
|
|
117
|
-
if (docHeight < rect.top + node.clientHeight) {
|
|
118
|
-
offsetHeight = rect.top + node.clientHeight - docHeight + spacing;
|
|
119
|
-
}
|
|
120
|
-
node.style.top = `${rect.top + scrollTop - offsetHeight}px`;
|
|
121
|
-
if (this.dir === 'rtl') {
|
|
122
|
-
node.style.right = `${rect.width + spacing}px`;
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
node.style.left = `${rect.right + spacing}px`;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
showSubMenu(e, item) {
|
|
129
|
-
if (this.collapsed !== true) {
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
e.preventDefault();
|
|
133
|
-
const linkNode = e.target;
|
|
134
|
-
this.genFloating();
|
|
135
|
-
const subNode = this.genSubNode(linkNode, item);
|
|
136
|
-
this.hideAll();
|
|
137
|
-
subNode.classList.add(SHOWCLS);
|
|
138
|
-
this.calPos(linkNode, subNode);
|
|
139
|
-
}
|
|
140
|
-
to(item) {
|
|
141
|
-
this.select.emit(item);
|
|
142
|
-
if (item.disabled)
|
|
143
|
-
return;
|
|
144
|
-
if (item.externalLink) {
|
|
145
|
-
if (item.target === '_blank') {
|
|
146
|
-
this.win.open(item.externalLink);
|
|
147
|
-
}
|
|
148
|
-
else {
|
|
149
|
-
this.win.location.href = item.externalLink;
|
|
150
|
-
}
|
|
151
|
-
return;
|
|
152
|
-
}
|
|
153
|
-
this.ngZone.run(() => this.router.navigateByUrl(item.link));
|
|
154
|
-
}
|
|
155
|
-
toggleOpen(item) {
|
|
156
|
-
this.menuSrv.toggleOpen(item);
|
|
157
|
-
}
|
|
158
|
-
_click() {
|
|
159
|
-
if (this.isPad && this.collapsed) {
|
|
160
|
-
this.openAside(false);
|
|
161
|
-
this.hideAll();
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
closeSubMenu() {
|
|
165
|
-
if (this.collapsed) {
|
|
166
|
-
this.hideAll();
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
openByUrl(url) {
|
|
170
|
-
const { menuSrv, recursivePath } = this;
|
|
171
|
-
this.menuSrv.open(menuSrv.find({ url, recursive: recursivePath }));
|
|
172
|
-
}
|
|
173
|
-
ngOnInit() {
|
|
174
|
-
const { doc, router, destroy$, menuSrv, settings, cdr } = this;
|
|
175
|
-
this.bodyEl = doc.querySelector('body');
|
|
176
|
-
menuSrv.change.pipe(takeUntil(destroy$)).subscribe(data => {
|
|
177
|
-
menuSrv.visit(data, (i, _p, depth) => {
|
|
178
|
-
i._text = this.sanitizer.bypassSecurityTrustHtml(i.text);
|
|
179
|
-
i._needIcon = depth <= this.maxLevelIcon && !!i.icon;
|
|
180
|
-
if (!i._aclResult) {
|
|
181
|
-
if (this.disabledAcl) {
|
|
182
|
-
i.disabled = true;
|
|
183
|
-
}
|
|
184
|
-
else {
|
|
185
|
-
i._hidden = true;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
const icon = i.icon;
|
|
189
|
-
if (icon && icon.type === 'svg' && typeof icon.value === 'string') {
|
|
190
|
-
icon.value = this.sanitizer.bypassSecurityTrustHtml(icon.value);
|
|
191
|
-
}
|
|
192
|
-
});
|
|
193
|
-
this.fixHide(data);
|
|
194
|
-
this.list = data.filter((w) => w._hidden !== true);
|
|
195
|
-
cdr.detectChanges();
|
|
196
|
-
});
|
|
197
|
-
router.events.pipe(takeUntil(destroy$)).subscribe(e => {
|
|
198
|
-
if (e instanceof NavigationEnd) {
|
|
199
|
-
this.openByUrl(e.urlAfterRedirects);
|
|
200
|
-
this.underPad();
|
|
201
|
-
this.cdr.detectChanges();
|
|
202
|
-
}
|
|
203
|
-
});
|
|
204
|
-
settings.notify
|
|
205
|
-
.pipe(takeUntil(destroy$), filter(t => t.type === 'layout' && t.name === 'collapsed'))
|
|
206
|
-
.subscribe(() => this.clearFloating());
|
|
207
|
-
this.underPad();
|
|
208
|
-
this.dir = this.directionality.value;
|
|
209
|
-
this.directionality.change?.pipe(takeUntil(destroy$)).subscribe((direction) => {
|
|
210
|
-
this.dir = direction;
|
|
211
|
-
});
|
|
212
|
-
this.openByUrl(router.url);
|
|
213
|
-
this.ngZone.runOutsideAngular(() => this.genFloating());
|
|
214
|
-
}
|
|
215
|
-
fixHide(ls) {
|
|
216
|
-
const inFn = (list) => {
|
|
217
|
-
for (const item of list) {
|
|
218
|
-
if (item.children && item.children.length > 0) {
|
|
219
|
-
inFn(item.children);
|
|
220
|
-
if (!item._hidden) {
|
|
221
|
-
item._hidden = item.children.every((v) => v._hidden);
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
};
|
|
226
|
-
inFn(ls);
|
|
227
|
-
}
|
|
228
|
-
ngOnDestroy() {
|
|
229
|
-
this.destroy$.next();
|
|
230
|
-
this.destroy$.complete();
|
|
231
|
-
this.clearFloating();
|
|
232
|
-
}
|
|
233
|
-
// #region Under pad
|
|
234
|
-
get isPad() {
|
|
235
|
-
return this.doc.defaultView.innerWidth < 768;
|
|
236
|
-
}
|
|
237
|
-
underPad() {
|
|
238
|
-
if (this.autoCloseUnderPad && this.isPad && !this.collapsed) {
|
|
239
|
-
setTimeout(() => this.openAside(true));
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
openAside(status) {
|
|
243
|
-
this.settings.setLayout('collapsed', status);
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
LayoutDefaultNavComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LayoutDefaultNavComponent, deps: [{ token: i1.MenuService }, { token: i1.SettingsService }, { token: i2.Router }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i3.DomSanitizer }, { token: DOCUMENT }, { token: WINDOW }, { token: i4.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
247
|
-
LayoutDefaultNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: LayoutDefaultNavComponent, selector: "layout-default-nav", inputs: { disabledAcl: "disabledAcl", autoCloseUnderPad: "autoCloseUnderPad", recursivePath: "recursivePath", openStrictly: "openStrictly", maxLevelIcon: "maxLevelIcon" }, outputs: { select: "select" }, host: { listeners: { "click": "_click()", "document:click": "closeSubMenu()" }, properties: { "class.d-block": "true" } }, ngImport: i0, template: "<ng-template #icon let-i>\n <ng-container *ngIf=\"i\" [ngSwitch]=\"i.type\">\n <i\n *ngSwitchCase=\"'icon'\"\n class=\"sidebar-nav__item-icon\"\n nz-icon\n [nzType]=\"i.value\"\n [nzTheme]=\"i.theme\"\n [nzSpin]=\"i.spin\"\n [nzTwotoneColor]=\"i.twoToneColor\"\n [nzIconfont]=\"i.iconfont\"\n [nzRotate]=\"i.rotate\"\n ></i>\n <i *ngSwitchCase=\"'iconfont'\" class=\"sidebar-nav__item-icon\" nz-icon [nzIconfont]=\"i.iconfont\"></i>\n <img *ngSwitchCase=\"'img'\" [src]=\"i.value\" class=\"sidebar-nav__item-icon sidebar-nav__item-img\" />\n <span *ngSwitchCase=\"'svg'\" class=\"sidebar-nav__item-icon sidebar-nav__item-svg\" [innerHTML]=\"i.value\"></span>\n <i *ngSwitchDefault class=\"sidebar-nav__item-icon {{ i.value }}\"></i>\n </ng-container>\n</ng-template>\n<ng-template #tree let-ls>\n <ng-container *ngFor=\"let i of ls\">\n <li\n *ngIf=\"i._hidden !== true\"\n class=\"sidebar-nav__item\"\n [class.sidebar-nav__selected]=\"i._selected\"\n [class.sidebar-nav__open]=\"i.open\"\n >\n <!-- link -->\n <a\n *ngIf=\"i.children.length === 0\"\n (click)=\"to(i)\"\n [attr.data-id]=\"i._id\"\n class=\"sidebar-nav__item-link\"\n [ngClass]=\"{ 'sidebar-nav__item-disabled': i.disabled }\"\n (mouseenter)=\"closeSubMenu()\"\n >\n <ng-container *ngIf=\"i._needIcon\">\n <ng-container *ngIf=\"!collapsed\">\n <ng-template [ngTemplateOutlet]=\"icon\" [ngTemplateOutletContext]=\"{ $implicit: i.icon }\"></ng-template>\n </ng-container>\n <span *ngIf=\"collapsed\" nz-tooltip nzTooltipPlacement=\"right\" [nzTooltipTitle]=\"i.text\">\n <ng-template [ngTemplateOutlet]=\"icon\" [ngTemplateOutletContext]=\"{ $implicit: i.icon }\"></ng-template>\n </span>\n </ng-container>\n <span class=\"sidebar-nav__item-text\" [innerHTML]=\"i._text\" [attr.title]=\"i.text\"></span>\n </a>\n <!-- has children link -->\n <a\n *ngIf=\"i.children.length > 0\"\n (click)=\"toggleOpen(i)\"\n (mouseenter)=\"showSubMenu($event, i)\"\n class=\"sidebar-nav__item-link\"\n >\n <ng-template [ngTemplateOutlet]=\"icon\" [ngTemplateOutletContext]=\"{ $implicit: i.icon }\"></ng-template>\n <span class=\"sidebar-nav__item-text\" [innerHTML]=\"i._text\" [attr.title]=\"i.text\"></span>\n <i class=\"sidebar-nav__sub-arrow\"></i>\n </a>\n <!-- badge -->\n <nz-badge *ngIf=\"i.badge\" [nzCount]=\"i.badge\" [nzDot]=\"i.badgeDot\" nzStandalone [nzOverflowCount]=\"9\"></nz-badge>\n <ul *ngIf=\"i.children.length > 0\" class=\"sidebar-nav sidebar-nav__sub sidebar-nav__depth{{ i._depth }}\">\n <ng-template [ngTemplateOutlet]=\"tree\" [ngTemplateOutletContext]=\"{ $implicit: i.children }\"></ng-template>\n </ul>\n </li>\n </ng-container>\n</ng-template>\n<ul class=\"sidebar-nav\">\n <ng-container *ngFor=\"let group of list\">\n <li class=\"sidebar-nav__item sidebar-nav__group-title\" *ngIf=\"group.group\">\n <span [innerHTML]=\"group._text\"></span>\n </li>\n <ng-template [ngTemplateOutlet]=\"tree\" [ngTemplateOutletContext]=\"{ $implicit: group.children }\"></ng-template>\n </ng-container>\n</ul>\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i5.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i6.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }, { kind: "directive", type: i7.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i8.NzBadgeComponent, selector: "nz-badge", inputs: ["nzShowZero", "nzShowDot", "nzStandalone", "nzDot", "nzOverflowCount", "nzColor", "nzStyle", "nzText", "nzTitle", "nzStatus", "nzCount", "nzOffset", "nzSize"], exportAs: ["nzBadge"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
248
|
-
__decorate([
|
|
249
|
-
InputBoolean()
|
|
250
|
-
], LayoutDefaultNavComponent.prototype, "disabledAcl", void 0);
|
|
251
|
-
__decorate([
|
|
252
|
-
InputBoolean()
|
|
253
|
-
], LayoutDefaultNavComponent.prototype, "autoCloseUnderPad", void 0);
|
|
254
|
-
__decorate([
|
|
255
|
-
InputBoolean()
|
|
256
|
-
], LayoutDefaultNavComponent.prototype, "recursivePath", void 0);
|
|
257
|
-
__decorate([
|
|
258
|
-
InputBoolean()
|
|
259
|
-
], LayoutDefaultNavComponent.prototype, "openStrictly", null);
|
|
260
|
-
__decorate([
|
|
261
|
-
InputNumber()
|
|
262
|
-
], LayoutDefaultNavComponent.prototype, "maxLevelIcon", void 0);
|
|
263
|
-
__decorate([
|
|
264
|
-
ZoneOutside()
|
|
265
|
-
], LayoutDefaultNavComponent.prototype, "showSubMenu", null);
|
|
266
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LayoutDefaultNavComponent, decorators: [{
|
|
267
|
-
type: Component,
|
|
268
|
-
args: [{ selector: 'layout-default-nav', host: {
|
|
269
|
-
'(click)': '_click()',
|
|
270
|
-
'(document:click)': 'closeSubMenu()',
|
|
271
|
-
'[class.d-block]': `true`
|
|
272
|
-
}, preserveWhitespaces: false, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ng-template #icon let-i>\n <ng-container *ngIf=\"i\" [ngSwitch]=\"i.type\">\n <i\n *ngSwitchCase=\"'icon'\"\n class=\"sidebar-nav__item-icon\"\n nz-icon\n [nzType]=\"i.value\"\n [nzTheme]=\"i.theme\"\n [nzSpin]=\"i.spin\"\n [nzTwotoneColor]=\"i.twoToneColor\"\n [nzIconfont]=\"i.iconfont\"\n [nzRotate]=\"i.rotate\"\n ></i>\n <i *ngSwitchCase=\"'iconfont'\" class=\"sidebar-nav__item-icon\" nz-icon [nzIconfont]=\"i.iconfont\"></i>\n <img *ngSwitchCase=\"'img'\" [src]=\"i.value\" class=\"sidebar-nav__item-icon sidebar-nav__item-img\" />\n <span *ngSwitchCase=\"'svg'\" class=\"sidebar-nav__item-icon sidebar-nav__item-svg\" [innerHTML]=\"i.value\"></span>\n <i *ngSwitchDefault class=\"sidebar-nav__item-icon {{ i.value }}\"></i>\n </ng-container>\n</ng-template>\n<ng-template #tree let-ls>\n <ng-container *ngFor=\"let i of ls\">\n <li\n *ngIf=\"i._hidden !== true\"\n class=\"sidebar-nav__item\"\n [class.sidebar-nav__selected]=\"i._selected\"\n [class.sidebar-nav__open]=\"i.open\"\n >\n <!-- link -->\n <a\n *ngIf=\"i.children.length === 0\"\n (click)=\"to(i)\"\n [attr.data-id]=\"i._id\"\n class=\"sidebar-nav__item-link\"\n [ngClass]=\"{ 'sidebar-nav__item-disabled': i.disabled }\"\n (mouseenter)=\"closeSubMenu()\"\n >\n <ng-container *ngIf=\"i._needIcon\">\n <ng-container *ngIf=\"!collapsed\">\n <ng-template [ngTemplateOutlet]=\"icon\" [ngTemplateOutletContext]=\"{ $implicit: i.icon }\"></ng-template>\n </ng-container>\n <span *ngIf=\"collapsed\" nz-tooltip nzTooltipPlacement=\"right\" [nzTooltipTitle]=\"i.text\">\n <ng-template [ngTemplateOutlet]=\"icon\" [ngTemplateOutletContext]=\"{ $implicit: i.icon }\"></ng-template>\n </span>\n </ng-container>\n <span class=\"sidebar-nav__item-text\" [innerHTML]=\"i._text\" [attr.title]=\"i.text\"></span>\n </a>\n <!-- has children link -->\n <a\n *ngIf=\"i.children.length > 0\"\n (click)=\"toggleOpen(i)\"\n (mouseenter)=\"showSubMenu($event, i)\"\n class=\"sidebar-nav__item-link\"\n >\n <ng-template [ngTemplateOutlet]=\"icon\" [ngTemplateOutletContext]=\"{ $implicit: i.icon }\"></ng-template>\n <span class=\"sidebar-nav__item-text\" [innerHTML]=\"i._text\" [attr.title]=\"i.text\"></span>\n <i class=\"sidebar-nav__sub-arrow\"></i>\n </a>\n <!-- badge -->\n <nz-badge *ngIf=\"i.badge\" [nzCount]=\"i.badge\" [nzDot]=\"i.badgeDot\" nzStandalone [nzOverflowCount]=\"9\"></nz-badge>\n <ul *ngIf=\"i.children.length > 0\" class=\"sidebar-nav sidebar-nav__sub sidebar-nav__depth{{ i._depth }}\">\n <ng-template [ngTemplateOutlet]=\"tree\" [ngTemplateOutletContext]=\"{ $implicit: i.children }\"></ng-template>\n </ul>\n </li>\n </ng-container>\n</ng-template>\n<ul class=\"sidebar-nav\">\n <ng-container *ngFor=\"let group of list\">\n <li class=\"sidebar-nav__item sidebar-nav__group-title\" *ngIf=\"group.group\">\n <span [innerHTML]=\"group._text\"></span>\n </li>\n <ng-template [ngTemplateOutlet]=\"tree\" [ngTemplateOutletContext]=\"{ $implicit: group.children }\"></ng-template>\n </ng-container>\n</ul>\n" }]
|
|
273
|
-
}], ctorParameters: function () { return [{ type: i1.MenuService }, { type: i1.SettingsService }, { type: i2.Router }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i3.DomSanitizer }, { type: undefined, decorators: [{
|
|
274
|
-
type: Inject,
|
|
275
|
-
args: [DOCUMENT]
|
|
276
|
-
}] }, { type: undefined, decorators: [{
|
|
277
|
-
type: Inject,
|
|
278
|
-
args: [WINDOW]
|
|
279
|
-
}] }, { type: i4.Directionality, decorators: [{
|
|
280
|
-
type: Optional
|
|
281
|
-
}] }]; }, propDecorators: { disabledAcl: [{
|
|
282
|
-
type: Input
|
|
283
|
-
}], autoCloseUnderPad: [{
|
|
284
|
-
type: Input
|
|
285
|
-
}], recursivePath: [{
|
|
286
|
-
type: Input
|
|
287
|
-
}], openStrictly: [{
|
|
288
|
-
type: Input
|
|
289
|
-
}], maxLevelIcon: [{
|
|
290
|
-
type: Input
|
|
291
|
-
}], select: [{
|
|
292
|
-
type: Output
|
|
293
|
-
}], showSubMenu: [] } });
|
|
294
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LW5hdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS9sYXlvdXQtZGVmYXVsdC9sYXlvdXQtbmF2LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lL2xheW91dC1kZWZhdWx0L2xheW91dC1uYXYuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR2xELE9BQU8sRUFBZ0IsWUFBWSxFQUFFLFdBQVcsRUFBZSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7Ozs7QUFRM0MsTUFBTSxPQUFPLEdBQUcsNEJBQTRCLENBQUM7QUFDN0MsTUFBTSxXQUFXLEdBQUcsdUJBQXVCLENBQUM7QUFjNUMsTUFBTSxPQUFPLHlCQUF5QjtJQWtCcEMsSUFBSSxZQUFZLENBQUMsS0FBYztRQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUlELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxZQUNVLE9BQW9CLEVBQ3BCLFFBQXlCLEVB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QVMsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDL0MsQ0FBQzs7c0hBeFFVLHlCQUF5Qiw4TUFvQzFCLFFBQVEsYUFDUixNQUFNOzBHQXJDTCx5QkFBeUIsZ1lDOUN0Qyxnd0dBeUVBO0FEZDJCO0lBQWYsWUFBWSxFQUFFOzhEQUFxQjtBQUNwQjtJQUFmLFlBQVksRUFBRTtvRUFBMEI7QUFDekI7SUFBZixZQUFZLEVBQUU7Z0VBQXNCO0FBRzlDO0lBREMsWUFBWSxFQUFFOzZEQUdkO0FBQ3VCO0lBQWQsV0FBVyxFQUFFOytEQUFrQjtBQWdIekM7SUFEQyxXQUFXLEVBQUU7NERBWWI7MkZBaEpVLHlCQUF5QjtrQkFackMsU0FBUzsrQkFDRSxvQkFBb0IsUUFFeEI7d0JBQ0osU0FBUyxFQUFFLFVBQVU7d0JBQ3JCLGtCQUFrQixFQUFFLGdCQUFnQjt3QkFDcEMsaUJBQWlCLEVBQUUsTUFBTTtxQkFDMUIsdUJBQ29CLEtBQUssbUJBQ1QsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTs7MEJBc0NsQyxNQUFNOzJCQUFDLFFBQVE7OzBCQUNmLE1BQU07MkJBQUMsTUFBTTs7MEJBQ2IsUUFBUTs0Q0F6QmMsV0FBVztzQkFBbkMsS0FBSztnQkFDbUIsaUJBQWlCO3NCQUF6QyxLQUFLO2dCQUNtQixhQUFhO3NCQUFyQyxLQUFLO2dCQUdGLFlBQVk7c0JBRmYsS0FBSztnQkFLa0IsWUFBWTtzQkFBbkMsS0FBSztnQkFDYSxNQUFNO3NCQUF4QixNQUFNO2dCQStHUCxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aW9uLCBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMixcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3ViamVjdCwgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTWVudSwgTWVudUljb24sIE1lbnVJbm5lciwgTWVudVNlcnZpY2UsIFNldHRpbmdzU2VydmljZSB9IGZyb20gJ0BkZWxvbi90aGVtZSc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIElucHV0Qm9vbGVhbiwgSW5wdXROdW1iZXIsIE51bWJlcklucHV0LCBab25lT3V0c2lkZSB9IGZyb20gJ0BkZWxvbi91dGlsL2RlY29yYXRvcic7XG5pbXBvcnQgeyBXSU5ET1cgfSBmcm9tICdAZGVsb24vdXRpbC90b2tlbic7XG5pbXBvcnQgdHlwZSB7IE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmF2IGV4dGVuZHMgTWVudUlubmVyIHtcbiAgX25lZWRJY29uPzogYm9vbGVhbjtcbiAgX3RleHQ/OiBTYWZlSHRtbDtcbn1cblxuY29uc3QgU0hPV0NMUyA9ICdzaWRlYmFyLW5hdl9fZmxvYXRpbmctc2hvdyc7XG5jb25zdCBGTE9BVElOR0NMUyA9ICdzaWRlYmFyLW5hdl9fZmxvYXRpbmcnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsYXlvdXQtZGVmYXVsdC1uYXYnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGF5b3V0LW5hdi5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHtcbiAgICAnKGNsaWNrKSc6ICdfY2xpY2soKScsXG4gICAgJyhkb2N1bWVudDpjbGljayknOiAnY2xvc2VTdWJNZW51KCknLFxuICAgICdbY2xhc3MuZC1ibG9ja10nOiBgdHJ1ZWBcbiAgfSxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIExheW91dERlZmF1bHROYXZDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9kaXNhYmxlZEFjbDogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfYXV0b0Nsb3NlVW5kZXJQYWQ6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3JlY3Vyc2l2ZVBhdGg6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX29wZW5TdHJpY3RseTogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbWF4TGV2ZWxJY29uOiBOdW1iZXJJbnB1dDtcblxuICBwcml2YXRlIGJvZHlFbCE6IEhUTUxCb2R5RWxlbWVudDtcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgZmxvYXRpbmdFbCE6IEhUTUxEaXZFbGVtZW50O1xuICBkaXI6IERpcmVjdGlvbiA9ICdsdHInO1xuICBsaXN0OiBOYXZbXSA9IFtdO1xuXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBkaXNhYmxlZEFjbCA9IGZhbHNlO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgYXV0b0Nsb3NlVW5kZXJQYWQgPSB0cnVlO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgcmVjdXJzaXZlUGF0aCA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIEBJbnB1dEJvb2xlYW4oKVxuICBzZXQgb3BlblN0cmljdGx5KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5tZW51U3J2Lm9wZW5TdHJpY3RseSA9IHZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigpIG1heExldmVsSWNvbiA9IDM7XG4gIEBPdXRwdXQoKSByZWFkb25seSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPE1lbnU+KCk7XG5cbiAgZ2V0IGNvbGxhcHNlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5sYXlvdXQuY29sbGFwc2VkO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtZW51U3J2OiBNZW51U2VydmljZSxcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlbmRlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2M6IE56U2FmZUFueSxcbiAgICBASW5qZWN0KFdJTkRPVykgcHJpdmF0ZSB3aW46IE56U2FmZUFueSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGRpcmVjdGlvbmFsaXR5OiBEaXJlY3Rpb25hbGl0eVxuICApIHt9XG5cbiAgcHJpdmF0ZSBnZXRMaW5rTm9kZShub2RlOiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgbm9kZSA9IG5vZGUubm9kZU5hbWUgPT09ICdBJyA/IG5vZGUgOiAobm9kZS5wYXJlbnROb2RlIGFzIEhUTUxFbGVtZW50KTtcbiAgICByZXR1cm4gbm9kZS5ub2RlTmFtZSAhPT0gJ0EnID8gbnVsbCA6IG5vZGU7XG4gIH1cblxuICBwcml2YXRlIGZsb2F0aW5nQ2xpY2tIYW5kbGUoZTogTW91c2VFdmVudCk6IGJvb2xlYW4ge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgbGlua05vZGUgPSB0aGlzLmdldExpbmtOb2RlKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgICBpZiAobGlua05vZGUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBpZCA9ICtsaW5rTm9kZS5kYXRhc2V0IS5pZCE7XG4gICAgLy8gU2hvdWxkIGJlIGluZ29yZSBjaGlsZHJlbiB0aXRsZSB0cmlnZ2VyIGV2ZW50XG4gICAgaWYgKGlzTmFOKGlkKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBpdGVtOiBOYXY7XG4gICAgdGhpcy5tZW51U3J2LnZpc2l0KHRoaXMubGlzdCwgKGk6IE5hdikgPT4ge1xuICAgICAgaWYgKCFpdGVtICYmIGkuX2lkID09PSBpZCkge1xuICAgICAgICBpdGVtID0gaTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnRvKGl0ZW0hKTtcbiAgICB0aGlzLmhpZGVBbGwoKTtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckZsb2F0aW5nKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5mbG9hdGluZ0VsKSByZXR1cm47XG4gICAgdGhpcy5mbG9hdGluZ0VsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5mbG9hdGluZ0NsaWNrSGFuZGxlLmJpbmQodGhpcykpO1xuICAgIC8vIGZpeCBpZTogaHR0cHM6Ly9naXRodWIuY29tL25nLWFsYWluL2RlbG9uL2lzc3Vlcy81MlxuICAgIGlmICh0aGlzLmZsb2F0aW5nRWwuaGFzT3duUHJvcGVydHkoJ3JlbW92ZScpKSB7XG4gICAgICB0aGlzLmZsb2F0aW5nRWwucmVtb3ZlKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZsb2F0aW5nRWwucGFyZW50Tm9kZSkge1xuICAgICAgdGhpcy5mbG9hdGluZ0VsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5mbG9hdGluZ0VsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdlbkZsb2F0aW5nKCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJGbG9hdGluZygpO1xuICAgIHRoaXMuZmxvYXRpbmdFbCA9IHRoaXMucmVuZGVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRoaXMuZmxvYXRpbmdFbC5jbGFzc0xpc3QuYWRkKGAke0ZMT0FUSU5HQ0xTfS1jb250YWluZXJgKTtcbiAgICB0aGlzLmZsb2F0aW5nRWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmZsb2F0aW5nQ2xpY2tIYW5kbGUuYmluZCh0aGlzKSwgZmFsc2UpO1xuICAgIHRoaXMuYm9keUVsLmFwcGVuZENoaWxkKHRoaXMuZmxvYXRpbmdFbCk7XG4gIH1cblxuICBwcml2YXRlIGdlblN1Yk5vZGUobGlua05vZGU6IEhUTUxMaW5rRWxlbWVudCwgaXRlbTogTmF2KTogSFRNTFVMaXN0RWxlbWVudCB7XG4gICAgY29uc3QgaWQgPSBgX3NpZGViYXItbmF2LSR7aXRlbS5faWR9YDtcbiAgICBjb25zdCBjaGlsZE5vZGUgPSBpdGVtLmJhZGdlID8gbGlua05vZGUubmV4dEVsZW1lbnRTaWJsaW5nIS5uZXh0RWxlbWVudFNpYmxpbmchIDogbGlua05vZGUubmV4dEVsZW1lbnRTaWJsaW5nITtcbiAgICBjb25zdCBub2RlID0gY2hpbGROb2RlLmNsb25lTm9kZSh0cnVlKSBhcyBIVE1MVUxpc3RFbGVtZW50O1xuICAgIG5vZGUuaWQgPSBpZDtcbiAgICBub2RlLmNsYXNzTGlzdC5hZGQoRkxPQVRJTkdDTFMpO1xuICAgIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdtb3VzZWxlYXZlJyxcbiAgICAgICgpID0+IHtcbiAgICAgICAgbm9kZS5jbGFzc0xpc3QucmVtb3ZlKFNIT1dDTFMpO1xuICAgICAgfSxcbiAgICAgIGZhbHNlXG4gICAgKTtcbiAgICB0aGlzLmZsb2F0aW5nRWwuYXBwZW5kQ2hpbGQobm9kZSk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBwcml2YXRlIGhpZGVBbGwoKTogdm9pZCB7XG4gICAgY29uc3QgYWxsTm9kZSA9IHRoaXMuZmxvYXRpbmdFbC5xdWVyeVNlbGVjdG9yQWxsKGAuJHtGTE9BVElOR0NMU31gKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFsbE5vZGUubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFsbE5vZGVbaV0uY2xhc3NMaXN0LnJlbW92ZShTSE9XQ0xTKTtcbiAgICB9XG4gIH1cblxuICAvLyBjYWxjdWxhdGUgdGhlIG5vZGUgcG9zaXRpb24gdmFsdWVzLlxuICBwcml2YXRlIGNhbFBvcyhsaW5rTm9kZTogSFRNTExpbmtFbGVtZW50LCBub2RlOiBIVE1MVUxpc3RFbGVtZW50KTogdm9pZCB7XG4gICAgY29uc3QgcmVjdCA9IGxpbmtOb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIC8vIGJ1ZzogaHR0cHM6Ly9kZXZlbG9wZXIubWljcm9zb2Z0LmNvbS9lbi11cy9taWNyb3NvZnQtZWRnZS9wbGF0Zm9ybS9pc3N1ZXMvMTQ3MjEwMTUvXG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gTWF0aC5tYXgodGhpcy5kb2MuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCwgdGhpcy5ib2R5RWwuc2Nyb2xsVG9wKTtcbiAgICBjb25zdCBkb2NIZWlnaHQgPSBNYXRoLm1heCh0aGlzLmRvYy5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0LCB0aGlzLmJvZHlFbC5jbGllbnRIZWlnaHQpO1xuICAgIGNvbnN0IHNwYWNpbmcgPSA1O1xuICAgIGxldCBvZmZzZXRIZWlnaHQgPSAtc3BhY2luZztcbiAgICBpZiAoZG9jSGVpZ2h0IDwgcmVjdC50b3AgKyBub2RlLmNsaWVudEhlaWdodCkge1xuICAgICAgb2Zmc2V0SGVpZ2h0ID0gcmVjdC50b3AgKyBub2RlLmNsaWVudEhlaWdodCAtIGRvY0hlaWdodCArIHNwYWNpbmc7XG4gICAgfVxuICAgIG5vZGUuc3R5bGUudG9wID0gYCR7cmVjdC50b3AgKyBzY3JvbGxUb3AgLSBvZmZzZXRIZWlnaHR9cHhgO1xuICAgIGlmICh0aGlzLmRpciA9PT0gJ3J0bCcpIHtcbiAgICAgIG5vZGUuc3R5bGUucmlnaHQgPSBgJHtyZWN0LndpZHRoICsgc3BhY2luZ31weGA7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUuc3R5bGUubGVmdCA9IGAke3JlY3QucmlnaHQgKyBzcGFjaW5nfXB4YDtcbiAgICB9XG4gIH1cblxuICBAWm9uZU91dHNpZGUoKVxuICBzaG93U3ViTWVudShlOiBNb3VzZUV2ZW50LCBpdGVtOiBOYXYpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb2xsYXBzZWQgIT09IHRydWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IGxpbmtOb2RlID0gZS50YXJnZXQgYXMgRWxlbWVudDtcbiAgICB0aGlzLmdlbkZsb2F0aW5nKCk7XG4gICAgY29uc3Qgc3ViTm9kZSA9IHRoaXMuZ2VuU3ViTm9kZShsaW5rTm9kZSBhcyBIVE1MTGlua0VsZW1lbnQsIGl0ZW0pO1xuICAgIHRoaXMuaGlkZUFsbCgpO1xuICAgIHN1Yk5vZGUuY2xhc3NMaXN0LmFkZChTSE9XQ0xTKTtcbiAgICB0aGlzLmNhbFBvcyhsaW5rTm9kZSBhcyBIVE1MTGlua0VsZW1lbnQsIHN1Yk5vZGUpO1xuICB9XG5cbiAgdG8oaXRlbTogTWVudSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0LmVtaXQoaXRlbSk7XG4gICAgaWYgKGl0ZW0uZGlzYWJsZWQpIHJldHVybjtcblxuICAgIGlmIChpdGVtLmV4dGVybmFsTGluaykge1xuICAgICAgaWYgKGl0ZW0udGFyZ2V0ID09PSAnX2JsYW5rJykge1xuICAgICAgICB0aGlzLndpbi5vcGVuKGl0ZW0uZXh0ZXJuYWxMaW5rKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMud2luLmxvY2F0aW9uLmhyZWYgPSBpdGVtLmV4dGVybmFsTGluaztcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoaXRlbS5saW5rISkpO1xuICB9XG5cbiAgdG9nZ2xlT3BlbihpdGVtOiBOYXYpOiB2b2lkIHtcbiAgICB0aGlzLm1lbnVTcnYudG9nZ2xlT3BlbihpdGVtKTtcbiAgfVxuXG4gIF9jbGljaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1BhZCAmJiB0aGlzLmNvbGxhcHNlZCkge1xuICAgICAgdGhpcy5vcGVuQXNpZGUoZmFsc2UpO1xuICAgICAgdGhpcy5oaWRlQWxsKCk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VTdWJNZW51KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbGxhcHNlZCkge1xuICAgICAgdGhpcy5oaWRlQWxsKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvcGVuQnlVcmwodXJsOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgY29uc3QgeyBtZW51U3J2LCByZWN1cnNpdmVQYXRoIH0gPSB0aGlzO1xuICAgIHRoaXMubWVudVNydi5vcGVuKG1lbnVTcnYuZmluZCh7IHVybCwgcmVjdXJzaXZlOiByZWN1cnNpdmVQYXRoIH0pKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IHsgZG9jLCByb3V0ZXIsIGRlc3Ryb3kkLCBtZW51U3J2LCBzZXR0aW5ncywgY2RyIH0gPSB0aGlzO1xuICAgIHRoaXMuYm9keUVsID0gZG9jLnF1ZXJ5U2VsZWN0b3IoJ2JvZHknKTtcbiAgICBtZW51U3J2LmNoYW5nZS5waXBlKHRha2VVbnRpbChkZXN0cm95JCkpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgIG1lbnVTcnYudmlzaXQoZGF0YSwgKGk6IE5hdiwgX3AsIGRlcHRoKSA9PiB7XG4gICAgICAgIGkuX3RleHQgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChpLnRleHQhKTtcbiAgICAgICAgaS5fbmVlZEljb24gPSBkZXB0aCEgPD0gdGhpcy5tYXhMZXZlbEljb24gJiYgISFpLmljb247XG4gICAgICAgIGlmICghaS5fYWNsUmVzdWx0KSB7XG4gICAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWRBY2wpIHtcbiAgICAgICAgICAgIGkuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpLl9oaWRkZW4gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpY29uID0gaS5pY29uIGFzIE1lbnVJY29uO1xuICAgICAgICBpZiAoaWNvbiAmJiBpY29uLnR5cGUgPT09ICdzdmcnICYmIHR5cGVvZiBpY29uLnZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGljb24udmFsdWUgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChpY29uLnZhbHVlISEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZml4SGlkZShkYXRhKTtcbiAgICAgIHRoaXMubGlzdCA9IGRhdGEuZmlsdGVyKCh3OiBOYXYpID0+IHcuX2hpZGRlbiAhPT0gdHJ1ZSk7XG4gICAgICBjZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuICAgIHJvdXRlci5ldmVudHMucGlwZSh0YWtlVW50aWwoZGVzdHJveSQpKS5zdWJzY3JpYmUoZSA9PiB7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgdGhpcy5vcGVuQnlVcmwoZS51cmxBZnRlclJlZGlyZWN0cyk7XG4gICAgICAgIHRoaXMudW5kZXJQYWQoKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHNldHRpbmdzLm5vdGlmeVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbChkZXN0cm95JCksXG4gICAgICAgIGZpbHRlcih0ID0+IHQudHlwZSA9PT0gJ2xheW91dCcgJiYgdC5uYW1lID09PSAnY29sbGFwc2VkJylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbGVhckZsb2F0aW5nKCkpO1xuICAgIHRoaXMudW5kZXJQYWQoKTtcblxuICAgIHRoaXMuZGlyID0gdGhpcy5kaXJlY3Rpb25hbGl0eS52YWx1ZTtcbiAgICB0aGlzLmRpcmVjdGlvbmFsaXR5LmNoYW5nZT8ucGlwZSh0YWtlVW50aWwoZGVzdHJveSQpKS5zdWJzY3JpYmUoKGRpcmVjdGlvbjogRGlyZWN0aW9uKSA9PiB7XG4gICAgICB0aGlzLmRpciA9IGRpcmVjdGlvbjtcbiAgICB9KTtcbiAgICB0aGlzLm9wZW5CeVVybChyb3V0ZXIudXJsKTtcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB0aGlzLmdlbkZsb2F0aW5nKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaXhIaWRlKGxzOiBOYXZbXSk6IHZvaWQge1xuICAgIGNvbnN0IGluRm4gPSAobGlzdDogTmF2W10pOiB2b2lkID0+IHtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBsaXN0KSB7XG4gICAgICAgIGlmIChpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGluRm4oaXRlbS5jaGlsZHJlbik7XG4gICAgICAgICAgaWYgKCFpdGVtLl9oaWRkZW4pIHtcbiAgICAgICAgICAgIGl0ZW0uX2hpZGRlbiA9IGl0ZW0uY2hpbGRyZW4uZXZlcnkoKHY6IE5hdikgPT4gdi5faGlkZGVuKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaW5Gbihscyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5jbGVhckZsb2F0aW5nKCk7XG4gIH1cblxuICAvLyAjcmVnaW9uIFVuZGVyIHBhZFxuXG4gIHByaXZhdGUgZ2V0IGlzUGFkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRvYy5kZWZhdWx0VmlldyEuaW5uZXJXaWR0aCA8IDc2ODtcbiAgfVxuXG4gIHByaXZhdGUgdW5kZXJQYWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXV0b0Nsb3NlVW5kZXJQYWQgJiYgdGhpcy5pc1BhZCAmJiAhdGhpcy5jb2xsYXBzZWQpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5vcGVuQXNpZGUodHJ1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb3BlbkFzaWRlKHN0YXR1czogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2V0dGluZ3Muc2V0TGF5b3V0KCdjb2xsYXBzZWQnLCBzdGF0dXMpO1xuICB9XG5cbiAgLy8gI2VuZHJlZ2lvblxufVxuIiwiPG5nLXRlbXBsYXRlICNpY29uIGxldC1pPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaVwiIFtuZ1N3aXRjaF09XCJpLnR5cGVcIj5cbiAgICA8aVxuICAgICAgKm5nU3dpdGNoQ2FzZT1cIidpY29uJ1wiXG4gICAgICBjbGFzcz1cInNpZGViYXItbmF2X19pdGVtLWljb25cIlxuICAgICAgbnotaWNvblxuICAgICAgW256VHlwZV09XCJpLnZhbHVlXCJcbiAgICAgIFtuelRoZW1lXT1cImkudGhlbWVcIlxuICAgICAgW256U3Bpbl09XCJpLnNwaW5cIlxuICAgICAgW256VHdvdG9uZUNvbG9yXT1cImkudHdvVG9uZUNvbG9yXCJcbiAgICAgIFtuekljb25mb250XT1cImkuaWNvbmZvbnRcIlxuICAgICAgW256Um90YXRlXT1cImkucm90YXRlXCJcbiAgICA+PC9pPlxuICAgIDxpICpuZ1N3aXRjaENhc2U9XCInaWNvbmZvbnQnXCIgY2xhc3M9XCJzaWRlYmFyLW5hdl9faXRlbS1pY29uXCIgbnotaWNvbiBbbnpJY29uZm9udF09XCJpLmljb25mb250XCI+PC9pPlxuICAgIDxpbWcgKm5nU3dpdGNoQ2FzZT1cIidpbWcnXCIgW3NyY109XCJpLnZhbHVlXCIgY2xhc3M9XCJzaWRlYmFyLW5hdl9faXRlbS1pY29uIHNpZGViYXItbmF2X19pdGVtLWltZ1wiIC8+XG4gICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidzdmcnXCIgY2xhc3M9XCJzaWRlYmFyLW5hdl9faXRlbS1pY29uIHNpZGViYXItbmF2X19pdGVtLXN2Z1wiIFtpbm5lckhUTUxdPVwiaS52YWx1ZVwiPjwvc3Bhbj5cbiAgICA8aSAqbmdTd2l0Y2hEZWZhdWx0IGNsYXNzPVwic2lkZWJhci1uYXZfX2l0ZW0taWNvbiB7eyBpLnZhbHVlIH19XCI+PC9pPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3RyZWUgbGV0LWxzPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpIG9mIGxzXCI+XG4gICAgPGxpXG4gICAgICAqbmdJZj1cImkuX2hpZGRlbiAhPT0gdHJ1ZVwiXG4gICAgICBjbGFzcz1cInNpZGViYXItbmF2X19pdGVtXCJcbiAgICAgIFtjbGFzcy5zaWRlYmFyLW5hdl9fc2VsZWN0ZWRdPVwiaS5fc2VsZWN0ZWRcIlxuICAgICAgW2NsYXNzLnNpZGViYXItbmF2X19vcGVuXT1cImkub3BlblwiXG4gICAgPlxuICAgICAgPCEtLSBsaW5rIC0tPlxuICAgICAgPGFcbiAgICAgICAgKm5nSWY9XCJpLmNoaWxkcmVuLmxlbmd0aCA9PT0gMFwiXG4gICAgICAgIChjbGljayk9XCJ0byhpKVwiXG4gICAgICAgIFthdHRyLmRhdGEtaWRdPVwiaS5faWRcIlxuICAgICAgICBjbGFzcz1cInNpZGViYXItbmF2X19pdGVtLWxpbmtcIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdzaWRlYmFyLW5hdl9faXRlbS1kaXNhYmxlZCc6IGkuZGlzYWJsZWQgfVwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cImNsb3NlU3ViTWVudSgpXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImkuX25lZWRJY29uXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2xsYXBzZWRcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJpY29uXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpLmljb24gfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb2xsYXBzZWRcIiBuei10b29sdGlwIG56VG9vbHRpcFBsYWNlbWVudD1cInJpZ2h0XCIgW256VG9vbHRpcFRpdGxlXT1cImkudGV4dFwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImljb25cIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGkuaWNvbiB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNpZGViYXItbmF2X19pdGVtLXRleHRcIiBbaW5uZXJIVE1MXT1cImkuX3RleHRcIiBbYXR0ci50aXRsZV09XCJpLnRleHRcIj48L3NwYW4+XG4gICAgICA8L2E+XG4gICAgICA8IS0tIGhhcyBjaGlsZHJlbiBsaW5rIC0tPlxuICAgICAgPGFcbiAgICAgICAgKm5nSWY9XCJpLmNoaWxkcmVuLmxlbmd0aCA+IDBcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlT3BlbihpKVwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cInNob3dTdWJNZW51KCRldmVudCwgaSlcIlxuICAgICAgICBjbGFzcz1cInNpZGViYXItbmF2X19pdGVtLWxpbmtcIlxuICAgICAgPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaWNvblwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaS5pY29uIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNpZGViYXItbmF2X19pdGVtLXRleHRcIiBbaW5uZXJIVE1MXT1cImkuX3RleHRcIiBbYXR0ci50aXRsZV09XCJpLnRleHRcIj48L3NwYW4+XG4gICAgICAgIDxpIGNsYXNzPVwic2lkZWJhci1uYXZfX3N1Yi1hcnJvd1wiPjwvaT5cbiAgICAgIDwvYT5cbiAgICAgIDwhLS0gYmFkZ2UgLS0+XG4gICAgICA8bnotYmFkZ2UgKm5nSWY9XCJpLmJhZGdlXCIgW256Q291bnRdPVwiaS5iYWRnZVwiIFtuekRvdF09XCJpLmJhZGdlRG90XCIgbnpTdGFuZGFsb25lIFtuek92ZXJmbG93Q291bnRdPVwiOVwiPjwvbnotYmFkZ2U+XG4gICAgICA8dWwgKm5nSWY9XCJpLmNoaWxkcmVuLmxlbmd0aCA+IDBcIiBjbGFzcz1cInNpZGViYXItbmF2IHNpZGViYXItbmF2X19zdWIgc2lkZWJhci1uYXZfX2RlcHRoe3sgaS5fZGVwdGggfX1cIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyZWVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGkuY2hpbGRyZW4gfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L3VsPlxuICAgIDwvbGk+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbjx1bCBjbGFzcz1cInNpZGViYXItbmF2XCI+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGxpc3RcIj5cbiAgICA8bGkgY2xhc3M9XCJzaWRlYmFyLW5hdl9faXRlbSBzaWRlYmFyLW5hdl9fZ3JvdXAtdGl0bGVcIiAqbmdJZj1cImdyb3VwLmdyb3VwXCI+XG4gICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImdyb3VwLl90ZXh0XCI+PC9zcGFuPlxuICAgIDwvbGk+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyZWVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGdyb3VwLmNoaWxkcmVuIH1cIj48L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvdWw+XG4iXX0=
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';
|
|
3
|
-
import { InputBoolean } from '@delon/util/decorator';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class LayoutDefaultTopMenuItemComponent {
|
|
6
|
-
constructor() {
|
|
7
|
-
this.selected = false;
|
|
8
|
-
this.disabled = false;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
LayoutDefaultTopMenuItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LayoutDefaultTopMenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12
|
-
LayoutDefaultTopMenuItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: LayoutDefaultTopMenuItemComponent, selector: "layout-default-top-menu-item", inputs: { selected: "selected", disabled: "disabled" }, host: { properties: { "class.alain-default__nav-item": "true", "class.alain-default__top-menu-item": "true", "class.alain-default__top-menu-item-selected": "selected", "class.alain-default__top-menu-item-disabled": "disabled" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
13
|
-
__decorate([
|
|
14
|
-
InputBoolean()
|
|
15
|
-
], LayoutDefaultTopMenuItemComponent.prototype, "selected", void 0);
|
|
16
|
-
__decorate([
|
|
17
|
-
InputBoolean()
|
|
18
|
-
], LayoutDefaultTopMenuItemComponent.prototype, "disabled", void 0);
|
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LayoutDefaultTopMenuItemComponent, decorators: [{
|
|
20
|
-
type: Component,
|
|
21
|
-
args: [{
|
|
22
|
-
selector: 'layout-default-top-menu-item',
|
|
23
|
-
template: `<ng-content></ng-content>`,
|
|
24
|
-
host: {
|
|
25
|
-
'[class.alain-default__nav-item]': `true`,
|
|
26
|
-
'[class.alain-default__top-menu-item]': `true`,
|
|
27
|
-
'[class.alain-default__top-menu-item-selected]': `selected`,
|
|
28
|
-
'[class.alain-default__top-menu-item-disabled]': `disabled`
|
|
29
|
-
},
|
|
30
|
-
preserveWhitespaces: false,
|
|
31
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
32
|
-
encapsulation: ViewEncapsulation.None
|
|
33
|
-
}]
|
|
34
|
-
}], propDecorators: { selected: [{
|
|
35
|
-
type: Input
|
|
36
|
-
}], disabled: [{
|
|
37
|
-
type: Input
|
|
38
|
-
}] } });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LXRvcC1tZW51LWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS9sYXlvdXQtZGVmYXVsdC9sYXlvdXQtdG9wLW1lbnUtaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0YsT0FBTyxFQUFnQixZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFlbkUsTUFBTSxPQUFPLGlDQUFpQztJQWI5QztRQWlCMkIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO0tBQzNDOzs4SEFOWSxpQ0FBaUM7a0hBQWpDLGlDQUFpQyxtV0FYbEMsMkJBQTJCO0FBZVo7SUFBZixZQUFZLEVBQUU7bUVBQWtCO0FBQ2pCO0lBQWYsWUFBWSxFQUFFO21FQUFrQjsyRkFML0IsaUNBQWlDO2tCQWI3QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw4QkFBOEI7b0JBQ3hDLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLElBQUksRUFBRTt3QkFDSixpQ0FBaUMsRUFBRSxNQUFNO3dCQUN6QyxzQ0FBc0MsRUFBRSxNQUFNO3dCQUM5QywrQ0FBK0MsRUFBRSxVQUFVO3dCQUMzRCwrQ0FBK0MsRUFBRSxVQUFVO3FCQUM1RDtvQkFDRCxtQkFBbUIsRUFBRSxLQUFLO29CQUMxQixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7aUJBQ3RDOzhCQUswQixRQUFRO3NCQUFoQyxLQUFLO2dCQUNtQixRQUFRO3NCQUFoQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgSW5wdXRCb29sZWFuIH0gZnJvbSAnQGRlbG9uL3V0aWwvZGVjb3JhdG9yJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGF5b3V0LWRlZmF1bHQtdG9wLW1lbnUtaXRlbScsXG4gIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmAsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLmFsYWluLWRlZmF1bHRfX25hdi1pdGVtXSc6IGB0cnVlYCxcbiAgICAnW2NsYXNzLmFsYWluLWRlZmF1bHRfX3RvcC1tZW51LWl0ZW1dJzogYHRydWVgLFxuICAgICdbY2xhc3MuYWxhaW4tZGVmYXVsdF9fdG9wLW1lbnUtaXRlbS1zZWxlY3RlZF0nOiBgc2VsZWN0ZWRgLFxuICAgICdbY2xhc3MuYWxhaW4tZGVmYXVsdF9fdG9wLW1lbnUtaXRlbS1kaXNhYmxlZF0nOiBgZGlzYWJsZWRgXG4gIH0sXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBMYXlvdXREZWZhdWx0VG9wTWVudUl0ZW1Db21wb25lbnQge1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfc2VsZWN0ZWQ6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc2FibGVkOiBCb29sZWFuSW5wdXQ7XG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHNlbGVjdGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBkaXNhYmxlZCA9IGZhbHNlO1xufVxuIl19
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
import { DOCUMENT } from '@angular/common';
|
|
2
|
-
import { Component, ContentChildren, Inject, Input } from '@angular/core';
|
|
3
|
-
import { NavigationCancel, NavigationEnd, NavigationError, RouteConfigLoadEnd, RouteConfigLoadStart } from '@angular/router';
|
|
4
|
-
import { Subject, takeUntil } from 'rxjs';
|
|
5
|
-
import { updateHostClass } from '@delon/util/browser';
|
|
6
|
-
import { LayoutDefaultHeaderItemComponent } from './layout-header-item.component';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/router";
|
|
9
|
-
import * as i2 from "ng-zorro-antd/message";
|
|
10
|
-
import * as i3 from "@delon/theme";
|
|
11
|
-
import * as i4 from "./layout.service";
|
|
12
|
-
import * as i5 from "@angular/common";
|
|
13
|
-
import * as i6 from "ng-zorro-antd/icon";
|
|
14
|
-
import * as i7 from "./layout-nav.component";
|
|
15
|
-
import * as i8 from "./layout-header.component";
|
|
16
|
-
export class LayoutDefaultComponent {
|
|
17
|
-
get opt() {
|
|
18
|
-
return this.srv.options;
|
|
19
|
-
}
|
|
20
|
-
set options(value) {
|
|
21
|
-
this.srv.setOptions(value);
|
|
22
|
-
}
|
|
23
|
-
get collapsed() {
|
|
24
|
-
return this.settings.layout.collapsed;
|
|
25
|
-
}
|
|
26
|
-
get collapsedIcon() {
|
|
27
|
-
return this.srv.collapsedIcon;
|
|
28
|
-
}
|
|
29
|
-
toggleCollapsed() {
|
|
30
|
-
this.srv.toggleCollapsed();
|
|
31
|
-
}
|
|
32
|
-
constructor(router, msgSrv, settings, el, renderer, doc, srv) {
|
|
33
|
-
this.msgSrv = msgSrv;
|
|
34
|
-
this.settings = settings;
|
|
35
|
-
this.el = el;
|
|
36
|
-
this.renderer = renderer;
|
|
37
|
-
this.doc = doc;
|
|
38
|
-
this.srv = srv;
|
|
39
|
-
this.asideUser = null;
|
|
40
|
-
this.asideBottom = null;
|
|
41
|
-
this.nav = null;
|
|
42
|
-
this.content = null;
|
|
43
|
-
this.destroy$ = new Subject();
|
|
44
|
-
this.isFetching = false;
|
|
45
|
-
router.events.pipe(takeUntil(this.destroy$)).subscribe(ev => this.processEv(ev));
|
|
46
|
-
const { destroy$ } = this;
|
|
47
|
-
this.srv.options$.pipe(takeUntil(destroy$)).subscribe(() => this.setClass());
|
|
48
|
-
this.settings.notify.pipe(takeUntil(destroy$)).subscribe(() => this.setClass());
|
|
49
|
-
}
|
|
50
|
-
processEv(ev) {
|
|
51
|
-
if (!this.isFetching && ev instanceof RouteConfigLoadStart) {
|
|
52
|
-
this.isFetching = true;
|
|
53
|
-
}
|
|
54
|
-
if (ev instanceof NavigationError || ev instanceof NavigationCancel) {
|
|
55
|
-
this.isFetching = false;
|
|
56
|
-
const err = this.customError === null ? null : this.customError ?? `Could not load ${ev.url} route`;
|
|
57
|
-
if (err && ev instanceof NavigationError) {
|
|
58
|
-
this.msgSrv.error(err, { nzDuration: 1000 * 3 });
|
|
59
|
-
}
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
if (!(ev instanceof NavigationEnd || ev instanceof RouteConfigLoadEnd)) {
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
if (this.isFetching) {
|
|
66
|
-
setTimeout(() => {
|
|
67
|
-
this.isFetching = false;
|
|
68
|
-
}, 100);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
setClass() {
|
|
72
|
-
const { el, doc, renderer, settings } = this;
|
|
73
|
-
const layout = settings.layout;
|
|
74
|
-
updateHostClass(el.nativeElement, renderer, {
|
|
75
|
-
['alain-default']: true,
|
|
76
|
-
[`alain-default__fixed`]: layout.fixed,
|
|
77
|
-
[`alain-default__collapsed`]: layout.collapsed,
|
|
78
|
-
[`alain-default__hide-aside`]: this.opt.hideAside,
|
|
79
|
-
[`alain-default__hide-header`]: this.opt.hideHeader
|
|
80
|
-
});
|
|
81
|
-
doc.body.classList[layout.colorWeak ? 'add' : 'remove']('color-weak');
|
|
82
|
-
}
|
|
83
|
-
ngOnDestroy() {
|
|
84
|
-
this.destroy$.next();
|
|
85
|
-
this.destroy$.complete();
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
LayoutDefaultComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LayoutDefaultComponent, deps: [{ token: i1.Router }, { token: i2.NzMessageService }, { token: i3.SettingsService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DOCUMENT }, { token: i4.LayoutDefaultService }], target: i0.ɵɵFactoryTarget.Component });
|
|
89
|
-
LayoutDefaultComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: LayoutDefaultComponent, selector: "layout-default", inputs: { options: "options", asideUser: "asideUser", asideBottom: "asideBottom", nav: "nav", content: "content", customError: "customError" }, queries: [{ propertyName: "headerItems", predicate: LayoutDefaultHeaderItemComponent }], exportAs: ["layoutDefault"], ngImport: i0, template: `
|
|
90
|
-
<div class="alain-default__progress-bar" *ngIf="isFetching"></div>
|
|
91
|
-
<layout-default-header *ngIf="!opt.hideHeader" [items]="headerItems"></layout-default-header>
|
|
92
|
-
<div *ngIf="!opt.hideAside" class="alain-default__aside">
|
|
93
|
-
<div class="alain-default__aside-wrap">
|
|
94
|
-
<div class="alain-default__aside-inner">
|
|
95
|
-
<ng-container *ngTemplateOutlet="asideUser"></ng-container>
|
|
96
|
-
<ng-container *ngTemplateOutlet="nav"></ng-container>
|
|
97
|
-
<layout-default-nav *ngIf="!nav"></layout-default-nav>
|
|
98
|
-
</div>
|
|
99
|
-
<div *ngIf="opt.showSiderCollapse" class="alain-default__aside-link">
|
|
100
|
-
<ng-container *ngIf="asideBottom === null; else asideBottom">
|
|
101
|
-
<div class="alain-default__aside-link-collapsed" (click)="toggleCollapsed()">
|
|
102
|
-
<span nz-icon [nzType]="collapsedIcon"></span>
|
|
103
|
-
</div>
|
|
104
|
-
</ng-container>
|
|
105
|
-
</div>
|
|
106
|
-
</div>
|
|
107
|
-
</div>
|
|
108
|
-
<section class="alain-default__content">
|
|
109
|
-
<ng-container *ngTemplateOutlet="content"></ng-container>
|
|
110
|
-
<ng-content></ng-content>
|
|
111
|
-
</section>
|
|
112
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i6.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i7.LayoutDefaultNavComponent, selector: "layout-default-nav", inputs: ["disabledAcl", "autoCloseUnderPad", "recursivePath", "openStrictly", "maxLevelIcon"], outputs: ["select"] }, { kind: "component", type: i8.LayoutDefaultHeaderComponent, selector: "layout-default-header", inputs: ["items"] }] });
|
|
113
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LayoutDefaultComponent, decorators: [{
|
|
114
|
-
type: Component,
|
|
115
|
-
args: [{
|
|
116
|
-
selector: 'layout-default',
|
|
117
|
-
exportAs: 'layoutDefault',
|
|
118
|
-
template: `
|
|
119
|
-
<div class="alain-default__progress-bar" *ngIf="isFetching"></div>
|
|
120
|
-
<layout-default-header *ngIf="!opt.hideHeader" [items]="headerItems"></layout-default-header>
|
|
121
|
-
<div *ngIf="!opt.hideAside" class="alain-default__aside">
|
|
122
|
-
<div class="alain-default__aside-wrap">
|
|
123
|
-
<div class="alain-default__aside-inner">
|
|
124
|
-
<ng-container *ngTemplateOutlet="asideUser"></ng-container>
|
|
125
|
-
<ng-container *ngTemplateOutlet="nav"></ng-container>
|
|
126
|
-
<layout-default-nav *ngIf="!nav"></layout-default-nav>
|
|
127
|
-
</div>
|
|
128
|
-
<div *ngIf="opt.showSiderCollapse" class="alain-default__aside-link">
|
|
129
|
-
<ng-container *ngIf="asideBottom === null; else asideBottom">
|
|
130
|
-
<div class="alain-default__aside-link-collapsed" (click)="toggleCollapsed()">
|
|
131
|
-
<span nz-icon [nzType]="collapsedIcon"></span>
|
|
132
|
-
</div>
|
|
133
|
-
</ng-container>
|
|
134
|
-
</div>
|
|
135
|
-
</div>
|
|
136
|
-
</div>
|
|
137
|
-
<section class="alain-default__content">
|
|
138
|
-
<ng-container *ngTemplateOutlet="content"></ng-container>
|
|
139
|
-
<ng-content></ng-content>
|
|
140
|
-
</section>
|
|
141
|
-
`
|
|
142
|
-
}]
|
|
143
|
-
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.NzMessageService }, { type: i3.SettingsService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
|
|
144
|
-
type: Inject,
|
|
145
|
-
args: [DOCUMENT]
|
|
146
|
-
}] }, { type: i4.LayoutDefaultService }]; }, propDecorators: { headerItems: [{
|
|
147
|
-
type: ContentChildren,
|
|
148
|
-
args: [LayoutDefaultHeaderItemComponent, { descendants: false }]
|
|
149
|
-
}], options: [{
|
|
150
|
-
type: Input
|
|
151
|
-
}], asideUser: [{
|
|
152
|
-
type: Input
|
|
153
|
-
}], asideBottom: [{
|
|
154
|
-
type: Input
|
|
155
|
-
}], nav: [{
|
|
156
|
-
type: Input
|
|
157
|
-
}], content: [{
|
|
158
|
-
type: Input
|
|
159
|
-
}], customError: [{
|
|
160
|
-
type: Input
|
|
161
|
-
}] } });
|
|
162
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lL2xheW91dC1kZWZhdWx0L2xheW91dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsZUFBZSxFQUVmLE1BQU0sRUFDTixLQUFLLEVBS04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixvQkFBb0IsRUFHckIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFJdEQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7QUFnQ2xGLE1BQU0sT0FBTyxzQkFBc0I7SUFJakMsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFDSSxPQUFPLENBQUMsS0FBOEM7UUFDeEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQVVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsWUFDRSxNQUFjLEVBQ04sTUFBd0IsRUFDeEIsUUFBeUIsRUFDekIsRUFBYyxFQUNkLFFBQW1CLEVBQ0QsR0FBYyxFQUNoQyxHQUF5QjtRQUx6QixXQUFNLEdBQU4sTUFBTSxDQUFrQjtRQUN4QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNELFFBQUcsR0FBSCxHQUFHLENBQVc7UUFDaEMsUUFBRyxHQUFILEdBQUcsQ0FBc0I7UUE1QjFCLGNBQVMsR0FBNkIsSUFBSSxDQUFDO1FBQzNDLGdCQUFXLEdBQWtDLElBQUksQ0FBQztRQUNsRCxRQUFHLEdBQTZCLElBQUksQ0FBQztRQUNyQyxZQUFPLEdBQTZCLElBQUksQ0FBQztRQUcxQyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUN2QyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBdUJqQixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2pGLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCxTQUFTLENBQUMsRUFBUztRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxFQUFFLFlBQVksb0JBQW9CLEVBQUU7WUFDMUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7U0FDeEI7UUFDRCxJQUFJLEVBQUUsWUFBWSxlQUFlLElBQUksRUFBRSxZQUFZLGdCQUFnQixFQUFFO1lBQ25FLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksa0JBQWtCLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztZQUNwRyxJQUFJLEdBQUcsSUFBSSxFQUFFLFlBQVksZUFBZSxFQUFFO2dCQUN4QyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDbEQ7WUFDRCxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsQ0FBQyxFQUFFLFlBQVksYUFBYSxJQUFJLEVBQUUsWUFBWSxrQkFBa0IsQ0FBQyxFQUFFO1lBQ3RFLE9BQU87U0FDUjtRQUNELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQzFCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNUO0lBQ0gsQ0FBQztJQUVPLFFBQVE7UUFDZCxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQzdDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDL0IsZUFBZSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFO1lBQzFDLENBQUMsZUFBZSxDQUFDLEVBQUUsSUFBSTtZQUN2QixDQUFDLHNCQUFzQixDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUs7WUFDdEMsQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1lBQzlDLENBQUMsMkJBQTJCLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVM7WUFDakQsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVTtTQUNwRCxDQUFDLENBQUM7UUFFSCxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7O21IQXZGVSxzQkFBc0IsMEpBdUN2QixRQUFRO3VHQXZDUCxzQkFBc0Isa09BQ2hCLGdDQUFnQywwREExQnZDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCVDsyRkFFVSxzQkFBc0I7a0JBNUJsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFFBQVEsRUFBRSxlQUFlO29CQUN6QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJUO2lCQUNGOzswQkF3Q0ksTUFBTTsyQkFBQyxRQUFROytFQXJDbEIsV0FBVztzQkFEVixlQUFlO3VCQUFDLGdDQUFnQyxFQUFFLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRTtnQkFRckUsT0FBTztzQkFEVixLQUFLO2dCQUlHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbiAgVGVtcGxhdGVSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBOYXZpZ2F0aW9uQ2FuY2VsLFxuICBOYXZpZ2F0aW9uRW5kLFxuICBOYXZpZ2F0aW9uRXJyb3IsXG4gIFJvdXRlQ29uZmlnTG9hZEVuZCxcbiAgUm91dGVDb25maWdMb2FkU3RhcnQsXG4gIFJvdXRlcixcbiAgRXZlbnRcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICdAZGVsb24vdGhlbWUnO1xuaW1wb3J0IHsgdXBkYXRlSG9zdENsYXNzIH0gZnJvbSAnQGRlbG9uL3V0aWwvYnJvd3Nlcic7XG5pbXBvcnQgdHlwZSB7IE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5pbXBvcnQgeyBOek1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9tZXNzYWdlJztcblxuaW1wb3J0IHsgTGF5b3V0RGVmYXVsdEhlYWRlckl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2xheW91dC1oZWFkZXItaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGF5b3V0RGVmYXVsdFNlcnZpY2UgfSBmcm9tICcuL2xheW91dC5zZXJ2aWNlJztcbmltcG9ydCB7IExheW91dERlZmF1bHRPcHRpb25zIH0gZnJvbSAnLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xheW91dC1kZWZhdWx0JyxcbiAgZXhwb3J0QXM6ICdsYXlvdXREZWZhdWx0JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiYWxhaW4tZGVmYXVsdF9fcHJvZ3Jlc3MtYmFyXCIgKm5nSWY9XCJpc0ZldGNoaW5nXCI+PC9kaXY+XG4gICAgPGxheW91dC1kZWZhdWx0LWhlYWRlciAqbmdJZj1cIiFvcHQuaGlkZUhlYWRlclwiIFtpdGVtc109XCJoZWFkZXJJdGVtc1wiPjwvbGF5b3V0LWRlZmF1bHQtaGVhZGVyPlxuICAgIDxkaXYgKm5nSWY9XCIhb3B0LmhpZGVBc2lkZVwiIGNsYXNzPVwiYWxhaW4tZGVmYXVsdF9fYXNpZGVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhbGFpbi1kZWZhdWx0X19hc2lkZS13cmFwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhbGFpbi1kZWZhdWx0X19hc2lkZS1pbm5lclwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhc2lkZVVzZXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibmF2XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPGxheW91dC1kZWZhdWx0LW5hdiAqbmdJZj1cIiFuYXZcIj48L2xheW91dC1kZWZhdWx0LW5hdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJvcHQuc2hvd1NpZGVyQ29sbGFwc2VcIiBjbGFzcz1cImFsYWluLWRlZmF1bHRfX2FzaWRlLWxpbmtcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXNpZGVCb3R0b20gPT09IG51bGw7IGVsc2UgYXNpZGVCb3R0b21cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbGFpbi1kZWZhdWx0X19hc2lkZS1saW5rLWNvbGxhcHNlZFwiIChjbGljayk9XCJ0b2dnbGVDb2xsYXBzZWQoKVwiPlxuICAgICAgICAgICAgICA8c3BhbiBuei1pY29uIFtuelR5cGVdPVwiY29sbGFwc2VkSWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxzZWN0aW9uIGNsYXNzPVwiYWxhaW4tZGVmYXVsdF9fY29udGVudFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L3NlY3Rpb24+XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgTGF5b3V0RGVmYXVsdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBDb250ZW50Q2hpbGRyZW4oTGF5b3V0RGVmYXVsdEhlYWRlckl0ZW1Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IGZhbHNlIH0pXG4gIGhlYWRlckl0ZW1zITogUXVlcnlMaXN0PExheW91dERlZmF1bHRIZWFkZXJJdGVtQ29tcG9uZW50PjtcblxuICBnZXQgb3B0KCk6IExheW91dERlZmF1bHRPcHRpb25zIHtcbiAgICByZXR1cm4gdGhpcy5zcnYub3B0aW9ucztcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBvcHRpb25zKHZhbHVlOiBMYXlvdXREZWZhdWx0T3B0aW9ucyB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnNydi5zZXRPcHRpb25zKHZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBhc2lkZVVzZXI6IFRlbXBsYXRlUmVmPHZvaWQ+IHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIGFzaWRlQm90dG9tOiBUZW1wbGF0ZVJlZjxOelNhZmVBbnk+IHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIG5hdjogVGVtcGxhdGVSZWY8dm9pZD4gfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgY29udGVudDogVGVtcGxhdGVSZWY8dm9pZD4gfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgY3VzdG9tRXJyb3I/OiBzdHJpbmcgfCBudWxsO1xuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBpc0ZldGNoaW5nID0gZmFsc2U7XG5cbiAgZ2V0IGNvbGxhcHNlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5sYXlvdXQuY29sbGFwc2VkO1xuICB9XG5cbiAgZ2V0IGNvbGxhcHNlZEljb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zcnYuY29sbGFwc2VkSWNvbjtcbiAgfVxuXG4gIHRvZ2dsZUNvbGxhcHNlZCgpOiB2b2lkIHtcbiAgICB0aGlzLnNydi50b2dnbGVDb2xsYXBzZWQoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgbXNnU3J2OiBOek1lc3NhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2V0dGluZ3M6IFNldHRpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvYzogTnpTYWZlQW55LFxuICAgIHByaXZhdGUgc3J2OiBMYXlvdXREZWZhdWx0U2VydmljZVxuICApIHtcbiAgICByb3V0ZXIuZXZlbnRzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoZXYgPT4gdGhpcy5wcm9jZXNzRXYoZXYpKTtcbiAgICBjb25zdCB7IGRlc3Ryb3kkIH0gPSB0aGlzO1xuICAgIHRoaXMuc3J2Lm9wdGlvbnMkLnBpcGUodGFrZVVudGlsKGRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuc2V0Q2xhc3MoKSk7XG4gICAgdGhpcy5zZXR0aW5ncy5ub3RpZnkucGlwZSh0YWtlVW50aWwoZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zZXRDbGFzcygpKTtcbiAgfVxuXG4gIHByb2Nlc3NFdihldjogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNGZXRjaGluZyAmJiBldiBpbnN0YW5jZW9mIFJvdXRlQ29uZmlnTG9hZFN0YXJ0KSB7XG4gICAgICB0aGlzLmlzRmV0Y2hpbmcgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoZXYgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRXJyb3IgfHwgZXYgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uQ2FuY2VsKSB7XG4gICAgICB0aGlzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcbiAgICAgIGNvbnN0IGVyciA9IHRoaXMuY3VzdG9tRXJyb3IgPT09IG51bGwgPyBudWxsIDogdGhpcy5jdXN0b21FcnJvciA/PyBgQ291bGQgbm90IGxvYWQgJHtldi51cmx9IHJvdXRlYDtcbiAgICAgIGlmIChlcnIgJiYgZXYgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRXJyb3IpIHtcbiAgICAgICAgdGhpcy5tc2dTcnYuZXJyb3IoZXJyLCB7IG56RHVyYXRpb246IDEwMDAgKiAzIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIShldiBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQgfHwgZXYgaW5zdGFuY2VvZiBSb3V0ZUNvbmZpZ0xvYWRFbmQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmlzRmV0Y2hpbmcpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmlzRmV0Y2hpbmcgPSBmYWxzZTtcbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRDbGFzcygpOiB2b2lkIHtcbiAgICBjb25zdCB7IGVsLCBkb2MsIHJlbmRlcmVyLCBzZXR0aW5ncyB9ID0gdGhpcztcbiAgICBjb25zdCBsYXlvdXQgPSBzZXR0aW5ncy5sYXlvdXQ7XG4gICAgdXBkYXRlSG9zdENsYXNzKGVsLm5hdGl2ZUVsZW1lbnQsIHJlbmRlcmVyLCB7XG4gICAgICBbJ2FsYWluLWRlZmF1bHQnXTogdHJ1ZSxcbiAgICAgIFtgYWxhaW4tZGVmYXVsdF9fZml4ZWRgXTogbGF5b3V0LmZpeGVkLFxuICAgICAgW2BhbGFpbi1kZWZhdWx0X19jb2xsYXBzZWRgXTogbGF5b3V0LmNvbGxhcHNlZCxcbiAgICAgIFtgYWxhaW4tZGVmYXVsdF9faGlkZS1hc2lkZWBdOiB0aGlzLm9wdC5oaWRlQXNpZGUsXG4gICAgICBbYGFsYWluLWRlZmF1bHRfX2hpZGUtaGVhZGVyYF06IHRoaXMub3B0LmhpZGVIZWFkZXJcbiAgICB9KTtcblxuICAgIGRvYy5ib2R5LmNsYXNzTGlzdFtsYXlvdXQuY29sb3JXZWFrID8gJ2FkZCcgOiAncmVtb3ZlJ10oJ2NvbG9yLXdlYWsnKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19
|