@delon/theme 18.3.0 → 19.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/compact.css +882 -63
- package/compact.min.css +1 -1
- package/dark.css +882 -63
- package/dark.min.css +1 -1
- package/default.css +882 -63
- package/default.min.css +1 -1
- package/fesm2022/layout-default.mjs +118 -119
- package/fesm2022/layout-default.mjs.map +1 -1
- package/fesm2022/setting-drawer.mjs +59 -94
- package/fesm2022/setting-drawer.mjs.map +1 -1
- package/fesm2022/theme-btn.mjs +27 -29
- package/fesm2022/theme-btn.mjs.map +1 -1
- package/fesm2022/theme.mjs +168 -163
- package/fesm2022/theme.mjs.map +1 -1
- package/layout-default/layout.module.d.ts +2 -3
- package/layout-default/layout.service.d.ts +3 -0
- package/package.json +6 -16
- package/setting-drawer/setting-drawer-item.component.d.ts +1 -1
- package/setting-drawer/setting-drawer.component.d.ts +1 -1
- package/setting-drawer/setting-drawer.module.d.ts +1 -13
- package/src/services/menu/menu.service.d.ts +8 -0
- package/system/ng/_drag.less +9 -0
- package/system/ng/index.less +1 -0
- package/variable.css +882 -63
- package/variable.min.css +1 -1
- package/esm2022/layout-blank/layout-blank.mjs +0 -5
- package/esm2022/layout-blank/public_api.mjs +0 -3
- package/esm2022/layout-default/layout-default.mjs +0 -5
- package/esm2022/layout-default/layout-header-item-trigger.directive.mjs +0 -16
- package/esm2022/layout-default/layout-header-item.component.mjs +0 -33
- package/esm2022/layout-default/layout-header.component.mjs +0 -138
- package/esm2022/layout-default/layout-nav.component.mjs +0 -280
- package/esm2022/layout-default/layout-top-menu-item.mjs +0 -33
- package/esm2022/layout-default/layout.component.mjs +0 -196
- package/esm2022/layout-default/layout.module.mjs +0 -71
- package/esm2022/layout-default/layout.service.mjs +0 -65
- package/esm2022/layout-default/public_api.mjs +0 -10
- package/esm2022/layout-default/types.mjs +0 -2
- package/esm2022/public_api.mjs +0 -9
- package/esm2022/setting-drawer/public_api.mjs +0 -4
- package/esm2022/setting-drawer/setting-drawer-item.component.mjs +0 -34
- package/esm2022/setting-drawer/setting-drawer.component.mjs +0 -183
- package/esm2022/setting-drawer/setting-drawer.mjs +0 -5
- package/esm2022/setting-drawer/setting-drawer.module.mjs +0 -66
- package/esm2022/setting-drawer/setting-drawer.types.mjs +0 -193
- package/esm2022/src/config.mjs +0 -2
- package/esm2022/src/locale/index.mjs +0 -2
- package/esm2022/src/locale/languages/ar-SA.mjs +0 -83
- package/esm2022/src/locale/languages/el-GR.mjs +0 -83
- package/esm2022/src/locale/languages/en-US.mjs +0 -83
- package/esm2022/src/locale/languages/es-ES.mjs +0 -83
- package/esm2022/src/locale/languages/fr-FR.mjs +0 -83
- package/esm2022/src/locale/languages/hr-HR.mjs +0 -47
- package/esm2022/src/locale/languages/it-IT.mjs +0 -83
- package/esm2022/src/locale/languages/ja-JP.mjs +0 -83
- package/esm2022/src/locale/languages/ko-KR.mjs +0 -83
- package/esm2022/src/locale/languages/pl-PL.mjs +0 -83
- package/esm2022/src/locale/languages/sl-SI.mjs +0 -82
- package/esm2022/src/locale/languages/tr-TR.mjs +0 -83
- package/esm2022/src/locale/languages/vi-VI.mjs +0 -83
- package/esm2022/src/locale/languages/zh-CN.mjs +0 -83
- package/esm2022/src/locale/languages/zh-TW.mjs +0 -83
- package/esm2022/src/locale/locale.module.mjs +0 -17
- package/esm2022/src/locale/locale.service.mjs +0 -45
- package/esm2022/src/locale/locale.tokens.mjs +0 -3
- package/esm2022/src/locale/locale.types.mjs +0 -2
- package/esm2022/src/locale/public_api.mjs +0 -20
- package/esm2022/src/pipes/date/date.pipe.mjs +0 -25
- package/esm2022/src/pipes/index.mjs +0 -6
- package/esm2022/src/pipes/keys/keys.pipe.mjs +0 -21
- package/esm2022/src/pipes/safe/html.pipe.mjs +0 -18
- package/esm2022/src/pipes/safe/url.pipe.mjs +0 -18
- package/esm2022/src/pipes/yn/yn.pipe.mjs +0 -43
- package/esm2022/src/provide.mjs +0 -51
- package/esm2022/src/router/optional-preloader.mjs +0 -21
- package/esm2022/src/services/drawer/drawer.helper.mjs +0 -110
- package/esm2022/src/services/http/http.client.mjs +0 -154
- package/esm2022/src/services/http/http.decorator.mjs +0 -212
- package/esm2022/src/services/http/http.token.mjs +0 -38
- package/esm2022/src/services/http/index.mjs +0 -4
- package/esm2022/src/services/i18n/i18n-url.guard.mjs +0 -51
- package/esm2022/src/services/i18n/i18n.mjs +0 -100
- package/esm2022/src/services/i18n/i18n.pipe.mjs +0 -18
- package/esm2022/src/services/i18n/index.mjs +0 -4
- package/esm2022/src/services/index.mjs +0 -11
- package/esm2022/src/services/menu/index.mjs +0 -3
- package/esm2022/src/services/menu/interface.mjs +0 -2
- package/esm2022/src/services/menu/menu.service.mjs +0 -297
- package/esm2022/src/services/modal/modal.helper.mjs +0 -167
- package/esm2022/src/services/preloader/preloader.mjs +0 -27
- package/esm2022/src/services/responsive/responsive.mjs +0 -53
- package/esm2022/src/services/rtl/rtl.service.mjs +0 -98
- package/esm2022/src/services/settings/index.mjs +0 -3
- package/esm2022/src/services/settings/settings.service.mjs +0 -105
- package/esm2022/src/services/settings/types.mjs +0 -2
- package/esm2022/src/services/title/title.service.mjs +0 -137
- package/esm2022/src/theme.module.mjs +0 -57
- package/esm2022/src/version.mjs +0 -3
- package/esm2022/theme-btn/public_api.mjs +0 -3
- package/esm2022/theme-btn/theme-btn.component.mjs +0 -100
- package/esm2022/theme-btn/theme-btn.mjs +0 -5
- package/esm2022/theme-btn/theme-btn.module.mjs +0 -20
- package/esm2022/theme.mjs +0 -5
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { HttpContextToken } from '@angular/common/http';
|
|
2
|
-
/**
|
|
3
|
-
* Whether to customize the handling of exception messages
|
|
4
|
-
*
|
|
5
|
-
* 是否自定义处理异常消息
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* this.http.post(`login`, {
|
|
9
|
-
* name: 'cipchk', pwd: '123456'
|
|
10
|
-
* }, {
|
|
11
|
-
* context: new HttpContext()
|
|
12
|
-
* .set(ALLOW_ANONYMOUS, true)
|
|
13
|
-
* .set(CUSTOM_ERROR, true)
|
|
14
|
-
* }).subscribe({
|
|
15
|
-
* next: console.log,
|
|
16
|
-
* error: console.log
|
|
17
|
-
* });
|
|
18
|
-
*/
|
|
19
|
-
export const CUSTOM_ERROR = new HttpContextToken(() => false);
|
|
20
|
-
/**
|
|
21
|
-
* Whether to ignore API prefixes
|
|
22
|
-
*
|
|
23
|
-
* 是否忽略API前缀
|
|
24
|
-
*
|
|
25
|
-
* @example
|
|
26
|
-
* // When environment.api.baseUrl set '/api'
|
|
27
|
-
*
|
|
28
|
-
* this.http.get(`/path`) // Request Url: /api/path
|
|
29
|
-
* this.http.get(`/path`, { context: new HttpContext().set(IGNORE_BASE_URL, true) }) // Request Url: /path
|
|
30
|
-
*/
|
|
31
|
-
export const IGNORE_BASE_URL = new HttpContextToken(() => false);
|
|
32
|
-
/**
|
|
33
|
-
* Whether to return raw response body
|
|
34
|
-
*
|
|
35
|
-
* 是否原样返回请求Body
|
|
36
|
-
*/
|
|
37
|
-
export const RAW_BODY = new HttpContextToken(() => false);
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lL3NyYy9zZXJ2aWNlcy9odHRwL2h0dHAudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEQ7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUU5RDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFakU7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENvbnRleHRUb2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuLyoqXG4gKiBXaGV0aGVyIHRvIGN1c3RvbWl6ZSB0aGUgaGFuZGxpbmcgb2YgZXhjZXB0aW9uIG1lc3NhZ2VzXG4gKlxuICog5piv5ZCm6Ieq5a6a5LmJ5aSE55CG5byC5bi45raI5oGvXG4gKlxuICogQGV4YW1wbGVcbiAqIHRoaXMuaHR0cC5wb3N0KGBsb2dpbmAsIHtcbiAqICBuYW1lOiAnY2lwY2hrJywgcHdkOiAnMTIzNDU2J1xuICogfSwge1xuICogIGNvbnRleHQ6IG5ldyBIdHRwQ29udGV4dCgpXG4gKiAgICAgICAgICAgICAgLnNldChBTExPV19BTk9OWU1PVVMsIHRydWUpXG4gKiAgICAgICAgICAgICAgLnNldChDVVNUT01fRVJST1IsIHRydWUpXG4gKiB9KS5zdWJzY3JpYmUoe1xuICogIG5leHQ6IGNvbnNvbGUubG9nLFxuICogIGVycm9yOiBjb25zb2xlLmxvZ1xuICogfSk7XG4gKi9cbmV4cG9ydCBjb25zdCBDVVNUT01fRVJST1IgPSBuZXcgSHR0cENvbnRleHRUb2tlbigoKSA9PiBmYWxzZSk7XG5cbi8qKlxuICogV2hldGhlciB0byBpZ25vcmUgQVBJIHByZWZpeGVzXG4gKlxuICog5piv5ZCm5b+955WlQVBJ5YmN57yAXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoZW4gZW52aXJvbm1lbnQuYXBpLmJhc2VVcmwgc2V0ICcvYXBpJ1xuICpcbiAqIHRoaXMuaHR0cC5nZXQoYC9wYXRoYCkgLy8gUmVxdWVzdCBVcmw6IC9hcGkvcGF0aFxuICogdGhpcy5odHRwLmdldChgL3BhdGhgLCB7IGNvbnRleHQ6IG5ldyBIdHRwQ29udGV4dCgpLnNldChJR05PUkVfQkFTRV9VUkwsIHRydWUpIH0pIC8vIFJlcXVlc3QgVXJsOiAvcGF0aFxuICovXG5leHBvcnQgY29uc3QgSUdOT1JFX0JBU0VfVVJMID0gbmV3IEh0dHBDb250ZXh0VG9rZW4oKCkgPT4gZmFsc2UpO1xuXG4vKipcbiAqIFdoZXRoZXIgdG8gcmV0dXJuIHJhdyByZXNwb25zZSBib2R5XG4gKlxuICog5piv5ZCm5Y6f5qC36L+U5Zue6K+35rGCQm9keVxuICovXG5leHBvcnQgY29uc3QgUkFXX0JPRFkgPSBuZXcgSHR0cENvbnRleHRUb2tlbigoKSA9PiBmYWxzZSk7XG4iXX0=
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export * from './http.client';
|
|
2
|
-
export * from './http.decorator';
|
|
3
|
-
export * from './http.token';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS9zcmMvc2VydmljZXMvaHR0cC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9odHRwLmNsaWVudCc7XG5leHBvcnQgKiBmcm9tICcuL2h0dHAuZGVjb3JhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vaHR0cC50b2tlbic7XG4iXX0=
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { Injectable, inject } from '@angular/core';
|
|
2
|
-
import { of } from 'rxjs';
|
|
3
|
-
import { AlainConfigService } from '@delon/util/config';
|
|
4
|
-
import { ALAIN_I18N_TOKEN } from './i18n';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class AlainI18NGuardService {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.i18nSrv = inject(ALAIN_I18N_TOKEN, { optional: true });
|
|
9
|
-
this.cogSrv = inject(AlainConfigService);
|
|
10
|
-
}
|
|
11
|
-
process(route) {
|
|
12
|
-
const lang = route.params && route.params[this.cogSrv.get('themeI18n')?.paramNameOfUrlGuard ?? 'i18n'];
|
|
13
|
-
if (lang != null) {
|
|
14
|
-
this.i18nSrv?.use(lang);
|
|
15
|
-
}
|
|
16
|
-
return of(true);
|
|
17
|
-
}
|
|
18
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AlainI18NGuardService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
19
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AlainI18NGuardService, providedIn: 'root' }); }
|
|
20
|
-
}
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AlainI18NGuardService, decorators: [{
|
|
22
|
-
type: Injectable,
|
|
23
|
-
args: [{ providedIn: 'root' }]
|
|
24
|
-
}] });
|
|
25
|
-
/**
|
|
26
|
-
* Internationalization guard, automatically recognizes the language in Url and triggers the `ALAIN_I18N_TOKEN.use` method
|
|
27
|
-
*
|
|
28
|
-
* 国际化守卫,自动识别Url中的语言,并触发 `ALAIN_I18N_TOKEN.use` 方法
|
|
29
|
-
*
|
|
30
|
-
* ```ts
|
|
31
|
-
* data: {
|
|
32
|
-
* path: 'home',
|
|
33
|
-
* canActivate: [ alainI18nCanActivate ]
|
|
34
|
-
* }
|
|
35
|
-
* ```
|
|
36
|
-
*/
|
|
37
|
-
export const alainI18nCanActivate = childRoute => inject(AlainI18NGuardService).process(childRoute);
|
|
38
|
-
/**
|
|
39
|
-
* Internationalization guard, automatically recognizes the language in Url and triggers the `ALAIN_I18N_TOKEN.use` method
|
|
40
|
-
*
|
|
41
|
-
* 国际化守卫,自动识别Url中的语言,并触发 `ALAIN_I18N_TOKEN.use` 方法
|
|
42
|
-
*
|
|
43
|
-
* ```ts
|
|
44
|
-
* data: {
|
|
45
|
-
* path: 'home',
|
|
46
|
-
* canActivateChild: [ alainI18nCanActivateChild ]
|
|
47
|
-
* }
|
|
48
|
-
* ```
|
|
49
|
-
*/
|
|
50
|
-
export const alainI18nCanActivateChild = route => inject(AlainI18NGuardService).process(route);
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi11cmwuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS9zcmMvc2VydmljZXMvaTE4bi9pMThuLXVybC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXhELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFFBQVEsQ0FBQzs7QUFHMUMsTUFBTSxPQUFPLHFCQUFxQjtJQURsQztRQUVtQixZQUFPLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkQsV0FBTSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0tBU3REO0lBUEMsT0FBTyxDQUFDLEtBQTZCO1FBQ25DLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxtQkFBbUIsSUFBSSxNQUFNLENBQUMsQ0FBQztRQUN2RyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEIsQ0FBQzs4R0FWVSxxQkFBcUI7a0hBQXJCLHFCQUFxQixjQURSLE1BQU07OzJGQUNuQixxQkFBcUI7a0JBRGpDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQWNsQzs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFrQixVQUFVLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUVuSDs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUF1QixLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuQWN0aXZhdGVDaGlsZEZuLCBDYW5BY3RpdmF0ZUZuIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFsYWluQ29uZmlnU2VydmljZSB9IGZyb20gJ0BkZWxvbi91dGlsL2NvbmZpZyc7XG5cbmltcG9ydCB7IEFMQUlOX0kxOE5fVE9LRU4gfSBmcm9tICcuL2kxOG4nO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFsYWluSTE4Tkd1YXJkU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaTE4blNydiA9IGluamVjdChBTEFJTl9JMThOX1RPS0VOLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvZ1NydiA9IGluamVjdChBbGFpbkNvbmZpZ1NlcnZpY2UpO1xuXG4gIHByb2Nlc3Mocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBsYW5nID0gcm91dGUucGFyYW1zICYmIHJvdXRlLnBhcmFtc1t0aGlzLmNvZ1Nydi5nZXQoJ3RoZW1lSTE4bicpPy5wYXJhbU5hbWVPZlVybEd1YXJkID8/ICdpMThuJ107XG4gICAgaWYgKGxhbmcgIT0gbnVsbCkge1xuICAgICAgdGhpcy5pMThuU3J2Py51c2UobGFuZyk7XG4gICAgfVxuICAgIHJldHVybiBvZih0cnVlKTtcbiAgfVxufVxuXG4vKipcbiAqIEludGVybmF0aW9uYWxpemF0aW9uIGd1YXJkLCBhdXRvbWF0aWNhbGx5IHJlY29nbml6ZXMgdGhlIGxhbmd1YWdlIGluIFVybCBhbmQgdHJpZ2dlcnMgdGhlIGBBTEFJTl9JMThOX1RPS0VOLnVzZWAgbWV0aG9kXG4gKlxuICog5Zu96ZmF5YyW5a6I5Y2r77yM6Ieq5Yqo6K+G5YirVXJs5Lit55qE6K+t6KiA77yM5bm26Kem5Y+RIGBBTEFJTl9JMThOX1RPS0VOLnVzZWAg5pa55rOVXG4gKlxuICogYGBgdHNcbiAqIGRhdGE6IHtcbiAqICBwYXRoOiAnaG9tZScsXG4gKiAgY2FuQWN0aXZhdGU6IFsgYWxhaW5JMThuQ2FuQWN0aXZhdGUgXVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBhbGFpbkkxOG5DYW5BY3RpdmF0ZTogQ2FuQWN0aXZhdGVGbiA9IGNoaWxkUm91dGUgPT4gaW5qZWN0KEFsYWluSTE4Tkd1YXJkU2VydmljZSkucHJvY2VzcyhjaGlsZFJvdXRlKTtcblxuLyoqXG4gKiBJbnRlcm5hdGlvbmFsaXphdGlvbiBndWFyZCwgYXV0b21hdGljYWxseSByZWNvZ25pemVzIHRoZSBsYW5ndWFnZSBpbiBVcmwgYW5kIHRyaWdnZXJzIHRoZSBgQUxBSU5fSTE4Tl9UT0tFTi51c2VgIG1ldGhvZFxuICpcbiAqIOWbvemZheWMluWuiOWNq++8jOiHquWKqOivhuWIq1VybOS4reeahOivreiogO+8jOW5tuinpuWPkSBgQUxBSU5fSTE4Tl9UT0tFTi51c2VgIOaWueazlVxuICpcbiAqIGBgYHRzXG4gKiBkYXRhOiB7XG4gKiAgcGF0aDogJ2hvbWUnLFxuICogIGNhbkFjdGl2YXRlQ2hpbGQ6IFsgYWxhaW5JMThuQ2FuQWN0aXZhdGVDaGlsZCBdXG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IGFsYWluSTE4bkNhbkFjdGl2YXRlQ2hpbGQ6IENhbkFjdGl2YXRlQ2hpbGRGbiA9IHJvdXRlID0+IGluamVjdChBbGFpbkkxOE5HdWFyZFNlcnZpY2UpLnByb2Nlc3Mocm91dGUpO1xuIl19
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { inject, Injectable, InjectionToken } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject, filter } from 'rxjs';
|
|
3
|
-
import { AlainConfigService } from '@delon/util/config';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@delon/util/config";
|
|
6
|
-
export const ALAIN_I18N_TOKEN = new InjectionToken('alainI18nToken', {
|
|
7
|
-
providedIn: 'root',
|
|
8
|
-
factory: () => new AlainI18NServiceFake(inject(AlainConfigService))
|
|
9
|
-
});
|
|
10
|
-
export class AlainI18nBaseService {
|
|
11
|
-
get change() {
|
|
12
|
-
return this._change$.asObservable().pipe(filter(w => w != null));
|
|
13
|
-
}
|
|
14
|
-
get defaultLang() {
|
|
15
|
-
return this._defaultLang;
|
|
16
|
-
}
|
|
17
|
-
get currentLang() {
|
|
18
|
-
return this._currentLang;
|
|
19
|
-
}
|
|
20
|
-
get data() {
|
|
21
|
-
return this._data;
|
|
22
|
-
}
|
|
23
|
-
constructor(cogSrv) {
|
|
24
|
-
this._change$ = new BehaviorSubject(null);
|
|
25
|
-
this._currentLang = '';
|
|
26
|
-
this._defaultLang = '';
|
|
27
|
-
this._data = {};
|
|
28
|
-
this.cog = cogSrv.merge('themeI18n', {
|
|
29
|
-
interpolation: ['{{', '}}']
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Flattened data source
|
|
34
|
-
*
|
|
35
|
-
* @example
|
|
36
|
-
* {
|
|
37
|
-
* "name": "Name",
|
|
38
|
-
* "sys": {
|
|
39
|
-
* "": "System",
|
|
40
|
-
* "title": "Title"
|
|
41
|
-
* }
|
|
42
|
-
* }
|
|
43
|
-
* =>
|
|
44
|
-
* {
|
|
45
|
-
* "name": "Name",
|
|
46
|
-
* "sys": "System",
|
|
47
|
-
* "sys.title": "Title"
|
|
48
|
-
* }
|
|
49
|
-
*/
|
|
50
|
-
flatData(data, parentKey) {
|
|
51
|
-
const res = {};
|
|
52
|
-
for (const key of Object.keys(data)) {
|
|
53
|
-
const value = data[key];
|
|
54
|
-
if (typeof value === 'object') {
|
|
55
|
-
const child = this.flatData(value, parentKey.concat(key));
|
|
56
|
-
Object.keys(child).forEach(childKey => (res[childKey] = child[childKey]));
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
res[(key ? parentKey.concat(key) : parentKey).join('.')] = `${value}`;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
return res;
|
|
63
|
-
}
|
|
64
|
-
fanyi(path, params) {
|
|
65
|
-
let content = this._data[path] || '';
|
|
66
|
-
if (!content)
|
|
67
|
-
return path;
|
|
68
|
-
if (!params)
|
|
69
|
-
return content;
|
|
70
|
-
if (typeof params === 'object') {
|
|
71
|
-
const interpolation = this.cog.interpolation;
|
|
72
|
-
const objParams = params;
|
|
73
|
-
Object.keys(objParams).forEach(key => (content = content.replace(new RegExp(`${interpolation[0]}\\s?${key}\\s?${interpolation[1]}`, 'g'), `${objParams[key]}`)));
|
|
74
|
-
}
|
|
75
|
-
(Array.isArray(params) ? params : [params]).forEach((item, index) => (content = content.replace(new RegExp(`\\{\\s?${index}\\s?\\}`, 'g'), `${item}`)));
|
|
76
|
-
return content;
|
|
77
|
-
}
|
|
78
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AlainI18nBaseService, deps: [{ token: i1.AlainConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
79
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AlainI18nBaseService }); }
|
|
80
|
-
}
|
|
81
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AlainI18nBaseService, decorators: [{
|
|
82
|
-
type: Injectable
|
|
83
|
-
}], ctorParameters: () => [{ type: i1.AlainConfigService }] });
|
|
84
|
-
export class AlainI18NServiceFake extends AlainI18nBaseService {
|
|
85
|
-
use(lang, data) {
|
|
86
|
-
this._data = this.flatData(data ?? {}, []);
|
|
87
|
-
this._currentLang = lang;
|
|
88
|
-
this._change$.next(lang);
|
|
89
|
-
}
|
|
90
|
-
getLangs() {
|
|
91
|
-
return [];
|
|
92
|
-
}
|
|
93
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AlainI18NServiceFake, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
94
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AlainI18NServiceFake, providedIn: 'root' }); }
|
|
95
|
-
}
|
|
96
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AlainI18NServiceFake, decorators: [{
|
|
97
|
-
type: Injectable,
|
|
98
|
-
args: [{ providedIn: 'root' }]
|
|
99
|
-
}] });
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lL3NyYy9zZXJ2aWNlcy9pMThuL2kxOG4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNELE9BQU8sRUFBRSxrQkFBa0IsRUFBd0IsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBc0Q5RSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FBbUIsZ0JBQWdCLEVBQUU7SUFDckYsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksb0JBQW9CLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7Q0FDcEUsQ0FBQyxDQUFDO0FBR0gsTUFBTSxPQUFnQixvQkFBb0I7SUFNeEMsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQXVCLENBQUM7SUFDekYsQ0FBQztJQUNELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELFlBQVksTUFBMEI7UUFqQjVCLGFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFDcEQsaUJBQVksR0FBVyxFQUFFLENB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VUFBVTs7QUF3RlgsTUFBTSxPQUFPLG9CQUFxQixTQUFRLG9CQUFvQjtJQUM1RCxHQUFHLENBQUMsSUFBWSxFQUFFLElBQTZCO1FBQzdDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDOzhHQVRVLG9CQUFvQjtrSEFBcEIsb0JBQW9CLGNBRFAsTUFBTTs7MkZBQ25CLG9CQUFvQjtrQkFEaEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGZpbHRlciB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBbGFpbkNvbmZpZ1NlcnZpY2UsIEFsYWluVGhlbWVJMThuQ29uZmlnIH0gZnJvbSAnQGRlbG9uL3V0aWwvY29uZmlnJztcbmltcG9ydCB0eXBlIHsgTnpTYWZlQW55IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcblxuaW1wb3J0IHsgX0h0dHBDbGllbnQgfSBmcm9tICcuLi9odHRwL2h0dHAuY2xpZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBBbGFpbkkxOE5TZXJ2aWNlIHtcbiAgW2tleTogc3RyaW5nXTogTnpTYWZlQW55O1xuXG4gIC8qKlxuICAgKiBDYWxsIGB1c2VgIHRvIHRyaWdnZXIgY2hhbmdlIG5vdGlmaWNhdGlvblxuICAgKlxuICAgKiDosIPnlKggYHVzZWAg6Kem5Y+R5Y+Y5pu06YCa55+lXG4gICAqL1xuICByZWFkb25seSBjaGFuZ2U6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICAvKipcbiAgICogR2V0IHRoZSBkZWZhdWx0IGxhbmd1YWdlXG4gICAqXG4gICAqIOiOt+WPlum7mOiupOivreiogFxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdExhbmc6IHN0cmluZztcblxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgbGFuZ3VhZ2VcbiAgICpcbiAgICog6I635Y+W5b2T5YmN6K+t6KiAXG4gICAqL1xuICByZWFkb25seSBjdXJyZW50TGFuZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDaGFuZ2UgbGFuZ3VhZ2VcbiAgICpcbiAgICog5Y+Y5pu06K+t6KiAXG4gICAqXG4gICAqIEBwYXJhbSBlbWl0IOaYr+WQpuinpuWPkSBgY2hhbmdlYO+8jOm7mOiupO+8mnRydWUgOyBTaG91bGQgYmUgcmVtb3ZlZCwgcGxlYXNlIHVzZSBgY2hhbmdlYCBldmVudCBpbnN0ZWFkLlxuICAgKi9cbiAgdXNlKGxhbmc6IHN0cmluZywgZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZDtcblxuICAvKipcbiAgICogUmV0dXJuIHRvIHRoZSBjdXJyZW50IGxhbmd1YWdlIGxpc3RcbiAgICpcbiAgICog6L+U5Zue5b2T5YmN6K+t6KiA5YiX6KGoXG4gICAqL1xuICBnZXRMYW5ncygpOiBOelNhZmVBbnlbXTtcblxuICAvKipcbiAgICogVHJhbnNsYXRlIOe/u+ivkVxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIOaooeadv+aJgOmcgOimgeeahOWPguaVsOWvueixoVxuICAgKiBAcGFyYW0gaXNTYWZlIOaYr+WQpui/lOWbnuWuieWFqOWtl+espu+8jOiHquWKqOiwg+eUqCBgYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWxgOyBTaG91bGQgYmUgcmVtb3ZlZCwgSWYgeW91IG5lZWQgU2FmZUh0bWwgc3VwcG9ydCwgcGxlYXNlIHVzZSBgfCBodG1sYCBwaXBlIGluc3RlYWQuXG4gICAqL1xuICBmYW55aShwYXRoOiBzdHJpbmcsIHBhcmFtcz86IHVua25vd24gfCB1bmtub3duW10pOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBBTEFJTl9JMThOX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPEFsYWluSTE4TlNlcnZpY2U+KCdhbGFpbkkxOG5Ub2tlbicsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5OiAoKSA9PiBuZXcgQWxhaW5JMThOU2VydmljZUZha2UoaW5qZWN0KEFsYWluQ29uZmlnU2VydmljZSkpXG59KTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFsYWluSTE4bkJhc2VTZXJ2aWNlIGltcGxlbWVudHMgQWxhaW5JMThOU2VydmljZSB7XG4gIHByaXZhdGUgY29nOiBBbGFpblRoZW1lSTE4bkNvbmZpZztcbiAgcHJvdGVjdGVkIF9jaGFuZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIF9jdXJyZW50TGFuZzogc3RyaW5nID0gJyc7XG4gIHByb3RlY3RlZCBfZGVmYXVsdExhbmc6IHN0cmluZyA9ICcnO1xuICBwcm90ZWN0ZWQgX2RhdGE6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgZ2V0IGNoYW5nZSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl9jaGFuZ2UkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoZmlsdGVyKHcgPT4gdyAhPSBudWxsKSkgYXMgT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICB9XG4gIGdldCBkZWZhdWx0TGFuZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9kZWZhdWx0TGFuZztcbiAgfVxuICBnZXQgY3VycmVudExhbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudExhbmc7XG4gIH1cbiAgZ2V0IGRhdGEoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihjb2dTcnY6IEFsYWluQ29uZmlnU2VydmljZSkge1xuICAgIHRoaXMuY29nID0gY29nU3J2Lm1lcmdlKCd0aGVtZUkxOG4nLCB7XG4gICAgICBpbnRlcnBvbGF0aW9uOiBbJ3t7JywgJ319J11cbiAgICB9KSE7XG4gIH1cblxuICAvKipcbiAgICogRmxhdHRlbmVkIGRhdGEgc291cmNlXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHtcbiAgICogICBcIm5hbWVcIjogXCJOYW1lXCIsXG4gICAqICAgXCJzeXNcIjoge1xuICAgKiAgICAgXCJcIjogXCJTeXN0ZW1cIixcbiAgICogICAgIFwidGl0bGVcIjogXCJUaXRsZVwiXG4gICAqICAgfVxuICAgKiB9XG4gICAqID0+XG4gICAqIHtcbiAgICogICBcIm5hbWVcIjogXCJOYW1lXCIsXG4gICAqICAgXCJzeXNcIjogXCJTeXN0ZW1cIixcbiAgICogICBcInN5cy50aXRsZVwiOiBcIlRpdGxlXCJcbiAgICogfVxuICAgKi9cbiAgZmxhdERhdGEoZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHBhcmVudEtleTogc3RyaW5nW10pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCByZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhkYXRhKSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBkYXRhW2tleV07XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBjb25zdCBjaGlsZCA9IHRoaXMuZmxhdERhdGEodmFsdWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHBhcmVudEtleS5jb25jYXQoa2V5KSk7XG4gICAgICAgIE9iamVjdC5rZXlzKGNoaWxkKS5mb3JFYWNoKGNoaWxkS2V5ID0+IChyZXNbY2hpbGRLZXldID0gY2hpbGRbY2hpbGRLZXldKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNbKGtleSA/IHBhcmVudEtleS5jb25jYXQoa2V5KSA6IHBhcmVudEtleSkuam9pbignLicpXSA9IGAke3ZhbHVlfWA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH1cblxuICBhYnN0cmFjdCB1c2UobGFuZzogc3RyaW5nLCBkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkO1xuXG4gIGFic3RyYWN0IGdldExhbmdzKCk6IE56U2FmZUFueVtdO1xuXG4gIGZhbnlpKHBhdGg6IHN0cmluZywgcGFyYW1zPzogdW5rbm93biB8IHVua25vd25bXSk6IHN0cmluZyB7XG4gICAgbGV0IGNvbnRlbnQgPSB0aGlzLl9kYXRhW3BhdGhdIHx8ICcnO1xuICAgIGlmICghY29udGVudCkgcmV0dXJuIHBhdGg7XG5cbiAgICBpZiAoIXBhcmFtcykgcmV0dXJuIGNvbnRlbnQ7XG5cbiAgICBpZiAodHlwZW9mIHBhcmFtcyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGNvbnN0IGludGVycG9sYXRpb24gPSB0aGlzLmNvZy5pbnRlcnBvbGF0aW9uISE7XG4gICAgICBjb25zdCBvYmpQYXJhbXMgPSBwYXJhbXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICBPYmplY3Qua2V5cyhvYmpQYXJhbXMpLmZvckVhY2goXG4gICAgICAgIGtleSA9PlxuICAgICAgICAgIChjb250ZW50ID0gY29udGVudC5yZXBsYWNlKFxuICAgICAgICAgICAgbmV3IFJlZ0V4cChgJHtpbnRlcnBvbGF0aW9uWzBdfVxcXFxzPyR7a2V5fVxcXFxzPyR7aW50ZXJwb2xhdGlvblsxXX1gLCAnZycpLFxuICAgICAgICAgICAgYCR7b2JqUGFyYW1zW2tleV19YFxuICAgICAgICAgICkpXG4gICAgICApO1xuICAgIH1cblxuICAgIChBcnJheS5pc0FycmF5KHBhcmFtcykgPyBwYXJhbXMgOiBbcGFyYW1zXSkuZm9yRWFjaChcbiAgICAgIChpdGVtLCBpbmRleCkgPT4gKGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXHtcXFxccz8ke2luZGV4fVxcXFxzP1xcXFx9YCwgJ2cnKSwgYCR7aXRlbX1gKSlcbiAgICApO1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQWxhaW5JMThOU2VydmljZUZha2UgZXh0ZW5kcyBBbGFpbkkxOG5CYXNlU2VydmljZSB7XG4gIHVzZShsYW5nOiBzdHJpbmcsIGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG4gICAgdGhpcy5fZGF0YSA9IHRoaXMuZmxhdERhdGEoZGF0YSA/PyB7fSwgW10pO1xuICAgIHRoaXMuX2N1cnJlbnRMYW5nID0gbGFuZztcbiAgICB0aGlzLl9jaGFuZ2UkLm5leHQobGFuZyk7XG4gIH1cblxuICBnZXRMYW5ncygpOiBOelNhZmVBbnlbXSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG59XG4iXX0=
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Pipe, inject } from '@angular/core';
|
|
2
|
-
import { ALAIN_I18N_TOKEN } from './i18n';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class I18nPipe {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.i18n = inject(ALAIN_I18N_TOKEN);
|
|
7
|
-
}
|
|
8
|
-
transform(key, params) {
|
|
9
|
-
return this.i18n.fanyi(key, params);
|
|
10
|
-
}
|
|
11
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: I18nPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
12
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: I18nPipe, isStandalone: true, name: "i18n" }); }
|
|
13
|
-
}
|
|
14
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: I18nPipe, decorators: [{
|
|
15
|
-
type: Pipe,
|
|
16
|
-
args: [{ name: 'i18n', standalone: true }]
|
|
17
|
-
}] });
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUvc3JjL3NlcnZpY2VzL2kxOG4vaTE4bi5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxRQUFRLENBQUM7O0FBRzFDLE1BQU0sT0FBTyxRQUFRO0lBRHJCO1FBRW1CLFNBQUksR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztLQUtsRDtJQUhDLFNBQVMsQ0FBQyxHQUFXLEVBQUUsTUFBNEI7UUFDakQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQzs4R0FMVSxRQUFROzRHQUFSLFFBQVE7OzJGQUFSLFFBQVE7a0JBRHBCLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQUxBSU5fSTE4Tl9UT0tFTiB9IGZyb20gJy4vaTE4bic7XG5cbkBQaXBlKHsgbmFtZTogJ2kxOG4nLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgSTE4blBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHJpdmF0ZSByZWFkb25seSBpMThuID0gaW5qZWN0KEFMQUlOX0kxOE5fVE9LRU4pO1xuXG4gIHRyYW5zZm9ybShrZXk6IHN0cmluZywgcGFyYW1zPzogdW5rbm93biB8IHVua25vd25bXSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi5mYW55aShrZXksIHBhcmFtcyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export * from './i18n';
|
|
2
|
-
export * from './i18n.pipe';
|
|
3
|
-
export * from './i18n-url.guard';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS9zcmMvc2VydmljZXMvaTE4bi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pMThuJztcbmV4cG9ydCAqIGZyb20gJy4vaTE4bi5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vaTE4bi11cmwuZ3VhcmQnO1xuIl19
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export * from './preloader/preloader';
|
|
2
|
-
export * from './menu/index';
|
|
3
|
-
export * from './settings/index';
|
|
4
|
-
export * from './responsive/responsive';
|
|
5
|
-
export * from './rtl/rtl.service';
|
|
6
|
-
export * from './title/title.service';
|
|
7
|
-
export * from './i18n/index';
|
|
8
|
-
export * from './modal/modal.helper';
|
|
9
|
-
export * from './drawer/drawer.helper';
|
|
10
|
-
export * from './http/index';
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS9zcmMvc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcHJlbG9hZGVyL3ByZWxvYWRlcic7XG5leHBvcnQgKiBmcm9tICcuL21lbnUvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXR0aW5ncy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3Jlc3BvbnNpdmUvcmVzcG9uc2l2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3J0bC9ydGwuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3RpdGxlL3RpdGxlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9pMThuL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vbW9kYWwvbW9kYWwuaGVscGVyJztcbmV4cG9ydCAqIGZyb20gJy4vZHJhd2VyL2RyYXdlci5oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9odHRwL2luZGV4JztcbiJdfQ==
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export * from './interface';
|
|
2
|
-
export * from './menu.service';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS9zcmMvc2VydmljZXMvbWVudS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9tZW51LnNlcnZpY2UnO1xuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUvc3JjL3NlcnZpY2VzL21lbnUvaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5pbXBvcnQgdHlwZSB7IEFDTENhblR5cGUgfSBmcm9tICdAZGVsb24vYWNsJztcbmltcG9ydCB0eXBlIHsgTnpTYWZlQW55IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBNZW51SWNvbiB7XG4gIC8qKlxuICAgKiBUeXBlIGZvciBpY29uXG4gICAqXG4gICAqIC0gYGltZ2AsIGBzdmdgIFNpemUgdXNlcyBgMTRweGAgd2lkdGggYW5kIGhlaWdodFxuICAgKi9cbiAgdHlwZTogJ2NsYXNzJyB8ICdpY29uJyB8ICdpY29uZm9udCcgfCAnaW1nJyB8ICdzdmcnO1xuICAvKiogVmFsdWUgZm9yIHRoZSBpY29uLCBjYW4gYmUgc2V0IENsYXNzIE5hbWUsIG56LWljb24gb2YgYG56VHlwZWAsIGltYWdlICovXG4gIHZhbHVlPzogc3RyaW5nIHwgU2FmZUh0bWw7XG4gIC8qKiBUeXBlIG9mIHRoZSBhbnQgZGVzaWduIGljb24sIGRlZmF1bHQ6IGBvdXRsaW5lYCAqL1xuICB0aGVtZT86ICdvdXRsaW5lJyB8ICd0d290b25lJyB8ICdmaWxsJztcbiAgLyoqIFJvdGF0ZSBpY29uIHdpdGggYW5pbWF0aW9uLCBkZWZhdWx0OiBgZmFsc2VgICovXG4gIHNwaW4/OiBib29sZWFuO1xuICAvKiogT25seSBzdXBwb3J0IHRoZSB0d28tdG9uZSBpY29uLiBTcGVjaWZpYyB0aGUgcHJpbWFyeSBjb2xvciAqL1xuICB0d29Ub25lQ29sb3I/OiBzdHJpbmc7XG4gIC8qKiBUeXBlIG9mIHRoZSBpY29uIGZyb20gaWNvbmZvbnQgKi9cbiAgaWNvbmZvbnQ/OiBzdHJpbmc7XG4gIC8qKiBSb3RhdGUgZGVncmVlcyAqL1xuICByb3RhdGU/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVudSB7XG4gIFtrZXk6IHN0cmluZ106IE56U2FmZUFueTtcbiAgLyoqIFRleHQgb2YgbWVudSBpdGVtLCBjYW4gYmUgY2hvb3NlIG9uZSBvZiAgYHRleHRgIG9yIGBpMThuYCAoU3VwcG9ydCBIVE1MKSAqL1xuICB0ZXh0Pzogc3RyaW5nO1xuICAvKiogSTE4biBrZXkgb2YgbWVudSBpdGVtLCBjYW4gYmUgY2hvb3NlIG9uZSBvZiAgYHRleHRgIG9yIGBpMThuYCAoU3VwcG9ydCBIVE1MKSAqL1xuICBpMThuPzogc3RyaW5nO1xuICAvKiogV2hldGhlciB0byBkaXNwbGF5IHRoZSBncm91cCBuYW1lLCBkZWZhdWx0OiBgdHJ1ZWAgKi9cbiAgZ3JvdXA/OiBib29sZWFuO1xuICAvKiogUm91dGluZyBmb3IgdGhlIG1lbnUgaXRlbSwgY2FuIGJlIGNob29zZSBvbmUgb2YgYGxpbmtgIG9yIGBleHRlcm5hbExpbmtgICovXG4gIGxpbms/OiBzdHJpbmc7XG4gIC8qKiBFeHRlcm5hbCBsaW5rIGZvciB0aGUgbWVudSBpdGVtLCBjYW4gYmUgY2hvb3NlIG9uZSBvZiBgbGlua2Agb3IgYGV4dGVybmFsTGlua2AgKi9cbiAgZXh0ZXJuYWxMaW5rPzogc3RyaW5nO1xuICAvKiogU3BlY2lmaWVzIGBleHRlcm5hbExpbmtgIHdoZXJlIHRvIGRpc3BsYXkgdGhlIGxpbmtlZCBVUkwgKi9cbiAgdGFyZ2V0PzogJ19ibGFuaycgfCAnX3NlbGYnIHwgJ19wYXJlbnQnIHwgJ190b3AnO1xuICAvKiogSWNvbiBmb3IgdGhlIG1lbnUgaXRlbSwgb25seSB2YWxpZCBmb3IgdGhlIGZpcnN0IGxldmVsIG1lbnUgKi9cbiAgaWNvbj86IHN0cmluZyB8IE1lbnVJY29uIHwgbnVsbDtcbiAgLyoqIEJhZGdldCBmb3IgdGhlIG1lbnUgaXRlbSB3aGVuIGBncm91cGAgaXMgYHRydWVgICovXG4gIGJhZGdlPzogbnVtYmVyO1xuICAvKiogV2hldGhlciB0byBkaXNwbGF5IGEgcmVkIGRvdCBpbnN0ZWFkIG9mIGBiYWRnZWAgdmFsdWUgKi9cbiAgYmFkZ2VEb3Q/OiBib29sZWFuO1xuICAvKiogQmFkZ2UgW2NvbG9yXShodHRwczovL25nLmFudC5kZXNpZ24vY29tcG9uZW50cy9iYWRnZS9lbiNuei1iYWRnZSkgKi9cbiAgYmFkZ2VTdGF0dXM/OiAnc3VjY2VzcycgfCAncHJvY2Vzc2luZycgfCAnZGVmYXVsdCcgfCAnZXJyb3InIHwgJ3dhcm5pbmcnO1xuICAvKiogV2hldGhlciBkaXNhYmxlIGZvciB0aGUgbWVudSBpdGVtICovXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgaGlkZGVuIGZvciB0aGUgbWVudSBpdGVtICovXG4gIGhpZGU/OiBib29sZWFuO1xuICAvKiogV2hldGhlciBoaWRlIGluIGJyZWFkY3J1bWJzLCB3aGljaCBhcmUgdmFsaWQgd2hlbiB0aGUgYHBhZ2UtaGVhZGVyYCBjb21wb25lbnQgYXV0b21hdGljYWxseSBnZW5lcmF0ZXMgYnJlYWRjcnVtYnMgKi9cbiAgaGlkZUluQnJlYWRjcnVtYj86IGJvb2xlYW47XG4gIC8qKiBBQ0wgY29uZmlndXJhdGlvbiwgaXQncyBlcXVpdmFsZW50IHRvIGBBQ0xTZXJ2aWNlLmNhbihyb2xlT3JBYmlsaXR5OiBBQ0xDYW5UeXBlKWAgcGFyYW1ldGVyIHZhbHVlICovXG4gIGFjbD86IEFDTENhblR5cGU7XG4gIC8qKiBXaGV0aGVyIHNob3J0Y3V0IG1lbnUgaXRlbSAqL1xuICBzaG9ydGN1dD86IGJvb2xlYW47XG4gIC8qKiBXaGV0ZXIgc2hvcnRjdXQgbWVudSByb290IG5vZGUgKi9cbiAgc2hvcnRjdXRSb290PzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdG8gYWxsb3cgcmV1c2UsIG5lZWQgdG8gY29vcGVyYXRlIHdpdGggdGhlIGByZXVzZS10YWJgIGNvbXBvbmVudCAqL1xuICByZXVzZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGV4cGFuZCwgd2hlbiBgY2hlY2tTdHJpY3RseWAgaXMgdmFsaWQgaW4gYHNpZGViYXItbmF2YCBjb21wb25lbnRcbiAgICovXG4gIG9wZW4/OiBib29sZWFuO1xuICAvKiogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIG1lbnUgaXRlbSwgY2FuIGJlIHVzZWQgaW4gYGdldEl0ZW1gLGAgc2V0SXRlbWAgdG8gdXBkYXRlIGEgbWVudSAqL1xuICBrZXk/OiBzdHJpbmc7XG4gIC8qKiBDaGlsZHJlbiBtZW51IG9mIG1lbnUgaXRlbSAqL1xuICBjaGlsZHJlbj86IE1lbnVbXTtcbn1cblxuLyoqIEBpbm5lciBKdXN0IG9ubHkgaW5uZXIgdHlwZSAqL1xuZXhwb3J0IGludGVyZmFjZSBNZW51SW5uZXIgZXh0ZW5kcyBNZW51IHtcbiAgX2lkPzogbnVtYmVyO1xuICBfcGFyZW50PzogTWVudSB8IG51bGw7XG4gIF9kZXB0aD86IG51bWJlcjtcbiAgX2hpZGRlbj86IGJvb2xlYW47XG4gIF9zZWxlY3RlZD86IGJvb2xlYW47XG4gIF9hY2xSZXN1bHQ/OiBib29sZWFuO1xufVxuIl19
|
|
@@ -1,297 +0,0 @@
|
|
|
1
|
-
import { Injectable, inject } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject, share } from 'rxjs';
|
|
3
|
-
import { ACLService } from '@delon/acl';
|
|
4
|
-
import { ALAIN_I18N_TOKEN } from '../i18n/i18n';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
/**
|
|
7
|
-
* 菜单服务,[在线文档](https://ng-alain.com/theme/menu)
|
|
8
|
-
*/
|
|
9
|
-
export class MenuService {
|
|
10
|
-
constructor() {
|
|
11
|
-
this.i18nSrv = inject(ALAIN_I18N_TOKEN);
|
|
12
|
-
this.aclService = inject(ACLService);
|
|
13
|
-
this._change$ = new BehaviorSubject([]);
|
|
14
|
-
this.data = [];
|
|
15
|
-
/**
|
|
16
|
-
* 是否完全受控菜单打开状态,默认:`false`
|
|
17
|
-
*/
|
|
18
|
-
this.openStrictly = false;
|
|
19
|
-
this.i18n$ = this.i18nSrv.change.subscribe(() => this.resume());
|
|
20
|
-
}
|
|
21
|
-
get change() {
|
|
22
|
-
return this._change$.pipe(share());
|
|
23
|
-
}
|
|
24
|
-
get menus() {
|
|
25
|
-
return this.data;
|
|
26
|
-
}
|
|
27
|
-
visit(data, callback) {
|
|
28
|
-
const inFn = (list, parentMenu, depth) => {
|
|
29
|
-
for (const item of list) {
|
|
30
|
-
callback(item, parentMenu, depth);
|
|
31
|
-
if (item.children && item.children.length > 0) {
|
|
32
|
-
inFn(item.children, item, depth + 1);
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
item.children = [];
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
inFn(data, null, 0);
|
|
40
|
-
}
|
|
41
|
-
add(items) {
|
|
42
|
-
this.data = items;
|
|
43
|
-
this.resume();
|
|
44
|
-
}
|
|
45
|
-
fixItem(item) {
|
|
46
|
-
item._aclResult = true;
|
|
47
|
-
if (!item.link)
|
|
48
|
-
item.link = '';
|
|
49
|
-
if (!item.externalLink)
|
|
50
|
-
item.externalLink = '';
|
|
51
|
-
// badge
|
|
52
|
-
if (item.badge) {
|
|
53
|
-
if (item.badgeDot !== true) {
|
|
54
|
-
item.badgeDot = false;
|
|
55
|
-
}
|
|
56
|
-
if (!item.badgeStatus) {
|
|
57
|
-
item.badgeStatus = 'error';
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
if (!Array.isArray(item.children)) {
|
|
61
|
-
item.children = [];
|
|
62
|
-
}
|
|
63
|
-
// icon
|
|
64
|
-
if (typeof item.icon === 'string') {
|
|
65
|
-
let type = 'class';
|
|
66
|
-
let value = item.icon;
|
|
67
|
-
// compatible `anticon anticon-user`
|
|
68
|
-
if (~item.icon.indexOf(`anticon-`)) {
|
|
69
|
-
type = 'icon';
|
|
70
|
-
value = value.split('-').slice(1).join('-');
|
|
71
|
-
}
|
|
72
|
-
else if (/^https?:\/\//.test(item.icon)) {
|
|
73
|
-
type = 'img';
|
|
74
|
-
}
|
|
75
|
-
item.icon = { type, value };
|
|
76
|
-
}
|
|
77
|
-
if (item.icon != null) {
|
|
78
|
-
item.icon = { theme: 'outline', spin: false, ...item.icon };
|
|
79
|
-
}
|
|
80
|
-
item.text = item.i18n ? this.i18nSrv.fanyi(item.i18n) : item.text;
|
|
81
|
-
// group
|
|
82
|
-
item.group = item.group !== false;
|
|
83
|
-
// hidden
|
|
84
|
-
item._hidden = typeof item.hide === 'undefined' ? false : item.hide;
|
|
85
|
-
// disabled
|
|
86
|
-
item.disabled = typeof item.disabled === 'undefined' ? false : item.disabled;
|
|
87
|
-
// acl
|
|
88
|
-
item._aclResult = item.acl ? this.aclService.can(item.acl) : true;
|
|
89
|
-
item.open = item.open != null ? item.open : false;
|
|
90
|
-
}
|
|
91
|
-
resume(callback) {
|
|
92
|
-
let i = 1;
|
|
93
|
-
const shortcuts = [];
|
|
94
|
-
this.visit(this.data, (item, parent, depth) => {
|
|
95
|
-
item._id = i++;
|
|
96
|
-
item._parent = parent;
|
|
97
|
-
item._depth = depth;
|
|
98
|
-
this.fixItem(item);
|
|
99
|
-
// shortcut
|
|
100
|
-
if (parent && item.shortcut === true && parent.shortcutRoot !== true) {
|
|
101
|
-
shortcuts.push(item);
|
|
102
|
-
}
|
|
103
|
-
if (callback)
|
|
104
|
-
callback(item, parent, depth);
|
|
105
|
-
});
|
|
106
|
-
this.loadShortcut(shortcuts);
|
|
107
|
-
this._change$.next(this.data);
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* 加载快捷菜单,加载位置规则如下:
|
|
111
|
-
* 1、统一在下标0的节点下(即【主导航】节点下方)
|
|
112
|
-
* 1、若 children 存在 【shortcutRoot: true】则最优先【推荐】这种方式
|
|
113
|
-
* 2、否则查找带有【dashboard】字样链接,若存在则在此菜单的下方创建快捷入口
|
|
114
|
-
* 3、否则放在0节点位置
|
|
115
|
-
*/
|
|
116
|
-
loadShortcut(shortcuts) {
|
|
117
|
-
if (shortcuts.length === 0 || this.data.length === 0) {
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
const ls = this.data[0].children;
|
|
121
|
-
let pos = ls.findIndex(w => w.shortcutRoot === true);
|
|
122
|
-
if (pos === -1) {
|
|
123
|
-
pos = ls.findIndex(w => w.link.includes('dashboard'));
|
|
124
|
-
pos = (pos !== -1 ? pos : -1) + 1;
|
|
125
|
-
const shortcutMenu = {
|
|
126
|
-
text: '快捷菜单',
|
|
127
|
-
i18n: 'shortcut',
|
|
128
|
-
icon: 'icon-rocket',
|
|
129
|
-
children: []
|
|
130
|
-
};
|
|
131
|
-
this.data[0].children.splice(pos, 0, shortcutMenu);
|
|
132
|
-
}
|
|
133
|
-
let _data = this.data[0].children[pos];
|
|
134
|
-
if (_data.i18n)
|
|
135
|
-
_data.text = this.i18nSrv.fanyi(_data.i18n);
|
|
136
|
-
_data = Object.assign(_data, {
|
|
137
|
-
shortcutRoot: true,
|
|
138
|
-
_id: -1,
|
|
139
|
-
_parent: null,
|
|
140
|
-
_depth: 1
|
|
141
|
-
});
|
|
142
|
-
_data.children = shortcuts.map(i => {
|
|
143
|
-
i._depth = 2;
|
|
144
|
-
i._parent = _data;
|
|
145
|
-
return i;
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* 清空菜单
|
|
150
|
-
*/
|
|
151
|
-
clear() {
|
|
152
|
-
this.data = [];
|
|
153
|
-
this._change$.next(this.data);
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Use `url` or `key` to find menus
|
|
157
|
-
*
|
|
158
|
-
* 利用 `url` 或 `key` 查找菜单
|
|
159
|
-
*/
|
|
160
|
-
find(options) {
|
|
161
|
-
const opt = { recursive: false, ignoreHide: false, last: false, ...options };
|
|
162
|
-
if (opt.key != null) {
|
|
163
|
-
return this.getItem(opt.key);
|
|
164
|
-
}
|
|
165
|
-
let url = opt.url;
|
|
166
|
-
let item = null;
|
|
167
|
-
while (!item && url) {
|
|
168
|
-
this.visit(opt.data ?? this.data, i => {
|
|
169
|
-
if (!opt.last && item != null) {
|
|
170
|
-
return;
|
|
171
|
-
}
|
|
172
|
-
if (opt.ignoreHide && i.hide) {
|
|
173
|
-
return;
|
|
174
|
-
}
|
|
175
|
-
if (opt.cb) {
|
|
176
|
-
const res = opt.cb(i);
|
|
177
|
-
if (typeof res === 'boolean' && res) {
|
|
178
|
-
item = i;
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
if (i.link != null && i.link === url) {
|
|
182
|
-
item = i;
|
|
183
|
-
}
|
|
184
|
-
});
|
|
185
|
-
if (!opt.recursive)
|
|
186
|
-
break;
|
|
187
|
-
if (/[?;]/g.test(url)) {
|
|
188
|
-
url = url.split(/[?;]/g)[0];
|
|
189
|
-
}
|
|
190
|
-
else {
|
|
191
|
-
url = url.split('/').slice(0, -1).join('/');
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
return item;
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* 根据url获取菜单列表
|
|
198
|
-
* - 若 `recursive: true` 则会自动向上递归查找
|
|
199
|
-
* - 菜单数据源包含 `/ware`,则 `/ware/1` 也视为 `/ware` 项
|
|
200
|
-
*/
|
|
201
|
-
getPathByUrl(url, recursive = false) {
|
|
202
|
-
const ret = [];
|
|
203
|
-
let item = this.find({ url, recursive });
|
|
204
|
-
if (!item)
|
|
205
|
-
return ret;
|
|
206
|
-
do {
|
|
207
|
-
ret.splice(0, 0, item);
|
|
208
|
-
item = item._parent;
|
|
209
|
-
} while (item);
|
|
210
|
-
return ret;
|
|
211
|
-
}
|
|
212
|
-
/**
|
|
213
|
-
* Get menu based on `key`
|
|
214
|
-
*/
|
|
215
|
-
getItem(key) {
|
|
216
|
-
let res = null;
|
|
217
|
-
this.visit(this.data, item => {
|
|
218
|
-
if (res == null && item.key === key) {
|
|
219
|
-
res = item;
|
|
220
|
-
}
|
|
221
|
-
});
|
|
222
|
-
return res;
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* Set menu based on `key`
|
|
226
|
-
*/
|
|
227
|
-
setItem(key, value, options) {
|
|
228
|
-
const item = typeof key === 'string' ? this.getItem(key) : key;
|
|
229
|
-
if (item == null)
|
|
230
|
-
return;
|
|
231
|
-
Object.keys(value).forEach(k => {
|
|
232
|
-
item[k] = value[k];
|
|
233
|
-
});
|
|
234
|
-
this.fixItem(item);
|
|
235
|
-
if (options?.emit !== false)
|
|
236
|
-
this._change$.next(this.data);
|
|
237
|
-
}
|
|
238
|
-
/**
|
|
239
|
-
* Open menu based on `key` or menu object
|
|
240
|
-
*/
|
|
241
|
-
open(keyOrItem, options) {
|
|
242
|
-
let item = typeof keyOrItem === 'string' ? this.find({ key: keyOrItem }) : keyOrItem;
|
|
243
|
-
if (item == null)
|
|
244
|
-
return;
|
|
245
|
-
this.visit(this.menus, (i) => {
|
|
246
|
-
i._selected = false;
|
|
247
|
-
if (!this.openStrictly)
|
|
248
|
-
i.open = false;
|
|
249
|
-
});
|
|
250
|
-
do {
|
|
251
|
-
item._selected = true;
|
|
252
|
-
item.open = true;
|
|
253
|
-
item = item._parent;
|
|
254
|
-
} while (item);
|
|
255
|
-
if (options?.emit !== false)
|
|
256
|
-
this._change$.next(this.data);
|
|
257
|
-
}
|
|
258
|
-
openAll(status) {
|
|
259
|
-
this.toggleOpen(null, { allStatus: status });
|
|
260
|
-
}
|
|
261
|
-
toggleOpen(keyOrItem, options) {
|
|
262
|
-
let item = typeof keyOrItem === 'string' ? this.find({ key: keyOrItem }) : keyOrItem;
|
|
263
|
-
if (item == null) {
|
|
264
|
-
this.visit(this.menus, (i) => {
|
|
265
|
-
i._selected = false;
|
|
266
|
-
i.open = options?.allStatus === true;
|
|
267
|
-
});
|
|
268
|
-
}
|
|
269
|
-
else {
|
|
270
|
-
if (!this.openStrictly) {
|
|
271
|
-
this.visit(this.menus, (i) => {
|
|
272
|
-
if (i !== item)
|
|
273
|
-
i.open = false;
|
|
274
|
-
});
|
|
275
|
-
let pItem = item._parent;
|
|
276
|
-
while (pItem) {
|
|
277
|
-
pItem.open = true;
|
|
278
|
-
pItem = pItem._parent;
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
item.open = !item.open;
|
|
282
|
-
}
|
|
283
|
-
if (options?.emit !== false)
|
|
284
|
-
this._change$.next(this.data);
|
|
285
|
-
}
|
|
286
|
-
ngOnDestroy() {
|
|
287
|
-
this._change$.unsubscribe();
|
|
288
|
-
this.i18n$?.unsubscribe();
|
|
289
|
-
}
|
|
290
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: MenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
291
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: MenuService, providedIn: 'root' }); }
|
|
292
|
-
}
|
|
293
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: MenuService, decorators: [{
|
|
294
|
-
type: Injectable,
|
|
295
|
-
args: [{ providedIn: 'root' }]
|
|
296
|
-
}], ctorParameters: () => [] });
|
|
297
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUvc3JjL3NlcnZpY2VzL21lbnUvbWVudS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQTRCLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV4RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBR3hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFHaEQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sV0FBVztJQVd0QjtRQVZpQixZQUFPLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDbkMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6QyxhQUFRLEdBQTRCLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRXBFLFNBQUksR0FBVyxFQUFFLENBQUM7UUFDMUI7O1dBRUc7UUFDSCxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUduQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUlELEtBQUssQ0FBQyxJQUFZLEVBQUUsUUFBd0U7UUFDMUYsTUFBTSxJQUFJLEdBQUcsQ0FB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TCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQVksRUFBRSxFQUFFO29CQUN0QyxJQUFJLENBQUMsS0FBSyxJQUFJO3dCQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO2dCQUNqQyxDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUN6QixPQUFPLEtBQUssRUFBRSxDQUFDO29CQUNiLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO29CQUNsQixLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztnQkFDeEIsQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN6QixDQUFDO1FBQ0QsSUFBSSxPQUFPLEVBQUUsSUFBSSxLQUFLLEtBQUs7WUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDNUIsQ0FBQzs4R0F4VlUsV0FBVztrSEFBWCxXQUFXLGNBREUsTUFBTTs7MkZBQ25CLFdBQVc7a0JBRHZCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBzaGFyZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBQ0xTZXJ2aWNlIH0gZnJvbSAnQGRlbG9uL2FjbCc7XG5pbXBvcnQgdHlwZSB7IE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5cbmltcG9ydCB7IEFMQUlOX0kxOE5fVE9LRU4gfSBmcm9tICcuLi9pMThuL2kxOG4nO1xuaW1wb3J0IHsgTWVudSwgTWVudUljb24sIE1lbnVJbm5lciB9IGZyb20gJy4vaW50ZXJmYWNlJztcblxuLyoqXG4gKiDoj5zljZXmnI3liqHvvIxb5Zyo57q/5paH5qGjXShodHRwczovL25nLWFsYWluLmNvbS90aGVtZS9tZW51KVxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE1lbnVTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBpMThuU3J2ID0gaW5qZWN0KEFMQUlOX0kxOE5fVE9LRU4pO1xuICBwcml2YXRlIHJlYWRvbmx5IGFjbFNlcnZpY2UgPSBpbmplY3QoQUNMU2VydmljZSk7XG4gIHByaXZhdGUgX2NoYW5nZSQ6IEJlaGF2aW9yU3ViamVjdDxNZW51W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZW51W10+KFtdKTtcbiAgcHJpdmF0ZSBpMThuJD86IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBkYXRhOiBNZW51W10gPSBbXTtcbiAgLyoqXG4gICAqIOaYr+WQpuWujOWFqOWPl+aOp+iPnOWNleaJk+W8gOeKtuaAge+8jOm7mOiupO+8mmBmYWxzZWBcbiAgICovXG4gIG9wZW5TdHJpY3RseSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaTE4biQgPSB0aGlzLmkxOG5TcnYuY2hhbmdlLnN1YnNjcmliZSgoKSA9PiB0aGlzLnJlc3VtZSgpKTtcbiAgfVxuXG4gIGdldCBjaGFuZ2UoKTogT2JzZXJ2YWJsZTxNZW51W10+IHtcbiAgICByZXR1cm4gdGhpcy5fY2hhbmdlJC5waXBlKHNoYXJlKCkpO1xuICB9XG5cbiAgZ2V0IG1lbnVzKCk6IE1lbnVbXSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgfVxuXG4gIHZpc2l0PFQgZXh0ZW5kcyBNZW51ID0gTWVudT4oZGF0YTogVFtdLCBjYWxsYmFjazogKGl0ZW06IFQsIHBhcmVudE1lbnVtOiBUIHwgbnVsbCwgZGVwdGg/OiBudW1iZXIpID0+IHZvaWQpOiB2b2lkO1xuICB2aXNpdChkYXRhOiBNZW51W10sIGNhbGxiYWNrOiAoaXRlbTogTWVudSwgcGFyZW50TWVudW06IE1lbnUgfCBudWxsLCBkZXB0aD86IG51bWJlcikgPT4gdm9pZCk6IHZvaWQ7XG4gIHZpc2l0KGRhdGE6IE1lbnVbXSwgY2FsbGJhY2s6IChpdGVtOiBNZW51LCBwYXJlbnRNZW51bTogTWVudSB8IG51bGwsIGRlcHRoPzogbnVtYmVyKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgY29uc3QgaW5GbiA9IChsaXN0OiBNZW51W10sIHBhcmVudE1lbnU6IE1lbnUgfCBudWxsLCBkZXB0aDogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgbGlzdCkge1xuICAgICAgICBjYWxsYmFjayhpdGVtLCBwYXJlbnRNZW51LCBkZXB0aCk7XG4gICAgICAgIGlmIChpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGluRm4oaXRlbS5jaGlsZHJlbiwgaXRlbSwgZGVwdGggKyAxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtLmNoaWxkcmVuID0gW107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaW5GbihkYXRhLCBudWxsLCAwKTtcbiAgfVxuXG4gIGFkZChpdGVtczogTWVudVtdKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhID0gaXRlbXM7XG4gICAgdGhpcy5yZXN1bWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZml4SXRlbShpdGVtOiBNZW51SW5uZXIpOiB2b2lkIHtcbiAgICBpdGVtLl9hY2xSZXN1bHQgPSB0cnVlO1xuXG4gICAgaWYgKCFpdGVtLmxpbmspIGl0ZW0ubGluayA9ICcnO1xuICAgIGlmICghaXRlbS5leHRlcm5hbExpbmspIGl0ZW0uZXh0ZXJuYWxMaW5rID0gJyc7XG5cbiAgICAvLyBiYWRnZVxuICAgIGlmIChpdGVtLmJhZGdlKSB7XG4gICAgICBpZiAoaXRlbS5iYWRnZURvdCAhPT0gdHJ1ZSkge1xuICAgICAgICBpdGVtLmJhZGdlRG90ID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoIWl0ZW0uYmFkZ2VTdGF0dXMpIHtcbiAgICAgICAgaXRlbS5iYWRnZVN0YXR1cyA9ICdlcnJvcic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGl0ZW0uY2hpbGRyZW4pKSB7XG4gICAgICBpdGVtLmNoaWxkcmVuID0gW107XG4gICAgfVxuXG4gICAgLy8gaWNvblxuICAgIGlmICh0eXBlb2YgaXRlbS5pY29uID09PSAnc3RyaW5nJykge1xuICAgICAgbGV0IHR5cGUgPSAnY2xhc3MnO1xuICAgICAgbGV0IHZhbHVlID0gaXRlbS5pY29uO1xuICAgICAgLy8gY29tcGF0aWJsZSBgYW50aWNvbiBhbnRpY29uLXVzZXJgXG4gICAgICBpZiAofml0ZW0uaWNvbi5pbmRleE9mKGBhbnRpY29uLWApKSB7XG4gICAgICAgIHR5cGUgPSAnaWNvbic7XG4gICAgICAgIHZhbHVlID0gdmFsdWUuc3BsaXQoJy0nKS5zbGljZSgxKS5qb2luKCctJyk7XG4gICAgICB9IGVsc2UgaWYgKC9eaHR0cHM/OlxcL1xcLy8udGVzdChpdGVtLmljb24pKSB7XG4gICAgICAgIHR5cGUgPSAnaW1nJztcbiAgICAgIH1cbiAgICAgIGl0ZW0uaWNvbiA9IHsgdHlwZSwgdmFsdWUgfSBhcyBOelNhZmVBbnk7XG4gICAgfVxuICAgIGlmIChpdGVtLmljb24gIT0gbnVsbCkge1xuICAgICAgaXRlbS5pY29uID0geyB0aGVtZTogJ291dGxpbmUnLCBzcGluOiBmYWxzZSwgLi4uKGl0ZW0uaWNvbiBhcyBNZW51SWNvbikgfTtcbiAgICB9XG5cbiAgICBpdGVtLnRleHQgPSBpdGVtLmkxOG4gPyB0aGlzLmkxOG5TcnYuZmFueWkoaXRlbS5pMThuKSA6IGl0ZW0udGV4dDtcblxuICAgIC8vIGdyb3VwXG4gICAgaXRlbS5ncm91cCA9IGl0ZW0uZ3JvdXAgIT09IGZhbHNlO1xuXG4gICAgLy8gaGlkZGVuXG4gICAgaXRlbS5faGlkZGVuID0gdHlwZW9mIGl0ZW0uaGlkZSA9PT0gJ3VuZGVmaW5lZCcgPyBmYWxzZSA6IGl0ZW0uaGlkZTtcblxuICAgIC8vIGRpc2FibGVkXG4gICAgaXRlbS5kaXNhYmxlZCA9IHR5cGVvZiBpdGVtLmRpc2FibGVkID09PSAndW5kZWZpbmVkJyA/IGZhbHNlIDogaXRlbS5kaXNhYmxlZDtcblxuICAgIC8vIGFjbFxuICAgIGl0ZW0uX2FjbFJlc3VsdCA9IGl0ZW0uYWNsID8gdGhpcy5hY2xTZXJ2aWNlLmNhbihpdGVtLmFjbCkgOiB0cnVlO1xuXG4gICAgaXRlbS5vcGVuID0gaXRlbS5vcGVuICE9IG51bGwgPyBpdGVtLm9wZW4gOiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiDph43nva7oj5zljZXvvIzlj6/og71JMThO44CB55So5oi35p2D6ZmQ5Y+Y5Yqo5pe26ZyA6KaB6LCD55So5Yi35pawXG4gICAqL1xuICByZXN1bWU8VCBleHRlbmRzIE1lbnUgPSBNZW51PihjYWxsYmFjaz86IChpdGVtOiBULCBwYXJlbnRNZW51bTogVCB8IG51bGwsIGRlcHRoPzogbnVtYmVyKSA9PiB2b2lkKTogdm9pZDtcbiAgcmVzdW1lKGNhbGxiYWNrPzogKGl0ZW06IE1lbnUsIHBhcmVudE1lbnVtOiBNZW51IHwgbnVsbCwgZGVwdGg/OiBudW1iZXIpID0+IHZvaWQpOiB2b2lkO1xuICByZXN1bWUoY2FsbGJhY2s/OiAoaXRlbTogTWVudSwgcGFyZW50TWVudW06IE1lbnUgfCBudWxsLCBkZXB0aD86IG51bWJlcikgPT4gdm9pZCk6IHZvaWQge1xuICAgIGxldCBpID0gMTtcbiAgICBjb25zdCBzaG9ydGN1dHM6IE1lbnVbXSA9IFtdO1xuICAgIHRoaXMudmlzaXQodGhpcy5kYXRhLCAoaXRlbTogTWVudUlubmVyLCBwYXJlbnQsIGRlcHRoKSA9PiB7XG4gICAgICBpdGVtLl9pZCA9IGkrKztcbiAgICAgIGl0ZW0uX3BhcmVudCA9IHBhcmVudDtcbiAgICAgIGl0ZW0uX2RlcHRoID0gZGVwdGg7XG4gICAgICB0aGlzLmZpeEl0ZW0oaXRlbSk7XG5cbiAgICAgIC8vIHNob3J0Y3V0XG4gICAgICBpZiAocGFyZW50ICYmIGl0ZW0uc2hvcnRjdXQgPT09IHRydWUgJiYgcGFyZW50LnNob3J0Y3V0Um9vdCAhPT0gdHJ1ZSkge1xuICAgICAgICBzaG9ydGN1dHMucHVzaChpdGVtKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjayhpdGVtLCBwYXJlbnQsIGRlcHRoKTtcbiAgICB9KTtcblxuICAgIHRoaXMubG9hZFNob3J0Y3V0KHNob3J0Y3V0cyk7XG4gICAgdGhpcy5fY2hhbmdlJC5uZXh0KHRoaXMuZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICog5Yqg6L295b+r5o236I+c5Y2V77yM5Yqg6L295L2N572u6KeE5YiZ5aaC5LiL77yaXG4gICAqIDHjgIHnu5/kuIDlnKjkuIvmoIcw55qE6IqC54K55LiL77yI5Y2z44CQ5Li75a+86Iiq44CR6IqC54K55LiL5pa577yJXG4gICAqICAgICAgMeOAgeiLpSBjaGlsZHJlbiDlrZjlnKgg44CQc2hvcnRjdXRSb290OiB0cnVl44CR5YiZ5pyA5LyY5YWI44CQ5o6o6I2Q44CR6L+Z56eN5pa55byPXG4gICAqICAgICAgMuOAgeWQpuWImeafpeaJvuW4puacieOAkGRhc2hib2FyZOOAkeWtl+agt+mTvuaOpe+8jOiLpeWtmOWcqOWImeWcqOatpOiPnOWNleeahOS4i+aWueWIm+W7uuW/q+aNt+WFpeWPo1xuICAgKiAgICAgIDPjgIHlkKbliJnmlL7lnKgw6IqC54K55L2N572uXG4gICAqL1xuICBwcml2YXRlIGxvYWRTaG9ydGN1dChzaG9ydGN1dHM6IE1lbnVJbm5lcltdKTogdm9pZCB7XG4gICAgaWYgKHNob3J0Y3V0cy5sZW5ndGggPT09IDAgfHwgdGhpcy5kYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxzID0gdGhpcy5kYXRhWzBdLmNoaWxkcmVuIGFzIE1lbnVJbm5lcltdO1xuICAgIGxldCBwb3MgPSBscy5maW5kSW5kZXgodyA9PiB3LnNob3J0Y3V0Um9vdCA9PT0gdHJ1ZSk7XG4gICAgaWYgKHBvcyA9PT0gLTEpIHtcbiAgICAgIHBvcyA9IGxzLmZpbmRJbmRleCh3ID0+IHcubGluayEuaW5jbHVkZXMoJ2Rhc2hib2FyZCcpKTtcbiAgICAgIHBvcyA9IChwb3MgIT09IC0xID8gcG9zIDogLTEpICsgMTtcbiAgICAgIGNvbnN0IHNob3J0Y3V0TWVudSA9IHtcbiAgICAgICAgdGV4dDogJ+W/q+aNt+iPnOWNlScsXG4gICAgICAgIGkxOG46ICdzaG9ydGN1dCcsXG4gICAgICAgIGljb246ICdpY29uLXJvY2tldCcsXG4gICAgICAgIGNoaWxkcmVuOiBbXVxuICAgICAgfSBhcyBNZW51SW5uZXI7XG4gICAgICB0aGlzLmRhdGFbMF0uY2hpbGRyZW4hLnNwbGljZShwb3MsIDAsIHNob3J0Y3V0TWVudSk7XG4gICAgfVxuICAgIGxldCBfZGF0YSA9IHRoaXMuZGF0YVswXS5jaGlsZHJlbiFbcG9zXTtcbiAgICBpZiAoX2RhdGEuaTE4bikgX2RhdGEudGV4dCA9IHRoaXMuaTE4blNydi5mYW55aShfZGF0YS5pMThuKTtcbiAgICBfZGF0YSA9IE9iamVjdC5hc3NpZ24oX2RhdGEsIHtcbiAgICAgIHNob3J0Y3V0Um9vdDogdHJ1ZSxcbiAgICAgIF9pZDogLTEsXG4gICAgICBfcGFyZW50OiBudWxsLFxuICAgICAgX2RlcHRoOiAxXG4gICAgfSBhcyBNZW51SW5uZXIpO1xuICAgIF9kYXRhLmNoaWxkcmVuID0gc2hvcnRjdXRzLm1hcChpID0+IHtcbiAgICAgIGkuX2RlcHRoID0gMjtcbiAgICAgIGkuX3BhcmVudCA9IF9kYXRhO1xuICAgICAgcmV0dXJuIGk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICog5riF56m66I+c5Y2VXG4gICAqL1xuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGEgPSBbXTtcbiAgICB0aGlzLl9jaGFuZ2UkLm5leHQodGhpcy5kYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgYHVybGAgb3IgYGtleWAgdG8gZmluZCBtZW51c1xuICAgKlxuICAgKiDliKnnlKggYHVybGAg5oiWIGBrZXlgIOafpeaJvuiPnOWNlVxuICAgKi9cbiAgZmluZChvcHRpb25zOiB7XG4gICAga2V5Pzogc3RyaW5nIHwgbnVsbDtcbiAgICB1cmw/OiBzdHJpbmcgfCBudWxsO1xuICAgIHJlY3Vyc2l2ZT86IGJvb2xlYW4gfCBudWxsO1xuICAgIC8qKlxuICAgICAqIFdoZW4gdGhlIGNhbGxiYWNrIHJldHVybnMgYSBCb29sZWFuIHR5cGUsIGl0IG1lYW5zIHRoZSBjdXN0b20gdmFsaWRhdGlvbiByZXN1bHRcbiAgICAgKlxuICAgICAqIOW9k+Wbnuiwg+i/lOWbnuS4gOS4quW4g+WwlOexu+Wei+aXtu+8jOihqOekuuiHquWumuS5ieagoemqjOe7k+aenFxuICAgICAqL1xuICAgIGNiPzogKChpOiBNZW51KSA9PiBib29sZWFuIHwgbnVsbCkgfCBudWxsO1xuICAgIC8qKlxuICAgICAqIFVzZSB0aGUgY3VycmVudCBtZW51IGRhdGEgYnkgZGVmYXVsdFxuICAgICAqXG4gICAgICog6buY6K6k5L2/55So5b2T5YmN6I+c5Y2V5pWw5o2uXG4gICAgICovXG4gICAgZGF0YT86IE1lbnVbXSB8IG51bGw7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBpZ25vcmUgaGlkZSBpdGVtcywgZGVmYXVsdDogYGZhbHNlYFxuICAgICAqXG4gICAgICog5piv5ZCm5b+955Wl6ZqQ6JeP55qE6aG577yM6buY6K6k77yaYGZhbHNlYFxuICAgICAqL1xuICAgIGlnbm9yZUhpZGU/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gcmV0dXJuIHRoZSBsYXN0IG9uZSwgZGVmYXVsdDogYGZhbHNlYFxuICAgICAqXG4gICAgICog5piv5ZCm6L+U5Zue5pyA5ZCO5LiA5Liq77yM6buY6K6k77yaYGZhbHNlYFxuICAgICAqL1xuICAgIGxhc3Q/OiBib29sZWFuO1xuICB9KTogTWVudSB8IG51bGwge1xuICAgIGNvbnN0IG9wdCA9IHsgcmVjdXJzaXZlOiBmYWxzZSwgaWdub3JlSGlkZTogZmFsc2UsIGxhc3Q6IGZhbHNlLCAuLi5vcHRpb25zIH07XG4gICAgaWYgKG9wdC5rZXkgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0SXRlbShvcHQua2V5KTtcbiAgICB9XG5cbiAgICBsZXQgdXJsID0gb3B0LnVybDtcblxuICAgIGxldCBpdGVtOiBNZW51IHwgbnVsbCA9IG51bGw7XG5cbiAgICB3aGlsZSAoIWl0ZW0gJiYgdXJsKSB7XG4gICAgICB0aGlzLnZpc2l0KG9wdC5kYXRhID8/IHRoaXMuZGF0YSwgaSA9PiB7XG4gICAgICAgIGlmICghb3B0Lmxhc3QgJiYgaXRlbSAhPSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHQuaWdub3JlSGlkZSAmJiBpLmhpZGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdC5jYikge1xuICAgICAgICAgIGNvbnN0IHJlcyA9IG9wdC5jYihpKTtcbiAgICAgICAgICBpZiAodHlwZW9mIHJlcyA9PT0gJ2Jvb2xlYW4nICYmIHJlcykge1xuICAgICAgICAgICAgaXRlbSA9IGk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpLmxpbmsgIT0gbnVsbCAmJiBpLmxpbmsgPT09IHVybCkge1xuICAgICAgICAgIGl0ZW0gPSBpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKCFvcHQucmVjdXJzaXZlKSBicmVhaztcblxuICAgICAgaWYgKC9bPztdL2cudGVzdCh1cmwpKSB7XG4gICAgICAgIHVybCA9IHVybC5zcGxpdCgvWz87XS9nKVswXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVybCA9IHVybC5zcGxpdCgnLycpLnNsaWNlKDAsIC0xKS5qb2luKCcvJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW07XG4gIH1cblxuICAvKipcbiAgICog5qC55o2udXJs6I635Y+W6I+c5Y2V5YiX6KGoXG4gICAqIC0g6IulIGByZWN1cnNpdmU6IHRydWVgIOWImeS8muiHquWKqOWQkeS4iumAkuW9kuafpeaJvlxuICAgKiAgLSDoj5zljZXmlbDmja7mupDljIXlkKsgYC93YXJlYO+8jOWImSBgL3dhcmUvMWAg5Lmf6KeG5Li6IGAvd2FyZWAg6aG5XG4gICAqL1xuICBnZXRQYXRoQnlVcmwodXJsOiBzdHJpbmcsIHJlY3Vyc2l2ZTogYm9vbGVhbiA9IGZhbHNlKTogTWVudVtdIHtcbiAgICBjb25zdCByZXQ6IE1lbnVbXSA9IFtdO1xuICAgIGxldCBpdGVtID0gdGhpcy5maW5kKHsgdXJsLCByZWN1cnNpdmUgfSkgYXMgTWVudUlubmVyO1xuXG4gICAgaWYgKCFpdGVtKSByZXR1cm4gcmV0O1xuXG4gICAgZG8ge1xuICAgICAgcmV0LnNwbGljZSgwLCAwLCBpdGVtKTtcbiAgICAgIGl0ZW0gPSBpdGVtLl9wYXJlbnQhO1xuICAgIH0gd2hpbGUgKGl0ZW0pO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbWVudSBiYXNlZCBvbiBga2V5YFxuICAgKi9cbiAgZ2V0SXRlbShrZXk6IHN0cmluZyk6IE1lbnUgfCBudWxsIHtcbiAgICBsZXQgcmVzOiBNZW51IHwgbnVsbCA9IG51bGw7XG4gICAgdGhpcy52aXNpdCh0aGlzLmRhdGEsIGl0ZW0gPT4ge1xuICAgICAgaWYgKHJlcyA9PSBudWxsICYmIGl0ZW0ua2V5ID09PSBrZXkpIHtcbiAgICAgICAgcmVzID0gaXRlbTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBtZW51IGJhc2VkIG9uIGBrZXlgXG4gICAqL1xuICBzZXRJdGVtKGtleTogc3RyaW5nIHwgTWVudSwgdmFsdWU6IE1lbnUsIG9wdGlvbnM/OiB7IGVtaXQ/OiBib29sZWFuIH0pOiB2b2lkIHtcbiAgICBjb25zdCBpdGVtID0gdHlwZW9mIGtleSA9PT0gJ3N0cmluZycgPyB0aGlzLmdldEl0ZW0oa2V5KSA6IGtleTtcbiAgICBpZiAoaXRlbSA9PSBudWxsKSByZXR1cm47XG5cbiAgICBPYmplY3Qua2V5cyh2YWx1ZSkuZm9yRWFjaChrID0+IHtcbiAgICAgIGl0ZW1ba10gPSB2YWx1ZVtrXTtcbiAgICB9KTtcbiAgICB0aGlzLmZpeEl0ZW0oaXRlbSk7XG5cbiAgICBpZiAob3B0aW9ucz8uZW1pdCAhPT0gZmFsc2UpIHRoaXMuX2NoYW5nZSQubmV4dCh0aGlzLmRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW4gbWVudSBiYXNlZCBvbiBga2V5YCBvciBtZW51IG9iamVjdFxuICAgKi9cbiAgb3BlbihrZXlPckl0ZW06IHN0cmluZyB8IE1lbnUgfCBudWxsLCBvcHRpb25zPzogeyBlbWl0PzogYm9vbGVhbiB9KTogdm9pZCB7XG4gICAgbGV0IGl0ZW0gPSB0eXBlb2Yga2V5T3JJdGVtID09PSAnc3RyaW5nJyA/IHRoaXMuZmluZCh7IGtleToga2V5T3JJdGVtIH0pIDoga2V5T3JJdGVtO1xuICAgIGlmIChpdGVtID09IG51bGwpIHJldHVybjtcblxuICAgIHRoaXMudmlzaXQodGhpcy5tZW51cywgKGk6IE1lbnVJbm5lcikgPT4ge1xuICAgICAgaS5fc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIGlmICghdGhpcy5vcGVuU3RyaWN0bHkpIGkub3BlbiA9IGZhbHNlO1xuICAgIH0pO1xuXG4gICAgZG8ge1xuICAgICAgaXRlbS5fc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgaXRlbS5vcGVuID0gdHJ1ZTtcbiAgICAgIGl0ZW0gPSBpdGVtLl9wYXJlbnQ7XG4gICAgfSB3aGlsZSAoaXRlbSk7XG4gICAgaWYgKG9wdGlvbnM/LmVtaXQgIT09IGZhbHNlKSB0aGlzLl9jaGFuZ2UkLm5leHQodGhpcy5kYXRhKTtcbiAgfVxuXG4gIG9wZW5BbGwoc3RhdHVzPzogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlT3BlbihudWxsLCB7IGFsbFN0YXR1czogc3RhdHVzIH0pO1xuICB9XG5cbiAgdG9nZ2xlT3BlbihrZXlPckl0ZW06IHN0cmluZyB8IE1lbnUgfCBudWxsLCBvcHRpb25zPzogeyBhbGxTdGF0dXM/OiBib29sZWFuOyBlbWl0PzogYm9vbGVhbiB9KTogdm9pZCB7XG4gICAgbGV0IGl0ZW0gPSB0eXBlb2Yga2V5T3JJdGVtID09PSAnc3RyaW5nJyA/IHRoaXMuZmluZCh7IGtleToga2V5T3JJdGVtIH0pIDoga2V5T3JJdGVtO1xuICAgIGlmIChpdGVtID09IG51bGwpIHtcbiAgICAgIHRoaXMudmlzaXQodGhpcy5tZW51cywgKGk6IE1lbnVJbm5lcikgPT4ge1xuICAgICAgICBpLl9zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICBpLm9wZW4gPSBvcHRpb25zPy5hbGxTdGF0dXMgPT09IHRydWU7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCF0aGlzLm9wZW5TdHJpY3RseSkge1xuICAgICAgICB0aGlzLnZpc2l0KHRoaXMubWVudXMsIChpOiBNZW51SW5uZXIpID0+IHtcbiAgICAgICAgICBpZiAoaSAhPT0gaXRlbSkgaS5vcGVuID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgICBsZXQgcEl0ZW0gPSBpdGVtLl9wYXJlbnQ7XG4gICAgICAgIHdoaWxlIChwSXRlbSkge1xuICAgICAgICAgIHBJdGVtLm9wZW4gPSB0cnVlO1xuICAgICAgICAgIHBJdGVtID0gcEl0ZW0uX3BhcmVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaXRlbS5vcGVuID0gIWl0ZW0ub3BlbjtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnM/LmVtaXQgIT09IGZhbHNlKSB0aGlzLl9jaGFuZ2UkLm5leHQodGhpcy5kYXRhKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2NoYW5nZSQudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmkxOG4kPy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0=
|