@yelon/bis 17.2.1 → 17.2.2

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.
Files changed (109) hide show
  1. package/config/index.d.ts +5 -0
  2. package/config/public_api.d.ts +1 -0
  3. package/esm2022/bis.mjs +2 -2
  4. package/esm2022/{layout → config}/bis.config.mjs +1 -1
  5. package/esm2022/config/config.mjs +5 -0
  6. package/esm2022/config/public_api.mjs +2 -0
  7. package/esm2022/layout/layout-basic.component.mjs +376 -0
  8. package/esm2022/layout/layout-nav-application.component.mjs +368 -0
  9. package/esm2022/layout/layout-nav-group.component.mjs +159 -0
  10. package/esm2022/layout/layout-nav-tile.component.mjs +15 -0
  11. package/esm2022/layout/layout.module.mjs +54 -0
  12. package/esm2022/layout/public_api.mjs +6 -14
  13. package/esm2022/public_api.mjs +9 -2
  14. package/esm2022/src/bis.module.mjs +17 -0
  15. package/esm2022/src/helper.mjs +45 -0
  16. package/esm2022/src/provide.mjs +8 -0
  17. package/esm2022/src/refresh-token.mjs +79 -0
  18. package/esm2022/src/startup.service.mjs +182 -0
  19. package/esm2022/src/yunzai-act.guard.mjs +88 -0
  20. package/esm2022/src/yunzai-analysis-addon.guard.mjs +99 -0
  21. package/esm2022/src/yunzai-default.interceptor.mjs +63 -0
  22. package/esm2022/yunzai-widgets/public_api.mjs +7 -0
  23. package/esm2022/yunzai-widgets/yunzai-clear-storage.component.mjs +47 -0
  24. package/esm2022/yunzai-widgets/yunzai-fullscreen.component.mjs +47 -0
  25. package/esm2022/yunzai-widgets/yunzai-i18n.component.mjs +139 -0
  26. package/esm2022/yunzai-widgets/yunzai-notify.component.mjs +179 -0
  27. package/esm2022/yunzai-widgets/yunzai-user.component.mjs +119 -0
  28. package/esm2022/yunzai-widgets/yunzai-widget.module.mjs +62 -0
  29. package/esm2022/yunzai-widgets/yunzai-widgets.mjs +5 -0
  30. package/fesm2022/bis.mjs +552 -1
  31. package/fesm2022/bis.mjs.map +1 -1
  32. package/fesm2022/config.mjs +21 -0
  33. package/fesm2022/config.mjs.map +1 -0
  34. package/fesm2022/layout.mjs +395 -2781
  35. package/fesm2022/layout.mjs.map +1 -1
  36. package/fesm2022/yunzai-widgets.mjs +561 -0
  37. package/fesm2022/yunzai-widgets.mjs.map +1 -0
  38. package/index.d.ts +4 -0
  39. package/layout/{layout-basic/layout-basic.component.d.ts → layout-basic.component.d.ts} +12 -8
  40. package/layout/layout-nav-application.component.d.ts +26 -0
  41. package/layout/layout-nav-group.component.d.ts +13 -0
  42. package/layout/layout-nav-tile.component.d.ts +5 -0
  43. package/layout/layout.module.d.ts +18 -0
  44. package/layout/public_api.d.ts +5 -13
  45. package/package.json +40 -11
  46. package/public_api.d.ts +8 -2
  47. package/src/bis.module.d.ts +8 -0
  48. package/src/helper.d.ts +16 -0
  49. package/src/provide.d.ts +2 -0
  50. package/src/refresh-token.d.ts +6 -0
  51. package/src/startup.service.d.ts +22 -0
  52. package/src/yunzai-default.interceptor.d.ts +2 -0
  53. package/yunzai-widgets/index.d.ts +5 -0
  54. package/{layout/widgets/index.d.ts → yunzai-widgets/public_api.d.ts} +2 -2
  55. package/yunzai-widgets/yunzai-clear-storage.component.d.ts +8 -0
  56. package/yunzai-widgets/yunzai-fullscreen.component.d.ts +8 -0
  57. package/yunzai-widgets/yunzai-i18n.component.d.ts +19 -0
  58. package/yunzai-widgets/yunzai-notify.component.d.ts +24 -0
  59. package/yunzai-widgets/yunzai-user.component.d.ts +21 -0
  60. package/yunzai-widgets/yunzai-widget.module.d.ts +18 -0
  61. package/README.md +0 -23
  62. package/esm2022/index.mjs +0 -2
  63. package/esm2022/layout/html-names.mjs +0 -33
  64. package/esm2022/layout/icon/style-icons.mjs +0 -796
  65. package/esm2022/layout/layout-basic/index.mjs +0 -3
  66. package/esm2022/layout/layout-basic/interface.mjs +0 -2
  67. package/esm2022/layout/layout-basic/layout-basic.component.mjs +0 -368
  68. package/esm2022/layout/layout-nav/index.mjs +0 -4
  69. package/esm2022/layout/layout-nav/layout-nav-application.component.mjs +0 -382
  70. package/esm2022/layout/layout-nav/layout-nav-group.component.mjs +0 -122
  71. package/esm2022/layout/layout-nav/layout-nav-tile.component.mjs +0 -15
  72. package/esm2022/layout/widgets/index.mjs +0 -7
  73. package/esm2022/layout/widgets/yunzai-clear-storage.component.mjs +0 -44
  74. package/esm2022/layout/widgets/yunzai-fullscreen.component.mjs +0 -44
  75. package/esm2022/layout/widgets/yunzai-i18n.component.mjs +0 -140
  76. package/esm2022/layout/widgets/yunzai-notify.component.mjs +0 -185
  77. package/esm2022/layout/widgets/yunzai-theme-btn.component.mjs +0 -200
  78. package/esm2022/layout/widgets/yunzai-user.component.mjs +0 -129
  79. package/esm2022/layout/yunzai-act.guard.mjs +0 -88
  80. package/esm2022/layout/yunzai-analysis-addon.guard.mjs +0 -100
  81. package/esm2022/layout/yunzai-auth.service.mjs +0 -108
  82. package/esm2022/layout/yunzai-default.interceptor.mjs +0 -201
  83. package/esm2022/layout/yunzai-i18n.service.mjs +0 -107
  84. package/esm2022/layout/yunzai-lang.mjs +0 -114
  85. package/esm2022/layout/yunzai-layout.module.mjs +0 -118
  86. package/esm2022/layout/yunzai-startup.service.mjs +0 -152
  87. package/layout/html-names.d.ts +0 -31
  88. package/layout/icon/style-icons.d.ts +0 -1
  89. package/layout/layout-basic/index.d.ts +0 -2
  90. package/layout/layout-basic/interface.d.ts +0 -8
  91. package/layout/layout-nav/index.d.ts +0 -3
  92. package/layout/layout-nav/layout-nav-application.component.d.ts +0 -32
  93. package/layout/layout-nav/layout-nav-group.component.d.ts +0 -16
  94. package/layout/layout-nav/layout-nav-tile.component.d.ts +0 -6
  95. package/layout/widgets/yunzai-clear-storage.component.d.ts +0 -11
  96. package/layout/widgets/yunzai-fullscreen.component.d.ts +0 -8
  97. package/layout/widgets/yunzai-i18n.component.d.ts +0 -22
  98. package/layout/widgets/yunzai-notify.component.d.ts +0 -30
  99. package/layout/widgets/yunzai-theme-btn.component.d.ts +0 -32
  100. package/layout/widgets/yunzai-user.component.d.ts +0 -26
  101. package/layout/yunzai-auth.service.d.ts +0 -19
  102. package/layout/yunzai-default.interceptor.d.ts +0 -28
  103. package/layout/yunzai-i18n.service.d.ts +0 -27
  104. package/layout/yunzai-lang.d.ts +0 -12
  105. package/layout/yunzai-layout.module.d.ts +0 -30
  106. package/layout/yunzai-startup.service.d.ts +0 -34
  107. /package/{layout → config}/bis.config.d.ts +0 -0
  108. /package/{layout → src}/yunzai-act.guard.d.ts +0 -0
  109. /package/{layout → src}/yunzai-analysis-addon.guard.d.ts +0 -0
@@ -1,200 +0,0 @@
1
- import { DOCUMENT } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, Input, Inject, Optional } from '@angular/core';
3
- import { Subject, takeUntil } from 'rxjs';
4
- import { YUNZAI_THEME_BTN_KEYS } from '@yelon/theme/theme-btn';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@yelon/util/config";
7
- import * as i2 from "@angular/cdk/platform";
8
- import * as i3 from "@angular/cdk/bidi";
9
- import * as i4 from "@angular/common";
10
- import * as i5 from "ng-zorro-antd/tooltip";
11
- import * as i6 from "ng-zorro-antd/menu";
12
- import * as i7 from "ng-zorro-antd/dropdown";
13
- import * as i8 from "ng-zorro-antd/icon";
14
- import * as i9 from "@yelon/theme";
15
- export class YunzaiThemeBtnComponent {
16
- constructor(renderer, configSrv, platform, doc, directionality, KEYS) {
17
- this.renderer = renderer;
18
- this.configSrv = configSrv;
19
- this.platform = platform;
20
- this.doc = doc;
21
- this.directionality = directionality;
22
- this.KEYS = KEYS;
23
- this.theme = 'default';
24
- this.types = [
25
- { key: 'default', text: 'theme.default', color: '#2163ff' },
26
- { key: 'compact', text: 'theme.compact', color: '#2163ff' },
27
- { key: 'dark', text: 'theme.dark', color: '#020202' },
28
- { key: 'yuhong', text: 'theme.yuhong', color: '#C04851' },
29
- { key: 'danjuhuang', text: 'theme.danjuhuang', color: '#FBA414' },
30
- { key: 'xinghuang', text: 'theme.xinghuang', color: '#F28E16' },
31
- { key: 'shilv', text: 'theme.shilv', color: '#57C3C2' },
32
- { key: 'zhulv', text: 'theme.zhulv', color: '#1BA784' },
33
- { key: 'youlan', text: 'theme.youlan', color: '#1781B5' },
34
- { key: 'dianqing', text: 'theme.dianqing', color: '#1661AB' },
35
- { key: 'shangengzi', text: 'theme.shangengzi', color: '#61649F' },
36
- { key: 'shuiniuhui', text: 'theme.shuiniuhui', color: '#2F2F35' }
37
- ];
38
- this.devTips = `When the dark.css file can't be found, you need to run it once: npm run theme`;
39
- this.deployUrl = '';
40
- this.dir = 'ltr';
41
- this.$destroy = new Subject();
42
- }
43
- ngOnInit() {
44
- this.dir = this.directionality.value;
45
- this.directionality.change?.pipe(takeUntil(this.$destroy)).subscribe((direction) => {
46
- this.dir = direction;
47
- });
48
- this.initTheme();
49
- }
50
- initTheme() {
51
- if (!this.platform.isBrowser) {
52
- return;
53
- }
54
- this.theme = localStorage.getItem(this.KEYS) || 'default';
55
- this.updateChartTheme();
56
- this.onThemeChange(this.theme);
57
- }
58
- updateChartTheme() {
59
- this.configSrv.set('chart', { theme: this.theme === 'dark' ? 'dark' : '' });
60
- }
61
- onThemeChange(theme) {
62
- if (!this.platform.isBrowser) {
63
- return;
64
- }
65
- this.theme = theme;
66
- this.renderer.setAttribute(this.doc.body, 'data-theme', theme);
67
- const dom = this.doc.getElementById(this.KEYS);
68
- if (dom) {
69
- dom.remove();
70
- }
71
- localStorage.removeItem(this.KEYS);
72
- if (theme !== 'default') {
73
- const el = this.doc.createElement('link');
74
- el.type = 'text/css';
75
- el.rel = 'stylesheet';
76
- el.id = this.KEYS;
77
- el.href = `${this.deployUrl}assets/style.${theme}.css`;
78
- localStorage.setItem(this.KEYS, theme);
79
- this.doc.body.append(el);
80
- }
81
- this.updateChartTheme();
82
- }
83
- ngOnDestroy() {
84
- this.$destroy.complete();
85
- const el = this.doc.getElementById(this.KEYS);
86
- if (el != null) {
87
- this.doc.body.removeChild(el);
88
- }
89
- }
90
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiThemeBtnComponent, deps: [{ token: i0.Renderer2 }, { token: i1.YunzaiConfigService }, { token: i2.Platform }, { token: DOCUMENT }, { token: i3.Directionality, optional: true }, { token: YUNZAI_THEME_BTN_KEYS }], target: i0.ɵɵFactoryTarget.Component }); }
91
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: YunzaiThemeBtnComponent, selector: "yunzai-theme-btn", inputs: { types: "types", devTips: "devTips", deployUrl: "deployUrl" }, ngImport: i0, template: `
92
- <div
93
- data-event-id="_nav_theme"
94
- class="yunzai-default__nav-item"
95
- nz-dropdown
96
- [nzDropdownMenu]="iconMenu"
97
- nzTrigger="click"
98
- nzPlacement="bottomRight"
99
- >
100
- <svg nz-tooltip class="anticon" role="img" width="21" height="21" viewBox="0 0 21 21" fill="currentColor">
101
- <g fill-rule="evenodd">
102
- <g fill-rule="nonzero">
103
- <path
104
- d="M7.02 3.635l12.518 12.518a1.863 1.863 0 010 2.635l-1.317 1.318a1.863 1.863 0 01-2.635 0L3.068 7.588A2.795 2.795 0 117.02 3.635zm2.09 14.428a.932.932 0 110 1.864.932.932 0 010-1.864zm-.043-9.747L7.75 9.635l9.154 9.153 1.318-1.317-9.154-9.155zM3.52 12.473c.514 0 .931.417.931.931v.932h.932a.932.932 0 110 1.864h-.932v.931a.932.932 0 01-1.863 0l-.001-.931h-.93a.932.932 0 010-1.864h.93v-.932c0-.514.418-.931.933-.931zm15.374-3.727a1.398 1.398 0 110 2.795 1.398 1.398 0 010-2.795zM4.385 4.953a.932.932 0 000 1.317l2.046 2.047L7.75 7 5.703 4.953a.932.932 0 00-1.318 0zM14.701.36a.932.932 0 01.931.932v.931h.932a.932.932 0 010 1.864h-.933l.001.932a.932.932 0 11-1.863 0l-.001-.932h-.93a.932.932 0 110-1.864h.93v-.931a.932.932 0 01.933-.932z"
105
- />
106
- </g>
107
- </g>
108
- </svg>
109
- </div>
110
- <nz-dropdown-menu #iconMenu="nzDropdownMenu">
111
- <ul nz-menu>
112
- <li
113
- nz-menu-item
114
- data-event-id="_nav_theme"
115
- [attr.data-text]="theme.text | i18n"
116
- *ngFor="let theme of types"
117
- (click)="onThemeChange(theme.key)"
118
- [style]="{ color: theme.color }"
119
- >
120
- <i nz-icon nzType="bg-colors"></i>
121
- {{ theme.text | i18n }}
122
- </li>
123
- </ul>
124
- <!-- <div nz-menu class="wd-xl animated jello">-->
125
- <!-- <div nz-row [nzJustify]="'space-between'" [nzAlign]="'middle'" class="app-icons">-->
126
- <!-- <div nz-col [nzSpan]="4" *ngFor="let theme of types" (click)="onThemeChange(theme.key)">-->
127
- <!-- <i nz-icon nzType="bg-colors" class="text-white" [style]="{ backgroundColor: theme.color }"></i>-->
128
- <!-- <span [ngStyle]="{ color: theme.color }">{{ theme.text | i18n }}</span>-->
129
- <!-- </div>-->
130
- <!-- </div>-->
131
- <!-- </div>-->
132
- </nz-dropdown-menu>
133
- `, isInline: true, dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "cdkConnectedOverlayPush", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }, { kind: "directive", type: i6.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i6.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "directive", type: i7.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i7.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "directive", type: i8.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "pipe", type: i9.I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
134
- }
135
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiThemeBtnComponent, decorators: [{
136
- type: Component,
137
- args: [{
138
- selector: 'yunzai-theme-btn',
139
- template: `
140
- <div
141
- data-event-id="_nav_theme"
142
- class="yunzai-default__nav-item"
143
- nz-dropdown
144
- [nzDropdownMenu]="iconMenu"
145
- nzTrigger="click"
146
- nzPlacement="bottomRight"
147
- >
148
- <svg nz-tooltip class="anticon" role="img" width="21" height="21" viewBox="0 0 21 21" fill="currentColor">
149
- <g fill-rule="evenodd">
150
- <g fill-rule="nonzero">
151
- <path
152
- d="M7.02 3.635l12.518 12.518a1.863 1.863 0 010 2.635l-1.317 1.318a1.863 1.863 0 01-2.635 0L3.068 7.588A2.795 2.795 0 117.02 3.635zm2.09 14.428a.932.932 0 110 1.864.932.932 0 010-1.864zm-.043-9.747L7.75 9.635l9.154 9.153 1.318-1.317-9.154-9.155zM3.52 12.473c.514 0 .931.417.931.931v.932h.932a.932.932 0 110 1.864h-.932v.931a.932.932 0 01-1.863 0l-.001-.931h-.93a.932.932 0 010-1.864h.93v-.932c0-.514.418-.931.933-.931zm15.374-3.727a1.398 1.398 0 110 2.795 1.398 1.398 0 010-2.795zM4.385 4.953a.932.932 0 000 1.317l2.046 2.047L7.75 7 5.703 4.953a.932.932 0 00-1.318 0zM14.701.36a.932.932 0 01.931.932v.931h.932a.932.932 0 010 1.864h-.933l.001.932a.932.932 0 11-1.863 0l-.001-.932h-.93a.932.932 0 110-1.864h.93v-.931a.932.932 0 01.933-.932z"
153
- />
154
- </g>
155
- </g>
156
- </svg>
157
- </div>
158
- <nz-dropdown-menu #iconMenu="nzDropdownMenu">
159
- <ul nz-menu>
160
- <li
161
- nz-menu-item
162
- data-event-id="_nav_theme"
163
- [attr.data-text]="theme.text | i18n"
164
- *ngFor="let theme of types"
165
- (click)="onThemeChange(theme.key)"
166
- [style]="{ color: theme.color }"
167
- >
168
- <i nz-icon nzType="bg-colors"></i>
169
- {{ theme.text | i18n }}
170
- </li>
171
- </ul>
172
- <!-- <div nz-menu class="wd-xl animated jello">-->
173
- <!-- <div nz-row [nzJustify]="'space-between'" [nzAlign]="'middle'" class="app-icons">-->
174
- <!-- <div nz-col [nzSpan]="4" *ngFor="let theme of types" (click)="onThemeChange(theme.key)">-->
175
- <!-- <i nz-icon nzType="bg-colors" class="text-white" [style]="{ backgroundColor: theme.color }"></i>-->
176
- <!-- <span [ngStyle]="{ color: theme.color }">{{ theme.text | i18n }}</span>-->
177
- <!-- </div>-->
178
- <!-- </div>-->
179
- <!-- </div>-->
180
- </nz-dropdown-menu>
181
- `,
182
- // eslint-disable-next-line prettier/prettier
183
- changeDetection: ChangeDetectionStrategy.OnPush,
184
- }]
185
- }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i1.YunzaiConfigService }, { type: i2.Platform }, { type: undefined, decorators: [{
186
- type: Inject,
187
- args: [DOCUMENT]
188
- }] }, { type: i3.Directionality, decorators: [{
189
- type: Optional
190
- }] }, { type: undefined, decorators: [{
191
- type: Inject,
192
- args: [YUNZAI_THEME_BTN_KEYS]
193
- }] }], propDecorators: { types: [{
194
- type: Input
195
- }], devTips: [{
196
- type: Input
197
- }], deployUrl: [{
198
- type: Input
199
- }] } });
200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXVuemFpLXRoZW1lLWJ0bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9iaXMvbGF5b3V0L3dpZGdldHMveXVuemFpLXRoZW1lLWJ0bi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFJTCxNQUFNLEVBQ04sUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7QUF3RDdFLE1BQU0sT0FBTyx1QkFBdUI7SUFxQmxDLFlBQ1UsUUFBbUIsRUFDbkIsU0FBOEIsRUFDOUIsUUFBa0IsRUFDQSxHQUFjLEVBQ3BCLGNBQThCLEVBQ1gsSUFBWTtRQUwzQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGNBQVMsR0FBVCxTQUFTLENBQXFCO1FBQzlCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDQSxRQUFHLEdBQUgsR0FBRyxDQUFXO1FBQ3BCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUNYLFNBQUksR0FBSixJQUFJLENBQVE7UUExQjdDLFVBQUssR0FBRyxTQUFTLENBQUM7UUFDakIsVUFBSyxHQUF5QjtZQUNyQyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQzNELEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7WUFDM0QsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZ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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBDVDs7MkZBSVUsdUJBQXVCO2tCQWhEbkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBDVDtvQkFDRCw2Q0FBNkM7b0JBQzdDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDs7MEJBMEJJLE1BQU07MkJBQUMsUUFBUTs7MEJBQ2YsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxxQkFBcUI7eUNBekJ0QixLQUFLO3NCQUFiLEtBQUs7Z0JBY0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3Rpb24sIERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBSZW5kZXJlcjIsXG4gIEluamVjdCxcbiAgT3B0aW9uYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgVGhlbWVCdG5UeXBlLCBZVU5aQUlfVEhFTUVfQlROX0tFWVMgfSBmcm9tICdAeWVsb24vdGhlbWUvdGhlbWUtYnRuJztcbmltcG9ydCB7IFl1bnphaUNvbmZpZ1NlcnZpY2UgfSBmcm9tICdAeWVsb24vdXRpbC9jb25maWcnO1xuaW1wb3J0IHsgTnpTYWZlQW55IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBZdW56YWlUaGVtZUJ0blR5cGUgZXh0ZW5kcyBUaGVtZUJ0blR5cGUge1xuICBjb2xvcj86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneXVuemFpLXRoZW1lLWJ0bicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgZGF0YS1ldmVudC1pZD1cIl9uYXZfdGhlbWVcIlxuICAgICAgY2xhc3M9XCJ5dW56YWktZGVmYXVsdF9fbmF2LWl0ZW1cIlxuICAgICAgbnotZHJvcGRvd25cbiAgICAgIFtuekRyb3Bkb3duTWVudV09XCJpY29uTWVudVwiXG4gICAgICBuelRyaWdnZXI9XCJjbGlja1wiXG4gICAgICBuelBsYWNlbWVudD1cImJvdHRvbVJpZ2h0XCJcbiAgICA+XG4gICAgICA8c3ZnIG56LXRvb2x0aXAgY2xhc3M9XCJhbnRpY29uXCIgcm9sZT1cImltZ1wiIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMVwiIHZpZXdCb3g9XCIwIDAgMjEgMjFcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+XG4gICAgICAgIDxnIGZpbGwtcnVsZT1cImV2ZW5vZGRcIj5cbiAgICAgICAgICA8ZyBmaWxsLXJ1bGU9XCJub256ZXJvXCI+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTcuMDIgMy42MzVsMTIuNTE4IDEyLjUxOGExLjg2MyAxLjg2MyAwIDAxMCAyLjYzNWwtMS4zMTcgMS4zMThhMS44NjMgMS44NjMgMCAwMS0yLjYzNSAwTDMuMDY4IDcuNTg4QTIuNzk1IDIuNzk1IDAgMTE3LjAyIDMuNjM1em0yLjA5IDE0LjQyOGEuOTMyLjkzMiAwIDExMCAxLjg2NC45MzIuOTMyIDAgMDEwLTEuODY0em0tLjA0My05Ljc0N0w3Ljc1IDkuNjM1bDkuMTU0IDkuMTUzIDEuMzE4LTEuMzE3LTkuMTU0LTkuMTU1ek0zLjUyIDEyLjQ3M2MuNTE0IDAgLjkzMS40MTcuOTMxLjkzMXYuOTMyaC45MzJhLjkzMi45MzIgMCAxMTAgMS44NjRoLS45MzJ2LjkzMWEuOTMyLjkzMiAwIDAxLTEuODYzIDBsLS4wMDEtLjkzMWgtLjkzYS45MzIuOTMyIDAgMDEwLTEuODY0aC45M3YtLjkzMmMwLS41MTQuNDE4LS45MzEuOTMzLS45MzF6bTE1LjM3NC0zLjcyN2ExLjM5OCAxLjM5OCAwIDExMCAyLjc5NSAxLjM5OCAxLjM5OCAwIDAxMC0yLjc5NXpNNC4zODUgNC45NTNhLjkzMi45MzIgMCAwMDAgMS4zMTdsMi4wNDYgMi4wNDdMNy43NSA3IDUuNzAzIDQuOTUzYS45MzIuOTMyIDAgMDAtMS4zMTggMHpNMTQuNzAxLjM2YS45MzIuOTMyIDAgMDEuOTMxLjkzMnYuOTMxaC45MzJhLjkzMi45MzIgMCAwMTAgMS44NjRoLS45MzNsLjAwMS45MzJhLjkzMi45MzIgMCAxMS0xLjg2MyAwbC0uMDAxLS45MzJoLS45M2EuOTMyLjkzMiAwIDExMC0xLjg2NGguOTN2LS45MzFhLjkzMi45MzIgMCAwMS45MzMtLjkzMnpcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2c+XG4gICAgICAgIDwvZz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxuei1kcm9wZG93bi1tZW51ICNpY29uTWVudT1cIm56RHJvcGRvd25NZW51XCI+XG4gICAgICA8dWwgbnotbWVudT5cbiAgICAgICAgPGxpXG4gICAgICAgICAgbnotbWVudS1pdGVtXG4gICAgICAgICAgZGF0YS1ldmVudC1pZD1cIl9uYXZfdGhlbWVcIlxuICAgICAgICAgIFthdHRyLmRhdGEtdGV4dF09XCJ0aGVtZS50ZXh0IHwgaTE4blwiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHRoZW1lIG9mIHR5cGVzXCJcbiAgICAgICAgICAoY2xpY2spPVwib25UaGVtZUNoYW5nZSh0aGVtZS5rZXkpXCJcbiAgICAgICAgICBbc3R5bGVdPVwieyBjb2xvcjogdGhlbWUuY29sb3IgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBuei1pY29uIG56VHlwZT1cImJnLWNvbG9yc1wiPjwvaT5cbiAgICAgICAgICB7eyB0aGVtZS50ZXh0IHwgaTE4biB9fVxuICAgICAgICA8L2xpPlxuICAgICAgPC91bD5cbiAgICAgIDwhLS0gICAgICA8ZGl2IG56LW1lbnUgY2xhc3M9XCJ3ZC14bCBhbmltYXRlZCBqZWxsb1wiPi0tPlxuICAgICAgPCEtLSAgICAgICAgPGRpdiBuei1yb3cgW256SnVzdGlmeV09XCInc3BhY2UtYmV0d2VlbidcIiBbbnpBbGlnbl09XCInbWlkZGxlJ1wiIGNsYXNzPVwiYXBwLWljb25zXCI+LS0+XG4gICAgICA8IS0tICAgICAgICAgIDxkaXYgbnotY29sIFtuelNwYW5dPVwiNFwiICpuZ0Zvcj1cImxldCB0aGVtZSBvZiB0eXBlc1wiIChjbGljayk9XCJvblRoZW1lQ2hhbmdlKHRoZW1lLmtleSlcIj4tLT5cbiAgICAgIDwhLS0gICAgICAgICAgICA8aSBuei1pY29uIG56VHlwZT1cImJnLWNvbG9yc1wiIGNsYXNzPVwidGV4dC13aGl0ZVwiIFtzdHlsZV09XCJ7IGJhY2tncm91bmRDb2xvcjogdGhlbWUuY29sb3IgfVwiPjwvaT4tLT5cbiAgICAgIDwhLS0gICAgICAgICAgICA8c3BhbiBbbmdTdHlsZV09XCJ7IGNvbG9yOiB0aGVtZS5jb2xvciB9XCI+e3sgdGhlbWUudGV4dCB8IGkxOG4gfX08L3NwYW4+LS0+XG4gICAgICA8IS0tICAgICAgICAgIDwvZGl2Pi0tPlxuICAgICAgPCEtLSAgICAgICAgPC9kaXY+LS0+XG4gICAgICA8IS0tICAgICAgPC9kaXY+LS0+XG4gICAgPC9uei1kcm9wZG93bi1tZW51PlxuICBgLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJldHRpZXIvcHJldHRpZXJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFl1bnphaVRoZW1lQnRuQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHRoZW1lID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoKSB0eXBlczogWXVuemFpVGhlbWVCdG5UeXBlW10gPSBbXG4gICAgeyBrZXk6ICdkZWZhdWx0JywgdGV4dDogJ3RoZW1lLmRlZmF1bHQnLCBjb2xvcjogJyMyMTYzZmYnIH0sXG4gICAgeyBrZXk6ICdjb21wYWN0JywgdGV4dDogJ3RoZW1lLmNvbXBhY3QnLCBjb2xvcjogJyMyMTYzZmYnIH0sXG4gICAgeyBrZXk6ICdkYXJrJywgdGV4dDogJ3RoZW1lLmRhcmsnLCBjb2xvcjogJyMwMjAyMDInIH0sXG4gICAgeyBrZXk6ICd5dWhvbmcnLCB0ZXh0OiAndGhlbWUueXVob25nJywgY29sb3I6ICcjQzA0ODUxJyB9LFxuICAgIHsga2V5OiAnZGFuanVodWFuZycsIHRleHQ6ICd0aGVtZS5kYW5qdWh1YW5nJywgY29sb3I6ICcjRkJBNDE0JyB9LFxuICAgIHsga2V5OiAneGluZ2h1YW5nJywgdGV4dDogJ3RoZW1lLnhpbmdodWFuZycsIGNvbG9yOiAnI0YyOEUxNicgfSxcbiAgICB7IGtleTogJ3NoaWx2JywgdGV4dDogJ3RoZW1lLnNoaWx2JywgY29sb3I6ICcjNTdDM0MyJyB9LFxuICAgIHsga2V5OiAnemh1bHYnLCB0ZXh0OiAndGhlbWUuemh1bHYnLCBjb2xvcjogJyMxQkE3ODQnIH0sXG4gICAgeyBrZXk6ICd5b3VsYW4nLCB0ZXh0OiAndGhlbWUueW91bGFuJywgY29sb3I6ICcjMTc4MUI1JyB9LFxuICAgIHsga2V5OiAnZGlhbnFpbmcnLCB0ZXh0OiAndGhlbWUuZGlhbnFpbmcnLCBjb2xvcjogJyMxNjYxQUInIH0sXG4gICAgeyBrZXk6ICdzaGFuZ2VuZ3ppJywgdGV4dDogJ3RoZW1lLnNoYW5nZW5nemknLCBjb2xvcjogJyM2MTY0OUYnIH0sXG4gICAgeyBrZXk6ICdzaHVpbml1aHVpJywgdGV4dDogJ3RoZW1lLnNodWluaXVodWknLCBjb2xvcjogJyMyRjJGMzUnIH1cbiAgXTtcbiAgQElucHV0KCkgZGV2VGlwcyA9IGBXaGVuIHRoZSBkYXJrLmNzcyBmaWxlIGNhbid0IGJlIGZvdW5kLCB5b3UgbmVlZCB0byBydW4gaXQgb25jZTogbnBtIHJ1biB0aGVtZWA7XG4gIEBJbnB1dCgpIGRlcGxveVVybCA9ICcnO1xuICBkaXI6IERpcmVjdGlvbiA9ICdsdHInO1xuICBwcml2YXRlICRkZXN0cm95ID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBjb25maWdTcnY6IFl1bnphaUNvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm0sXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2M6IE56U2FmZUFueSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGRpcmVjdGlvbmFsaXR5OiBEaXJlY3Rpb25hbGl0eSxcbiAgICBASW5qZWN0KFlVTlpBSV9USEVNRV9CVE5fS0VZUykgcHJpdmF0ZSBLRVlTOiBzdHJpbmdcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGlyID0gdGhpcy5kaXJlY3Rpb25hbGl0eS52YWx1ZTtcbiAgICB0aGlzLmRpcmVjdGlvbmFsaXR5LmNoYW5nZT8ucGlwZSh0YWtlVW50aWwodGhpcy4kZGVzdHJveSkpLnN1YnNjcmliZSgoZGlyZWN0aW9uOiBEaXJlY3Rpb24pID0+IHtcbiAgICAgIHRoaXMuZGlyID0gZGlyZWN0aW9uO1xuICAgIH0pO1xuICAgIHRoaXMuaW5pdFRoZW1lKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRUaGVtZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucGxhdGZvcm0uaXNCcm93c2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudGhlbWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLktFWVMpIHx8ICdkZWZhdWx0JztcbiAgICB0aGlzLnVwZGF0ZUNoYXJ0VGhlbWUoKTtcbiAgICB0aGlzLm9uVGhlbWVDaGFuZ2UodGhpcy50aGVtZSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNoYXJ0VGhlbWUoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maWdTcnYuc2V0KCdjaGFydCcsIHsgdGhlbWU6IHRoaXMudGhlbWUgPT09ICdkYXJrJyA/ICdkYXJrJyA6ICcnIH0pO1xuICB9XG5cbiAgb25UaGVtZUNoYW5nZSh0aGVtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnBsYXRmb3JtLmlzQnJvd3Nlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnRoZW1lID0gdGhlbWU7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5kb2MuYm9keSwgJ2RhdGEtdGhlbWUnLCB0aGVtZSk7XG4gICAgY29uc3QgZG9tID0gdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQodGhpcy5LRVlTKTtcbiAgICBpZiAoZG9tKSB7XG4gICAgICBkb20ucmVtb3ZlKCk7XG4gICAgfVxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuS0VZUyk7XG4gICAgaWYgKHRoZW1lICE9PSAnZGVmYXVsdCcpIHtcbiAgICAgIGNvbnN0IGVsID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgnbGluaycpO1xuICAgICAgZWwudHlwZSA9ICd0ZXh0L2Nzcyc7XG4gICAgICBlbC5yZWwgPSAnc3R5bGVzaGVldCc7XG4gICAgICBlbC5pZCA9IHRoaXMuS0VZUztcbiAgICAgIGVsLmhyZWYgPSBgJHt0aGlzLmRlcGxveVVybH1hc3NldHMvc3R5bGUuJHt0aGVtZX0uY3NzYDtcblxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5LRVlTLCB0aGVtZSk7XG4gICAgICB0aGlzLmRvYy5ib2R5LmFwcGVuZChlbCk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlQ2hhcnRUaGVtZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4kZGVzdHJveS5jb21wbGV0ZSgpO1xuICAgIGNvbnN0IGVsID0gdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQodGhpcy5LRVlTKTtcbiAgICBpZiAoZWwgIT0gbnVsbCkge1xuICAgICAgdGhpcy5kb2MuYm9keS5yZW1vdmVDaGlsZChlbCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,129 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';
2
- import { YA_SERVICE_TOKEN } from '@yelon/auth';
3
- import { useLocalStorageProjectInfo, useLocalStorageUser, WINDOW } from '@yelon/util';
4
- import { mergeBisConfig } from '../bis.config';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "ng-zorro-antd/message";
7
- import * as i2 from "@yelon/util";
8
- import * as i3 from "@angular/common";
9
- import * as i4 from "ng-zorro-antd/menu";
10
- import * as i5 from "ng-zorro-antd/dropdown";
11
- import * as i6 from "ng-zorro-antd/avatar";
12
- import * as i7 from "ng-zorro-antd/icon";
13
- import * as i8 from "@yelon/theme";
14
- export class YunzaiUserComponent {
15
- constructor(injector, msg, tokenService,
16
- // @ts-ignore
17
- configService) {
18
- this.injector = injector;
19
- this.msg = msg;
20
- this.tokenService = tokenService;
21
- this.configService = configService;
22
- this.icon = '';
23
- this.username = '';
24
- this.menus = [];
25
- this.config = mergeBisConfig(configService);
26
- }
27
- ngOnInit() {
28
- const [, getProjectInfo] = useLocalStorageProjectInfo();
29
- const [, getUser] = useLocalStorageUser();
30
- const projectInfo = getProjectInfo();
31
- const user = getUser();
32
- this.username = user.realname ? user.realname : '未命名';
33
- this.icon = user.avatarId
34
- ? `${this.config.baseUrl}/filecenter/file/${user.avatarId}`
35
- : `./assets/tmp/img/avatar.jpg`;
36
- this.menus = projectInfo.profileList;
37
- }
38
- logout() {
39
- localStorage.clear();
40
- this.tokenService.clear();
41
- this.injector.get(WINDOW).location.href = `${this.config.baseUrl}/cas-proxy/app/logout`;
42
- }
43
- to(href) {
44
- if (href) {
45
- this.injector.get(WINDOW).open(href);
46
- }
47
- else {
48
- this.msg.error('该菜单没有配置链接!');
49
- }
50
- }
51
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiUserComponent, deps: [{ token: i0.Injector }, { token: i1.NzMessageService }, { token: YA_SERVICE_TOKEN }, { token: i2.YunzaiConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
52
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: YunzaiUserComponent, selector: "yunzai-user", ngImport: i0, template: `
53
- <div
54
- class="yunzai-default__nav-item d-flex align-items-center px-sm"
55
- data-event-id="_nav_user"
56
- nz-dropdown
57
- nzPlacement="bottomRight"
58
- [nzDropdownMenu]="userMenu"
59
- >
60
- <div class="yz-user-name">
61
- <nz-avatar [nzSrc]="icon" nzSize="small" class="mr-sm" />
62
- {{ username }}
63
- </div>
64
- </div>
65
- <nz-dropdown-menu #userMenu="nzDropdownMenu">
66
- <div nz-menu class="width-sm">
67
- <div
68
- data-event-id="_nav_user"
69
- [attr.data-name]="m.name | i18n"
70
- nz-menu-item
71
- *ngFor="let m of menus"
72
- (click)="to(m.url)"
73
- >
74
- <i nz-icon [nzType]="m.icon" class="mr-sm"></i>
75
- {{ m.name | i18n }}
76
- </div>
77
- <li nz-menu-divider></li>
78
- <div data-event-id="_nav_user" data-name="注销登录" nz-menu-item (click)="logout()">
79
- <i nz-icon nzType="logout" class="mr-sm"></i>
80
- {{ 'logout' | i18n }}
81
- </div>
82
- </div>
83
- </nz-dropdown-menu>
84
- `, isInline: true, dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i4.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "directive", type: i4.NzMenuDividerDirective, selector: "[nz-menu-divider]", exportAs: ["nzMenuDivider"] }, { kind: "directive", type: i5.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i5.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "component", type: i6.NzAvatarComponent, selector: "nz-avatar", inputs: ["nzShape", "nzSize", "nzGap", "nzText", "nzSrc", "nzSrcSet", "nzAlt", "nzIcon"], outputs: ["nzError"], exportAs: ["nzAvatar"] }, { kind: "directive", type: i7.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "pipe", type: i8.I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
85
- }
86
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiUserComponent, decorators: [{
87
- type: Component,
88
- args: [{
89
- selector: 'yunzai-user',
90
- template: `
91
- <div
92
- class="yunzai-default__nav-item d-flex align-items-center px-sm"
93
- data-event-id="_nav_user"
94
- nz-dropdown
95
- nzPlacement="bottomRight"
96
- [nzDropdownMenu]="userMenu"
97
- >
98
- <div class="yz-user-name">
99
- <nz-avatar [nzSrc]="icon" nzSize="small" class="mr-sm" />
100
- {{ username }}
101
- </div>
102
- </div>
103
- <nz-dropdown-menu #userMenu="nzDropdownMenu">
104
- <div nz-menu class="width-sm">
105
- <div
106
- data-event-id="_nav_user"
107
- [attr.data-name]="m.name | i18n"
108
- nz-menu-item
109
- *ngFor="let m of menus"
110
- (click)="to(m.url)"
111
- >
112
- <i nz-icon [nzType]="m.icon" class="mr-sm"></i>
113
- {{ m.name | i18n }}
114
- </div>
115
- <li nz-menu-divider></li>
116
- <div data-event-id="_nav_user" data-name="注销登录" nz-menu-item (click)="logout()">
117
- <i nz-icon nzType="logout" class="mr-sm"></i>
118
- {{ 'logout' | i18n }}
119
- </div>
120
- </div>
121
- </nz-dropdown-menu>
122
- `,
123
- changeDetection: ChangeDetectionStrategy.OnPush
124
- }]
125
- }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.NzMessageService }, { type: undefined, decorators: [{
126
- type: Inject,
127
- args: [YA_SERVICE_TOKEN]
128
- }] }, { type: i2.YunzaiConfigService }] });
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXVuemFpLXVzZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYmlzL2xheW91dC93aWRnZXRzL3l1bnphaS11c2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFFN0YsT0FBTyxFQUFFLGdCQUFnQixFQUFpQixNQUFNLGFBQWEsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsMEJBQTBCLEVBQzFCLG1CQUFtQixFQUNuQixNQUFNLEVBR1AsTUFBTSxhQUFhLENBQUM7QUFHckIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7OztBQTZDL0MsTUFBTSxPQUFPLG1CQUFtQjtJQUc5QixZQUNVLFFBQWtCLEVBQ2xCLEdBQXFCLEVBQ0ssWUFBMkI7SUFDN0QsYUFBYTtJQUNMLGFBQWtDO1FBSmxDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsUUFBRyxHQUFILEdBQUcsQ0FBa0I7UUFDSyxpQkFBWSxHQUFaLFlBQVksQ0FBZTtRQUVyRCxrQkFBYSxHQUFiLGFBQWEsQ0FBcUI7UUFLNUMsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUNsQixhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQ3RCLFVBQUssR0FBZSxFQUFFLENBQUM7UUFMckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQU1ELFFBQVE7UUFDTixNQUFNLENBQUMsRUFBRSxjQUFjLENBQUMsR0FBRywwQkFBMEIsRUFBRSxDQUFDO1FBQ3hELE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFHLG1CQUFtQixFQUFFLENBQUM7UUFDMUMsTUFBTSxXQUFXLEdBQUcsY0FBYyxFQUFHLENBQUM7UUFDdEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxFQUFHLENBQUM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUTtZQUN2QixDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sb0JBQW9CLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDM0QsQ0FBQyxDQUFDLDZCQUE2QixDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLFdBQXlCLENBQUM7SUFDckQsQ0FBQztJQUVELE1BQU07UUFDSixZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLHVCQUF1QixDQUFDO0lBQzFGLENBQUM7SUFFRCxFQUFFLENBQUMsSUFBWTtRQUNiLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQzs4R0F6Q1UsbUJBQW1CLDBFQU1wQixnQkFBZ0I7a0dBTmYsbUJBQW1CLG1EQW5DcEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0NUOzsyRkFHVSxtQkFBbUI7a0JBckMvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO29CQUN2QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0NUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDs7MEJBT0ksTUFBTTsyQkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3QsIEluamVjdG9yLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgWUFfU0VSVklDRV9UT0tFTiwgSVRva2VuU2VydmljZSB9IGZyb20gJ0B5ZWxvbi9hdXRoJztcbmltcG9ydCB7XG4gIHVzZUxvY2FsU3RvcmFnZVByb2plY3RJbmZvLFxuICB1c2VMb2NhbFN0b3JhZ2VVc2VyLFxuICBXSU5ET1csXG4gIFl1bnphaUJ1c2luZXNzQ29uZmlnLFxuICBZdW56YWlDb25maWdTZXJ2aWNlXG59IGZyb20gJ0B5ZWxvbi91dGlsJztcbmltcG9ydCB7IE56TWVzc2FnZVNlcnZpY2UgfSBmcm9tICduZy16b3Jyby1hbnRkL21lc3NhZ2UnO1xuXG5pbXBvcnQgeyBtZXJnZUJpc0NvbmZpZyB9IGZyb20gJy4uL2Jpcy5jb25maWcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJMaW5rIHtcbiAgaWNvbjogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd5dW56YWktdXNlcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ5dW56YWktZGVmYXVsdF9fbmF2LWl0ZW0gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBweC1zbVwiXG4gICAgICBkYXRhLWV2ZW50LWlkPVwiX25hdl91c2VyXCJcbiAgICAgIG56LWRyb3Bkb3duXG4gICAgICBuelBsYWNlbWVudD1cImJvdHRvbVJpZ2h0XCJcbiAgICAgIFtuekRyb3Bkb3duTWVudV09XCJ1c2VyTWVudVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInl6LXVzZXItbmFtZVwiPlxuICAgICAgICA8bnotYXZhdGFyIFtuelNyY109XCJpY29uXCIgbnpTaXplPVwic21hbGxcIiBjbGFzcz1cIm1yLXNtXCIgLz5cbiAgICAgICAge3sgdXNlcm5hbWUgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuei1kcm9wZG93bi1tZW51ICN1c2VyTWVudT1cIm56RHJvcGRvd25NZW51XCI+XG4gICAgICA8ZGl2IG56LW1lbnUgY2xhc3M9XCJ3aWR0aC1zbVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgZGF0YS1ldmVudC1pZD1cIl9uYXZfdXNlclwiXG4gICAgICAgICAgW2F0dHIuZGF0YS1uYW1lXT1cIm0ubmFtZSB8IGkxOG5cIlxuICAgICAgICAgIG56LW1lbnUtaXRlbVxuICAgICAgICAgICpuZ0Zvcj1cImxldCBtIG9mIG1lbnVzXCJcbiAgICAgICAgICAoY2xpY2spPVwidG8obS51cmwpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIG56LWljb24gW256VHlwZV09XCJtLmljb25cIiBjbGFzcz1cIm1yLXNtXCI+PC9pPlxuICAgICAgICAgIHt7IG0ubmFtZSB8IGkxOG4gfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxsaSBuei1tZW51LWRpdmlkZXI+PC9saT5cbiAgICAgICAgPGRpdiBkYXRhLWV2ZW50LWlkPVwiX25hdl91c2VyXCIgZGF0YS1uYW1lPVwi5rOo6ZSA55m75b2VXCIgbnotbWVudS1pdGVtIChjbGljayk9XCJsb2dvdXQoKVwiPlxuICAgICAgICAgIDxpIG56LWljb24gbnpUeXBlPVwibG9nb3V0XCIgY2xhc3M9XCJtci1zbVwiPjwvaT5cbiAgICAgICAgICB7eyAnbG9nb3V0JyB8IGkxOG4gfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L256LWRyb3Bkb3duLW1lbnU+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFl1bnphaVVzZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIGNvbmZpZzogWXVuemFpQnVzaW5lc3NDb25maWc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBtc2c6IE56TWVzc2FnZVNlcnZpY2UsXG4gICAgQEluamVjdChZQV9TRVJWSUNFX1RPS0VOKSBwcml2YXRlIHRva2VuU2VydmljZTogSVRva2VuU2VydmljZSxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBZdW56YWlDb25maWdTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuY29uZmlnID0gbWVyZ2VCaXNDb25maWcoY29uZmlnU2VydmljZSk7XG4gIH1cblxuICBpY29uOiBzdHJpbmcgPSAnJztcbiAgdXNlcm5hbWU6IHN0cmluZyA9ICcnO1xuICBtZW51czogVXNlckxpbmtbXSA9IFtdO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IFssIGdldFByb2plY3RJbmZvXSA9IHVzZUxvY2FsU3RvcmFnZVByb2plY3RJbmZvKCk7XG4gICAgY29uc3QgWywgZ2V0VXNlcl0gPSB1c2VMb2NhbFN0b3JhZ2VVc2VyKCk7XG4gICAgY29uc3QgcHJvamVjdEluZm8gPSBnZXRQcm9qZWN0SW5mbygpITtcbiAgICBjb25zdCB1c2VyID0gZ2V0VXNlcigpITtcbiAgICB0aGlzLnVzZXJuYW1lID0gdXNlci5yZWFsbmFtZSA/IHVzZXIucmVhbG5hbWUgOiAn5pyq5ZG95ZCNJztcbiAgICB0aGlzLmljb24gPSB1c2VyLmF2YXRhcklkXG4gICAgICA/IGAke3RoaXMuY29uZmlnLmJhc2VVcmx9L2ZpbGVjZW50ZXIvZmlsZS8ke3VzZXIuYXZhdGFySWR9YFxuICAgICAgOiBgLi9hc3NldHMvdG1wL2ltZy9hdmF0YXIuanBnYDtcbiAgICB0aGlzLm1lbnVzID0gcHJvamVjdEluZm8ucHJvZmlsZUxpc3QgYXMgVXNlckxpbmtbXTtcbiAgfVxuXG4gIGxvZ291dCgpOiB2b2lkIHtcbiAgICBsb2NhbFN0b3JhZ2UuY2xlYXIoKTtcbiAgICB0aGlzLnRva2VuU2VydmljZS5jbGVhcigpO1xuICAgIHRoaXMuaW5qZWN0b3IuZ2V0KFdJTkRPVykubG9jYXRpb24uaHJlZiA9IGAke3RoaXMuY29uZmlnLmJhc2VVcmx9L2Nhcy1wcm94eS9hcHAvbG9nb3V0YDtcbiAgfVxuXG4gIHRvKGhyZWY6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChocmVmKSB7XG4gICAgICB0aGlzLmluamVjdG9yLmdldChXSU5ET1cpLm9wZW4oaHJlZik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubXNnLmVycm9yKCfor6Xoj5zljZXmsqHmnInphY3nva7pk77mjqUhJyk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,88 +0,0 @@
1
- import { Injectable, inject } from '@angular/core';
2
- import { deepCopy, log, useLocalStorageUser } from '@yelon/util';
3
- import { BUSINESS_DEFAULT_CONFIG, mergeBisConfig } from './bis.config';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@yelon/util";
6
- import * as i2 from "@angular/router";
7
- export class ActGuardService {
8
- constructor(configService, pathToRegexp, router) {
9
- this.configService = configService;
10
- this.pathToRegexp = pathToRegexp;
11
- this.router = router;
12
- this.bis = BUSINESS_DEFAULT_CONFIG;
13
- this.menus = [];
14
- this.links = [];
15
- log('act: ');
16
- this.bis = mergeBisConfig(this.configService);
17
- log('act: config ', this.bis);
18
- const [, getUser] = useLocalStorageUser();
19
- const user = getUser();
20
- log('act: user ', user);
21
- // @ts-ignore
22
- this.menus = deepCopy(user.menu || []).filter((m) => m.systemCode && m.systemCode === this.bis.systemCode);
23
- log('act: menus ', this.menus);
24
- this.getAllLinks(this.menus, this.links);
25
- log('act: links ', this.links);
26
- }
27
- process(url) {
28
- log('act: can activate ', url);
29
- if (this.preHandle(url)) {
30
- return true;
31
- }
32
- log('act: can activate child prehandle success');
33
- let canactivate = false;
34
- this.links.forEach((link) => {
35
- // path = /xxx
36
- if (link === url.split('?')[0]) {
37
- canactivate = true;
38
- log(`act: link value ${link} equals url value ${url}`);
39
- return;
40
- }
41
- // paht = /xxx/:xx
42
- const regexp = this.pathToRegexp.stringToRegexp(link, null, null);
43
- log(`act: ${link} test ${url.split('?')[0]}`);
44
- if (regexp.test(url.split('?')[0])) {
45
- canactivate = true;
46
- log(`act: test value ${canactivate}`);
47
- return;
48
- }
49
- });
50
- if (canactivate) {
51
- log(`act: test sucess`);
52
- return true;
53
- }
54
- else {
55
- log(`act: test error`);
56
- this.router.navigate(['displayIndex']);
57
- return false;
58
- }
59
- }
60
- preHandle(url) {
61
- return (url.includes('error') ||
62
- url.includes('exception') ||
63
- url.includes('displayIndex') ||
64
- url === '' ||
65
- url === null ||
66
- url === '/' ||
67
- url.includes('iframePage'));
68
- }
69
- getAllLinks(menu, links) {
70
- menu.forEach((sider) => {
71
- if (sider.link) {
72
- links.push(sider.link);
73
- }
74
- if (sider.children && sider.children.length > 0) {
75
- this.getAllLinks(sider.children, links);
76
- }
77
- });
78
- }
79
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ActGuardService, deps: [{ token: i1.YunzaiConfigService }, { token: i1.PathToRegexpService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
80
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ActGuardService, providedIn: 'root' }); }
81
- }
82
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ActGuardService, decorators: [{
83
- type: Injectable,
84
- args: [{ providedIn: 'root' }]
85
- }], ctorParameters: () => [{ type: i1.YunzaiConfigService }, { type: i1.PathToRegexpService }, { type: i2.Router }] });
86
- export const actGuardCanActive = (_, state) => inject(ActGuardService).process(state.url);
87
- export const actGuardCanActiveChild = (_, state) => inject(ActGuardService).process(state.url);
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXVuemFpLWFjdC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Jpcy9sYXlvdXQveXVuemFpLWFjdC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUluRCxPQUFPLEVBQ0wsUUFBUSxFQUNSLEdBQUcsRUFJSCxtQkFBbUIsRUFFcEIsTUFBTSxhQUFhLENBQUM7QUFHckIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7OztBQUd2RSxNQUFNLE9BQU8sZUFBZTtJQUsxQixZQUNVLGFBQWtDLEVBQ2xDLFlBQWlDLEVBQ2pDLE1BQWM7UUFGZCxrQkFBYSxHQUFiLGFBQWEsQ0FBcUI7UUFDbEMsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFQaEIsUUFBRyxHQUF5Qix1QkFBdUIsQ0FBQztRQUNwRCxVQUFLLEdBQWdCLEVBQUUsQ0FBQztRQUN4QixVQUFLLEdBQWEsRUFBRSxDQUFDO1FBTzNCLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNiLElBQUksQ0FBQyxHQUFHLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5QyxHQUFHLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixNQUFNLENBQUMsRUFBRSxPQUFPLENBQUMsR0FBRyxtQkFBbUIsRUFBRSxDQUFDO1FBQzFDLE1BQU0sSUFBSSxHQUFlLE9BQU8sRUFBRyxDQUFDO1FBQ3BDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEIsYUFBYTtRQUNiLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFFLElBQUksQ0FBQyxJQUFrQixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1B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QUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMxQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQS9FVSxlQUFlO2tIQUFmLGVBQWUsY0FERixNQUFNOzsyRkFDbkIsZUFBZTtrQkFEM0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O0FBbUZsQyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBa0IsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6RyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBdUIsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FuQWN0aXZhdGVDaGlsZEZuLCBDYW5BY3RpdmF0ZUZuLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBNZW51IH0gZnJvbSAnQHllbG9uL3RoZW1lJztcbmltcG9ydCB7XG4gIGRlZXBDb3B5LFxuICBsb2csXG4gIFl1bnphaUJ1c2luZXNzQ29uZmlnLFxuICBZdW56YWlDb25maWdTZXJ2aWNlLFxuICBQYXRoVG9SZWdleHBTZXJ2aWNlLFxuICB1c2VMb2NhbFN0b3JhZ2VVc2VyLFxuICBZdW56YWlVc2VyXG59IGZyb20gJ0B5ZWxvbi91dGlsJztcbmltcG9ydCB7IE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5cbmltcG9ydCB7IEJVU0lORVNTX0RFRkFVTFRfQ09ORklHLCBtZXJnZUJpc0NvbmZpZyB9IGZyb20gJy4vYmlzLmNvbmZpZyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQWN0R3VhcmRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBiaXM6IFl1bnphaUJ1c2luZXNzQ29uZmlnID0gQlVTSU5FU1NfREVGQVVMVF9DT05GSUc7XG4gIHByaXZhdGUgbWVudXM6IE56U2FmZUFueVtdID0gW107XG4gIHByaXZhdGUgbGlua3M6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBZdW56YWlDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGF0aFRvUmVnZXhwOiBQYXRoVG9SZWdleHBTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcbiAgKSB7XG4gICAgbG9nKCdhY3Q6ICcpO1xuICAgIHRoaXMuYmlzID0gbWVyZ2VCaXNDb25maWcodGhpcy5jb25maWdTZXJ2aWNlKTtcbiAgICBsb2coJ2FjdDogY29uZmlnICcsIHRoaXMuYmlzKTtcbiAgICBjb25zdCBbLCBnZXRVc2VyXSA9IHVzZUxvY2FsU3RvcmFnZVVzZXIoKTtcbiAgICBjb25zdCB1c2VyOiBZdW56YWlVc2VyID0gZ2V0VXNlcigpITtcbiAgICBsb2coJ2FjdDogdXNlciAnLCB1c2VyKTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGhpcy5tZW51cyA9IGRlZXBDb3B5KCh1c2VyLm1lbnUgYXMgTnpTYWZlQW55KSB8fCBbXSkuZmlsdGVyKFxuICAgICAgKG06IE1lbnUpID0+IG0uc3lzdGVtQ29kZSAmJiBtLnN5c3RlbUNvZGUgPT09IHRoaXMuYmlzLnN5c3RlbUNvZGVcbiAgICApIGFzIE1lbnVbXTtcbiAgICBsb2coJ2FjdDogbWVudXMgJywgdGhpcy5tZW51cyk7XG4gICAgdGhpcy5nZXRBbGxMaW5rcyh0aGlzLm1lbnVzLCB0aGlzLmxpbmtzKTtcbiAgICBsb2coJ2FjdDogbGlua3MgJywgdGhpcy5saW5rcyk7XG4gIH1cblxuICBwcm9jZXNzKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgbG9nKCdhY3Q6IGNhbiBhY3RpdmF0ZSAnLCB1cmwpO1xuICAgIGlmICh0aGlzLnByZUhhbmRsZSh1cmwpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgbG9nKCdhY3Q6IGNhbiBhY3RpdmF0ZSBjaGlsZCBwcmVoYW5kbGUgc3VjY2VzcycpO1xuICAgIGxldCBjYW5hY3RpdmF0ZSA9IGZhbHNlO1xuICAgIHRoaXMubGlua3MuZm9yRWFjaCgobGluazogc3RyaW5nKSA9PiB7XG4gICAgICAvLyBwYXRoID0gL3h4eFxuICAgICAgaWYgKGxpbmsgPT09IHVybC5zcGxpdCgnPycpWzBdKSB7XG4gICAgICAgIGNhbmFjdGl2YXRlID0gdHJ1ZTtcbiAgICAgICAgbG9nKGBhY3Q6IGxpbmsgdmFsdWUgJHtsaW5rfSBlcXVhbHMgdXJsIHZhbHVlICR7dXJsfWApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBwYWh0ID0gL3h4eC86eHhcbiAgICAgIGNvbnN0IHJlZ2V4cDogUmVnRXhwID0gdGhpcy5wYXRoVG9SZWdleHAuc3RyaW5nVG9SZWdleHAobGluaywgbnVsbCwgbnVsbCk7XG4gICAgICBsb2coYGFjdDogJHtsaW5rfSB0ZXN0ICR7dXJsLnNwbGl0KCc/JylbMF19YCk7XG4gICAgICBpZiAocmVnZXhwLnRlc3QodXJsLnNwbGl0KCc/JylbMF0pKSB7XG4gICAgICAgIGNhbmFjdGl2YXRlID0gdHJ1ZTtcbiAgICAgICAgbG9nKGBhY3Q6IHRlc3QgdmFsdWUgJHtjYW5hY3RpdmF0ZX1gKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChjYW5hY3RpdmF0ZSkge1xuICAgICAgbG9nKGBhY3Q6IHRlc3Qgc3VjZXNzYCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nKGBhY3Q6IHRlc3QgZXJyb3JgKTtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnZGlzcGxheUluZGV4J10pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByZUhhbmRsZSh1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB1cmwuaW5jbHVkZXMoJ2Vycm9yJykgfHxcbiAgICAgIHVybC5pbmNsdWRlcygnZXhjZXB0aW9uJykgfHxcbiAgICAgIHVybC5pbmNsdWRlcygnZGlzcGxheUluZGV4JykgfHxcbiAgICAgIHVybCA9PT0gJycgfHxcbiAgICAgIHVybCA9PT0gbnVsbCB8fFxuICAgICAgdXJsID09PSAnLycgfHxcbiAgICAgIHVybC5pbmNsdWRlcygnaWZyYW1lUGFnZScpXG4gICAgKTtcbiAgfVxuXG4gIGdldEFsbExpbmtzKG1lbnU6IE1lbnVbXSwgbGlua3M6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgbWVudS5mb3JFYWNoKChzaWRlcjogTWVudSkgPT4ge1xuICAgICAgaWYgKHNpZGVyLmxpbmspIHtcbiAgICAgICAgbGlua3MucHVzaChzaWRlci5saW5rKTtcbiAgICAgIH1cbiAgICAgIGlmIChzaWRlci5jaGlsZHJlbiAmJiBzaWRlci5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuZ2V0QWxsTGlua3Moc2lkZXIuY2hpbGRyZW4sIGxpbmtzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgYWN0R3VhcmRDYW5BY3RpdmU6IENhbkFjdGl2YXRlRm4gPSAoXywgc3RhdGUpID0+IGluamVjdChBY3RHdWFyZFNlcnZpY2UpLnByb2Nlc3Moc3RhdGUudXJsKTtcbmV4cG9ydCBjb25zdCBhY3RHdWFyZENhbkFjdGl2ZUNoaWxkOiBDYW5BY3RpdmF0ZUNoaWxkRm4gPSAoXywgc3RhdGUpID0+IGluamVjdChBY3RHdWFyZFNlcnZpY2UpLnByb2Nlc3Moc3RhdGUudXJsKTtcbiJdfQ==
@@ -1,100 +0,0 @@
1
- import { Inject, inject, Injectable } from '@angular/core';
2
- import { YA_SERVICE_TOKEN } from '@yelon/auth';
3
- import { deepCopy, useLocalStorageUser, WINDOW } from '@yelon/util';
4
- import { BUSINESS_DEFAULT_CONFIG, mergeBisConfig } from './bis.config';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@yelon/util";
7
- export class YunzaiAnalysisAddonGuardService {
8
- constructor(configService, pathToRegexp, win, tokenService) {
9
- this.configService = configService;
10
- this.pathToRegexp = pathToRegexp;
11
- this.win = win;
12
- this.tokenService = tokenService;
13
- this.bis = BUSINESS_DEFAULT_CONFIG;
14
- this.menus = [];
15
- this.links = [];
16
- this.value = {};
17
- this.bis = mergeBisConfig(this.configService);
18
- const [, getUser] = useLocalStorageUser();
19
- const user = getUser();
20
- // @ts-ignore
21
- this.menus = deepCopy(user.menu || []).filter((m) => m.systemCode && m.systemCode === this.bis.systemCode);
22
- if (user) {
23
- this.value = {
24
- systemCode: this.bis.systemCode,
25
- userid: user.id,
26
- realname: user.realname,
27
- usertype: user.userType,
28
- usercode: user.userCode,
29
- username: user.username,
30
- account: user.username,
31
- deptid: user.deptId,
32
- deptname: user.deptName,
33
- token: this.tokenService.get()?.access_token
34
- };
35
- }
36
- if (this.menus && this.menus.length > 0) {
37
- this.value['system'] = this.menus[0].text;
38
- }
39
- this.getAllLinks(this.menus, this.links);
40
- }
41
- process(url) {
42
- let flag = false;
43
- this.links.forEach(link => {
44
- if (link.link === url.split('?')[0]) {
45
- flag = true;
46
- this.value['routename'] = link.title;
47
- this.value['routeurl'] = link.link;
48
- if (this.win['yunzai']) {
49
- this.win['yunzai'].setExtra(this.value);
50
- }
51
- return;
52
- }
53
- const regexp = this.pathToRegexp.stringToRegexp(link, null, null);
54
- if (regexp.test(url.split('?')[0])) {
55
- flag = true;
56
- this.value['routename'] = link.title;
57
- this.value['routeurl'] = link.link;
58
- if (this.win['yunzai']) {
59
- this.win['yunzai'].setExtra(this.value);
60
- }
61
- return;
62
- }
63
- });
64
- if (!flag) {
65
- this.value['routename'] = url;
66
- this.value['routeurl'] = url;
67
- if (this.win['yunzai']) {
68
- this.win['yunzai'].setExtra(this.value);
69
- }
70
- }
71
- return true;
72
- }
73
- getAllLinks(menu, links) {
74
- menu.forEach((sider) => {
75
- if (sider.link) {
76
- links.push({ title: sider.text ? sider.text : sider.link, link: sider.link });
77
- }
78
- if (sider.children && sider.children.length > 0) {
79
- this.getAllLinks(sider.children, links);
80
- }
81
- });
82
- }
83
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiAnalysisAddonGuardService, deps: [{ token: i1.YunzaiConfigService }, { token: i1.PathToRegexpService }, { token: WINDOW }, { token: YA_SERVICE_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable }); }
84
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiAnalysisAddonGuardService, providedIn: 'root' }); }
85
- }
86
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiAnalysisAddonGuardService, decorators: [{
87
- type: Injectable,
88
- args: [{
89
- providedIn: 'root'
90
- }]
91
- }], ctorParameters: () => [{ type: i1.YunzaiConfigService }, { type: i1.PathToRegexpService }, { type: undefined, decorators: [{
92
- type: Inject,
93
- args: [WINDOW]
94
- }] }, { type: undefined, decorators: [{
95
- type: Inject,
96
- args: [YA_SERVICE_TOKEN]
97
- }] }] });
98
- export const analysisAddonCanActive = (_, state) => inject(YunzaiAnalysisAddonGuardService).process(state.url);
99
- export const analysisAddonCanActiveChild = (_, state) => inject(YunzaiAnalysisAddonGuardService).process(state.url);
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXVuemFpLWFuYWx5c2lzLWFkZG9uLmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYmlzL2xheW91dC95dW56YWktYW5hbHlzaXMtYWRkb24uZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNELE9BQU8sRUFBaUIsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFOUQsT0FBTyxFQUNMLFFBQVEsRUFFUixtQkFBbUIsRUFDbkIsTUFBTSxFQUlQLE1BQU0sYUFBYSxDQUFDO0FBR3JCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7OztBQUt2RSxNQUFNLE9BQU8sK0JBQStCO0lBTTFDLFlBQ1UsYUFBa0MsRUFDbEMsWUFBaUMsRUFDakIsR0FBYyxFQUNKLFlBQTJCO1FBSHJELGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQUNsQyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakIsUUFBRyxHQUFILEdBQUcsQ0FBVztRQUNKLGlCQUFZLEdBQVosWUFBWSxDQUFlO1FBVHZELFFBQUcsR0FBeUIsdUJBQXVCLENBQUM7UUFDcEQsVUFBSyxHQUFnQixFQUFFLENBQUM7UUFDeEIsVUFBSyxHQUEyQyxFQUFFLENBQUM7UUFDbkQsVUFBSyxHQUFjLEVBQUUsQ0FBQztRQVE1QixJQUFJLENBQUMsR0FBRyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDOUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztRQUMxQyxNQUFNLElBQUksR0FBZSxPQUFPLEVBQUcsQ0FBQztRQUNwQyxhQUFhO1FBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUUsSUFBSSxDQUFDLElBQWtCLElB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QU07aUJBQ25COzswQkFVSSxNQUFNOzJCQUFDLE1BQU07OzBCQUNiLE1BQU07MkJBQUMsZ0JBQWdCOztBQTBFNUIsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQWtCLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQ2hFLE1BQU0sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0QsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQXVCLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQzFFLE1BQU0sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FuQWN0aXZhdGVDaGlsZEZuLCBDYW5BY3RpdmF0ZUZuIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgSVRva2VuU2VydmljZSwgWUFfU0VSVklDRV9UT0tFTiB9IGZyb20gJ0B5ZWxvbi9hdXRoJztcbmltcG9ydCB7IE1lbnUgfSBmcm9tICdAeWVsb24vdGhlbWUnO1xuaW1wb3J0IHtcbiAgZGVlcENvcHksXG4gIFBhdGhUb1JlZ2V4cFNlcnZpY2UsXG4gIHVzZUxvY2FsU3RvcmFnZVVzZXIsXG4gIFdJTkRPVyxcbiAgWXVuemFpQnVzaW5lc3NDb25maWcsXG4gIFl1bnphaUNvbmZpZ1NlcnZpY2UsXG4gIFl1bnphaVVzZXJcbn0gZnJvbSAnQHllbG9uL3V0aWwnO1xuaW1wb3J0IHsgTnpTYWZlQW55IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcblxuaW1wb3J0IHsgQlVTSU5FU1NfREVGQVVMVF9DT05GSUcsIG1lcmdlQmlzQ29uZmlnIH0gZnJvbSAnLi9iaXMuY29uZmlnJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgWXVuemFpQW5hbHlzaXNBZGRvbkd1YXJkU2VydmljZSB7XG4gIHByaXZhdGUgYmlzOiBZdW56YWlCdXNpbmVzc0NvbmZpZyA9IEJVU0lORVNTX0RFRkFVTFRfQ09ORklHO1xuICBwcml2YXRlIG1lbnVzOiBOelNhZmVBbnlbXSA9IFtdO1xuICBwcml2YXRlIGxpbmtzOiBBcnJheTx7IHRpdGxlOiBzdHJpbmc7IGxpbms6IHN0cmluZyB9PiA9IFtdO1xuICBwcml2YXRlIHZhbHVlOiBOelNhZmVBbnkgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IFl1bnphaUNvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwYXRoVG9SZWdleHA6IFBhdGhUb1JlZ2V4cFNlcnZpY2UsXG4gICAgQEluamVjdChXSU5ET1cpIHByaXZhdGUgd2luOiBOelNhZmVBbnksXG4gICAgQEluamVjdChZQV9TRVJWSUNFX1RPS0VOKSBwcml2YXRlIHRva2VuU2VydmljZTogSVRva2VuU2VydmljZVxuICApIHtcbiAgICB0aGlzLmJpcyA9IG1lcmdlQmlzQ29uZmlnKHRoaXMuY29uZmlnU2VydmljZSk7XG4gICAgY29uc3QgWywgZ2V0VXNlcl0gPSB1c2VMb2NhbFN0b3JhZ2VVc2VyKCk7XG4gICAgY29uc3QgdXNlcjogWXVuemFpVXNlciA9IGdldFVzZXIoKSE7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMubWVudXMgPSBkZWVwQ29weSgodXNlci5tZW51IGFzIE56U2FmZUFueSkgfHwgW10pLmZpbHRlcihcbiAgICAgIChtOiBNZW51KSA9PiBtLnN5c3RlbUNvZGUgJiYgbS5zeXN0ZW1Db2RlID09PSB0aGlzLmJpcy5zeXN0ZW1Db2RlXG4gICAgKSBhcyBNZW51W107XG4gICAgaWYgKHVzZXIpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB7XG4gICAgICAgIHN5c3RlbUNvZGU6IHRoaXMuYmlzLnN5c3RlbUNvZGUsXG4gICAgICAgIHVzZXJpZDogdXNlci5pZCxcbiAgICAgICAgcmVhbG5hbWU6IHVzZXIucmVhbG5hbWUsXG4gICAgICAgIHVzZXJ0eXBlOiB1c2VyLnVzZXJUeXBlLFxuICAgICAgICB1c2VyY29kZTogdXNlci51c2VyQ29kZSxcbiAgICAgICAgdXNlcm5hbWU6IHVzZXIudXNlcm5hbWUsXG4gICAgICAgIGFjY291bnQ6IHVzZXIudXNlcm5hbWUsXG4gICAgICAgIGRlcHRpZDogdXNlci5kZXB0SWQsXG4gICAgICAgIGRlcHRuYW1lOiB1c2VyLmRlcHROYW1lLFxuICAgICAgICB0b2tlbjogdGhpcy50b2tlblNlcnZpY2UuZ2V0KCk/LmFjY2Vzc190b2tlblxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKHRoaXMubWVudXMgJiYgdGhpcy5tZW51cy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnZhbHVlWydzeXN0ZW0nXSA9ICh0aGlzLm1lbnVzWzBdIGFzIE1lbnUpLnRleHQ7XG4gICAgfVxuICAgIHRoaXMuZ2V0QWxsTGlua3ModGhpcy5tZW51cywgdGhpcy5saW5rcyk7XG4gIH1cblxuICBwcm9jZXNzKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgbGV0IGZsYWcgPSBmYWxzZTtcbiAgICB0aGlzLmxpbmtzLmZvckVhY2gobGluayA9PiB7XG4gICAgICBpZiAobGluay5saW5rID09PSB1cmwuc3BsaXQoJz8nKVswXSkge1xuICAgICAgICBmbGFnID0gdHJ1ZTtcbiAgICAgICAgdGhpcy52YWx1ZVsncm91dGVuYW1lJ10gPSBsaW5rLnRpdGxlO1xuICAgICAgICB0aGlzLnZhbHVlWydyb3V0ZXVybCddID0gbGluay5saW5rO1xuICAgICAgICBpZiAodGhpcy53aW5bJ3l1bnphaSddKSB7XG4gICAgICAgICAgdGhpcy53aW5bJ3l1bnphaSddLnNldEV4dHJhKHRoaXMudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlZ2V4cDogUmVnRXhwID0gdGhpcy5wYXRoVG9SZWdleHAuc3RyaW5nVG9SZWdleHAobGluaywgbnVsbCwgbnVsbCk7XG4gICAgICBpZiAocmVnZXhwLnRlc3QodXJsLnNwbGl0KCc/JylbMF0pKSB7XG4gICAgICAgIGZsYWcgPSB0cnVlO1xuICAgICAgICB0aGlzLnZhbHVlWydyb3V0ZW5hbWUnXSA9IGxpbmsudGl0bGU7XG4gICAgICAgIHRoaXMudmFsdWVbJ3JvdXRldXJsJ10gPSBsaW5rLmxpbms7XG4gICAgICAgIGlmICh0aGlzLndpblsneXVuemFpJ10pIHtcbiAgICAgICAgICB0aGlzLndpblsneXVuemFpJ10uc2V0RXh0cmEodGhpcy52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICghZmxhZykge1xuICAgICAgdGhpcy52YWx1ZVsncm91dGVuYW1lJ10gPSB1cmw7XG4gICAgICB0aGlzLnZhbHVlWydyb3V0ZXVybCddID0gdXJsO1xuICAgICAgaWYgKHRoaXMud2luWyd5dW56YWknXSkge1xuICAgICAgICB0aGlzLndpblsneXVuemFpJ10uc2V0RXh0cmEodGhpcy52YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZ2V0QWxsTGlua3MobWVudTogTWVudVtdLCBsaW5rczogQXJyYXk8eyB0aXRsZTogc3RyaW5nOyBsaW5rOiBzdHJpbmcgfT4pOiB2b2lkIHtcbiAgICBtZW51LmZvckVhY2goKHNpZGVyOiBNZW51KSA9PiB7XG4gICAgICBpZiAoc2lkZXIubGluaykge1xuICAgICAgICBsaW5rcy5wdXNoKHsgdGl0bGU6IHNpZGVyLnRleHQgPyBzaWRlci50ZXh0IDogc2lkZXIubGluaywgbGluazogc2lkZXIubGluayB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChzaWRlci5jaGlsZHJlbiAmJiBzaWRlci5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuZ2V0QWxsTGlua3Moc2lkZXIuY2hpbGRyZW4sIGxpbmtzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgYW5hbHlzaXNBZGRvbkNhbkFjdGl2ZTogQ2FuQWN0aXZhdGVGbiA9IChfLCBzdGF0ZSkgPT5cbiAgaW5qZWN0KFl1bnphaUFuYWx5c2lzQWRkb25HdWFyZFNlcnZpY2UpLnByb2Nlc3Moc3RhdGUudXJsKTtcbmV4cG9ydCBjb25zdCBhbmFseXNpc0FkZG9uQ2FuQWN0aXZlQ2hpbGQ6IENhbkFjdGl2YXRlQ2hpbGRGbiA9IChfLCBzdGF0ZSkgPT5cbiAgaW5qZWN0KFl1bnphaUFuYWx5c2lzQWRkb25HdWFyZFNlcnZpY2UpLnByb2Nlc3Moc3RhdGUudXJsKTtcbiJdfQ==