@yelon/bis 16.2.5 → 16.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +23 -23
  3. package/esm2022/bis.mjs +4 -4
  4. package/esm2022/index.mjs +1 -1
  5. package/esm2022/layout/bis.config.mjs +14 -14
  6. package/esm2022/layout/html-names.mjs +32 -32
  7. package/esm2022/layout/icon/style-icons.mjs +795 -795
  8. package/esm2022/layout/layout-basic/index.mjs +2 -2
  9. package/esm2022/layout/layout-basic/interface.mjs +1 -1
  10. package/esm2022/layout/layout-basic/layout-basic.component.mjs +372 -372
  11. package/esm2022/layout/layout-nav/index.mjs +3 -3
  12. package/esm2022/layout/layout-nav/layout-nav-application.component.mjs +364 -364
  13. package/esm2022/layout/layout-nav/layout-nav-group.component.mjs +122 -122
  14. package/esm2022/layout/layout-nav/layout-nav-tile.component.mjs +14 -14
  15. package/esm2022/layout/layout.mjs +4 -4
  16. package/esm2022/layout/public_api.mjs +12 -12
  17. package/esm2022/layout/widgets/index.mjs +6 -6
  18. package/esm2022/layout/widgets/yunzai-clear-storage.component.mjs +44 -44
  19. package/esm2022/layout/widgets/yunzai-fullscreen.component.mjs +44 -44
  20. package/esm2022/layout/widgets/yunzai-i18n.component.mjs +145 -145
  21. package/esm2022/layout/widgets/yunzai-notify.component.mjs +182 -182
  22. package/esm2022/layout/widgets/yunzai-theme-btn.component.mjs +199 -199
  23. package/esm2022/layout/widgets/yunzai-user.component.mjs +129 -129
  24. package/esm2022/layout/yunzai-act.guard.mjs +106 -106
  25. package/esm2022/layout/yunzai-auth.service.mjs +107 -107
  26. package/esm2022/layout/yunzai-default.interceptor.mjs +200 -201
  27. package/esm2022/layout/yunzai-i18n.service.mjs +101 -101
  28. package/esm2022/layout/yunzai-lang.mjs +113 -113
  29. package/esm2022/layout/yunzai-layout.module.mjs +76 -76
  30. package/esm2022/layout/yunzai-startup.service.mjs +151 -151
  31. package/esm2022/public_api.mjs +1 -1
  32. package/fesm2022/bis.mjs +6 -6
  33. package/fesm2022/layout.mjs +3197 -3198
  34. package/fesm2022/layout.mjs.map +1 -1
  35. package/index.d.ts +1 -1
  36. package/index.less +1 -1
  37. package/layout/bis.config.d.ts +3 -3
  38. package/layout/html-names.d.ts +31 -31
  39. package/layout/icon/style-icons.d.ts +1 -1
  40. package/layout/index.d.ts +5 -5
  41. package/layout/layout-basic/index.d.ts +2 -2
  42. package/layout/layout-basic/interface.d.ts +8 -8
  43. package/layout/layout-basic/layout-basic.component.d.ts +28 -28
  44. package/layout/layout-nav/index.d.ts +3 -3
  45. package/layout/layout-nav/layout-nav-application.component.d.ts +31 -31
  46. package/layout/layout-nav/layout-nav-group.component.d.ts +16 -16
  47. package/layout/layout-nav/layout-nav-tile.component.d.ts +6 -6
  48. package/layout/public_api.d.ts +12 -12
  49. package/layout/style/index.less +154 -154
  50. package/layout/widgets/index.d.ts +6 -6
  51. package/layout/widgets/yunzai-clear-storage.component.d.ts +11 -11
  52. package/layout/widgets/yunzai-fullscreen.component.d.ts +8 -8
  53. package/layout/widgets/yunzai-i18n.component.d.ts +21 -21
  54. package/layout/widgets/yunzai-notify.component.d.ts +30 -30
  55. package/layout/widgets/yunzai-theme-btn.component.d.ts +32 -32
  56. package/layout/widgets/yunzai-user.component.d.ts +26 -26
  57. package/layout/yunzai-act.guard.d.ts +20 -20
  58. package/layout/yunzai-auth.service.d.ts +19 -19
  59. package/layout/yunzai-default.interceptor.d.ts +27 -27
  60. package/layout/yunzai-i18n.service.d.ts +26 -26
  61. package/layout/yunzai-lang.d.ts +11 -11
  62. package/layout/yunzai-layout.module.d.ts +22 -22
  63. package/layout/yunzai-startup.service.d.ts +34 -34
  64. package/package.json +39 -39
  65. package/public_api.d.ts +2 -2
  66. package/theme-compact.less +3 -3
  67. package/theme-dark.less +46 -46
  68. package/theme-default.less +46 -46
@@ -1,200 +1,200 @@
1
- import { DOCUMENT } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, Input, Inject, Optional } from '@angular/core';
3
- import { YUNZAI_THEME_BTN_KEYS } from '@yelon/theme/theme-btn';
4
- import { Subject, takeUntil } from "rxjs";
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/core/transition-patch";
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/tooltip";
14
- import * as i9 from "ng-zorro-antd/icon";
15
- import * as i10 from "@yelon/theme";
16
- export class YunzaiThemBtnComponent {
17
- constructor(renderer, configSrv, platform, doc, directionality, KEYS) {
18
- this.renderer = renderer;
19
- this.configSrv = configSrv;
20
- this.platform = platform;
21
- this.doc = doc;
22
- this.directionality = directionality;
23
- this.KEYS = KEYS;
24
- this.theme = 'default';
25
- this.types = [
26
- { key: 'default', text: 'theme.default', color: '#2163ff' },
27
- { key: 'compact', text: 'theme.compact', color: '#2163ff' },
28
- { key: 'dark', text: 'theme.dark', color: '#020202' },
29
- { key: 'yuhong', text: 'theme.yuhong', color: '#C04851' },
30
- { key: 'danjuhuang', text: 'theme.danjuhuang', color: '#FBA414' },
31
- { key: 'xinghuang', text: 'theme.xinghuang', color: '#F28E16' },
32
- { key: 'shilv', text: 'theme.shilv', color: '#57C3C2' },
33
- { key: 'zhulv', text: 'theme.zhulv', color: '#1BA784' },
34
- { key: 'youlan', text: 'theme.youlan', color: '#1781B5' },
35
- { key: 'dianqing', text: 'theme.dianqing', color: '#1661AB' },
36
- { key: 'shangengzi', text: 'theme.shangengzi', color: '#61649F' },
37
- { key: 'shuiniuhui', text: 'theme.shuiniuhui', color: '#2F2F35' }
38
- ];
39
- this.devTips = `When the dark.css file can't be found, you need to run it once: npm run theme`;
40
- this.deployUrl = '';
41
- this.dir = 'ltr';
42
- this.$destroy = new Subject();
43
- }
44
- ngOnInit() {
45
- this.dir = this.directionality.value;
46
- this.directionality.change?.pipe(takeUntil(this.$destroy)).subscribe((direction) => {
47
- this.dir = direction;
48
- });
49
- this.initTheme();
50
- }
51
- initTheme() {
52
- if (!this.platform.isBrowser) {
53
- return;
54
- }
55
- this.theme = localStorage.getItem(this.KEYS) || 'default';
56
- this.updateChartTheme();
57
- this.onThemeChange(this.theme);
58
- }
59
- updateChartTheme() {
60
- this.configSrv.set('chart', { theme: this.theme === 'dark' ? 'dark' : '' });
61
- }
62
- onThemeChange(theme) {
63
- if (!this.platform.isBrowser) {
64
- return;
65
- }
66
- this.theme = theme;
67
- this.renderer.setAttribute(this.doc.body, 'data-theme', theme);
68
- const dom = this.doc.getElementById(this.KEYS);
69
- if (dom) {
70
- dom.remove();
71
- }
72
- localStorage.removeItem(this.KEYS);
73
- if (theme !== 'default') {
74
- const el = this.doc.createElement('link');
75
- el.type = 'text/css';
76
- el.rel = 'stylesheet';
77
- el.id = this.KEYS;
78
- el.href = `${this.deployUrl}assets/style.${theme}.css`;
79
- localStorage.setItem(this.KEYS, theme);
80
- this.doc.body.append(el);
81
- }
82
- this.updateChartTheme();
83
- }
84
- ngOnDestroy() {
85
- this.$destroy.complete();
86
- const el = this.doc.getElementById(this.KEYS);
87
- if (el != null) {
88
- this.doc.body.removeChild(el);
89
- }
90
- }
91
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: YunzaiThemBtnComponent, 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 }); }
92
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: YunzaiThemBtnComponent, selector: "yunzai-theme-btn", inputs: { types: "types", devTips: "devTips", deployUrl: "deployUrl" }, ngImport: i0, template: `
93
- <div
94
- data-event-id="_nav_theme"
95
- class="yunzai-default__nav-item"
96
- nz-dropdown
97
- [nzDropdownMenu]="iconMenu"
98
- nzTrigger="click"
99
- nzPlacement="bottomRight"
100
- >
101
- <svg nz-tooltip class="anticon" role="img" width="21" height="21" viewBox="0 0 21 21" fill="currentColor">
102
- <g fill-rule="evenodd">
103
- <g fill-rule="nonzero">
104
- <path
105
- 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"
106
- ></path>
107
- </g>
108
- </g>
109
- </svg>
110
- </div>
111
- <nz-dropdown-menu #iconMenu="nzDropdownMenu">
112
- <ul nz-menu>
113
- <li
114
- nz-menu-item
115
- data-event-id="_nav_theme"
116
- [attr.data-text]="theme.text | i18n"
117
- *ngFor="let theme of types"
118
- (click)="onThemeChange(theme.key)"
119
- [style]="{ color: theme.color }"
120
- >
121
- <i nz-icon nzType="bg-colors"></i>
122
- {{ theme.text | i18n }}
123
- </li>
124
- </ul>
125
- <!-- <div nz-menu class="wd-xl animated jello">-->
126
- <!-- <div nz-row [nzJustify]="'space-between'" [nzAlign]="'middle'" class="app-icons">-->
127
- <!-- <div nz-col [nzSpan]="4" *ngFor="let theme of types" (click)="onThemeChange(theme.key)">-->
128
- <!-- <i nz-icon nzType="bg-colors" class="text-white" [style]="{ backgroundColor: theme.color }"></i>-->
129
- <!-- <span [ngStyle]="{ color: theme.color }">{{ theme.text | i18n }}</span>-->
130
- <!-- </div>-->
131
- <!-- </div>-->
132
- <!-- </div>-->
133
- </nz-dropdown-menu>
134
- `, isInline: true, dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i6.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "directive", type: i6.NzMenuItemDirective, 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.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }, { kind: "directive", type: i9.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "pipe", type: i10.I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
135
- }
136
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: YunzaiThemBtnComponent, decorators: [{
137
- type: Component,
138
- args: [{
139
- selector: 'yunzai-theme-btn',
140
- template: `
141
- <div
142
- data-event-id="_nav_theme"
143
- class="yunzai-default__nav-item"
144
- nz-dropdown
145
- [nzDropdownMenu]="iconMenu"
146
- nzTrigger="click"
147
- nzPlacement="bottomRight"
148
- >
149
- <svg nz-tooltip class="anticon" role="img" width="21" height="21" viewBox="0 0 21 21" fill="currentColor">
150
- <g fill-rule="evenodd">
151
- <g fill-rule="nonzero">
152
- <path
153
- 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"
154
- ></path>
155
- </g>
156
- </g>
157
- </svg>
158
- </div>
159
- <nz-dropdown-menu #iconMenu="nzDropdownMenu">
160
- <ul nz-menu>
161
- <li
162
- nz-menu-item
163
- data-event-id="_nav_theme"
164
- [attr.data-text]="theme.text | i18n"
165
- *ngFor="let theme of types"
166
- (click)="onThemeChange(theme.key)"
167
- [style]="{ color: theme.color }"
168
- >
169
- <i nz-icon nzType="bg-colors"></i>
170
- {{ theme.text | i18n }}
171
- </li>
172
- </ul>
173
- <!-- <div nz-menu class="wd-xl animated jello">-->
174
- <!-- <div nz-row [nzJustify]="'space-between'" [nzAlign]="'middle'" class="app-icons">-->
175
- <!-- <div nz-col [nzSpan]="4" *ngFor="let theme of types" (click)="onThemeChange(theme.key)">-->
176
- <!-- <i nz-icon nzType="bg-colors" class="text-white" [style]="{ backgroundColor: theme.color }"></i>-->
177
- <!-- <span [ngStyle]="{ color: theme.color }">{{ theme.text | i18n }}</span>-->
178
- <!-- </div>-->
179
- <!-- </div>-->
180
- <!-- </div>-->
181
- </nz-dropdown-menu>
182
- `,
183
- changeDetection: ChangeDetectionStrategy.OnPush
184
- }]
185
- }], ctorParameters: function () { return [{ 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
- }] } });
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, Input, Inject, Optional } from '@angular/core';
3
+ import { YUNZAI_THEME_BTN_KEYS } from '@yelon/theme/theme-btn';
4
+ import { Subject, takeUntil } from "rxjs";
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/core/transition-patch";
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/tooltip";
14
+ import * as i9 from "ng-zorro-antd/icon";
15
+ import * as i10 from "@yelon/theme";
16
+ export class YunzaiThemBtnComponent {
17
+ constructor(renderer, configSrv, platform, doc, directionality, KEYS) {
18
+ this.renderer = renderer;
19
+ this.configSrv = configSrv;
20
+ this.platform = platform;
21
+ this.doc = doc;
22
+ this.directionality = directionality;
23
+ this.KEYS = KEYS;
24
+ this.theme = 'default';
25
+ this.types = [
26
+ { key: 'default', text: 'theme.default', color: '#2163ff' },
27
+ { key: 'compact', text: 'theme.compact', color: '#2163ff' },
28
+ { key: 'dark', text: 'theme.dark', color: '#020202' },
29
+ { key: 'yuhong', text: 'theme.yuhong', color: '#C04851' },
30
+ { key: 'danjuhuang', text: 'theme.danjuhuang', color: '#FBA414' },
31
+ { key: 'xinghuang', text: 'theme.xinghuang', color: '#F28E16' },
32
+ { key: 'shilv', text: 'theme.shilv', color: '#57C3C2' },
33
+ { key: 'zhulv', text: 'theme.zhulv', color: '#1BA784' },
34
+ { key: 'youlan', text: 'theme.youlan', color: '#1781B5' },
35
+ { key: 'dianqing', text: 'theme.dianqing', color: '#1661AB' },
36
+ { key: 'shangengzi', text: 'theme.shangengzi', color: '#61649F' },
37
+ { key: 'shuiniuhui', text: 'theme.shuiniuhui', color: '#2F2F35' }
38
+ ];
39
+ this.devTips = `When the dark.css file can't be found, you need to run it once: npm run theme`;
40
+ this.deployUrl = '';
41
+ this.dir = 'ltr';
42
+ this.$destroy = new Subject();
43
+ }
44
+ ngOnInit() {
45
+ this.dir = this.directionality.value;
46
+ this.directionality.change?.pipe(takeUntil(this.$destroy)).subscribe((direction) => {
47
+ this.dir = direction;
48
+ });
49
+ this.initTheme();
50
+ }
51
+ initTheme() {
52
+ if (!this.platform.isBrowser) {
53
+ return;
54
+ }
55
+ this.theme = localStorage.getItem(this.KEYS) || 'default';
56
+ this.updateChartTheme();
57
+ this.onThemeChange(this.theme);
58
+ }
59
+ updateChartTheme() {
60
+ this.configSrv.set('chart', { theme: this.theme === 'dark' ? 'dark' : '' });
61
+ }
62
+ onThemeChange(theme) {
63
+ if (!this.platform.isBrowser) {
64
+ return;
65
+ }
66
+ this.theme = theme;
67
+ this.renderer.setAttribute(this.doc.body, 'data-theme', theme);
68
+ const dom = this.doc.getElementById(this.KEYS);
69
+ if (dom) {
70
+ dom.remove();
71
+ }
72
+ localStorage.removeItem(this.KEYS);
73
+ if (theme !== 'default') {
74
+ const el = this.doc.createElement('link');
75
+ el.type = 'text/css';
76
+ el.rel = 'stylesheet';
77
+ el.id = this.KEYS;
78
+ el.href = `${this.deployUrl}assets/style.${theme}.css`;
79
+ localStorage.setItem(this.KEYS, theme);
80
+ this.doc.body.append(el);
81
+ }
82
+ this.updateChartTheme();
83
+ }
84
+ ngOnDestroy() {
85
+ this.$destroy.complete();
86
+ const el = this.doc.getElementById(this.KEYS);
87
+ if (el != null) {
88
+ this.doc.body.removeChild(el);
89
+ }
90
+ }
91
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: YunzaiThemBtnComponent, 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 }); }
92
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: YunzaiThemBtnComponent, selector: "yunzai-theme-btn", inputs: { types: "types", devTips: "devTips", deployUrl: "deployUrl" }, ngImport: i0, template: `
93
+ <div
94
+ data-event-id="_nav_theme"
95
+ class="yunzai-default__nav-item"
96
+ nz-dropdown
97
+ [nzDropdownMenu]="iconMenu"
98
+ nzTrigger="click"
99
+ nzPlacement="bottomRight"
100
+ >
101
+ <svg nz-tooltip class="anticon" role="img" width="21" height="21" viewBox="0 0 21 21" fill="currentColor">
102
+ <g fill-rule="evenodd">
103
+ <g fill-rule="nonzero">
104
+ <path
105
+ 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"
106
+ ></path>
107
+ </g>
108
+ </g>
109
+ </svg>
110
+ </div>
111
+ <nz-dropdown-menu #iconMenu="nzDropdownMenu">
112
+ <ul nz-menu>
113
+ <li
114
+ nz-menu-item
115
+ data-event-id="_nav_theme"
116
+ [attr.data-text]="theme.text | i18n"
117
+ *ngFor="let theme of types"
118
+ (click)="onThemeChange(theme.key)"
119
+ [style]="{ color: theme.color }"
120
+ >
121
+ <i nz-icon nzType="bg-colors"></i>
122
+ {{ theme.text | i18n }}
123
+ </li>
124
+ </ul>
125
+ <!-- <div nz-menu class="wd-xl animated jello">-->
126
+ <!-- <div nz-row [nzJustify]="'space-between'" [nzAlign]="'middle'" class="app-icons">-->
127
+ <!-- <div nz-col [nzSpan]="4" *ngFor="let theme of types" (click)="onThemeChange(theme.key)">-->
128
+ <!-- <i nz-icon nzType="bg-colors" class="text-white" [style]="{ backgroundColor: theme.color }"></i>-->
129
+ <!-- <span [ngStyle]="{ color: theme.color }">{{ theme.text | i18n }}</span>-->
130
+ <!-- </div>-->
131
+ <!-- </div>-->
132
+ <!-- </div>-->
133
+ </nz-dropdown-menu>
134
+ `, isInline: true, dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i6.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "directive", type: i6.NzMenuItemDirective, 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.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }, { kind: "directive", type: i9.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "pipe", type: i10.I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
135
+ }
136
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: YunzaiThemBtnComponent, decorators: [{
137
+ type: Component,
138
+ args: [{
139
+ selector: 'yunzai-theme-btn',
140
+ template: `
141
+ <div
142
+ data-event-id="_nav_theme"
143
+ class="yunzai-default__nav-item"
144
+ nz-dropdown
145
+ [nzDropdownMenu]="iconMenu"
146
+ nzTrigger="click"
147
+ nzPlacement="bottomRight"
148
+ >
149
+ <svg nz-tooltip class="anticon" role="img" width="21" height="21" viewBox="0 0 21 21" fill="currentColor">
150
+ <g fill-rule="evenodd">
151
+ <g fill-rule="nonzero">
152
+ <path
153
+ 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"
154
+ ></path>
155
+ </g>
156
+ </g>
157
+ </svg>
158
+ </div>
159
+ <nz-dropdown-menu #iconMenu="nzDropdownMenu">
160
+ <ul nz-menu>
161
+ <li
162
+ nz-menu-item
163
+ data-event-id="_nav_theme"
164
+ [attr.data-text]="theme.text | i18n"
165
+ *ngFor="let theme of types"
166
+ (click)="onThemeChange(theme.key)"
167
+ [style]="{ color: theme.color }"
168
+ >
169
+ <i nz-icon nzType="bg-colors"></i>
170
+ {{ theme.text | i18n }}
171
+ </li>
172
+ </ul>
173
+ <!-- <div nz-menu class="wd-xl animated jello">-->
174
+ <!-- <div nz-row [nzJustify]="'space-between'" [nzAlign]="'middle'" class="app-icons">-->
175
+ <!-- <div nz-col [nzSpan]="4" *ngFor="let theme of types" (click)="onThemeChange(theme.key)">-->
176
+ <!-- <i nz-icon nzType="bg-colors" class="text-white" [style]="{ backgroundColor: theme.color }"></i>-->
177
+ <!-- <span [ngStyle]="{ color: theme.color }">{{ theme.text | i18n }}</span>-->
178
+ <!-- </div>-->
179
+ <!-- </div>-->
180
+ <!-- </div>-->
181
+ </nz-dropdown-menu>
182
+ `,
183
+ changeDetection: ChangeDetectionStrategy.OnPush
184
+ }]
185
+ }], ctorParameters: function () { return [{ 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
200
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXVuemFpLXRoZW1lLWJ0bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9iaXMvbGF5b3V0L3dpZGdldHMveXVuemFpLXRoZW1lLWJ0bi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFJTCxNQUFNLEVBQ04sUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBZSxxQkFBcUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRzNFLE9BQU8sRUFBQyxPQUFPLEVBQUUsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7QUFxRHhDLE1BQU0sT0FBTyxzQkFBc0I7SUFxQmpDLFlBQ1UsUUFBbUIsRUFDbkIsU0FBOEIsRUFDOUIsUUFBa0IsRUFDQSxHQUFjLEVBQ3BCLGNBQThCLEVBQ1gsSUFBWTtRQUwzQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGNBQVMsR0FBVCxTQUFTLENBQXFCO1FBQzlCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDQSxRQUFHLEdBQUgsR0FBRyxDQUFXO1FBQ3BCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUNYLFNBQUksR0FBSixJQUFJLENBQVE7UUExQjdDLFVBQUssR0FBRyxTQUFTLENBQUM7UUFDakIsVUFBSyxHQUF5QjtZQUNyQyxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFDO1lBQ3pELEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUM7WUFDekQsRUFBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZ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QjtrQkEvQ2xDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQ1Q7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzswQkEwQkksTUFBTTsyQkFBQyxRQUFROzswQkFDZixRQUFROzswQkFDUixNQUFNOzJCQUFDLHFCQUFxQjs0Q0F6QnRCLEtBQUs7c0JBQWIsS0FBSztnQkFjRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aW9uLCBEaXJlY3Rpb25hbGl0eX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHtQbGF0Zm9ybX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFJlbmRlcmVyMixcbiAgSW5qZWN0LFxuICBPcHRpb25hbFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtUaGVtZUJ0blR5cGUsIFlVTlpBSV9USEVNRV9CVE5fS0VZU30gZnJvbSAnQHllbG9uL3RoZW1lL3RoZW1lLWJ0bic7XG5pbXBvcnQge1l1bnphaUNvbmZpZ1NlcnZpY2V9IGZyb20gJ0B5ZWxvbi91dGlsL2NvbmZpZyc7XG5pbXBvcnQge056U2FmZUFueX0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcbmltcG9ydCB7U3ViamVjdCwgdGFrZVVudGlsfSBmcm9tIFwicnhqc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFl1bnphaVRoZW1lQnRuVHlwZSBleHRlbmRzIFRoZW1lQnRuVHlwZSB7XG4gIGNvbG9yPzogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd5dW56YWktdGhlbWUtYnRuJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBkYXRhLWV2ZW50LWlkPVwiX25hdl90aGVtZVwiXG4gICAgICBjbGFzcz1cInl1bnphaS1kZWZhdWx0X19uYXYtaXRlbVwiXG4gICAgICBuei1kcm9wZG93blxuICAgICAgW256RHJvcGRvd25NZW51XT1cImljb25NZW51XCJcbiAgICAgIG56VHJpZ2dlcj1cImNsaWNrXCJcbiAgICAgIG56UGxhY2VtZW50PVwiYm90dG9tUmlnaHRcIlxuICAgID5cbiAgICAgIDxzdmcgbnotdG9vbHRpcCBjbGFzcz1cImFudGljb25cIiByb2xlPVwiaW1nXCIgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIxXCIgdmlld0JveD1cIjAgMCAyMSAyMVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj5cbiAgICAgICAgPGcgZmlsbC1ydWxlPVwiZXZlbm9kZFwiPlxuICAgICAgICAgIDxnIGZpbGwtcnVsZT1cIm5vbnplcm9cIj5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGQ9XCJNNy4wMiAzLjYzNWwxMi41MTggMTIuNTE4YTEuODYzIDEuODYzIDAgMDEwIDIuNjM1bC0xLjMxNyAxLjMxOGExLjg2MyAxLjg2MyAwIDAxLTIuNjM1IDBMMy4wNjggNy41ODhBMi43OTUgMi43OTUgMCAxMTcuMDIgMy42MzV6bTIuMDkgMTQuNDI4YS45MzIuOTMyIDAgMTEwIDEuODY0LjkzMi45MzIgMCAwMTAtMS44NjR6bS0uMDQzLTkuNzQ3TDcuNzUgOS42MzVsOS4xNTQgOS4xNTMgMS4zMTgtMS4zMTctOS4xNTQtOS4xNTV6TTMuNTIgMTIuNDczYy41MTQgMCAuOTMxLjQxNy45MzEuOTMxdi45MzJoLjkzMmEuOTMyLjkzMiAwIDExMCAxLjg2NGgtLjkzMnYuOTMxYS45MzIuOTMyIDAgMDEtMS44NjMgMGwtLjAwMS0uOTMxaC0uOTNhLjkzMi45MzIgMCAwMTAtMS44NjRoLjkzdi0uOTMyYzAtLjUxNC40MTgtLjkzMS45MzMtLjkzMXptMTUuMzc0LTMuNzI3YTEuMzk4IDEuMzk4IDAgMTEwIDIuNzk1IDEuMzk4IDEuMzk4IDAgMDEwLTIuNzk1ek00LjM4NSA0Ljk1M2EuOTMyLjkzMiAwIDAwMCAxLjMxN2wyLjA0NiAyLjA0N0w3Ljc1IDcgNS43MDMgNC45NTNhLjkzMi45MzIgMCAwMC0xLjMxOCAwek0xNC43MDEuMzZhLjkzMi45MzIgMCAwMS45MzEuOTMydi45MzFoLjkzMmEuOTMyLjkzMiAwIDAxMCAxLjg2NGgtLjkzM2wuMDAxLjkzMmEuOTMyLjkzMiAwIDExLTEuODYzIDBsLS4wMDEtLjkzMmgtLjkzYS45MzIuOTMyIDAgMTEwLTEuODY0aC45M3YtLjkzMWEuOTMyLjkzMiAwIDAxLjkzMy0uOTMyelwiXG4gICAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgPC9nPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPG56LWRyb3Bkb3duLW1lbnUgI2ljb25NZW51PVwibnpEcm9wZG93bk1lbnVcIj5cbiAgICAgIDx1bCBuei1tZW51PlxuICAgICAgICA8bGlcbiAgICAgICAgICBuei1tZW51LWl0ZW1cbiAgICAgICAgICBkYXRhLWV2ZW50LWlkPVwiX25hdl90aGVtZVwiXG4gICAgICAgICAgW2F0dHIuZGF0YS10ZXh0XT1cInRoZW1lLnRleHQgfCBpMThuXCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgdGhlbWUgb2YgdHlwZXNcIlxuICAgICAgICAgIChjbGljayk9XCJvblRoZW1lQ2hhbmdlKHRoZW1lLmtleSlcIlxuICAgICAgICAgIFtzdHlsZV09XCJ7IGNvbG9yOiB0aGVtZS5jb2xvciB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIG56LWljb24gbnpUeXBlPVwiYmctY29sb3JzXCI+PC9pPlxuICAgICAgICAgIHt7IHRoZW1lLnRleHQgfCBpMThuIH19XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgICAgPCEtLSAgICAgIDxkaXYgbnotbWVudSBjbGFzcz1cIndkLXhsIGFuaW1hdGVkIGplbGxvXCI+LS0+XG4gICAgICA8IS0tICAgICAgICA8ZGl2IG56LXJvdyBbbnpKdXN0aWZ5XT1cIidzcGFjZS1iZXR3ZWVuJ1wiIFtuekFsaWduXT1cIidtaWRkbGUnXCIgY2xhc3M9XCJhcHAtaWNvbnNcIj4tLT5cbiAgICAgIDwhLS0gICAgICAgICAgPGRpdiBuei1jb2wgW256U3Bhbl09XCI0XCIgKm5nRm9yPVwibGV0IHRoZW1lIG9mIHR5cGVzXCIgKGNsaWNrKT1cIm9uVGhlbWVDaGFuZ2UodGhlbWUua2V5KVwiPi0tPlxuICAgICAgPCEtLSAgICAgICAgICAgIDxpIG56LWljb24gbnpUeXBlPVwiYmctY29sb3JzXCIgY2xhc3M9XCJ0ZXh0LXdoaXRlXCIgW3N0eWxlXT1cInsgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5jb2xvciB9XCI+PC9pPi0tPlxuICAgICAgPCEtLSAgICAgICAgICAgIDxzcGFuIFtuZ1N0eWxlXT1cInsgY29sb3I6IHRoZW1lLmNvbG9yIH1cIj57eyB0aGVtZS50ZXh0IHwgaTE4biB9fTwvc3Bhbj4tLT5cbiAgICAgIDwhLS0gICAgICAgICAgPC9kaXY+LS0+XG4gICAgICA8IS0tICAgICAgICA8L2Rpdj4tLT5cbiAgICAgIDwhLS0gICAgICA8L2Rpdj4tLT5cbiAgICA8L256LWRyb3Bkb3duLW1lbnU+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFl1bnphaVRoZW1CdG5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgdGhlbWUgPSAnZGVmYXVsdCc7XG4gIEBJbnB1dCgpIHR5cGVzOiBZdW56YWlUaGVtZUJ0blR5cGVbXSA9IFtcbiAgICB7a2V5OiAnZGVmYXVsdCcsIHRleHQ6ICd0aGVtZS5kZWZhdWx0JywgY29sb3I6ICcjMjE2M2ZmJ30sXG4gICAge2tleTogJ2NvbXBhY3QnLCB0ZXh0OiAndGhlbWUuY29tcGFjdCcsIGNvbG9yOiAnIzIxNjNmZid9LFxuICAgIHtrZXk6ICdkYXJrJywgdGV4dDogJ3RoZW1lLmRhcmsnLCBjb2xvcjogJyMwMjAyMDInfSxcbiAgICB7a2V5OiAneXVob25nJywgdGV4dDogJ3RoZW1lLnl1aG9uZycsIGNvbG9yOiAnI0MwNDg1MSd9LFxuICAgIHtrZXk6ICdkYW5qdWh1YW5nJywgdGV4dDogJ3RoZW1lLmRhbmp1aHVhbmcnLCBjb2xvcjogJyNGQkE0MTQnfSxcbiAgICB7a2V5OiAneGluZ2h1YW5nJywgdGV4dDogJ3RoZW1lLnhpbmdodWFuZycsIGNvbG9yOiAnI0YyOEUxNid9LFxuICAgIHtrZXk6ICdzaGlsdicsIHRleHQ6ICd0aGVtZS5zaGlsdicsIGNvbG9yOiAnIzU3QzNDMid9LFxuICAgIHtrZXk6ICd6aHVsdicsIHRleHQ6ICd0aGVtZS56aHVsdicsIGNvbG9yOiAnIzFCQTc4NCd9LFxuICAgIHtrZXk6ICd5b3VsYW4nLCB0ZXh0OiAndGhlbWUueW91bGFuJywgY29sb3I6ICcjMTc4MUI1J30sXG4gICAge2tleTogJ2RpYW5xaW5nJywgdGV4dDogJ3RoZW1lLmRpYW5xaW5nJywgY29sb3I6ICcjMTY2MUFCJ30sXG4gICAge2tleTogJ3NoYW5nZW5nemknLCB0ZXh0OiAndGhlbWUuc2hhbmdlbmd6aScsIGNvbG9yOiAnIzYxNjQ5Rid9LFxuICAgIHtrZXk6ICdzaHVpbml1aHVpJywgdGV4dDogJ3RoZW1lLnNodWluaXVodWknLCBjb2xvcjogJyMyRjJGMzUnfVxuICBdO1xuICBASW5wdXQoKSBkZXZUaXBzID0gYFdoZW4gdGhlIGRhcmsuY3NzIGZpbGUgY2FuJ3QgYmUgZm91bmQsIHlvdSBuZWVkIHRvIHJ1biBpdCBvbmNlOiBucG0gcnVuIHRoZW1lYDtcbiAgQElucHV0KCkgZGVwbG95VXJsID0gJyc7XG4gIGRpcjogRGlyZWN0aW9uID0gJ2x0cic7XG4gIHByaXZhdGUgJGRlc3Ryb3kgPSBuZXcgU3ViamVjdCgpXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgY29uZmlnU3J2OiBZdW56YWlDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGxhdGZvcm06IFBsYXRmb3JtLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jOiBOelNhZmVBbnksXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBkaXJlY3Rpb25hbGl0eTogRGlyZWN0aW9uYWxpdHksXG4gICAgQEluamVjdChZVU5aQUlfVEhFTUVfQlROX0tFWVMpIHByaXZhdGUgS0VZUzogc3RyaW5nXG4gICkge1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kaXIgPSB0aGlzLmRpcmVjdGlvbmFsaXR5LnZhbHVlO1xuICAgIHRoaXMuZGlyZWN0aW9uYWxpdHkuY2hhbmdlPy5waXBlKHRha2VVbnRpbCh0aGlzLiRkZXN0cm95KSkuc3Vic2NyaWJlKChkaXJlY3Rpb246IERpcmVjdGlvbikgPT4ge1xuICAgICAgdGhpcy5kaXIgPSBkaXJlY3Rpb247XG4gICAgfSk7XG4gICAgdGhpcy5pbml0VGhlbWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFRoZW1lKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wbGF0Zm9ybS5pc0Jyb3dzZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy50aGVtZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuS0VZUykgfHwgJ2RlZmF1bHQnO1xuICAgIHRoaXMudXBkYXRlQ2hhcnRUaGVtZSgpO1xuICAgIHRoaXMub25UaGVtZUNoYW5nZSh0aGlzLnRoZW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ2hhcnRUaGVtZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZ1Nydi5zZXQoJ2NoYXJ0Jywge3RoZW1lOiB0aGlzLnRoZW1lID09PSAnZGFyaycgPyAnZGFyaycgOiAnJ30pO1xuICB9XG5cbiAgb25UaGVtZUNoYW5nZSh0aGVtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnBsYXRmb3JtLmlzQnJvd3Nlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnRoZW1lID0gdGhlbWU7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5kb2MuYm9keSwgJ2RhdGEtdGhlbWUnLCB0aGVtZSk7XG4gICAgY29uc3QgZG9tID0gdGhpcy5kb2MuZ2V0RWxlbWVudEJ5SWQodGhpcy5LRVlTKTtcbiAgICBpZiAoZG9tKSB7XG4gICAgICBkb20ucmVtb3ZlKCk7XG4gICAgfVxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuS0VZUyk7XG4gICAgaWYgKHRoZW1lICE9PSAnZGVmYXVsdCcpIHtcbiAgICAgIGNvbnN0IGVsID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgnbGluaycpO1xuICAgICAgZWwudHlwZSA9ICd0ZXh0L2Nzcyc7XG4gICAgICBlbC5yZWwgPSAnc3R5bGVzaGVldCc7XG4gICAgICBlbC5pZCA9IHRoaXMuS0VZUztcbiAgICAgIGVsLmhyZWYgPSBgJHt0aGlzLmRlcGxveVVybH1hc3NldHMvc3R5bGUuJHt0aGVtZX0uY3NzYDtcblxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5LRVlTLCB0aGVtZSk7XG4gICAgICB0aGlzLmRvYy5ib2R5LmFwcGVuZChlbCk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlQ2hhcnRUaGVtZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4kZGVzdHJveS5jb21wbGV0ZSgpXG4gICAgY29uc3QgZWwgPSB0aGlzLmRvYy5nZXRFbGVtZW50QnlJZCh0aGlzLktFWVMpO1xuICAgIGlmIChlbCAhPSBudWxsKSB7XG4gICAgICB0aGlzLmRvYy5ib2R5LnJlbW92ZUNoaWxkKGVsKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==