@yelon/bis 12.0.19 → 13.0.0-beta.1
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/bis.d.ts +1 -0
- package/{esm2015/bis.js → esm2020/bis.mjs} +0 -0
- package/esm2020/layout/act.guard.mjs +108 -0
- package/{esm2015/layout/bis.config.js → esm2020/layout/bis.config.mjs} +0 -0
- package/esm2020/layout/contact/contact.component.mjs +492 -0
- package/esm2020/layout/contact/contact.service.mjs +146 -0
- package/esm2020/layout/layout.mjs +5 -0
- package/esm2020/layout/layout.module.mjs +73 -0
- package/{esm2015/layout/path-to-regexp.service.js → esm2020/layout/path-to-regexp.service.mjs} +9 -8
- package/{esm2015/layout/public_api.js → esm2020/layout/public_api.mjs} +3 -3
- package/esm2020/layout/stomp.config.mjs +18 -0
- package/{esm2015/layout/widgets/index.js → esm2020/layout/widgets/index.mjs} +0 -0
- package/esm2020/layout/widgets/yz.application.component.mjs +271 -0
- package/esm2020/layout/widgets/yz.clear-storage.component.mjs +45 -0
- package/esm2020/layout/widgets/yz.fullscreen.component.mjs +45 -0
- package/esm2020/layout/widgets/yz.i18n.component.mjs +115 -0
- package/esm2020/layout/widgets/yz.notify.component.mjs +184 -0
- package/esm2020/layout/widgets/yz.them-btn.component.mjs +196 -0
- package/esm2020/layout/widgets/yz.user.component.mjs +112 -0
- package/esm2020/layout/yz.auth.service.mjs +156 -0
- package/esm2020/layout/yz.basic.component.mjs +207 -0
- package/esm2020/layout/yz.default.interceptor.mjs +203 -0
- package/esm2020/layout/yz.i18n.service.mjs +93 -0
- package/esm2020/layout/yz.startup.service.mjs +137 -0
- package/esm2020/layout/yz.stomp.service.mjs +88 -0
- package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
- package/{esm2015/shared/public_api.js → esm2020/shared/public_api.mjs} +0 -0
- package/{esm2015/shared/shared-yelon.module.js → esm2020/shared/shared-yelon.module.mjs} +0 -0
- package/{esm2015/shared/shared-zorro.module.js → esm2020/shared/shared-zorro.module.mjs} +0 -0
- package/{esm2015/shared/shared.js → esm2020/shared/shared.mjs} +0 -0
- package/esm2020/shared/shared.module.mjs +116 -0
- package/{esm2015/shared/style-icons.js → esm2020/shared/style-icons.mjs} +0 -0
- package/fesm2015/{bis.js → bis.mjs} +1 -1
- package/fesm2015/bis.mjs.map +1 -0
- package/fesm2015/{layout.js → layout.mjs} +587 -278
- package/fesm2015/layout.mjs.map +1 -0
- package/fesm2015/{shared.js → shared.mjs} +101 -7
- package/fesm2015/shared.mjs.map +1 -0
- package/fesm2020/bis.mjs +6 -0
- package/fesm2020/bis.mjs.map +1 -0
- package/fesm2020/layout.mjs +2796 -0
- package/fesm2020/layout.mjs.map +1 -0
- package/fesm2020/shared.mjs +1106 -0
- package/fesm2020/shared.mjs.map +1 -0
- package/layout/act.guard.d.ts +3 -0
- package/layout/contact/contact.component.d.ts +4 -1
- package/layout/contact/contact.service.d.ts +4 -1
- package/layout/layout.d.ts +1 -3
- package/layout/layout.module.d.ts +18 -0
- package/layout/package.json +5 -6
- package/layout/path-to-regexp.service.d.ts +3 -0
- package/layout/public_api.d.ts +2 -0
- package/layout/widgets/yz.application.component.d.ts +3 -0
- package/layout/widgets/yz.clear-storage.component.d.ts +3 -0
- package/layout/widgets/yz.fullscreen.component.d.ts +3 -1
- package/layout/widgets/yz.i18n.component.d.ts +3 -0
- package/layout/widgets/yz.notify.component.d.ts +3 -0
- package/layout/widgets/yz.them-btn.component.d.ts +3 -0
- package/layout/widgets/yz.user.component.d.ts +3 -0
- package/layout/yz.auth.service.d.ts +3 -0
- package/layout/yz.basic.component.d.ts +3 -0
- package/layout/yz.default.interceptor.d.ts +3 -0
- package/layout/yz.i18n.service.d.ts +3 -0
- package/layout/yz.startup.service.d.ts +3 -0
- package/layout/yz.stomp.service.d.ts +6 -3
- package/package.json +46 -18
- package/shared/package.json +5 -6
- package/shared/shared-zorro.module.d.ts +2 -2
- package/shared/shared.d.ts +1 -0
- package/shared/shared.module.d.ts +93 -0
- package/bis.metadata.json +0 -1
- package/bundles/bis.umd.js +0 -18
- package/bundles/bis.umd.js.map +0 -1
- package/bundles/layout.umd.js +0 -2694
- package/bundles/layout.umd.js.map +0 -1
- package/bundles/shared.umd.js +0 -1249
- package/bundles/shared.umd.js.map +0 -1
- package/esm2015/layout/act.guard.js +0 -115
- package/esm2015/layout/contact/contact.component.js +0 -434
- package/esm2015/layout/contact/contact.service.js +0 -150
- package/esm2015/layout/layout.js +0 -8
- package/esm2015/layout/layout.module.js +0 -47
- package/esm2015/layout/stomp.config.js +0 -20
- package/esm2015/layout/widgets/yz.application.component.js +0 -200
- package/esm2015/layout/widgets/yz.clear-storage.component.js +0 -39
- package/esm2015/layout/widgets/yz.fullscreen.component.js +0 -36
- package/esm2015/layout/widgets/yz.i18n.component.js +0 -78
- package/esm2015/layout/widgets/yz.notify.component.js +0 -157
- package/esm2015/layout/widgets/yz.them-btn.component.js +0 -146
- package/esm2015/layout/widgets/yz.user.component.js +0 -81
- package/esm2015/layout/yz.auth.service.js +0 -158
- package/esm2015/layout/yz.basic.component.js +0 -123
- package/esm2015/layout/yz.default.interceptor.js +0 -204
- package/esm2015/layout/yz.i18n.service.js +0 -102
- package/esm2015/layout/yz.startup.service.js +0 -138
- package/esm2015/layout/yz.stomp.service.js +0 -91
- package/esm2015/shared/shared.module.js +0 -22
- package/fesm2015/bis.js.map +0 -1
- package/fesm2015/layout.js.map +0 -1
- package/fesm2015/shared.js.map +0 -1
- package/layout/layout.metadata.json +0 -1
- package/shared/shared.metadata.json +0 -1
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Injector } from '@angular/core';
|
|
2
|
-
import { forkJoin } from 'rxjs';
|
|
3
|
-
import { map } from 'rxjs/operators';
|
|
4
|
-
import { formatDistanceToNow } from 'date-fns';
|
|
5
|
-
import { YUNZAI_I18N_TOKEN, _HttpClient } from '@yelon/theme';
|
|
6
|
-
import { WINDOW } from '@yelon/util';
|
|
7
|
-
import { log } from '@yelon/util/other';
|
|
8
|
-
import { NzI18nService } from 'ng-zorro-antd/i18n';
|
|
9
|
-
import { NzMessageService } from 'ng-zorro-antd/message';
|
|
10
|
-
import { YzI18NService } from '../yz.i18n.service';
|
|
11
|
-
export class YzHeaderNotifyComponent {
|
|
12
|
-
constructor(injector, msg, y18n, nzI18n, cdr, httpClient) {
|
|
13
|
-
this.injector = injector;
|
|
14
|
-
this.msg = msg;
|
|
15
|
-
this.y18n = y18n;
|
|
16
|
-
this.nzI18n = nzI18n;
|
|
17
|
-
this.cdr = cdr;
|
|
18
|
-
this.httpClient = httpClient;
|
|
19
|
-
this.data = [
|
|
20
|
-
{
|
|
21
|
-
key: 'msg',
|
|
22
|
-
title: this.y18n.fanyi('notify.message'),
|
|
23
|
-
list: [],
|
|
24
|
-
emptyText: this.y18n.fanyi('notify.message.emptyText'),
|
|
25
|
-
emptyImage: './assets/tmp/img/message.svg',
|
|
26
|
-
clearText: this.y18n.fanyi('notify.message.clearText')
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
key: 'todo',
|
|
30
|
-
title: this.y18n.fanyi('notify.todo'),
|
|
31
|
-
list: [],
|
|
32
|
-
emptyText: this.y18n.fanyi('notify.todo.emptyText'),
|
|
33
|
-
emptyImage: './assets/tmp/img/todo.svg',
|
|
34
|
-
clearText: this.y18n.fanyi('notify.todo.clearText')
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
key: 'notice',
|
|
38
|
-
title: this.y18n.fanyi('notify.notice'),
|
|
39
|
-
list: [],
|
|
40
|
-
emptyText: this.y18n.fanyi('notify.notice.emptyText'),
|
|
41
|
-
emptyImage: './assets/tmp/img/notice.svg',
|
|
42
|
-
clearText: this.y18n.fanyi('notify.notice.clearText')
|
|
43
|
-
}
|
|
44
|
-
];
|
|
45
|
-
this.loading = false;
|
|
46
|
-
this.count = 0;
|
|
47
|
-
this.subs = [];
|
|
48
|
-
}
|
|
49
|
-
ngOnInit() {
|
|
50
|
-
this.loadData();
|
|
51
|
-
}
|
|
52
|
-
loadData() {
|
|
53
|
-
this.count = 0;
|
|
54
|
-
this.loading = true;
|
|
55
|
-
this.subs.push(forkJoin(this.loadTodo(), this.loadMessage()).subscribe(() => {
|
|
56
|
-
this.loading = false;
|
|
57
|
-
this.cdr.detectChanges();
|
|
58
|
-
}));
|
|
59
|
-
}
|
|
60
|
-
loadMessage() {
|
|
61
|
-
log('notify.component: ', 'fetch message list');
|
|
62
|
-
const formatMessageStatus = (status) => {
|
|
63
|
-
switch (status) {
|
|
64
|
-
case '0':
|
|
65
|
-
return { extra: this.y18n.fanyi('notify.unread'), color: 'red' };
|
|
66
|
-
case '1':
|
|
67
|
-
return { extra: this.y18n.fanyi('notify.readed'), color: 'green' };
|
|
68
|
-
default:
|
|
69
|
-
return { extra: this.y18n.fanyi('notify.nostatus'), color: 'primary' };
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
return this.httpClient
|
|
73
|
-
.post(`/message-center-3/my-msg-and-todo/msg-list`, {
|
|
74
|
-
pageNum: 1,
|
|
75
|
-
pageSize: 10,
|
|
76
|
-
status: '0'
|
|
77
|
-
})
|
|
78
|
-
.pipe(map((response) => {
|
|
79
|
-
const viewMessage = this.data.filter(d => d.key === 'msg')[0];
|
|
80
|
-
viewMessage.list = response.data.list.map((m) => {
|
|
81
|
-
return Object.assign(Object.assign({}, m), { avatar: (m === null || m === void 0 ? void 0 : m.imgUrl) || './assets/tmp/img/message.png', title: m.systemName, description: m.content, extra: formatMessageStatus(m.status).extra, color: formatMessageStatus(m.status).color, datetime: formatDistanceToNow(new Date(m.date), { locale: this.nzI18n.getDateLocale() }) });
|
|
82
|
-
});
|
|
83
|
-
this.count += viewMessage.list.length;
|
|
84
|
-
}));
|
|
85
|
-
}
|
|
86
|
-
loadTodo() {
|
|
87
|
-
log('notify.component: ', 'fetch todo list');
|
|
88
|
-
const formatTodoStatus = (status) => {
|
|
89
|
-
switch (status) {
|
|
90
|
-
case '0':
|
|
91
|
-
return { extra: this.y18n.fanyi('notify.unstart'), color: 'red' };
|
|
92
|
-
case '1':
|
|
93
|
-
return { extra: this.y18n.fanyi('notify.started'), color: 'green' };
|
|
94
|
-
default:
|
|
95
|
-
return { extra: this.y18n.fanyi('notify.nostatus'), color: 'primary' };
|
|
96
|
-
}
|
|
97
|
-
};
|
|
98
|
-
return this.httpClient
|
|
99
|
-
.post(`/message-center-3/my-msg-and-todo/todo-list`, {
|
|
100
|
-
pageNum: 1,
|
|
101
|
-
pageSize: 10,
|
|
102
|
-
status: '0'
|
|
103
|
-
})
|
|
104
|
-
.pipe(map((response) => {
|
|
105
|
-
const viewTodo = this.data.filter(d => d.key === 'todo')[0];
|
|
106
|
-
viewTodo.list = response.data.list.map((t) => {
|
|
107
|
-
return Object.assign(Object.assign({}, t), { avatar: (t === null || t === void 0 ? void 0 : t.imgUrl) || './assets/tmp/img/todo.png', title: t.systemName, description: t.content, datetime: formatDistanceToNow(new Date(t.date), { locale: this.nzI18n.getDateLocale() }), extra: formatTodoStatus(t.status).extra, color: formatTodoStatus(t.status).color });
|
|
108
|
-
});
|
|
109
|
-
this.count += viewTodo.list.length;
|
|
110
|
-
}));
|
|
111
|
-
}
|
|
112
|
-
clear(type) {
|
|
113
|
-
const t = this.data.filter(d => d.title === type)[0];
|
|
114
|
-
if (t.key == 'msg' || t.key == 'notice') {
|
|
115
|
-
this.subs.push(this.httpClient.post(`/message-center-3/my-msg-and-todo/msg-clear`, {}).subscribe(_ => {
|
|
116
|
-
this.msg.success(`${this.y18n.fanyi('notify.clear')} ${type}`);
|
|
117
|
-
this.loadData();
|
|
118
|
-
}));
|
|
119
|
-
}
|
|
120
|
-
if (t.key == 'todo') {
|
|
121
|
-
this.loadData();
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
select(res) {
|
|
125
|
-
this.injector.get(WINDOW).open(res.item.url);
|
|
126
|
-
this.loadData();
|
|
127
|
-
}
|
|
128
|
-
ngOnDestroy() {
|
|
129
|
-
this.subs.forEach(a => a.unsubscribe());
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
YzHeaderNotifyComponent.decorators = [
|
|
133
|
-
{ type: Component, args: [{
|
|
134
|
-
selector: 'yz-header-notify',
|
|
135
|
-
template: `
|
|
136
|
-
<notice-icon
|
|
137
|
-
[data]="data"
|
|
138
|
-
[count]="count"
|
|
139
|
-
[loading]="loading"
|
|
140
|
-
btnClass="yunzai-default__nav-item"
|
|
141
|
-
btnIconClass="yunzai-default__nav-item-icon"
|
|
142
|
-
(select)="select($event)"
|
|
143
|
-
(clear)="clear($event)"
|
|
144
|
-
></notice-icon>
|
|
145
|
-
`,
|
|
146
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
147
|
-
},] }
|
|
148
|
-
];
|
|
149
|
-
YzHeaderNotifyComponent.ctorParameters = () => [
|
|
150
|
-
{ type: Injector },
|
|
151
|
-
{ type: NzMessageService },
|
|
152
|
-
{ type: YzI18NService, decorators: [{ type: Inject, args: [YUNZAI_I18N_TOKEN,] }] },
|
|
153
|
-
{ type: NzI18nService },
|
|
154
|
-
{ type: ChangeDetectorRef },
|
|
155
|
-
{ type: _HttpClient }
|
|
156
|
-
];
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXoubm90aWZ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Jpcy9sYXlvdXQvd2lkZ2V0cy95ei5ub3RpZnkuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxNQUFNLEVBQ04sUUFBUSxFQUdULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQTRCLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV4QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBaUJuRCxNQUFNLE9BQU8sdUJBQXVCO0lBK0JsQyxZQUNVLFFBQWtCLEVBQ2xCLEdBQXFCLEVBQ00sSUFBbUIsRUFDOUMsTUFBcUIsRUFDckIsR0FBc0IsRUFDdEIsVUFBdUI7UUFMdkIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUNNLFNBQUksR0FBSixJQUFJLENBQWU7UUFDOUMsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixlQUFVLEdBQVYsVUFB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QUFDLFFBQVEsRUFBRSxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFxQjtRQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7OztZQXRLRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtnQkFDNUIsUUFBUSxFQUFFOzs7Ozs7Ozs7O0dBVVQ7Z0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07YUFDaEQ7OztZQWpDQyxRQUFRO1lBZUQsZ0JBQWdCO1lBRWhCLGFBQWEsdUJBbURqQixNQUFNLFNBQUMsaUJBQWlCO1lBdERwQixhQUFhO1lBakJwQixpQkFBaUI7WUFhUyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBmb3JtYXREaXN0YW5jZVRvTm93IH0gZnJvbSAnZGF0ZS1mbnMnO1xuXG5pbXBvcnQgeyBOb3RpY2VJY29uU2VsZWN0LCBOb3RpY2VJdGVtIH0gZnJvbSAnQHllbG9uL2FiYy9ub3RpY2UtaWNvbic7XG5pbXBvcnQgeyBZVU5aQUlfSTE4Tl9UT0tFTiwgX0h0dHBDbGllbnQgfSBmcm9tICdAeWVsb24vdGhlbWUnO1xuaW1wb3J0IHsgV0lORE9XIH0gZnJvbSAnQHllbG9uL3V0aWwnO1xuaW1wb3J0IHsgbG9nIH0gZnJvbSAnQHllbG9uL3V0aWwvb3RoZXInO1xuaW1wb3J0IHsgTnpTYWZlQW55IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcbmltcG9ydCB7IE56STE4blNlcnZpY2UgfSBmcm9tICduZy16b3Jyby1hbnRkL2kxOG4nO1xuaW1wb3J0IHsgTnpNZXNzYWdlU2VydmljZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvbWVzc2FnZSc7XG5cbmltcG9ydCB7IFl6STE4TlNlcnZpY2UgfSBmcm9tICcuLi95ei5pMThuLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd5ei1oZWFkZXItbm90aWZ5JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bm90aWNlLWljb25cbiAgICAgIFtkYXRhXT1cImRhdGFcIlxuICAgICAgW2NvdW50XT1cImNvdW50XCJcbiAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxuICAgICAgYnRuQ2xhc3M9XCJ5dW56YWktZGVmYXVsdF9fbmF2LWl0ZW1cIlxuICAgICAgYnRuSWNvbkNsYXNzPVwieXVuemFpLWRlZmF1bHRfX25hdi1pdGVtLWljb25cIlxuICAgICAgKHNlbGVjdCk9XCJzZWxlY3QoJGV2ZW50KVwiXG4gICAgICAoY2xlYXIpPVwiY2xlYXIoJGV2ZW50KVwiXG4gICAgPjwvbm90aWNlLWljb24+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFl6SGVhZGVyTm90aWZ5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBkYXRhOiBOb3RpY2VJdGVtW10gPSBbXG4gICAge1xuICAgICAga2V5OiAnbXNnJyxcbiAgICAgIHRpdGxlOiB0aGlzLnkxOG4uZmFueWkoJ25vdGlmeS5tZXNzYWdlJyksXG4gICAgICBsaXN0OiBbXSxcbiAgICAgIGVtcHR5VGV4dDogdGhpcy55MThuLmZhbnlpKCdub3RpZnkubWVzc2FnZS5lbXB0eVRleHQnKSxcbiAgICAgIGVtcHR5SW1hZ2U6ICcuL2Fzc2V0cy90bXAvaW1nL21lc3NhZ2Uuc3ZnJyxcbiAgICAgIGNsZWFyVGV4dDogdGhpcy55MThuLmZhbnlpKCdub3RpZnkubWVzc2FnZS5jbGVhclRleHQnKVxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAndG9kbycsXG4gICAgICB0aXRsZTogdGhpcy55MThuLmZhbnlpKCdub3RpZnkudG9kbycpLFxuICAgICAgbGlzdDogW10sXG4gICAgICBlbXB0eVRleHQ6IHRoaXMueTE4bi5mYW55aSgnbm90aWZ5LnRvZG8uZW1wdHlUZXh0JyksXG4gICAgICBlbXB0eUltYWdlOiAnLi9hc3NldHMvdG1wL2ltZy90b2RvLnN2ZycsXG4gICAgICBjbGVhclRleHQ6IHRoaXMueTE4bi5mYW55aSgnbm90aWZ5LnRvZG8uY2xlYXJUZXh0JylcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ25vdGljZScsXG4gICAgICB0aXRsZTogdGhpcy55MThuLmZhbnlpKCdub3RpZnkubm90aWNlJyksXG4gICAgICBsaXN0OiBbXSxcbiAgICAgIGVtcHR5VGV4dDogdGhpcy55MThuLmZhbnlpKCdub3RpZnkubm90aWNlLmVtcHR5VGV4dCcpLFxuICAgICAgZW1wdHlJbWFnZTogJy4vYXNzZXRzL3RtcC9pbWcvbm90aWNlLnN2ZycsXG4gICAgICBjbGVhclRleHQ6IHRoaXMueTE4bi5mYW55aSgnbm90aWZ5Lm5vdGljZS5jbGVhclRleHQnKVxuICAgIH1cbiAgXTtcbiAgbG9hZGluZyA9IGZhbHNlO1xuICBjb3VudCA9IDA7XG4gIHN1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBtc2c6IE56TWVzc2FnZVNlcnZpY2UsXG4gICAgQEluamVjdChZVU5aQUlfSTE4Tl9UT0tFTikgcHJpdmF0ZSB5MThuOiBZekkxOE5TZXJ2aWNlLFxuICAgIHByaXZhdGUgbnpJMThuOiBOekkxOG5TZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGh0dHBDbGllbnQ6IF9IdHRwQ2xpZW50XG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWREYXRhKCk7XG4gIH1cblxuICBsb2FkRGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvdW50ID0gMDtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuc3Vicy5wdXNoKFxuICAgICAgZm9ya0pvaW4odGhpcy5sb2FkVG9kbygpLCB0aGlzLmxvYWRNZXNzYWdlKCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBsb2FkTWVzc2FnZSgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBsb2coJ25vdGlmeS5jb21wb25lbnQ6ICcsICdmZXRjaCBtZXNzYWdlIGxpc3QnKTtcbiAgICBjb25zdCBmb3JtYXRNZXNzYWdlU3RhdHVzID0gKHN0YXR1czogc3RyaW5nKTogTnpTYWZlQW55ID0+IHtcbiAgICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICAgIGNhc2UgJzAnOlxuICAgICAgICAgIHJldHVybiB7IGV4dHJhOiB0aGlzLnkxOG4uZmFueWkoJ25vdGlmeS51bnJlYWQnKSwgY29sb3I6ICdyZWQnIH07XG4gICAgICAgIGNhc2UgJzEnOlxuICAgICAgICAgIHJldHVybiB7IGV4dHJhOiB0aGlzLnkxOG4uZmFueWkoJ25vdGlmeS5yZWFkZWQnKSwgY29sb3I6ICdncmVlbicgfTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4geyBleHRyYTogdGhpcy55MThuLmZhbnlpKCdub3RpZnkubm9zdGF0dXMnKSwgY29sb3I6ICdwcmltYXJ5JyB9O1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgLnBvc3QoYC9tZXNzYWdlLWNlbnRlci0zL215LW1zZy1hbmQtdG9kby9tc2ctbGlzdGAsIHtcbiAgICAgICAgcGFnZU51bTogMSxcbiAgICAgICAgcGFnZVNpemU6IDEwLFxuICAgICAgICBzdGF0dXM6ICcwJ1xuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBOelNhZmVBbnkpID0+IHtcbiAgICAgICAgICBjb25zdCB2aWV3TWVzc2FnZSA9IHRoaXMuZGF0YS5maWx0ZXIoZCA9PiBkLmtleSA9PT0gJ21zZycpWzBdO1xuICAgICAgICAgIHZpZXdNZXNzYWdlLmxpc3QgPSByZXNwb25zZS5kYXRhLmxpc3QubWFwKChtOiBOelNhZmVBbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLm0sXG4gICAgICAgICAgICAgIGF2YXRhcjogbT8uaW1nVXJsIHx8ICcuL2Fzc2V0cy90bXAvaW1nL21lc3NhZ2UucG5nJyxcbiAgICAgICAgICAgICAgdGl0bGU6IG0uc3lzdGVtTmFtZSxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG0uY29udGVudCxcbiAgICAgICAgICAgICAgZXh0cmE6IGZvcm1hdE1lc3NhZ2VTdGF0dXMobS5zdGF0dXMpLmV4dHJhLFxuICAgICAgICAgICAgICBjb2xvcjogZm9ybWF0TWVzc2FnZVN0YXR1cyhtLnN0YXR1cykuY29sb3IsXG4gICAgICAgICAgICAgIGRhdGV0aW1lOiBmb3JtYXREaXN0YW5jZVRvTm93KG5ldyBEYXRlKG0uZGF0ZSksIHsgbG9jYWxlOiB0aGlzLm56STE4bi5nZXREYXRlTG9jYWxlKCkgfSlcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5jb3VudCArPSB2aWV3TWVzc2FnZS5saXN0Lmxlbmd0aDtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBsb2FkVG9kbygpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBsb2coJ25vdGlmeS5jb21wb25lbnQ6ICcsICdmZXRjaCB0b2RvIGxpc3QnKTtcbiAgICBjb25zdCBmb3JtYXRUb2RvU3RhdHVzID0gKHN0YXR1czogc3RyaW5nKTogTnpTYWZlQW55ID0+IHtcbiAgICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICAgIGNhc2UgJzAnOlxuICAgICAgICAgIHJldHVybiB7IGV4dHJhOiB0aGlzLnkxOG4uZmFueWkoJ25vdGlmeS51bnN0YXJ0JyksIGNvbG9yOiAncmVkJyB9O1xuICAgICAgICBjYXNlICcxJzpcbiAgICAgICAgICByZXR1cm4geyBleHRyYTogdGhpcy55MThuLmZhbnlpKCdub3RpZnkuc3RhcnRlZCcpLCBjb2xvcjogJ2dyZWVuJyB9O1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiB7IGV4dHJhOiB0aGlzLnkxOG4uZmFueWkoJ25vdGlmeS5ub3N0YXR1cycpLCBjb2xvcjogJ3ByaW1hcnknIH07XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAucG9zdChgL21lc3NhZ2UtY2VudGVyLTMvbXktbXNnLWFuZC10b2RvL3RvZG8tbGlzdGAsIHtcbiAgICAgICAgcGFnZU51bTogMSxcbiAgICAgICAgcGFnZVNpemU6IDEwLFxuICAgICAgICBzdGF0dXM6ICcwJ1xuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBOelNhZmVBbnkpID0+IHtcbiAgICAgICAgICBjb25zdCB2aWV3VG9kbyA9IHRoaXMuZGF0YS5maWx0ZXIoZCA9PiBkLmtleSA9PT0gJ3RvZG8nKVswXTtcbiAgICAgICAgICB2aWV3VG9kby5saXN0ID0gcmVzcG9uc2UuZGF0YS5saXN0Lm1hcCgodDogTnpTYWZlQW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi50LFxuICAgICAgICAgICAgICBhdmF0YXI6IHQ/LmltZ1VybCB8fCAnLi9hc3NldHMvdG1wL2ltZy90b2RvLnBuZycsXG4gICAgICAgICAgICAgIHRpdGxlOiB0LnN5c3RlbU5hbWUsXG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0LmNvbnRlbnQsXG4gICAgICAgICAgICAgIGRhdGV0aW1lOiBmb3JtYXREaXN0YW5jZVRvTm93KG5ldyBEYXRlKHQuZGF0ZSksIHsgbG9jYWxlOiB0aGlzLm56STE4bi5nZXREYXRlTG9jYWxlKCkgfSksXG4gICAgICAgICAgICAgIGV4dHJhOiBmb3JtYXRUb2RvU3RhdHVzKHQuc3RhdHVzKS5leHRyYSxcbiAgICAgICAgICAgICAgY29sb3I6IGZvcm1hdFRvZG9TdGF0dXModC5zdGF0dXMpLmNvbG9yXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuY291bnQgKz0gdmlld1RvZG8ubGlzdC5sZW5ndGg7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgY2xlYXIodHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgdCA9IHRoaXMuZGF0YS5maWx0ZXIoZCA9PiBkLnRpdGxlID09PSB0eXBlKVswXTtcbiAgICBpZiAodC5rZXkgPT0gJ21zZycgfHwgdC5rZXkgPT0gJ25vdGljZScpIHtcbiAgICAgIHRoaXMuc3Vicy5wdXNoKFxuICAgICAgICB0aGlzLmh0dHBDbGllbnQucG9zdChgL21lc3NhZ2UtY2VudGVyLTMvbXktbXNnLWFuZC10b2RvL21zZy1jbGVhcmAsIHt9KS5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgICAgdGhpcy5tc2cuc3VjY2VzcyhgJHt0aGlzLnkxOG4uZmFueWkoJ25vdGlmeS5jbGVhcicpfSAke3R5cGV9YCk7XG4gICAgICAgICAgdGhpcy5sb2FkRGF0YSgpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHQua2V5ID09ICd0b2RvJykge1xuICAgICAgdGhpcy5sb2FkRGF0YSgpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdChyZXM6IE5vdGljZUljb25TZWxlY3QpOiB2b2lkIHtcbiAgICB0aGlzLmluamVjdG9yLmdldChXSU5ET1cpLm9wZW4ocmVzLml0ZW0udXJsKTtcbiAgICB0aGlzLmxvYWREYXRhKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnMuZm9yRWFjaChhID0+IGEudW5zdWJzY3JpYmUoKSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
import { Directionality } from '@angular/cdk/bidi';
|
|
2
|
-
import { Platform } from '@angular/cdk/platform';
|
|
3
|
-
import { DOCUMENT } from '@angular/common';
|
|
4
|
-
import { ChangeDetectionStrategy, Component, Input, Renderer2, Inject, Optional } from '@angular/core';
|
|
5
|
-
import { Subject } from 'rxjs';
|
|
6
|
-
import { takeUntil } from 'rxjs/operators';
|
|
7
|
-
import { YUNZAI_THEME_BTN_KEYS } from '@yelon/theme/theme-btn';
|
|
8
|
-
import { YunzaiConfigService } from '@yelon/util/config';
|
|
9
|
-
export class YzHeaderThemBtnComponent {
|
|
10
|
-
constructor(renderer, configSrv, platform, doc, directionality, KEYS) {
|
|
11
|
-
this.renderer = renderer;
|
|
12
|
-
this.configSrv = configSrv;
|
|
13
|
-
this.platform = platform;
|
|
14
|
-
this.doc = doc;
|
|
15
|
-
this.directionality = directionality;
|
|
16
|
-
this.KEYS = KEYS;
|
|
17
|
-
this.theme = 'default';
|
|
18
|
-
this.types = [
|
|
19
|
-
{ key: 'default', text: 'theme.default', color: '#2163ff' },
|
|
20
|
-
{ key: 'compact', text: 'theme.compact', color: '#2163ff' },
|
|
21
|
-
{ key: 'dark', text: 'theme.dark', color: '#020202' },
|
|
22
|
-
{ key: 'yuhong', text: 'theme.yuhong', color: '#C04851' },
|
|
23
|
-
{ key: 'danjuhuang', text: 'theme.danjuhuang', color: '#FBA414' },
|
|
24
|
-
{ key: 'xinghuang', text: 'theme.xinghuang', color: '#F28E16' },
|
|
25
|
-
{ key: 'shilv', text: 'theme.shilv', color: '#57C3C2' },
|
|
26
|
-
{ key: 'zhulv', text: 'theme.zhulv', color: '#1BA784' },
|
|
27
|
-
{ key: 'youlan', text: 'theme.youlan', color: '#1781B5' },
|
|
28
|
-
{ key: 'dianqing', text: 'theme.dianqing', color: '#1661AB' },
|
|
29
|
-
{ key: 'shangengzi', text: 'theme.shangengzi', color: '#61649F' },
|
|
30
|
-
{ key: 'shuiniuhui', text: 'theme.shuiniuhui', color: '#2F2F35' }
|
|
31
|
-
];
|
|
32
|
-
this.devTips = `When the dark.css file can't be found, you need to run it once: npm run theme`;
|
|
33
|
-
this.deployUrl = '';
|
|
34
|
-
this.destroy$ = new Subject();
|
|
35
|
-
this.dir = 'ltr';
|
|
36
|
-
}
|
|
37
|
-
ngOnInit() {
|
|
38
|
-
var _a;
|
|
39
|
-
this.dir = this.directionality.value;
|
|
40
|
-
(_a = this.directionality.change) === null || _a === void 0 ? void 0 : _a.pipe(takeUntil(this.destroy$)).subscribe((direction) => {
|
|
41
|
-
this.dir = direction;
|
|
42
|
-
});
|
|
43
|
-
this.initTheme();
|
|
44
|
-
}
|
|
45
|
-
initTheme() {
|
|
46
|
-
if (!this.platform.isBrowser) {
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
this.theme = localStorage.getItem(this.KEYS) || 'default';
|
|
50
|
-
this.updateChartTheme();
|
|
51
|
-
this.onThemeChange(this.theme);
|
|
52
|
-
}
|
|
53
|
-
updateChartTheme() {
|
|
54
|
-
this.configSrv.set('chart', { theme: this.theme === 'dark' ? 'dark' : '' });
|
|
55
|
-
}
|
|
56
|
-
onThemeChange(theme) {
|
|
57
|
-
if (!this.platform.isBrowser) {
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
this.theme = theme;
|
|
61
|
-
this.renderer.setAttribute(this.doc.body, 'data-theme', theme);
|
|
62
|
-
const dom = this.doc.getElementById(this.KEYS);
|
|
63
|
-
if (dom) {
|
|
64
|
-
dom.remove();
|
|
65
|
-
}
|
|
66
|
-
localStorage.removeItem(this.KEYS);
|
|
67
|
-
if (theme !== 'default') {
|
|
68
|
-
const el = this.doc.createElement('link');
|
|
69
|
-
el.type = 'text/css';
|
|
70
|
-
el.rel = 'stylesheet';
|
|
71
|
-
el.id = this.KEYS;
|
|
72
|
-
el.href = `${this.deployUrl}assets/style.${theme}.css`;
|
|
73
|
-
localStorage.setItem(this.KEYS, theme);
|
|
74
|
-
this.doc.body.append(el);
|
|
75
|
-
}
|
|
76
|
-
this.updateChartTheme();
|
|
77
|
-
}
|
|
78
|
-
ngOnDestroy() {
|
|
79
|
-
const el = this.doc.getElementById(this.KEYS);
|
|
80
|
-
if (el != null) {
|
|
81
|
-
this.doc.body.removeChild(el);
|
|
82
|
-
}
|
|
83
|
-
this.destroy$.next();
|
|
84
|
-
this.destroy$.complete();
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
YzHeaderThemBtnComponent.decorators = [
|
|
88
|
-
{ type: Component, args: [{
|
|
89
|
-
selector: 'yz-header-theme-btn',
|
|
90
|
-
template: `
|
|
91
|
-
<div
|
|
92
|
-
class="yunzai-default__nav-item"
|
|
93
|
-
nz-dropdown
|
|
94
|
-
[nzDropdownMenu]="iconMenu"
|
|
95
|
-
nzTrigger="click"
|
|
96
|
-
nzPlacement="bottomRight"
|
|
97
|
-
>
|
|
98
|
-
<svg nz-tooltip class="anticon" role="img" width="21" height="21" viewBox="0 0 21 21" fill="currentColor">
|
|
99
|
-
<g fill-rule="evenodd">
|
|
100
|
-
<g fill-rule="nonzero">
|
|
101
|
-
<path
|
|
102
|
-
d="M7.02 3.635l12.518 12.518a1.863 1.863 0 010 2.635l-1.317 1.318a1.863 1.863 0 01-2.635 0L3.068 7.588A2.795 2.795 0 117.02 3.635zm2.09 14.428a.932.932 0 110 1.864.932.932 0 010-1.864zm-.043-9.747L7.75 9.635l9.154 9.153 1.318-1.317-9.154-9.155zM3.52 12.473c.514 0 .931.417.931.931v.932h.932a.932.932 0 110 1.864h-.932v.931a.932.932 0 01-1.863 0l-.001-.931h-.93a.932.932 0 010-1.864h.93v-.932c0-.514.418-.931.933-.931zm15.374-3.727a1.398 1.398 0 110 2.795 1.398 1.398 0 010-2.795zM4.385 4.953a.932.932 0 000 1.317l2.046 2.047L7.75 7 5.703 4.953a.932.932 0 00-1.318 0zM14.701.36a.932.932 0 01.931.932v.931h.932a.932.932 0 010 1.864h-.933l.001.932a.932.932 0 11-1.863 0l-.001-.932h-.93a.932.932 0 110-1.864h.93v-.931a.932.932 0 01.933-.932z"
|
|
103
|
-
></path>
|
|
104
|
-
</g>
|
|
105
|
-
</g>
|
|
106
|
-
</svg>
|
|
107
|
-
</div>
|
|
108
|
-
<nz-dropdown-menu #iconMenu="nzDropdownMenu">
|
|
109
|
-
<ul nz-menu>
|
|
110
|
-
<li
|
|
111
|
-
nz-menu-item
|
|
112
|
-
*ngFor="let theme of types"
|
|
113
|
-
(click)="onThemeChange(theme.key)"
|
|
114
|
-
[style]="{ color: theme.color }"
|
|
115
|
-
>
|
|
116
|
-
<i nz-icon nzType="bg-colors"></i>
|
|
117
|
-
{{ theme.text | i18n }}
|
|
118
|
-
</li>
|
|
119
|
-
</ul>
|
|
120
|
-
<!-- <div nz-menu class="wd-xl animated jello">-->
|
|
121
|
-
<!-- <div nz-row [nzJustify]="'space-between'" [nzAlign]="'middle'" class="app-icons">-->
|
|
122
|
-
<!-- <div nz-col [nzSpan]="4" *ngFor="let theme of types" (click)="onThemeChange(theme.key)">-->
|
|
123
|
-
<!-- <i nz-icon nzType="bg-colors" class="text-white" [style]="{ backgroundColor: theme.color }"></i>-->
|
|
124
|
-
<!-- <span [ngStyle]="{ color: theme.color }">{{ theme.text | i18n }}</span>-->
|
|
125
|
-
<!-- </div>-->
|
|
126
|
-
<!-- </div>-->
|
|
127
|
-
<!-- </div>-->
|
|
128
|
-
</nz-dropdown-menu>
|
|
129
|
-
`,
|
|
130
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
131
|
-
},] }
|
|
132
|
-
];
|
|
133
|
-
YzHeaderThemBtnComponent.ctorParameters = () => [
|
|
134
|
-
{ type: Renderer2 },
|
|
135
|
-
{ type: YunzaiConfigService },
|
|
136
|
-
{ type: Platform },
|
|
137
|
-
{ type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
|
|
138
|
-
{ type: Directionality, decorators: [{ type: Optional }] },
|
|
139
|
-
{ type: String, decorators: [{ type: Inject, args: [YUNZAI_THEME_BTN_KEYS,] }] }
|
|
140
|
-
];
|
|
141
|
-
YzHeaderThemBtnComponent.propDecorators = {
|
|
142
|
-
types: [{ type: Input }],
|
|
143
|
-
devTips: [{ type: Input }],
|
|
144
|
-
deployUrl: [{ type: Input }]
|
|
145
|
-
};
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXoudGhlbS1idG4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYmlzL2xheW91dC93aWRnZXRzL3l6LnRoZW0tYnRuLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEVBR0wsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJM0MsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBa0R6RCxNQUFNLE9BQU8sd0JBQXdCO0lBcUJuQyxZQUNVLFFBQW1CLEVBQ25CLFNBQThCLEVBQzlCLFFBQWtCLEVBQ0EsR0FBYyxFQUNwQixjQUE4QixFQUNYLElBQVk7UUFMM0MsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixjQUFTLEdBQVQsU0FBUyxDQUFxQjtRQUM5QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ0EsUUFBRyxHQUFILEdBQUcsQ0FBVztRQUNwQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDWCxTQUFJLEdBQUosSUFBSSxDQUFRO1FBMUI3QyxVQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ2pCLFVBQUssR0FBcUI7WUFDakMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElB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QUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDOzs7WUE5SEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxxQkFBcUI7Z0JBQy9CLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUNUO2dCQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ2hEOzs7WUEzREMsU0FBUztZQVVGLG1CQUFtQjtZQWxCbkIsUUFBUTs0Q0E2RlosTUFBTSxTQUFDLFFBQVE7WUE5RkEsY0FBYyx1QkErRjdCLFFBQVE7eUNBQ1IsTUFBTSxTQUFDLHFCQUFxQjs7O29CQXpCOUIsS0FBSztzQkFjTCxLQUFLO3dCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3Rpb24sIERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBSZW5kZXJlcjIsXG4gIEluamVjdCxcbiAgT3B0aW9uYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5cbmltcG9ydCB7IFRoZW1lQnRuVHlwZSwgWVVOWkFJX1RIRU1FX0JUTl9LRVlTIH0gZnJvbSAnQHllbG9uL3RoZW1lL3RoZW1lLWJ0bic7XG5pbXBvcnQgeyBZdW56YWlDb25maWdTZXJ2aWNlIH0gZnJvbSAnQHllbG9uL3V0aWwvY29uZmlnJztcblxuZXhwb3J0IGludGVyZmFjZSBZelRoZW1lQnRuVHlwZSBleHRlbmRzIFRoZW1lQnRuVHlwZSB7XG4gIGNvbG9yPzogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd5ei1oZWFkZXItdGhlbWUtYnRuJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInl1bnphaS1kZWZhdWx0X19uYXYtaXRlbVwiXG4gICAgICBuei1kcm9wZG93blxuICAgICAgW256RHJvcGRvd25NZW51XT1cImljb25NZW51XCJcbiAgICAgIG56VHJpZ2dlcj1cImNsaWNrXCJcbiAgICAgIG56UGxhY2VtZW50PVwiYm90dG9tUmlnaHRcIlxuICAgID5cbiAgICAgIDxzdmcgbnotdG9vbHRpcCBjbGFzcz1cImFudGljb25cIiByb2xlPVwiaW1nXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAyMSAyMVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj5cbiAgICAgICAgPGcgZmlsbC1ydWxlPVwiZXZlbm9kZFwiPlxuICAgICAgICAgIDxnIGZpbGwtcnVsZT1cIm5vbnplcm9cIj5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGQ9XCJNNy4wMiAzLjYzNWwxMi41MTggMTIuNTE4YTEuODYzIDEuODYzIDAgMDEwIDIuNjM1bC0xLjMxNyAxLjMxOGExLjg2MyAxLjg2MyAwIDAxLTIuNjM1IDBMMy4wNjggNy41ODhBMi43OTUgMi43OTUgMCAxMTcuMDIgMy42MzV6bTIuMDkgMTQuNDI4YS45MzIuOTMyIDAgMTEwIDEuODY0LjkzMi45MzIgMCAwMTAtMS44NjR6bS0uMDQzLTkuNzQ3TDcuNzUgOS42MzVsOS4xNTQgOS4xNTMgMS4zMTgtMS4zMTctOS4xNTQtOS4xNTV6TTMuNTIgMTIuNDczYy41MTQgMCAuOTMxLjQxNy45MzEuOTMxdi45MzJoLjkzMmEuOTMyLjkzMiAwIDExMCAxLjg2NGgtLjkzMnYuOTMxYS45MzIuOTMyIDAgMDEtMS44NjMgMGwtLjAwMS0uOTMxaC0uOTNhLjkzMi45MzIgMCAwMTAtMS44NjRoLjkzdi0uOTMyYzAtLjUxNC40MTgtLjkzMS45MzMtLjkzMXptMTUuMzc0LTMuNzI3YTEuMzk4IDEuMzk4IDAgMTEwIDIuNzk1IDEuMzk4IDEuMzk4IDAgMDEwLTIuNzk1ek00LjM4NSA0Ljk1M2EuOTMyLjkzMiAwIDAwMCAxLjMxN2wyLjA0NiAyLjA0N0w3Ljc1IDcgNS43MDMgNC45NTNhLjkzMi45MzIgMCAwMC0xLjMxOCAwek0xNC43MDEuMzZhLjkzMi45MzIgMCAwMS45MzEuOTMydi45MzFoLjkzMmEuOTMyLjkzMiAwIDAxMCAxLjg2NGgtLjkzM2wuMDAxLjkzMmEuOTMyLjkzMiAwIDExLTEuODYzIDBsLS4wMDEtLjkzMmgtLjkzYS45MzIuOTMyIDAgMTEwLTEuODY0aC45M3YtLjkzMWEuOTMyLjkzMiAwIDAxLjkzMy0uOTMyelwiXG4gICAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgPC9nPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPG56LWRyb3Bkb3duLW1lbnUgI2ljb25NZW51PVwibnpEcm9wZG93bk1lbnVcIj5cbiAgICAgIDx1bCBuei1tZW51PlxuICAgICAgICA8bGlcbiAgICAgICAgICBuei1tZW51LWl0ZW1cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgdGhlbWUgb2YgdHlwZXNcIlxuICAgICAgICAgIChjbGljayk9XCJvblRoZW1lQ2hhbmdlKHRoZW1lLmtleSlcIlxuICAgICAgICAgIFtzdHlsZV09XCJ7IGNvbG9yOiB0aGVtZS5jb2xvciB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIG56LWljb24gbnpUeXBlPVwiYmctY29sb3JzXCI+PC9pPlxuICAgICAgICAgIHt7IHRoZW1lLnRleHQgfCBpMThuIH19XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgICAgPCEtLSAgICAgIDxkaXYgbnotbWVudSBjbGFzcz1cIndkLXhsIGFuaW1hdGVkIGplbGxvXCI+LS0+XG4gICAgICA8IS0tICAgICAgICA8ZGl2IG56LXJvdyBbbnpKdXN0aWZ5XT1cIidzcGFjZS1iZXR3ZWVuJ1wiIFtuekFsaWduXT1cIidtaWRkbGUnXCIgY2xhc3M9XCJhcHAtaWNvbnNcIj4tLT5cbiAgICAgIDwhLS0gICAgICAgICAgPGRpdiBuei1jb2wgW256U3Bhbl09XCI0XCIgKm5nRm9yPVwibGV0IHRoZW1lIG9mIHR5cGVzXCIgKGNsaWNrKT1cIm9uVGhlbWVDaGFuZ2UodGhlbWUua2V5KVwiPi0tPlxuICAgICAgPCEtLSAgICAgICAgICAgIDxpIG56LWljb24gbnpUeXBlPVwiYmctY29sb3JzXCIgY2xhc3M9XCJ0ZXh0LXdoaXRlXCIgW3N0eWxlXT1cInsgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5jb2xvciB9XCI+PC9pPi0tPlxuICAgICAgPCEtLSAgICAgICAgICAgIDxzcGFuIFtuZ1N0eWxlXT1cInsgY29sb3I6IHRoZW1lLmNvbG9yIH1cIj57eyB0aGVtZS50ZXh0IHwgaTE4biB9fTwvc3Bhbj4tLT5cbiAgICAgIDwhLS0gICAgICAgICAgPC9kaXY+LS0+XG4gICAgICA8IS0tICAgICAgICA8L2Rpdj4tLT5cbiAgICAgIDwhLS0gICAgICA8L2Rpdj4tLT5cbiAgICA8L256LWRyb3Bkb3duLW1lbnU+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFl6SGVhZGVyVGhlbUJ0bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSB0aGVtZSA9ICdkZWZhdWx0JztcbiAgQElucHV0KCkgdHlwZXM6IFl6VGhlbWVCdG5UeXBlW10gPSBbXG4gICAgeyBrZXk6ICdkZWZhdWx0JywgdGV4dDogJ3RoZW1lLmRlZmF1bHQnLCBjb2xvcjogJyMyMTYzZmYnIH0sXG4gICAgeyBrZXk6ICdjb21wYWN0JywgdGV4dDogJ3RoZW1lLmNvbXBhY3QnLCBjb2xvcjogJyMyMTYzZmYnIH0sXG4gICAgeyBrZXk6ICdkYXJrJywgdGV4dDogJ3RoZW1lLmRhcmsnLCBjb2xvcjogJyMwMjAyMDInIH0sXG4gICAgeyBrZXk6ICd5dWhvbmcnLCB0ZXh0OiAndGhlbWUueXVob25nJywgY29sb3I6ICcjQzA0ODUxJyB9LFxuICAgIHsga2V5OiAnZGFuanVodWFuZycsIHRleHQ6ICd0aGVtZS5kYW5qdWh1YW5nJywgY29sb3I6ICcjRkJBNDE0JyB9LFxuICAgIHsga2V5OiAneGluZ2h1YW5nJywgdGV4dDogJ3RoZW1lLnhpbmdodWFuZycsIGNvbG9yOiAnI0YyOEUxNicgfSxcbiAgICB7IGtleTogJ3NoaWx2JywgdGV4dDogJ3RoZW1lLnNoaWx2JywgY29sb3I6ICcjNTdDM0MyJyB9LFxuICAgIHsga2V5OiAnemh1bHYnLCB0ZXh0OiAndGhlbWUuemh1bHYnLCBjb2xvcjogJyMxQkE3ODQnIH0sXG4gICAgeyBrZXk6ICd5b3VsYW4nLCB0ZXh0OiAndGhlbWUueW91bGFuJywgY29sb3I6ICcjMTc4MUI1JyB9LFxuICAgIHsga2V5OiAnZGlhbnFpbmcnLCB0ZXh0OiAndGhlbWUuZGlhbnFpbmcnLCBjb2xvcjogJyMxNjYxQUInIH0sXG4gICAgeyBrZXk6ICdzaGFuZ2VuZ3ppJywgdGV4dDogJ3RoZW1lLnNoYW5nZW5nemknLCBjb2xvcjogJyM2MTY0OUYnIH0sXG4gICAgeyBrZXk6ICdzaHVpbml1aHVpJywgdGV4dDogJ3RoZW1lLnNodWluaXVodWknLCBjb2xvcjogJyMyRjJGMzUnIH1cbiAgXTtcbiAgQElucHV0KCkgZGV2VGlwcyA9IGBXaGVuIHRoZSBkYXJrLmNzcyBmaWxlIGNhbid0IGJlIGZvdW5kLCB5b3UgbmVlZCB0byBydW4gaXQgb25jZTogbnBtIHJ1biB0aGVtZWA7XG4gIEBJbnB1dCgpIGRlcGxveVVybCA9ICcnO1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgZGlyOiBEaXJlY3Rpb24gPSAnbHRyJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBjb25maWdTcnY6IFl1bnphaUNvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm0sXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2M6IE56U2FmZUFueSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGRpcmVjdGlvbmFsaXR5OiBEaXJlY3Rpb25hbGl0eSxcbiAgICBASW5qZWN0KFlVTlpBSV9USEVNRV9CVE5fS0VZUykgcHJpdmF0ZSBLRVlTOiBzdHJpbmdcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGlyID0gdGhpcy5kaXJlY3Rpb25hbGl0eS52YWx1ZTtcbiAgICB0aGlzLmRpcmVjdGlvbmFsaXR5LmNoYW5nZT8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZGlyZWN0aW9uOiBEaXJlY3Rpb24pID0+IHtcbiAgICAgIHRoaXMuZGlyID0gZGlyZWN0aW9uO1xuICAgIH0pO1xuICAgIHRoaXMuaW5pdFRoZW1lKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRUaGVtZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucGxhdGZvcm0uaXNCcm93c2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudGhlbWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLktFWVMpIHx8ICdkZWZhdWx0JztcbiAgICB0aGlzLnVwZGF0ZUNoYXJ0VGhlbWUoKTtcbiAgICB0aGlzLm9uVGhlbWVDaGFuZ2UodGhpcy50aGVtZSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNoYXJ0VGhlbWUoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maWdTcnYuc2V0KCdjaGFydCcsIHsgdGhlbWU6IHRoaXMudGhlbWUgPT09ICdkYXJrJyA/ICdkYXJrJyA6ICcnIH0pO1xuICB9XG5cbiAgb25UaGVtZUNoYW5nZSh0aGVtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnBsYXRmb3JtLmlzQnJvd3Nlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnRoZW1lID0gdGhlbWU7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5kb2MuYm9keSwgJ2RhdGEtdGhlbWUnLCB0aGVtZSk7XG4gICAgY29uc3QgZG9tID0gdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQodGhpcy5LRVlTKTtcbiAgICBpZiAoZG9tKSB7XG4gICAgICBkb20ucmVtb3ZlKCk7XG4gICAgfVxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuS0VZUyk7XG4gICAgaWYgKHRoZW1lICE9PSAnZGVmYXVsdCcpIHtcbiAgICAgIGNvbnN0IGVsID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgnbGluaycpO1xuICAgICAgZWwudHlwZSA9ICd0ZXh0L2Nzcyc7XG4gICAgICBlbC5yZWwgPSAnc3R5bGVzaGVldCc7XG4gICAgICBlbC5pZCA9IHRoaXMuS0VZUztcbiAgICAgIGVsLmhyZWYgPSBgJHt0aGlzLmRlcGxveVVybH1hc3NldHMvc3R5bGUuJHt0aGVtZX0uY3NzYDtcblxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5LRVlTLCB0aGVtZSk7XG4gICAgICB0aGlzLmRvYy5ib2R5LmFwcGVuZChlbCk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlQ2hhcnRUaGVtZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgY29uc3QgZWwgPSB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCh0aGlzLktFWVMpO1xuICAgIGlmIChlbCAhPSBudWxsKSB7XG4gICAgICB0aGlzLmRvYy5ib2R5LnJlbW92ZUNoaWxkKGVsKTtcbiAgICB9XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Inject, Injector } from '@angular/core';
|
|
2
|
-
import { NzMessageService } from 'ng-zorro-antd/message';
|
|
3
|
-
import { YA_SERVICE_TOKEN } from '@yelon/auth';
|
|
4
|
-
import { CacheService } from '@yelon/cache';
|
|
5
|
-
import { WINDOW, YunzaiConfigService } from '@yelon/util';
|
|
6
|
-
import { mergeBisConfig } from '../bis.config';
|
|
7
|
-
export class YzHeaderUserComponent {
|
|
8
|
-
constructor(injector, msg, tokenService,
|
|
9
|
-
// @ts-ignore
|
|
10
|
-
configService, cacheService) {
|
|
11
|
-
this.injector = injector;
|
|
12
|
-
this.msg = msg;
|
|
13
|
-
this.tokenService = tokenService;
|
|
14
|
-
this.configService = configService;
|
|
15
|
-
this.cacheService = cacheService;
|
|
16
|
-
this.icon = '';
|
|
17
|
-
this.username = '';
|
|
18
|
-
this.menus = [];
|
|
19
|
-
this.config = mergeBisConfig(configService);
|
|
20
|
-
}
|
|
21
|
-
ngOnInit() {
|
|
22
|
-
const projectInfo = this.cacheService.get('_yz_project_info', { mode: 'none' });
|
|
23
|
-
const user = this.cacheService.get('_yz_user', { mode: 'none' });
|
|
24
|
-
this.username = user.realname ? user.realname : '未命名';
|
|
25
|
-
this.icon = user.avatarId
|
|
26
|
-
? `${this.config.baseUrl}/filecenter/file/${user.avatarId}`
|
|
27
|
-
: `./assets/tmp/img/avatar.jpg`;
|
|
28
|
-
this.menus = projectInfo.profileList;
|
|
29
|
-
}
|
|
30
|
-
logout() {
|
|
31
|
-
localStorage.clear();
|
|
32
|
-
this.tokenService.clear();
|
|
33
|
-
this.injector.get(WINDOW).location.href = `${this.config.baseUrl}/cas-proxy/app/logout`;
|
|
34
|
-
}
|
|
35
|
-
to(href) {
|
|
36
|
-
if (href) {
|
|
37
|
-
this.injector.get(WINDOW).open(href);
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
this.msg.error('该菜单没有配置链接!');
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
YzHeaderUserComponent.decorators = [
|
|
45
|
-
{ type: Component, args: [{
|
|
46
|
-
selector: 'yz-header-user',
|
|
47
|
-
template: `
|
|
48
|
-
<div
|
|
49
|
-
class="yunzai-default__nav-item d-flex align-items-center px-sm"
|
|
50
|
-
nz-dropdown
|
|
51
|
-
nzPlacement="bottomRight"
|
|
52
|
-
[nzDropdownMenu]="userMenu"
|
|
53
|
-
>
|
|
54
|
-
<nz-avatar [nzSrc]="icon" nzSize="small" class="mr-sm"></nz-avatar>
|
|
55
|
-
{{ username }}
|
|
56
|
-
</div>
|
|
57
|
-
<nz-dropdown-menu #userMenu="nzDropdownMenu">
|
|
58
|
-
<div nz-menu class="width-sm">
|
|
59
|
-
<div nz-menu-item *ngFor="let m of menus" (click)="to(m.url)">
|
|
60
|
-
<i nz-icon [nzType]="m.icon" class="mr-sm"></i>
|
|
61
|
-
{{ m.name | i18n }}
|
|
62
|
-
</div>
|
|
63
|
-
<li nz-menu-divider></li>
|
|
64
|
-
<div nz-menu-item (click)="logout()">
|
|
65
|
-
<i nz-icon nzType="logout" class="mr-sm"></i>
|
|
66
|
-
{{ 'menu.account.logout' | i18n }}
|
|
67
|
-
</div>
|
|
68
|
-
</div>
|
|
69
|
-
</nz-dropdown-menu>
|
|
70
|
-
`,
|
|
71
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
72
|
-
},] }
|
|
73
|
-
];
|
|
74
|
-
YzHeaderUserComponent.ctorParameters = () => [
|
|
75
|
-
{ type: Injector },
|
|
76
|
-
{ type: NzMessageService },
|
|
77
|
-
{ type: undefined, decorators: [{ type: Inject, args: [YA_SERVICE_TOKEN,] }] },
|
|
78
|
-
{ type: YunzaiConfigService },
|
|
79
|
-
{ type: CacheService }
|
|
80
|
-
];
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXoudXNlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9iaXMvbGF5b3V0L3dpZGdldHMveXoudXNlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXpELE9BQU8sRUFBRSxnQkFBZ0IsRUFBaUIsTUFBTSxhQUFhLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM1QyxPQUFPLEVBQUUsTUFBTSxFQUF3QixtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVoRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBb0MvQyxNQUFNLE9BQU8scUJBQXFCO0lBR2hDLFlBQ1UsUUFBa0IsRUFDbEIsR0FBcUIsRUFDSyxZQUEyQjtJQUM3RCxhQUFhO0lBQ0wsYUFBa0MsRUFDbEMsWUFBMEI7UUFMMUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUNLLGlCQUFZLEdBQVosWUFBWSxDQUFlO1FBRXJELGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQUNsQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUtwQyxTQUFJLEdBQVcsRUFBRSxDQUFDO1FBQ2xCLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFDdEIsVUFBSyxHQUFlLEVBQUUsQ0FBQztRQUxyQixJQUFJLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBTUQsUUFBUTtRQUNOLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDaEYsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUTtZQUN2QixDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sb0JBQW9CLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDM0QsQ0FBQyxDQUFDLDZCQUE2QixDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQztJQUN2QyxDQUFDO0lBRUQsTUFBTTtRQUNKLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sdUJBQXVCLENBQUM7SUFDMUYsQ0FBQztJQUVELEVBQUUsQ0FBQyxJQUFZO1FBQ2IsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdEM7YUFBTTtZQUNMLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzlCO0lBQ0gsQ0FBQzs7O1lBcEVGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJUO2dCQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ2hEOzs7WUEzQ29ELFFBQVE7WUFFcEQsZ0JBQWdCOzRDQWdEcEIsTUFBTSxTQUFDLGdCQUFnQjtZQTVDVyxtQkFBbUI7WUFEakQsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdCwgSW5qZWN0b3IsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBOek1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9tZXNzYWdlJztcblxuaW1wb3J0IHsgWUFfU0VSVklDRV9UT0tFTiwgSVRva2VuU2VydmljZSB9IGZyb20gJ0B5ZWxvbi9hdXRoJztcbmltcG9ydCB7IENhY2hlU2VydmljZSB9IGZyb20gJ0B5ZWxvbi9jYWNoZSc7XG5pbXBvcnQgeyBXSU5ET1csIFl1bnphaUJ1c2luZXNzQ29uZmlnLCBZdW56YWlDb25maWdTZXJ2aWNlIH0gZnJvbSAnQHllbG9uL3V0aWwnO1xuXG5pbXBvcnQgeyBtZXJnZUJpc0NvbmZpZyB9IGZyb20gJy4uL2Jpcy5jb25maWcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJMaW5rIHtcbiAgaWNvbjogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd5ei1oZWFkZXItdXNlcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ5dW56YWktZGVmYXVsdF9fbmF2LWl0ZW0gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBweC1zbVwiXG4gICAgICBuei1kcm9wZG93blxuICAgICAgbnpQbGFjZW1lbnQ9XCJib3R0b21SaWdodFwiXG4gICAgICBbbnpEcm9wZG93bk1lbnVdPVwidXNlck1lbnVcIlxuICAgID5cbiAgICAgIDxuei1hdmF0YXIgW256U3JjXT1cImljb25cIiBuelNpemU9XCJzbWFsbFwiIGNsYXNzPVwibXItc21cIj48L256LWF2YXRhcj5cbiAgICAgIHt7IHVzZXJuYW1lIH19XG4gICAgPC9kaXY+XG4gICAgPG56LWRyb3Bkb3duLW1lbnUgI3VzZXJNZW51PVwibnpEcm9wZG93bk1lbnVcIj5cbiAgICAgIDxkaXYgbnotbWVudSBjbGFzcz1cIndpZHRoLXNtXCI+XG4gICAgICAgIDxkaXYgbnotbWVudS1pdGVtICpuZ0Zvcj1cImxldCBtIG9mIG1lbnVzXCIgKGNsaWNrKT1cInRvKG0udXJsKVwiPlxuICAgICAgICAgIDxpIG56LWljb24gW256VHlwZV09XCJtLmljb25cIiBjbGFzcz1cIm1yLXNtXCI+PC9pPlxuICAgICAgICAgIHt7IG0ubmFtZSB8IGkxOG4gfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxsaSBuei1tZW51LWRpdmlkZXI+PC9saT5cbiAgICAgICAgPGRpdiBuei1tZW51LWl0ZW0gKGNsaWNrKT1cImxvZ291dCgpXCI+XG4gICAgICAgICAgPGkgbnotaWNvbiBuelR5cGU9XCJsb2dvdXRcIiBjbGFzcz1cIm1yLXNtXCI+PC9pPlxuICAgICAgICAgIHt7ICdtZW51LmFjY291bnQubG9nb3V0JyB8IGkxOG4gfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L256LWRyb3Bkb3duLW1lbnU+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFl6SGVhZGVyVXNlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgY29uZmlnOiBZdW56YWlCdXNpbmVzc0NvbmZpZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIG1zZzogTnpNZXNzYWdlU2VydmljZSxcbiAgICBASW5qZWN0KFlBX1NFUlZJQ0VfVE9LRU4pIHByaXZhdGUgdG9rZW5TZXJ2aWNlOiBJVG9rZW5TZXJ2aWNlLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IFl1bnphaUNvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjYWNoZVNlcnZpY2U6IENhY2hlU2VydmljZVxuICApIHtcbiAgICB0aGlzLmNvbmZpZyA9IG1lcmdlQmlzQ29uZmlnKGNvbmZpZ1NlcnZpY2UpO1xuICB9XG5cbiAgaWNvbjogc3RyaW5nID0gJyc7XG4gIHVzZXJuYW1lOiBzdHJpbmcgPSAnJztcbiAgbWVudXM6IFVzZXJMaW5rW10gPSBbXTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBwcm9qZWN0SW5mbyA9IHRoaXMuY2FjaGVTZXJ2aWNlLmdldCgnX3l6X3Byb2plY3RfaW5mbycsIHsgbW9kZTogJ25vbmUnIH0pO1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmNhY2hlU2VydmljZS5nZXQoJ195el91c2VyJywgeyBtb2RlOiAnbm9uZScgfSk7XG4gICAgdGhpcy51c2VybmFtZSA9IHVzZXIucmVhbG5hbWUgPyB1c2VyLnJlYWxuYW1lIDogJ+acquWRveWQjSc7XG4gICAgdGhpcy5pY29uID0gdXNlci5hdmF0YXJJZFxuICAgICAgPyBgJHt0aGlzLmNvbmZpZy5iYXNlVXJsfS9maWxlY2VudGVyL2ZpbGUvJHt1c2VyLmF2YXRhcklkfWBcbiAgICAgIDogYC4vYXNzZXRzL3RtcC9pbWcvYXZhdGFyLmpwZ2A7XG4gICAgdGhpcy5tZW51cyA9IHByb2plY3RJbmZvLnByb2ZpbGVMaXN0O1xuICB9XG5cbiAgbG9nb3V0KCk6IHZvaWQge1xuICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpO1xuICAgIHRoaXMudG9rZW5TZXJ2aWNlLmNsZWFyKCk7XG4gICAgdGhpcy5pbmplY3Rvci5nZXQoV0lORE9XKS5sb2NhdGlvbi5ocmVmID0gYCR7dGhpcy5jb25maWcuYmFzZVVybH0vY2FzLXByb3h5L2FwcC9sb2dvdXRgO1xuICB9XG5cbiAgdG8oaHJlZjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGhyZWYpIHtcbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0KFdJTkRPVykub3BlbihocmVmKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tc2cuZXJyb3IoJ+ivpeiPnOWNleayoeaciemFjee9rumTvuaOpSEnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
import { Injectable, Injector } from '@angular/core';
|
|
2
|
-
import { forkJoin, of } from 'rxjs';
|
|
3
|
-
import { map, mergeAll, mergeMap } from 'rxjs/operators';
|
|
4
|
-
import { mergeConfig as mergeAuthConfig, YA_SERVICE_TOKEN } from '@yelon/auth';
|
|
5
|
-
import { CacheService } from '@yelon/cache';
|
|
6
|
-
import { _HttpClient } from '@yelon/theme';
|
|
7
|
-
import { WINDOW } from '@yelon/util';
|
|
8
|
-
import { YunzaiConfigService } from '@yelon/util/config';
|
|
9
|
-
import { log } from '@yelon/util/other';
|
|
10
|
-
import { mergeBisConfig } from './bis.config';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
export class YzAuthService {
|
|
13
|
-
constructor(injector) {
|
|
14
|
-
this.injector = injector;
|
|
15
|
-
this.option = mergeAuthConfig(this.csr);
|
|
16
|
-
this.bis = mergeBisConfig(this.csr);
|
|
17
|
-
}
|
|
18
|
-
get csr() {
|
|
19
|
-
return this.injector.get(YunzaiConfigService);
|
|
20
|
-
}
|
|
21
|
-
get tokenService() {
|
|
22
|
-
return this.injector.get(YA_SERVICE_TOKEN);
|
|
23
|
-
}
|
|
24
|
-
get httpClient() {
|
|
25
|
-
return this.injector.get(_HttpClient);
|
|
26
|
-
}
|
|
27
|
-
get cacheService() {
|
|
28
|
-
return this.injector.get(CacheService);
|
|
29
|
-
}
|
|
30
|
-
askToken() {
|
|
31
|
-
var _a;
|
|
32
|
-
log('yz.auth.service: ', 'askToken');
|
|
33
|
-
if ((_a = this.tokenService.get()) === null || _a === void 0 ? void 0 : _a.token) {
|
|
34
|
-
return of(this.tokenService.get());
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
if (this.bis.loginForm) {
|
|
38
|
-
return this.fetchTokenByUP();
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
return this.fetchTokenByCas();
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
fetchTokenByUP() {
|
|
46
|
-
log('yz.auth.service: ', 'fetchTokenByUP');
|
|
47
|
-
return this.httpClient.post(`/auth/oauth/token?_allow_anonymous=true`, this.bis.loginForm).pipe(map((response) => {
|
|
48
|
-
const { access_token, expires_in, refresh_token, scope, token_type } = response;
|
|
49
|
-
return {
|
|
50
|
-
token: access_token,
|
|
51
|
-
expired: expires_in,
|
|
52
|
-
refreshToken: refresh_token,
|
|
53
|
-
tokenType: token_type,
|
|
54
|
-
scope
|
|
55
|
-
};
|
|
56
|
-
}));
|
|
57
|
-
}
|
|
58
|
-
fetchTokenByCas() {
|
|
59
|
-
log('yz.auth.service: ', 'fetchTokenByCas');
|
|
60
|
-
const uri = encodeURIComponent(this.injector.get(WINDOW).location.href);
|
|
61
|
-
return this.httpClient
|
|
62
|
-
.get(`/cas-proxy/app/validate_full?callback=${uri}&_allow_anonymous=true×tamp=${new Date().getTime()}`)
|
|
63
|
-
.pipe(map((response) => {
|
|
64
|
-
switch (response.errcode) {
|
|
65
|
-
case 2000:
|
|
66
|
-
const { access_token, expires_in, refresh_token, scope, token_type } = response.data;
|
|
67
|
-
return {
|
|
68
|
-
token: access_token,
|
|
69
|
-
expired: expires_in,
|
|
70
|
-
refreshToken: refresh_token,
|
|
71
|
-
tokenType: token_type,
|
|
72
|
-
scope
|
|
73
|
-
};
|
|
74
|
-
case 2001:
|
|
75
|
-
this.injector.get(WINDOW).location.href = response.msg;
|
|
76
|
-
throw Error("Cookie Error: Can't find Cas Cookie,So jump to login!");
|
|
77
|
-
default:
|
|
78
|
-
if (response.data) {
|
|
79
|
-
console.error(response.data);
|
|
80
|
-
throw Error(response.data);
|
|
81
|
-
}
|
|
82
|
-
else if (response.msg) {
|
|
83
|
-
console.error(response.msg);
|
|
84
|
-
throw Error(response.msg);
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
console.error('cas unknown error');
|
|
88
|
-
throw Error('Unknown Error: Cas auth exception!');
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}));
|
|
92
|
-
}
|
|
93
|
-
login() {
|
|
94
|
-
log('yz.auth.service: ', 'login white login form->', this.bis.loginForm);
|
|
95
|
-
return this.askToken().pipe(mergeMap(token => {
|
|
96
|
-
log('yz.auth.service: get token->', token);
|
|
97
|
-
this.csr.set('auth', {
|
|
98
|
-
token_send_key: 'Authorization',
|
|
99
|
-
token_send_template: `${token.tokenType} \${token}`,
|
|
100
|
-
token_send_place: 'header'
|
|
101
|
-
});
|
|
102
|
-
log('yz.auth.service: ', 'set token');
|
|
103
|
-
this.tokenService.set(token);
|
|
104
|
-
return this.cacheInit();
|
|
105
|
-
}), mergeAll());
|
|
106
|
-
}
|
|
107
|
-
cacheInit() {
|
|
108
|
-
log('yz.auth.service: ', 'cacheInit');
|
|
109
|
-
const user = this.cacheService.get('_yz_user', { mode: 'none' });
|
|
110
|
-
const header = this.cacheService.get('_yz_header', { mode: 'none' });
|
|
111
|
-
const project = this.cacheService.get('_yz_project_info', { mode: 'none' });
|
|
112
|
-
return forkJoin(of(user), of(header), of(project)).pipe(mergeMap(([u, h, p]) => {
|
|
113
|
-
let list = [];
|
|
114
|
-
// user cache
|
|
115
|
-
if (!u) {
|
|
116
|
-
log('yz.auth.service: ', 'fetch user cache');
|
|
117
|
-
list.push(this.httpClient.get(`/auth/user`).pipe(map((user) => {
|
|
118
|
-
this.cacheService.set('_yz_user', user.principal);
|
|
119
|
-
})));
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
log('yz.auth.service: ', 'user recache');
|
|
123
|
-
list.push(of(() => { }));
|
|
124
|
-
}
|
|
125
|
-
// header cache
|
|
126
|
-
if (!h) {
|
|
127
|
-
log('yz.auth.service: ', 'fetch header cache');
|
|
128
|
-
list.push(this.httpClient.get(`/auth/allheader/v2`).pipe(map((header) => {
|
|
129
|
-
this.cacheService.set('_yz_header', header.data);
|
|
130
|
-
})));
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
133
|
-
log('yz.auth.service: ', 'header recache');
|
|
134
|
-
list.push(of(() => { }));
|
|
135
|
-
}
|
|
136
|
-
// project cache
|
|
137
|
-
if (!p) {
|
|
138
|
-
log('yz.auth.service: ', 'fetch project cache');
|
|
139
|
-
list.push(this.httpClient.get(`/app-manager/project/info`).pipe(map((info) => {
|
|
140
|
-
this.cacheService.set('_yz_project_info', info.data);
|
|
141
|
-
})));
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
log('yz.auth.service: ', 'project recache');
|
|
145
|
-
list.push(of(() => { }));
|
|
146
|
-
}
|
|
147
|
-
return forkJoin(list);
|
|
148
|
-
}));
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
YzAuthService.ɵprov = i0.ɵɵdefineInjectable({ factory: function YzAuthService_Factory() { return new YzAuthService(i0.ɵɵinject(i0.INJECTOR)); }, token: YzAuthService, providedIn: "root" });
|
|
152
|
-
YzAuthService.decorators = [
|
|
153
|
-
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
154
|
-
];
|
|
155
|
-
YzAuthService.ctorParameters = () => [
|
|
156
|
-
{ type: Injector }
|
|
157
|
-
];
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXouYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYmlzL2xheW91dC95ei5hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJekQsT0FBTyxFQUE4QixXQUFXLElBQUksZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUEwQyxNQUFNLGFBQWEsQ0FBQztBQUM3RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFeEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFHOUMsTUFBTSxPQUFPLGFBQWE7SUFJeEIsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNwQyxJQUFJLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFZLEdBQUc7UUFDYixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7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LENBQUMsQ0FBQzthQUNwQztZQUNELE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzs7O1lBbEtGLFVBQVUsU0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OztZQWZiLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIG1lcmdlQWxsLCBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTnpTYWZlQW55IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcblxuaW1wb3J0IHsgSVRva2VuTW9kZWwsIElUb2tlblNlcnZpY2UsIG1lcmdlQ29uZmlnIGFzIG1lcmdlQXV0aENvbmZpZywgWUFfU0VSVklDRV9UT0tFTiB9IGZyb20gJ0B5ZWxvbi9hdXRoJztcbmltcG9ydCB7IENhY2hlU2VydmljZSB9IGZyb20gJ0B5ZWxvbi9jYWNoZSc7XG5pbXBvcnQgeyBfSHR0cENsaWVudCB9IGZyb20gJ0B5ZWxvbi90aGVtZSc7XG5pbXBvcnQgeyBXSU5ET1csIFl1bnphaUF1dGhDb25maWcsIFl1bnphaUJ1c2luZXNzQ29uZmlnIH0gZnJvbSAnQHllbG9uL3V0aWwnO1xuaW1wb3J0IHsgWXVuemFpQ29uZmlnU2VydmljZSB9IGZyb20gJ0B5ZWxvbi91dGlsL2NvbmZpZyc7XG5pbXBvcnQgeyBsb2cgfSBmcm9tICdAeWVsb24vdXRpbC9vdGhlcic7XG5cbmltcG9ydCB7IG1lcmdlQmlzQ29uZmlnIH0gZnJvbSAnLi9iaXMuY29uZmlnJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBZekF1dGhTZXJ2aWNlIHtcbiAgcHJvdGVjdGVkIG9wdGlvbjogWXVuemFpQXV0aENvbmZpZztcbiAgcHJvdGVjdGVkIGJpczogWXVuemFpQnVzaW5lc3NDb25maWc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICB0aGlzLm9wdGlvbiA9IG1lcmdlQXV0aENvbmZpZyh0aGlzLmNzcik7XG4gICAgdGhpcy5iaXMgPSBtZXJnZUJpc0NvbmZpZyh0aGlzLmNzcik7XG4gIH1cblxuICBwcml2YXRlIGdldCBjc3IoKTogWXVuemFpQ29uZmlnU2VydmljZSB7XG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuZ2V0KFl1bnphaUNvbmZpZ1NlcnZpY2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdG9rZW5TZXJ2aWNlKCk6IElUb2tlblNlcnZpY2Uge1xuICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChZQV9TRVJWSUNFX1RPS0VOKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGh0dHBDbGllbnQoKTogX0h0dHBDbGllbnQge1xuICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChfSHR0cENsaWVudCk7XG4gIH1cblxuICBwcml2YXRlIGdldCBjYWNoZVNlcnZpY2UoKTogQ2FjaGVTZXJ2aWNlIHtcbiAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoQ2FjaGVTZXJ2aWNlKTtcbiAgfVxuXG4gIGFza1Rva2VuKCk6IE9ic2VydmFibGU8SVRva2VuTW9kZWw+IHtcbiAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ2Fza1Rva2VuJyk7XG4gICAgaWYgKHRoaXMudG9rZW5TZXJ2aWNlLmdldCgpPy50b2tlbikge1xuICAgICAgcmV0dXJuIG9mKHRoaXMudG9rZW5TZXJ2aWNlLmdldCgpISk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmJpcy5sb2dpbkZvcm0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hUb2tlbkJ5VVAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZldGNoVG9rZW5CeUNhcygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZldGNoVG9rZW5CeVVQKCk6IE9ic2VydmFibGU8SVRva2VuTW9kZWw+IHtcbiAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ2ZldGNoVG9rZW5CeVVQJyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KGAvYXV0aC9vYXV0aC90b2tlbj9fYWxsb3dfYW5vbnltb3VzPXRydWVgLCB0aGlzLmJpcy5sb2dpbkZvcm0pLnBpcGUoXG4gICAgICBtYXAoKHJlc3BvbnNlOiBOelNhZmVBbnkpID0+IHtcbiAgICAgICAgY29uc3QgeyBhY2Nlc3NfdG9rZW4sIGV4cGlyZXNfaW4sIHJlZnJlc2hfdG9rZW4sIHNjb3BlLCB0b2tlbl90eXBlIH0gPSByZXNwb25zZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0b2tlbjogYWNjZXNzX3Rva2VuLFxuICAgICAgICAgIGV4cGlyZWQ6IGV4cGlyZXNfaW4sXG4gICAgICAgICAgcmVmcmVzaFRva2VuOiByZWZyZXNoX3Rva2VuLFxuICAgICAgICAgIHRva2VuVHlwZTogdG9rZW5fdHlwZSxcbiAgICAgICAgICBzY29wZVxuICAgICAgICB9O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZmV0Y2hUb2tlbkJ5Q2FzKCk6IE9ic2VydmFibGU8SVRva2VuTW9kZWw+IHtcbiAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ2ZldGNoVG9rZW5CeUNhcycpO1xuICAgIGNvbnN0IHVyaSA9IGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLmluamVjdG9yLmdldChXSU5ET1cpLmxvY2F0aW9uLmhyZWYpO1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcbiAgICAgIC5nZXQoYC9jYXMtcHJveHkvYXBwL3ZhbGlkYXRlX2Z1bGw/Y2FsbGJhY2s9JHt1cml9Jl9hbGxvd19hbm9ueW1vdXM9dHJ1ZSZ0aW1lc3RhbXA9JHtuZXcgRGF0ZSgpLmdldFRpbWUoKX1gKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IE56U2FmZUFueSkgPT4ge1xuICAgICAgICAgIHN3aXRjaCAocmVzcG9uc2UuZXJyY29kZSkge1xuICAgICAgICAgICAgY2FzZSAyMDAwOlxuICAgICAgICAgICAgICBjb25zdCB7IGFjY2Vzc190b2tlbiwgZXhwaXJlc19pbiwgcmVmcmVzaF90b2tlbiwgc2NvcGUsIHRva2VuX3R5cGUgfSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdG9rZW46IGFjY2Vzc190b2tlbixcbiAgICAgICAgICAgICAgICBleHBpcmVkOiBleHBpcmVzX2luLFxuICAgICAgICAgICAgICAgIHJlZnJlc2hUb2tlbjogcmVmcmVzaF90b2tlbixcbiAgICAgICAgICAgICAgICB0b2tlblR5cGU6IHRva2VuX3R5cGUsXG4gICAgICAgICAgICAgICAgc2NvcGVcbiAgICAgICAgICAgICAgfSBhcyBJVG9rZW5Nb2RlbDtcbiAgICAgICAgICAgIGNhc2UgMjAwMTpcbiAgICAgICAgICAgICAgdGhpcy5pbmplY3Rvci5nZXQoV0lORE9XKS5sb2NhdGlvbi5ocmVmID0gcmVzcG9uc2UubXNnO1xuICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIkNvb2tpZSBFcnJvcjogQ2FuJ3QgZmluZCBDYXMgQ29va2llLFNvIGp1bXAgdG8gbG9naW4hXCIpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLm1zZykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IocmVzcG9uc2UubXNnKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihyZXNwb25zZS5tc2cpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2NhcyB1bmtub3duIGVycm9yJyk7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1Vua25vd24gRXJyb3I6IENhcyBhdXRoIGV4Y2VwdGlvbiEnKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBsb2dpbigpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ2xvZ2luIHdoaXRlIGxvZ2luIGZvcm0tPicsIHRoaXMuYmlzLmxvZ2luRm9ybSk7XG4gICAgcmV0dXJuIHRoaXMuYXNrVG9rZW4oKS5waXBlKFxuICAgICAgbWVyZ2VNYXAodG9rZW4gPT4ge1xuICAgICAgICBsb2coJ3l6LmF1dGguc2VydmljZTogZ2V0IHRva2VuLT4nLCB0b2tlbik7XG4gICAgICAgIHRoaXMuY3NyLnNldCgnYXV0aCcsIHtcbiAgICAgICAgICB0b2tlbl9zZW5kX2tleTogJ0F1dGhvcml6YXRpb24nLFxuICAgICAgICAgIHRva2VuX3NlbmRfdGVtcGxhdGU6IGAke3Rva2VuLnRva2VuVHlwZX0gXFwke3Rva2VufWAsXG4gICAgICAgICAgdG9rZW5fc2VuZF9wbGFjZTogJ2hlYWRlcidcbiAgICAgICAgfSk7XG4gICAgICAgIGxvZygneXouYXV0aC5zZXJ2aWNlOiAnLCAnc2V0IHRva2VuJyk7XG4gICAgICAgIHRoaXMudG9rZW5TZXJ2aWNlLnNldCh0b2tlbik7XG4gICAgICAgIHJldHVybiB0aGlzLmNhY2hlSW5pdCgpO1xuICAgICAgfSksXG4gICAgICBtZXJnZUFsbCgpXG4gICAgKTtcbiAgfVxuXG4gIGNhY2hlSW5pdCgpOiBPYnNlcnZhYmxlPHZvaWRbXT4ge1xuICAgIGxvZygneXouYXV0aC5zZXJ2aWNlOiAnLCAnY2FjaGVJbml0Jyk7XG4gICAgY29uc3QgdXNlciA9IHRoaXMuY2FjaGVTZXJ2aWNlLmdldCgnX3l6X3VzZXInLCB7IG1vZGU6ICdub25lJyB9KTtcbiAgICBjb25zdCBoZWFkZXIgPSB0aGlzLmNhY2hlU2VydmljZS5nZXQoJ195el9oZWFkZXInLCB7IG1vZGU6ICdub25lJyB9KTtcbiAgICBjb25zdCBwcm9qZWN0ID0gdGhpcy5jYWNoZVNlcnZpY2UuZ2V0KCdfeXpfcHJvamVjdF9pbmZvJywgeyBtb2RlOiAnbm9uZScgfSk7XG4gICAgcmV0dXJuIGZvcmtKb2luKG9mKHVzZXIpLCBvZihoZWFkZXIpLCBvZihwcm9qZWN0KSkucGlwZShcbiAgICAgIG1lcmdlTWFwKChbdSwgaCwgcF0pID0+IHtcbiAgICAgICAgbGV0IGxpc3QgPSBbXTtcbiAgICAgICAgLy8gdXNlciBjYWNoZVxuICAgICAgICBpZiAoIXUpIHtcbiAgICAgICAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ2ZldGNoIHVzZXIgY2FjaGUnKTtcbiAgICAgICAgICBsaXN0LnB1c2goXG4gICAgICAgICAgICB0aGlzLmh0dHBDbGllbnQuZ2V0KGAvYXV0aC91c2VyYCkucGlwZShcbiAgICAgICAgICAgICAgbWFwKCh1c2VyOiBOelNhZmVBbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlU2VydmljZS5zZXQoJ195el91c2VyJywgdXNlci5wcmluY2lwYWwpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nKCd5ei5hdXRoLnNlcnZpY2U6ICcsICd1c2VyIHJlY2FjaGUnKTtcbiAgICAgICAgICBsaXN0LnB1c2gob2Y8TnpTYWZlQW55PigoKSA9PiB7fSkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGhlYWRlciBjYWNoZVxuICAgICAgICBpZiAoIWgpIHtcbiAgICAgICAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ2ZldGNoIGhlYWRlciBjYWNoZScpO1xuICAgICAgICAgIGxpc3QucHVzaChcbiAgICAgICAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoYC9hdXRoL2FsbGhlYWRlci92MmApLnBpcGUoXG4gICAgICAgICAgICAgIG1hcCgoaGVhZGVyOiBOelNhZmVBbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhY2hlU2VydmljZS5zZXQoJ195el9oZWFkZXInLCBoZWFkZXIuZGF0YSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ2hlYWRlciByZWNhY2hlJyk7XG4gICAgICAgICAgbGlzdC5wdXNoKG9mPE56U2FmZUFueT4oKCkgPT4ge30pKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBwcm9qZWN0IGNhY2hlXG4gICAgICAgIGlmICghcCkge1xuICAgICAgICAgIGxvZygneXouYXV0aC5zZXJ2aWNlOiAnLCAnZmV0Y2ggcHJvamVjdCBjYWNoZScpO1xuICAgICAgICAgIGxpc3QucHVzaChcbiAgICAgICAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoYC9hcHAtbWFuYWdlci9wcm9qZWN0L2luZm9gKS5waXBlKFxuICAgICAgICAgICAgICBtYXAoKGluZm86IE56U2FmZUFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlLnNldCgnX3l6X3Byb2plY3RfaW5mbycsIGluZm8uZGF0YSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ3Byb2plY3QgcmVjYWNoZScpO1xuICAgICAgICAgIGxpc3QucHVzaChvZjxOelNhZmVBbnk+KCgpID0+IHt9KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcmtKb2luKGxpc3QpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
|