@yelon/bis 17.3.1 → 18.0.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/LICENSE +21 -21
- package/README.md +1 -1
- package/config/bis.config.d.ts +3 -3
- package/config/index.d.ts +5 -5
- package/config/public_api.d.ts +1 -1
- package/esm2022/bis.mjs +4 -4
- package/esm2022/config/bis.config.mjs +14 -14
- package/esm2022/config/config.mjs +4 -4
- package/esm2022/config/public_api.mjs +1 -1
- package/esm2022/layout/layout-basic.component.mjs +518 -508
- package/esm2022/layout/layout-nav-application.component.mjs +372 -372
- package/esm2022/layout/layout-nav-group.component.mjs +166 -162
- package/esm2022/layout/layout-nav-tile.component.mjs +14 -14
- package/esm2022/layout/layout.mjs +4 -4
- package/esm2022/layout/layout.module.mjs +53 -53
- package/esm2022/layout/public_api.mjs +5 -5
- package/esm2022/public_api.mjs +8 -8
- package/esm2022/src/bis.module.mjs +16 -16
- package/esm2022/src/helper.mjs +44 -44
- package/esm2022/src/provide.mjs +7 -7
- package/esm2022/src/refresh-token.mjs +78 -78
- package/esm2022/src/startup.service.mjs +183 -183
- package/esm2022/src/yunzai-act.guard.mjs +87 -87
- package/esm2022/src/yunzai-analysis-addon.guard.mjs +98 -98
- package/esm2022/src/yunzai-default.interceptor.mjs +62 -62
- package/esm2022/yunzai-widgets/public_api.mjs +6 -6
- package/esm2022/yunzai-widgets/yunzai-clear-storage.component.mjs +46 -46
- package/esm2022/yunzai-widgets/yunzai-fullscreen.component.mjs +46 -46
- package/esm2022/yunzai-widgets/yunzai-i18n.component.mjs +138 -138
- package/esm2022/yunzai-widgets/yunzai-notify.component.mjs +179 -179
- package/esm2022/yunzai-widgets/yunzai-user.component.mjs +119 -119
- package/esm2022/yunzai-widgets/yunzai-widget.module.mjs +61 -61
- package/esm2022/yunzai-widgets/yunzai-widgets.mjs +4 -4
- package/fesm2022/bis.mjs +559 -559
- package/fesm2022/config.mjs +21 -21
- package/fesm2022/layout.mjs +1097 -1083
- package/fesm2022/layout.mjs.map +1 -1
- package/fesm2022/yunzai-widgets.mjs +563 -563
- package/index.d.ts +5 -5
- package/index.less +1 -1
- package/layout/index.d.ts +5 -5
- package/layout/layout-basic.component.d.ts +54 -54
- package/layout/layout-nav-application.component.d.ts +26 -26
- package/layout/layout-nav-group.component.d.ts +14 -14
- package/layout/layout-nav-tile.component.d.ts +5 -5
- package/layout/layout.module.d.ts +18 -18
- package/layout/public_api.d.ts +5 -5
- package/layout/style/index.less +181 -182
- package/package.json +68 -68
- package/public_api.d.ts +8 -8
- package/src/bis.module.d.ts +8 -8
- package/src/helper.d.ts +16 -16
- package/src/provide.d.ts +2 -2
- package/src/refresh-token.d.ts +6 -6
- package/src/startup.service.d.ts +24 -24
- package/src/yunzai-act.guard.d.ts +20 -20
- package/src/yunzai-analysis-addon.guard.d.ts +26 -26
- package/src/yunzai-default.interceptor.d.ts +2 -2
- package/theme-compact.less +3 -3
- package/theme-dark.less +46 -46
- package/theme-default.less +48 -48
- package/theme-variable.less +1 -0
- package/yunzai-widgets/index.d.ts +5 -5
- package/yunzai-widgets/public_api.d.ts +6 -6
- package/yunzai-widgets/yunzai-clear-storage.component.d.ts +8 -8
- package/yunzai-widgets/yunzai-fullscreen.component.d.ts +8 -8
- package/yunzai-widgets/yunzai-i18n.component.d.ts +19 -19
- package/yunzai-widgets/yunzai-notify.component.d.ts +25 -25
- package/yunzai-widgets/yunzai-user.component.d.ts +22 -22
- package/yunzai-widgets/yunzai-widget.module.d.ts +18 -18
|
@@ -1,372 +1,372 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, inject } from '@angular/core';
|
|
3
|
-
import { FormsModule } from '@angular/forms';
|
|
4
|
-
import { Subject, takeUntil } from 'rxjs';
|
|
5
|
-
import { mergeBisConfig } from '@yelon/bis/config';
|
|
6
|
-
import { _HttpClient, I18nPipe, YunzaiHttpI18NService } from '@yelon/theme';
|
|
7
|
-
import { useLocalStorageHeader, WINDOW, YunzaiConfigService } from '@yelon/util';
|
|
8
|
-
import { NzFormModule } from 'ng-zorro-antd/form';
|
|
9
|
-
import { NzGridModule } from 'ng-zorro-antd/grid';
|
|
10
|
-
import { NzInputModule } from 'ng-zorro-antd/input';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
import * as i1 from "@angular/forms";
|
|
13
|
-
import * as i2 from "ng-zorro-antd/grid";
|
|
14
|
-
import * as i3 from "ng-zorro-antd/input";
|
|
15
|
-
import * as i4 from "@angular/common";
|
|
16
|
-
export class YunzaiNavApplicationComponent {
|
|
17
|
-
constructor() {
|
|
18
|
-
this.config = mergeBisConfig(inject(YunzaiConfigService));
|
|
19
|
-
this.http = inject(_HttpClient);
|
|
20
|
-
this.win = inject(WINDOW);
|
|
21
|
-
this.i18n = inject(YunzaiHttpI18NService);
|
|
22
|
-
this.destroy$ = new Subject();
|
|
23
|
-
this.state = {
|
|
24
|
-
active: false,
|
|
25
|
-
type: 'all',
|
|
26
|
-
topic: undefined,
|
|
27
|
-
topics: [],
|
|
28
|
-
list: [],
|
|
29
|
-
search: null
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
get showAllMenu() {
|
|
33
|
-
if (this.config.nav)
|
|
34
|
-
return this.config.nav.all;
|
|
35
|
-
return true;
|
|
36
|
-
}
|
|
37
|
-
get showMineMenu() {
|
|
38
|
-
if (this.config.nav)
|
|
39
|
-
return this.config.nav.mine;
|
|
40
|
-
return true;
|
|
41
|
-
}
|
|
42
|
-
ngOnInit() {
|
|
43
|
-
this.fetchAllTopic();
|
|
44
|
-
this.attachNav('all');
|
|
45
|
-
this.win.addEventListener('click', (event) => {
|
|
46
|
-
const { target } = event;
|
|
47
|
-
const btn = this.win.document.getElementById('navBtn');
|
|
48
|
-
const dropdown = this.win.document.getElementById('navDropdown');
|
|
49
|
-
if (btn && dropdown && !dropdown.contains(target) && !btn.contains(target)) {
|
|
50
|
-
this.state.active = false;
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
fetchAllTopic() {
|
|
55
|
-
const [, getTopics] = useLocalStorageHeader();
|
|
56
|
-
this.state.topics = getTopics();
|
|
57
|
-
}
|
|
58
|
-
attachNav(type, topic) {
|
|
59
|
-
this.state.type = type;
|
|
60
|
-
this.clearSearch();
|
|
61
|
-
if (type === 'all') {
|
|
62
|
-
this.displayAllNav();
|
|
63
|
-
}
|
|
64
|
-
if (type === 'mine') {
|
|
65
|
-
this.displayMineNav();
|
|
66
|
-
}
|
|
67
|
-
if (type === 'other' && topic) {
|
|
68
|
-
this.displayOtherNav(topic);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
clearSearch() {
|
|
72
|
-
this.state.search = null;
|
|
73
|
-
}
|
|
74
|
-
displayAllNav() {
|
|
75
|
-
const [, getTopics] = useLocalStorageHeader();
|
|
76
|
-
this.state.list = getTopics();
|
|
77
|
-
}
|
|
78
|
-
displayMineNav() {
|
|
79
|
-
const [, getTopics] = useLocalStorageHeader();
|
|
80
|
-
this.state.list = getTopics()
|
|
81
|
-
.filter((topic) => {
|
|
82
|
-
topic.children = topic.children.filter((child) => {
|
|
83
|
-
return child.auth;
|
|
84
|
-
});
|
|
85
|
-
return topic;
|
|
86
|
-
})
|
|
87
|
-
.filter((topic) => {
|
|
88
|
-
return topic.children.length > 0;
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
displayOtherNav(topic) {
|
|
92
|
-
const [, getTopics] = useLocalStorageHeader();
|
|
93
|
-
this.state.topic = topic;
|
|
94
|
-
const temp = getTopics();
|
|
95
|
-
this.state.list = temp.filter(t => t.key === topic.key)[0].children;
|
|
96
|
-
}
|
|
97
|
-
diffChange(flag) {
|
|
98
|
-
if (flag) {
|
|
99
|
-
this.state.active = flag;
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
this.state.active = !this.state.active;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
open(topic) {
|
|
106
|
-
if (topic.key) {
|
|
107
|
-
this.http
|
|
108
|
-
.post(`/app-manager/web-scan/save`, {
|
|
109
|
-
appId: topic.key,
|
|
110
|
-
createDate: new Date()
|
|
111
|
-
})
|
|
112
|
-
.pipe(takeUntil(this.destroy$))
|
|
113
|
-
.subscribe();
|
|
114
|
-
}
|
|
115
|
-
switch (topic.target) {
|
|
116
|
-
case 'href':
|
|
117
|
-
this.win.location.href = topic.url;
|
|
118
|
-
break;
|
|
119
|
-
case 'blank':
|
|
120
|
-
this.win.
|
|
121
|
-
break;
|
|
122
|
-
case 'target':
|
|
123
|
-
this.win.
|
|
124
|
-
break;
|
|
125
|
-
default:
|
|
126
|
-
this.win.location.href = topic.url;
|
|
127
|
-
break;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
onSearch() {
|
|
131
|
-
const [, getTopics] = useLocalStorageHeader();
|
|
132
|
-
const temp = getTopics();
|
|
133
|
-
if (this.state.search) {
|
|
134
|
-
this.state.list = temp
|
|
135
|
-
.filter((topic) => {
|
|
136
|
-
if (this.i18n.fanyi(topic.name).includes(this.state.search)) {
|
|
137
|
-
return topic;
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
topic.children = topic.children.filter((child) => {
|
|
141
|
-
return this.i18n.fanyi(child.name).includes(this.state.search);
|
|
142
|
-
});
|
|
143
|
-
return topic;
|
|
144
|
-
}
|
|
145
|
-
})
|
|
146
|
-
.filter((topic) => {
|
|
147
|
-
return topic.children.length > 0;
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
const [, getTopics] = useLocalStorageHeader();
|
|
152
|
-
this.state.list = getTopics();
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
ngOnDestroy() {
|
|
156
|
-
this.destroy$.complete();
|
|
157
|
-
}
|
|
158
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
159
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
160
|
-
<ng-template #search>
|
|
161
|
-
<div nz-row class="yz-application-list-search">
|
|
162
|
-
<nz-input-group [nzPrefix]="prefixTemplate">
|
|
163
|
-
<input
|
|
164
|
-
data-event-id="_nav_search"
|
|
165
|
-
type="text"
|
|
166
|
-
nz-input
|
|
167
|
-
placeholder="{{ 'application.search' | i18n }}"
|
|
168
|
-
[(ngModel)]="state.search"
|
|
169
|
-
(ngModelChange)="onSearch()"
|
|
170
|
-
/>
|
|
171
|
-
<ng-template #prefixTemplate>
|
|
172
|
-
<i nz-icon nzType="search" nzTheme="outline"></i>
|
|
173
|
-
</ng-template>
|
|
174
|
-
</nz-input-group>
|
|
175
|
-
</div>
|
|
176
|
-
</ng-template>
|
|
177
|
-
|
|
178
|
-
<ng-template #ld>
|
|
179
|
-
<div class="yz-application-list">
|
|
180
|
-
<ul>
|
|
181
|
-
@for (topic of state.list; track topic) {
|
|
182
|
-
<li>
|
|
183
|
-
<h5>{{ topic.name | i18n }}</h5>
|
|
184
|
-
@for (nav of topic.children; track nav) {
|
|
185
|
-
<a
|
|
186
|
-
data-event-id="_nav_item"
|
|
187
|
-
[attr.data-name]="nav.name | i18n"
|
|
188
|
-
href="javascript:;"
|
|
189
|
-
(click)="open(nav)"
|
|
190
|
-
>{{ nav.name | i18n }}</a
|
|
191
|
-
>
|
|
192
|
-
}
|
|
193
|
-
</li>
|
|
194
|
-
}
|
|
195
|
-
</ul>
|
|
196
|
-
</div>
|
|
197
|
-
</ng-template>
|
|
198
|
-
|
|
199
|
-
<div data-event-id="_nav_app" id="navBtn" class="yunzai-default__nav-item" (click)="diffChange()"
|
|
200
|
-
>{{ 'mode.nav' | i18n }}
|
|
201
|
-
</div>
|
|
202
|
-
|
|
203
|
-
<div class="yz-application" id="navDropdown" nz-row *ngIf="state.active">
|
|
204
|
-
<div nz-col [nzSpan]="3" class="yz-application-topic">
|
|
205
|
-
<div class="yz-application-topic-list">
|
|
206
|
-
@if (showAllMenu) {
|
|
207
|
-
<div data-event-id="_nav_topic" data-name="全部应用" class="yz-application-text" (click)="attachNav('all')"
|
|
208
|
-
>{{ 'mode.nav.all' | i18n }}
|
|
209
|
-
</div>
|
|
210
|
-
}
|
|
211
|
-
@if (showMineMenu) {
|
|
212
|
-
<div data-event-id="_nav_topic" data-name="我的应用" class="yz-application-text" (click)="attachNav('mine')"
|
|
213
|
-
>{{ 'mode.nav.mine' | i18n }}
|
|
214
|
-
</div>
|
|
215
|
-
}
|
|
216
|
-
@for (nav of state.topics; track nav) {
|
|
217
|
-
<div
|
|
218
|
-
data-event-id="_nav_topic"
|
|
219
|
-
[attr.data-name]="nav.name | i18n"
|
|
220
|
-
class="yz-application-text"
|
|
221
|
-
(click)="attachNav('other', nav)"
|
|
222
|
-
>{{ nav.name | i18n }}
|
|
223
|
-
</div>
|
|
224
|
-
}
|
|
225
|
-
</div>
|
|
226
|
-
</div>
|
|
227
|
-
<div nz-col [nzSpan]="21" class="yz-application-container">
|
|
228
|
-
@switch (state.type) {
|
|
229
|
-
@case ('all') {
|
|
230
|
-
<div>
|
|
231
|
-
<ng-template [ngTemplateOutlet]="search" />
|
|
232
|
-
<ng-template [ngTemplateOutlet]="ld" />
|
|
233
|
-
</div>
|
|
234
|
-
}
|
|
235
|
-
@case ('mine') {
|
|
236
|
-
<div>
|
|
237
|
-
<ng-template [ngTemplateOutlet]="search" />
|
|
238
|
-
<ng-template [ngTemplateOutlet]="ld" />
|
|
239
|
-
</div>
|
|
240
|
-
}
|
|
241
|
-
@case ('other') {
|
|
242
|
-
<div class="yz-application-list yz-application-list-other">
|
|
243
|
-
<div class="yz-application-list-item">
|
|
244
|
-
<ul>
|
|
245
|
-
@for (nav of state.list; track nav) {
|
|
246
|
-
<li data-event-id="_nav_item" [attr.data-name]="nav.name | i18n" (click)="open(nav)">
|
|
247
|
-
<a href="javascript:;">
|
|
248
|
-
<h4>{{ nav.name | i18n }}</h4>
|
|
249
|
-
<p>{{ nav.intro | i18n }}</p>
|
|
250
|
-
</a>
|
|
251
|
-
</li>
|
|
252
|
-
}
|
|
253
|
-
</ul>
|
|
254
|
-
</div>
|
|
255
|
-
</div>
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
</div>
|
|
259
|
-
</div>
|
|
260
|
-
`, isInline: true, dependencies: [{ kind: "pipe", type: I18nPipe, name: "i18n" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NzFormModule }, { kind: "directive", type: i2.NzColDirective, selector: "[nz-col],nz-col,nz-form-control,nz-form-label", inputs: ["nzFlex", "nzSpan", "nzOrder", "nzOffset", "nzPush", "nzPull", "nzXs", "nzSm", "nzMd", "nzLg", "nzXl", "nzXXl"], exportAs: ["nzCol"] }, { kind: "directive", type: i2.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "ngmodule", type: NzInputModule }, { kind: "directive", type: i3.NzInputDirective, selector: "input[nz-input],textarea[nz-input]", inputs: ["nzBorderless", "nzSize", "nzStepperless", "nzStatus", "disabled"], exportAs: ["nzInput"] }, { kind: "component", type: i3.NzInputGroupComponent, selector: "nz-input-group", inputs: ["nzAddOnBeforeIcon", "nzAddOnAfterIcon", "nzPrefixIcon", "nzSuffixIcon", "nzAddOnBefore", "nzAddOnAfter", "nzPrefix", "nzStatus", "nzSuffix", "nzSize", "nzSearch", "nzCompact"], exportAs: ["nzInputGroup"] }, { kind: "directive", type: i3.NzInputGroupWhitSuffixOrPrefixDirective, selector: "nz-input-group[nzSuffix], nz-input-group[nzPrefix]" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: NzGridModule }] }); }
|
|
261
|
-
}
|
|
262
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
263
|
-
type: Component,
|
|
264
|
-
args: [{
|
|
265
|
-
selector: `yunzai-layout-nav-application`,
|
|
266
|
-
template: `
|
|
267
|
-
<ng-template #search>
|
|
268
|
-
<div nz-row class="yz-application-list-search">
|
|
269
|
-
<nz-input-group [nzPrefix]="prefixTemplate">
|
|
270
|
-
<input
|
|
271
|
-
data-event-id="_nav_search"
|
|
272
|
-
type="text"
|
|
273
|
-
nz-input
|
|
274
|
-
placeholder="{{ 'application.search' | i18n }}"
|
|
275
|
-
[(ngModel)]="state.search"
|
|
276
|
-
(ngModelChange)="onSearch()"
|
|
277
|
-
/>
|
|
278
|
-
<ng-template #prefixTemplate>
|
|
279
|
-
<i nz-icon nzType="search" nzTheme="outline"></i>
|
|
280
|
-
</ng-template>
|
|
281
|
-
</nz-input-group>
|
|
282
|
-
</div>
|
|
283
|
-
</ng-template>
|
|
284
|
-
|
|
285
|
-
<ng-template #ld>
|
|
286
|
-
<div class="yz-application-list">
|
|
287
|
-
<ul>
|
|
288
|
-
@for (topic of state.list; track topic) {
|
|
289
|
-
<li>
|
|
290
|
-
<h5>{{ topic.name | i18n }}</h5>
|
|
291
|
-
@for (nav of topic.children; track nav) {
|
|
292
|
-
<a
|
|
293
|
-
data-event-id="_nav_item"
|
|
294
|
-
[attr.data-name]="nav.name | i18n"
|
|
295
|
-
href="javascript:;"
|
|
296
|
-
(click)="open(nav)"
|
|
297
|
-
>{{ nav.name | i18n }}</a
|
|
298
|
-
>
|
|
299
|
-
}
|
|
300
|
-
</li>
|
|
301
|
-
}
|
|
302
|
-
</ul>
|
|
303
|
-
</div>
|
|
304
|
-
</ng-template>
|
|
305
|
-
|
|
306
|
-
<div data-event-id="_nav_app" id="navBtn" class="yunzai-default__nav-item" (click)="diffChange()"
|
|
307
|
-
>{{ 'mode.nav' | i18n }}
|
|
308
|
-
</div>
|
|
309
|
-
|
|
310
|
-
<div class="yz-application" id="navDropdown" nz-row *ngIf="state.active">
|
|
311
|
-
<div nz-col [nzSpan]="3" class="yz-application-topic">
|
|
312
|
-
<div class="yz-application-topic-list">
|
|
313
|
-
@if (showAllMenu) {
|
|
314
|
-
<div data-event-id="_nav_topic" data-name="全部应用" class="yz-application-text" (click)="attachNav('all')"
|
|
315
|
-
>{{ 'mode.nav.all' | i18n }}
|
|
316
|
-
</div>
|
|
317
|
-
}
|
|
318
|
-
@if (showMineMenu) {
|
|
319
|
-
<div data-event-id="_nav_topic" data-name="我的应用" class="yz-application-text" (click)="attachNav('mine')"
|
|
320
|
-
>{{ 'mode.nav.mine' | i18n }}
|
|
321
|
-
</div>
|
|
322
|
-
}
|
|
323
|
-
@for (nav of state.topics; track nav) {
|
|
324
|
-
<div
|
|
325
|
-
data-event-id="_nav_topic"
|
|
326
|
-
[attr.data-name]="nav.name | i18n"
|
|
327
|
-
class="yz-application-text"
|
|
328
|
-
(click)="attachNav('other', nav)"
|
|
329
|
-
>{{ nav.name | i18n }}
|
|
330
|
-
</div>
|
|
331
|
-
}
|
|
332
|
-
</div>
|
|
333
|
-
</div>
|
|
334
|
-
<div nz-col [nzSpan]="21" class="yz-application-container">
|
|
335
|
-
@switch (state.type) {
|
|
336
|
-
@case ('all') {
|
|
337
|
-
<div>
|
|
338
|
-
<ng-template [ngTemplateOutlet]="search" />
|
|
339
|
-
<ng-template [ngTemplateOutlet]="ld" />
|
|
340
|
-
</div>
|
|
341
|
-
}
|
|
342
|
-
@case ('mine') {
|
|
343
|
-
<div>
|
|
344
|
-
<ng-template [ngTemplateOutlet]="search" />
|
|
345
|
-
<ng-template [ngTemplateOutlet]="ld" />
|
|
346
|
-
</div>
|
|
347
|
-
}
|
|
348
|
-
@case ('other') {
|
|
349
|
-
<div class="yz-application-list yz-application-list-other">
|
|
350
|
-
<div class="yz-application-list-item">
|
|
351
|
-
<ul>
|
|
352
|
-
@for (nav of state.list; track nav) {
|
|
353
|
-
<li data-event-id="_nav_item" [attr.data-name]="nav.name | i18n" (click)="open(nav)">
|
|
354
|
-
<a href="javascript:;">
|
|
355
|
-
<h4>{{ nav.name | i18n }}</h4>
|
|
356
|
-
<p>{{ nav.intro | i18n }}</p>
|
|
357
|
-
</a>
|
|
358
|
-
</li>
|
|
359
|
-
}
|
|
360
|
-
</ul>
|
|
361
|
-
</div>
|
|
362
|
-
</div>
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
</div>
|
|
366
|
-
</div>
|
|
367
|
-
`,
|
|
368
|
-
standalone: true,
|
|
369
|
-
imports: [I18nPipe, FormsModule, NzFormModule, NzInputModule, CommonModule, NzGridModule]
|
|
370
|
-
}]
|
|
371
|
-
}] });
|
|
372
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LW5hdi1hcHBsaWNhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9iaXMvbGF5b3V0L2xheW91dC1uYXYtYXBwbGljYXRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM1RSxPQUFPLEVBRUwscUJBQXFCLEVBQ3JCLE1BQU0sRUFDTixtQkFBbUIsRUFFcEIsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7OztBQTZHcEQsTUFBTSxPQUFPLDZCQUE2QjtJQTNHMUM7UUE0R21CLFdBQU0sR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztRQUNyRCxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNCLFFBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckIsU0FBSSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3JDLGFB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O21CQUFDO29CQUNULFFBQVEsRUFBRSwrQkFBK0I7b0JBQ3pDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxR1Q7b0JBQ0QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsWUFBWSxDQUFDO2lCQUMxRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IG1lcmdlQmlzQ29uZmlnIH0gZnJvbSAnQHllbG9uL2Jpcy9jb25maWcnO1xuaW1wb3J0IHsgX0h0dHBDbGllbnQsIEkxOG5QaXBlLCBZdW56YWlIdHRwSTE4TlNlcnZpY2UgfSBmcm9tICdAeWVsb24vdGhlbWUnO1xuaW1wb3J0IHtcbiAgTGF5b3V0TmF2QXBwbGljYXRpb25TdGF0ZSxcbiAgdXNlTG9jYWxTdG9yYWdlSGVhZGVyLFxuICBXSU5ET1csXG4gIFl1bnphaUNvbmZpZ1NlcnZpY2UsXG4gIFl1bnphaU5hdlRvcGljXG59IGZyb20gJ0B5ZWxvbi91dGlsJztcbmltcG9ydCB7IE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5pbXBvcnQgeyBOekZvcm1Nb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2Zvcm0nO1xuaW1wb3J0IHsgTnpHcmlkTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9ncmlkJztcbmltcG9ydCB7IE56SW5wdXRNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2lucHV0JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBgeXVuemFpLWxheW91dC1uYXYtYXBwbGljYXRpb25gLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy10ZW1wbGF0ZSAjc2VhcmNoPlxuICAgICAgPGRpdiBuei1yb3cgY2xhc3M9XCJ5ei1hcHBsaWNhdGlvbi1saXN0LXNlYXJjaFwiPlxuICAgICAgICA8bnotaW5wdXQtZ3JvdXAgW256UHJlZml4XT1cInByZWZpeFRlbXBsYXRlXCI+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBkYXRhLWV2ZW50LWlkPVwiX25hdl9zZWFyY2hcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgbnotaW5wdXRcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2FwcGxpY2F0aW9uLnNlYXJjaCcgfCBpMThuIH19XCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwic3RhdGUuc2VhcmNoXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VhcmNoKClcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNwcmVmaXhUZW1wbGF0ZT5cbiAgICAgICAgICAgIDxpIG56LWljb24gbnpUeXBlPVwic2VhcmNoXCIgbnpUaGVtZT1cIm91dGxpbmVcIj48L2k+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uei1pbnB1dC1ncm91cD5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI2xkPlxuICAgICAgPGRpdiBjbGFzcz1cInl6LWFwcGxpY2F0aW9uLWxpc3RcIj5cbiAgICAgICAgPHVsPlxuICAgICAgICAgIEBmb3IgKHRvcGljIG9mIHN0YXRlLmxpc3Q7IHRyYWNrIHRvcGljKSB7XG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgIDxoNT57eyB0b3BpYy5uYW1lIHwgaTE4biB9fTwvaDU+XG4gICAgICAgICAgICAgIEBmb3IgKG5hdiBvZiB0b3BpYy5jaGlsZHJlbjsgdHJhY2sgbmF2KSB7XG4gICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgIGRhdGEtZXZlbnQtaWQ9XCJfbmF2X2l0ZW1cIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1uYW1lXT1cIm5hdi5uYW1lIHwgaTE4blwiXG4gICAgICAgICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuKG5hdilcIlxuICAgICAgICAgICAgICAgICAgPnt7IG5hdi5uYW1lIHwgaTE4biB9fTwvYVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPGRpdiBkYXRhLWV2ZW50LWlkPVwiX25hdl9hcHBcIiBpZD1cIm5hdkJ0blwiIGNsYXNzPVwieXVuemFpLWRlZmF1bHRfX25hdi1pdGVtXCIgKGNsaWNrKT1cImRpZmZDaGFuZ2UoKVwiXG4gICAgICA+e3sgJ21vZGUubmF2JyB8IGkxOG4gfX1cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJ5ei1hcHBsaWNhdGlvblwiIGlkPVwibmF2RHJvcGRvd25cIiBuei1yb3cgKm5nSWY9XCJzdGF0ZS5hY3RpdmVcIj5cbiAgICAgIDxkaXYgbnotY29sIFtuelNwYW5dPVwiM1wiIGNsYXNzPVwieXotYXBwbGljYXRpb24tdG9waWNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInl6LWFwcGxpY2F0aW9uLXRvcGljLWxpc3RcIj5cbiAgICAgICAgICBAaWYgKHNob3dBbGxNZW51KSB7XG4gICAgICAgICAgICA8ZGl2IGRhdGEtZXZlbnQtaWQ9XCJfbmF2X3RvcGljXCIgZGF0YS1uYW1lPVwi5YWo6YOo5bqU55SoXCIgY2xhc3M9XCJ5ei1hcHBsaWNhdGlvbi10ZXh0XCIgKGNsaWNrKT1cImF0dGFjaE5hdignYWxsJylcIlxuICAgICAgICAgICAgICA+e3sgJ21vZGUubmF2LmFsbCcgfCBpMThuIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChzaG93TWluZU1lbnUpIHtcbiAgICAgICAgICAgIDxkaXYgZGF0YS1ldmVudC1pZD1cIl9uYXZfdG9waWNcIiBkYXRhLW5hbWU9XCLmiJHnmoTlupTnlKhcIiBjbGFzcz1cInl6LWFwcGxpY2F0aW9uLXRleHRcIiAoY2xpY2spPVwiYXR0YWNoTmF2KCdtaW5lJylcIlxuICAgICAgICAgICAgICA+e3sgJ21vZGUubmF2Lm1pbmUnIHwgaTE4biB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBmb3IgKG5hdiBvZiBzdGF0ZS50b3BpY3M7IHRyYWNrIG5hdikge1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBkYXRhLWV2ZW50LWlkPVwiX25hdl90b3BpY1wiXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtbmFtZV09XCJuYXYubmFtZSB8IGkxOG5cIlxuICAgICAgICAgICAgICBjbGFzcz1cInl6LWFwcGxpY2F0aW9uLXRleHRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYXR0YWNoTmF2KCdvdGhlcicsIG5hdilcIlxuICAgICAgICAgICAgICA+e3sgbmF2Lm5hbWUgfCBpMThuIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IG56LWNvbCBbbnpTcGFuXT1cIjIxXCIgY2xhc3M9XCJ5ei1hcHBsaWNhdGlvbi1jb250YWluZXJcIj5cbiAgICAgICAgQHN3aXRjaCAoc3RhdGUudHlwZSkge1xuICAgICAgICAgIEBjYXNlICgnYWxsJykge1xuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlYXJjaFwiIC8+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsZFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGNhc2UgKCdtaW5lJykge1xuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlYXJjaFwiIC8+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsZFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGNhc2UgKCdvdGhlcicpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ5ei1hcHBsaWNhdGlvbi1saXN0IHl6LWFwcGxpY2F0aW9uLWxpc3Qtb3RoZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInl6LWFwcGxpY2F0aW9uLWxpc3QtaXRlbVwiPlxuICAgICAgICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKG5hdiBvZiBzdGF0ZS5saXN0OyB0cmFjayBuYXYpIHtcbiAgICAgICAgICAgICAgICAgICAgPGxpIGRhdGEtZXZlbnQtaWQ9XCJfbmF2X2l0ZW1cIiBbYXR0ci5kYXRhLW5hbWVdPVwibmF2Lm5hbWUgfCBpMThuXCIgKGNsaWNrKT1cIm9wZW4obmF2KVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OjtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoND57eyBuYXYubmFtZSB8IGkxOG4gfX08L2g0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+e3sgbmF2LmludHJvIHwgaTE4biB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbSTE4blBpcGUsIEZvcm1zTW9kdWxlLCBOekZvcm1Nb2R1bGUsIE56SW5wdXRNb2R1bGUsIENvbW1vbk1vZHVsZSwgTnpHcmlkTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBZdW56YWlOYXZBcHBsaWNhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBtZXJnZUJpc0NvbmZpZyhpbmplY3QoWXVuemFpQ29uZmlnU2VydmljZSkpO1xuICBwcml2YXRlIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoX0h0dHBDbGllbnQpO1xuICBwcml2YXRlIHJlYWRvbmx5IHdpbiA9IGluamVjdChXSU5ET1cpO1xuICBwcml2YXRlIHJlYWRvbmx5IGkxOG4gPSBpbmplY3QoWXVuemFpSHR0cEkxOE5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgc3RhdGU6IExheW91dE5hdkFwcGxpY2F0aW9uU3RhdGUgPSB7XG4gICAgYWN0aXZlOiBmYWxzZSxcbiAgICB0eXBlOiAnYWxsJyxcbiAgICB0b3BpYzogdW5kZWZpbmVkLFxuICAgIHRvcGljczogW10sXG4gICAgbGlzdDogW10sXG4gICAgc2VhcmNoOiBudWxsXG4gIH07XG5cbiAgZ2V0IHNob3dBbGxNZW51KCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmNvbmZpZy5uYXYpIHJldHVybiB0aGlzLmNvbmZpZy5uYXYhLmFsbCE7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXQgc2hvd01pbmVNZW51KCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmNvbmZpZy5uYXYpIHJldHVybiB0aGlzLmNvbmZpZy5uYXYhLm1pbmUhO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mZXRjaEFsbFRvcGljKCk7XG4gICAgdGhpcy5hdHRhY2hOYXYoJ2FsbCcpO1xuICAgIHRoaXMud2luLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGV2ZW50OiBOelNhZmVBbnkpID0+IHtcbiAgICAgIGNvbnN0IHsgdGFyZ2V0IH0gPSBldmVudDtcbiAgICAgIGNvbnN0IGJ0biA9IHRoaXMud2luLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduYXZCdG4nKTtcbiAgICAgIGNvbnN0IGRyb3Bkb3duID0gdGhpcy53aW4uZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25hdkRyb3Bkb3duJyk7XG4gICAgICBpZiAoYnRuICYmIGRyb3Bkb3duICYmICFkcm9wZG93bi5jb250YWlucyh0YXJnZXQpICYmICFidG4uY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgICB0aGlzLnN0YXRlLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZmV0Y2hBbGxUb3BpYygpOiB2b2lkIHtcbiAgICBjb25zdCBbLCBnZXRUb3BpY3NdID0gdXNlTG9jYWxTdG9yYWdlSGVhZGVyKCk7XG4gICAgdGhpcy5zdGF0ZS50b3BpY3MgPSBnZXRUb3BpY3MoKSE7XG4gIH1cblxuICBhdHRhY2hOYXYodHlwZTogJ2FsbCcgfCAnbWluZScgfCAnb3RoZXInLCB0b3BpYz86IFl1bnphaU5hdlRvcGljKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZS50eXBlID0gdHlwZTtcbiAgICB0aGlzLmNsZWFyU2VhcmNoKCk7XG4gICAgaWYgKHR5cGUgPT09ICdhbGwnKSB7XG4gICAgICB0aGlzLmRpc3BsYXlBbGxOYXYoKTtcbiAgICB9XG4gICAgaWYgKHR5cGUgPT09ICdtaW5lJykge1xuICAgICAgdGhpcy5kaXNwbGF5TWluZU5hdigpO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gJ290aGVyJyAmJiB0b3BpYykge1xuICAgICAgdGhpcy5kaXNwbGF5T3RoZXJOYXYodG9waWMpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyU2VhcmNoKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUuc2VhcmNoID0gbnVsbDtcbiAgfVxuXG4gIGRpc3BsYXlBbGxOYXYoKTogdm9pZCB7XG4gICAgY29uc3QgWywgZ2V0VG9waWNzXSA9IHVzZUxvY2FsU3RvcmFnZUhlYWRlcigpO1xuICAgIHRoaXMuc3RhdGUubGlzdCA9IGdldFRvcGljcygpITtcbiAgfVxuXG4gIGRpc3BsYXlNaW5lTmF2KCk6IHZvaWQge1xuICAgIGNvbnN0IFssIGdldFRvcGljc10gPSB1c2VMb2NhbFN0b3JhZ2VIZWFkZXIoKTtcbiAgICB0aGlzLnN0YXRlLmxpc3QgPSBnZXRUb3BpY3MoKSFcbiAgICAgIC5maWx0ZXIoKHRvcGljOiBZdW56YWlOYXZUb3BpYykgPT4ge1xuICAgICAgICB0b3BpYy5jaGlsZHJlbiA9IHRvcGljLmNoaWxkcmVuLmZpbHRlcigoY2hpbGQ6IFl1bnphaU5hdlRvcGljKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGNoaWxkLmF1dGg7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdG9waWM7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigodG9waWM6IFl1bnphaU5hdlRvcGljKSA9PiB7XG4gICAgICAgIHJldHVybiB0b3BpYy5jaGlsZHJlbi5sZW5ndGggPiAwO1xuICAgICAgfSk7XG4gIH1cblxuICBkaXNwbGF5T3RoZXJOYXYodG9waWM6IFl1bnphaU5hdlRvcGljKTogdm9pZCB7XG4gICAgY29uc3QgWywgZ2V0VG9waWNzXSA9IHVzZUxvY2FsU3RvcmFnZUhlYWRlcigpO1xuICAgIHRoaXMuc3RhdGUudG9waWMgPSB0b3BpYztcbiAgICBjb25zdCB0ZW1wOiBZdW56YWlOYXZUb3BpY1tdID0gZ2V0VG9waWNzKCkhO1xuICAgIHRoaXMuc3RhdGUubGlzdCA9IHRlbXAuZmlsdGVyKHQgPT4gdC5rZXkgPT09IHRvcGljLmtleSlbMF0uY2hpbGRyZW47XG4gIH1cblxuICBkaWZmQ2hhbmdlKGZsYWc/OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGZsYWcpIHtcbiAgICAgIHRoaXMuc3RhdGUuYWN0aXZlID0gZmxhZztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGF0ZS5hY3RpdmUgPSAhdGhpcy5zdGF0ZS5hY3RpdmU7XG4gICAgfVxuICB9XG5cbiAgb3Blbih0b3BpYzogWXVuemFpTmF2VG9waWMpOiB2b2lkIHtcbiAgICBpZiAodG9waWMua2V5KSB7XG4gICAgICB0aGlzLmh0dHBcbiAgICAgICAgLnBvc3QoYC9hcHAtbWFuYWdlci93ZWItc2Nhbi9zYXZlYCwge1xuICAgICAgICAgIGFwcElkOiB0b3BpYy5rZXksXG4gICAgICAgICAgY3JlYXRlRGF0ZTogbmV3IERhdGUoKVxuICAgICAgICB9KVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgc3dpdGNoICh0b3BpYy50YXJnZXQpIHtcbiAgICAgIGNhc2UgJ2hyZWYnOlxuICAgICAgICB0aGlzLndpbi5sb2NhdGlvbi5ocmVmID0gdG9waWMudXJsO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2JsYW5rJzpcbiAgICAgICAgdGhpcy53aW4ubG9jYXRpb24uaHJlZiA9IHRvcGljLnVybDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0YXJnZXQnOlxuICAgICAgICB0aGlzLndpbi5sb2NhdGlvbi5ocmVmID0gdG9waWMudXJsO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMud2luLmxvY2F0aW9uLmhyZWYgPSB0b3BpYy51cmw7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIG9uU2VhcmNoKCk6IHZvaWQge1xuICAgIGNvbnN0IFssIGdldFRvcGljc10gPSB1c2VMb2NhbFN0b3JhZ2VIZWFkZXIoKTtcbiAgICBjb25zdCB0ZW1wOiBZdW56YWlOYXZUb3BpY1tdID0gZ2V0VG9waWNzKCkhO1xuICAgIGlmICh0aGlzLnN0YXRlLnNlYXJjaCkge1xuICAgICAgdGhpcy5zdGF0ZS5saXN0ID0gdGVtcFxuICAgICAgICAuZmlsdGVyKCh0b3BpYzogWXVuemFpTmF2VG9waWMpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5pMThuLmZhbnlpKHRvcGljLm5hbWUpLmluY2x1ZGVzKHRoaXMuc3RhdGUuc2VhcmNoISkpIHtcbiAgICAgICAgICAgIHJldHVybiB0b3BpYztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdG9waWMuY2hpbGRyZW4gPSB0b3BpYy5jaGlsZHJlbi5maWx0ZXIoKGNoaWxkOiBZdW56YWlOYXZUb3BpYykgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pMThuLmZhbnlpKGNoaWxkLm5hbWUpLmluY2x1ZGVzKHRoaXMuc3RhdGUuc2VhcmNoISk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB0b3BpYztcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5maWx0ZXIoKHRvcGljOiBZdW56YWlOYXZUb3BpYykgPT4ge1xuICAgICAgICAgIHJldHVybiB0b3BpYy5jaGlsZHJlbi5sZW5ndGggPiAwO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgWywgZ2V0VG9waWNzXSA9IHVzZUxvY2FsU3RvcmFnZUhlYWRlcigpO1xuICAgICAgdGhpcy5zdGF0ZS5saXN0ID0gZ2V0VG9waWNzKCkhO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, inject } from '@angular/core';
|
|
3
|
+
import { FormsModule } from '@angular/forms';
|
|
4
|
+
import { Subject, takeUntil } from 'rxjs';
|
|
5
|
+
import { mergeBisConfig } from '@yelon/bis/config';
|
|
6
|
+
import { _HttpClient, I18nPipe, YunzaiHttpI18NService } from '@yelon/theme';
|
|
7
|
+
import { useLocalStorageHeader, WINDOW, YunzaiConfigService } from '@yelon/util';
|
|
8
|
+
import { NzFormModule } from 'ng-zorro-antd/form';
|
|
9
|
+
import { NzGridModule } from 'ng-zorro-antd/grid';
|
|
10
|
+
import { NzInputModule } from 'ng-zorro-antd/input';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "@angular/forms";
|
|
13
|
+
import * as i2 from "ng-zorro-antd/grid";
|
|
14
|
+
import * as i3 from "ng-zorro-antd/input";
|
|
15
|
+
import * as i4 from "@angular/common";
|
|
16
|
+
export class YunzaiNavApplicationComponent {
|
|
17
|
+
constructor() {
|
|
18
|
+
this.config = mergeBisConfig(inject(YunzaiConfigService));
|
|
19
|
+
this.http = inject(_HttpClient);
|
|
20
|
+
this.win = inject(WINDOW);
|
|
21
|
+
this.i18n = inject(YunzaiHttpI18NService);
|
|
22
|
+
this.destroy$ = new Subject();
|
|
23
|
+
this.state = {
|
|
24
|
+
active: false,
|
|
25
|
+
type: 'all',
|
|
26
|
+
topic: undefined,
|
|
27
|
+
topics: [],
|
|
28
|
+
list: [],
|
|
29
|
+
search: null
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
get showAllMenu() {
|
|
33
|
+
if (this.config.nav)
|
|
34
|
+
return this.config.nav.all;
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
get showMineMenu() {
|
|
38
|
+
if (this.config.nav)
|
|
39
|
+
return this.config.nav.mine;
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
ngOnInit() {
|
|
43
|
+
this.fetchAllTopic();
|
|
44
|
+
this.attachNav('all');
|
|
45
|
+
this.win.addEventListener('click', (event) => {
|
|
46
|
+
const { target } = event;
|
|
47
|
+
const btn = this.win.document.getElementById('navBtn');
|
|
48
|
+
const dropdown = this.win.document.getElementById('navDropdown');
|
|
49
|
+
if (btn && dropdown && !dropdown.contains(target) && !btn.contains(target)) {
|
|
50
|
+
this.state.active = false;
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
fetchAllTopic() {
|
|
55
|
+
const [, getTopics] = useLocalStorageHeader();
|
|
56
|
+
this.state.topics = getTopics();
|
|
57
|
+
}
|
|
58
|
+
attachNav(type, topic) {
|
|
59
|
+
this.state.type = type;
|
|
60
|
+
this.clearSearch();
|
|
61
|
+
if (type === 'all') {
|
|
62
|
+
this.displayAllNav();
|
|
63
|
+
}
|
|
64
|
+
if (type === 'mine') {
|
|
65
|
+
this.displayMineNav();
|
|
66
|
+
}
|
|
67
|
+
if (type === 'other' && topic) {
|
|
68
|
+
this.displayOtherNav(topic);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
clearSearch() {
|
|
72
|
+
this.state.search = null;
|
|
73
|
+
}
|
|
74
|
+
displayAllNav() {
|
|
75
|
+
const [, getTopics] = useLocalStorageHeader();
|
|
76
|
+
this.state.list = getTopics();
|
|
77
|
+
}
|
|
78
|
+
displayMineNav() {
|
|
79
|
+
const [, getTopics] = useLocalStorageHeader();
|
|
80
|
+
this.state.list = getTopics()
|
|
81
|
+
.filter((topic) => {
|
|
82
|
+
topic.children = topic.children.filter((child) => {
|
|
83
|
+
return child.auth;
|
|
84
|
+
});
|
|
85
|
+
return topic;
|
|
86
|
+
})
|
|
87
|
+
.filter((topic) => {
|
|
88
|
+
return topic.children.length > 0;
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
displayOtherNav(topic) {
|
|
92
|
+
const [, getTopics] = useLocalStorageHeader();
|
|
93
|
+
this.state.topic = topic;
|
|
94
|
+
const temp = getTopics();
|
|
95
|
+
this.state.list = temp.filter(t => t.key === topic.key)[0].children;
|
|
96
|
+
}
|
|
97
|
+
diffChange(flag) {
|
|
98
|
+
if (flag) {
|
|
99
|
+
this.state.active = flag;
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
this.state.active = !this.state.active;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
open(topic) {
|
|
106
|
+
if (topic.key) {
|
|
107
|
+
this.http
|
|
108
|
+
.post(`/app-manager/web-scan/save`, {
|
|
109
|
+
appId: topic.key,
|
|
110
|
+
createDate: new Date()
|
|
111
|
+
})
|
|
112
|
+
.pipe(takeUntil(this.destroy$))
|
|
113
|
+
.subscribe();
|
|
114
|
+
}
|
|
115
|
+
switch (topic.target) {
|
|
116
|
+
case 'href':
|
|
117
|
+
this.win.location.href = topic.url;
|
|
118
|
+
break;
|
|
119
|
+
case 'blank':
|
|
120
|
+
this.win.open(topic.url);
|
|
121
|
+
break;
|
|
122
|
+
case 'target':
|
|
123
|
+
this.win.open(topic.url);
|
|
124
|
+
break;
|
|
125
|
+
default:
|
|
126
|
+
this.win.location.href = topic.url;
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
onSearch() {
|
|
131
|
+
const [, getTopics] = useLocalStorageHeader();
|
|
132
|
+
const temp = getTopics();
|
|
133
|
+
if (this.state.search) {
|
|
134
|
+
this.state.list = temp
|
|
135
|
+
.filter((topic) => {
|
|
136
|
+
if (this.i18n.fanyi(topic.name).includes(this.state.search)) {
|
|
137
|
+
return topic;
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
topic.children = topic.children.filter((child) => {
|
|
141
|
+
return this.i18n.fanyi(child.name).includes(this.state.search);
|
|
142
|
+
});
|
|
143
|
+
return topic;
|
|
144
|
+
}
|
|
145
|
+
})
|
|
146
|
+
.filter((topic) => {
|
|
147
|
+
return topic.children.length > 0;
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
const [, getTopics] = useLocalStorageHeader();
|
|
152
|
+
this.state.list = getTopics();
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
ngOnDestroy() {
|
|
156
|
+
this.destroy$.complete();
|
|
157
|
+
}
|
|
158
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: YunzaiNavApplicationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
159
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: YunzaiNavApplicationComponent, isStandalone: true, selector: "yunzai-layout-nav-application", ngImport: i0, template: `
|
|
160
|
+
<ng-template #search>
|
|
161
|
+
<div nz-row class="yz-application-list-search">
|
|
162
|
+
<nz-input-group [nzPrefix]="prefixTemplate">
|
|
163
|
+
<input
|
|
164
|
+
data-event-id="_nav_search"
|
|
165
|
+
type="text"
|
|
166
|
+
nz-input
|
|
167
|
+
placeholder="{{ 'application.search' | i18n }}"
|
|
168
|
+
[(ngModel)]="state.search"
|
|
169
|
+
(ngModelChange)="onSearch()"
|
|
170
|
+
/>
|
|
171
|
+
<ng-template #prefixTemplate>
|
|
172
|
+
<i nz-icon nzType="search" nzTheme="outline"></i>
|
|
173
|
+
</ng-template>
|
|
174
|
+
</nz-input-group>
|
|
175
|
+
</div>
|
|
176
|
+
</ng-template>
|
|
177
|
+
|
|
178
|
+
<ng-template #ld>
|
|
179
|
+
<div class="yz-application-list">
|
|
180
|
+
<ul>
|
|
181
|
+
@for (topic of state.list; track topic) {
|
|
182
|
+
<li>
|
|
183
|
+
<h5>{{ topic.name | i18n }}</h5>
|
|
184
|
+
@for (nav of topic.children; track nav) {
|
|
185
|
+
<a
|
|
186
|
+
data-event-id="_nav_item"
|
|
187
|
+
[attr.data-name]="nav.name | i18n"
|
|
188
|
+
href="javascript:;"
|
|
189
|
+
(click)="open(nav)"
|
|
190
|
+
>{{ nav.name | i18n }}</a
|
|
191
|
+
>
|
|
192
|
+
}
|
|
193
|
+
</li>
|
|
194
|
+
}
|
|
195
|
+
</ul>
|
|
196
|
+
</div>
|
|
197
|
+
</ng-template>
|
|
198
|
+
|
|
199
|
+
<div data-event-id="_nav_app" id="navBtn" class="yunzai-default__nav-item" (click)="diffChange()"
|
|
200
|
+
>{{ 'mode.nav' | i18n }}
|
|
201
|
+
</div>
|
|
202
|
+
|
|
203
|
+
<div class="yz-application" id="navDropdown" nz-row *ngIf="state.active">
|
|
204
|
+
<div nz-col [nzSpan]="3" class="yz-application-topic">
|
|
205
|
+
<div class="yz-application-topic-list">
|
|
206
|
+
@if (showAllMenu) {
|
|
207
|
+
<div data-event-id="_nav_topic" data-name="全部应用" class="yz-application-text" (click)="attachNav('all')"
|
|
208
|
+
>{{ 'mode.nav.all' | i18n }}
|
|
209
|
+
</div>
|
|
210
|
+
}
|
|
211
|
+
@if (showMineMenu) {
|
|
212
|
+
<div data-event-id="_nav_topic" data-name="我的应用" class="yz-application-text" (click)="attachNav('mine')"
|
|
213
|
+
>{{ 'mode.nav.mine' | i18n }}
|
|
214
|
+
</div>
|
|
215
|
+
}
|
|
216
|
+
@for (nav of state.topics; track nav) {
|
|
217
|
+
<div
|
|
218
|
+
data-event-id="_nav_topic"
|
|
219
|
+
[attr.data-name]="nav.name | i18n"
|
|
220
|
+
class="yz-application-text"
|
|
221
|
+
(click)="attachNav('other', nav)"
|
|
222
|
+
>{{ nav.name | i18n }}
|
|
223
|
+
</div>
|
|
224
|
+
}
|
|
225
|
+
</div>
|
|
226
|
+
</div>
|
|
227
|
+
<div nz-col [nzSpan]="21" class="yz-application-container">
|
|
228
|
+
@switch (state.type) {
|
|
229
|
+
@case ('all') {
|
|
230
|
+
<div>
|
|
231
|
+
<ng-template [ngTemplateOutlet]="search" />
|
|
232
|
+
<ng-template [ngTemplateOutlet]="ld" />
|
|
233
|
+
</div>
|
|
234
|
+
}
|
|
235
|
+
@case ('mine') {
|
|
236
|
+
<div>
|
|
237
|
+
<ng-template [ngTemplateOutlet]="search" />
|
|
238
|
+
<ng-template [ngTemplateOutlet]="ld" />
|
|
239
|
+
</div>
|
|
240
|
+
}
|
|
241
|
+
@case ('other') {
|
|
242
|
+
<div class="yz-application-list yz-application-list-other">
|
|
243
|
+
<div class="yz-application-list-item">
|
|
244
|
+
<ul>
|
|
245
|
+
@for (nav of state.list; track nav) {
|
|
246
|
+
<li data-event-id="_nav_item" [attr.data-name]="nav.name | i18n" (click)="open(nav)">
|
|
247
|
+
<a href="javascript:;">
|
|
248
|
+
<h4>{{ nav.name | i18n }}</h4>
|
|
249
|
+
<p>{{ nav.intro | i18n }}</p>
|
|
250
|
+
</a>
|
|
251
|
+
</li>
|
|
252
|
+
}
|
|
253
|
+
</ul>
|
|
254
|
+
</div>
|
|
255
|
+
</div>
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
</div>
|
|
259
|
+
</div>
|
|
260
|
+
`, isInline: true, dependencies: [{ kind: "pipe", type: I18nPipe, name: "i18n" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NzFormModule }, { kind: "directive", type: i2.NzColDirective, selector: "[nz-col],nz-col,nz-form-control,nz-form-label", inputs: ["nzFlex", "nzSpan", "nzOrder", "nzOffset", "nzPush", "nzPull", "nzXs", "nzSm", "nzMd", "nzLg", "nzXl", "nzXXl"], exportAs: ["nzCol"] }, { kind: "directive", type: i2.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "ngmodule", type: NzInputModule }, { kind: "directive", type: i3.NzInputDirective, selector: "input[nz-input],textarea[nz-input]", inputs: ["nzBorderless", "nzSize", "nzStepperless", "nzStatus", "disabled"], exportAs: ["nzInput"] }, { kind: "component", type: i3.NzInputGroupComponent, selector: "nz-input-group", inputs: ["nzAddOnBeforeIcon", "nzAddOnAfterIcon", "nzPrefixIcon", "nzSuffixIcon", "nzAddOnBefore", "nzAddOnAfter", "nzPrefix", "nzStatus", "nzSuffix", "nzSize", "nzSearch", "nzCompact"], exportAs: ["nzInputGroup"] }, { kind: "directive", type: i3.NzInputGroupWhitSuffixOrPrefixDirective, selector: "nz-input-group[nzSuffix], nz-input-group[nzPrefix]" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: NzGridModule }] }); }
|
|
261
|
+
}
|
|
262
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: YunzaiNavApplicationComponent, decorators: [{
|
|
263
|
+
type: Component,
|
|
264
|
+
args: [{
|
|
265
|
+
selector: `yunzai-layout-nav-application`,
|
|
266
|
+
template: `
|
|
267
|
+
<ng-template #search>
|
|
268
|
+
<div nz-row class="yz-application-list-search">
|
|
269
|
+
<nz-input-group [nzPrefix]="prefixTemplate">
|
|
270
|
+
<input
|
|
271
|
+
data-event-id="_nav_search"
|
|
272
|
+
type="text"
|
|
273
|
+
nz-input
|
|
274
|
+
placeholder="{{ 'application.search' | i18n }}"
|
|
275
|
+
[(ngModel)]="state.search"
|
|
276
|
+
(ngModelChange)="onSearch()"
|
|
277
|
+
/>
|
|
278
|
+
<ng-template #prefixTemplate>
|
|
279
|
+
<i nz-icon nzType="search" nzTheme="outline"></i>
|
|
280
|
+
</ng-template>
|
|
281
|
+
</nz-input-group>
|
|
282
|
+
</div>
|
|
283
|
+
</ng-template>
|
|
284
|
+
|
|
285
|
+
<ng-template #ld>
|
|
286
|
+
<div class="yz-application-list">
|
|
287
|
+
<ul>
|
|
288
|
+
@for (topic of state.list; track topic) {
|
|
289
|
+
<li>
|
|
290
|
+
<h5>{{ topic.name | i18n }}</h5>
|
|
291
|
+
@for (nav of topic.children; track nav) {
|
|
292
|
+
<a
|
|
293
|
+
data-event-id="_nav_item"
|
|
294
|
+
[attr.data-name]="nav.name | i18n"
|
|
295
|
+
href="javascript:;"
|
|
296
|
+
(click)="open(nav)"
|
|
297
|
+
>{{ nav.name | i18n }}</a
|
|
298
|
+
>
|
|
299
|
+
}
|
|
300
|
+
</li>
|
|
301
|
+
}
|
|
302
|
+
</ul>
|
|
303
|
+
</div>
|
|
304
|
+
</ng-template>
|
|
305
|
+
|
|
306
|
+
<div data-event-id="_nav_app" id="navBtn" class="yunzai-default__nav-item" (click)="diffChange()"
|
|
307
|
+
>{{ 'mode.nav' | i18n }}
|
|
308
|
+
</div>
|
|
309
|
+
|
|
310
|
+
<div class="yz-application" id="navDropdown" nz-row *ngIf="state.active">
|
|
311
|
+
<div nz-col [nzSpan]="3" class="yz-application-topic">
|
|
312
|
+
<div class="yz-application-topic-list">
|
|
313
|
+
@if (showAllMenu) {
|
|
314
|
+
<div data-event-id="_nav_topic" data-name="全部应用" class="yz-application-text" (click)="attachNav('all')"
|
|
315
|
+
>{{ 'mode.nav.all' | i18n }}
|
|
316
|
+
</div>
|
|
317
|
+
}
|
|
318
|
+
@if (showMineMenu) {
|
|
319
|
+
<div data-event-id="_nav_topic" data-name="我的应用" class="yz-application-text" (click)="attachNav('mine')"
|
|
320
|
+
>{{ 'mode.nav.mine' | i18n }}
|
|
321
|
+
</div>
|
|
322
|
+
}
|
|
323
|
+
@for (nav of state.topics; track nav) {
|
|
324
|
+
<div
|
|
325
|
+
data-event-id="_nav_topic"
|
|
326
|
+
[attr.data-name]="nav.name | i18n"
|
|
327
|
+
class="yz-application-text"
|
|
328
|
+
(click)="attachNav('other', nav)"
|
|
329
|
+
>{{ nav.name | i18n }}
|
|
330
|
+
</div>
|
|
331
|
+
}
|
|
332
|
+
</div>
|
|
333
|
+
</div>
|
|
334
|
+
<div nz-col [nzSpan]="21" class="yz-application-container">
|
|
335
|
+
@switch (state.type) {
|
|
336
|
+
@case ('all') {
|
|
337
|
+
<div>
|
|
338
|
+
<ng-template [ngTemplateOutlet]="search" />
|
|
339
|
+
<ng-template [ngTemplateOutlet]="ld" />
|
|
340
|
+
</div>
|
|
341
|
+
}
|
|
342
|
+
@case ('mine') {
|
|
343
|
+
<div>
|
|
344
|
+
<ng-template [ngTemplateOutlet]="search" />
|
|
345
|
+
<ng-template [ngTemplateOutlet]="ld" />
|
|
346
|
+
</div>
|
|
347
|
+
}
|
|
348
|
+
@case ('other') {
|
|
349
|
+
<div class="yz-application-list yz-application-list-other">
|
|
350
|
+
<div class="yz-application-list-item">
|
|
351
|
+
<ul>
|
|
352
|
+
@for (nav of state.list; track nav) {
|
|
353
|
+
<li data-event-id="_nav_item" [attr.data-name]="nav.name | i18n" (click)="open(nav)">
|
|
354
|
+
<a href="javascript:;">
|
|
355
|
+
<h4>{{ nav.name | i18n }}</h4>
|
|
356
|
+
<p>{{ nav.intro | i18n }}</p>
|
|
357
|
+
</a>
|
|
358
|
+
</li>
|
|
359
|
+
}
|
|
360
|
+
</ul>
|
|
361
|
+
</div>
|
|
362
|
+
</div>
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
</div>
|
|
366
|
+
</div>
|
|
367
|
+
`,
|
|
368
|
+
standalone: true,
|
|
369
|
+
imports: [I18nPipe, FormsModule, NzFormModule, NzInputModule, CommonModule, NzGridModule]
|
|
370
|
+
}]
|
|
371
|
+
}] });
|
|
372
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LW5hdi1hcHBsaWNhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9iaXMvbGF5b3V0L2xheW91dC1uYXYtYXBwbGljYXRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM1RSxPQUFPLEVBRUwscUJBQXFCLEVBQ3JCLE1BQU0sRUFDTixtQkFBbUIsRUFFcEIsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7OztBQTZHcEQsTUFBTSxPQUFPLDZCQUE2QjtJQTNHMUM7UUE0R21CLFdBQU0sR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztRQUNyRCxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNCLFFBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckIsU0FBSSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3JDLGFB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Q1QsUUFBUSxFQUFFLCtCQUErQjtvQkFDekMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFHVDtvQkFDRCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUM7aUJBQzFGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgbWVyZ2VCaXNDb25maWcgfSBmcm9tICdAeWVsb24vYmlzL2NvbmZpZyc7XG5pbXBvcnQgeyBfSHR0cENsaWVudCwgSTE4blBpcGUsIFl1bnphaUh0dHBJMThOU2VydmljZSB9IGZyb20gJ0B5ZWxvbi90aGVtZSc7XG5pbXBvcnQge1xuICBMYXlvdXROYXZBcHBsaWNhdGlvblN0YXRlLFxuICB1c2VMb2NhbFN0b3JhZ2VIZWFkZXIsXG4gIFdJTkRPVyxcbiAgWXVuemFpQ29uZmlnU2VydmljZSxcbiAgWXVuemFpTmF2VG9waWNcbn0gZnJvbSAnQHllbG9uL3V0aWwnO1xuaW1wb3J0IHsgTnpTYWZlQW55IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcbmltcG9ydCB7IE56Rm9ybU1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvZm9ybSc7XG5pbXBvcnQgeyBOekdyaWRNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2dyaWQnO1xuaW1wb3J0IHsgTnpJbnB1dE1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvaW5wdXQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IGB5dW56YWktbGF5b3V0LW5hdi1hcHBsaWNhdGlvbmAsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLXRlbXBsYXRlICNzZWFyY2g+XG4gICAgICA8ZGl2IG56LXJvdyBjbGFzcz1cInl6LWFwcGxpY2F0aW9uLWxpc3Qtc2VhcmNoXCI+XG4gICAgICAgIDxuei1pbnB1dC1ncm91cCBbbnpQcmVmaXhdPVwicHJlZml4VGVtcGxhdGVcIj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGRhdGEtZXZlbnQtaWQ9XCJfbmF2X3NlYXJjaFwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBuei1pbnB1dFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnYXBwbGljYXRpb24uc2VhcmNoJyB8IGkxOG4gfX1cIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzdGF0ZS5zZWFyY2hcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2goKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3ByZWZpeFRlbXBsYXRlPlxuICAgICAgICAgICAgPGkgbnotaWNvbiBuelR5cGU9XCJzZWFyY2hcIiBuelRoZW1lPVwib3V0bGluZVwiPjwvaT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L256LWlucHV0LWdyb3VwPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjbGQ+XG4gICAgICA8ZGl2IGNsYXNzPVwieXotYXBwbGljYXRpb24tbGlzdFwiPlxuICAgICAgICA8dWw+XG4gICAgICAgICAgQGZvciAodG9waWMgb2Ygc3RhdGUubGlzdDsgdHJhY2sgdG9waWMpIHtcbiAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgPGg1Pnt7IHRvcGljLm5hbWUgfCBpMThuIH19PC9oNT5cbiAgICAgICAgICAgICAgQGZvciAobmF2IG9mIHRvcGljLmNoaWxkcmVuOyB0cmFjayBuYXYpIHtcbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgZGF0YS1ldmVudC1pZD1cIl9uYXZfaXRlbVwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLW5hbWVdPVwibmF2Lm5hbWUgfCBpMThuXCJcbiAgICAgICAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW4obmF2KVwiXG4gICAgICAgICAgICAgICAgICA+e3sgbmF2Lm5hbWUgfCBpMThuIH19PC9hXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIH1cbiAgICAgICAgPC91bD5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8ZGl2IGRhdGEtZXZlbnQtaWQ9XCJfbmF2X2FwcFwiIGlkPVwibmF2QnRuXCIgY2xhc3M9XCJ5dW56YWktZGVmYXVsdF9fbmF2LWl0ZW1cIiAoY2xpY2spPVwiZGlmZkNoYW5nZSgpXCJcbiAgICAgID57eyAnbW9kZS5uYXYnIHwgaTE4biB9fVxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInl6LWFwcGxpY2F0aW9uXCIgaWQ9XCJuYXZEcm9wZG93blwiIG56LXJvdyAqbmdJZj1cInN0YXRlLmFjdGl2ZVwiPlxuICAgICAgPGRpdiBuei1jb2wgW256U3Bhbl09XCIzXCIgY2xhc3M9XCJ5ei1hcHBsaWNhdGlvbi10b3BpY1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwieXotYXBwbGljYXRpb24tdG9waWMtbGlzdFwiPlxuICAgICAgICAgIEBpZiAoc2hvd0FsbE1lbnUpIHtcbiAgICAgICAgICAgIDxkaXYgZGF0YS1ldmVudC1pZD1cIl9uYXZfdG9waWNcIiBkYXRhLW5hbWU9XCLlhajpg6jlupTnlKhcIiBjbGFzcz1cInl6LWFwcGxpY2F0aW9uLXRleHRcIiAoY2xpY2spPVwiYXR0YWNoTmF2KCdhbGwnKVwiXG4gICAgICAgICAgICAgID57eyAnbW9kZS5uYXYuYWxsJyB8IGkxOG4gfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHNob3dNaW5lTWVudSkge1xuICAgICAgICAgICAgPGRpdiBkYXRhLWV2ZW50LWlkPVwiX25hdl90b3BpY1wiIGRhdGEtbmFtZT1cIuaIkeeahOW6lOeUqFwiIGNsYXNzPVwieXotYXBwbGljYXRpb24tdGV4dFwiIChjbGljayk9XCJhdHRhY2hOYXYoJ21pbmUnKVwiXG4gICAgICAgICAgICAgID57eyAnbW9kZS5uYXYubWluZScgfCBpMThuIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGZvciAobmF2IG9mIHN0YXRlLnRvcGljczsgdHJhY2sgbmF2KSB7XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGRhdGEtZXZlbnQtaWQ9XCJfbmF2X3RvcGljXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1uYW1lXT1cIm5hdi5uYW1lIHwgaTE4blwiXG4gICAgICAgICAgICAgIGNsYXNzPVwieXotYXBwbGljYXRpb24tdGV4dFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhdHRhY2hOYXYoJ290aGVyJywgbmF2KVwiXG4gICAgICAgICAgICAgID57eyBuYXYubmFtZSB8IGkxOG4gfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgbnotY29sIFtuelNwYW5dPVwiMjFcIiBjbGFzcz1cInl6LWFwcGxpY2F0aW9uLWNvbnRhaW5lclwiPlxuICAgICAgICBAc3dpdGNoIChzdGF0ZS50eXBlKSB7XG4gICAgICAgICAgQGNhc2UgKCdhbGwnKSB7XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VhcmNoXCIgLz5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxkXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICBAY2FzZSAoJ21pbmUnKSB7XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VhcmNoXCIgLz5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxkXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICBAY2FzZSAoJ290aGVyJykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInl6LWFwcGxpY2F0aW9uLWxpc3QgeXotYXBwbGljYXRpb24tbGlzdC1vdGhlclwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwieXotYXBwbGljYXRpb24tbGlzdC1pdGVtXCI+XG4gICAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgICAgQGZvciAobmF2IG9mIHN0YXRlLmxpc3Q7IHRyYWNrIG5hdikge1xuICAgICAgICAgICAgICAgICAgICA8bGkgZGF0YS1ldmVudC1pZD1cIl9uYXZfaXRlbVwiIFthdHRyLmRhdGEtbmFtZV09XCJuYXYubmFtZSB8IGkxOG5cIiAoY2xpY2spPVwib3BlbihuYXYpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGg0Pnt7IG5hdi5uYW1lIHwgaTE4biB9fTwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cD57eyBuYXYuaW50cm8gfCBpMThuIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtJMThuUGlwZSwgRm9ybXNNb2R1bGUsIE56Rm9ybU1vZHVsZSwgTnpJbnB1dE1vZHVsZSwgQ29tbW9uTW9kdWxlLCBOekdyaWRNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIFl1bnphaU5hdkFwcGxpY2F0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IG1lcmdlQmlzQ29uZmlnKGluamVjdChZdW56YWlDb25maWdTZXJ2aWNlKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChfSHR0cENsaWVudCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgd2luID0gaW5qZWN0KFdJTkRPVyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaTE4biA9IGluamVjdChZdW56YWlIdHRwSTE4TlNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBzdGF0ZTogTGF5b3V0TmF2QXBwbGljYXRpb25TdGF0ZSA9IHtcbiAgICBhY3RpdmU6IGZhbHNlLFxuICAgIHR5cGU6ICdhbGwnLFxuICAgIHRvcGljOiB1bmRlZmluZWQsXG4gICAgdG9waWNzOiBbXSxcbiAgICBsaXN0OiBbXSxcbiAgICBzZWFyY2g6IG51bGxcbiAgfTtcblxuICBnZXQgc2hvd0FsbE1lbnUoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuY29uZmlnLm5hdikgcmV0dXJuIHRoaXMuY29uZmlnLm5hdiEuYWxsITtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGdldCBzaG93TWluZU1lbnUoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuY29uZmlnLm5hdikgcmV0dXJuIHRoaXMuY29uZmlnLm5hdiEubWluZSE7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZldGNoQWxsVG9waWMoKTtcbiAgICB0aGlzLmF0dGFjaE5hdignYWxsJyk7XG4gICAgdGhpcy53aW4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZlbnQ6IE56U2FmZUFueSkgPT4ge1xuICAgICAgY29uc3QgeyB0YXJnZXQgfSA9IGV2ZW50O1xuICAgICAgY29uc3QgYnRuID0gdGhpcy53aW4uZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25hdkJ0bicpO1xuICAgICAgY29uc3QgZHJvcGRvd24gPSB0aGlzLndpbi5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmF2RHJvcGRvd24nKTtcbiAgICAgIGlmIChidG4gJiYgZHJvcGRvd24gJiYgIWRyb3Bkb3duLmNvbnRhaW5zKHRhcmdldCkgJiYgIWJ0bi5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgICAgIHRoaXMuc3RhdGUuYWN0aXZlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmZXRjaEFsbFRvcGljKCk6IHZvaWQge1xuICAgIGNvbnN0IFssIGdldFRvcGljc10gPSB1c2VMb2NhbFN0b3JhZ2VIZWFkZXIoKTtcbiAgICB0aGlzLnN0YXRlLnRvcGljcyA9IGdldFRvcGljcygpITtcbiAgfVxuXG4gIGF0dGFjaE5hdih0eXBlOiAnYWxsJyB8ICdtaW5lJyB8ICdvdGhlcicsIHRvcGljPzogWXVuemFpTmF2VG9waWMpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuY2xlYXJTZWFyY2goKTtcbiAgICBpZiAodHlwZSA9PT0gJ2FsbCcpIHtcbiAgICAgIHRoaXMuZGlzcGxheUFsbE5hdigpO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gJ21pbmUnKSB7XG4gICAgICB0aGlzLmRpc3BsYXlNaW5lTmF2KCk7XG4gICAgfVxuICAgIGlmICh0eXBlID09PSAnb3RoZXInICYmIHRvcGljKSB7XG4gICAgICB0aGlzLmRpc3BsYXlPdGhlck5hdih0b3BpYyk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJTZWFyY2goKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZS5zZWFyY2ggPSBudWxsO1xuICB9XG5cbiAgZGlzcGxheUFsbE5hdigpOiB2b2lkIHtcbiAgICBjb25zdCBbLCBnZXRUb3BpY3NdID0gdXNlTG9jYWxTdG9yYWdlSGVhZGVyKCk7XG4gICAgdGhpcy5zdGF0ZS5saXN0ID0gZ2V0VG9waWNzKCkhO1xuICB9XG5cbiAgZGlzcGxheU1pbmVOYXYoKTogdm9pZCB7XG4gICAgY29uc3QgWywgZ2V0VG9waWNzXSA9IHVzZUxvY2FsU3RvcmFnZUhlYWRlcigpO1xuICAgIHRoaXMuc3RhdGUubGlzdCA9IGdldFRvcGljcygpIVxuICAgICAgLmZpbHRlcigodG9waWM6IFl1bnphaU5hdlRvcGljKSA9PiB7XG4gICAgICAgIHRvcGljLmNoaWxkcmVuID0gdG9waWMuY2hpbGRyZW4uZmlsdGVyKChjaGlsZDogWXVuemFpTmF2VG9waWMpID0+IHtcbiAgICAgICAgICByZXR1cm4gY2hpbGQuYXV0aDtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0b3BpYztcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKCh0b3BpYzogWXVuemFpTmF2VG9waWMpID0+IHtcbiAgICAgICAgcmV0dXJuIHRvcGljLmNoaWxkcmVuLmxlbmd0aCA+IDA7XG4gICAgICB9KTtcbiAgfVxuXG4gIGRpc3BsYXlPdGhlck5hdih0b3BpYzogWXVuemFpTmF2VG9waWMpOiB2b2lkIHtcbiAgICBjb25zdCBbLCBnZXRUb3BpY3NdID0gdXNlTG9jYWxTdG9yYWdlSGVhZGVyKCk7XG4gICAgdGhpcy5zdGF0ZS50b3BpYyA9IHRvcGljO1xuICAgIGNvbnN0IHRlbXA6IFl1bnphaU5hdlRvcGljW10gPSBnZXRUb3BpY3MoKSE7XG4gICAgdGhpcy5zdGF0ZS5saXN0ID0gdGVtcC5maWx0ZXIodCA9PiB0LmtleSA9PT0gdG9waWMua2V5KVswXS5jaGlsZHJlbjtcbiAgfVxuXG4gIGRpZmZDaGFuZ2UoZmxhZz86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoZmxhZykge1xuICAgICAgdGhpcy5zdGF0ZS5hY3RpdmUgPSBmbGFnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YXRlLmFjdGl2ZSA9ICF0aGlzLnN0YXRlLmFjdGl2ZTtcbiAgICB9XG4gIH1cblxuICBvcGVuKHRvcGljOiBZdW56YWlOYXZUb3BpYyk6IHZvaWQge1xuICAgIGlmICh0b3BpYy5rZXkpIHtcbiAgICAgIHRoaXMuaHR0cFxuICAgICAgICAucG9zdChgL2FwcC1tYW5hZ2VyL3dlYi1zY2FuL3NhdmVgLCB7XG4gICAgICAgICAgYXBwSWQ6IHRvcGljLmtleSxcbiAgICAgICAgICBjcmVhdGVEYXRlOiBuZXcgRGF0ZSgpXG4gICAgICAgIH0pXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBzd2l0Y2ggKHRvcGljLnRhcmdldCkge1xuICAgICAgY2FzZSAnaHJlZic6XG4gICAgICAgIHRoaXMud2luLmxvY2F0aW9uLmhyZWYgPSB0b3BpYy51cmw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYmxhbmsnOlxuICAgICAgICB0aGlzLndpbi5vcGVuKHRvcGljLnVybCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndGFyZ2V0JzpcbiAgICAgICAgdGhpcy53aW4ub3Blbih0b3BpYy51cmwpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMud2luLmxvY2F0aW9uLmhyZWYgPSB0b3BpYy51cmw7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIG9uU2VhcmNoKCk6IHZvaWQge1xuICAgIGNvbnN0IFssIGdldFRvcGljc10gPSB1c2VMb2NhbFN0b3JhZ2VIZWFkZXIoKTtcbiAgICBjb25zdCB0ZW1wOiBZdW56YWlOYXZUb3BpY1tdID0gZ2V0VG9waWNzKCkhO1xuICAgIGlmICh0aGlzLnN0YXRlLnNlYXJjaCkge1xuICAgICAgdGhpcy5zdGF0ZS5saXN0ID0gdGVtcFxuICAgICAgICAuZmlsdGVyKCh0b3BpYzogWXVuemFpTmF2VG9waWMpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5pMThuLmZhbnlpKHRvcGljLm5hbWUpLmluY2x1ZGVzKHRoaXMuc3RhdGUuc2VhcmNoISkpIHtcbiAgICAgICAgICAgIHJldHVybiB0b3BpYztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdG9waWMuY2hpbGRyZW4gPSB0b3BpYy5jaGlsZHJlbi5maWx0ZXIoKGNoaWxkOiBZdW56YWlOYXZUb3BpYykgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pMThuLmZhbnlpKGNoaWxkLm5hbWUpLmluY2x1ZGVzKHRoaXMuc3RhdGUuc2VhcmNoISk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB0b3BpYztcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5maWx0ZXIoKHRvcGljOiBZdW56YWlOYXZUb3BpYykgPT4ge1xuICAgICAgICAgIHJldHVybiB0b3BpYy5jaGlsZHJlbi5sZW5ndGggPiAwO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgWywgZ2V0VG9waWNzXSA9IHVzZUxvY2FsU3RvcmFnZUhlYWRlcigpO1xuICAgICAgdGhpcy5zdGF0ZS5saXN0ID0gZ2V0VG9waWNzKCkhO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19
|