@delon/theme 12.4.2 → 13.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/compact.css +1278 -750
- package/compact.min.css +1 -1
- package/dark.css +1325 -797
- package/dark.min.css +1 -1
- package/default.css +1286 -758
- package/default.min.css +1 -1
- package/{esm2015/layout-blank/layout-blank.js → esm2020/layout-blank/layout-blank.mjs} +0 -0
- package/{esm2015/layout-blank/public_api.js → esm2020/layout-blank/public_api.mjs} +0 -0
- package/{esm2015/layout-default/layout-default.js → esm2020/layout-default/layout-default.mjs} +0 -0
- package/esm2020/layout-default/layout-header-item-trigger.directive.mjs +16 -0
- package/esm2020/layout-default/layout-header-item.component.mjs +33 -0
- package/esm2020/layout-default/layout-header.component.mjs +123 -0
- package/esm2020/layout-default/layout-nav.component.mjs +307 -0
- package/esm2020/layout-default/layout.component.mjs +132 -0
- package/esm2020/layout-default/layout.module.mjs +69 -0
- package/{esm2015/layout-default/public_api.js → esm2020/layout-default/public_api.mjs} +0 -0
- package/{esm2015/layout-default/types.js → esm2020/layout-default/types.mjs} +0 -0
- package/esm2020/public_api.mjs +25 -0
- package/{esm2015/setting-drawer/public_api.js → esm2020/setting-drawer/public_api.mjs} +0 -0
- package/esm2020/setting-drawer/setting-drawer-item.component.mjs +35 -0
- package/esm2020/setting-drawer/setting-drawer.component.mjs +192 -0
- package/{esm2015/setting-drawer/setting-drawer.js → esm2020/setting-drawer/setting-drawer.mjs} +0 -0
- package/esm2020/setting-drawer/setting-drawer.module.mjs +68 -0
- package/{esm2015/setting-drawer/setting-drawer.types.js → esm2020/setting-drawer/setting-drawer.types.mjs} +0 -0
- package/{esm2015/src/config.js → esm2020/src/config.mjs} +0 -0
- package/{esm2015/src/locale/index.js → esm2020/src/locale/index.mjs} +0 -0
- package/{esm2015/src/locale/languages/el-GR.js → esm2020/src/locale/languages/el-GR.mjs} +0 -0
- package/{esm2015/src/locale/languages/en-US.js → esm2020/src/locale/languages/en-US.mjs} +0 -0
- package/{esm2015/src/locale/languages/es-ES.js → esm2020/src/locale/languages/es-ES.mjs} +0 -0
- package/{esm2015/src/locale/languages/fr-FR.js → esm2020/src/locale/languages/fr-FR.mjs} +0 -0
- package/{esm2015/src/locale/languages/hr-HR.js → esm2020/src/locale/languages/hr-HR.mjs} +0 -0
- package/{esm2015/src/locale/languages/it-IT.js → esm2020/src/locale/languages/it-IT.mjs} +0 -0
- package/{esm2015/src/locale/languages/ja-JP.js → esm2020/src/locale/languages/ja-JP.mjs} +0 -0
- package/{esm2015/src/locale/languages/ko-KR.js → esm2020/src/locale/languages/ko-KR.mjs} +0 -0
- package/{esm2015/src/locale/languages/pl-PL.js → esm2020/src/locale/languages/pl-PL.mjs} +0 -0
- package/{esm2015/src/locale/languages/sl-SI.js → esm2020/src/locale/languages/sl-SI.mjs} +0 -0
- package/{esm2015/src/locale/languages/tr-TR.js → esm2020/src/locale/languages/tr-TR.mjs} +0 -0
- package/{esm2015/src/locale/languages/zh-CN.js → esm2020/src/locale/languages/zh-CN.mjs} +0 -0
- package/{esm2015/src/locale/languages/zh-TW.js → esm2020/src/locale/languages/zh-TW.mjs} +0 -0
- package/esm2020/src/locale/locale.module.mjs +17 -0
- package/esm2020/src/locale/locale.service.mjs +45 -0
- package/{esm2015/src/locale/locale.tokens.js → esm2020/src/locale/locale.tokens.mjs} +0 -0
- package/{esm2015/src/locale/locale.types.js → esm2020/src/locale/locale.types.mjs} +0 -0
- package/{esm2015/src/locale/public_api.js → esm2020/src/locale/public_api.mjs} +0 -0
- package/esm2020/src/pipes/date/date.pipe.mjs +24 -0
- package/esm2020/src/pipes/keys/keys.pipe.mjs +21 -0
- package/esm2020/src/pipes/safe/html.pipe.mjs +18 -0
- package/esm2020/src/pipes/safe/url.pipe.mjs +18 -0
- package/esm2020/src/pipes/yn/yn.pipe.mjs +38 -0
- package/esm2020/src/router/optional-preloader.mjs +22 -0
- package/esm2020/src/services/drawer/drawer.helper.mjs +91 -0
- package/esm2020/src/services/http/http.client.mjs +154 -0
- package/esm2020/src/services/http/http.decorator.mjs +215 -0
- package/esm2020/src/services/i18n/i18n.mjs +97 -0
- package/esm2020/src/services/i18n/i18n.pipe.mjs +21 -0
- package/{esm2015/src/services/menu/interface.js → esm2020/src/services/menu/interface.mjs} +0 -0
- package/esm2020/src/services/menu/menu.service.mjs +252 -0
- package/esm2020/src/services/modal/modal.helper.mjs +106 -0
- package/{esm2015/src/services/preloader/preloader.js → esm2020/src/services/preloader/preloader.mjs} +0 -0
- package/esm2020/src/services/responsive/responsive.mjs +46 -0
- package/esm2020/src/services/rtl/rtl.service.mjs +101 -0
- package/esm2020/src/services/settings/settings.service.mjs +100 -0
- package/{esm2015/src/services/settings/types.js → esm2020/src/services/settings/types.mjs} +0 -0
- package/esm2020/src/services/title/title.service.mjs +124 -0
- package/esm2020/src/theme.module.mjs +76 -0
- package/{esm2015/src/version.js → esm2020/src/version.mjs} +1 -1
- package/{esm2015/theme-btn/public_api.js → esm2020/theme-btn/public_api.mjs} +0 -0
- package/esm2020/theme-btn/theme-btn.component.mjs +106 -0
- package/esm2020/theme-btn/theme-btn.mjs +5 -0
- package/esm2020/theme-btn/theme-btn.module.mjs +32 -0
- package/esm2020/theme.mjs +5 -0
- package/fesm2015/{layout-blank.js → layout-blank.mjs} +1 -1
- package/fesm2015/layout-blank.mjs.map +1 -0
- package/fesm2015/layout-default.mjs +654 -0
- package/fesm2015/layout-default.mjs.map +1 -0
- package/fesm2015/setting-drawer.mjs +487 -0
- package/fesm2015/setting-drawer.mjs.map +1 -0
- package/fesm2015/theme-btn.mjs +144 -0
- package/fesm2015/theme-btn.mjs.map +1 -0
- package/fesm2015/{theme.js → theme.mjs} +226 -188
- package/fesm2015/theme.mjs.map +1 -0
- package/fesm2020/layout-blank.mjs +7 -0
- package/fesm2020/layout-blank.mjs.map +1 -0
- package/fesm2020/layout-default.mjs +654 -0
- package/fesm2020/layout-default.mjs.map +1 -0
- package/fesm2020/setting-drawer.mjs +482 -0
- package/fesm2020/setting-drawer.mjs.map +1 -0
- package/fesm2020/theme-btn.mjs +141 -0
- package/fesm2020/theme-btn.mjs.map +1 -0
- package/fesm2020/theme.mjs +2575 -0
- package/fesm2020/theme.mjs.map +1 -0
- package/layout-blank/layout-blank.d.ts +1 -0
- package/layout-blank/package.json +5 -6
- package/layout-default/layout-default.d.ts +1 -0
- package/layout-default/layout-header-item-trigger.directive.d.ts +3 -0
- package/layout-default/layout-header-item.component.d.ts +3 -0
- package/layout-default/layout-header.component.d.ts +8 -5
- package/layout-default/layout-nav.component.d.ts +4 -1
- package/layout-default/layout.component.d.ts +6 -3
- package/layout-default/layout.module.d.ts +17 -0
- package/layout-default/package.json +5 -6
- package/layout-default/style/_aside.less +7 -10
- package/layout-default/style/_fixed.less +2 -0
- package/layout-default/style/_header.less +21 -0
- package/layout-default/style/_layout.less +7 -0
- package/layout-default/style/_progress-bar.less +6 -0
- package/layout-default/style/fix/_full-content.less +4 -0
- package/layout-default/style/widgets/_app-icons.less +3 -0
- package/layout-default/style/widgets/_user.less +5 -0
- package/package.json +55 -11
- package/public_api.d.ts +1 -0
- package/setting-drawer/package.json +5 -6
- package/setting-drawer/setting-drawer-item.component.d.ts +3 -0
- package/setting-drawer/setting-drawer.component.d.ts +3 -0
- package/setting-drawer/setting-drawer.d.ts +1 -0
- package/setting-drawer/setting-drawer.module.d.ts +18 -0
- package/setting-drawer/style/index.less +9 -0
- package/setting-drawer/style/rtl.less +1 -0
- package/src/locale/locale.module.d.ts +4 -0
- package/src/locale/locale.service.d.ts +3 -0
- package/src/pipes/date/date.pipe.d.ts +3 -0
- package/src/pipes/keys/keys.pipe.d.ts +3 -0
- package/src/pipes/safe/html.pipe.d.ts +3 -0
- package/src/pipes/safe/url.pipe.d.ts +3 -0
- package/src/pipes/yn/style/index.less +3 -0
- package/src/pipes/yn/yn.pipe.d.ts +3 -0
- package/src/services/drawer/drawer.helper.d.ts +3 -0
- package/src/services/http/http.client.d.ts +3 -0
- package/src/services/http/http.decorator.d.ts +3 -0
- package/src/services/i18n/i18n.d.ts +5 -0
- package/src/services/i18n/i18n.pipe.d.ts +3 -0
- package/src/services/menu/menu.service.d.ts +5 -0
- package/src/services/modal/modal.helper.d.ts +3 -0
- package/src/services/responsive/responsive.d.ts +3 -0
- package/src/services/rtl/rtl.service.d.ts +3 -0
- package/src/services/settings/settings.service.d.ts +9 -0
- package/src/services/title/title.service.d.ts +3 -0
- package/src/theme.module.d.ts +15 -0
- package/system/_preloader.less +10 -0
- package/system/_type.less +5 -0
- package/system/antd/_modal.less +5 -0
- package/system/antd/_table.less +7 -0
- package/system/index.less +3 -3
- package/system/mixins/_freak.less +2 -2
- package/system/mixins/_text-truncate.less +2 -0
- package/system/ng/_form.less +1 -0
- package/system/theme-default.less +3 -1
- package/system/utils/_display.less +9 -0
- package/system/utils/_other.less +2 -0
- package/system/utils/_scrollbar.less +3 -0
- package/system/widgets/_abs.less +3 -0
- package/system/widgets/_half-float.less +2 -0
- package/system/widgets/_masonry-grid.less +2 -0
- package/theme-btn/package.json +6 -7
- package/theme-btn/style/index.less +1 -0
- package/theme-btn/theme-btn.component.d.ts +3 -0
- package/theme-btn/{layout-theme-btn.d.ts → theme-btn.d.ts} +1 -0
- package/theme-btn/theme-btn.module.d.ts +8 -0
- package/theme-compact.less +1 -1
- package/theme-dark.less +1 -1
- package/theme-default.less +1 -1
- package/theme.d.ts +1 -1
- package/bundles/layout-blank.umd.js +0 -19
- package/bundles/layout-blank.umd.js.map +0 -1
- package/bundles/layout-default.umd.js +0 -876
- package/bundles/layout-default.umd.js.map +0 -1
- package/bundles/layout-theme-btn.umd.js +0 -141
- package/bundles/layout-theme-btn.umd.js.map +0 -1
- package/bundles/setting-drawer.umd.js +0 -789
- package/bundles/setting-drawer.umd.js.map +0 -1
- package/bundles/theme.umd.js +0 -3075
- package/bundles/theme.umd.js.map +0 -1
- package/esm2015/layout-default/layout-header-item-trigger.directive.js +0 -12
- package/esm2015/layout-default/layout-header-item.component.js +0 -23
- package/esm2015/layout-default/layout-header.component.js +0 -94
- package/esm2015/layout-default/layout-nav.component.js +0 -306
- package/esm2015/layout-default/layout.component.js +0 -102
- package/esm2015/layout-default/layout.module.js +0 -40
- package/esm2015/public_api.js +0 -24
- package/esm2015/setting-drawer/setting-drawer-item.component.js +0 -30
- package/esm2015/setting-drawer/setting-drawer.component.js +0 -185
- package/esm2015/setting-drawer/setting-drawer.module.js +0 -39
- package/esm2015/src/locale/locale.module.js +0 -14
- package/esm2015/src/locale/locale.service.js +0 -42
- package/esm2015/src/pipes/date/date.pipe.js +0 -23
- package/esm2015/src/pipes/keys/keys.pipe.js +0 -17
- package/esm2015/src/pipes/safe/html.pipe.js +0 -17
- package/esm2015/src/pipes/safe/url.pipe.js +0 -17
- package/esm2015/src/pipes/yn/yn.pipe.js +0 -37
- package/esm2015/src/router/optional-preloader.js +0 -23
- package/esm2015/src/services/drawer/drawer.helper.js +0 -90
- package/esm2015/src/services/http/http.client.js +0 -138
- package/esm2015/src/services/http/http.decorator.js +0 -207
- package/esm2015/src/services/i18n/i18n.js +0 -96
- package/esm2015/src/services/i18n/i18n.pipe.js +0 -17
- package/esm2015/src/services/menu/menu.service.js +0 -252
- package/esm2015/src/services/modal/modal.helper.js +0 -105
- package/esm2015/src/services/responsive/responsive.js +0 -48
- package/esm2015/src/services/rtl/rtl.service.js +0 -110
- package/esm2015/src/services/settings/settings.service.js +0 -82
- package/esm2015/src/services/title/title.service.js +0 -125
- package/esm2015/src/theme.module.js +0 -67
- package/esm2015/theme-btn/layout-theme-btn.js +0 -5
- package/esm2015/theme-btn/theme-btn.component.js +0 -103
- package/esm2015/theme-btn/theme-btn.module.js +0 -22
- package/esm2015/theme.js +0 -6
- package/fesm2015/layout-blank.js.map +0 -1
- package/fesm2015/layout-default.js +0 -561
- package/fesm2015/layout-default.js.map +0 -1
- package/fesm2015/layout-theme-btn.js +0 -129
- package/fesm2015/layout-theme-btn.js.map +0 -1
- package/fesm2015/setting-drawer.js +0 -448
- package/fesm2015/setting-drawer.js.map +0 -1
- package/fesm2015/theme.js.map +0 -1
- package/layout-blank/layout-blank.metadata.json +0 -1
- package/layout-default/layout-default.metadata.json +0 -1
- package/setting-drawer/setting-drawer.metadata.json +0 -1
- package/theme-btn/layout-theme-btn.metadata.json +0 -1
- package/theme.metadata.json +0 -1
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import { Inject, Injectable, Optional } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import { share } from 'rxjs/operators';
|
|
4
|
+
import { ALAIN_I18N_TOKEN } from '../i18n/i18n';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@delon/acl";
|
|
7
|
+
/**
|
|
8
|
+
* 菜单服务,[在线文档](https://ng-alain.com/theme/menu)
|
|
9
|
+
*/
|
|
10
|
+
export class MenuService {
|
|
11
|
+
constructor(i18nSrv, aclService) {
|
|
12
|
+
this.i18nSrv = i18nSrv;
|
|
13
|
+
this.aclService = aclService;
|
|
14
|
+
this._change$ = new BehaviorSubject([]);
|
|
15
|
+
this.data = [];
|
|
16
|
+
this.i18n$ = this.i18nSrv.change.subscribe(() => this.resume());
|
|
17
|
+
}
|
|
18
|
+
get change() {
|
|
19
|
+
return this._change$.pipe(share());
|
|
20
|
+
}
|
|
21
|
+
visit(data, callback) {
|
|
22
|
+
const inFn = (list, parentMenu, depth) => {
|
|
23
|
+
for (const item of list) {
|
|
24
|
+
callback(item, parentMenu, depth);
|
|
25
|
+
if (item.children && item.children.length > 0) {
|
|
26
|
+
inFn(item.children, item, depth + 1);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
item.children = [];
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
inFn(data, null, 0);
|
|
34
|
+
}
|
|
35
|
+
add(items) {
|
|
36
|
+
this.data = items;
|
|
37
|
+
this.resume();
|
|
38
|
+
}
|
|
39
|
+
fixItem(item) {
|
|
40
|
+
item._aclResult = true;
|
|
41
|
+
if (!item.link)
|
|
42
|
+
item.link = '';
|
|
43
|
+
if (!item.externalLink)
|
|
44
|
+
item.externalLink = '';
|
|
45
|
+
// badge
|
|
46
|
+
if (item.badge) {
|
|
47
|
+
if (item.badgeDot !== true) {
|
|
48
|
+
item.badgeDot = false;
|
|
49
|
+
}
|
|
50
|
+
if (!item.badgeStatus) {
|
|
51
|
+
item.badgeStatus = 'error';
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (!Array.isArray(item.children)) {
|
|
55
|
+
item.children = [];
|
|
56
|
+
}
|
|
57
|
+
// icon
|
|
58
|
+
if (typeof item.icon === 'string') {
|
|
59
|
+
let type = 'class';
|
|
60
|
+
let value = item.icon;
|
|
61
|
+
// compatible `anticon anticon-user`
|
|
62
|
+
if (~item.icon.indexOf(`anticon-`)) {
|
|
63
|
+
type = 'icon';
|
|
64
|
+
value = value.split('-').slice(1).join('-');
|
|
65
|
+
}
|
|
66
|
+
else if (/^https?:\/\//.test(item.icon)) {
|
|
67
|
+
type = 'img';
|
|
68
|
+
}
|
|
69
|
+
item.icon = { type, value };
|
|
70
|
+
}
|
|
71
|
+
if (item.icon != null) {
|
|
72
|
+
item.icon = { theme: 'outline', spin: false, ...item.icon };
|
|
73
|
+
}
|
|
74
|
+
item.text = item.i18n && this.i18nSrv ? this.i18nSrv.fanyi(item.i18n) : item.text;
|
|
75
|
+
// group
|
|
76
|
+
item.group = item.group !== false;
|
|
77
|
+
// hidden
|
|
78
|
+
item._hidden = typeof item.hide === 'undefined' ? false : item.hide;
|
|
79
|
+
// disabled
|
|
80
|
+
item.disabled = typeof item.disabled === 'undefined' ? false : item.disabled;
|
|
81
|
+
// acl
|
|
82
|
+
item._aclResult = item.acl && this.aclService ? this.aclService.can(item.acl) : true;
|
|
83
|
+
}
|
|
84
|
+
resume(callback) {
|
|
85
|
+
let i = 1;
|
|
86
|
+
const shortcuts = [];
|
|
87
|
+
this.visit(this.data, (item, parent, depth) => {
|
|
88
|
+
item._id = i++;
|
|
89
|
+
item._parent = parent;
|
|
90
|
+
item._depth = depth;
|
|
91
|
+
this.fixItem(item);
|
|
92
|
+
// shortcut
|
|
93
|
+
if (parent && item.shortcut === true && parent.shortcutRoot !== true) {
|
|
94
|
+
shortcuts.push(item);
|
|
95
|
+
}
|
|
96
|
+
if (callback)
|
|
97
|
+
callback(item, parent, depth);
|
|
98
|
+
});
|
|
99
|
+
this.loadShortcut(shortcuts);
|
|
100
|
+
this._change$.next(this.data);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* 加载快捷菜单,加载位置规则如下:
|
|
104
|
+
* 1、统一在下标0的节点下(即【主导航】节点下方)
|
|
105
|
+
* 1、若 children 存在 【shortcutRoot: true】则最优先【推荐】这种方式
|
|
106
|
+
* 2、否则查找带有【dashboard】字样链接,若存在则在此菜单的下方创建快捷入口
|
|
107
|
+
* 3、否则放在0节点位置
|
|
108
|
+
*/
|
|
109
|
+
loadShortcut(shortcuts) {
|
|
110
|
+
if (shortcuts.length === 0 || this.data.length === 0) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const ls = this.data[0].children;
|
|
114
|
+
let pos = ls.findIndex(w => w.shortcutRoot === true);
|
|
115
|
+
if (pos === -1) {
|
|
116
|
+
pos = ls.findIndex(w => w.link.includes('dashboard'));
|
|
117
|
+
pos = (pos !== -1 ? pos : -1) + 1;
|
|
118
|
+
const shortcutMenu = {
|
|
119
|
+
text: '快捷菜单',
|
|
120
|
+
i18n: 'shortcut',
|
|
121
|
+
icon: 'icon-rocket',
|
|
122
|
+
children: []
|
|
123
|
+
};
|
|
124
|
+
this.data[0].children.splice(pos, 0, shortcutMenu);
|
|
125
|
+
}
|
|
126
|
+
let _data = this.data[0].children[pos];
|
|
127
|
+
if (_data.i18n && this.i18nSrv)
|
|
128
|
+
_data.text = this.i18nSrv.fanyi(_data.i18n);
|
|
129
|
+
_data = Object.assign(_data, {
|
|
130
|
+
shortcutRoot: true,
|
|
131
|
+
_id: -1,
|
|
132
|
+
_parent: null,
|
|
133
|
+
_depth: 1
|
|
134
|
+
});
|
|
135
|
+
_data.children = shortcuts.map(i => {
|
|
136
|
+
i._depth = 2;
|
|
137
|
+
i._parent = _data;
|
|
138
|
+
return i;
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
get menus() {
|
|
142
|
+
return this.data;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* 清空菜单
|
|
146
|
+
*/
|
|
147
|
+
clear() {
|
|
148
|
+
this.data = [];
|
|
149
|
+
this._change$.next(this.data);
|
|
150
|
+
}
|
|
151
|
+
getHit(data, url, recursive = false, cb = null) {
|
|
152
|
+
let item = null;
|
|
153
|
+
while (!item && url) {
|
|
154
|
+
this.visit(data, i => {
|
|
155
|
+
if (cb) {
|
|
156
|
+
cb(i);
|
|
157
|
+
}
|
|
158
|
+
if (i.link != null && i.link === url) {
|
|
159
|
+
item = i;
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
if (!recursive)
|
|
163
|
+
break;
|
|
164
|
+
if (/[?;]/g.test(url)) {
|
|
165
|
+
url = url.split(/[?;]/g)[0];
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
url = url.split('/').slice(0, -1).join('/');
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return item;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* 根据URL设置菜单 `_open` 属性
|
|
175
|
+
* - 若 `recursive: true` 则会自动向上递归查找
|
|
176
|
+
* - 菜单数据源包含 `/ware`,则 `/ware/1` 也视为 `/ware` 项
|
|
177
|
+
*/
|
|
178
|
+
openedByUrl(url, recursive = false) {
|
|
179
|
+
if (!url)
|
|
180
|
+
return;
|
|
181
|
+
let findItem = this.getHit(this.data, url, recursive, (i) => {
|
|
182
|
+
i._selected = false;
|
|
183
|
+
i._open = false;
|
|
184
|
+
});
|
|
185
|
+
if (findItem == null)
|
|
186
|
+
return;
|
|
187
|
+
do {
|
|
188
|
+
findItem._selected = true;
|
|
189
|
+
findItem._open = true;
|
|
190
|
+
findItem = findItem._parent;
|
|
191
|
+
} while (findItem);
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* 根据url获取菜单列表
|
|
195
|
+
* - 若 `recursive: true` 则会自动向上递归查找
|
|
196
|
+
* - 菜单数据源包含 `/ware`,则 `/ware/1` 也视为 `/ware` 项
|
|
197
|
+
*/
|
|
198
|
+
getPathByUrl(url, recursive = false) {
|
|
199
|
+
const ret = [];
|
|
200
|
+
let item = this.getHit(this.data, url, recursive);
|
|
201
|
+
if (!item)
|
|
202
|
+
return ret;
|
|
203
|
+
do {
|
|
204
|
+
ret.splice(0, 0, item);
|
|
205
|
+
item = item._parent;
|
|
206
|
+
} while (item);
|
|
207
|
+
return ret;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Get menu based on `key`
|
|
211
|
+
*/
|
|
212
|
+
getItem(key) {
|
|
213
|
+
let res = null;
|
|
214
|
+
this.visit(this.data, item => {
|
|
215
|
+
if (res == null && item.key === key) {
|
|
216
|
+
res = item;
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
return res;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Set menu based on `key`
|
|
223
|
+
*/
|
|
224
|
+
setItem(key, value) {
|
|
225
|
+
const item = this.getItem(key);
|
|
226
|
+
if (item == null)
|
|
227
|
+
return;
|
|
228
|
+
Object.keys(value).forEach(k => {
|
|
229
|
+
item[k] = value[k];
|
|
230
|
+
});
|
|
231
|
+
this.fixItem(item);
|
|
232
|
+
this._change$.next(this.data);
|
|
233
|
+
}
|
|
234
|
+
ngOnDestroy() {
|
|
235
|
+
this._change$.unsubscribe();
|
|
236
|
+
this.i18n$.unsubscribe();
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
MenuService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: MenuService, deps: [{ token: ALAIN_I18N_TOKEN, optional: true }, { token: i1.ACLService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
240
|
+
MenuService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: MenuService, providedIn: 'root' });
|
|
241
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: MenuService, decorators: [{
|
|
242
|
+
type: Injectable,
|
|
243
|
+
args: [{ providedIn: 'root' }]
|
|
244
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
245
|
+
type: Optional
|
|
246
|
+
}, {
|
|
247
|
+
type: Inject,
|
|
248
|
+
args: [ALAIN_I18N_TOKEN]
|
|
249
|
+
}] }, { type: i1.ACLService, decorators: [{
|
|
250
|
+
type: Optional
|
|
251
|
+
}] }]; } });
|
|
252
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUvc3JjL3NlcnZpY2VzL21lbnUvbWVudS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLdkMsT0FBTyxFQUFvQixnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7O0FBR2xFOztHQUVHO0FBRUgsTUFBTSxPQUFPLFdBQVc7SUFNdEIsWUFHVSxPQUF5QixFQUNiLFVBQXNCO1FBRGxDLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBQ2IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVRwQyxhQUFRLEdBQTRCLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBR3BFLFNBQUksR0FBVyxFQUFFLENBQUM7UUFReEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBSUQsS0FBSyxDQUFDLElBQVksRUFBRSxRQUF3RTtRQUMxRixNQUFNLElBQUksR0FBRyxDQUFDLElBQVksRUFBRSxVQUF1QixFQUFFLEtBQWEsRUFBUSxFQUFFO1lBQzFFLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxFQUFFO2dCQUN2QixRQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDbEMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztpQkFDdEM7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7aUJBQ3BCO2FBQ0Y7UUFDSCxDQUFDLENBQUM7UUFFRixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsR0FBRyxDQUFDLEtBQWE7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNsQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVPLE9BQU8sQ0FBQyxJQUFlO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBRXZCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUFFLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBRS9DLFFBQVE7UUFDUixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFO2dCQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQzthQUN2QjtZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQzthQUM1QjtTQUNGO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1NBQ3BCO1FBRUQsT0FBTztRQUNQLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUNqQyxJQUFJLElBQUksR0FBRyxPQUFPLENBQUM7WUFDbkIsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUN0QixvQ0FBb0M7WUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUNsQyxJQUFJLEdBQUcsTUFBTSxDQUFDO2dCQUNkLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDN0M7aUJBQU0sSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDekMsSUFBSSxHQUFHLEtBQUssQ0FBQzthQUNkO1lBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQWUsQ0FBQztTQUMxQztRQUNELElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUU7WUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFJLElBQUksQ0FBQyxJQUFpQixFQUFFLENBQUM7U0FDM0U7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBRWxGLFFBQVE7UUFDUixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDO1FBRWxDLFNBQVM7UUFDVCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUVwRSxXQUFXO1FBQ1gsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFFN0UsTUFBTTtRQUNOLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN2RixDQUFDO0lBT0QsTUFBTSxDQUFDLFFBQXlFO1FBQzlFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNWLE1BQU0sU0FBUyxHQUFXLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFlLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3ZELElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztZQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRW5CLFdBQVc7WUFDWCxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsWUFBWSxLQUFLLElBQUksRUFBRTtnQkFDcEUsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN0QjtZQUVELElBQUksUUFBUTtnQkFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxZQUFZLENBQUMsU0FBc0I7UUFDekMsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDcEQsT0FBTztTQUNSO1FBRUQsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUF1QixDQUFDO1FBQ2hELElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ3JELElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ2QsR0FBRyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ3ZELEdBQUcsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsQyxNQUFNLFlBQVksR0FBRztnQkFDbkIsSUFBSSxFQUFFLE1BQU07Z0JBQ1osSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLElBQUksRUFBRSxhQUFhO2dCQUNuQixRQUFRLEVBQUUsRUFBRTthQUNBLENBQUM7WUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztTQUNyRDtRQUNELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTztZQUFFLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVFLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtZQUMzQixZQUFZLEVBQUUsSUFBSTtZQUNsQixHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ1AsT0FBTyxFQUFFLElBQUk7WUFDYixNQUFNLEVBQUUsQ0FBQztTQUNHLENBQUMsQ0FBQztRQUNoQixLQUFLLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDakMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDYixDQUFDLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNsQixPQUFPLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0gsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFZLEVBQUUsR0FBVyxFQUFFLFlBQXFCLEtBQUssRUFBRSxLQUFpQyxJQUFJO1FBQ2pHLElBQUksSUFBSSxHQUFnQixJQUFJLENBQUM7UUFFN0IsT0FBTyxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUU7WUFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUU7Z0JBQ25CLElBQUksRUFBRSxFQUFFO29CQUNOLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDUDtnQkFDRCxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFO29CQUNwQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO2lCQUNWO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsU0FBUztnQkFBRSxNQUFNO1lBRXRCLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDckIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDN0I7aUJBQU07Z0JBQ0wsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUM3QztTQUNGO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxHQUFrQixFQUFFLFlBQXFCLEtBQUs7UUFDeEQsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPO1FBRWpCLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBWSxFQUFFLEVBQUU7WUFDckUsQ0FBQyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDcEIsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbEIsQ0FBQyxDQUFjLENBQUM7UUFDaEIsSUFBSSxRQUFRLElBQUksSUFBSTtZQUFFLE9BQU87UUFFN0IsR0FBRztZQUNELFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQzFCLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBUSxDQUFDO1NBQzlCLFFBQVEsUUFBUSxFQUFFO0lBQ3JCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWSxDQUFDLEdBQVcsRUFBRSxZQUFxQixLQUFLO1FBQ2xELE1BQU0sR0FBRyxHQUFXLEVBQUUsQ0FBQztRQUN2QixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLFNBQVMsQ0FBYyxDQUFDO1FBRS9ELElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxHQUFHLENBQUM7UUFFdEIsR0FBRztZQUNELEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN2QixJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQVEsQ0FBQztTQUN0QixRQUFRLElBQUksRUFBRTtRQUVmLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTyxDQUFDLEdBQVc7UUFDakIsSUFBSSxHQUFHLEdBQWdCLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDM0IsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssR0FBRyxFQUFFO2dCQUNuQyxHQUFHLEdBQUcsSUFBSSxDQUFDO2FBQ1o7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTyxDQUFDLEdBQVcsRUFBRSxLQUFXO1FBQzlCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsSUFBSSxJQUFJLElBQUksSUFBSTtZQUFFLE9BQU87UUFFekIsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzNCLENBQUM7O3dHQTNRVSxXQUFXLGtCQVFaLGdCQUFnQjs0R0FSZixXQUFXLGNBREUsTUFBTTsyRkFDbkIsV0FBVztrQkFEdkIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQVE3QixRQUFROzswQkFDUixNQUFNOzJCQUFDLGdCQUFnQjs7MEJBRXZCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzaGFyZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQUNMU2VydmljZSB9IGZyb20gJ0BkZWxvbi9hY2wnO1xuaW1wb3J0IHR5cGUgeyBOelNhZmVBbnkgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdHlwZXMnO1xuXG5pbXBvcnQgeyBBbGFpbkkxOE5TZXJ2aWNlLCBBTEFJTl9JMThOX1RPS0VOIH0gZnJvbSAnLi4vaTE4bi9pMThuJztcbmltcG9ydCB7IE1lbnUsIE1lbnVJY29uLCBNZW51SW5uZXIgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5cbi8qKlxuICog6I+c5Y2V5pyN5Yqh77yMW+WcqOe6v+aWh+aho10oaHR0cHM6Ly9uZy1hbGFpbi5jb20vdGhlbWUvbWVudSlcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBNZW51U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX2NoYW5nZSQ6IEJlaGF2aW9yU3ViamVjdDxNZW51W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZW51W10+KFtdKTtcbiAgcHJpdmF0ZSBpMThuJDogU3Vic2NyaXB0aW9uO1xuXG4gIHByaXZhdGUgZGF0YTogTWVudVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KEFMQUlOX0kxOE5fVE9LRU4pXG4gICAgcHJpdmF0ZSBpMThuU3J2OiBBbGFpbkkxOE5TZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgYWNsU2VydmljZTogQUNMU2VydmljZVxuICApIHtcbiAgICB0aGlzLmkxOG4kID0gdGhpcy5pMThuU3J2LmNoYW5nZS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZXN1bWUoKSk7XG4gIH1cblxuICBnZXQgY2hhbmdlKCk6IE9ic2VydmFibGU8TWVudVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2NoYW5nZSQucGlwZShzaGFyZSgpKTtcbiAgfVxuXG4gIHZpc2l0PFQgZXh0ZW5kcyBNZW51ID0gTWVudT4oZGF0YTogVFtdLCBjYWxsYmFjazogKGl0ZW06IFQsIHBhcmVudE1lbnVtOiBUIHwgbnVsbCwgZGVwdGg/OiBudW1iZXIpID0+IHZvaWQpOiB2b2lkO1xuICB2aXNpdChkYXRhOiBNZW51W10sIGNhbGxiYWNrOiAoaXRlbTogTWVudSwgcGFyZW50TWVudW06IE1lbnUgfCBudWxsLCBkZXB0aD86IG51bWJlcikgPT4gdm9pZCk6IHZvaWQ7XG4gIHZpc2l0KGRhdGE6IE1lbnVbXSwgY2FsbGJhY2s6IChpdGVtOiBNZW51LCBwYXJlbnRNZW51bTogTWVudSB8IG51bGwsIGRlcHRoPzogbnVtYmVyKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgY29uc3QgaW5GbiA9IChsaXN0OiBNZW51W10sIHBhcmVudE1lbnU6IE1lbnUgfCBudWxsLCBkZXB0aDogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgbGlzdCkge1xuICAgICAgICBjYWxsYmFjayhpdGVtLCBwYXJlbnRNZW51LCBkZXB0aCk7XG4gICAgICAgIGlmIChpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGluRm4oaXRlbS5jaGlsZHJlbiwgaXRlbSwgZGVwdGggKyAxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtLmNoaWxkcmVuID0gW107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaW5GbihkYXRhLCBudWxsLCAwKTtcbiAgfVxuXG4gIGFkZChpdGVtczogTWVudVtdKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhID0gaXRlbXM7XG4gICAgdGhpcy5yZXN1bWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZml4SXRlbShpdGVtOiBNZW51SW5uZXIpOiB2b2lkIHtcbiAgICBpdGVtLl9hY2xSZXN1bHQgPSB0cnVlO1xuXG4gICAgaWYgKCFpdGVtLmxpbmspIGl0ZW0ubGluayA9ICcnO1xuICAgIGlmICghaXRlbS5leHRlcm5hbExpbmspIGl0ZW0uZXh0ZXJuYWxMaW5rID0gJyc7XG5cbiAgICAvLyBiYWRnZVxuICAgIGlmIChpdGVtLmJhZGdlKSB7XG4gICAgICBpZiAoaXRlbS5iYWRnZURvdCAhPT0gdHJ1ZSkge1xuICAgICAgICBpdGVtLmJhZGdlRG90ID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoIWl0ZW0uYmFkZ2VTdGF0dXMpIHtcbiAgICAgICAgaXRlbS5iYWRnZVN0YXR1cyA9ICdlcnJvcic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGl0ZW0uY2hpbGRyZW4pKSB7XG4gICAgICBpdGVtLmNoaWxkcmVuID0gW107XG4gICAgfVxuXG4gICAgLy8gaWNvblxuICAgIGlmICh0eXBlb2YgaXRlbS5pY29uID09PSAnc3RyaW5nJykge1xuICAgICAgbGV0IHR5cGUgPSAnY2xhc3MnO1xuICAgICAgbGV0IHZhbHVlID0gaXRlbS5pY29uO1xuICAgICAgLy8gY29tcGF0aWJsZSBgYW50aWNvbiBhbnRpY29uLXVzZXJgXG4gICAgICBpZiAofml0ZW0uaWNvbi5pbmRleE9mKGBhbnRpY29uLWApKSB7XG4gICAgICAgIHR5cGUgPSAnaWNvbic7XG4gICAgICAgIHZhbHVlID0gdmFsdWUuc3BsaXQoJy0nKS5zbGljZSgxKS5qb2luKCctJyk7XG4gICAgICB9IGVsc2UgaWYgKC9eaHR0cHM/OlxcL1xcLy8udGVzdChpdGVtLmljb24pKSB7XG4gICAgICAgIHR5cGUgPSAnaW1nJztcbiAgICAgIH1cbiAgICAgIGl0ZW0uaWNvbiA9IHsgdHlwZSwgdmFsdWUgfSBhcyBOelNhZmVBbnk7XG4gICAgfVxuICAgIGlmIChpdGVtLmljb24gIT0gbnVsbCkge1xuICAgICAgaXRlbS5pY29uID0geyB0aGVtZTogJ291dGxpbmUnLCBzcGluOiBmYWxzZSwgLi4uKGl0ZW0uaWNvbiBhcyBNZW51SWNvbikgfTtcbiAgICB9XG5cbiAgICBpdGVtLnRleHQgPSBpdGVtLmkxOG4gJiYgdGhpcy5pMThuU3J2ID8gdGhpcy5pMThuU3J2LmZhbnlpKGl0ZW0uaTE4bikgOiBpdGVtLnRleHQ7XG5cbiAgICAvLyBncm91cFxuICAgIGl0ZW0uZ3JvdXAgPSBpdGVtLmdyb3VwICE9PSBmYWxzZTtcblxuICAgIC8vIGhpZGRlblxuICAgIGl0ZW0uX2hpZGRlbiA9IHR5cGVvZiBpdGVtLmhpZGUgPT09ICd1bmRlZmluZWQnID8gZmFsc2UgOiBpdGVtLmhpZGU7XG5cbiAgICAvLyBkaXNhYmxlZFxuICAgIGl0ZW0uZGlzYWJsZWQgPSB0eXBlb2YgaXRlbS5kaXNhYmxlZCA9PT0gJ3VuZGVmaW5lZCcgPyBmYWxzZSA6IGl0ZW0uZGlzYWJsZWQ7XG5cbiAgICAvLyBhY2xcbiAgICBpdGVtLl9hY2xSZXN1bHQgPSBpdGVtLmFjbCAmJiB0aGlzLmFjbFNlcnZpY2UgPyB0aGlzLmFjbFNlcnZpY2UuY2FuKGl0ZW0uYWNsKSA6IHRydWU7XG4gIH1cblxuICAvKipcbiAgICog6YeN572u6I+c5Y2V77yM5Y+v6IO9STE4TuOAgeeUqOaIt+adg+mZkOWPmOWKqOaXtumcgOimgeiwg+eUqOWIt+aWsFxuICAgKi9cbiAgcmVzdW1lPFQgZXh0ZW5kcyBNZW51ID0gTWVudT4oY2FsbGJhY2s/OiAoaXRlbTogVCwgcGFyZW50TWVudW06IFQgfCBudWxsLCBkZXB0aD86IG51bWJlcikgPT4gdm9pZCk6IHZvaWQ7XG4gIHJlc3VtZShjYWxsYmFjaz86IChpdGVtOiBNZW51LCBwYXJlbnRNZW51bTogTWVudSB8IG51bGwsIGRlcHRoPzogbnVtYmVyKSA9PiB2b2lkKTogdm9pZDtcbiAgcmVzdW1lKGNhbGxiYWNrPzogKGl0ZW06IE1lbnUsIHBhcmVudE1lbnVtOiBNZW51IHwgbnVsbCwgZGVwdGg/OiBudW1iZXIpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBsZXQgaSA9IDE7XG4gICAgY29uc3Qgc2hvcnRjdXRzOiBNZW51W10gPSBbXTtcbiAgICB0aGlzLnZpc2l0KHRoaXMuZGF0YSwgKGl0ZW06IE1lbnVJbm5lciwgcGFyZW50LCBkZXB0aCkgPT4ge1xuICAgICAgaXRlbS5faWQgPSBpKys7XG4gICAgICBpdGVtLl9wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICBpdGVtLl9kZXB0aCA9IGRlcHRoO1xuICAgICAgdGhpcy5maXhJdGVtKGl0ZW0pO1xuXG4gICAgICAvLyBzaG9ydGN1dFxuICAgICAgaWYgKHBhcmVudCAmJiBpdGVtLnNob3J0Y3V0ID09PSB0cnVlICYmIHBhcmVudC5zaG9ydGN1dFJvb3QgIT09IHRydWUpIHtcbiAgICAgICAgc2hvcnRjdXRzLnB1c2goaXRlbSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soaXRlbSwgcGFyZW50LCBkZXB0aCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmxvYWRTaG9ydGN1dChzaG9ydGN1dHMpO1xuICAgIHRoaXMuX2NoYW5nZSQubmV4dCh0aGlzLmRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIOWKoOi9veW/q+aNt+iPnOWNle+8jOWKoOi9veS9jee9ruinhOWImeWmguS4i++8mlxuICAgKiAx44CB57uf5LiA5Zyo5LiL5qCHMOeahOiKgueCueS4i++8iOWNs+OAkOS4u+WvvOiIquOAkeiKgueCueS4i+aWue+8iVxuICAgKiAgICAgIDHjgIHoi6UgY2hpbGRyZW4g5a2Y5ZyoIOOAkHNob3J0Y3V0Um9vdDogdHJ1ZeOAkeWImeacgOS8mOWFiOOAkOaOqOiNkOOAkei/meenjeaWueW8j1xuICAgKiAgICAgIDLjgIHlkKbliJnmn6Xmib7luKbmnInjgJBkYXNoYm9hcmTjgJHlrZfmoLfpk77mjqXvvIzoi6XlrZjlnKjliJnlnKjmraToj5zljZXnmoTkuIvmlrnliJvlu7rlv6vmjbflhaXlj6NcbiAgICogICAgICAz44CB5ZCm5YiZ5pS+5ZyoMOiKgueCueS9jee9rlxuICAgKi9cbiAgcHJpdmF0ZSBsb2FkU2hvcnRjdXQoc2hvcnRjdXRzOiBNZW51SW5uZXJbXSk6IHZvaWQge1xuICAgIGlmIChzaG9ydGN1dHMubGVuZ3RoID09PSAwIHx8IHRoaXMuZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBscyA9IHRoaXMuZGF0YVswXS5jaGlsZHJlbiBhcyBNZW51SW5uZXJbXTtcbiAgICBsZXQgcG9zID0gbHMuZmluZEluZGV4KHcgPT4gdy5zaG9ydGN1dFJvb3QgPT09IHRydWUpO1xuICAgIGlmIChwb3MgPT09IC0xKSB7XG4gICAgICBwb3MgPSBscy5maW5kSW5kZXgodyA9PiB3LmxpbmshLmluY2x1ZGVzKCdkYXNoYm9hcmQnKSk7XG4gICAgICBwb3MgPSAocG9zICE9PSAtMSA/IHBvcyA6IC0xKSArIDE7XG4gICAgICBjb25zdCBzaG9ydGN1dE1lbnUgPSB7XG4gICAgICAgIHRleHQ6ICflv6vmjbfoj5zljZUnLFxuICAgICAgICBpMThuOiAnc2hvcnRjdXQnLFxuICAgICAgICBpY29uOiAnaWNvbi1yb2NrZXQnLFxuICAgICAgICBjaGlsZHJlbjogW11cbiAgICAgIH0gYXMgTWVudUlubmVyO1xuICAgICAgdGhpcy5kYXRhWzBdLmNoaWxkcmVuIS5zcGxpY2UocG9zLCAwLCBzaG9ydGN1dE1lbnUpO1xuICAgIH1cbiAgICBsZXQgX2RhdGEgPSB0aGlzLmRhdGFbMF0uY2hpbGRyZW4hW3Bvc107XG4gICAgaWYgKF9kYXRhLmkxOG4gJiYgdGhpcy5pMThuU3J2KSBfZGF0YS50ZXh0ID0gdGhpcy5pMThuU3J2LmZhbnlpKF9kYXRhLmkxOG4pO1xuICAgIF9kYXRhID0gT2JqZWN0LmFzc2lnbihfZGF0YSwge1xuICAgICAgc2hvcnRjdXRSb290OiB0cnVlLFxuICAgICAgX2lkOiAtMSxcbiAgICAgIF9wYXJlbnQ6IG51bGwsXG4gICAgICBfZGVwdGg6IDFcbiAgICB9IGFzIE1lbnVJbm5lcik7XG4gICAgX2RhdGEuY2hpbGRyZW4gPSBzaG9ydGN1dHMubWFwKGkgPT4ge1xuICAgICAgaS5fZGVwdGggPSAyO1xuICAgICAgaS5fcGFyZW50ID0gX2RhdGE7XG4gICAgICByZXR1cm4gaTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBtZW51cygpOiBNZW51W10ge1xuICAgIHJldHVybiB0aGlzLmRhdGE7XG4gIH1cblxuICAvKipcbiAgICog5riF56m66I+c5Y2VXG4gICAqL1xuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGEgPSBbXTtcbiAgICB0aGlzLl9jaGFuZ2UkLm5leHQodGhpcy5kYXRhKTtcbiAgfVxuXG4gIGdldEhpdChkYXRhOiBNZW51W10sIHVybDogc3RyaW5nLCByZWN1cnNpdmU6IGJvb2xlYW4gPSBmYWxzZSwgY2I6ICgoaTogTWVudSkgPT4gdm9pZCkgfCBudWxsID0gbnVsbCk6IE1lbnUgfCBudWxsIHtcbiAgICBsZXQgaXRlbTogTWVudSB8IG51bGwgPSBudWxsO1xuXG4gICAgd2hpbGUgKCFpdGVtICYmIHVybCkge1xuICAgICAgdGhpcy52aXNpdChkYXRhLCBpID0+IHtcbiAgICAgICAgaWYgKGNiKSB7XG4gICAgICAgICAgY2IoaSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGkubGluayAhPSBudWxsICYmIGkubGluayA9PT0gdXJsKSB7XG4gICAgICAgICAgaXRlbSA9IGk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIXJlY3Vyc2l2ZSkgYnJlYWs7XG5cbiAgICAgIGlmICgvWz87XS9nLnRlc3QodXJsKSkge1xuICAgICAgICB1cmwgPSB1cmwuc3BsaXQoL1s/O10vZylbMF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1cmwgPSB1cmwuc3BsaXQoJy8nKS5zbGljZSgwLCAtMSkuam9pbignLycpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpdGVtO1xuICB9XG5cbiAgLyoqXG4gICAqIOagueaNrlVSTOiuvue9ruiPnOWNlSBgX29wZW5gIOWxnuaAp1xuICAgKiAtIOiLpSBgcmVjdXJzaXZlOiB0cnVlYCDliJnkvJroh6rliqjlkJHkuIrpgJLlvZLmn6Xmib5cbiAgICogIC0g6I+c5Y2V5pWw5o2u5rqQ5YyF5ZCrIGAvd2FyZWDvvIzliJkgYC93YXJlLzFgIOS5n+inhuS4uiBgL3dhcmVgIOmhuVxuICAgKi9cbiAgb3BlbmVkQnlVcmwodXJsOiBzdHJpbmcgfCBudWxsLCByZWN1cnNpdmU6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmICghdXJsKSByZXR1cm47XG5cbiAgICBsZXQgZmluZEl0ZW0gPSB0aGlzLmdldEhpdCh0aGlzLmRhdGEsIHVybCwgcmVjdXJzaXZlLCAoaTogTWVudUlubmVyKSA9PiB7XG4gICAgICBpLl9zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgaS5fb3BlbiA9IGZhbHNlO1xuICAgIH0pIGFzIE1lbnVJbm5lcjtcbiAgICBpZiAoZmluZEl0ZW0gPT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgZG8ge1xuICAgICAgZmluZEl0ZW0uX3NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIGZpbmRJdGVtLl9vcGVuID0gdHJ1ZTtcbiAgICAgIGZpbmRJdGVtID0gZmluZEl0ZW0uX3BhcmVudCE7XG4gICAgfSB3aGlsZSAoZmluZEl0ZW0pO1xuICB9XG5cbiAgLyoqXG4gICAqIOagueaNrnVybOiOt+WPluiPnOWNleWIl+ihqFxuICAgKiAtIOiLpSBgcmVjdXJzaXZlOiB0cnVlYCDliJnkvJroh6rliqjlkJHkuIrpgJLlvZLmn6Xmib5cbiAgICogIC0g6I+c5Y2V5pWw5o2u5rqQ5YyF5ZCrIGAvd2FyZWDvvIzliJkgYC93YXJlLzFgIOS5n+inhuS4uiBgL3dhcmVgIOmhuVxuICAgKi9cbiAgZ2V0UGF0aEJ5VXJsKHVybDogc3RyaW5nLCByZWN1cnNpdmU6IGJvb2xlYW4gPSBmYWxzZSk6IE1lbnVbXSB7XG4gICAgY29uc3QgcmV0OiBNZW51W10gPSBbXTtcbiAgICBsZXQgaXRlbSA9IHRoaXMuZ2V0SGl0KHRoaXMuZGF0YSwgdXJsLCByZWN1cnNpdmUpIGFzIE1lbnVJbm5lcjtcblxuICAgIGlmICghaXRlbSkgcmV0dXJuIHJldDtcblxuICAgIGRvIHtcbiAgICAgIHJldC5zcGxpY2UoMCwgMCwgaXRlbSk7XG4gICAgICBpdGVtID0gaXRlbS5fcGFyZW50ITtcbiAgICB9IHdoaWxlIChpdGVtKTtcblxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IG1lbnUgYmFzZWQgb24gYGtleWBcbiAgICovXG4gIGdldEl0ZW0oa2V5OiBzdHJpbmcpOiBNZW51IHwgbnVsbCB7XG4gICAgbGV0IHJlczogTWVudSB8IG51bGwgPSBudWxsO1xuICAgIHRoaXMudmlzaXQodGhpcy5kYXRhLCBpdGVtID0+IHtcbiAgICAgIGlmIChyZXMgPT0gbnVsbCAmJiBpdGVtLmtleSA9PT0ga2V5KSB7XG4gICAgICAgIHJlcyA9IGl0ZW07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgbWVudSBiYXNlZCBvbiBga2V5YFxuICAgKi9cbiAgc2V0SXRlbShrZXk6IHN0cmluZywgdmFsdWU6IE1lbnUpOiB2b2lkIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5nZXRJdGVtKGtleSk7XG4gICAgaWYgKGl0ZW0gPT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgT2JqZWN0LmtleXModmFsdWUpLmZvckVhY2goayA9PiB7XG4gICAgICBpdGVtW2tdID0gdmFsdWVba107XG4gICAgfSk7XG4gICAgdGhpcy5maXhJdGVtKGl0ZW0pO1xuXG4gICAgdGhpcy5fY2hhbmdlJC5uZXh0KHRoaXMuZGF0YSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFuZ2UkLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5pMThuJC51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { deepMerge } from '@delon/util/other';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "ng-zorro-antd/modal";
|
|
6
|
+
/**
|
|
7
|
+
* 对话框辅助类
|
|
8
|
+
*/
|
|
9
|
+
export class ModalHelper {
|
|
10
|
+
constructor(srv) {
|
|
11
|
+
this.srv = srv;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* 构建一个对话框
|
|
15
|
+
*
|
|
16
|
+
* @param comp 组件
|
|
17
|
+
* @param params 组件参数
|
|
18
|
+
* @param options 额外参数
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* this.modalHelper.create(FormEditComponent, { i }).subscribe(res => this.load());
|
|
22
|
+
* // 对于组件的成功&关闭的处理说明
|
|
23
|
+
* // 成功,其中 `nzModalRef` 指目标组件在构造函数 `NzModalRef` 变量名
|
|
24
|
+
* this.nzModalRef.close(data);
|
|
25
|
+
* this.nzModalRef.close();
|
|
26
|
+
* // 关闭
|
|
27
|
+
* this.nzModalRef.destroy();
|
|
28
|
+
*/
|
|
29
|
+
create(comp, params, options) {
|
|
30
|
+
options = deepMerge({
|
|
31
|
+
size: 'lg',
|
|
32
|
+
exact: true,
|
|
33
|
+
includeTabs: false
|
|
34
|
+
}, options);
|
|
35
|
+
return new Observable((observer) => {
|
|
36
|
+
const { size, includeTabs, modalOptions } = options;
|
|
37
|
+
let cls = '';
|
|
38
|
+
let width = '';
|
|
39
|
+
if (size) {
|
|
40
|
+
if (typeof size === 'number') {
|
|
41
|
+
width = `${size}px`;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
cls = `modal-${size}`;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (includeTabs) {
|
|
48
|
+
cls += ' modal-include-tabs';
|
|
49
|
+
}
|
|
50
|
+
if (modalOptions && modalOptions.nzWrapClassName) {
|
|
51
|
+
cls += ` ${modalOptions.nzWrapClassName}`;
|
|
52
|
+
delete modalOptions.nzWrapClassName;
|
|
53
|
+
}
|
|
54
|
+
const defaultOptions = {
|
|
55
|
+
nzWrapClassName: cls,
|
|
56
|
+
nzContent: comp,
|
|
57
|
+
nzWidth: width ? width : undefined,
|
|
58
|
+
nzFooter: null,
|
|
59
|
+
nzComponentParams: params
|
|
60
|
+
};
|
|
61
|
+
const subject = this.srv.create({ ...defaultOptions, ...modalOptions });
|
|
62
|
+
const afterClose$ = subject.afterClose.subscribe((res) => {
|
|
63
|
+
if (options.exact === true) {
|
|
64
|
+
if (res != null) {
|
|
65
|
+
observer.next(res);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
observer.next(res);
|
|
70
|
+
}
|
|
71
|
+
observer.complete();
|
|
72
|
+
afterClose$.unsubscribe();
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* 构建静态框,点击蒙层不允许关闭
|
|
78
|
+
*
|
|
79
|
+
* @param comp 组件
|
|
80
|
+
* @param params 组件参数
|
|
81
|
+
* @param options 额外参数
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* this.modalHelper.open(FormEditComponent, { i }).subscribe(res => this.load());
|
|
85
|
+
* // 对于组件的成功&关闭的处理说明
|
|
86
|
+
* // 成功,其中 `nzModalRef` 指目标组件在构造函数 `NzModalRef` 变量名
|
|
87
|
+
* this.nzModalRef.close(data);
|
|
88
|
+
* this.nzModalRef.close();
|
|
89
|
+
* // 关闭
|
|
90
|
+
* this.nzModalRef.destroy();
|
|
91
|
+
*/
|
|
92
|
+
createStatic(comp, params, options) {
|
|
93
|
+
const modalOptions = {
|
|
94
|
+
nzMaskClosable: false,
|
|
95
|
+
...(options && options.modalOptions)
|
|
96
|
+
};
|
|
97
|
+
return this.create(comp, params, { ...options, modalOptions });
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
ModalHelper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: ModalHelper, deps: [{ token: i1.NzModalService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
101
|
+
ModalHelper.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: ModalHelper, providedIn: 'root' });
|
|
102
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: ModalHelper, decorators: [{
|
|
103
|
+
type: Injectable,
|
|
104
|
+
args: [{ providedIn: 'root' }]
|
|
105
|
+
}], ctorParameters: function () { return [{ type: i1.NzModalService }]; } });
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUvc3JjL3NlcnZpY2VzL21vZGFsL21vZGFsLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sTUFBTSxDQUFDO0FBRTVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBZTlDOztHQUVHO0FBRUgsTUFBTSxPQUFPLFdBQVc7SUFDdEIsWUFBb0IsR0FBbUI7UUFBbkIsUUFBRyxHQUFILEdBQUcsQ0FBZ0I7SUFBRyxDQUFDO0lBRTNDOzs7Ozs7Ozs7Ozs7Ozs7T0FlRztJQUNILE1BQU0sQ0FDSixJQUE4QyxFQUM5QyxNQUFrQixFQUNsQixPQUE0QjtRQUU1QixPQUFPLEdBQUcsU0FBUyxDQUNqQjtZQUNFLElBQUksRUFBRSxJQUFJO1lBQ1YsS0FBSyxFQUFFLElBQUk7WUFDWCxXQUFXLEVBQUUsS0FBSztTQUNuQixFQUNELE9BQU8sQ0FDUixDQUFDO1FBQ0YsT0FBTyxJQUFJLFVBQVUsQ0FBQyxDQUFDLFFBQTZCLEVBQUUsRUFBRTtZQUN0RCxNQUFNLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsR0FBRyxPQUE2QixDQUFDO1lBQzFFLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUNiLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNmLElBQUksSUFBSSxFQUFFO2dCQUNSLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO29CQUM1QixLQUFLLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQztpQkFDckI7cUJBQU07b0JBQ0wsR0FBRyxHQUFHLFNBQVMsSUFBSSxFQUFFLENBQUM7aUJBQ3ZCO2FBQ0Y7WUFDRCxJQUFJLFdBQVcsRUFBRTtnQkFDZixHQUFHLElBQUkscUJBQXFCLENBQUM7YUFDOUI7WUFDRCxJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsZUFBZSxFQUFFO2dCQUNoRCxHQUFHLElBQUksSUFBSSxZQUFZLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQzFDLE9BQU8sWUFBWSxDQUFDLGVBQWUsQ0FBQzthQUNyQztZQUNELE1BQU0sY0FBYyxHQUFpQjtnQkFDbkMsZUFBZSxFQUFFLEdBQUc7Z0JBQ3BCLFNBQVMsRUFBRSxJQUFJO2dCQUNmLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDbEMsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsaUJBQWlCLEVBQUUsTUFBTTthQUMxQixDQUFDO1lBQ0YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLGNBQWMsRUFBRSxHQUFHLFlBQVksRUFBRSxDQUFDLENBQUM7WUFDeEUsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFjLEVBQUUsRUFBRTtnQkFDbEUsSUFBSSxPQUFRLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtvQkFDM0IsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO3dCQUNmLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7cUJBQ3BCO2lCQUNGO3FCQUFNO29CQUNMLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ3BCO2dCQUNELFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDcEIsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzVCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7OztPQWVHO0lBQ0gsWUFBWSxDQUNWLElBQThDLEVBQzlDLE1BQWtCLEVBQ2xCLE9BQTRCO1FBRTVCLE1BQU0sWUFBWSxHQUFHO1lBQ25CLGNBQWMsRUFBRSxLQUFLO1lBQ3JCLEdBQUcsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQztTQUNyQyxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLE9BQU8sRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7O3dHQWxHVSxXQUFXOzRHQUFYLFdBQVcsY0FERSxNQUFNOzJGQUNuQixXQUFXO2tCQUR2QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFRlbXBsYXRlUmVmLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBPYnNlcnZlciB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBkZWVwTWVyZ2UgfSBmcm9tICdAZGVsb24vdXRpbC9vdGhlcic7XG5pbXBvcnQgdHlwZSB7IE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5pbXBvcnQgeyBNb2RhbE9wdGlvbnMsIE56TW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9tb2RhbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kYWxIZWxwZXJPcHRpb25zIHtcbiAgLyoqIOWkp+Wwj++8m+S+i+Wmgu+8mmxn44CBNjAw77yM6buY6K6k77yaYGxnYCAqL1xuICBzaXplPzogJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ3hsJyB8ICcnIHwgbnVtYmVyO1xuICAvKiog5a+56K+d5qGGIFtNb2RhbE9wdGlvbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL2NvbXBvbmVudHMvbW9kYWwvbW9kYWwtdHlwZXMudHMpIOWPguaVsCAqL1xuICBtb2RhbE9wdGlvbnM/OiBNb2RhbE9wdGlvbnM7XG4gIC8qKiDmmK/lkKbnsr7lh4bvvIjpu5jorqTvvJpgdHJ1ZWDvvInvvIzoi6Xov5Tlm57lgLzpnZ7nqbrlgLzvvIhgbnVsbGDmiJZgdW5kZWZpbmVkYO+8ieinhuS4uuaIkOWKn++8jOWQpuWImeinhuS4uumUmeivryAqL1xuICBleGFjdD86IGJvb2xlYW47XG4gIC8qKiDmmK/lkKbljIXoo7nmoIfnrb7pobXvvIzkv67lpI3mqKHmgIHljIXlkKvmoIfnrb7pl7Tot53pl67popggKi9cbiAgaW5jbHVkZVRhYnM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIOWvueivneahhui+heWKqeexu1xuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE1vZGFsSGVscGVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzcnY6IE56TW9kYWxTZXJ2aWNlKSB7fVxuXG4gIC8qKlxuICAgKiDmnoTlu7rkuIDkuKrlr7nor53moYZcbiAgICpcbiAgICogQHBhcmFtIGNvbXAg57uE5Lu2XG4gICAqIEBwYXJhbSBwYXJhbXMg57uE5Lu25Y+C5pWwXG4gICAqIEBwYXJhbSBvcHRpb25zIOmineWkluWPguaVsFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiB0aGlzLm1vZGFsSGVscGVyLmNyZWF0ZShGb3JtRWRpdENvbXBvbmVudCwgeyBpIH0pLnN1YnNjcmliZShyZXMgPT4gdGhpcy5sb2FkKCkpO1xuICAgKiAvLyDlr7nkuo7nu4Tku7bnmoTmiJDlip8m5YWz6Zet55qE5aSE55CG6K+05piOXG4gICAqIC8vIOaIkOWKn++8jOWFtuS4rSBgbnpNb2RhbFJlZmAg5oyH55uu5qCH57uE5Lu25Zyo5p6E6YCg5Ye95pWwIGBOek1vZGFsUmVmYCDlj5jph4/lkI1cbiAgICogdGhpcy5uek1vZGFsUmVmLmNsb3NlKGRhdGEpO1xuICAgKiB0aGlzLm56TW9kYWxSZWYuY2xvc2UoKTtcbiAgICogLy8g5YWz6ZetXG4gICAqIHRoaXMubnpNb2RhbFJlZi5kZXN0cm95KCk7XG4gICAqL1xuICBjcmVhdGUoXG4gICAgY29tcDogVGVtcGxhdGVSZWY8TnpTYWZlQW55PiB8IFR5cGU8TnpTYWZlQW55PixcbiAgICBwYXJhbXM/OiBOelNhZmVBbnksXG4gICAgb3B0aW9ucz86IE1vZGFsSGVscGVyT3B0aW9uc1xuICApOiBPYnNlcnZhYmxlPE56U2FmZUFueT4ge1xuICAgIG9wdGlvbnMgPSBkZWVwTWVyZ2UoXG4gICAgICB7XG4gICAgICAgIHNpemU6ICdsZycsXG4gICAgICAgIGV4YWN0OiB0cnVlLFxuICAgICAgICBpbmNsdWRlVGFiczogZmFsc2VcbiAgICAgIH0sXG4gICAgICBvcHRpb25zXG4gICAgKTtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyOiBPYnNlcnZlcjxOelNhZmVBbnk+KSA9PiB7XG4gICAgICBjb25zdCB7IHNpemUsIGluY2x1ZGVUYWJzLCBtb2RhbE9wdGlvbnMgfSA9IG9wdGlvbnMgYXMgTW9kYWxIZWxwZXJPcHRpb25zO1xuICAgICAgbGV0IGNscyA9ICcnO1xuICAgICAgbGV0IHdpZHRoID0gJyc7XG4gICAgICBpZiAoc2l6ZSkge1xuICAgICAgICBpZiAodHlwZW9mIHNpemUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgd2lkdGggPSBgJHtzaXplfXB4YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjbHMgPSBgbW9kYWwtJHtzaXplfWA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpbmNsdWRlVGFicykge1xuICAgICAgICBjbHMgKz0gJyBtb2RhbC1pbmNsdWRlLXRhYnMnO1xuICAgICAgfVxuICAgICAgaWYgKG1vZGFsT3B0aW9ucyAmJiBtb2RhbE9wdGlvbnMubnpXcmFwQ2xhc3NOYW1lKSB7XG4gICAgICAgIGNscyArPSBgICR7bW9kYWxPcHRpb25zLm56V3JhcENsYXNzTmFtZX1gO1xuICAgICAgICBkZWxldGUgbW9kYWxPcHRpb25zLm56V3JhcENsYXNzTmFtZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zOiBNb2RhbE9wdGlvbnMgPSB7XG4gICAgICAgIG56V3JhcENsYXNzTmFtZTogY2xzLFxuICAgICAgICBuekNvbnRlbnQ6IGNvbXAsXG4gICAgICAgIG56V2lkdGg6IHdpZHRoID8gd2lkdGggOiB1bmRlZmluZWQsXG4gICAgICAgIG56Rm9vdGVyOiBudWxsLFxuICAgICAgICBuekNvbXBvbmVudFBhcmFtczogcGFyYW1zXG4gICAgICB9O1xuICAgICAgY29uc3Qgc3ViamVjdCA9IHRoaXMuc3J2LmNyZWF0ZSh7IC4uLmRlZmF1bHRPcHRpb25zLCAuLi5tb2RhbE9wdGlvbnMgfSk7XG4gICAgICBjb25zdCBhZnRlckNsb3NlJCA9IHN1YmplY3QuYWZ0ZXJDbG9zZS5zdWJzY3JpYmUoKHJlczogTnpTYWZlQW55KSA9PiB7XG4gICAgICAgIGlmIChvcHRpb25zIS5leGFjdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGlmIChyZXMgIT0gbnVsbCkge1xuICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChyZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvYnNlcnZlci5uZXh0KHJlcyk7XG4gICAgICAgIH1cbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgYWZ0ZXJDbG9zZSQudW5zdWJzY3JpYmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIOaehOW7uumdmeaAgeahhu+8jOeCueWHu+iSmeWxguS4jeWFgeiuuOWFs+mXrVxuICAgKlxuICAgKiBAcGFyYW0gY29tcCDnu4Tku7ZcbiAgICogQHBhcmFtIHBhcmFtcyDnu4Tku7blj4LmlbBcbiAgICogQHBhcmFtIG9wdGlvbnMg6aKd5aSW5Y+C5pWwXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHRoaXMubW9kYWxIZWxwZXIub3BlbihGb3JtRWRpdENvbXBvbmVudCwgeyBpIH0pLnN1YnNjcmliZShyZXMgPT4gdGhpcy5sb2FkKCkpO1xuICAgKiAvLyDlr7nkuo7nu4Tku7bnmoTmiJDlip8m5YWz6Zet55qE5aSE55CG6K+05piOXG4gICAqIC8vIOaIkOWKn++8jOWFtuS4rSBgbnpNb2RhbFJlZmAg5oyH55uu5qCH57uE5Lu25Zyo5p6E6YCg5Ye95pWwIGBOek1vZGFsUmVmYCDlj5jph4/lkI1cbiAgICogdGhpcy5uek1vZGFsUmVmLmNsb3NlKGRhdGEpO1xuICAgKiB0aGlzLm56TW9kYWxSZWYuY2xvc2UoKTtcbiAgICogLy8g5YWz6ZetXG4gICAqIHRoaXMubnpNb2RhbFJlZi5kZXN0cm95KCk7XG4gICAqL1xuICBjcmVhdGVTdGF0aWMoXG4gICAgY29tcDogVGVtcGxhdGVSZWY8TnpTYWZlQW55PiB8IFR5cGU8TnpTYWZlQW55PixcbiAgICBwYXJhbXM/OiBOelNhZmVBbnksXG4gICAgb3B0aW9ucz86IE1vZGFsSGVscGVyT3B0aW9uc1xuICApOiBPYnNlcnZhYmxlPE56U2FmZUFueT4ge1xuICAgIGNvbnN0IG1vZGFsT3B0aW9ucyA9IHtcbiAgICAgIG56TWFza0Nsb3NhYmxlOiBmYWxzZSxcbiAgICAgIC4uLihvcHRpb25zICYmIG9wdGlvbnMubW9kYWxPcHRpb25zKVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlKGNvbXAsIHBhcmFtcywgeyAuLi5vcHRpb25zLCBtb2RhbE9wdGlvbnMgfSk7XG4gIH1cbn1cbiJdfQ==
|
package/{esm2015/src/services/preloader/preloader.js → esm2020/src/services/preloader/preloader.mjs}
RENAMED
|
File without changes
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@delon/util/config";
|
|
4
|
+
export const REP_MAX = 6;
|
|
5
|
+
export class ResponsiveService {
|
|
6
|
+
constructor(cogSrv) {
|
|
7
|
+
this.cog = cogSrv.merge('themeResponsive', {
|
|
8
|
+
rules: {
|
|
9
|
+
1: { xs: 24 },
|
|
10
|
+
2: { xs: 24, sm: 12 },
|
|
11
|
+
3: { xs: 24, sm: 12, md: 8 },
|
|
12
|
+
4: { xs: 24, sm: 12, md: 8, lg: 6 },
|
|
13
|
+
5: { xs: 24, sm: 12, md: 8, lg: 6, xl: 4 },
|
|
14
|
+
6: { xs: 24, sm: 12, md: 8, lg: 6, xl: 4, xxl: 2 }
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
if (Object.keys(this.cog.rules)
|
|
18
|
+
.map(i => +i)
|
|
19
|
+
.some((i) => i < 1 || i > REP_MAX)) {
|
|
20
|
+
throw new Error(`[theme] the responseive rule index value range must be 1-${REP_MAX}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
genCls(count) {
|
|
24
|
+
const rule = this.cog.rules[count > REP_MAX ? REP_MAX : Math.max(count, 1)];
|
|
25
|
+
const antColClass = 'ant-col';
|
|
26
|
+
const clsMap = [`${antColClass}-xs-${rule.xs}`];
|
|
27
|
+
if (rule.sm)
|
|
28
|
+
clsMap.push(`${antColClass}-sm-${rule.sm}`);
|
|
29
|
+
if (rule.md)
|
|
30
|
+
clsMap.push(`${antColClass}-md-${rule.md}`);
|
|
31
|
+
if (rule.lg)
|
|
32
|
+
clsMap.push(`${antColClass}-lg-${rule.lg}`);
|
|
33
|
+
if (rule.xl)
|
|
34
|
+
clsMap.push(`${antColClass}-xl-${rule.xl}`);
|
|
35
|
+
if (rule.xxl)
|
|
36
|
+
clsMap.push(`${antColClass}-xxl-${rule.xxl}`);
|
|
37
|
+
return clsMap;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
ResponsiveService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: ResponsiveService, deps: [{ token: i1.AlainConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
41
|
+
ResponsiveService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: ResponsiveService, providedIn: 'root' });
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: ResponsiveService, decorators: [{
|
|
43
|
+
type: Injectable,
|
|
44
|
+
args: [{ providedIn: 'root' }]
|
|
45
|
+
}], ctorParameters: function () { return [{ type: i1.AlainConfigService }]; } });
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2l2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lL3NyYy9zZXJ2aWNlcy9yZXNwb25zaXZlL3Jlc3BvbnNpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBSTNDLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFLekIsTUFBTSxPQUFPLGlCQUFpQjtJQUU1QixZQUFZLE1BQTBCO1FBQ3BDLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtZQUN6QyxLQUFLLEVBQUU7Z0JBQ0wsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtnQkFDYixDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7Z0JBQ3JCLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO2dCQUM1QixDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO2dCQUNuQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7Z0JBQzFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2FBQ25EO1NBQ0YsQ0FBRSxDQUFDO1FBQ0osSUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO2FBQ3hCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ1osSUFBSSxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsRUFDNUM7WUFDQSxNQUFNLElBQUksS0FBSyxDQUFDLDREQUE0RCxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQ3hGO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFhO1FBQ2xCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RSxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUM7UUFDOUIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLFdBQVcsT0FBTyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNoRCxJQUFJLElBQUksQ0FBQyxFQUFFO1lBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFdBQVcsT0FBTyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6RCxJQUFJLElBQUksQ0FBQyxFQUFFO1lBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFdBQVcsT0FBTyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6RCxJQUFJLElBQUksQ0FBQyxFQUFFO1lBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFdBQVcsT0FBTyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6RCxJQUFJLElBQUksQ0FBQyxFQUFFO1lBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFdBQVcsT0FBTyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6RCxJQUFJLElBQUksQ0FBQyxHQUFHO1lBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFdBQVcsUUFBUSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUM1RCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOzs4R0FoQ1UsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FESixNQUFNOzJGQUNuQixpQkFBaUI7a0JBRDdCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBbGFpbkNvbmZpZ1NlcnZpY2UsIEFsYWluVGhlbWVSZXNwb25zaXZlQ29uZmlnIH0gZnJvbSAnQGRlbG9uL3V0aWwvY29uZmlnJztcblxuZXhwb3J0IGNvbnN0IFJFUF9NQVggPSA2O1xuXG5leHBvcnQgdHlwZSBSRVBfVFlQRSA9IDEgfCAyIHwgMyB8IDQgfCA1IHwgNjtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBSZXNwb25zaXZlU2VydmljZSB7XG4gIHByaXZhdGUgY29nOiBBbGFpblRoZW1lUmVzcG9uc2l2ZUNvbmZpZztcbiAgY29uc3RydWN0b3IoY29nU3J2OiBBbGFpbkNvbmZpZ1NlcnZpY2UpIHtcbiAgICB0aGlzLmNvZyA9IGNvZ1Nydi5tZXJnZSgndGhlbWVSZXNwb25zaXZlJywge1xuICAgICAgcnVsZXM6IHtcbiAgICAgICAgMTogeyB4czogMjQgfSxcbiAgICAgICAgMjogeyB4czogMjQsIHNtOiAxMiB9LFxuICAgICAgICAzOiB7IHhzOiAyNCwgc206IDEyLCBtZDogOCB9LFxuICAgICAgICA0OiB7IHhzOiAyNCwgc206IDEyLCBtZDogOCwgbGc6IDYgfSxcbiAgICAgICAgNTogeyB4czogMjQsIHNtOiAxMiwgbWQ6IDgsIGxnOiA2LCB4bDogNCB9LFxuICAgICAgICA2OiB7IHhzOiAyNCwgc206IDEyLCBtZDogOCwgbGc6IDYsIHhsOiA0LCB4eGw6IDIgfVxuICAgICAgfVxuICAgIH0pITtcbiAgICBpZiAoXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmNvZy5ydWxlcylcbiAgICAgICAgLm1hcChpID0+ICtpKVxuICAgICAgICAuc29tZSgoaTogbnVtYmVyKSA9PiBpIDwgMSB8fCBpID4gUkVQX01BWClcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgW3RoZW1lXSB0aGUgcmVzcG9uc2VpdmUgcnVsZSBpbmRleCB2YWx1ZSByYW5nZSBtdXN0IGJlIDEtJHtSRVBfTUFYfWApO1xuICAgIH1cbiAgfVxuXG4gIGdlbkNscyhjb3VudDogbnVtYmVyKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHJ1bGUgPSB0aGlzLmNvZy5ydWxlc1tjb3VudCA+IFJFUF9NQVggPyBSRVBfTUFYIDogTWF0aC5tYXgoY291bnQsIDEpXTtcbiAgICBjb25zdCBhbnRDb2xDbGFzcyA9ICdhbnQtY29sJztcbiAgICBjb25zdCBjbHNNYXAgPSBbYCR7YW50Q29sQ2xhc3N9LXhzLSR7cnVsZS54c31gXTtcbiAgICBpZiAocnVsZS5zbSkgY2xzTWFwLnB1c2goYCR7YW50Q29sQ2xhc3N9LXNtLSR7cnVsZS5zbX1gKTtcbiAgICBpZiAocnVsZS5tZCkgY2xzTWFwLnB1c2goYCR7YW50Q29sQ2xhc3N9LW1kLSR7cnVsZS5tZH1gKTtcbiAgICBpZiAocnVsZS5sZykgY2xzTWFwLnB1c2goYCR7YW50Q29sQ2xhc3N9LWxnLSR7cnVsZS5sZ31gKTtcbiAgICBpZiAocnVsZS54bCkgY2xzTWFwLnB1c2goYCR7YW50Q29sQ2xhc3N9LXhsLSR7cnVsZS54bH1gKTtcbiAgICBpZiAocnVsZS54eGwpIGNsc01hcC5wdXNoKGAke2FudENvbENsYXNzfS14eGwtJHtydWxlLnh4bH1gKTtcbiAgICByZXR1cm4gY2xzTWFwO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import { Inject, Injectable } from '@angular/core';
|
|
3
|
+
import { filter, map } from 'rxjs/operators';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/cdk/bidi";
|
|
6
|
+
import * as i2 from "../settings/settings.service";
|
|
7
|
+
import * as i3 from "ng-zorro-antd/core/config";
|
|
8
|
+
import * as i4 from "@delon/util/config";
|
|
9
|
+
import * as i5 from "@angular/cdk/platform";
|
|
10
|
+
export const HTML_DIR = 'dir';
|
|
11
|
+
export const RTL_DIRECTION = 'direction';
|
|
12
|
+
export const RTL_NZ_COMPONENTS = ['modal', 'drawer', 'message', 'notification', 'image'];
|
|
13
|
+
export const RTL_DELON_COMPONENTS = ['loading', 'onboarding'];
|
|
14
|
+
export const LTR = 'ltr';
|
|
15
|
+
export const RTL = 'rtl';
|
|
16
|
+
export class RTLService {
|
|
17
|
+
constructor(d, srv, nz, delon, platform, doc) {
|
|
18
|
+
this.d = d;
|
|
19
|
+
this.srv = srv;
|
|
20
|
+
this.nz = nz;
|
|
21
|
+
this.delon = delon;
|
|
22
|
+
this.platform = platform;
|
|
23
|
+
this.doc = doc;
|
|
24
|
+
this._dir = LTR;
|
|
25
|
+
this.dir = srv.layout.direction === RTL ? RTL : LTR;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get or Set the current text direction
|
|
29
|
+
*
|
|
30
|
+
* 获取或设置当前文字方向
|
|
31
|
+
*/
|
|
32
|
+
get dir() {
|
|
33
|
+
return this._dir;
|
|
34
|
+
}
|
|
35
|
+
set dir(value) {
|
|
36
|
+
this._dir = value;
|
|
37
|
+
this.updateLibConfig();
|
|
38
|
+
this.updateHtml();
|
|
39
|
+
// Should be wait inited
|
|
40
|
+
Promise.resolve().then(() => {
|
|
41
|
+
this.d.value = value;
|
|
42
|
+
this.d.change.emit(value);
|
|
43
|
+
this.srv.setLayout(RTL_DIRECTION, value);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get the next text direction
|
|
48
|
+
*
|
|
49
|
+
* 获取下一次文字方向
|
|
50
|
+
*/
|
|
51
|
+
get nextDir() {
|
|
52
|
+
return this.dir === LTR ? RTL : LTR;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Subscription change notification
|
|
56
|
+
*
|
|
57
|
+
* 订阅变更通知
|
|
58
|
+
*/
|
|
59
|
+
get change() {
|
|
60
|
+
return this.srv.notify.pipe(filter(w => w.name === RTL_DIRECTION), map(v => v.value));
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Toggle text direction
|
|
64
|
+
*
|
|
65
|
+
* 切换文字方向
|
|
66
|
+
*/
|
|
67
|
+
toggle() {
|
|
68
|
+
this.dir = this.nextDir;
|
|
69
|
+
}
|
|
70
|
+
updateHtml() {
|
|
71
|
+
if (!this.platform.isBrowser) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const htmlEl = this.doc.querySelector('html');
|
|
75
|
+
if (htmlEl) {
|
|
76
|
+
const dir = this.dir;
|
|
77
|
+
htmlEl.style.direction = dir;
|
|
78
|
+
htmlEl.classList.remove(RTL, LTR);
|
|
79
|
+
htmlEl.classList.add(dir);
|
|
80
|
+
htmlEl.setAttribute(HTML_DIR, dir);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
updateLibConfig() {
|
|
84
|
+
RTL_NZ_COMPONENTS.forEach(name => {
|
|
85
|
+
this.nz.set(name, { nzDirection: this.dir });
|
|
86
|
+
});
|
|
87
|
+
RTL_DELON_COMPONENTS.forEach(name => {
|
|
88
|
+
this.delon.set(name, { direction: this.dir });
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
RTLService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: RTLService, deps: [{ token: i1.Directionality }, { token: i2.SettingsService }, { token: i3.NzConfigService }, { token: i4.AlainConfigService }, { token: i5.Platform }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
93
|
+
RTLService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: RTLService, providedIn: 'root' });
|
|
94
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: RTLService, decorators: [{
|
|
95
|
+
type: Injectable,
|
|
96
|
+
args: [{ providedIn: 'root' }]
|
|
97
|
+
}], ctorParameters: function () { return [{ type: i1.Directionality }, { type: i2.SettingsService }, { type: i3.NzConfigService }, { type: i4.AlainConfigService }, { type: i5.Platform }, { type: undefined, decorators: [{
|
|
98
|
+
type: Inject,
|
|
99
|
+
args: [DOCUMENT]
|
|
100
|
+
}] }]; } });
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnRsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS9zcmMvc2VydmljZXMvcnRsL3J0bC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBUTdDLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDOUIsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQztBQUN6QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN6RixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUM5RCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDO0FBQ3pCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFHekIsTUFBTSxPQUFPLFVBQVU7SUEyQ3JCLFlBQ1UsQ0FBaUIsRUFDakIsR0FBb0IsRUFDcEIsRUFBbUIsRUFDbkIsS0FBeUIsRUFDekIsUUFBa0IsRUFDQSxHQUFjO1FBTGhDLE1BQUMsR0FBRCxDQUFDLENBQWdCO1FBQ2pCLFFBQUcsR0FBSCxHQUFHLENBQWlCO1FBQ3BCLE9BQUUsR0FBRixFQUFFLENBQWlCO1FBQ25CLFVBQUssR0FBTCxLQUFLLENBQW9CO1FBQ3pCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDQSxRQUFHLEdBQUgsR0FBRyxDQUFXO1FBaERsQyxTQUFJLEdB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QUFNOzJGQUNuQixVQUFVO2tCQUR0QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBa0Q3QixNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3Rpb24sIERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQWxhaW5Db25maWdTZXJ2aWNlIH0gZnJvbSAnQGRlbG9uL3V0aWwvY29uZmlnJztcbmltcG9ydCB7IE56Q29uZmlnU2VydmljZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS9jb25maWcnO1xuaW1wb3J0IHR5cGUgeyBOelNhZmVBbnkgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdHlwZXMnO1xuXG5pbXBvcnQgeyBTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi9zZXR0aW5ncy9zZXR0aW5ncy5zZXJ2aWNlJztcblxuZXhwb3J0IGNvbnN0IEhUTUxfRElSID0gJ2Rpcic7XG5leHBvcnQgY29uc3QgUlRMX0RJUkVDVElPTiA9ICdkaXJlY3Rpb24nO1xuZXhwb3J0IGNvbnN0IFJUTF9OWl9DT01QT05FTlRTID0gWydtb2RhbCcsICdkcmF3ZXInLCAnbWVzc2FnZScsICdub3RpZmljYXRpb24nLCAnaW1hZ2UnXTtcbmV4cG9ydCBjb25zdCBSVExfREVMT05fQ09NUE9ORU5UUyA9IFsnbG9hZGluZycsICdvbmJvYXJkaW5nJ107XG5leHBvcnQgY29uc3QgTFRSID0gJ2x0cic7XG5leHBvcnQgY29uc3QgUlRMID0gJ3J0bCc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUlRMU2VydmljZSB7XG4gIHByaXZhdGUgX2RpcjogRGlyZWN0aW9uID0gTFRSO1xuICAvKipcbiAgICogR2V0IG9yIFNldCB0aGUgY3VycmVudCB0ZXh0IGRpcmVjdGlvblxuICAgKlxuICAgKiDojrflj5bmiJborr7nva7lvZPliY3mloflrZfmlrnlkJFcbiAgICovXG4gIGdldCBkaXIoKTogRGlyZWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fZGlyO1xuICB9XG4gIHNldCBkaXIodmFsdWU6IERpcmVjdGlvbikge1xuICAgIHRoaXMuX2RpciA9IHZhbHVlO1xuICAgIHRoaXMudXBkYXRlTGliQ29uZmlnKCk7XG4gICAgdGhpcy51cGRhdGVIdG1sKCk7XG4gICAgLy8gU2hvdWxkIGJlIHdhaXQgaW5pdGVkXG4gICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAodGhpcy5kIGFzIE56U2FmZUFueSkudmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuZC5jaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICB0aGlzLnNydi5zZXRMYXlvdXQoUlRMX0RJUkVDVElPTiwgdmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbmV4dCB0ZXh0IGRpcmVjdGlvblxuICAgKlxuICAgKiDojrflj5bkuIvkuIDmrKHmloflrZfmlrnlkJFcbiAgICovXG4gIGdldCBuZXh0RGlyKCk6IERpcmVjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlyID09PSBMVFIgPyBSVEwgOiBMVFI7XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaXB0aW9uIGNoYW5nZSBub3RpZmljYXRpb25cbiAgICpcbiAgICog6K6i6ZiF5Y+Y5pu06YCa55+lXG4gICAqL1xuICBnZXQgY2hhbmdlKCk6IE9ic2VydmFibGU8RGlyZWN0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuc3J2Lm5vdGlmeS5waXBlKFxuICAgICAgZmlsdGVyKHcgPT4gdy5uYW1lID09PSBSVExfRElSRUNUSU9OKSxcbiAgICAgIG1hcCh2ID0+IHYudmFsdWUpXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZDogRGlyZWN0aW9uYWxpdHksXG4gICAgcHJpdmF0ZSBzcnY6IFNldHRpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIG56OiBOekNvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBkZWxvbjogQWxhaW5Db25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGxhdGZvcm06IFBsYXRmb3JtLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jOiBOelNhZmVBbnlcbiAgKSB7XG4gICAgdGhpcy5kaXIgPSBzcnYubGF5b3V0LmRpcmVjdGlvbiA9PT0gUlRMID8gUlRMIDogTFRSO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB0ZXh0IGRpcmVjdGlvblxuICAgKlxuICAgKiDliIfmjaLmloflrZfmlrnlkJFcbiAgICovXG4gIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpciA9IHRoaXMubmV4dERpcjtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlSHRtbCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucGxhdGZvcm0uaXNCcm93c2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGh0bWxFbCA9IHRoaXMuZG9jLnF1ZXJ5U2VsZWN0b3IoJ2h0bWwnKSBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAoaHRtbEVsKSB7XG4gICAgICBjb25zdCBkaXIgPSB0aGlzLmRpcjtcbiAgICAgIGh0bWxFbC5zdHlsZS5kaXJlY3Rpb24gPSBkaXI7XG4gICAgICBodG1sRWwuY2xhc3NMaXN0LnJlbW92ZShSVEwsIExUUik7XG4gICAgICBodG1sRWwuY2xhc3NMaXN0LmFkZChkaXIpO1xuICAgICAgaHRtbEVsLnNldEF0dHJpYnV0ZShIVE1MX0RJUiwgZGlyKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUxpYkNvbmZpZygpOiB2b2lkIHtcbiAgICBSVExfTlpfQ09NUE9ORU5UUy5mb3JFYWNoKG5hbWUgPT4ge1xuICAgICAgdGhpcy5uei5zZXQobmFtZSBhcyBOelNhZmVBbnksIHsgbnpEaXJlY3Rpb246IHRoaXMuZGlyIH0pO1xuICAgIH0pO1xuICAgIFJUTF9ERUxPTl9DT01QT05FTlRTLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICB0aGlzLmRlbG9uLnNldChuYW1lIGFzIE56U2FmZUFueSwgeyBkaXJlY3Rpb246IHRoaXMuZGlyIH0pO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|