@alauda-fe/common 1.2.0 → 1.3.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/api-gateway.service.d.ts +1 -11
- package/api/public-api.d.ts +0 -1
- package/array-form-table/key-value-form/component.d.ts +3 -2
- package/async-data/async-data.module.d.ts +6 -0
- package/authorization/public-api.d.ts +1 -0
- package/authorization/state.service.d.ts +13 -20
- package/authorization/storage-token.d.ts +11 -0
- package/chart/common/tooltip/tooltip.component.d.ts +2 -1
- package/core/abstract/base-form-container.d.ts +1 -1
- package/core/constants/tokens.d.ts +0 -18
- package/core/module.d.ts +16 -15
- package/core/services/k8s-util.service.d.ts +0 -5
- package/core/types/k8s/crd.d.ts +2 -1
- package/core/utils/common.d.ts +2 -1
- package/esm2022/api/api-gateway.service.mjs +10 -20
- package/esm2022/api/product.service.mjs +4 -4
- package/esm2022/api/project-api.service.mjs +4 -4
- package/esm2022/api/public-api.mjs +1 -2
- package/esm2022/array-form-table/key-value-form/component.mjs +65 -43
- package/esm2022/async-data/async-data.module.mjs +17 -5
- package/esm2022/authorization/public-api.mjs +2 -1
- package/esm2022/authorization/state.service.mjs +86 -115
- package/esm2022/authorization/storage-token.mjs +85 -0
- package/esm2022/business/resource-select/exports/cluster-selector/component.mjs +2 -2
- package/esm2022/business/resource-select/exports/mesh-group-selector/component.mjs +2 -2
- package/esm2022/business/resource-select/exports/namespace-selector/component.mjs +2 -2
- package/esm2022/business/resource-select/exports/project-selector/component.mjs +2 -2
- package/esm2022/business/resource-select/module.mjs +9 -9
- package/esm2022/chart/chart.module.mjs +1 -1
- package/esm2022/chart/common/tooltip/tooltip.component.mjs +5 -2
- package/esm2022/core/abstract/base-form-container.mjs +1 -1
- package/esm2022/core/abstract/base-nested-form-control.mjs +2 -2
- package/esm2022/core/constants/tokens.mjs +1 -46
- package/esm2022/core/module.mjs +10 -3
- package/esm2022/core/pipes/page-env.pipe.mjs +6 -3
- package/esm2022/core/services/feature-gate.service.mjs +3 -3
- package/esm2022/core/services/k8s-util.service.mjs +1 -13
- package/esm2022/core/types/k8s/crd.mjs +1 -1
- package/esm2022/core/utils/common.mjs +11 -9
- package/esm2022/disabled-container/disabled-container.component.mjs +2 -2
- package/esm2022/form/validators/utils.mjs +37 -34
- package/esm2022/graph-canvas/graph-store.service.mjs +2 -2
- package/esm2022/help-document/service.mjs +3 -2
- package/esm2022/lazy-component/lazy-load-component.mjs +138 -0
- package/esm2022/lazy-component/public-api.mjs +14 -0
- package/esm2022/lazy-component/visibility.service.mjs +37 -0
- package/esm2022/list-display/component.mjs +159 -0
- package/esm2022/list-display/public-api.mjs +2 -0
- package/esm2022/metric-chart/metric-chart.component.mjs +2 -2
- package/esm2022/multi-search/action-input/component.mjs +2 -2
- package/esm2022/notification/feedback-notification/component.mjs +10 -4
- package/esm2022/notification/public-api.mjs +1 -2
- package/esm2022/page-scaffold/navigation/lottie-icons/animation-data.mjs +3 -1
- package/esm2022/page-scaffold/navigation/lottie-icons/animations/dashboard.json +1 -0
- package/esm2022/page-scaffold/navigation/nav-menu/nav-menu.types.mjs +1 -1
- package/esm2022/page-scaffold/page-header/common-layout/product-select/component.mjs +10 -13
- package/esm2022/page-scaffold/page-header/help-menu/component/component.mjs +3 -3
- package/esm2022/public-api.mjs +4 -4
- package/esm2022/table/component.mjs +5 -5
- package/esm2022/table/types.mjs +1 -1
- package/esm2022/translate/i18n-config.mjs +17 -5
- package/esm2022/view-chart/view-chart.module.mjs +1 -1
- package/esm2022/view-zchart/custom-template/dropdown-legend.mjs +3 -3
- package/esm2022/view-zchart/legend/legend.component.mjs +8 -8
- package/esm2022/view-zchart/units.mjs +13 -1
- package/esm2022/view-zchart/view-zchart.component.mjs +2 -2
- package/esm2022/view-zchart/view-zchart.module.mjs +1 -1
- package/esm2022/widget/foldable-item-in-table/component.mjs +2 -2
- package/esm2022/widget/search-panel/component.mjs +4 -4
- package/esm2022/xterm/xterm-terminal/xterm-terminal.component.mjs +66 -69
- package/esm2022/xterm/xterm.component.mjs +11 -3
- package/form/validators/utils.d.ts +7 -0
- package/lazy-component/lazy-load-component.d.ts +25 -0
- package/lazy-component/public-api.d.ts +9 -0
- package/lazy-component/visibility.service.d.ts +11 -0
- package/list-display/component.d.ts +15 -0
- package/list-display/public-api.d.ts +1 -0
- package/notification/feedback-notification/component.d.ts +1 -5
- package/notification/public-api.d.ts +0 -1
- package/package.json +2 -2
- package/page-scaffold/navigation/nav-menu/nav-menu.types.d.ts +1 -0
- package/page-scaffold/page-header/common-layout/product-select/component.d.ts +1 -2
- package/public-api.d.ts +3 -3
- package/styles/global.scss +6 -0
- package/styles/reset-browser.scss +4 -0
- package/styles/tailwind-preset.scss +1 -1
- package/table/types.d.ts +2 -0
- package/translate/i18n-config.d.ts +1 -1
- package/view-zchart/custom-template/dropdown-legend.d.ts +1 -1
- package/view-zchart/units.d.ts +3 -0
- package/xterm/xterm-terminal/xterm-terminal.component.d.ts +4 -3
- package/xterm/xterm.component.d.ts +4 -2
|
@@ -3,25 +3,25 @@
|
|
|
3
3
|
* @module authorization
|
|
4
4
|
*/
|
|
5
5
|
import { HttpClient } from '@angular/common/http';
|
|
6
|
-
import {
|
|
6
|
+
import { Injectable, inject } from '@angular/core';
|
|
7
7
|
import { decodeUrl } from 'ab64';
|
|
8
|
-
import { EMPTY, Subject, concat, of, catchError, map, shareReplay, switchMap,
|
|
9
|
-
import { API_GATEWAY,
|
|
8
|
+
import { EMPTY, Subject, concat, of, catchError, map, shareReplay, switchMap, tap, pipe, from, } from 'rxjs';
|
|
9
|
+
import { API_GATEWAY, NOT_NOTIFY_ON_ERROR_HEADERS, publishRef, getTopWindow, } from '../core/public-api';
|
|
10
10
|
import { getInitUrl } from './app-init-url';
|
|
11
|
+
import { asyncReadStorageToken, cleanStorageToken, readStorageToken, readStorageType, writeStorageToken, } from './storage-token';
|
|
11
12
|
import * as i0 from "@angular/core";
|
|
12
|
-
|
|
13
|
+
export const STORAGE_TYPE_KEY = 'token_storage';
|
|
14
|
+
export const ID_TOKEN_KEY = 'id_token';
|
|
15
|
+
export const REFRESH_TOKEN_KEY = 'refresh_token';
|
|
16
|
+
export const CODE_KEY = 'code';
|
|
17
|
+
const LOGIN_API = '/console/api/v1/token/login';
|
|
18
|
+
const CALLBACK_API = '/console/api/v1/token/callback';
|
|
19
|
+
const TOKEN_REFRESH_API = '/console/api/v1/token/refresh';
|
|
20
|
+
const TOKEN_INFO_API = '/console/api/v1/token/info';
|
|
13
21
|
const REDIRECT_URIS = new Set(['redirect_uri', 'post_logout_redirect_uri']);
|
|
14
22
|
export class AuthorizationStateService {
|
|
15
|
-
constructor(
|
|
16
|
-
this.http =
|
|
17
|
-
this.idTokenKey = idTokenKey;
|
|
18
|
-
this.refreshTokenKey = refreshTokenKey;
|
|
19
|
-
this.codeKey = codeKey;
|
|
20
|
-
this.apiTokenLogin = apiTokenLogin;
|
|
21
|
-
this.apiTokenCallback = apiTokenCallback;
|
|
22
|
-
this.apiRefreshToken = apiRefreshToken;
|
|
23
|
-
this.apiTokenInfo = apiTokenInfo;
|
|
24
|
-
this.destroy$$ = new Subject();
|
|
23
|
+
constructor() {
|
|
24
|
+
this.http = inject(HttpClient);
|
|
25
25
|
this.refreshToken$$ = new Subject();
|
|
26
26
|
this.state$ = this.getAuthConfiguration().pipe(switchMap(config => concat(this.getExistedToken(config), this.refreshToken$$).pipe(map(token => ({ ...config, ...token })))), tap(state => {
|
|
27
27
|
this.stateSnapshot = state;
|
|
@@ -29,50 +29,47 @@ export class AuthorizationStateService {
|
|
|
29
29
|
this.logout(true);
|
|
30
30
|
}
|
|
31
31
|
this.payloadSnapshot = getAccountInfo(state);
|
|
32
|
-
}),
|
|
32
|
+
}), shareReplay(1));
|
|
33
33
|
this.checkTokenCache = {};
|
|
34
34
|
this.stateSnapshot = null;
|
|
35
35
|
}
|
|
36
36
|
logout(specificUrl = false) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
this.redirectToUrl(specificUrl && location.href);
|
|
37
|
+
cleanStorageToken();
|
|
38
|
+
this.redirectToDex(specificUrl && location.href);
|
|
40
39
|
}
|
|
41
40
|
logoutAudit() {
|
|
42
41
|
return this.http.post(`${API_GATEWAY}/auth/v1/logout`, {}, {
|
|
43
42
|
headers: NOT_NOTIFY_ON_ERROR_HEADERS,
|
|
44
43
|
});
|
|
45
44
|
}
|
|
46
|
-
|
|
47
|
-
if (this.stateSnapshot) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
* 2、被动登出(token 过期、失效,此时 href 不为空)时替换 post_logout_redirect_uri 为 href,再次登录后重定向到 href 页面。
|
|
53
|
-
* 不存在授权信息场景:
|
|
54
|
-
* 1、存在 href(未登录时直接访问 href)授权后重定向到 href 页面。
|
|
55
|
-
* 2、不存在 href(登录页进入)否则授权后重定向到平台首页。
|
|
56
|
-
*/
|
|
57
|
-
if (this.stateSnapshot.logoutUrl && this.stateSnapshot.idToken) {
|
|
58
|
-
const logoutUrl = `${this.stateSnapshot.logoutUrl}&id_token_hint=${this.stateSnapshot.idToken}`;
|
|
59
|
-
url = href ? this.replaceRedirectUrl(logoutUrl, href) : logoutUrl;
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
const authUrl = this.stateSnapshot.authUrl;
|
|
63
|
-
url = href ? this.replaceRedirectUrl(authUrl, href) : authUrl;
|
|
64
|
-
}
|
|
45
|
+
async redirectToDex(redirectUrl = null) {
|
|
46
|
+
if (!this.stateSnapshot) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
// 主动退出或 session 模式跳转到 dex 前需要主动清除 `user_login` cookie 防止自动授权
|
|
50
|
+
if (!!this.stateSnapshot.idToken || readStorageType() === 'session') {
|
|
65
51
|
try {
|
|
66
|
-
|
|
52
|
+
await fetch(`${this.stateSnapshot.logoutUrl}&id_token_hint=${
|
|
53
|
+
// 主动退出时禁用现有 token
|
|
54
|
+
this.stateSnapshot.idToken || ''}`);
|
|
67
55
|
}
|
|
68
|
-
catch {
|
|
69
|
-
|
|
70
|
-
location.href = url;
|
|
56
|
+
catch (e) {
|
|
57
|
+
console.error(e);
|
|
71
58
|
}
|
|
72
59
|
}
|
|
60
|
+
const href = redirectUrl
|
|
61
|
+
? replaceRedirectUrl(this.stateSnapshot.authUrl, redirectUrl)
|
|
62
|
+
: this.stateSnapshot.authUrl;
|
|
63
|
+
try {
|
|
64
|
+
getTopWindow().location.href = href;
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// should never happen, just for robustness in case of cross-origin iframe
|
|
68
|
+
location.href = href;
|
|
69
|
+
}
|
|
73
70
|
}
|
|
74
71
|
refreshToken() {
|
|
75
|
-
const refreshToken =
|
|
72
|
+
const refreshToken = readStorageToken()?.refreshToken;
|
|
76
73
|
if (refreshToken) {
|
|
77
74
|
if (!this.refreshTokenCache$) {
|
|
78
75
|
this.refreshTokenCache$ = this.getTokenByRefreshToken(refreshToken).pipe(tap(token => {
|
|
@@ -91,7 +88,7 @@ export class AuthorizationStateService {
|
|
|
91
88
|
checkToken(token) {
|
|
92
89
|
if (!this.checkTokenCache[token]) {
|
|
93
90
|
this.checkTokenCache[token] = this.http
|
|
94
|
-
.get(
|
|
91
|
+
.get(TOKEN_INFO_API, {
|
|
95
92
|
headers: {
|
|
96
93
|
Authorization: `Bearer ${token}`,
|
|
97
94
|
},
|
|
@@ -119,13 +116,9 @@ export class AuthorizationStateService {
|
|
|
119
116
|
}
|
|
120
117
|
return this.state$.pipe(map(state => getAccountInfo(state) || {}));
|
|
121
118
|
}
|
|
122
|
-
ngOnDestroy() {
|
|
123
|
-
this.destroy$$.next();
|
|
124
|
-
this.destroy$$.complete();
|
|
125
|
-
}
|
|
126
119
|
getAuthConfiguration() {
|
|
127
120
|
return this.http
|
|
128
|
-
.get(
|
|
121
|
+
.get(LOGIN_API)
|
|
129
122
|
.pipe(map(res => ({
|
|
130
123
|
authUrl: res.auth_url,
|
|
131
124
|
state: res.state,
|
|
@@ -140,48 +133,38 @@ export class AuthorizationStateService {
|
|
|
140
133
|
}
|
|
141
134
|
getTokenFromLocal(config) {
|
|
142
135
|
const { queryParams, hashParams } = this.getParams();
|
|
143
|
-
const code = queryParams[
|
|
136
|
+
const code = queryParams[CODE_KEY] || hashParams[CODE_KEY];
|
|
144
137
|
if (code) {
|
|
145
138
|
return this.getTokenByCode(code, config.state);
|
|
146
139
|
}
|
|
147
|
-
const refreshToken = queryParams[
|
|
140
|
+
const refreshToken = queryParams[REFRESH_TOKEN_KEY] || hashParams[REFRESH_TOKEN_KEY];
|
|
148
141
|
if (refreshToken) {
|
|
149
142
|
return this.getTokenByRefreshToken(refreshToken);
|
|
150
143
|
}
|
|
151
|
-
const idToken = queryParams[
|
|
144
|
+
const idToken = queryParams[ID_TOKEN_KEY] || hashParams[ID_TOKEN_KEY];
|
|
152
145
|
if (idToken) {
|
|
153
|
-
|
|
146
|
+
writeStorageToken({
|
|
147
|
+
storageType: (queryParams[STORAGE_TYPE_KEY] ||
|
|
148
|
+
hashParams[STORAGE_TYPE_KEY]),
|
|
149
|
+
idToken,
|
|
150
|
+
refreshToken: '',
|
|
151
|
+
});
|
|
154
152
|
}
|
|
155
|
-
return
|
|
156
|
-
idToken: idToken ?? localStorage.getItem(this.idTokenKey) ?? '',
|
|
157
|
-
refreshToken: localStorage.getItem(this.refreshTokenKey) ?? '',
|
|
158
|
-
});
|
|
153
|
+
return from(asyncReadStorageToken());
|
|
159
154
|
}
|
|
160
155
|
getTokenByRefreshToken(refreshToken) {
|
|
161
156
|
return this.http
|
|
162
|
-
.get(
|
|
157
|
+
.get(TOKEN_REFRESH_API, {
|
|
163
158
|
params: { refresh_token: refreshToken },
|
|
164
159
|
})
|
|
165
|
-
.pipe(
|
|
166
|
-
localStorage.setItem(this.idTokenKey, id_token);
|
|
167
|
-
localStorage.setItem(this.refreshTokenKey, refresh_token);
|
|
168
|
-
}), map(({ id_token, refresh_token }) => ({
|
|
169
|
-
idToken: id_token,
|
|
170
|
-
refreshToken: refresh_token,
|
|
171
|
-
})));
|
|
160
|
+
.pipe(mapTokenResponse());
|
|
172
161
|
}
|
|
173
162
|
getTokenByCode(code, state) {
|
|
174
163
|
return this.http
|
|
175
|
-
.get(
|
|
164
|
+
.get(CALLBACK_API, {
|
|
176
165
|
params: { code, state },
|
|
177
166
|
})
|
|
178
|
-
.pipe(
|
|
179
|
-
localStorage.setItem(this.idTokenKey, id_token);
|
|
180
|
-
localStorage.setItem(this.refreshTokenKey, refresh_token);
|
|
181
|
-
}), map(({ id_token, refresh_token }) => ({
|
|
182
|
-
idToken: id_token,
|
|
183
|
-
refreshToken: refresh_token,
|
|
184
|
-
})));
|
|
167
|
+
.pipe(mapTokenResponse());
|
|
185
168
|
}
|
|
186
169
|
getParams() {
|
|
187
170
|
const initUrl = getInitUrl();
|
|
@@ -190,47 +173,26 @@ export class AuthorizationStateService {
|
|
|
190
173
|
const hashParams = parseParams(initLocation.hash ? initLocation.hash.slice(1) : '');
|
|
191
174
|
return { queryParams, hashParams };
|
|
192
175
|
}
|
|
193
|
-
|
|
194
|
-
const [path, queryParams] = authUrl.split('?');
|
|
195
|
-
const replacedQueryParams = queryParams
|
|
196
|
-
.split('&')
|
|
197
|
-
.map(pair => {
|
|
198
|
-
const [key, value] = pair.split('=');
|
|
199
|
-
return REDIRECT_URIS.has(key)
|
|
200
|
-
? `${key}=${encodeURIComponent(href) || value}`
|
|
201
|
-
: `${key}=${value}`;
|
|
202
|
-
})
|
|
203
|
-
.join('&');
|
|
204
|
-
return `${path}?${replacedQueryParams}`;
|
|
205
|
-
}
|
|
206
|
-
static { this.ɵfac = function AuthorizationStateService_Factory(t) { return new (t || AuthorizationStateService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(ID_TOKEN_KEY), i0.ɵɵinject(REFRESH_TOKEN_KEY), i0.ɵɵinject(CODE_KEY), i0.ɵɵinject(TOKEN_LOGIN_API), i0.ɵɵinject(TOKEN_CALLBACK_API), i0.ɵɵinject(TOKEN_REFRESH_API), i0.ɵɵinject(TOKEN_INFO_API)); }; }
|
|
176
|
+
static { this.ɵfac = function AuthorizationStateService_Factory(t) { return new (t || AuthorizationStateService)(); }; }
|
|
207
177
|
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AuthorizationStateService, factory: AuthorizationStateService.ɵfac, providedIn: 'root' }); }
|
|
208
178
|
}
|
|
209
179
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AuthorizationStateService, [{
|
|
210
180
|
type: Injectable,
|
|
211
181
|
args: [{ providedIn: 'root' }]
|
|
212
|
-
}],
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
args: [TOKEN_CALLBACK_API]
|
|
227
|
-
}] }, { type: undefined, decorators: [{
|
|
228
|
-
type: Inject,
|
|
229
|
-
args: [TOKEN_REFRESH_API]
|
|
230
|
-
}] }, { type: undefined, decorators: [{
|
|
231
|
-
type: Inject,
|
|
232
|
-
args: [TOKEN_INFO_API]
|
|
233
|
-
}] }]; }, null); })();
|
|
182
|
+
}], null, null); })();
|
|
183
|
+
function replaceRedirectUrl(dexUrl, redirectUrl) {
|
|
184
|
+
const [path, queryParams] = dexUrl.split('?');
|
|
185
|
+
const replacedQueryParams = queryParams
|
|
186
|
+
.split('&')
|
|
187
|
+
.map(pair => {
|
|
188
|
+
const [key, value] = pair.split('=');
|
|
189
|
+
return REDIRECT_URIS.has(key)
|
|
190
|
+
? `${key}=${encodeURIComponent(redirectUrl)}`
|
|
191
|
+
: `${key}=${value}`;
|
|
192
|
+
})
|
|
193
|
+
.join('&');
|
|
194
|
+
return `${path}?${replacedQueryParams}`;
|
|
195
|
+
}
|
|
234
196
|
function parseParams(query) {
|
|
235
197
|
if (!query) {
|
|
236
198
|
return {};
|
|
@@ -244,11 +206,20 @@ function parseParams(query) {
|
|
|
244
206
|
}, {});
|
|
245
207
|
}
|
|
246
208
|
function getAccountInfo(state) {
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
return
|
|
209
|
+
return state.idToken
|
|
210
|
+
? JSON.parse(decodeUrl(state.idToken.split('.')[1]))
|
|
211
|
+
: null;
|
|
212
|
+
}
|
|
213
|
+
function mapTokenResponse() {
|
|
214
|
+
return pipe(tap(({ token_storage, id_token, refresh_token }) => {
|
|
215
|
+
writeStorageToken({
|
|
216
|
+
storageType: token_storage,
|
|
217
|
+
idToken: id_token,
|
|
218
|
+
refreshToken: refresh_token,
|
|
219
|
+
});
|
|
220
|
+
}), map(({ id_token, refresh_token }) => ({
|
|
221
|
+
idToken: id_token,
|
|
222
|
+
refreshToken: refresh_token,
|
|
223
|
+
})));
|
|
253
224
|
}
|
|
254
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hdXRob3JpemF0aW9uL3N0YXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUNMLEtBQUssRUFFTCxPQUFPLEVBQ1AsTUFBTSxFQUNOLEVBQUUsRUFDRixVQUFVLEVBQ1YsR0FBRyxFQUNILFdBQVcsRUFDWCxTQUFTLEVBQ1QsU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFFTCxXQUFXLEVBQ1gsUUFBUSxFQUNSLFlBQVksRUFDWiwyQkFBMkIsRUFDM0IsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsZUFBZSxFQUNmLGlCQUFpQixFQUNqQixVQUFVLEVBQ1YsWUFBWSxHQUNiLE1BQU0sb0JBQW9CLENBQUM7QUFHNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFVNUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO0FBRTVFLE1BQU0sT0FBTyx5QkFBeUI7SUErQnBDLFlBQ21CLElBQWdCLEVBQ00sVUFBa0IsRUFDYixlQUF1QixFQUNoQyxPQUFlLEVBQ1IsYUFBcUIsRUFDbEIsZ0JBQXdCLEVBQ3pCLGVBQXVCLEVBQzFCLFlBQW9CO1FBUDVDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDTSxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2Isb0JBQWUsR0FBZixlQUFlLENB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MUIsU0FBUyxXQUFXLENBQUMsS0FBYTtJQUNoQyxJQUFJLENBQUMsS0FBSyxFQUFFO1FBQ1YsT0FBTyxFQUFFLENBQUM7S0FDWDtJQUVELE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDNUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXRDLE9BQU87WUFDTCxHQUFHLEdBQUc7WUFDTixDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUs7U0FDYixDQUFDO0lBQ0osQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ1QsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLEtBQXlCO0lBQy9DLElBQUksV0FBVyxDQUFDO0lBQ2hCLElBQUk7UUFDRixXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDdEIsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3hCLENBQUM7S0FDbEI7SUFBQyxNQUFNLEdBQUc7SUFDWCxPQUFPLFdBQVcsQ0FBQztBQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqIEBtb2R1bGUgYXV0aG9yaXphdGlvblxuICovXG5cbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGVjb2RlVXJsIH0gZnJvbSAnYWI2NCc7XG5pbXBvcnQge1xuICBFTVBUWSxcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbiAgY29uY2F0LFxuICBvZixcbiAgY2F0Y2hFcnJvcixcbiAgbWFwLFxuICBzaGFyZVJlcGxheSxcbiAgc3dpdGNoTWFwLFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIFN0cmluZ01hcCxcbiAgQVBJX0dBVEVXQVksXG4gIENPREVfS0VZLFxuICBJRF9UT0tFTl9LRVksXG4gIE5PVF9OT1RJRllfT05fRVJST1JfSEVBREVSUyxcbiAgUkVGUkVTSF9UT0tFTl9LRVksXG4gIFRPS0VOX0NBTExCQUNLX0FQSSxcbiAgVE9LRU5fSU5GT19BUEksXG4gIFRPS0VOX0xPR0lOX0FQSSxcbiAgVE9LRU5fUkVGUkVTSF9BUEksXG4gIHB1Ymxpc2hSZWYsXG4gIGdldFRvcFdpbmRvdyxcbn0gZnJvbSAnLi4vY29yZS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IEFjY291bnRJbmZvIH0gZnJvbSAnLi4vcGFnZS1zY2FmZm9sZC9wdWJsaWMtYXBpJztcblxuaW1wb3J0IHsgZ2V0SW5pdFVybCB9IGZyb20gJy4vYXBwLWluaXQtdXJsJztcblxuZXhwb3J0IGludGVyZmFjZSBBdXRob3JpemF0aW9uU3RhdGUge1xuICBpZFRva2VuPzogc3RyaW5nO1xuICByZWZyZXNoVG9rZW4/OiBzdHJpbmc7XG4gIGF1dGhVcmw/OiBzdHJpbmc7XG4gIHN0YXRlPzogc3RyaW5nO1xuICBsb2dvdXRVcmw/OiBzdHJpbmc7XG59XG5cbmNvbnN0IFJFRElSRUNUX1VSSVMgPSBuZXcgU2V0KFsncmVkaXJlY3RfdXJpJywgJ3Bvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaSddKTtcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQXV0aG9yaXphdGlvblN0YXRlU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSByZWZyZXNoVG9rZW4kJCA9IG5ldyBTdWJqZWN0PHtcbiAgICBpZFRva2VuOiBzdHJpbmc7XG4gICAgcmVmcmVzaFRva2VuOiBzdHJpbmc7XG4gIH0+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzdGF0ZSQgPSB0aGlzLmdldEF1dGhDb25maWd1cmF0aW9uKCkucGlwZShcbiAgICBzd2l0Y2hNYXAoY29uZmlnID0+XG4gICAgICBjb25jYXQodGhpcy5nZXRFeGlzdGVkVG9rZW4oY29uZmlnKSwgdGhpcy5yZWZyZXNoVG9rZW4kJCkucGlwZShcbiAgICAgICAgbWFwKHRva2VuID0+ICh7IC4uLmNvbmZpZywgLi4udG9rZW4gfSkpLFxuICAgICAgKSxcbiAgICApLFxuICAgIHRhcChzdGF0ZSA9PiB7XG4gICAgICB0aGlzLnN0YXRlU25hcHNob3QgPSBzdGF0ZTtcbiAgICAgIGlmICghc3RhdGUuaWRUb2tlbikge1xuICAgICAgICB0aGlzLmxvZ291dCh0cnVlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGF5bG9hZFNuYXBzaG90ID0gZ2V0QWNjb3VudEluZm8oc3RhdGUpO1xuICAgIH0pLFxuICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkJCksXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gICk7XG5cbiAgcHJpdmF0ZSBjaGVja1Rva2VuQ2FjaGU6IFJlY29yZDxzdHJpbmcsIE9ic2VydmFibGU8dW5rbm93bj4+ID0ge307XG4gIHByaXZhdGUgcmVmcmVzaFRva2VuQ2FjaGUkOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgc3RhdGVTbmFwc2hvdDogQXV0aG9yaXphdGlvblN0YXRlID0gbnVsbDtcblxuICBwYXlsb2FkU25hcHNob3Q6IEFjY291bnRJbmZvO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCxcbiAgICBASW5qZWN0KElEX1RPS0VOX0tFWSkgcHJpdmF0ZSByZWFkb25seSBpZFRva2VuS2V5OiBzdHJpbmcsXG4gICAgQEluamVjdChSRUZSRVNIX1RPS0VOX0tFWSkgcHJpdmF0ZSByZWFkb25seSByZWZyZXNoVG9rZW5LZXk6IHN0cmluZyxcbiAgICBASW5qZWN0KENPREVfS0VZKSBwcml2YXRlIHJlYWRvbmx5IGNvZGVLZXk6IHN0cmluZyxcbiAgICBASW5qZWN0KFRPS0VOX0xPR0lOX0FQSSkgcHJpdmF0ZSByZWFkb25seSBhcGlUb2tlbkxvZ2luOiBzdHJpbmcsXG4gICAgQEluamVjdChUT0tFTl9DQUxMQkFDS19BUEkpIHByaXZhdGUgcmVhZG9ubHkgYXBpVG9rZW5DYWxsYmFjazogc3RyaW5nLFxuICAgIEBJbmplY3QoVE9LRU5fUkVGUkVTSF9BUEkpIHByaXZhdGUgcmVhZG9ubHkgYXBpUmVmcmVzaFRva2VuOiBzdHJpbmcsXG4gICAgQEluamVjdChUT0tFTl9JTkZPX0FQSSkgcHJpdmF0ZSByZWFkb25seSBhcGlUb2tlbkluZm86IHN0cmluZyxcbiAgKSB7fVxuXG4gIGxvZ291dChzcGVjaWZpY1VybCA9IGZhbHNlKSB7XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5pZFRva2VuS2V5KTtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLnJlZnJlc2hUb2tlbktleSk7XG4gICAgdGhpcy5yZWRpcmVjdFRvVXJsKHNwZWNpZmljVXJsICYmIGxvY2F0aW9uLmhyZWYpO1xuICB9XG5cbiAgbG9nb3V0QXVkaXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgYCR7QVBJX0dBVEVXQVl9L2F1dGgvdjEvbG9nb3V0YCxcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBoZWFkZXJzOiBOT1RfTk9USUZZX09OX0VSUk9SX0hFQURFUlMsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICByZWRpcmVjdFRvVXJsKGhyZWYgPSAnJykge1xuICAgIGlmICh0aGlzLnN0YXRlU25hcHNob3QpIHtcbiAgICAgIGxldCB1cmwgPSAnJztcbiAgICAgIC8qKlxuICAgICAgICog5bey5a2Y5Zyo5o6I5p2D5L+h5oGv77yIbG9nb3V0VXJsIOWSjCBpZFRva2VuIOmDveWtmOWcqO+8ieWcuuaZr++8mlxuICAgICAgICogMeOAgeS4u+WKqOeZu+WHuu+8iOmAgOWHuueZu+W9le+8jOatpOaXtiBocmVmIOS4uuepuu+8ieaXtuS4jeiusOW9leS7u+S9leS/oeaBr++8jOWGjeasoeeZu+W9leWQjumHjeWumuWQkeWIsOW5s+WPsOmmlumhteOAglxuICAgICAgICogMuOAgeiiq+WKqOeZu+WHuu+8iHRva2VuIOi/h+acn+OAgeWkseaViO+8jOatpOaXtiBocmVmIOS4jeS4uuepuu+8ieaXtuabv+aNoiBwb3N0X2xvZ291dF9yZWRpcmVjdF91cmkg5Li6IGhyZWbvvIzlho3mrKHnmbvlvZXlkI7ph43lrprlkJHliLAgaHJlZiDpobXpnaLjgIJcbiAgICAgICAqIOS4jeWtmOWcqOaOiOadg+S/oeaBr+WcuuaZr++8mlxuICAgICAgICogMeOAgeWtmOWcqCBocmVm77yI5pyq55m75b2V5pe255u05o6l6K6/6ZeuIGhyZWbvvInmjojmnYPlkI7ph43lrprlkJHliLAgaHJlZiDpobXpnaLjgIJcbiAgICAgICAqIDLjgIHkuI3lrZjlnKggaHJlZu+8iOeZu+W9lemhtei/m+WFpe+8ieWQpuWImeaOiOadg+WQjumHjeWumuWQkeWIsOW5s+WPsOmmlumhteOAglxuICAgICAgICovXG4gICAgICBpZiAodGhpcy5zdGF0ZVNuYXBzaG90LmxvZ291dFVybCAmJiB0aGlzLnN0YXRlU25hcHNob3QuaWRUb2tlbikge1xuICAgICAgICBjb25zdCBsb2dvdXRVcmwgPSBgJHt0aGlzLnN0YXRlU25hcHNob3QubG9nb3V0VXJsfSZpZF90b2tlbl9oaW50PSR7dGhpcy5zdGF0ZVNuYXBzaG90LmlkVG9rZW59YDtcbiAgICAgICAgdXJsID0gaHJlZiA/IHRoaXMucmVwbGFjZVJlZGlyZWN0VXJsKGxvZ291dFVybCwgaHJlZikgOiBsb2dvdXRVcmw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhdXRoVXJsID0gdGhpcy5zdGF0ZVNuYXBzaG90LmF1dGhVcmw7XG4gICAgICAgIHVybCA9IGhyZWYgPyB0aGlzLnJlcGxhY2VSZWRpcmVjdFVybChhdXRoVXJsLCBocmVmKSA6IGF1dGhVcmw7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBnZXRUb3BXaW5kb3coKS5sb2NhdGlvbi5ocmVmID0gdXJsO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIHNob3VsZCBuZXZlciBoYXBwZW4sIGp1c3QgZm9yIHJvYnVzdG5lc3MgaW4gY2FzZSBvZiBjcm9zcy1vcmlnaW4gaWZyYW1lXG4gICAgICAgIGxvY2F0aW9uLmhyZWYgPSB1cmw7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVmcmVzaFRva2VuKCkge1xuICAgIGNvbnN0IHJlZnJlc2hUb2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMucmVmcmVzaFRva2VuS2V5KTtcbiAgICBpZiAocmVmcmVzaFRva2VuKSB7XG4gICAgICBpZiAoIXRoaXMucmVmcmVzaFRva2VuQ2FjaGUkKSB7XG4gICAgICAgIHRoaXMucmVmcmVzaFRva2VuQ2FjaGUkID0gdGhpcy5nZXRUb2tlbkJ5UmVmcmVzaFRva2VuKFxuICAgICAgICAgIHJlZnJlc2hUb2tlbixcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgIHRhcCh0b2tlbiA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlbkNhY2hlJCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlbiQkLm5leHQodG9rZW4pO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIG1hcCgoeyBpZFRva2VuIH0pID0+IGlkVG9rZW4pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2dvdXQodHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgcHVibGlzaFJlZigpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaFRva2VuQ2FjaGUkO1xuICAgIH1cbiAgICB0aGlzLmxvZ291dCh0cnVlKTtcbiAgICByZXR1cm4gRU1QVFk7XG4gIH1cblxuICBjaGVja1Rva2VuKHRva2VuOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuY2hlY2tUb2tlbkNhY2hlW3Rva2VuXSkge1xuICAgICAgdGhpcy5jaGVja1Rva2VuQ2FjaGVbdG9rZW5dID0gdGhpcy5odHRwXG4gICAgICAgIC5nZXQodGhpcy5hcGlUb2tlbkluZm8sIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dG9rZW59YCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YXAoe1xuICAgICAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmNoZWNrVG9rZW5DYWNoZVt0b2tlbl0gPSBudWxsO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tUb2tlbkNhY2hlW3Rva2VuXSA9IG51bGw7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHB1Ymxpc2hSZWYoKSxcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2hlY2tUb2tlbkNhY2hlW3Rva2VuXTtcbiAgfVxuXG4gIGdldFRva2VuKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlJC5waXBlKG1hcChzdGF0ZSA9PiBzdGF0ZS5pZFRva2VuKSk7XG4gIH1cblxuICBnZXRUb2tlblBheWxvYWQ8VD4oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUkLnBpcGUobWFwKHN0YXRlID0+IGdldEFjY291bnRJbmZvKHN0YXRlKSBhcyBUKSk7XG4gIH1cblxuICBnZXRBY2NvdW50SW5mbygpIHtcbiAgICBpZiAodGhpcy5wYXlsb2FkU25hcHNob3QpIHtcbiAgICAgIHJldHVybiBvZih0aGlzLnBheWxvYWRTbmFwc2hvdCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0YXRlJC5waXBlKG1hcChzdGF0ZSA9PiBnZXRBY2NvdW50SW5mbyhzdGF0ZSkgfHwge30pKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBdXRoQ29uZmlndXJhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PHsgYXV0aF91cmw6IHN0cmluZzsgc3RhdGU6IHN0cmluZzsgbG9nb3V0X3VybDogc3RyaW5nIH0+KFxuICAgICAgICB0aGlzLmFwaVRva2VuTG9naW4sXG4gICAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiAoe1xuICAgICAgICAgIGF1dGhVcmw6IHJlcy5hdXRoX3VybCxcbiAgICAgICAgICBzdGF0ZTogcmVzLnN0YXRlLFxuICAgICAgICAgIGxvZ291dFVybDogcmVzLmxvZ291dF91cmwgfHwgJycsXG4gICAgICAgIH0pKSxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldEV4aXN0ZWRUb2tlbihjb25maWc6IEF1dGhvcml6YXRpb25TdGF0ZSkge1xuICAgIHJldHVybiB0aGlzLmdldFRva2VuRnJvbUxvY2FsKGNvbmZpZykucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIG9mKHsgaWRUb2tlbjogJycsIHJlZnJlc2hUb2tlbjogJycgfSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb2tlbkZyb21Mb2NhbChjb25maWc6IEF1dGhvcml6YXRpb25TdGF0ZSkge1xuICAgIGNvbnN0IHsgcXVlcnlQYXJhbXMsIGhhc2hQYXJhbXMgfSA9IHRoaXMuZ2V0UGFyYW1zKCk7XG5cbiAgICBjb25zdCBjb2RlID0gcXVlcnlQYXJhbXNbdGhpcy5jb2RlS2V5XSB8fCBoYXNoUGFyYW1zW3RoaXMuY29kZUtleV07XG5cbiAgICBpZiAoY29kZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VG9rZW5CeUNvZGUoY29kZSwgY29uZmlnLnN0YXRlKTtcbiAgICB9XG5cbiAgICBjb25zdCByZWZyZXNoVG9rZW4gPVxuICAgICAgcXVlcnlQYXJhbXNbdGhpcy5yZWZyZXNoVG9rZW5LZXldIHx8IGhhc2hQYXJhbXNbdGhpcy5yZWZyZXNoVG9rZW5LZXldO1xuICAgIGlmIChyZWZyZXNoVG9rZW4pIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFRva2VuQnlSZWZyZXNoVG9rZW4ocmVmcmVzaFRva2VuKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZFRva2VuID0gcXVlcnlQYXJhbXNbdGhpcy5pZFRva2VuS2V5XSB8fCBoYXNoUGFyYW1zW3RoaXMuaWRUb2tlbktleV07XG4gICAgaWYgKGlkVG9rZW4pIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuaWRUb2tlbktleSwgaWRUb2tlbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9mKHtcbiAgICAgIGlkVG9rZW46IGlkVG9rZW4gPz8gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5pZFRva2VuS2V5KSA/PyAnJyxcbiAgICAgIHJlZnJlc2hUb2tlbjogbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5yZWZyZXNoVG9rZW5LZXkpID8/ICcnLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb2tlbkJ5UmVmcmVzaFRva2VuKHJlZnJlc2hUb2tlbjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDx7IGlkX3Rva2VuOiBzdHJpbmc7IHJlZnJlc2hfdG9rZW46IHN0cmluZyB9Pih0aGlzLmFwaVJlZnJlc2hUb2tlbiwge1xuICAgICAgICBwYXJhbXM6IHsgcmVmcmVzaF90b2tlbjogcmVmcmVzaFRva2VuIH0sXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoeyBpZF90b2tlbiwgcmVmcmVzaF90b2tlbiB9KSA9PiB7XG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5pZFRva2VuS2V5LCBpZF90b2tlbik7XG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5yZWZyZXNoVG9rZW5LZXksIHJlZnJlc2hfdG9rZW4pO1xuICAgICAgICB9KSxcbiAgICAgICAgbWFwKCh7IGlkX3Rva2VuLCByZWZyZXNoX3Rva2VuIH0pID0+ICh7XG4gICAgICAgICAgaWRUb2tlbjogaWRfdG9rZW4sXG4gICAgICAgICAgcmVmcmVzaFRva2VuOiByZWZyZXNoX3Rva2VuLFxuICAgICAgICB9KSksXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb2tlbkJ5Q29kZShjb2RlOiBzdHJpbmcsIHN0YXRlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PHsgaWRfdG9rZW46IHN0cmluZzsgcmVmcmVzaF90b2tlbjogc3RyaW5nIH0+KHRoaXMuYXBpVG9rZW5DYWxsYmFjaywge1xuICAgICAgICBwYXJhbXM6IHsgY29kZSwgc3RhdGUgfSxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCh7IGlkX3Rva2VuLCByZWZyZXNoX3Rva2VuIH0pID0+IHtcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmlkVG9rZW5LZXksIGlkX3Rva2VuKTtcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLnJlZnJlc2hUb2tlbktleSwgcmVmcmVzaF90b2tlbik7XG4gICAgICAgIH0pLFxuICAgICAgICBtYXAoKHsgaWRfdG9rZW4sIHJlZnJlc2hfdG9rZW4gfSkgPT4gKHtcbiAgICAgICAgICBpZFRva2VuOiBpZF90b2tlbixcbiAgICAgICAgICByZWZyZXNoVG9rZW46IHJlZnJlc2hfdG9rZW4sXG4gICAgICAgIH0pKSxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldFBhcmFtcygpIHtcbiAgICBjb25zdCBpbml0VXJsID0gZ2V0SW5pdFVybCgpO1xuXG4gICAgY29uc3QgaW5pdExvY2F0aW9uID0gbmV3IFVSTChpbml0VXJsKTtcblxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gcGFyc2VQYXJhbXMoXG4gICAgICBpbml0TG9jYXRpb24uc2VhcmNoID8gaW5pdExvY2F0aW9uLnNlYXJjaC5zbGljZSgxKSA6ICcnLFxuICAgICk7XG5cbiAgICBjb25zdCBoYXNoUGFyYW1zID0gcGFyc2VQYXJhbXMoXG4gICAgICBpbml0TG9jYXRpb24uaGFzaCA/IGluaXRMb2NhdGlvbi5oYXNoLnNsaWNlKDEpIDogJycsXG4gICAgKTtcblxuICAgIHJldHVybiB7IHF1ZXJ5UGFyYW1zLCBoYXNoUGFyYW1zIH07XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VSZWRpcmVjdFVybChhdXRoVXJsOiBzdHJpbmcsIGhyZWY6IHN0cmluZykge1xuICAgIGNvbnN0IFtwYXRoLCBxdWVyeVBhcmFtc10gPSBhdXRoVXJsLnNwbGl0KCc/Jyk7XG5cbiAgICBjb25zdCByZXBsYWNlZFF1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXNcbiAgICAgIC5zcGxpdCgnJicpXG4gICAgICAubWFwKHBhaXIgPT4ge1xuICAgICAgICBjb25zdCBba2V5LCB2YWx1ZV0gPSBwYWlyLnNwbGl0KCc9Jyk7XG4gICAgICAgIHJldHVybiBSRURJUkVDVF9VUklTLmhhcyhrZXkpXG4gICAgICAgICAgPyBgJHtrZXl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KGhyZWYpIHx8IHZhbHVlfWBcbiAgICAgICAgICA6IGAke2tleX09JHt2YWx1ZX1gO1xuICAgICAgfSlcbiAgICAgIC5qb2luKCcmJyk7XG5cbiAgICByZXR1cm4gYCR7cGF0aH0/JHtyZXBsYWNlZFF1ZXJ5UGFyYW1zfWA7XG4gIH1cbn1cblxuZnVuY3Rpb24gcGFyc2VQYXJhbXMocXVlcnk6IHN0cmluZyk6IFN0cmluZ01hcCB7XG4gIGlmICghcXVlcnkpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICByZXR1cm4gcXVlcnkuc3BsaXQoJyYnKS5yZWR1Y2UoKGFjYywgcGFyYW0pID0+IHtcbiAgICBjb25zdCBba2V5LCB2YWx1ZV0gPSBwYXJhbS5zcGxpdCgnPScpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmFjYyxcbiAgICAgIFtrZXldOiB2YWx1ZSxcbiAgICB9O1xuICB9LCB7fSk7XG59XG5cbmZ1bmN0aW9uIGdldEFjY291bnRJbmZvKHN0YXRlOiBBdXRob3JpemF0aW9uU3RhdGUpIHtcbiAgbGV0IGFjY291bnRJbmZvO1xuICB0cnkge1xuICAgIGFjY291bnRJbmZvID0gSlNPTi5wYXJzZShcbiAgICAgIGRlY29kZVVybChzdGF0ZS5pZFRva2VuLnNwbGl0KCcuJylbMV0pLFxuICAgICkgYXMgQWNjb3VudEluZm87XG4gIH0gY2F0Y2ggeyB9XG4gIHJldHVybiBhY2NvdW50SW5mbztcbn1cbiJdfQ==
|
|
225
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hdXRob3JpemF0aW9uL3N0YXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUNMLEtBQUssRUFFTCxPQUFPLEVBQ1AsTUFBTSxFQUNOLEVBQUUsRUFDRixVQUFVLEVBQ1YsR0FBRyxFQUNILFdBQVcsRUFDWCxTQUFTLEVBQ1QsR0FBRyxFQUNILElBQUksRUFDSixJQUFJLEdBQ0wsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBRUwsV0FBVyxFQUNYLDJCQUEyQixFQUMzQixVQUFVLEVBQ1YsWUFBWSxHQUNiLE1BQU0sb0JBQW9CLENBQUM7QUFHNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsaUJBQWlCLEdBQ2xCLE1BQU0saUJBQWlCLENBQUM7O0FBa0J6QixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7QUFDaEQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQztBQUN2QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxlQUFlLENBQUM7QUFDakQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQztBQUUvQixNQUFNLFNBQVMsR0FBRyw2QkFBNkIsQ0FBQztBQUNoRCxNQUFNLFlBQVksR0FBRyxnQ0FBZ0MsQ0FBQztBQUN0RCxNQUFN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QztBQUVELFNBQVMsY0FBYyxDQUFDLEtBQXlCO0lBQy9DLE9BQU8sS0FBSyxDQUFDLE9BQU87UUFDbEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNYLENBQUM7QUFFRCxTQUFTLGdCQUFnQjtJQUN2QixPQUFPLElBQUksQ0FDVCxHQUFHLENBQUMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFpQixFQUFFLEVBQUU7UUFDaEUsaUJBQWlCLENBQUM7WUFDaEIsV0FBVyxFQUFFLGFBQWE7WUFDMUIsT0FBTyxFQUFFLFFBQVE7WUFDakIsWUFBWSxFQUFFLGFBQWE7U0FDNUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEMsT0FBTyxFQUFFLFFBQVE7UUFDakIsWUFBWSxFQUFFLGFBQWE7S0FDNUIsQ0FBQyxDQUFDLENBQ0osQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICogQG1vZHVsZSBhdXRob3JpemF0aW9uXG4gKi9cblxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGVjb2RlVXJsIH0gZnJvbSAnYWI2NCc7XG5pbXBvcnQge1xuICBFTVBUWSxcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbiAgY29uY2F0LFxuICBvZixcbiAgY2F0Y2hFcnJvcixcbiAgbWFwLFxuICBzaGFyZVJlcGxheSxcbiAgc3dpdGNoTWFwLFxuICB0YXAsXG4gIHBpcGUsXG4gIGZyb20sXG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBTdHJpbmdNYXAsXG4gIEFQSV9HQVRFV0FZLFxuICBOT1RfTk9USUZZX09OX0VSUk9SX0hFQURFUlMsXG4gIHB1Ymxpc2hSZWYsXG4gIGdldFRvcFdpbmRvdyxcbn0gZnJvbSAnLi4vY29yZS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IEFjY291bnRJbmZvIH0gZnJvbSAnLi4vcGFnZS1zY2FmZm9sZC9wdWJsaWMtYXBpJztcblxuaW1wb3J0IHsgZ2V0SW5pdFVybCB9IGZyb20gJy4vYXBwLWluaXQtdXJsJztcbmltcG9ydCB7XG4gIGFzeW5jUmVhZFN0b3JhZ2VUb2tlbixcbiAgY2xlYW5TdG9yYWdlVG9rZW4sXG4gIHJlYWRTdG9yYWdlVG9rZW4sXG4gIHJlYWRTdG9yYWdlVHlwZSxcbiAgd3JpdGVTdG9yYWdlVG9rZW4sXG59IGZyb20gJy4vc3RvcmFnZS10b2tlbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aG9yaXphdGlvblN0YXRlIHtcbiAgaWRUb2tlbj86IHN0cmluZztcbiAgcmVmcmVzaFRva2VuPzogc3RyaW5nO1xuICBzdGF0ZT86IHN0cmluZztcbiAgYXV0aFVybD86IHN0cmluZztcbiAgbG9nb3V0VXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRva2VuUmVzcG9uc2Uge1xuICB0b2tlbl9zdG9yYWdlOiBTdG9yYWdlVHlwZTtcbiAgaWRfdG9rZW46IHN0cmluZztcbiAgcmVmcmVzaF90b2tlbjogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBTdG9yYWdlVHlwZSA9ICdsb2NhbCcgfCAnc2Vzc2lvbic7XG5cbmV4cG9ydCBjb25zdCBTVE9SQUdFX1RZUEVfS0VZID0gJ3Rva2VuX3N0b3JhZ2UnO1xuZXhwb3J0IGNvbnN0IElEX1RPS0VOX0tFWSA9ICdpZF90b2tlbic7XG5leHBvcnQgY29uc3QgUkVGUkVTSF9UT0tFTl9LRVkgPSAncmVmcmVzaF90b2tlbic7XG5leHBvcnQgY29uc3QgQ09ERV9LRVkgPSAnY29kZSc7XG5cbmNvbnN0IExPR0lOX0FQSSA9ICcvY29uc29sZS9hcGkvdjEvdG9rZW4vbG9naW4nO1xuY29uc3QgQ0FMTEJBQ0tfQVBJID0gJy9jb25zb2xlL2FwaS92MS90b2tlbi9jYWxsYmFjayc7XG5jb25zdCBUT0tFTl9SRUZSRVNIX0FQSSA9ICcvY29uc29sZS9hcGkvdjEvdG9rZW4vcmVmcmVzaCc7XG5jb25zdCBUT0tFTl9JTkZPX0FQSSA9ICcvY29uc29sZS9hcGkvdjEvdG9rZW4vaW5mbyc7XG5cbmNvbnN0IFJFRElSRUNUX1VSSVMgPSBuZXcgU2V0KFsncmVkaXJlY3RfdXJpJywgJ3Bvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaSddKTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBdXRob3JpemF0aW9uU3RhdGVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVmcmVzaFRva2VuJCQgPSBuZXcgU3ViamVjdDx7XG4gICAgaWRUb2tlbjogc3RyaW5nO1xuICAgIHJlZnJlc2hUb2tlbjogc3RyaW5nO1xuICB9PigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhdGUkID0gdGhpcy5nZXRBdXRoQ29uZmlndXJhdGlvbigpLnBpcGUoXG4gICAgc3dpdGNoTWFwKGNvbmZpZyA9PlxuICAgICAgY29uY2F0KHRoaXMuZ2V0RXhpc3RlZFRva2VuKGNvbmZpZyksIHRoaXMucmVmcmVzaFRva2VuJCQpLnBpcGUoXG4gICAgICAgIG1hcCh0b2tlbiA9PiAoeyAuLi5jb25maWcsIC4uLnRva2VuIH0pKSxcbiAgICAgICksXG4gICAgKSxcbiAgICB0YXAoc3RhdGUgPT4ge1xuICAgICAgdGhpcy5zdGF0ZVNuYXBzaG90ID0gc3RhdGU7XG4gICAgICBpZiAoIXN0YXRlLmlkVG9rZW4pIHtcbiAgICAgICAgdGhpcy5sb2dvdXQodHJ1ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLnBheWxvYWRTbmFwc2hvdCA9IGdldEFjY291bnRJbmZvKHN0YXRlKTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgKTtcblxuICBwcml2YXRlIGNoZWNrVG9rZW5DYWNoZTogUmVjb3JkPHN0cmluZywgT2JzZXJ2YWJsZTx1bmtub3duPj4gPSB7fTtcbiAgcHJpdmF0ZSByZWZyZXNoVG9rZW5DYWNoZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBzdGF0ZVNuYXBzaG90OiBBdXRob3JpemF0aW9uU3RhdGUgPSBudWxsO1xuXG4gIHBheWxvYWRTbmFwc2hvdDogQWNjb3VudEluZm87XG5cbiAgbG9nb3V0KHNwZWNpZmljVXJsID0gZmFsc2UpIHtcbiAgICBjbGVhblN0b3JhZ2VUb2tlbigpO1xuICAgIHRoaXMucmVkaXJlY3RUb0RleChzcGVjaWZpY1VybCAmJiBsb2NhdGlvbi5ocmVmKTtcbiAgfVxuXG4gIGxvZ291dEF1ZGl0KCkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcbiAgICAgIGAke0FQSV9HQVRFV0FZfS9hdXRoL3YxL2xvZ291dGAsXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgaGVhZGVyczogTk9UX05PVElGWV9PTl9FUlJPUl9IRUFERVJTLFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgcmVkaXJlY3RUb0RleChyZWRpcmVjdFVybDogc3RyaW5nID0gbnVsbCkge1xuICAgIGlmICghdGhpcy5zdGF0ZVNuYXBzaG90KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8g5Li75Yqo6YCA5Ye65oiWIHNlc3Npb24g5qih5byP6Lez6L2s5YiwIGRleCDliY3pnIDopoHkuLvliqjmuIXpmaQgYHVzZXJfbG9naW5gIGNvb2tpZSDpmLLmraLoh6rliqjmjojmnYNcbiAgICBpZiAoISF0aGlzLnN0YXRlU25hcHNob3QuaWRUb2tlbiB8fCByZWFkU3RvcmFnZVR5cGUoKSA9PT0gJ3Nlc3Npb24nKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBmZXRjaChcbiAgICAgICAgICBgJHt0aGlzLnN0YXRlU25hcHNob3QubG9nb3V0VXJsfSZpZF90b2tlbl9oaW50PSR7XG4gICAgICAgICAgICAvLyDkuLvliqjpgIDlh7rml7bnpoHnlKjnjrDmnIkgdG9rZW5cbiAgICAgICAgICAgIHRoaXMuc3RhdGVTbmFwc2hvdC5pZFRva2VuIHx8ICcnXG4gICAgICAgICAgfWAsXG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaHJlZiA9IHJlZGlyZWN0VXJsXG4gICAgICA/IHJlcGxhY2VSZWRpcmVjdFVybCh0aGlzLnN0YXRlU25hcHNob3QuYXV0aFVybCwgcmVkaXJlY3RVcmwpXG4gICAgICA6IHRoaXMuc3RhdGVTbmFwc2hvdC5hdXRoVXJsO1xuXG4gICAgdHJ5IHtcbiAgICAgIGdldFRvcFdpbmRvdygpLmxvY2F0aW9uLmhyZWYgPSBocmVmO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gc2hvdWxkIG5ldmVyIGhhcHBlbiwganVzdCBmb3Igcm9idXN0bmVzcyBpbiBjYXNlIG9mIGNyb3NzLW9yaWdpbiBpZnJhbWVcbiAgICAgIGxvY2F0aW9uLmhyZWYgPSBocmVmO1xuICAgIH1cbiAgfVxuXG4gIHJlZnJlc2hUb2tlbigpIHtcbiAgICBjb25zdCByZWZyZXNoVG9rZW4gPSByZWFkU3RvcmFnZVRva2VuKCk/LnJlZnJlc2hUb2tlbjtcbiAgICBpZiAocmVmcmVzaFRva2VuKSB7XG4gICAgICBpZiAoIXRoaXMucmVmcmVzaFRva2VuQ2FjaGUkKSB7XG4gICAgICAgIHRoaXMucmVmcmVzaFRva2VuQ2FjaGUkID0gdGhpcy5nZXRUb2tlbkJ5UmVmcmVzaFRva2VuKFxuICAgICAgICAgIHJlZnJlc2hUb2tlbixcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgIHRhcCh0b2tlbiA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlbkNhY2hlJCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hUb2tlbiQkLm5leHQodG9rZW4pO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIG1hcCgoeyBpZFRva2VuIH0pID0+IGlkVG9rZW4pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2dvdXQodHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgcHVibGlzaFJlZigpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaFRva2VuQ2FjaGUkO1xuICAgIH1cbiAgICB0aGlzLmxvZ291dCh0cnVlKTtcbiAgICByZXR1cm4gRU1QVFk7XG4gIH1cblxuICBjaGVja1Rva2VuKHRva2VuOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuY2hlY2tUb2tlbkNhY2hlW3Rva2VuXSkge1xuICAgICAgdGhpcy5jaGVja1Rva2VuQ2FjaGVbdG9rZW5dID0gdGhpcy5odHRwXG4gICAgICAgIC5nZXQoVE9LRU5fSU5GT19BUEksIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dG9rZW59YCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YXAoe1xuICAgICAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmNoZWNrVG9rZW5DYWNoZVt0b2tlbl0gPSBudWxsO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tUb2tlbkNhY2hlW3Rva2VuXSA9IG51bGw7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHB1Ymxpc2hSZWYoKSxcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2hlY2tUb2tlbkNhY2hlW3Rva2VuXTtcbiAgfVxuXG4gIGdldFRva2VuKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlJC5waXBlKG1hcChzdGF0ZSA9PiBzdGF0ZS5pZFRva2VuKSk7XG4gIH1cblxuICBnZXRUb2tlblBheWxvYWQ8VD4oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUkLnBpcGUobWFwKHN0YXRlID0+IGdldEFjY291bnRJbmZvKHN0YXRlKSBhcyBUKSk7XG4gIH1cblxuICBnZXRBY2NvdW50SW5mbygpIHtcbiAgICBpZiAodGhpcy5wYXlsb2FkU25hcHNob3QpIHtcbiAgICAgIHJldHVybiBvZih0aGlzLnBheWxvYWRTbmFwc2hvdCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0YXRlJC5waXBlKG1hcChzdGF0ZSA9PiBnZXRBY2NvdW50SW5mbyhzdGF0ZSkgfHwge30pKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXV0aENvbmZpZ3VyYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDx7IGF1dGhfdXJsOiBzdHJpbmc7IHN0YXRlOiBzdHJpbmc7IGxvZ291dF91cmw6IHN0cmluZyB9PihMT0dJTl9BUEkpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlcyA9PiAoe1xuICAgICAgICAgIGF1dGhVcmw6IHJlcy5hdXRoX3VybCxcbiAgICAgICAgICBzdGF0ZTogcmVzLnN0YXRlLFxuICAgICAgICAgIGxvZ291dFVybDogcmVzLmxvZ291dF91cmwgfHwgJycsXG4gICAgICAgIH0pKSxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldEV4aXN0ZWRUb2tlbihjb25maWc6IEF1dGhvcml6YXRpb25TdGF0ZSkge1xuICAgIHJldHVybiB0aGlzLmdldFRva2VuRnJvbUxvY2FsKGNvbmZpZykucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIG9mKHsgaWRUb2tlbjogJycsIHJlZnJlc2hUb2tlbjogJycgfSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb2tlbkZyb21Mb2NhbChcbiAgICBjb25maWc6IEF1dGhvcml6YXRpb25TdGF0ZSxcbiAgKTogT2JzZXJ2YWJsZTx7IGlkVG9rZW4/OiBzdHJpbmc7IHJlZnJlc2hUb2tlbj86IHN0cmluZyB9PiB7XG4gICAgY29uc3QgeyBxdWVyeVBhcmFtcywgaGFzaFBhcmFtcyB9ID0gdGhpcy5nZXRQYXJhbXMoKTtcblxuICAgIGNvbnN0IGNvZGUgPSBxdWVyeVBhcmFtc1tDT0RFX0tFWV0gfHwgaGFzaFBhcmFtc1tDT0RFX0tFWV07XG5cbiAgICBpZiAoY29kZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VG9rZW5CeUNvZGUoY29kZSwgY29uZmlnLnN0YXRlKTtcbiAgICB9XG5cbiAgICBjb25zdCByZWZyZXNoVG9rZW4gPVxuICAgICAgcXVlcnlQYXJhbXNbUkVGUkVTSF9UT0tFTl9LRVldIHx8IGhhc2hQYXJhbXNbUkVGUkVTSF9UT0tFTl9LRVldO1xuXG4gICAgaWYgKHJlZnJlc2hUb2tlbikge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VG9rZW5CeVJlZnJlc2hUb2tlbihyZWZyZXNoVG9rZW4pO1xuICAgIH1cblxuICAgIGNvbnN0IGlkVG9rZW4gPSBxdWVyeVBhcmFtc1tJRF9UT0tFTl9LRVldIHx8IGhhc2hQYXJhbXNbSURfVE9LRU5fS0VZXTtcblxuICAgIGlmIChpZFRva2VuKSB7XG4gICAgICB3cml0ZVN0b3JhZ2VUb2tlbih7XG4gICAgICAgIHN0b3JhZ2VUeXBlOiAocXVlcnlQYXJhbXNbU1RPUkFHRV9UWVBFX0tFWV0gfHxcbiAgICAgICAgICBoYXNoUGFyYW1zW1NUT1JBR0VfVFlQRV9LRVldKSBhcyBUb2tlblJlc3BvbnNlWyd0b2tlbl9zdG9yYWdlJ10sXG4gICAgICAgIGlkVG9rZW4sXG4gICAgICAgIHJlZnJlc2hUb2tlbjogJycsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnJvbShhc3luY1JlYWRTdG9yYWdlVG9rZW4oKSk7XG4gIH1cblxuICBwcml2YXRlIGdldFRva2VuQnlSZWZyZXNoVG9rZW4ocmVmcmVzaFRva2VuOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PFRva2VuUmVzcG9uc2U+KFRPS0VOX1JFRlJFU0hfQVBJLCB7XG4gICAgICAgIHBhcmFtczogeyByZWZyZXNoX3Rva2VuOiByZWZyZXNoVG9rZW4gfSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUb2tlblJlc3BvbnNlKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb2tlbkJ5Q29kZShjb2RlOiBzdHJpbmcsIHN0YXRlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PFRva2VuUmVzcG9uc2U+KENBTExCQUNLX0FQSSwge1xuICAgICAgICBwYXJhbXM6IHsgY29kZSwgc3RhdGUgfSxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXBUb2tlblJlc3BvbnNlKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJhbXMoKSB7XG4gICAgY29uc3QgaW5pdFVybCA9IGdldEluaXRVcmwoKTtcblxuICAgIGNvbnN0IGluaXRMb2NhdGlvbiA9IG5ldyBVUkwoaW5pdFVybCk7XG5cbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHBhcnNlUGFyYW1zKFxuICAgICAgaW5pdExvY2F0aW9uLnNlYXJjaCA/IGluaXRMb2NhdGlvbi5zZWFyY2guc2xpY2UoMSkgOiAnJyxcbiAgICApO1xuXG4gICAgY29uc3QgaGFzaFBhcmFtcyA9IHBhcnNlUGFyYW1zKFxuICAgICAgaW5pdExvY2F0aW9uLmhhc2ggPyBpbml0TG9jYXRpb24uaGFzaC5zbGljZSgxKSA6ICcnLFxuICAgICk7XG5cbiAgICByZXR1cm4geyBxdWVyeVBhcmFtcywgaGFzaFBhcmFtcyB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VSZWRpcmVjdFVybChkZXhVcmw6IHN0cmluZywgcmVkaXJlY3RVcmw6IHN0cmluZykge1xuICBjb25zdCBbcGF0aCwgcXVlcnlQYXJhbXNdID0gZGV4VXJsLnNwbGl0KCc/Jyk7XG5cbiAgY29uc3QgcmVwbGFjZWRRdWVyeVBhcmFtcyA9IHF1ZXJ5UGFyYW1zXG4gICAgLnNwbGl0KCcmJylcbiAgICAubWFwKHBhaXIgPT4ge1xuICAgICAgY29uc3QgW2tleSwgdmFsdWVdID0gcGFpci5zcGxpdCgnPScpO1xuICAgICAgcmV0dXJuIFJFRElSRUNUX1VSSVMuaGFzKGtleSlcbiAgICAgICAgPyBgJHtrZXl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHJlZGlyZWN0VXJsKX1gXG4gICAgICAgIDogYCR7a2V5fT0ke3ZhbHVlfWA7XG4gICAgfSlcbiAgICAuam9pbignJicpO1xuXG4gIHJldHVybiBgJHtwYXRofT8ke3JlcGxhY2VkUXVlcnlQYXJhbXN9YDtcbn1cblxuZnVuY3Rpb24gcGFyc2VQYXJhbXMocXVlcnk6IHN0cmluZyk6IFN0cmluZ01hcCB7XG4gIGlmICghcXVlcnkpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICByZXR1cm4gcXVlcnkuc3BsaXQoJyYnKS5yZWR1Y2UoKGFjYywgcGFyYW0pID0+IHtcbiAgICBjb25zdCBba2V5LCB2YWx1ZV0gPSBwYXJhbS5zcGxpdCgnPScpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmFjYyxcbiAgICAgIFtrZXldOiB2YWx1ZSxcbiAgICB9O1xuICB9LCB7fSk7XG59XG5cbmZ1bmN0aW9uIGdldEFjY291bnRJbmZvKHN0YXRlOiBBdXRob3JpemF0aW9uU3RhdGUpOiBBY2NvdW50SW5mbyB7XG4gIHJldHVybiBzdGF0ZS5pZFRva2VuXG4gICAgPyBKU09OLnBhcnNlKGRlY29kZVVybChzdGF0ZS5pZFRva2VuLnNwbGl0KCcuJylbMV0pKVxuICAgIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gbWFwVG9rZW5SZXNwb25zZSgpIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgdGFwKCh7IHRva2VuX3N0b3JhZ2UsIGlkX3Rva2VuLCByZWZyZXNoX3Rva2VuIH06IFRva2VuUmVzcG9uc2UpID0+IHtcbiAgICAgIHdyaXRlU3RvcmFnZVRva2VuKHtcbiAgICAgICAgc3RvcmFnZVR5cGU6IHRva2VuX3N0b3JhZ2UsXG4gICAgICAgIGlkVG9rZW46IGlkX3Rva2VuLFxuICAgICAgICByZWZyZXNoVG9rZW46IHJlZnJlc2hfdG9rZW4sXG4gICAgICB9KTtcbiAgICB9KSxcbiAgICBtYXAoKHsgaWRfdG9rZW4sIHJlZnJlc2hfdG9rZW4gfSkgPT4gKHtcbiAgICAgIGlkVG9rZW46IGlkX3Rva2VuLFxuICAgICAgcmVmcmVzaFRva2VuOiByZWZyZXNoX3Rva2VuLFxuICAgIH0pKSxcbiAgKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { ID_TOKEN_KEY, REFRESH_TOKEN_KEY, STORAGE_TYPE_KEY, } from './state.service';
|
|
2
|
+
const getStorage = (storageType) => storageType === 'session' ? sessionStorage : localStorage;
|
|
3
|
+
let sessionTokenShareChannel;
|
|
4
|
+
const SESSION_TOKEN_SHARE_CHANNEL = 'SESSION_TOKEN_SHARE_CHANNEL';
|
|
5
|
+
export function readStorageType() {
|
|
6
|
+
return (localStorage.getItem(STORAGE_TYPE_KEY) === 'session' ? 'session' : 'local');
|
|
7
|
+
}
|
|
8
|
+
export function cleanStorageToken() {
|
|
9
|
+
localStorage.removeItem(ID_TOKEN_KEY);
|
|
10
|
+
localStorage.removeItem(REFRESH_TOKEN_KEY);
|
|
11
|
+
sessionStorage.removeItem(ID_TOKEN_KEY);
|
|
12
|
+
sessionStorage.removeItem(REFRESH_TOKEN_KEY);
|
|
13
|
+
}
|
|
14
|
+
export function writeStorageToken(token) {
|
|
15
|
+
cleanStorageToken();
|
|
16
|
+
localStorage.setItem(STORAGE_TYPE_KEY, token.storageType);
|
|
17
|
+
const storage = getStorage(token.storageType);
|
|
18
|
+
storage.setItem(ID_TOKEN_KEY, token.idToken);
|
|
19
|
+
storage.setItem(REFRESH_TOKEN_KEY, token.refreshToken);
|
|
20
|
+
if (token.storageType === 'session') {
|
|
21
|
+
setupRequestSessionTokenChannel();
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
closeRequestSessionTokenChannel();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export function readStorageToken() {
|
|
28
|
+
const storageType = readStorageType();
|
|
29
|
+
if (storageType === 'session') {
|
|
30
|
+
setupRequestSessionTokenChannel();
|
|
31
|
+
}
|
|
32
|
+
const storage = getStorage(storageType);
|
|
33
|
+
return {
|
|
34
|
+
storageType,
|
|
35
|
+
idToken: storage.getItem(ID_TOKEN_KEY),
|
|
36
|
+
refreshToken: storage.getItem(REFRESH_TOKEN_KEY),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export function asyncReadStorageToken() {
|
|
40
|
+
const storageType = readStorageType();
|
|
41
|
+
if (storageType === 'session' && !sessionStorage.getItem(ID_TOKEN_KEY)) {
|
|
42
|
+
setupRequestSessionTokenChannel();
|
|
43
|
+
return new Promise(resolve => {
|
|
44
|
+
const timer = window.setTimeout(() => {
|
|
45
|
+
console.warn('request session token timeout');
|
|
46
|
+
sessionTokenShareChannel.removeEventListener('message', receiveSessionToken);
|
|
47
|
+
resolve({});
|
|
48
|
+
}, 50);
|
|
49
|
+
function receiveSessionToken({ data, }) {
|
|
50
|
+
if (data.type === 'provide') {
|
|
51
|
+
window.clearTimeout(timer);
|
|
52
|
+
sessionTokenShareChannel.removeEventListener('message', receiveSessionToken);
|
|
53
|
+
writeStorageToken(data.token);
|
|
54
|
+
resolve(data.token);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
sessionTokenShareChannel.addEventListener('message', receiveSessionToken);
|
|
58
|
+
sessionTokenShareChannel.postMessage({ type: 'request' });
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
return Promise.resolve(readStorageToken()).then(token => {
|
|
62
|
+
return token;
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
function setupRequestSessionTokenChannel() {
|
|
66
|
+
if (sessionTokenShareChannel) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
sessionTokenShareChannel = new BroadcastChannel(SESSION_TOKEN_SHARE_CHANNEL);
|
|
70
|
+
sessionTokenShareChannel.addEventListener('message', ({ data }) => {
|
|
71
|
+
if (data.type === 'request') {
|
|
72
|
+
sessionTokenShareChannel.postMessage({
|
|
73
|
+
type: 'provide',
|
|
74
|
+
token: readStorageToken(),
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
function closeRequestSessionTokenChannel() {
|
|
80
|
+
if (sessionTokenShareChannel) {
|
|
81
|
+
sessionTokenShareChannel.close();
|
|
82
|
+
sessionTokenShareChannel = null;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS10b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hdXRob3JpemF0aW9uL3N0b3JhZ2UtdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFlBQVksRUFDWixpQkFBaUIsRUFDakIsZ0JBQWdCLEdBRWpCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxXQUF3QixFQUFXLEVBQUUsQ0FDdkQsV0FBVyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7QUFFNUQsSUFBSSx3QkFBMEMsQ0FBQztBQUUvQyxNQUFNLDJCQUEyQixHQUFHLDZCQUE2QixDQUFDO0FBZWxFLE1BQU0sVUFBVSxlQUFlO0lBQzdCLE9BQU8sQ0FDTCxZQUFZLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDNUQsQ0FBQztBQUNuQixDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQjtJQUMvQixZQUFZLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3RDLFlBQVksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUUzQyxjQUFjLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hDLGNBQWMsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUMvQyxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQW1CO0lBQ25ELGlCQUFpQixFQUFFLENBQUM7SUFFcEIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFMUQsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMs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RUFBRTthQUNELENBQUMsQ0FBQztTQUM3QjtJQUNILENBQUMsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsK0JBQStCO0lBQ3RDLElBQUksd0JBQXdCLEVBQUU7UUFDNUIsd0JBQXdCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO0tBQ2pDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIElEX1RPS0VOX0tFWSxcbiAgUkVGUkVTSF9UT0tFTl9LRVksXG4gIFNUT1JBR0VfVFlQRV9LRVksXG4gIFN0b3JhZ2VUeXBlLFxufSBmcm9tICcuL3N0YXRlLnNlcnZpY2UnO1xuXG5jb25zdCBnZXRTdG9yYWdlID0gKHN0b3JhZ2VUeXBlOiBTdG9yYWdlVHlwZSk6IFN0b3JhZ2UgPT5cbiAgc3RvcmFnZVR5cGUgPT09ICdzZXNzaW9uJyA/IHNlc3Npb25TdG9yYWdlIDogbG9jYWxTdG9yYWdlO1xuXG5sZXQgc2Vzc2lvblRva2VuU2hhcmVDaGFubmVsOiBCcm9hZGNhc3RDaGFubmVsO1xuXG5jb25zdCBTRVNTSU9OX1RPS0VOX1NIQVJFX0NIQU5ORUwgPSAnU0VTU0lPTl9UT0tFTl9TSEFSRV9DSEFOTkVMJztcblxudHlwZSBTZXNzaW9uVG9rZW5TaGFyZURhdGEgPVxuICB8IHtcbiAgICAgIHR5cGU6ICdwcm92aWRlJztcbiAgICAgIHRva2VuOiBTdG9yYWdlVG9rZW47XG4gICAgfVxuICB8IHsgdHlwZTogJ3JlcXVlc3QnIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmFnZVRva2VuIHtcbiAgc3RvcmFnZVR5cGU6IFN0b3JhZ2VUeXBlO1xuICBpZFRva2VuOiBzdHJpbmc7XG4gIHJlZnJlc2hUb2tlbjogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFN0b3JhZ2VUeXBlKCkge1xuICByZXR1cm4gKFxuICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfVFlQRV9LRVkpID09PSAnc2Vzc2lvbicgPyAnc2Vzc2lvbicgOiAnbG9jYWwnXG4gICkgYXMgU3RvcmFnZVR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhblN0b3JhZ2VUb2tlbigpIHtcbiAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oSURfVE9LRU5fS0VZKTtcbiAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oUkVGUkVTSF9UT0tFTl9LRVkpO1xuXG4gIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oSURfVE9LRU5fS0VZKTtcbiAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShSRUZSRVNIX1RPS0VOX0tFWSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVN0b3JhZ2VUb2tlbih0b2tlbjogU3RvcmFnZVRva2VuKSB7XG4gIGNsZWFuU3RvcmFnZVRva2VuKCk7XG5cbiAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oU1RPUkFHRV9UWVBFX0tFWSwgdG9rZW4uc3RvcmFnZVR5cGUpO1xuXG4gIGNvbnN0IHN0b3JhZ2UgPSBnZXRTdG9yYWdlKHRva2VuLnN0b3JhZ2VUeXBlKTtcblxuICBzdG9yYWdlLnNldEl0ZW0oSURfVE9LRU5fS0VZLCB0b2tlbi5pZFRva2VuKTtcbiAgc3RvcmFnZS5zZXRJdGVtKFJFRlJFU0hfVE9LRU5fS0VZLCB0b2tlbi5yZWZyZXNoVG9rZW4pO1xuXG4gIGlmICh0b2tlbi5zdG9yYWdlVHlwZSA9PT0gJ3Nlc3Npb24nKSB7XG4gICAgc2V0dXBSZXF1ZXN0U2Vzc2lvblRva2VuQ2hhbm5lbCgpO1xuICB9IGVsc2Uge1xuICAgIGNsb3NlUmVxdWVzdFNlc3Npb25Ub2tlbkNoYW5uZWwoKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFN0b3JhZ2VUb2tlbigpOiBQYXJ0aWFsPFN0b3JhZ2VUb2tlbj4ge1xuICBjb25zdCBzdG9yYWdlVHlwZSA9IHJlYWRTdG9yYWdlVHlwZSgpO1xuXG4gIGlmIChzdG9yYWdlVHlwZSA9PT0gJ3Nlc3Npb24nKSB7XG4gICAgc2V0dXBSZXF1ZXN0U2Vzc2lvblRva2VuQ2hhbm5lbCgpO1xuICB9XG5cbiAgY29uc3Qgc3RvcmFnZSA9IGdldFN0b3JhZ2Uoc3RvcmFnZVR5cGUpO1xuXG4gIHJldHVybiB7XG4gICAgc3RvcmFnZVR5cGUsXG4gICAgaWRUb2tlbjogc3RvcmFnZS5nZXRJdGVtKElEX1RPS0VOX0tFWSksXG4gICAgcmVmcmVzaFRva2VuOiBzdG9yYWdlLmdldEl0ZW0oUkVGUkVTSF9UT0tFTl9LRVkpLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXN5bmNSZWFkU3RvcmFnZVRva2VuKCk6IFByb21pc2U8UGFydGlhbDxTdG9yYWdlVG9rZW4+PiB7XG4gIGNvbnN0IHN0b3JhZ2VUeXBlID0gcmVhZFN0b3JhZ2VUeXBlKCk7XG5cbiAgaWYgKHN0b3JhZ2VUeXBlID09PSAnc2Vzc2lvbicgJiYgIXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oSURfVE9LRU5fS0VZKSkge1xuICAgIHNldHVwUmVxdWVzdFNlc3Npb25Ub2tlbkNoYW5uZWwoKTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIGNvbnN0IHRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zb2xlLndhcm4oJ3JlcXVlc3Qgc2Vzc2lvbiB0b2tlbiB0aW1lb3V0Jyk7XG4gICAgICAgIHNlc3Npb25Ub2tlblNoYXJlQ2hhbm5lbC5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgICAgICdtZXNzYWdlJyxcbiAgICAgICAgICByZWNlaXZlU2Vzc2lvblRva2VuLFxuICAgICAgICApO1xuICAgICAgICByZXNvbHZlKHt9KTtcbiAgICAgIH0sIDUwKTtcblxuICAgICAgZnVuY3Rpb24gcmVjZWl2ZVNlc3Npb25Ub2tlbih7XG4gICAgICAgIGRhdGEsXG4gICAgICB9OiBNZXNzYWdlRXZlbnQ8U2Vzc2lvblRva2VuU2hhcmVEYXRhPikge1xuICAgICAgICBpZiAoZGF0YS50eXBlID09PSAncHJvdmlkZScpIHtcbiAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgICAgICBzZXNzaW9uVG9rZW5TaGFyZUNoYW5uZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgICdtZXNzYWdlJyxcbiAgICAgICAgICAgIHJlY2VpdmVTZXNzaW9uVG9rZW4sXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHdyaXRlU3RvcmFnZVRva2VuKGRhdGEudG9rZW4pO1xuICAgICAgICAgIHJlc29sdmUoZGF0YS50b2tlbik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc2Vzc2lvblRva2VuU2hhcmVDaGFubmVsLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCByZWNlaXZlU2Vzc2lvblRva2VuKTtcblxuICAgICAgc2Vzc2lvblRva2VuU2hhcmVDaGFubmVsLnBvc3RNZXNzYWdlKHsgdHlwZTogJ3JlcXVlc3QnIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZWFkU3RvcmFnZVRva2VuKCkpLnRoZW4odG9rZW4gPT4ge1xuICAgIHJldHVybiB0b2tlbjtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHNldHVwUmVxdWVzdFNlc3Npb25Ub2tlbkNoYW5uZWwoKSB7XG4gIGlmIChzZXNzaW9uVG9rZW5TaGFyZUNoYW5uZWwpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBzZXNzaW9uVG9rZW5TaGFyZUNoYW5uZWwgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbChTRVNTSU9OX1RPS0VOX1NIQVJFX0NIQU5ORUwpO1xuXG4gIHNlc3Npb25Ub2tlblNoYXJlQ2hhbm5lbC5hZGRFdmVudExpc3RlbmVyKFxuICAgICdtZXNzYWdlJyxcbiAgICAoeyBkYXRhIH06IE1lc3NhZ2VFdmVudDxTZXNzaW9uVG9rZW5TaGFyZURhdGE+KSA9PiB7XG4gICAgICBpZiAoZGF0YS50eXBlID09PSAncmVxdWVzdCcpIHtcbiAgICAgICAgc2Vzc2lvblRva2VuU2hhcmVDaGFubmVsLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICB0eXBlOiAncHJvdmlkZScsXG4gICAgICAgICAgdG9rZW46IHJlYWRTdG9yYWdlVG9rZW4oKSxcbiAgICAgICAgfSBhcyBTZXNzaW9uVG9rZW5TaGFyZURhdGEpO1xuICAgICAgfVxuICAgIH0sXG4gICk7XG59XG5cbmZ1bmN0aW9uIGNsb3NlUmVxdWVzdFNlc3Npb25Ub2tlbkNoYW5uZWwoKSB7XG4gIGlmIChzZXNzaW9uVG9rZW5TaGFyZUNoYW5uZWwpIHtcbiAgICBzZXNzaW9uVG9rZW5TaGFyZUNoYW5uZWwuY2xvc2UoKTtcbiAgICBzZXNzaW9uVG9rZW5TaGFyZUNoYW5uZWwgPSBudWxsO1xuICB9XG59XG4iXX0=
|
|
@@ -80,11 +80,11 @@ export class ClusterSelectorComponent {
|
|
|
80
80
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 3, "cluster"), " ");
|
|
81
81
|
i0.ɵɵadvance(3);
|
|
82
82
|
i0.ɵɵtextInterpolate(ctx.value);
|
|
83
|
-
} }, styles: ["[_nghost-%COMP%]{display:flex}[_nghost-%COMP%] .icon-wrapper{position:relative;display:flex;justify-content:center;align-items:center;width:16px;height:16px;flex-shrink:0;font-size:var(--aui-icon-size-m)}:root [_nghost-%COMP%] .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}html[aui-theme-mode=light] [_nghost-%COMP%] .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] [_nghost-%COMP%] .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}}html[aui-theme-mode=dark] [_nghost-%COMP%] .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}[_nghost-%COMP%] .with-colon{display:inline-flex;word-break:keep-all;flex-shrink:0;font-weight:500}[_nghost-%COMP%] .with-colon:after{content:\":\";margin-right:8px}[_nghost-%COMP%] .text-truncate{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}[_nghost-%COMP%] .acl-resource-selector{user-select:none;display:flex;color:var(--acl-page-header-title-color);cursor:pointer;padding:0 8px}[_nghost-%COMP%] .acl-resource-selector .selected-name{color:var(--acl-page-header-text-color)}[_nghost-%COMP%] .acl-resource-selector--active, [_nghost-%COMP%] .acl-resource-selector:hover{background-color:rgb(var(--aui-color-primary));color:#fff;border-radius:2px}:root [_nghost-%COMP%] .acl-resource-selector--active .icon-wrapper, :root [_nghost-%COMP%] .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: rgb(var(--aui-color-p-4))}html[aui-theme-mode=light] [_nghost-%COMP%] .acl-resource-selector--active .icon-wrapper, html[aui-theme-mode=light] [_nghost-%COMP%] .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: rgb(var(--aui-color-p-4))}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] [_nghost-%COMP%] .acl-resource-selector--active .icon-wrapper, html[aui-theme-mode=system] [_nghost-%COMP%] .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: #b3d7fc}}html[aui-theme-mode=dark] [_nghost-%COMP%] .acl-resource-selector--active .icon-wrapper, html[aui-theme-mode=dark] [_nghost-%COMP%] .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: #b3d7fc}[_nghost-%COMP%] .acl-resource-selector--active .selected-name, [_nghost-%COMP%] .acl-resource-selector:hover .selected-name{color:#fff}[_nghost-%COMP%] .acl-resource-selector--lite{padding:0 4px}[_nghost-%COMP%] .acl-resource-selector--lite:hover{background-color:rgb(var(--aui-color-b-6))}[_nghost-%COMP%] .acl-resource-selector--lite:hover .selected-name, [_nghost-%COMP%] .acl-resource-selector--lite:hover .acl-resource-selector__arrow{color:rgb(var(--aui-color-n-2))}[_nghost-%COMP%] .acl-resource-selector--lite .acl-resource-selector__item{height:20px}[_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active:hover{background-color:rgb(var(--aui-color-b-5))}[_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active .selected-name, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active .acl-resource-selector__arrow, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active:hover .selected-name, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active:hover .acl-resource-selector__arrow{color:rgb(var(--aui-color-primary))}[_nghost-%COMP%] .acl-resource-selector__item{margin-right:20px;height:32px;display:inline-flex;align-items:center;font-size:12px;max-width:270px}@media screen and (max-width: 1280px){[_nghost-%COMP%] .acl-resource-selector__item{max-width:178px;margin-right:8px}}[_nghost-%COMP%] .acl-resource-selector__item .icon-wrapper{margin-right:4px}[_nghost-%COMP%] .acl-resource-selector__arrow{margin-left:-16px;align-items:center;display:inline-flex;width:16px;justify-content:center}"], changeDetection: 0 }); }
|
|
83
|
+
} }, styles: ["[_nghost-%COMP%]{display:flex}[_nghost-%COMP%] .icon-wrapper{position:relative;display:flex;justify-content:center;align-items:center;width:16px;height:16px;flex-shrink:0;font-size:var(--aui-icon-size-m)}:root [_nghost-%COMP%] .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}html[aui-theme-mode=light] [_nghost-%COMP%] .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] [_nghost-%COMP%] .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}}html[aui-theme-mode=dark] [_nghost-%COMP%] .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}[_nghost-%COMP%] .with-colon{display:inline-flex;word-break:keep-all;flex-shrink:0;font-weight:500}[_nghost-%COMP%] .with-colon:after{content:\":\";margin-right:8px}[_nghost-%COMP%] .text-truncate{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}[_nghost-%COMP%] .acl-resource-selector{user-select:none;display:flex;color:var(--acl-page-header-title-color);cursor:pointer;padding:0 8px}[_nghost-%COMP%] .acl-resource-selector .selected-name{color:var(--acl-page-header-text-color)}[_nghost-%COMP%] .acl-resource-selector--active, [_nghost-%COMP%] .acl-resource-selector:hover{background-color:rgb(var(--aui-color-primary));color:#fff;border-radius:2px}:root [_nghost-%COMP%] .acl-resource-selector--active .icon-wrapper, :root [_nghost-%COMP%] .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: rgb(var(--aui-color-p-4))}html[aui-theme-mode=light] [_nghost-%COMP%] .acl-resource-selector--active .icon-wrapper, html[aui-theme-mode=light] [_nghost-%COMP%] .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: rgb(var(--aui-color-p-4))}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] [_nghost-%COMP%] .acl-resource-selector--active .icon-wrapper, html[aui-theme-mode=system] [_nghost-%COMP%] .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: #b3d7fc}}html[aui-theme-mode=dark] [_nghost-%COMP%] .acl-resource-selector--active .icon-wrapper, html[aui-theme-mode=dark] [_nghost-%COMP%] .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: #b3d7fc}[_nghost-%COMP%] .acl-resource-selector--active .selected-name, [_nghost-%COMP%] .acl-resource-selector:hover .selected-name{color:#fff}[_nghost-%COMP%] .acl-resource-selector--lite{padding:0 4px}[_nghost-%COMP%] .acl-resource-selector--lite:hover{background-color:rgb(var(--aui-color-b-6))}[_nghost-%COMP%] .acl-resource-selector--lite:hover .selected-name, [_nghost-%COMP%] .acl-resource-selector--lite:hover .acl-resource-selector__arrow{color:rgb(var(--aui-color-n-2))}[_nghost-%COMP%] .acl-resource-selector--lite .acl-resource-selector__item{height:20px}[_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active:hover{background-color:rgb(var(--aui-color-b-5))}[_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active .selected-name, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active .acl-resource-selector__arrow, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active:hover .selected-name, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active:hover .acl-resource-selector__arrow{color:rgb(var(--aui-color-primary))}[_nghost-%COMP%] .acl-resource-selector__item{margin-right:20px;height:32px;display:inline-flex;align-items:center;font-size:12px;max-width:270px}@media screen and (max-width: 1280px){[_nghost-%COMP%] .acl-resource-selector__item{max-width:178px;margin-right:8px}}[_nghost-%COMP%] .acl-resource-selector__item .icon-wrapper{margin-right:4px}[_nghost-%COMP%] .acl-resource-selector__arrow{margin-left:-16px;align-items:center;display:inline-flex;width:16px;justify-content:center}@media screen and (max-width: 1280px){[_nghost-%COMP%] .acl-resource-selector__arrow{margin-left:-4px}}"], changeDetection: 0 }); }
|
|
84
84
|
}
|
|
85
85
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ClusterSelectorComponent, [{
|
|
86
86
|
type: Component,
|
|
87
|
-
args: [{ selector: 'acl-cluster-selector', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"acl-resource-selector\"\n [ngClass]=\"{ 'acl-resource-selector--active': isActive }\"\n (click)=\"openPopup()\"\n>\n <div class=\"acl-resource-selector__item project\">\n <span class=\"icon-wrapper tw-flex\">\n <aui-icon icon=\"bicolor:server\"></aui-icon>\n </span>\n <span class=\"with-colon\">\n {{ 'cluster' | translate }}\n </span>\n <span class=\"selected-name text-truncate\">{{ value }}</span>\n </div>\n <div class=\"acl-resource-selector__arrow\">\n <aui-icon icon=\"caret_down_s\"></aui-icon>\n </div>\n</div>\n\n<ng-template #popup>\n <acl-cluster-list\n [context]=\"'popup'\"\n [fields]=\"fields || displayFields\"\n (selectItem)=\"onSelect($event)\"\n [value]=\"value\"\n ></acl-cluster-list>\n</ng-template>\n", styles: [":host{display:flex}:host::ng-deep .icon-wrapper{position:relative;display:flex;justify-content:center;align-items:center;width:16px;height:16px;flex-shrink:0;font-size:var(--aui-icon-size-m)}:root :host::ng-deep .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}html[aui-theme-mode=light] :host::ng-deep .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] :host::ng-deep .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}}html[aui-theme-mode=dark] :host::ng-deep .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}:host::ng-deep .with-colon{display:inline-flex;word-break:keep-all;flex-shrink:0;font-weight:500}:host::ng-deep .with-colon:after{content:\":\";margin-right:8px}:host::ng-deep .text-truncate{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}:host::ng-deep .acl-resource-selector{user-select:none;display:flex;color:var(--acl-page-header-title-color);cursor:pointer;padding:0 8px}:host::ng-deep .acl-resource-selector .selected-name{color:var(--acl-page-header-text-color)}:host::ng-deep .acl-resource-selector--active,:host::ng-deep .acl-resource-selector:hover{background-color:rgb(var(--aui-color-primary));color:#fff;border-radius:2px}:root :host::ng-deep .acl-resource-selector--active .icon-wrapper,:root :host::ng-deep .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: rgb(var(--aui-color-p-4))}html[aui-theme-mode=light] :host::ng-deep .acl-resource-selector--active .icon-wrapper,html[aui-theme-mode=light] :host::ng-deep .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: rgb(var(--aui-color-p-4))}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] :host::ng-deep .acl-resource-selector--active .icon-wrapper,html[aui-theme-mode=system] :host::ng-deep .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: #b3d7fc}}html[aui-theme-mode=dark] :host::ng-deep .acl-resource-selector--active .icon-wrapper,html[aui-theme-mode=dark] :host::ng-deep .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: #b3d7fc}:host::ng-deep .acl-resource-selector--active .selected-name,:host::ng-deep .acl-resource-selector:hover .selected-name{color:#fff}:host::ng-deep .acl-resource-selector--lite{padding:0 4px}:host::ng-deep .acl-resource-selector--lite:hover{background-color:rgb(var(--aui-color-b-6))}:host::ng-deep .acl-resource-selector--lite:hover .selected-name,:host::ng-deep .acl-resource-selector--lite:hover .acl-resource-selector__arrow{color:rgb(var(--aui-color-n-2))}:host::ng-deep .acl-resource-selector--lite .acl-resource-selector__item{height:20px}:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active:hover{background-color:rgb(var(--aui-color-b-5))}:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active .selected-name,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active .acl-resource-selector__arrow,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active:hover .selected-name,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active:hover .acl-resource-selector__arrow{color:rgb(var(--aui-color-primary))}:host::ng-deep .acl-resource-selector__item{margin-right:20px;height:32px;display:inline-flex;align-items:center;font-size:12px;max-width:270px}@media screen and (max-width: 1280px){:host::ng-deep .acl-resource-selector__item{max-width:178px;margin-right:8px}}:host::ng-deep .acl-resource-selector__item .icon-wrapper{margin-right:4px}:host::ng-deep .acl-resource-selector__arrow{margin-left:-16px;align-items:center;display:inline-flex;width:16px;justify-content:center}\n"] }]
|
|
87
|
+
args: [{ selector: 'acl-cluster-selector', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"acl-resource-selector\"\n [ngClass]=\"{ 'acl-resource-selector--active': isActive }\"\n (click)=\"openPopup()\"\n>\n <div class=\"acl-resource-selector__item project\">\n <span class=\"icon-wrapper tw-flex\">\n <aui-icon icon=\"bicolor:server\"></aui-icon>\n </span>\n <span class=\"with-colon\">\n {{ 'cluster' | translate }}\n </span>\n <span class=\"selected-name text-truncate\">{{ value }}</span>\n </div>\n <div class=\"acl-resource-selector__arrow\">\n <aui-icon icon=\"caret_down_s\"></aui-icon>\n </div>\n</div>\n\n<ng-template #popup>\n <acl-cluster-list\n [context]=\"'popup'\"\n [fields]=\"fields || displayFields\"\n (selectItem)=\"onSelect($event)\"\n [value]=\"value\"\n ></acl-cluster-list>\n</ng-template>\n", styles: [":host{display:flex}:host::ng-deep .icon-wrapper{position:relative;display:flex;justify-content:center;align-items:center;width:16px;height:16px;flex-shrink:0;font-size:var(--aui-icon-size-m)}:root :host::ng-deep .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}html[aui-theme-mode=light] :host::ng-deep .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] :host::ng-deep .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}}html[aui-theme-mode=dark] :host::ng-deep .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}:host::ng-deep .with-colon{display:inline-flex;word-break:keep-all;flex-shrink:0;font-weight:500}:host::ng-deep .with-colon:after{content:\":\";margin-right:8px}:host::ng-deep .text-truncate{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}:host::ng-deep .acl-resource-selector{user-select:none;display:flex;color:var(--acl-page-header-title-color);cursor:pointer;padding:0 8px}:host::ng-deep .acl-resource-selector .selected-name{color:var(--acl-page-header-text-color)}:host::ng-deep .acl-resource-selector--active,:host::ng-deep .acl-resource-selector:hover{background-color:rgb(var(--aui-color-primary));color:#fff;border-radius:2px}:root :host::ng-deep .acl-resource-selector--active .icon-wrapper,:root :host::ng-deep .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: rgb(var(--aui-color-p-4))}html[aui-theme-mode=light] :host::ng-deep .acl-resource-selector--active .icon-wrapper,html[aui-theme-mode=light] :host::ng-deep .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: rgb(var(--aui-color-p-4))}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] :host::ng-deep .acl-resource-selector--active .icon-wrapper,html[aui-theme-mode=system] :host::ng-deep .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: #b3d7fc}}html[aui-theme-mode=dark] :host::ng-deep .acl-resource-selector--active .icon-wrapper,html[aui-theme-mode=dark] :host::ng-deep .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: #b3d7fc}:host::ng-deep .acl-resource-selector--active .selected-name,:host::ng-deep .acl-resource-selector:hover .selected-name{color:#fff}:host::ng-deep .acl-resource-selector--lite{padding:0 4px}:host::ng-deep .acl-resource-selector--lite:hover{background-color:rgb(var(--aui-color-b-6))}:host::ng-deep .acl-resource-selector--lite:hover .selected-name,:host::ng-deep .acl-resource-selector--lite:hover .acl-resource-selector__arrow{color:rgb(var(--aui-color-n-2))}:host::ng-deep .acl-resource-selector--lite .acl-resource-selector__item{height:20px}:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active:hover{background-color:rgb(var(--aui-color-b-5))}:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active .selected-name,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active .acl-resource-selector__arrow,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active:hover .selected-name,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active:hover .acl-resource-selector__arrow{color:rgb(var(--aui-color-primary))}:host::ng-deep .acl-resource-selector__item{margin-right:20px;height:32px;display:inline-flex;align-items:center;font-size:12px;max-width:270px}@media screen and (max-width: 1280px){:host::ng-deep .acl-resource-selector__item{max-width:178px;margin-right:8px}}:host::ng-deep .acl-resource-selector__item .icon-wrapper{margin-right:4px}:host::ng-deep .acl-resource-selector__arrow{margin-left:-16px;align-items:center;display:inline-flex;width:16px;justify-content:center}@media screen and (max-width: 1280px){:host::ng-deep .acl-resource-selector__arrow{margin-left:-4px}}\n"] }]
|
|
88
88
|
}], function () { return [{ type: i1.ResourceSelectorPopupService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, { popupTemplate: [{
|
|
89
89
|
type: ViewChild,
|
|
90
90
|
args: ['popup', { static: true }]
|
|
@@ -78,11 +78,11 @@ export class ServiceMeshGroupSelectorComponent {
|
|
|
78
78
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 3, "service_meshes"), " ");
|
|
79
79
|
i0.ɵɵadvance(3);
|
|
80
80
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(9, 5, ctx.value));
|
|
81
|
-
} }, styles: ["[_nghost-%COMP%]{display:flex}[_nghost-%COMP%] .icon-wrapper{position:relative;display:flex;justify-content:center;align-items:center;width:16px;height:16px;flex-shrink:0;font-size:var(--aui-icon-size-m)}:root [_nghost-%COMP%] .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}html[aui-theme-mode=light] [_nghost-%COMP%] .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] [_nghost-%COMP%] .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}}html[aui-theme-mode=dark] [_nghost-%COMP%] .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}[_nghost-%COMP%] .with-colon{display:inline-flex;word-break:keep-all;flex-shrink:0;font-weight:500}[_nghost-%COMP%] .with-colon:after{content:\":\";margin-right:8px}[_nghost-%COMP%] .text-truncate{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}[_nghost-%COMP%] .acl-resource-selector{user-select:none;display:flex;color:var(--acl-page-header-title-color);cursor:pointer;padding:0 8px}[_nghost-%COMP%] .acl-resource-selector .selected-name{color:var(--acl-page-header-text-color)}[_nghost-%COMP%] .acl-resource-selector--active, [_nghost-%COMP%] .acl-resource-selector:hover{background-color:rgb(var(--aui-color-primary));color:#fff;border-radius:2px}:root [_nghost-%COMP%] .acl-resource-selector--active .icon-wrapper, :root [_nghost-%COMP%] .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: rgb(var(--aui-color-p-4))}html[aui-theme-mode=light] [_nghost-%COMP%] .acl-resource-selector--active .icon-wrapper, html[aui-theme-mode=light] [_nghost-%COMP%] .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: rgb(var(--aui-color-p-4))}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] [_nghost-%COMP%] .acl-resource-selector--active .icon-wrapper, html[aui-theme-mode=system] [_nghost-%COMP%] .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: #b3d7fc}}html[aui-theme-mode=dark] [_nghost-%COMP%] .acl-resource-selector--active .icon-wrapper, html[aui-theme-mode=dark] [_nghost-%COMP%] .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: #b3d7fc}[_nghost-%COMP%] .acl-resource-selector--active .selected-name, [_nghost-%COMP%] .acl-resource-selector:hover .selected-name{color:#fff}[_nghost-%COMP%] .acl-resource-selector--lite{padding:0 4px}[_nghost-%COMP%] .acl-resource-selector--lite:hover{background-color:rgb(var(--aui-color-b-6))}[_nghost-%COMP%] .acl-resource-selector--lite:hover .selected-name, [_nghost-%COMP%] .acl-resource-selector--lite:hover .acl-resource-selector__arrow{color:rgb(var(--aui-color-n-2))}[_nghost-%COMP%] .acl-resource-selector--lite .acl-resource-selector__item{height:20px}[_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active:hover{background-color:rgb(var(--aui-color-b-5))}[_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active .selected-name, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active .acl-resource-selector__arrow, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active:hover .selected-name, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active:hover .acl-resource-selector__arrow{color:rgb(var(--aui-color-primary))}[_nghost-%COMP%] .acl-resource-selector__item{margin-right:20px;height:32px;display:inline-flex;align-items:center;font-size:12px;max-width:270px}@media screen and (max-width: 1280px){[_nghost-%COMP%] .acl-resource-selector__item{max-width:178px;margin-right:8px}}[_nghost-%COMP%] .acl-resource-selector__item .icon-wrapper{margin-right:4px}[_nghost-%COMP%] .acl-resource-selector__arrow{margin-left:-16px;align-items:center;display:inline-flex;width:16px;justify-content:center}"], changeDetection: 0 }); }
|
|
81
|
+
} }, styles: ["[_nghost-%COMP%]{display:flex}[_nghost-%COMP%] .icon-wrapper{position:relative;display:flex;justify-content:center;align-items:center;width:16px;height:16px;flex-shrink:0;font-size:var(--aui-icon-size-m)}:root [_nghost-%COMP%] .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}html[aui-theme-mode=light] [_nghost-%COMP%] .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] [_nghost-%COMP%] .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}}html[aui-theme-mode=dark] [_nghost-%COMP%] .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}[_nghost-%COMP%] .with-colon{display:inline-flex;word-break:keep-all;flex-shrink:0;font-weight:500}[_nghost-%COMP%] .with-colon:after{content:\":\";margin-right:8px}[_nghost-%COMP%] .text-truncate{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}[_nghost-%COMP%] .acl-resource-selector{user-select:none;display:flex;color:var(--acl-page-header-title-color);cursor:pointer;padding:0 8px}[_nghost-%COMP%] .acl-resource-selector .selected-name{color:var(--acl-page-header-text-color)}[_nghost-%COMP%] .acl-resource-selector--active, [_nghost-%COMP%] .acl-resource-selector:hover{background-color:rgb(var(--aui-color-primary));color:#fff;border-radius:2px}:root [_nghost-%COMP%] .acl-resource-selector--active .icon-wrapper, :root [_nghost-%COMP%] .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: rgb(var(--aui-color-p-4))}html[aui-theme-mode=light] [_nghost-%COMP%] .acl-resource-selector--active .icon-wrapper, html[aui-theme-mode=light] [_nghost-%COMP%] .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: rgb(var(--aui-color-p-4))}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] [_nghost-%COMP%] .acl-resource-selector--active .icon-wrapper, html[aui-theme-mode=system] [_nghost-%COMP%] .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: #b3d7fc}}html[aui-theme-mode=dark] [_nghost-%COMP%] .acl-resource-selector--active .icon-wrapper, html[aui-theme-mode=dark] [_nghost-%COMP%] .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: #b3d7fc}[_nghost-%COMP%] .acl-resource-selector--active .selected-name, [_nghost-%COMP%] .acl-resource-selector:hover .selected-name{color:#fff}[_nghost-%COMP%] .acl-resource-selector--lite{padding:0 4px}[_nghost-%COMP%] .acl-resource-selector--lite:hover{background-color:rgb(var(--aui-color-b-6))}[_nghost-%COMP%] .acl-resource-selector--lite:hover .selected-name, [_nghost-%COMP%] .acl-resource-selector--lite:hover .acl-resource-selector__arrow{color:rgb(var(--aui-color-n-2))}[_nghost-%COMP%] .acl-resource-selector--lite .acl-resource-selector__item{height:20px}[_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active:hover{background-color:rgb(var(--aui-color-b-5))}[_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active .selected-name, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active .acl-resource-selector__arrow, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active:hover .selected-name, [_nghost-%COMP%] .acl-resource-selector--lite.acl-resource-selector--active:hover .acl-resource-selector__arrow{color:rgb(var(--aui-color-primary))}[_nghost-%COMP%] .acl-resource-selector__item{margin-right:20px;height:32px;display:inline-flex;align-items:center;font-size:12px;max-width:270px}@media screen and (max-width: 1280px){[_nghost-%COMP%] .acl-resource-selector__item{max-width:178px;margin-right:8px}}[_nghost-%COMP%] .acl-resource-selector__item .icon-wrapper{margin-right:4px}[_nghost-%COMP%] .acl-resource-selector__arrow{margin-left:-16px;align-items:center;display:inline-flex;width:16px;justify-content:center}@media screen and (max-width: 1280px){[_nghost-%COMP%] .acl-resource-selector__arrow{margin-left:-4px}}"], changeDetection: 0 }); }
|
|
82
82
|
}
|
|
83
83
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ServiceMeshGroupSelectorComponent, [{
|
|
84
84
|
type: Component,
|
|
85
|
-
args: [{ selector: 'acl-servicemesh-selector', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"acl-resource-selector\"\n [ngClass]=\"{ 'acl-resource-selector--active': isActive }\"\n (click)=\"openPopup()\"\n>\n <div class=\"acl-resource-selector__item project\">\n <span class=\"icon-wrapper tw-flex\">\n <aui-icon icon=\"bicolor:service_mesh\"></aui-icon>\n </span>\n <span class=\"with-colon\">\n {{ 'service_meshes' | translate }}\n </span>\n <span class=\"selected-name text-truncate\">{{\n value | aclFieldNotAvailable\n }}</span>\n </div>\n <div class=\"acl-resource-selector__arrow\">\n <aui-icon icon=\"caret_down_s\"></aui-icon>\n </div>\n</div>\n\n<ng-template #popup>\n <acl-mesh-group-list\n [context]=\"'popup'\"\n [fields]=\"fields || displayFields\"\n (selectItem)=\"onSelect($event)\"\n [value]=\"value\"\n ></acl-mesh-group-list>\n</ng-template>\n", styles: [":host{display:flex}:host::ng-deep .icon-wrapper{position:relative;display:flex;justify-content:center;align-items:center;width:16px;height:16px;flex-shrink:0;font-size:var(--aui-icon-size-m)}:root :host::ng-deep .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}html[aui-theme-mode=light] :host::ng-deep .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] :host::ng-deep .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}}html[aui-theme-mode=dark] :host::ng-deep .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}:host::ng-deep .with-colon{display:inline-flex;word-break:keep-all;flex-shrink:0;font-weight:500}:host::ng-deep .with-colon:after{content:\":\";margin-right:8px}:host::ng-deep .text-truncate{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}:host::ng-deep .acl-resource-selector{user-select:none;display:flex;color:var(--acl-page-header-title-color);cursor:pointer;padding:0 8px}:host::ng-deep .acl-resource-selector .selected-name{color:var(--acl-page-header-text-color)}:host::ng-deep .acl-resource-selector--active,:host::ng-deep .acl-resource-selector:hover{background-color:rgb(var(--aui-color-primary));color:#fff;border-radius:2px}:root :host::ng-deep .acl-resource-selector--active .icon-wrapper,:root :host::ng-deep .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: rgb(var(--aui-color-p-4))}html[aui-theme-mode=light] :host::ng-deep .acl-resource-selector--active .icon-wrapper,html[aui-theme-mode=light] :host::ng-deep .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: rgb(var(--aui-color-p-4))}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] :host::ng-deep .acl-resource-selector--active .icon-wrapper,html[aui-theme-mode=system] :host::ng-deep .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: #b3d7fc}}html[aui-theme-mode=dark] :host::ng-deep .acl-resource-selector--active .icon-wrapper,html[aui-theme-mode=dark] :host::ng-deep .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: #b3d7fc}:host::ng-deep .acl-resource-selector--active .selected-name,:host::ng-deep .acl-resource-selector:hover .selected-name{color:#fff}:host::ng-deep .acl-resource-selector--lite{padding:0 4px}:host::ng-deep .acl-resource-selector--lite:hover{background-color:rgb(var(--aui-color-b-6))}:host::ng-deep .acl-resource-selector--lite:hover .selected-name,:host::ng-deep .acl-resource-selector--lite:hover .acl-resource-selector__arrow{color:rgb(var(--aui-color-n-2))}:host::ng-deep .acl-resource-selector--lite .acl-resource-selector__item{height:20px}:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active:hover{background-color:rgb(var(--aui-color-b-5))}:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active .selected-name,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active .acl-resource-selector__arrow,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active:hover .selected-name,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active:hover .acl-resource-selector__arrow{color:rgb(var(--aui-color-primary))}:host::ng-deep .acl-resource-selector__item{margin-right:20px;height:32px;display:inline-flex;align-items:center;font-size:12px;max-width:270px}@media screen and (max-width: 1280px){:host::ng-deep .acl-resource-selector__item{max-width:178px;margin-right:8px}}:host::ng-deep .acl-resource-selector__item .icon-wrapper{margin-right:4px}:host::ng-deep .acl-resource-selector__arrow{margin-left:-16px;align-items:center;display:inline-flex;width:16px;justify-content:center}\n"] }]
|
|
85
|
+
args: [{ selector: 'acl-servicemesh-selector', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"acl-resource-selector\"\n [ngClass]=\"{ 'acl-resource-selector--active': isActive }\"\n (click)=\"openPopup()\"\n>\n <div class=\"acl-resource-selector__item project\">\n <span class=\"icon-wrapper tw-flex\">\n <aui-icon icon=\"bicolor:service_mesh\"></aui-icon>\n </span>\n <span class=\"with-colon\">\n {{ 'service_meshes' | translate }}\n </span>\n <span class=\"selected-name text-truncate\">{{\n value | aclFieldNotAvailable\n }}</span>\n </div>\n <div class=\"acl-resource-selector__arrow\">\n <aui-icon icon=\"caret_down_s\"></aui-icon>\n </div>\n</div>\n\n<ng-template #popup>\n <acl-mesh-group-list\n [context]=\"'popup'\"\n [fields]=\"fields || displayFields\"\n (selectItem)=\"onSelect($event)\"\n [value]=\"value\"\n ></acl-mesh-group-list>\n</ng-template>\n", styles: [":host{display:flex}:host::ng-deep .icon-wrapper{position:relative;display:flex;justify-content:center;align-items:center;width:16px;height:16px;flex-shrink:0;font-size:var(--aui-icon-size-m)}:root :host::ng-deep .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}html[aui-theme-mode=light] :host::ng-deep .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] :host::ng-deep .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}}html[aui-theme-mode=dark] :host::ng-deep .icon-wrapper{--bicolor-main: rgb(var(--aui-color-primary));--bicolor-secondary: rgb(var(--aui-color-p-3))}:host::ng-deep .with-colon{display:inline-flex;word-break:keep-all;flex-shrink:0;font-weight:500}:host::ng-deep .with-colon:after{content:\":\";margin-right:8px}:host::ng-deep .text-truncate{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}:host::ng-deep .acl-resource-selector{user-select:none;display:flex;color:var(--acl-page-header-title-color);cursor:pointer;padding:0 8px}:host::ng-deep .acl-resource-selector .selected-name{color:var(--acl-page-header-text-color)}:host::ng-deep .acl-resource-selector--active,:host::ng-deep .acl-resource-selector:hover{background-color:rgb(var(--aui-color-primary));color:#fff;border-radius:2px}:root :host::ng-deep .acl-resource-selector--active .icon-wrapper,:root :host::ng-deep .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: rgb(var(--aui-color-p-4))}html[aui-theme-mode=light] :host::ng-deep .acl-resource-selector--active .icon-wrapper,html[aui-theme-mode=light] :host::ng-deep .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: rgb(var(--aui-color-p-4))}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] :host::ng-deep .acl-resource-selector--active .icon-wrapper,html[aui-theme-mode=system] :host::ng-deep .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: #b3d7fc}}html[aui-theme-mode=dark] :host::ng-deep .acl-resource-selector--active .icon-wrapper,html[aui-theme-mode=dark] :host::ng-deep .acl-resource-selector:hover .icon-wrapper{--bicolor-main: white;--bicolor-secondary: #b3d7fc}:host::ng-deep .acl-resource-selector--active .selected-name,:host::ng-deep .acl-resource-selector:hover .selected-name{color:#fff}:host::ng-deep .acl-resource-selector--lite{padding:0 4px}:host::ng-deep .acl-resource-selector--lite:hover{background-color:rgb(var(--aui-color-b-6))}:host::ng-deep .acl-resource-selector--lite:hover .selected-name,:host::ng-deep .acl-resource-selector--lite:hover .acl-resource-selector__arrow{color:rgb(var(--aui-color-n-2))}:host::ng-deep .acl-resource-selector--lite .acl-resource-selector__item{height:20px}:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active:hover{background-color:rgb(var(--aui-color-b-5))}:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active .selected-name,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active .acl-resource-selector__arrow,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active:hover .selected-name,:host::ng-deep .acl-resource-selector--lite.acl-resource-selector--active:hover .acl-resource-selector__arrow{color:rgb(var(--aui-color-primary))}:host::ng-deep .acl-resource-selector__item{margin-right:20px;height:32px;display:inline-flex;align-items:center;font-size:12px;max-width:270px}@media screen and (max-width: 1280px){:host::ng-deep .acl-resource-selector__item{max-width:178px;margin-right:8px}}:host::ng-deep .acl-resource-selector__item .icon-wrapper{margin-right:4px}:host::ng-deep .acl-resource-selector__arrow{margin-left:-16px;align-items:center;display:inline-flex;width:16px;justify-content:center}@media screen and (max-width: 1280px){:host::ng-deep .acl-resource-selector__arrow{margin-left:-4px}}\n"] }]
|
|
86
86
|
}], function () { return [{ type: i1.ResourceSelectorPopupService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, { popupTemplate: [{
|
|
87
87
|
type: ViewChild,
|
|
88
88
|
args: ['popup', { static: true }]
|