@pepperi-addons/ngx-lib 0.4.2-beta.322 → 0.4.2-beta.323
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/core/common/services/addon.service.d.ts +3 -0
- package/esm2020/core/common/services/addon.service.mjs +58 -13
- package/esm2020/group-buttons/group-buttons.component.mjs +19 -6
- package/esm2020/list/list.component.mjs +23 -6
- package/esm2020/remote-loader/remote-loader-element.component.mjs +57 -1
- package/fesm2015/pepperi-addons-ngx-lib-group-buttons.mjs +18 -5
- package/fesm2015/pepperi-addons-ngx-lib-group-buttons.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-list.mjs +23 -5
- package/fesm2015/pepperi-addons-ngx-lib-list.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib-remote-loader.mjs +61 -5
- package/fesm2015/pepperi-addons-ngx-lib-remote-loader.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-lib.mjs +58 -12
- package/fesm2015/pepperi-addons-ngx-lib.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-group-buttons.mjs +18 -5
- package/fesm2020/pepperi-addons-ngx-lib-group-buttons.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-list.mjs +22 -5
- package/fesm2020/pepperi-addons-ngx-lib-list.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib-remote-loader.mjs +56 -1
- package/fesm2020/pepperi-addons-ngx-lib-remote-loader.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-lib.mjs +57 -12
- package/fesm2020/pepperi-addons-ngx-lib.mjs.map +1 -1
- package/group-buttons/group-buttons.component.d.ts +4 -2
- package/list/list.component.d.ts +5 -0
- package/package.json +1 -1
- package/remote-loader/remote-loader-element.component.d.ts +1 -0
|
@@ -45,6 +45,9 @@ export declare class PepAddonService {
|
|
|
45
45
|
}): void;
|
|
46
46
|
defineCustomElement(elementName: string, component: Type<any>, injector: Injector): void;
|
|
47
47
|
connectInternalRouter(elementName: string): void;
|
|
48
|
+
disconnectInternalRouter(elementName: string): void;
|
|
49
|
+
private static _routerConnections;
|
|
50
|
+
static stripBaseHref(path: string): string;
|
|
48
51
|
private connectRouter;
|
|
49
52
|
static createMultiTranslateLoader(addonUUID: string, addonService: PepAddonService, libsName?: string[]): import("ngx-translate-multi-http-loader").MultiTranslateHttpLoader;
|
|
50
53
|
static ɵfac: i0.ɵɵFactoryDeclaration<PepAddonService, [null, null, null, null, null, { optional: true; }, { optional: true; }]>;
|
|
@@ -165,7 +165,11 @@ export class PepAddonService {
|
|
|
165
165
|
PepAddonService._customElementsMap.set(elementName, { injector: injector });
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
|
-
// Fix internal routing bug.
|
|
168
|
+
// Fix internal routing bug. Callable repeatedly (once at mount, then again whenever the
|
|
169
|
+
// shell's own route changes while the same addon element instance stays mounted — e.g. a
|
|
170
|
+
// settings_block child segment change) — see PepRemoteLoaderElementComponent's route
|
|
171
|
+
// subscription, since without a repeat call the addon's own internal router is only ever
|
|
172
|
+
// told the location once, at initial mount.
|
|
169
173
|
connectInternalRouter(elementName) {
|
|
170
174
|
const customElementObject = PepAddonService._customElementsMap.get(elementName);
|
|
171
175
|
let router = customElementObject?.injector.get(Router);
|
|
@@ -176,24 +180,60 @@ export class PepAddonService {
|
|
|
176
180
|
}
|
|
177
181
|
if (router) {
|
|
178
182
|
const useHash = location.href.includes('#');
|
|
179
|
-
this.connectRouter(router, useHash);
|
|
183
|
+
this.connectRouter(elementName, router, useHash);
|
|
180
184
|
}
|
|
181
185
|
}
|
|
182
|
-
connectRouter(
|
|
183
|
-
|
|
186
|
+
// Removes the popstate/hashchange listener connectRouter() registered for this element —
|
|
187
|
+
// call from the hosting component's ngOnDestroy so a destroyed addon instance doesn't keep
|
|
188
|
+
// reacting to browser navigation.
|
|
189
|
+
disconnectInternalRouter(elementName) {
|
|
190
|
+
const existing = PepAddonService._routerConnections.get(elementName);
|
|
191
|
+
if (!existing)
|
|
192
|
+
return;
|
|
193
|
+
window.removeEventListener(existing.eventName, existing.listener);
|
|
194
|
+
PepAddonService._routerConnections.delete(elementName);
|
|
195
|
+
}
|
|
196
|
+
// Strips this app's own base href prefix (e.g. dev-only /angular — see angular.json's
|
|
197
|
+
// baseHref/servePath) from a path, so it can be handed to code that expects a path
|
|
198
|
+
// relative to real root — an addon's own internal router (connectRouter below), or a
|
|
199
|
+
// remote's one-time bootstrap-time location read (see PepRemoteLoaderElementComponent).
|
|
200
|
+
static stripBaseHref(path) {
|
|
201
|
+
const basePath = document.querySelector('base')?.getAttribute('href') || '/';
|
|
202
|
+
if (basePath === '/')
|
|
203
|
+
return path;
|
|
204
|
+
const normalizedBase = basePath.endsWith('/') ? basePath.slice(0, -1) : basePath;
|
|
205
|
+
const prefixRe = new RegExp(`^${normalizedBase}(?=/|$)`);
|
|
206
|
+
return prefixRe.test(path) ? (path.replace(prefixRe, '') || '/') : path;
|
|
207
|
+
}
|
|
208
|
+
connectRouter(elementName, router, useHash = false) {
|
|
209
|
+
// This app may be served under its own base href (e.g. dev-only /angular — see
|
|
210
|
+
// angular.json's baseHref/servePath) — strip it before handing the path to the addon's
|
|
211
|
+
// OWN internal router, which expects a path relative to ITS OWN root, not this shell's.
|
|
212
|
+
const stripBase = PepAddonService.stripBaseHref;
|
|
213
|
+
const existing = PepAddonService._routerConnections.get(elementName);
|
|
184
214
|
if (!useHash) {
|
|
185
|
-
url = `${location.pathname.
|
|
215
|
+
const url = `${stripBase(location.pathname).replace(/^\//, '')}${location.search}`;
|
|
186
216
|
router.navigateByUrl(url);
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
}
|
|
217
|
+
if (existing) {
|
|
218
|
+
existing.url = url;
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
const connection = { url, eventName: 'popstate', listener: () => router.navigateByUrl(connection.url) };
|
|
222
|
+
window.addEventListener('popstate', connection.listener);
|
|
223
|
+
PepAddonService._routerConnections.set(elementName, connection);
|
|
224
|
+
}
|
|
190
225
|
}
|
|
191
226
|
else {
|
|
192
|
-
url = `${location.hash.
|
|
227
|
+
const url = `${stripBase(location.hash.replace(/^#/, '')).replace(/^\//, '')}${location.search}`;
|
|
193
228
|
router.navigateByUrl(url);
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
}
|
|
229
|
+
if (existing) {
|
|
230
|
+
existing.url = url;
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
const connection = { url, eventName: 'hashchange', listener: () => router.navigateByUrl(connection.url) };
|
|
234
|
+
window.addEventListener('hashchange', connection.listener);
|
|
235
|
+
PepAddonService._routerConnections.set(elementName, connection);
|
|
236
|
+
}
|
|
197
237
|
}
|
|
198
238
|
}
|
|
199
239
|
static createMultiTranslateLoader(addonUUID, addonService, libsName = ['ngx-lib']) {
|
|
@@ -212,6 +252,11 @@ export class PepAddonService {
|
|
|
212
252
|
}
|
|
213
253
|
}
|
|
214
254
|
PepAddonService._customElementsMap = new Map();
|
|
255
|
+
// Tracks, per addon element, the popstate/hashchange listener already registered by a
|
|
256
|
+
// previous connectRouter() call (and the mutable "current url" it reads), so a repeat call
|
|
257
|
+
// updates that same listener's target instead of piling up a new, independently-stale one on
|
|
258
|
+
// every navigation.
|
|
259
|
+
PepAddonService._routerConnections = new Map();
|
|
215
260
|
PepAddonService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepAddonService, deps: [{ token: i1.PepSessionService }, { token: i2.PepHttpService }, { token: i3.PepLoaderService }, { token: i4.PepTranslateService }, { token: i5.PepFileService }, { token: i6.Router, optional: true }, { token: i6.ActivatedRoute, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
216
261
|
PepAddonService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepAddonService, providedIn: 'root' });
|
|
217
262
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepAddonService, decorators: [{
|
|
@@ -224,4 +269,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
|
224
269
|
}] }, { type: i6.ActivatedRoute, decorators: [{
|
|
225
270
|
type: Optional
|
|
226
271
|
}] }]; } });
|
|
227
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvc3JjL2NvcmUvY29tbW9uL3NlcnZpY2VzL2FkZG9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBWSxRQUFRLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEQsT0FBTyxFQUFrQixNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7QUFZekQ7O0VBRUU7QUFJRixNQUFNLE9BQU8sZUFBZTtJQWF4QixZQUNZLGNBQWlDLEVBQ2pDLFdBQTJCLEVBQzNCLGFBQStCLEVBQ2hDLGdCQUFxQyxFQUNyQyxXQUEyQixFQUNkLE1BQWMsRUFDZCxLQUFxQjtRQU5qQyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQzNCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXFCO1FBQ3JDLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUNkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQW5CNUIscUJBQWdCLEdBQUcsc0NBQXNDLENBQUM7UUFDM0UsOERBQThEO1FBQzdDLHNDQUFpQyxHQUFHLDRCQUE0QixDQUFDO1FBQ2pFLDRCQUF1QixHQUFHLGFBQWEsQ0FBQztRQUN4QyxrQ0FBNkIsR0FBRyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsUUFBUSxDQUFDO1FBaUJyRixFQUFFO0lBQ04sQ0FBQztJQWRELElBQVcsU0FBUztRQUNoQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxH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QywwQkFBMEIsQ0FDcEMsU0FBaUIsRUFDakIsWUFBNkIsRUFDN0IsUUFBUSxHQUFHLENBQUMsU0FBUyxDQUFDO1FBRXRCLE1BQU0sMEJBQTBCLEdBQUcsRUFBRSxDQUFDO1FBRXRDLElBQUksUUFBUSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdEIsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQ2xELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDaEMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyw0QkFBNEIsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQzthQUNsRztTQUNKO1FBRUQsTUFBTSx3QkFBd0IsR0FBRyxZQUFZLENBQUMsMkJBQTJCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFckYsT0FBTyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLENBQUM7WUFDNUQsR0FBRywwQkFBMEI7WUFDN0Isd0JBQXdCO1NBQzNCLENBQUMsQ0FBQztJQUNQLENBQUM7O0FBN1BjLGtDQUFrQixHQUFxQixJQUFJLEdBQUcsRUFBRyxDQUFBOzRHQVB2RCxlQUFlO2dIQUFmLGVBQWUsY0FGWixNQUFNOzJGQUVULGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFvQlEsUUFBUTs7MEJBQ1IsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBPcHRpb25hbCwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY3JlYXRlQ3VzdG9tRWxlbWVudCB9IGZyb20gJ0Bhbmd1bGFyL2VsZW1lbnRzJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUGVwU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL3Nlc3Npb24uc2VydmljZSc7XG5pbXBvcnQgeyBQZXBGaWxlU2VydmljZSB9IGZyb20gJy4vZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBlcEh0dHBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaHR0cC9zZXJ2aWNlcy9odHRwLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGVwTG9hZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2h0dHAvc2VydmljZXMvbG9hZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IElUcmFuc2xhdGlvblJlc291cmNlIH0gZnJvbSAnbmd4LXRyYW5zbGF0ZS1tdWx0aS1odHRwLWxvYWRlcic7XG5pbXBvcnQgeyBQZXBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBjb25uZWN0Um91dGVyIH0gZnJvbSAnQGFuZ3VsYXItYXJjaGl0ZWN0cy9tb2R1bGUtZmVkZXJhdGlvbi10b29scyc7XG5cbi8qXG4gICAgVGhpcyBzZXJ2aWNlIGlzIHRoZSB3ZWJhcHAgYXBpIGZvciBhZGRvbiB1c2VnZS5cbiovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBQZXBBZGRvblNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgUEFHRVNfQURET05fVVVJRCA9ICc1MDA2MmUwYy05OTY3LTRlZDQtOTEwMi1mMmJjNTA2MDJkNDEnO1xuICAgIC8vIHByaXZhdGUgcmVhZG9ubHkgQURET05fQVNTRVRTX1BBVEhfS0VZID0gJ0FkZG9uQXNzZXRzUGF0aCc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBBRERPTlNfRElDVElPTkFSWV9BU1NFVFNfUEFUSF9LRVkgPSAnQWRkb25zRGljdGlvbmFyeUFzc2V0c1BhdGgnO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgQURET05fQVBJX1JFTEFUSVZFX1BBVEggPSAnL2FkZG9ucy9hcGknO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgQURET05fQVBJX0FTWU5DX1JFTEFUSVZFX1BBVEggPSBgJHt0aGlzLkFERE9OX0FQSV9SRUxBVElWRV9QQVRIfS9hc3luY2A7XG5cbiAgICBwcml2YXRlIHN0YXRpYyBfY3VzdG9tRWxlbWVudHNNYXA6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwKCk7XG5cbiAgICBwdWJsaWMgZ2V0IGRldlNlcnZlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGUgPyB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCdkZXZTZXJ2ZXInKSA9PT0gJ3RydWUnIDogZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgc2Vzc2lvblNlcnZpY2U6IFBlcFNlc3Npb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGh0dHBTZXJ2aWNlOiBQZXBIdHRwU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBsb2FkZXJTZXJ2aWNlOiBQZXBMb2FkZXJTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgdHJhbnNsYXRlU2VydmljZTogUGVwVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHVibGljIGZpbGVTZXJ2aWNlOiBQZXBGaWxlU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgKSB7XG4gICAgICAgIC8vXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRBZGRvbkJhc2VSZWxhdGl2ZVBhdGgoaXNBc3luYyA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGlzQXN5bmNcbiAgICAgICAgICAgID8gdGhpcy5BRERPTl9BUElfQVNZTkNfUkVMQVRJVkVfUEFUSFxuICAgICAgICAgICAgOiB0aGlzLkFERE9OX0FQSV9SRUxBVElWRV9QQVRIO1xuICAgIH1cblxuICAgIGdldEFkZG9uU3RhdGljRm9sZGVyKGFkZG9uVVVJRDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgLy8gaWYgKGFkZG9uVVVJRC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBhZGRvbnNEaWN0aW9uYXJ5ID0gdGhpcy5zZXNzaW9uU2VydmljZS5nZXRPYmplY3QodGhpcy5BRERPTlNfRElDVElPTkFSWV9BU1NFVFNfUEFUSF9LRVkpO1xuICAgICAgICAgICAgcmV0dXJuIGFkZG9uc0RpY3Rpb25hcnkgJiYgYWRkb25zRGljdGlvbmFyeVthZGRvblVVSURdID8gYWRkb25zRGljdGlvbmFyeVthZGRvblVVSURdIDogJyc7XG4gICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyByZXR1cm4gdGhpcy5zZXNzaW9uU2VydmljZS5nZXRPYmplY3QodGhpcy5BRERPTl9BU1NFVFNfUEFUSF9LRVkpIHx8ICcnO1xuICAgICAgICAvLyB9XG4gICAgfVxuXG4gICAgc2V0QWRkb25TdGF0aWNGb2xkZXIocGF0aDogc3RyaW5nLCBhZGRvblVVSUQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICAvLyBpZiAoYWRkb25VVUlELmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGFkZG9uc0RpY3Rpb25hcnkgPSB0aGlzLnNlc3Npb25TZXJ2aWNlLmdldE9iamVjdCh0aGlzLkFERE9OU19ESUNUSU9OQVJZX0FTU0VUU19QQVRIX0tFWSkgPz8ge307XG4gICAgICAgICAgICBhZGRvbnNEaWN0aW9uYXJ5W2FkZG9uVVVJRF0gPSBwYXRoO1xuICAgICAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZS5zZXRPYmplY3QodGhpcy5BRERPTlNfRElDVElPTkFSWV9BU1NFVFNfUEFUSF9LRVksIGFkZG9uc0RpY3Rpb25hcnkpO1xuICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgcmV0dXJuIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2V0T2JqZWN0KHRoaXMuQURET05fQVNTRVRTX1BBVEhfS0VZLCBwYXRoKTtcbiAgICAgICAgLy8gfVxuICAgIH1cblxuICAgIGdldFNlcnZlckJhc2VVcmwoYWRkb25VVUlEOiBzdHJpbmcsIGZpbGVOYW1lID0gJycsIGlzQXN5bmMgPSBmYWxzZSwgbG9jYWxob3N0UG9ydCA9IDQ1MDApOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBmaWxlVG9BZGQgPSBmaWxlTmFtZS5sZW5ndGggPiAwID8gYC8ke2ZpbGVOYW1lfWAgOiAnJztcbiAgICAgICAgXG4gICAgICAgIC8vIEZvciBkZXZTZXJ2ZXIgcnVuIHNlcnZlciBvbiBsb2NhbGhvc3QuXG4gICAgICAgIGlmKHRoaXMuZGV2U2VydmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtsb2NhbGhvc3RQb3J0fSR7ZmlsZVRvQWRkfWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBiYXNlVXJsID0gdGhpcy5zZXNzaW9uU2VydmljZS5nZXRQYXBpQmFzZVVybCgpO1xuICAgICAgICAgICAgcmV0dXJuIGAke2Jhc2VVcmx9JHt0aGlzLmdldEFkZG9uQmFzZVJlbGF0aXZlUGF0aChpc0FzeW5jKX0vJHthZGRvblVVSUR9JHtmaWxlVG9BZGR9YDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEFkZG9uQXBpQ2FsbChcbiAgICAgICAgYWRkb25VVUlEOiBzdHJpbmcsXG4gICAgICAgIGZpbGVOYW1lOiBzdHJpbmcsXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBodHRwT3B0aW9ucyA9IHt9LFxuICAgICAgICBpc0FzeW5jID0gZmFsc2VcbiAgICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICAvLyByZXR1cm4gdGhpcy5odHRwU2VydmljZS5nZXRQYXBpQXBpQ2FsbChcbiAgICAgICAgLy8gICAgIGAke3RoaXMuZ2V0QWRkb25CYXNlUmVsYXRpdmVQYXRoKFxuICAgICAgICAvLyAgICAgICAgIGlzQXN5bmNcbiAgICAgICAgLy8gICAgICl9LyR7YWRkb25VVUlEfS8ke2ZpbGVOYW1lfS8ke2Z1bmN0aW9uTmFtZX1gLFxuICAgICAgICAvLyAgICAgaHR0cE9wdGlvbnNcbiAgICAgICAgLy8gKTtcblxuICAgICAgICBjb25zdCBwYXBpQmFzZVVybCA9IHRoaXMuZ2V0U2VydmVyQmFzZVVybChhZGRvblVVSUQsIGZpbGVOYW1lLCBpc0FzeW5jKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuZ2V0SHR0cENhbGwoYCR7cGFwaUJhc2VVcmx9LyR7ZnVuY3Rpb25OYW1lfWAsIGh0dHBPcHRpb25zKTtcbiAgICB9XG5cbiAgICBwb3N0QWRkb25BcGlDYWxsKFxuICAgICAgICBhZGRvblVVSUQ6IHN0cmluZyxcbiAgICAgICAgZmlsZU5hbWU6IHN0cmluZyxcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGJvZHkgPSB7fSxcbiAgICAgICAgaHR0cE9wdGlvbnMgPSB7fSxcbiAgICAgICAgaXNBc3luYyA9IGZhbHNlXG4gICAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgLy8gcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UucG9zdFBhcGlBcGlDYWxsKFxuICAgICAgICAvLyAgICAgYCR7dGhpcy5nZXRBZGRvbkJhc2VSZWxhdGl2ZVBhdGgoXG4gICAgICAgIC8vICAgICAgICAgaXNBc3luY1xuICAgICAgICAvLyAgICAgKX0vJHthZGRvblVVSUR9LyR7ZmlsZU5hbWV9LyR7ZnVuY3Rpb25OYW1lfWAsXG4gICAgICAgIC8vICAgICBib2R5LFxuICAgICAgICAvLyAgICAgaHR0cE9wdGlvbnNcbiAgICAgICAgLy8gKTtcblxuICAgICAgICBjb25zdCBwYXBpQmFzZVVybCA9IHRoaXMuZ2V0U2VydmVyQmFzZVVybChhZGRvblVVSUQsIGZpbGVOYW1lLCBpc0FzeW5jKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UucG9zdEh0dHBDYWxsKGAke3BhcGlCYXNlVXJsfS8ke2Z1bmN0aW9uTmFtZX1gLCBib2R5LCBodHRwT3B0aW9ucyk7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0QWRkb25DUElDYWxsKFxuICAgICAgICBhZGRvblVVSUQ6IHN0cmluZyxcbiAgICAgICAgdXJsOiBzdHJpbmdcbiAgICApIHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5lbWl0RXZlbnQoXCJBZGRvbkFQSVwiLCB7XG4gICAgICAgICAgICBBZGRvblVVSUQ6IGFkZG9uVVVJRCxcbiAgICAgICAgICAgIFJlbGF0aXZlVVJMOiB1cmwsXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKHJlcy5TdWNjZXNzKSB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShyZXMuVmFsdWUpXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IocmVzLlZhbHVlKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgcG9zdEFkZG9uQ1BJQ2FsbChcbiAgICAgICAgYWRkb25VVUlEOiBzdHJpbmcsXG4gICAgICAgIHVybDogc3RyaW5nLFxuICAgICAgICBib2R5OiBhbnlcbiAgICApIHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5lbWl0RXZlbnQoXCJBZGRvbkFQSVwiLCB7XG4gICAgICAgICAgICBBZGRvblVVSUQ6IGFkZG9uVVVJRCxcbiAgICAgICAgICAgIFJlbGF0aXZlVVJMOiB1cmwsXG4gICAgICAgICAgICBNZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgIEJvZHk6IGJvZHlcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAocmVzLlN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKHJlcy5WYWx1ZSlcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihyZXMuVmFsdWUpXG4gICAgICAgIH1cbiAgICB9ICAgXG5cbiAgICBlbWl0RXZlbnQoZXZlbnRLZXk6IHN0cmluZywgZXZlbnREYXRhOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2VtaXQtZXZlbnQnLCB7XG4gICAgICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50S2V5LFxuICAgICAgICAgICAgICAgICAgICBldmVudERhdGE6IGV2ZW50RGF0YSxcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbjogcmVzb2x2ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIC8vIFRPRE86IG5lZWQgdG8gY2hlayB0aGlzIGlmIHRoZSBsb2FkZXIgaXMgd29ya2luZy5cbiAgICBmZXRjaChpbnB1dDogUmVxdWVzdEluZm8sIGluaXQ/OiBSZXF1ZXN0SW5pdCk6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICAgICAgdGhpcy5sb2FkZXJTZXJ2aWNlLnNob3coKTtcblxuICAgICAgICByZXR1cm4gd2luZG93LmZldGNoKGlucHV0LCBpbml0KS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGVyU2VydmljZS5oaWRlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldE5neExpYlRyYW5zbGF0aW9uUmVzb3VyY2UoYWRkb25VVUlEOiBzdHJpbmcsIGxpYk5hbWUgPSAnbmd4LWxpYicpOiBJVHJhbnNsYXRpb25SZXNvdXJjZSB7XG4gICAgICAgIGNvbnN0IGFkZG9uU3RhdGljRm9sZGVyID0gdGhpcy5nZXRBZGRvblN0YXRpY0ZvbGRlcihhZGRvblVVSUQpO1xuICAgICAgICBjb25zdCB0cmFuc2xhdGlvbnNQYXRoOiBzdHJpbmcgPSB0aGlzLmZpbGVTZXJ2aWNlLmdldEFzc2V0c1RyYW5zbGF0aW9uc1BhdGgoYWRkb25TdGF0aWNGb2xkZXIsIGxpYk5hbWUpO1xuICAgICAgICBjb25zdCB0cmFuc2xhdGlvbnNTdWZmaXg6IHN0cmluZyA9IHRoaXMuZmlsZVNlcnZpY2UuZ2V0QXNzZXRzVHJhbnNsYXRpb25zU3VmZml4KGxpYk5hbWUpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmVmaXg6IHRyYW5zbGF0aW9uc1BhdGgsXG4gICAgICAgICAgICBzdWZmaXg6IHRyYW5zbGF0aW9uc1N1ZmZpeCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBnZXRBZGRvblRyYW5zbGF0aW9uUmVzb3VyY2UoYWRkb25VVUlEOiBzdHJpbmcpOiBJVHJhbnNsYXRpb25SZXNvdXJjZSB7XG4gICAgICAgIGNvbnN0IGFkZG9uU3RhdGljRm9sZGVyID0gdGhpcy5nZXRBZGRvblN0YXRpY0ZvbGRlcihhZGRvblVVSUQpO1xuICAgICAgICBjb25zdCBkZWZhdWx0U3ViRm9sZGVyID0gJ2Fzc2V0cy9pMThuLyc7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZWZpeDogYWRkb25TdGF0aWNGb2xkZXIubGVuZ3RoID4gMCA/IGAke2FkZG9uU3RhdGljRm9sZGVyfSR7ZGVmYXVsdFN1YkZvbGRlcn1gIDogYC8ke2RlZmF1bHRTdWJGb2xkZXJ9YCxcbiAgICAgICAgICAgIHN1ZmZpeDogJy5qc29uJyxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBzZXREZWZhdWx0VHJhbnNsYXRlTGFuZyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIHVybExhbmdQYXJhbSA9ICd1c2VyTGFuZycpIHtcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnNldERlZmF1bHRUcmFuc2xhdGVMYW5nKHRyYW5zbGF0ZSwgdXJsTGFuZ1BhcmFtKTtcbiAgICB9XG5cbiAgICBnZXRQYWdlc0FkZG9uVVVJRCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuUEFHRVNfQURET05fVVVJRDtcbiAgICB9XG5cbiAgICBzZXRTaGVsbFJvdXRlckRhdGEoZGF0YTogeyBhZGRQYWRkaW5nPzogYm9vbGVhbiwgc2hvd1NpZGViYXI/OiBib29sZWFuLCBzaG93SGVhZGVyPzogYm9vbGVhbiB9KSB7XG4gICAgICAgIGNvbnN0IGV2ZW50RGF0YSA9IHtcbiAgICAgICAgICAgIGRldGFpbDogZGF0YSxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBjdXN0b21FdmVudCA9IG5ldyBDdXN0b21FdmVudCgnc2V0LXJvdXRlci1kYXRhJywgZXZlbnREYXRhKTtcbiAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpO1xuICAgIH1cblxuICAgIGRlZmluZUN1c3RvbUVsZW1lbnQoZWxlbWVudE5hbWU6IHN0cmluZywgY29tcG9uZW50OiBUeXBlPGFueT4sIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICBpZiAoIWN1c3RvbUVsZW1lbnRzLmdldChlbGVtZW50TmFtZSkpIHsgIFxuICAgICAgICAgICAgY3VzdG9tRWxlbWVudHMuZGVmaW5lKGVsZW1lbnROYW1lLCBjcmVhdGVDdXN0b21FbGVtZW50KGNvbXBvbmVudCwge2luamVjdG9yOiBpbmplY3Rvcn0pKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gU2V0IHRoZSBlbGVtZW50TmFtZSBpbiB0aGUgX2N1c3RvbUVsZW1lbnRzTWFwIChGaXggaW50ZXJuYWwgcm91dGluZyBidWcpLlxuICAgICAgICAgICAgUGVwQWRkb25TZXJ2aWNlLl9jdXN0b21FbGVtZW50c01hcC5zZXQoZWxlbWVudE5hbWUsIHtpbmplY3RvcjogaW5qZWN0b3J9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZpeCBpbnRlcm5hbCByb3V0aW5nIGJ1Zy5cbiAgICBjb25uZWN0SW50ZXJuYWxSb3V0ZXIoZWxlbWVudE5hbWU6IHN0cmluZykge1xuICAgICAgICBjb25zdCBjdXN0b21FbGVtZW50T2JqZWN0ID0gUGVwQWRkb25TZXJ2aWNlLl9jdXN0b21FbGVtZW50c01hcC5nZXQoZWxlbWVudE5hbWUpO1xuICAgICAgICBsZXQgcm91dGVyID0gY3VzdG9tRWxlbWVudE9iamVjdD8uaW5qZWN0b3IuZ2V0KFJvdXRlcik7XG5cbiAgICAgICAgLy8gVGhpcyBjYXVzZSBhIHJlZnJlc2ggKGV2ZXJpdGhpbmcgaXMgbG9hZGluZyB0d2ljZSkgd2hlbiByZWxvYWRpbmcgdGhlIHBhZ2UuLi5cbiAgICAgICAgLy8gQnV0IGlmIHdlIHJlbW92ZSB0aGlzIHRoZSBmaXJzdCBuYXZpZ2F0aW9uIGlzIGNsZWFyIGFsbCBoaXN0b3J5IGNhdXNlIHRoZSByb3V0ZXIgaXMgbm90IGNvbm5lY3RlZC5cbiAgICAgICAgaWYgKCFyb3V0ZXIpIHtcbiAgICAgICAgICAgIHJvdXRlciA9IHRoaXMucm91dGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJvdXRlcikge1xuICAgICAgICAgICAgY29uc3QgdXNlSGFzaCA9IGxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJyMnKTtcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdFJvdXRlcihyb3V0ZXIsIHVzZUhhc2gpO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIHByaXZhdGUgY29ubmVjdFJvdXRlcihyb3V0ZXIsIHVzZUhhc2ggPSBmYWxzZSkge1xuICAgICAgICBsZXQgdXJsO1xuICAgICAgICBpZiAoIXVzZUhhc2gpIHtcbiAgICAgICAgICAgIHVybCA9IGAke2xvY2F0aW9uLnBhdGhuYW1lLnN1YnN0cigxKX0ke2xvY2F0aW9uLnNlYXJjaH1gO1xuICAgICAgICAgICAgcm91dGVyLm5hdmlnYXRlQnlVcmwodXJsKTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwb3BzdGF0ZScsICgpID0+IHtcbiAgICAgICAgICAgICAgICByb3V0ZXIubmF2aWdhdGVCeVVybCh1cmwpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB1cmwgPSBgJHtsb2NhdGlvbi5oYXNoLnN1YnN0cigxKX0ke2xvY2F0aW9uLnNlYXJjaH1gO1xuICAgICAgICAgICAgcm91dGVyLm5hdmlnYXRlQnlVcmwodXJsKTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdoYXNoY2hhbmdlJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlTXVsdGlUcmFuc2xhdGVMb2FkZXIoXG4gICAgICAgIGFkZG9uVVVJRDogc3RyaW5nLFxuICAgICAgICBhZGRvblNlcnZpY2U6IFBlcEFkZG9uU2VydmljZSxcbiAgICAgICAgbGlic05hbWUgPSBbJ25neC1saWInXSxcbiAgICApIHtcbiAgICAgICAgY29uc3Qgbmd4TGliVHJhbnNsYXRpb25SZXNvdXJjZXMgPSBbXTtcblxuICAgICAgICBpZiAobGlic05hbWU/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsaWJzTmFtZS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsaWJOYW1lID0gbGlic05hbWVbaW5kZXhdO1xuICAgICAgICAgICAgICAgIG5neExpYlRyYW5zbGF0aW9uUmVzb3VyY2VzLnB1c2goYWRkb25TZXJ2aWNlLmdldE5neExpYlRyYW5zbGF0aW9uUmVzb3VyY2UoYWRkb25VVUlELCBsaWJOYW1lKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhZGRvblRyYW5zbGF0aW9uUmVzb3VyY2UgPSBhZGRvblNlcnZpY2UuZ2V0QWRkb25UcmFuc2xhdGlvblJlc291cmNlKGFkZG9uVVVJRCk7XG5cbiAgICAgICAgcmV0dXJuIGFkZG9uU2VydmljZS50cmFuc2xhdGVTZXJ2aWNlLmNyZWF0ZU11bHRpVHJhbnNsYXRlTG9hZGVyKFtcbiAgICAgICAgICAgIC4uLm5neExpYlRyYW5zbGF0aW9uUmVzb3VyY2VzLFxuICAgICAgICAgICAgYWRkb25UcmFuc2xhdGlvblJlc291cmNlXG4gICAgICAgIF0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
272
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvc3JjL2NvcmUvY29tbW9uL3NlcnZpY2VzL2FkZG9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBWSxRQUFRLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEQsT0FBTyxFQUFrQixNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7QUFZekQ7O0VBRUU7QUFJRixNQUFNLE9BQU8sZUFBZTtJQWF4QixZQUNZLGNBQWlDLEVBQ2pDLFdBQTJCLEVBQzNCLGFBQStCLEVBQ2hDLGdCQUFxQyxFQUNyQyxXQUEyQixFQUNkLE1BQWMsRUFDZCxLQUFxQjtRQU5qQyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQzNCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXFCO1FBQ3JDLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUNkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQW5CNUIscUJBQWdCLEdBQUcsc0NBQXNDLENBQUM7UUFDM0UsOERBQThEO1FBQzdDLHNDQUFpQyxHQUFHLDRCQUE0QixDQUFDO1FBQ2pFLDRCQUF1QixHQUFHLGFBQWEsQ0FBQztRQUN4QyxrQ0FBNkIsR0FBRyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsUUFBUSxDQUFDO1FBaUJyRixFQUFFO0lBQ04sQ0FBQztJQWRELElBQVcsU0FBUztRQUNoQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxH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QUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDbEQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNoQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLDRCQUE0QixDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQ2xHO1NBQ0o7UUFFRCxNQUFNLHdCQUF3QixHQUFHLFlBQVksQ0FBQywyQkFBMkIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVyRixPQUFPLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIsQ0FBQztZQUM1RCxHQUFHLDBCQUEwQjtZQUM3Qix3QkFBd0I7U0FDM0IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7QUExU2Msa0NBQWtCLEdBQXFCLElBQUksR0FBRyxFQUFHLENBQUE7QUFxT2hFLHNGQUFzRjtBQUN0RiwyRkFBMkY7QUFDM0YsNkZBQTZGO0FBQzdGLG9CQUFvQjtBQUNMLGtDQUFrQixHQUE2RixJQUFJLEdBQUcsRUFBRyxDQUFBOzRHQWhQL0gsZUFBZTtnSEFBZixlQUFlLGNBRlosTUFBTTsyRkFFVCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBb0JRLFFBQVE7OzBCQUNSLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciwgT3B0aW9uYWwsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNyZWF0ZUN1c3RvbUVsZW1lbnQgfSBmcm9tICdAYW5ndWxhci9lbGVtZW50cyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFBlcFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXNzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGVwRmlsZVNlcnZpY2UgfSBmcm9tICcuL2ZpbGUuc2VydmljZSc7XG5pbXBvcnQgeyBQZXBIdHRwU2VydmljZSB9IGZyb20gJy4uLy4uL2h0dHAvc2VydmljZXMvaHR0cC5zZXJ2aWNlJztcbmltcG9ydCB7IFBlcExvYWRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9odHRwL3NlcnZpY2VzL2xvYWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBJVHJhbnNsYXRpb25SZXNvdXJjZSB9IGZyb20gJ25neC10cmFuc2xhdGUtbXVsdGktaHR0cC1sb2FkZXInO1xuaW1wb3J0IHsgUGVwVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgY29ubmVjdFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyLWFyY2hpdGVjdHMvbW9kdWxlLWZlZGVyYXRpb24tdG9vbHMnO1xuXG4vKlxuICAgIFRoaXMgc2VydmljZSBpcyB0aGUgd2ViYXBwIGFwaSBmb3IgYWRkb24gdXNlZ2UuXG4qL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUGVwQWRkb25TZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IFBBR0VTX0FERE9OX1VVSUQgPSAnNTAwNjJlMGMtOTk2Ny00ZWQ0LTkxMDItZjJiYzUwNjAyZDQxJztcbiAgICAvLyBwcml2YXRlIHJlYWRvbmx5IEFERE9OX0FTU0VUU19QQVRIX0tFWSA9ICdBZGRvbkFzc2V0c1BhdGgnO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgQURET05TX0RJQ1RJT05BUllfQVNTRVRTX1BBVEhfS0VZID0gJ0FkZG9uc0RpY3Rpb25hcnlBc3NldHNQYXRoJztcbiAgICBwcml2YXRlIHJlYWRvbmx5IEFERE9OX0FQSV9SRUxBVElWRV9QQVRIID0gJy9hZGRvbnMvYXBpJztcbiAgICBwcml2YXRlIHJlYWRvbmx5IEFERE9OX0FQSV9BU1lOQ19SRUxBVElWRV9QQVRIID0gYCR7dGhpcy5BRERPTl9BUElfUkVMQVRJVkVfUEFUSH0vYXN5bmNgO1xuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX2N1c3RvbUVsZW1lbnRzTWFwOiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcCgpO1xuXG4gICAgcHVibGljIGdldCBkZXZTZXJ2ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvdXRlID8gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldCgnZGV2U2VydmVyJykgPT09ICd0cnVlJyA6IGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHNlc3Npb25TZXJ2aWNlOiBQZXBTZXNzaW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBodHRwU2VydmljZTogUGVwSHR0cFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbG9hZGVyU2VydmljZTogUGVwTG9hZGVyU2VydmljZSxcbiAgICAgICAgcHVibGljIHRyYW5zbGF0ZVNlcnZpY2U6IFBlcFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBmaWxlU2VydmljZTogUGVwRmlsZVNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICkge1xuICAgICAgICAvL1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QWRkb25CYXNlUmVsYXRpdmVQYXRoKGlzQXN5bmMgPSBmYWxzZSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBpc0FzeW5jXG4gICAgICAgICAgICA/IHRoaXMuQURET05fQVBJX0FTWU5DX1JFTEFUSVZFX1BBVEhcbiAgICAgICAgICAgIDogdGhpcy5BRERPTl9BUElfUkVMQVRJVkVfUEFUSDtcbiAgICB9XG5cbiAgICBnZXRBZGRvblN0YXRpY0ZvbGRlcihhZGRvblVVSUQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIC8vIGlmIChhZGRvblVVSUQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgYWRkb25zRGljdGlvbmFyeSA9IHRoaXMuc2Vzc2lvblNlcnZpY2UuZ2V0T2JqZWN0KHRoaXMuQURET05TX0RJQ1RJT05BUllfQVNTRVRTX1BBVEhfS0VZKTtcbiAgICAgICAgICAgIHJldHVybiBhZGRvbnNEaWN0aW9uYXJ5ICYmIGFkZG9uc0RpY3Rpb25hcnlbYWRkb25VVUlEXSA/IGFkZG9uc0RpY3Rpb25hcnlbYWRkb25VVUlEXSA6ICcnO1xuICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gcmV0dXJuIHRoaXMuc2Vzc2lvblNlcnZpY2UuZ2V0T2JqZWN0KHRoaXMuQURET05fQVNTRVRTX1BBVEhfS0VZKSB8fCAnJztcbiAgICAgICAgLy8gfVxuICAgIH1cblxuICAgIHNldEFkZG9uU3RhdGljRm9sZGVyKHBhdGg6IHN0cmluZywgYWRkb25VVUlEOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgLy8gaWYgKGFkZG9uVVVJRC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBhZGRvbnNEaWN0aW9uYXJ5ID0gdGhpcy5zZXNzaW9uU2VydmljZS5nZXRPYmplY3QodGhpcy5BRERPTlNfRElDVElPTkFSWV9BU1NFVFNfUEFUSF9LRVkpID8/IHt9O1xuICAgICAgICAgICAgYWRkb25zRGljdGlvbmFyeVthZGRvblVVSURdID0gcGF0aDtcbiAgICAgICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2V0T2JqZWN0KHRoaXMuQURET05TX0RJQ1RJT05BUllfQVNTRVRTX1BBVEhfS0VZLCBhZGRvbnNEaWN0aW9uYXJ5KTtcbiAgICAgICAgLy8gfSBlbHNlIHtcbiAgICAgICAgLy8gICAgIHJldHVybiB0aGlzLnNlc3Npb25TZXJ2aWNlLnNldE9iamVjdCh0aGlzLkFERE9OX0FTU0VUU19QQVRIX0tFWSwgcGF0aCk7XG4gICAgICAgIC8vIH1cbiAgICB9XG5cbiAgICBnZXRTZXJ2ZXJCYXNlVXJsKGFkZG9uVVVJRDogc3RyaW5nLCBmaWxlTmFtZSA9ICcnLCBpc0FzeW5jID0gZmFsc2UsIGxvY2FsaG9zdFBvcnQgPSA0NTAwKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZmlsZVRvQWRkID0gZmlsZU5hbWUubGVuZ3RoID4gMCA/IGAvJHtmaWxlTmFtZX1gIDogJyc7XG4gICAgICAgIFxuICAgICAgICAvLyBGb3IgZGV2U2VydmVyIHJ1biBzZXJ2ZXIgb24gbG9jYWxob3N0LlxuICAgICAgICBpZih0aGlzLmRldlNlcnZlcikge1xuICAgICAgICAgICAgcmV0dXJuIGBodHRwOi8vbG9jYWxob3N0OiR7bG9jYWxob3N0UG9ydH0ke2ZpbGVUb0FkZH1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYmFzZVVybCA9IHRoaXMuc2Vzc2lvblNlcnZpY2UuZ2V0UGFwaUJhc2VVcmwoKTtcbiAgICAgICAgICAgIHJldHVybiBgJHtiYXNlVXJsfSR7dGhpcy5nZXRBZGRvbkJhc2VSZWxhdGl2ZVBhdGgoaXNBc3luYyl9LyR7YWRkb25VVUlEfSR7ZmlsZVRvQWRkfWA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRBZGRvbkFwaUNhbGwoXG4gICAgICAgIGFkZG9uVVVJRDogc3RyaW5nLFxuICAgICAgICBmaWxlTmFtZTogc3RyaW5nLFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgaHR0cE9wdGlvbnMgPSB7fSxcbiAgICAgICAgaXNBc3luYyA9IGZhbHNlXG4gICAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgLy8gcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuZ2V0UGFwaUFwaUNhbGwoXG4gICAgICAgIC8vICAgICBgJHt0aGlzLmdldEFkZG9uQmFzZVJlbGF0aXZlUGF0aChcbiAgICAgICAgLy8gICAgICAgICBpc0FzeW5jXG4gICAgICAgIC8vICAgICApfS8ke2FkZG9uVVVJRH0vJHtmaWxlTmFtZX0vJHtmdW5jdGlvbk5hbWV9YCxcbiAgICAgICAgLy8gICAgIGh0dHBPcHRpb25zXG4gICAgICAgIC8vICk7XG5cbiAgICAgICAgY29uc3QgcGFwaUJhc2VVcmwgPSB0aGlzLmdldFNlcnZlckJhc2VVcmwoYWRkb25VVUlELCBmaWxlTmFtZSwgaXNBc3luYyk7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLmdldEh0dHBDYWxsKGAke3BhcGlCYXNlVXJsfS8ke2Z1bmN0aW9uTmFtZX1gLCBodHRwT3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcG9zdEFkZG9uQXBpQ2FsbChcbiAgICAgICAgYWRkb25VVUlEOiBzdHJpbmcsXG4gICAgICAgIGZpbGVOYW1lOiBzdHJpbmcsXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBib2R5ID0ge30sXG4gICAgICAgIGh0dHBPcHRpb25zID0ge30sXG4gICAgICAgIGlzQXN5bmMgPSBmYWxzZVxuICAgICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIC8vIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnBvc3RQYXBpQXBpQ2FsbChcbiAgICAgICAgLy8gICAgIGAke3RoaXMuZ2V0QWRkb25CYXNlUmVsYXRpdmVQYXRoKFxuICAgICAgICAvLyAgICAgICAgIGlzQXN5bmNcbiAgICAgICAgLy8gICAgICl9LyR7YWRkb25VVUlEfS8ke2ZpbGVOYW1lfS8ke2Z1bmN0aW9uTmFtZX1gLFxuICAgICAgICAvLyAgICAgYm9keSxcbiAgICAgICAgLy8gICAgIGh0dHBPcHRpb25zXG4gICAgICAgIC8vICk7XG5cbiAgICAgICAgY29uc3QgcGFwaUJhc2VVcmwgPSB0aGlzLmdldFNlcnZlckJhc2VVcmwoYWRkb25VVUlELCBmaWxlTmFtZSwgaXNBc3luYyk7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnBvc3RIdHRwQ2FsbChgJHtwYXBpQmFzZVVybH0vJHtmdW5jdGlvbk5hbWV9YCwgYm9keSwgaHR0cE9wdGlvbnMpO1xuICAgIH1cblxuICAgIGFzeW5jIGdldEFkZG9uQ1BJQ2FsbChcbiAgICAgICAgYWRkb25VVUlEOiBzdHJpbmcsXG4gICAgICAgIHVybDogc3RyaW5nXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZW1pdEV2ZW50KFwiQWRkb25BUElcIiwge1xuICAgICAgICAgICAgQWRkb25VVUlEOiBhZGRvblVVSUQsXG4gICAgICAgICAgICBSZWxhdGl2ZVVSTDogdXJsLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChyZXMuU3VjY2Vzcykge1xuICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UocmVzLlZhbHVlKVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHJlcy5WYWx1ZSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIHBvc3RBZGRvbkNQSUNhbGwoXG4gICAgICAgIGFkZG9uVVVJRDogc3RyaW5nLFxuICAgICAgICB1cmw6IHN0cmluZyxcbiAgICAgICAgYm9keTogYW55XG4gICAgKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZW1pdEV2ZW50KFwiQWRkb25BUElcIiwge1xuICAgICAgICAgICAgQWRkb25VVUlEOiBhZGRvblVVSUQsXG4gICAgICAgICAgICBSZWxhdGl2ZVVSTDogdXJsLFxuICAgICAgICAgICAgTWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICBCb2R5OiBib2R5XG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKHJlcy5TdWNjZXNzKSB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShyZXMuVmFsdWUpXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IocmVzLlZhbHVlKVxuICAgICAgICB9XG4gICAgfSAgIFxuXG4gICAgZW1pdEV2ZW50KGV2ZW50S2V5OiBzdHJpbmcsIGV2ZW50RGF0YTogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdlbWl0LWV2ZW50Jywge1xuICAgICAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgICAgICBldmVudEtleSxcbiAgICAgICAgICAgICAgICAgICAgZXZlbnREYXRhOiBldmVudERhdGEsXG4gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb246IHJlc29sdmVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSlcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBuZWVkIHRvIGNoZWsgdGhpcyBpZiB0aGUgbG9hZGVyIGlzIHdvcmtpbmcuXG4gICAgZmV0Y2goaW5wdXQ6IFJlcXVlc3RJbmZvLCBpbml0PzogUmVxdWVzdEluaXQpOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgICAgIHRoaXMubG9hZGVyU2VydmljZS5zaG93KCk7XG5cbiAgICAgICAgcmV0dXJuIHdpbmRvdy5mZXRjaChpbnB1dCwgaW5pdCkuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRlclNlcnZpY2UuaGlkZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXROZ3hMaWJUcmFuc2xhdGlvblJlc291cmNlKGFkZG9uVVVJRDogc3RyaW5nLCBsaWJOYW1lID0gJ25neC1saWInKTogSVRyYW5zbGF0aW9uUmVzb3VyY2Uge1xuICAgICAgICBjb25zdCBhZGRvblN0YXRpY0ZvbGRlciA9IHRoaXMuZ2V0QWRkb25TdGF0aWNGb2xkZXIoYWRkb25VVUlEKTtcbiAgICAgICAgY29uc3QgdHJhbnNsYXRpb25zUGF0aDogc3RyaW5nID0gdGhpcy5maWxlU2VydmljZS5nZXRBc3NldHNUcmFuc2xhdGlvbnNQYXRoKGFkZG9uU3RhdGljRm9sZGVyLCBsaWJOYW1lKTtcbiAgICAgICAgY29uc3QgdHJhbnNsYXRpb25zU3VmZml4OiBzdHJpbmcgPSB0aGlzLmZpbGVTZXJ2aWNlLmdldEFzc2V0c1RyYW5zbGF0aW9uc1N1ZmZpeChsaWJOYW1lKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJlZml4OiB0cmFuc2xhdGlvbnNQYXRoLFxuICAgICAgICAgICAgc3VmZml4OiB0cmFuc2xhdGlvbnNTdWZmaXgsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZ2V0QWRkb25UcmFuc2xhdGlvblJlc291cmNlKGFkZG9uVVVJRDogc3RyaW5nKTogSVRyYW5zbGF0aW9uUmVzb3VyY2Uge1xuICAgICAgICBjb25zdCBhZGRvblN0YXRpY0ZvbGRlciA9IHRoaXMuZ2V0QWRkb25TdGF0aWNGb2xkZXIoYWRkb25VVUlEKTtcbiAgICAgICAgY29uc3QgZGVmYXVsdFN1YkZvbGRlciA9ICdhc3NldHMvaTE4bi8nO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmVmaXg6IGFkZG9uU3RhdGljRm9sZGVyLmxlbmd0aCA+IDAgPyBgJHthZGRvblN0YXRpY0ZvbGRlcn0ke2RlZmF1bHRTdWJGb2xkZXJ9YCA6IGAvJHtkZWZhdWx0U3ViRm9sZGVyfWAsXG4gICAgICAgICAgICBzdWZmaXg6ICcuanNvbicsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgc2V0RGVmYXVsdFRyYW5zbGF0ZUxhbmcodHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCB1cmxMYW5nUGFyYW0gPSAndXNlckxhbmcnKSB7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zZXREZWZhdWx0VHJhbnNsYXRlTGFuZyh0cmFuc2xhdGUsIHVybExhbmdQYXJhbSk7XG4gICAgfVxuXG4gICAgZ2V0UGFnZXNBZGRvblVVSUQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLlBBR0VTX0FERE9OX1VVSUQ7XG4gICAgfVxuXG4gICAgc2V0U2hlbGxSb3V0ZXJEYXRhKGRhdGE6IHsgYWRkUGFkZGluZz86IGJvb2xlYW4sIHNob3dTaWRlYmFyPzogYm9vbGVhbiwgc2hvd0hlYWRlcj86IGJvb2xlYW4gfSkge1xuICAgICAgICBjb25zdCBldmVudERhdGEgPSB7XG4gICAgICAgICAgICBkZXRhaWw6IGRhdGEsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgY3VzdG9tRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ3NldC1yb3V0ZXItZGF0YScsIGV2ZW50RGF0YSk7XG4gICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KGN1c3RvbUV2ZW50KTtcbiAgICB9XG5cbiAgICBkZWZpbmVDdXN0b21FbGVtZW50KGVsZW1lbnROYW1lOiBzdHJpbmcsIGNvbXBvbmVudDogVHlwZTxhbnk+LCBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgaWYgKCFjdXN0b21FbGVtZW50cy5nZXQoZWxlbWVudE5hbWUpKSB7ICBcbiAgICAgICAgICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZShlbGVtZW50TmFtZSwgY3JlYXRlQ3VzdG9tRWxlbWVudChjb21wb25lbnQsIHtpbmplY3RvcjogaW5qZWN0b3J9KSk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIFNldCB0aGUgZWxlbWVudE5hbWUgaW4gdGhlIF9jdXN0b21FbGVtZW50c01hcCAoRml4IGludGVybmFsIHJvdXRpbmcgYnVnKS5cbiAgICAgICAgICAgIFBlcEFkZG9uU2VydmljZS5fY3VzdG9tRWxlbWVudHNNYXAuc2V0KGVsZW1lbnROYW1lLCB7aW5qZWN0b3I6IGluamVjdG9yfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGaXggaW50ZXJuYWwgcm91dGluZyBidWcuIENhbGxhYmxlIHJlcGVhdGVkbHkgKG9uY2UgYXQgbW91bnQsIHRoZW4gYWdhaW4gd2hlbmV2ZXIgdGhlXG4gICAgLy8gc2hlbGwncyBvd24gcm91dGUgY2hhbmdlcyB3aGlsZSB0aGUgc2FtZSBhZGRvbiBlbGVtZW50IGluc3RhbmNlIHN0YXlzIG1vdW50ZWQg4oCUIGUuZy4gYVxuICAgIC8vIHNldHRpbmdzX2Jsb2NrIGNoaWxkIHNlZ21lbnQgY2hhbmdlKSDigJQgc2VlIFBlcFJlbW90ZUxvYWRlckVsZW1lbnRDb21wb25lbnQncyByb3V0ZVxuICAgIC8vIHN1YnNjcmlwdGlvbiwgc2luY2Ugd2l0aG91dCBhIHJlcGVhdCBjYWxsIHRoZSBhZGRvbidzIG93biBpbnRlcm5hbCByb3V0ZXIgaXMgb25seSBldmVyXG4gICAgLy8gdG9sZCB0aGUgbG9jYXRpb24gb25jZSwgYXQgaW5pdGlhbCBtb3VudC5cbiAgICBjb25uZWN0SW50ZXJuYWxSb3V0ZXIoZWxlbWVudE5hbWU6IHN0cmluZykge1xuICAgICAgICBjb25zdCBjdXN0b21FbGVtZW50T2JqZWN0ID0gUGVwQWRkb25TZXJ2aWNlLl9jdXN0b21FbGVtZW50c01hcC5nZXQoZWxlbWVudE5hbWUpO1xuICAgICAgICBsZXQgcm91dGVyID0gY3VzdG9tRWxlbWVudE9iamVjdD8uaW5qZWN0b3IuZ2V0KFJvdXRlcik7XG5cbiAgICAgICAgLy8gVGhpcyBjYXVzZSBhIHJlZnJlc2ggKGV2ZXJpdGhpbmcgaXMgbG9hZGluZyB0d2ljZSkgd2hlbiByZWxvYWRpbmcgdGhlIHBhZ2UuLi5cbiAgICAgICAgLy8gQnV0IGlmIHdlIHJlbW92ZSB0aGlzIHRoZSBmaXJzdCBuYXZpZ2F0aW9uIGlzIGNsZWFyIGFsbCBoaXN0b3J5IGNhdXNlIHRoZSByb3V0ZXIgaXMgbm90IGNvbm5lY3RlZC5cbiAgICAgICAgaWYgKCFyb3V0ZXIpIHtcbiAgICAgICAgICAgIHJvdXRlciA9IHRoaXMucm91dGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJvdXRlcikge1xuICAgICAgICAgICAgY29uc3QgdXNlSGFzaCA9IGxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJyMnKTtcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdFJvdXRlcihlbGVtZW50TmFtZSwgcm91dGVyLCB1c2VIYXNoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlbW92ZXMgdGhlIHBvcHN0YXRlL2hhc2hjaGFuZ2UgbGlzdGVuZXIgY29ubmVjdFJvdXRlcigpIHJlZ2lzdGVyZWQgZm9yIHRoaXMgZWxlbWVudCDigJRcbiAgICAvLyBjYWxsIGZyb20gdGhlIGhvc3RpbmcgY29tcG9uZW50J3MgbmdPbkRlc3Ryb3kgc28gYSBkZXN0cm95ZWQgYWRkb24gaW5zdGFuY2UgZG9lc24ndCBrZWVwXG4gICAgLy8gcmVhY3RpbmcgdG8gYnJvd3NlciBuYXZpZ2F0aW9uLlxuICAgIGRpc2Nvbm5lY3RJbnRlcm5hbFJvdXRlcihlbGVtZW50TmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gUGVwQWRkb25TZXJ2aWNlLl9yb3V0ZXJDb25uZWN0aW9ucy5nZXQoZWxlbWVudE5hbWUpO1xuICAgICAgICBpZiAoIWV4aXN0aW5nKSByZXR1cm47XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKGV4aXN0aW5nLmV2ZW50TmFtZSwgZXhpc3RpbmcubGlzdGVuZXIpO1xuICAgICAgICBQZXBBZGRvblNlcnZpY2UuX3JvdXRlckNvbm5lY3Rpb25zLmRlbGV0ZShlbGVtZW50TmFtZSk7XG4gICAgfVxuXG4gICAgLy8gVHJhY2tzLCBwZXIgYWRkb24gZWxlbWVudCwgdGhlIHBvcHN0YXRlL2hhc2hjaGFuZ2UgbGlzdGVuZXIgYWxyZWFkeSByZWdpc3RlcmVkIGJ5IGFcbiAgICAvLyBwcmV2aW91cyBjb25uZWN0Um91dGVyKCkgY2FsbCAoYW5kIHRoZSBtdXRhYmxlIFwiY3VycmVudCB1cmxcIiBpdCByZWFkcyksIHNvIGEgcmVwZWF0IGNhbGxcbiAgICAvLyB1cGRhdGVzIHRoYXQgc2FtZSBsaXN0ZW5lcidzIHRhcmdldCBpbnN0ZWFkIG9mIHBpbGluZyB1cCBhIG5ldywgaW5kZXBlbmRlbnRseS1zdGFsZSBvbmUgb25cbiAgICAvLyBldmVyeSBuYXZpZ2F0aW9uLlxuICAgIHByaXZhdGUgc3RhdGljIF9yb3V0ZXJDb25uZWN0aW9uczogTWFwPHN0cmluZywgeyB1cmw6IHN0cmluZzsgZXZlbnROYW1lOiAncG9wc3RhdGUnIHwgJ2hhc2hjaGFuZ2UnOyBsaXN0ZW5lcjogKCkgPT4gdm9pZCB9PiA9IG5ldyBNYXAoKTtcblxuICAgIC8vIFN0cmlwcyB0aGlzIGFwcCdzIG93biBiYXNlIGhyZWYgcHJlZml4IChlLmcuIGRldi1vbmx5IC9hbmd1bGFyIOKAlCBzZWUgYW5ndWxhci5qc29uJ3NcbiAgICAvLyBiYXNlSHJlZi9zZXJ2ZVBhdGgpIGZyb20gYSBwYXRoLCBzbyBpdCBjYW4gYmUgaGFuZGVkIHRvIGNvZGUgdGhhdCBleHBlY3RzIGEgcGF0aFxuICAgIC8vIHJlbGF0aXZlIHRvIHJlYWwgcm9vdCDigJQgYW4gYWRkb24ncyBvd24gaW50ZXJuYWwgcm91dGVyIChjb25uZWN0Um91dGVyIGJlbG93KSwgb3IgYVxuICAgIC8vIHJlbW90ZSdzIG9uZS10aW1lIGJvb3RzdHJhcC10aW1lIGxvY2F0aW9uIHJlYWQgKHNlZSBQZXBSZW1vdGVMb2FkZXJFbGVtZW50Q29tcG9uZW50KS5cbiAgICBzdGF0aWMgc3RyaXBCYXNlSHJlZihwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBiYXNlUGF0aCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Jhc2UnKT8uZ2V0QXR0cmlidXRlKCdocmVmJykgfHwgJy8nO1xuICAgICAgICBpZiAoYmFzZVBhdGggPT09ICcvJykgcmV0dXJuIHBhdGg7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRCYXNlID0gYmFzZVBhdGguZW5kc1dpdGgoJy8nKSA/IGJhc2VQYXRoLnNsaWNlKDAsIC0xKSA6IGJhc2VQYXRoO1xuICAgICAgICBjb25zdCBwcmVmaXhSZSA9IG5ldyBSZWdFeHAoYF4ke25vcm1hbGl6ZWRCYXNlfSg/PS98JClgKTtcbiAgICAgICAgcmV0dXJuIHByZWZpeFJlLnRlc3QocGF0aCkgPyAocGF0aC5yZXBsYWNlKHByZWZpeFJlLCAnJykgfHwgJy8nKSA6IHBhdGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb25uZWN0Um91dGVyKGVsZW1lbnROYW1lOiBzdHJpbmcsIHJvdXRlciwgdXNlSGFzaCA9IGZhbHNlKSB7XG4gICAgICAgIC8vIFRoaXMgYXBwIG1heSBiZSBzZXJ2ZWQgdW5kZXIgaXRzIG93biBiYXNlIGhyZWYgKGUuZy4gZGV2LW9ubHkgL2FuZ3VsYXIg4oCUIHNlZVxuICAgICAgICAvLyBhbmd1bGFyLmpzb24ncyBiYXNlSHJlZi9zZXJ2ZVBhdGgpIOKAlCBzdHJpcCBpdCBiZWZvcmUgaGFuZGluZyB0aGUgcGF0aCB0byB0aGUgYWRkb24nc1xuICAgICAgICAvLyBPV04gaW50ZXJuYWwgcm91dGVyLCB3aGljaCBleHBlY3RzIGEgcGF0aCByZWxhdGl2ZSB0byBJVFMgT1dOIHJvb3QsIG5vdCB0aGlzIHNoZWxsJ3MuXG4gICAgICAgIGNvbnN0IHN0cmlwQmFzZSA9IFBlcEFkZG9uU2VydmljZS5zdHJpcEJhc2VIcmVmO1xuXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gUGVwQWRkb25TZXJ2aWNlLl9yb3V0ZXJDb25uZWN0aW9ucy5nZXQoZWxlbWVudE5hbWUpO1xuICAgICAgICBpZiAoIXVzZUhhc2gpIHtcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IGAke3N0cmlwQmFzZShsb2NhdGlvbi5wYXRobmFtZSkucmVwbGFjZSgvXlxcLy8sICcnKX0ke2xvY2F0aW9uLnNlYXJjaH1gO1xuICAgICAgICAgICAgcm91dGVyLm5hdmlnYXRlQnlVcmwodXJsKTtcbiAgICAgICAgICAgIGlmIChleGlzdGluZykge1xuICAgICAgICAgICAgICAgIGV4aXN0aW5nLnVybCA9IHVybDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29ubmVjdGlvbiA9IHsgdXJsLCBldmVudE5hbWU6ICdwb3BzdGF0ZScgYXMgY29uc3QsIGxpc3RlbmVyOiAoKSA9PiByb3V0ZXIubmF2aWdhdGVCeVVybChjb25uZWN0aW9uLnVybCkgfTtcbiAgICAgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9wc3RhdGUnLCBjb25uZWN0aW9uLmxpc3RlbmVyKTtcbiAgICAgICAgICAgICAgICBQZXBBZGRvblNlcnZpY2UuX3JvdXRlckNvbm5lY3Rpb25zLnNldChlbGVtZW50TmFtZSwgY29ubmVjdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB1cmwgPSBgJHtzdHJpcEJhc2UobG9jYXRpb24uaGFzaC5yZXBsYWNlKC9eIy8sICcnKSkucmVwbGFjZSgvXlxcLy8sICcnKX0ke2xvY2F0aW9uLnNlYXJjaH1gO1xuICAgICAgICAgICAgcm91dGVyLm5hdmlnYXRlQnlVcmwodXJsKTtcbiAgICAgICAgICAgIGlmIChleGlzdGluZykge1xuICAgICAgICAgICAgICAgIGV4aXN0aW5nLnVybCA9IHVybDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29ubmVjdGlvbiA9IHsgdXJsLCBldmVudE5hbWU6ICdoYXNoY2hhbmdlJyBhcyBjb25zdCwgbGlzdGVuZXI6ICgpID0+IHJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGNvbm5lY3Rpb24udXJsKSB9O1xuICAgICAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdoYXNoY2hhbmdlJywgY29ubmVjdGlvbi5saXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgUGVwQWRkb25TZXJ2aWNlLl9yb3V0ZXJDb25uZWN0aW9ucy5zZXQoZWxlbWVudE5hbWUsIGNvbm5lY3Rpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVNdWx0aVRyYW5zbGF0ZUxvYWRlcihcbiAgICAgICAgYWRkb25VVUlEOiBzdHJpbmcsXG4gICAgICAgIGFkZG9uU2VydmljZTogUGVwQWRkb25TZXJ2aWNlLFxuICAgICAgICBsaWJzTmFtZSA9IFsnbmd4LWxpYiddLFxuICAgICkge1xuICAgICAgICBjb25zdCBuZ3hMaWJUcmFuc2xhdGlvblJlc291cmNlcyA9IFtdO1xuXG4gICAgICAgIGlmIChsaWJzTmFtZT8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGxpYnNOYW1lLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpYk5hbWUgPSBsaWJzTmFtZVtpbmRleF07XG4gICAgICAgICAgICAgICAgbmd4TGliVHJhbnNsYXRpb25SZXNvdXJjZXMucHVzaChhZGRvblNlcnZpY2UuZ2V0Tmd4TGliVHJhbnNsYXRpb25SZXNvdXJjZShhZGRvblVVSUQsIGxpYk5hbWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFkZG9uVHJhbnNsYXRpb25SZXNvdXJjZSA9IGFkZG9uU2VydmljZS5nZXRBZGRvblRyYW5zbGF0aW9uUmVzb3VyY2UoYWRkb25VVUlEKTtcblxuICAgICAgICByZXR1cm4gYWRkb25TZXJ2aWNlLnRyYW5zbGF0ZVNlcnZpY2UuY3JlYXRlTXVsdGlUcmFuc2xhdGVMb2FkZXIoW1xuICAgICAgICAgICAgLi4ubmd4TGliVHJhbnNsYXRpb25SZXNvdXJjZXMsXG4gICAgICAgICAgICBhZGRvblRyYW5zbGF0aW9uUmVzb3VyY2VcbiAgICAgICAgXSk7XG4gICAgfVxufVxuIl19
|
|
@@ -8,8 +8,9 @@ import * as i4 from "@angular/material/menu";
|
|
|
8
8
|
import * as i5 from "@angular/material/icon";
|
|
9
9
|
import * as i6 from "@pepperi-addons/ngx-lib/icon";
|
|
10
10
|
export class PepGroupButtonsComponent {
|
|
11
|
-
constructor(layoutService) {
|
|
11
|
+
constructor(layoutService, changeDetectorRef) {
|
|
12
12
|
this.layoutService = layoutService;
|
|
13
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
13
14
|
this.PepScreenSizeType = PepScreenSizeType;
|
|
14
15
|
this.viewType = 'regular';
|
|
15
16
|
this.styleType = 'weak';
|
|
@@ -29,6 +30,18 @@ export class PepGroupButtonsComponent {
|
|
|
29
30
|
// this.buttonClick.unsubscribe();
|
|
30
31
|
// }
|
|
31
32
|
}
|
|
33
|
+
// MatMenu's own trigger sets its internal `_panelAnimationState` to 'enter' synchronously
|
|
34
|
+
// right after this click is handled (see MatMenuTrigger.openMenu()), but MatMenu is an
|
|
35
|
+
// OnPush component, so that mutation alone never schedules a re-check of its view when this
|
|
36
|
+
// whole tree is bootstrapped via Angular Elements (createCustomElement) rather than a
|
|
37
|
+
// normally-bootstrapped app — the panel gets created and correctly positioned by CDK Overlay,
|
|
38
|
+
// but stays rendered at its initial 'void' (opacity: 0, scale(0.8)) keyframe forever. A plain
|
|
39
|
+
// Angular app happens to pick up the change through other CD activity elsewhere in the tree;
|
|
40
|
+
// Angular Elements doesn't, so nudge it explicitly, once the current synchronous click
|
|
41
|
+
// dispatch (which is what flips the animation state) has finished.
|
|
42
|
+
onMenuTriggerClicked() {
|
|
43
|
+
setTimeout(() => this.changeDetectorRef.detectChanges());
|
|
44
|
+
}
|
|
32
45
|
onButtonClicked(event, button) {
|
|
33
46
|
const unselect = this.supportUnselect && this.selectedButtonKey === button?.key;
|
|
34
47
|
this.selectedButtonKey = unselect ? '' : button?.key;
|
|
@@ -44,12 +57,12 @@ export class PepGroupButtonsComponent {
|
|
|
44
57
|
}
|
|
45
58
|
}
|
|
46
59
|
}
|
|
47
|
-
PepGroupButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepGroupButtonsComponent, deps: [{ token: i1.PepLayoutService }], target: i0.ɵɵFactoryTarget.Component });
|
|
48
|
-
PepGroupButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PepGroupButtonsComponent, selector: "pep-group-buttons", inputs: { viewType: "viewType", styleType: "styleType", sizeType: "sizeType", buttons: "buttons", buttonsDisabled: "buttonsDisabled", supportUnselect: "supportUnselect", selectedButtonKey: "selectedButtonKey", stretch: "stretch" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<div class=\"group-buttons-container\" pepRtlDirection>\n <ng-container *ngIf=\"viewType === 'regular'\">\n <button *ngFor=\"let button of buttons\" [pepDataQa]=\"button?.value\"\n class=\"pep-button pep-spacing-element pull-left flip first-button {{ sizeType }} {{ styleType }}\"\n [disabled]=\"buttonsDisabled || button.disabled\" mat-button (click)=\"onButtonClicked($event, button)\">\n <span [title]=\"button?.value\">{{ button?.value }}</span>\n </button>\n </ng-container>\n\n <div *ngIf=\"viewType === 'dropdown'\" class=\"dropdown-buttons pep-spacing-element\"\n [ngClass]=\"{dropup: screenSize >= PepScreenSizeType.MD}\">\n <button [pepDataQa]=\"buttons[0]?.value\"\n class=\"pep-button pull-left flip first-button {{ sizeType }} {{ styleType }}\"\n (click)=\"onButtonClicked($event, buttons[0])\" [disabled]=\"buttonsDisabled || buttons[0].disabled\"\n mat-button>\n <span class=\"ellipsis\" [title]=\"buttons[0]?.value\">{{ buttons[0]?.value }}</span>\n </button>\n <button class=\"pep-button icon-button pull-right flip last-button {{ sizeType }} {{ styleType }}\"\n [matMenuTriggerFor]=\"actionsMenu\" [disabled]=\"buttonsDisabled\" pepMenuBlur mat-button>\n <mat-icon>\n <pep-icon name=\"{{ screenSize < PepScreenSizeType.MD ? 'arrow_down' : 'arrow_up' }}\">\n </pep-icon>\n </mat-icon>\n </button>\n\n <mat-menu #actionsMenu=\"matMenu\" xPosition=\"before\">\n <ng-container *ngFor=\"let button of buttons; let i = index; first as isFirst\">\n <button *ngIf=\"!isFirst\" mat-menu-item [pepDataQa]=\"button?.value\"\n (click)=\"onButtonClicked($event, button)\">\n <span [title]=\"button?.value\">{{ button?.value }}</span>\n </button>\n </ng-container>\n </mat-menu>\n </div>\n\n <div *ngIf=\"viewType === 'split'\" class=\"split-buttons\">\n <button *ngFor=\"let button of buttons; let index; let isFirst = first; let isLast = last\"\n [pepDataQa]=\"button?.value\" mat-button pepButtonBlur\n class=\"pep-button {{ sizeType }} {{ styleType }} {{ button?.classNames }} pull-left flip\"\n [disabled]=\"buttonsDisabled || button.disabled\" [ngClass]=\"{\n 'first-button': isFirst, \n 'middle-button': !isFirst && !isLast, \n 'last-button': isLast, \n 'icon-button': button?.iconName && !button?.value}\" (click)=\"onButtonClicked($event, button)\">\n\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: {button: button}\"></ng-container>\n </button>\n </div>\n\n <div *ngIf=\"viewType === 'toggle'\" class=\"toggle-buttons\" [ngClass]=\"{ 'stretch': stretch }\">\n <button *ngFor=\"let button of buttons; let index; let isFirst = first; let isLast = last\"\n [pepDataQa]=\"button?.value\" mat-button pepButtonBlur\n class=\"pep-button {{ sizeType }} {{ styleType }} {{ button?.classNames }} pull-left flip\"\n [disabled]=\"buttonsDisabled || button.disabled\" [ngClass]=\"{\n 'first-button': isFirst && !isLast, \n 'middle-button': !isFirst && !isLast, \n 'last-button': isLast && !isFirst,\n 'icon-button': button?.iconName && !button?.value,\n 'is-selected': button?.key !== '' && button?.key === selectedButtonKey}\"\n (click)=\"onButtonClicked($event, button)\">\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: {button: button}\"></ng-container>\n </button>\n </div>\n</div>\n\n<ng-template #contentTemplate let-button=\"button\">\n <mat-icon *ngIf=\"button.iconName && (!button.iconPosition || button.iconPosition === 'start')\"\n [ngClass]=\"{ 'pull-left flip': button.value }\">\n <pep-icon name=\"{{button.iconName}}\"></pep-icon>\n </mat-icon>\n <span *ngIf=\"button.value\" class=\"ellipsis pull-left flip\"\n [ngClass]=\"{ 'button-title-with-icon': button.iconName, 'icon-before': button.iconPosition === 'start' }\"\n [title]=\"button.value\">\n {{button.value}}\n </span>\n <mat-icon *ngIf=\"button.iconName && button.iconPosition === 'end'\" [ngClass]=\"{ 'pull-left flip': button.value }\">\n <pep-icon name=\"{{button.iconName}}\"></pep-icon>\n </mat-icon>\n</ng-template>", styles: [".group-buttons-container{display:flex;border-radius:var(--pep-border-radius-md, .25rem)}.group-buttons-container .dropdown-buttons .first-button,.group-buttons-container .split-buttons .first-button,.group-buttons-container .toggle-buttons .first-button{margin-inline-end:1px}.group-buttons-container .dropdown-buttons .first-button,.group-buttons-container .dropdown-buttons .first-button:after,.group-buttons-container .split-buttons .first-button,.group-buttons-container .split-buttons .first-button:after,.group-buttons-container .toggle-buttons .first-button,.group-buttons-container .toggle-buttons .first-button:after{border-radius:var(--pep-border-radius-md, .25rem) 0 0 var(--pep-border-radius-md, .25rem)}.group-buttons-container .dropdown-buttons .last-button,.group-buttons-container .dropdown-buttons .last-button:after,.group-buttons-container .split-buttons .last-button,.group-buttons-container .split-buttons .last-button:after,.group-buttons-container .toggle-buttons .last-button,.group-buttons-container .toggle-buttons .last-button:after{border-radius:0 var(--pep-border-radius-md, .25rem) var(--pep-border-radius-md, .25rem) 0}.group-buttons-container .dropdown-buttons .pepperi-button,.group-buttons-container .dropdown-buttons .pep-button,.group-buttons-container .split-buttons .pepperi-button,.group-buttons-container .split-buttons .pep-button,.group-buttons-container .toggle-buttons .pepperi-button,.group-buttons-container .toggle-buttons .pep-button{margin-top:0!important}.group-buttons-container .dropdown-buttons .pepperi-button.cdk-focused,.group-buttons-container .dropdown-buttons .pep-button.cdk-focused,.group-buttons-container .split-buttons .pepperi-button.cdk-focused,.group-buttons-container .split-buttons .pep-button.cdk-focused,.group-buttons-container .toggle-buttons .pepperi-button.cdk-focused,.group-buttons-container .toggle-buttons .pep-button.cdk-focused{z-index:2}@media (max-width: 599px){.group-buttons-container .dropdown-buttons.dropup .first-button,.group-buttons-container .split-buttons.dropup .first-button,.group-buttons-container .toggle-buttons.dropup .first-button{max-width:200px;padding:0 .25rem}.group-buttons-container .dropdown-buttons.dropup .last-button,.group-buttons-container .split-buttons.dropup .last-button,.group-buttons-container .toggle-buttons.dropup .last-button{padding:0}}.group-buttons-container .split-buttons,.group-buttons-container .toggle-buttons{display:grid;grid-auto-flow:column}.group-buttons-container .split-buttons.stretch,.group-buttons-container .toggle-buttons.stretch{width:100%}.group-buttons-container .split-buttons .pep-button,.group-buttons-container .toggle-buttons .pep-button{max-width:unset;padding-inline:var(--pep-spacing-md, .75rem)}.group-buttons-container .split-buttons .first-button,.group-buttons-container .toggle-buttons .first-button{margin-inline-end:-1px}.group-buttons-container .split-buttons .middle-button,.group-buttons-container .toggle-buttons .middle-button{border-radius:0;margin-inline-end:-1px}\n", ".group-buttons-container .toggle-buttons .is-selected.weak{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%))}.group-buttons-container .toggle-buttons .is-selected.weak:hover{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 20%))}.group-buttons-container .toggle-buttons .is-selected.weak:focus{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.group-buttons-container .toggle-buttons .is-selected.weak:active{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.32);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled){box-shadow:unset;border:unset;box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.04)!important;border:1px solid hsla(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%),.08)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled):after{border:unset}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled) .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled) .svg-icon.stroke{fill:unset;stroke:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled):not(.disabled-no-background-no-color){color:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)!important;background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%)!important}.group-buttons-container .toggle-buttons .is-selected.regular{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.08)}.group-buttons-container .toggle-buttons .is-selected.regular:hover{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.16)}.group-buttons-container .toggle-buttons .is-selected.regular:focus{box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);position:relative;box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.group-buttons-container .toggle-buttons .is-selected.regular:focus:not(.keep-background-on-focus){background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.group-buttons-container .toggle-buttons .is-selected.regular:focus:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px solid hsl(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.regular:active{box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);position:relative}.group-buttons-container .toggle-buttons .is-selected.regular:active:not(.keep-background-on-focus){background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.group-buttons-container .toggle-buttons .is-selected.regular:active:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px solid hsl(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled){box-shadow:unset;border:unset}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled):after{border:unset}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled) .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled) .svg-icon.stroke{fill:unset;stroke:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled):not(.disabled-no-background-no-color){color:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)!important;background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.04)!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1.PepButtonBlurDirective, selector: "[pepButtonBlur]" }, { kind: "directive", type: i1.PepMenuBlurDirective, selector: "[pepMenuBlur]" }, { kind: "directive", type: i1.PepDataQaDirective, selector: "[pepDataQa]", inputs: ["pepDataQa"] }, { kind: "directive", type: i1.PepRtlDirectionDirective, selector: "[pepRtlDirection]" }, { kind: "component", type: i6.PepIconComponent, selector: "pep-icon", inputs: ["spin", "name", "fill"] }] });
|
|
60
|
+
PepGroupButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepGroupButtonsComponent, deps: [{ token: i1.PepLayoutService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
61
|
+
PepGroupButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PepGroupButtonsComponent, selector: "pep-group-buttons", inputs: { viewType: "viewType", styleType: "styleType", sizeType: "sizeType", buttons: "buttons", buttonsDisabled: "buttonsDisabled", supportUnselect: "supportUnselect", selectedButtonKey: "selectedButtonKey", stretch: "stretch" }, outputs: { buttonClick: "buttonClick" }, ngImport: i0, template: "<div class=\"group-buttons-container\" pepRtlDirection>\n <ng-container *ngIf=\"viewType === 'regular'\">\n <button *ngFor=\"let button of buttons\" [pepDataQa]=\"button?.value\"\n class=\"pep-button pep-spacing-element pull-left flip first-button {{ sizeType }} {{ styleType }}\"\n [disabled]=\"buttonsDisabled || button.disabled\" mat-button (click)=\"onButtonClicked($event, button)\">\n <span [title]=\"button?.value\">{{ button?.value }}</span>\n </button>\n </ng-container>\n\n <div *ngIf=\"viewType === 'dropdown'\" class=\"dropdown-buttons pep-spacing-element\"\n [ngClass]=\"{dropup: screenSize >= PepScreenSizeType.MD}\">\n <button [pepDataQa]=\"buttons[0]?.value\"\n class=\"pep-button pull-left flip first-button {{ sizeType }} {{ styleType }}\"\n (click)=\"onButtonClicked($event, buttons[0])\" [disabled]=\"buttonsDisabled || buttons[0].disabled\"\n mat-button>\n <span class=\"ellipsis\" [title]=\"buttons[0]?.value\">{{ buttons[0]?.value }}</span>\n </button>\n <button class=\"pep-button icon-button pull-right flip last-button {{ sizeType }} {{ styleType }}\"\n [matMenuTriggerFor]=\"actionsMenu\" [disabled]=\"buttonsDisabled\" pepMenuBlur mat-button\n (click)=\"onMenuTriggerClicked()\">\n <mat-icon>\n <pep-icon name=\"{{ screenSize < PepScreenSizeType.MD ? 'arrow_down' : 'arrow_up' }}\">\n </pep-icon>\n </mat-icon>\n </button>\n\n <mat-menu #actionsMenu=\"matMenu\" xPosition=\"before\">\n <ng-container *ngFor=\"let button of buttons; let i = index; first as isFirst\">\n <button *ngIf=\"!isFirst\" mat-menu-item [pepDataQa]=\"button?.value\"\n (click)=\"onButtonClicked($event, button)\">\n <span [title]=\"button?.value\">{{ button?.value }}</span>\n </button>\n </ng-container>\n </mat-menu>\n </div>\n\n <div *ngIf=\"viewType === 'split'\" class=\"split-buttons\">\n <button *ngFor=\"let button of buttons; let index; let isFirst = first; let isLast = last\"\n [pepDataQa]=\"button?.value\" mat-button pepButtonBlur\n class=\"pep-button {{ sizeType }} {{ styleType }} {{ button?.classNames }} pull-left flip\"\n [disabled]=\"buttonsDisabled || button.disabled\" [ngClass]=\"{\n 'first-button': isFirst, \n 'middle-button': !isFirst && !isLast, \n 'last-button': isLast, \n 'icon-button': button?.iconName && !button?.value}\" (click)=\"onButtonClicked($event, button)\">\n\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: {button: button}\"></ng-container>\n </button>\n </div>\n\n <div *ngIf=\"viewType === 'toggle'\" class=\"toggle-buttons\" [ngClass]=\"{ 'stretch': stretch }\">\n <button *ngFor=\"let button of buttons; let index; let isFirst = first; let isLast = last\"\n [pepDataQa]=\"button?.value\" mat-button pepButtonBlur\n class=\"pep-button {{ sizeType }} {{ styleType }} {{ button?.classNames }} pull-left flip\"\n [disabled]=\"buttonsDisabled || button.disabled\" [ngClass]=\"{\n 'first-button': isFirst && !isLast, \n 'middle-button': !isFirst && !isLast, \n 'last-button': isLast && !isFirst,\n 'icon-button': button?.iconName && !button?.value,\n 'is-selected': button?.key !== '' && button?.key === selectedButtonKey}\"\n (click)=\"onButtonClicked($event, button)\">\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: {button: button}\"></ng-container>\n </button>\n </div>\n</div>\n\n<ng-template #contentTemplate let-button=\"button\">\n <mat-icon *ngIf=\"button.iconName && (!button.iconPosition || button.iconPosition === 'start')\"\n [ngClass]=\"{ 'pull-left flip': button.value }\">\n <pep-icon name=\"{{button.iconName}}\"></pep-icon>\n </mat-icon>\n <span *ngIf=\"button.value\" class=\"ellipsis pull-left flip\"\n [ngClass]=\"{ 'button-title-with-icon': button.iconName, 'icon-before': button.iconPosition === 'start' }\"\n [title]=\"button.value\">\n {{button.value}}\n </span>\n <mat-icon *ngIf=\"button.iconName && button.iconPosition === 'end'\" [ngClass]=\"{ 'pull-left flip': button.value }\">\n <pep-icon name=\"{{button.iconName}}\"></pep-icon>\n </mat-icon>\n</ng-template>", styles: [".group-buttons-container{display:flex;border-radius:var(--pep-border-radius-md, .25rem)}.group-buttons-container .dropdown-buttons .first-button,.group-buttons-container .split-buttons .first-button,.group-buttons-container .toggle-buttons .first-button{margin-inline-end:1px}.group-buttons-container .dropdown-buttons .first-button,.group-buttons-container .dropdown-buttons .first-button:after,.group-buttons-container .split-buttons .first-button,.group-buttons-container .split-buttons .first-button:after,.group-buttons-container .toggle-buttons .first-button,.group-buttons-container .toggle-buttons .first-button:after{border-radius:var(--pep-border-radius-md, .25rem) 0 0 var(--pep-border-radius-md, .25rem)}.group-buttons-container .dropdown-buttons .last-button,.group-buttons-container .dropdown-buttons .last-button:after,.group-buttons-container .split-buttons .last-button,.group-buttons-container .split-buttons .last-button:after,.group-buttons-container .toggle-buttons .last-button,.group-buttons-container .toggle-buttons .last-button:after{border-radius:0 var(--pep-border-radius-md, .25rem) var(--pep-border-radius-md, .25rem) 0}.group-buttons-container .dropdown-buttons .pepperi-button,.group-buttons-container .dropdown-buttons .pep-button,.group-buttons-container .split-buttons .pepperi-button,.group-buttons-container .split-buttons .pep-button,.group-buttons-container .toggle-buttons .pepperi-button,.group-buttons-container .toggle-buttons .pep-button{margin-top:0!important}.group-buttons-container .dropdown-buttons .pepperi-button.cdk-focused,.group-buttons-container .dropdown-buttons .pep-button.cdk-focused,.group-buttons-container .split-buttons .pepperi-button.cdk-focused,.group-buttons-container .split-buttons .pep-button.cdk-focused,.group-buttons-container .toggle-buttons .pepperi-button.cdk-focused,.group-buttons-container .toggle-buttons .pep-button.cdk-focused{z-index:2}@media (max-width: 599px){.group-buttons-container .dropdown-buttons.dropup .first-button,.group-buttons-container .split-buttons.dropup .first-button,.group-buttons-container .toggle-buttons.dropup .first-button{max-width:200px;padding:0 .25rem}.group-buttons-container .dropdown-buttons.dropup .last-button,.group-buttons-container .split-buttons.dropup .last-button,.group-buttons-container .toggle-buttons.dropup .last-button{padding:0}}.group-buttons-container .split-buttons,.group-buttons-container .toggle-buttons{display:grid;grid-auto-flow:column}.group-buttons-container .split-buttons.stretch,.group-buttons-container .toggle-buttons.stretch{width:100%}.group-buttons-container .split-buttons .pep-button,.group-buttons-container .toggle-buttons .pep-button{max-width:unset;padding-inline:var(--pep-spacing-md, .75rem)}.group-buttons-container .split-buttons .first-button,.group-buttons-container .toggle-buttons .first-button{margin-inline-end:-1px}.group-buttons-container .split-buttons .middle-button,.group-buttons-container .toggle-buttons .middle-button{border-radius:0;margin-inline-end:-1px}\n", ".group-buttons-container .toggle-buttons .is-selected.weak{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%))}.group-buttons-container .toggle-buttons .is-selected.weak:hover{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 20%))}.group-buttons-container .toggle-buttons .is-selected.weak:focus{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.group-buttons-container .toggle-buttons .is-selected.weak:active{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.32);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled){box-shadow:unset;border:unset;box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.04)!important;border:1px solid hsla(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%),.08)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled):after{border:unset}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled) .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled) .svg-icon.stroke{fill:unset;stroke:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled):not(.disabled-no-background-no-color){color:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)!important;background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%)!important}.group-buttons-container .toggle-buttons .is-selected.regular{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.08)}.group-buttons-container .toggle-buttons .is-selected.regular:hover{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.16)}.group-buttons-container .toggle-buttons .is-selected.regular:focus{box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);position:relative;box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.group-buttons-container .toggle-buttons .is-selected.regular:focus:not(.keep-background-on-focus){background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.group-buttons-container .toggle-buttons .is-selected.regular:focus:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px solid hsl(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.regular:active{box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);position:relative}.group-buttons-container .toggle-buttons .is-selected.regular:active:not(.keep-background-on-focus){background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.group-buttons-container .toggle-buttons .is-selected.regular:active:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px solid hsl(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled){box-shadow:unset;border:unset}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled):after{border:unset}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled) .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled) .svg-icon.stroke{fill:unset;stroke:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled):not(.disabled-no-background-no-color){color:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)!important;background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.04)!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1.PepButtonBlurDirective, selector: "[pepButtonBlur]" }, { kind: "directive", type: i1.PepMenuBlurDirective, selector: "[pepMenuBlur]" }, { kind: "directive", type: i1.PepDataQaDirective, selector: "[pepDataQa]", inputs: ["pepDataQa"] }, { kind: "directive", type: i1.PepRtlDirectionDirective, selector: "[pepRtlDirection]" }, { kind: "component", type: i6.PepIconComponent, selector: "pep-icon", inputs: ["spin", "name", "fill"] }] });
|
|
49
62
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepGroupButtonsComponent, decorators: [{
|
|
50
63
|
type: Component,
|
|
51
|
-
args: [{ selector: 'pep-group-buttons', template: "<div class=\"group-buttons-container\" pepRtlDirection>\n <ng-container *ngIf=\"viewType === 'regular'\">\n <button *ngFor=\"let button of buttons\" [pepDataQa]=\"button?.value\"\n class=\"pep-button pep-spacing-element pull-left flip first-button {{ sizeType }} {{ styleType }}\"\n [disabled]=\"buttonsDisabled || button.disabled\" mat-button (click)=\"onButtonClicked($event, button)\">\n <span [title]=\"button?.value\">{{ button?.value }}</span>\n </button>\n </ng-container>\n\n <div *ngIf=\"viewType === 'dropdown'\" class=\"dropdown-buttons pep-spacing-element\"\n [ngClass]=\"{dropup: screenSize >= PepScreenSizeType.MD}\">\n <button [pepDataQa]=\"buttons[0]?.value\"\n class=\"pep-button pull-left flip first-button {{ sizeType }} {{ styleType }}\"\n (click)=\"onButtonClicked($event, buttons[0])\" [disabled]=\"buttonsDisabled || buttons[0].disabled\"\n mat-button>\n <span class=\"ellipsis\" [title]=\"buttons[0]?.value\">{{ buttons[0]?.value }}</span>\n </button>\n <button class=\"pep-button icon-button pull-right flip last-button {{ sizeType }} {{ styleType }}\"\n [matMenuTriggerFor]=\"actionsMenu\" [disabled]=\"buttonsDisabled\" pepMenuBlur mat-button>\n <mat-icon>\n <pep-icon name=\"{{ screenSize < PepScreenSizeType.MD ? 'arrow_down' : 'arrow_up' }}\">\n </pep-icon>\n </mat-icon>\n </button>\n\n <mat-menu #actionsMenu=\"matMenu\" xPosition=\"before\">\n <ng-container *ngFor=\"let button of buttons; let i = index; first as isFirst\">\n <button *ngIf=\"!isFirst\" mat-menu-item [pepDataQa]=\"button?.value\"\n (click)=\"onButtonClicked($event, button)\">\n <span [title]=\"button?.value\">{{ button?.value }}</span>\n </button>\n </ng-container>\n </mat-menu>\n </div>\n\n <div *ngIf=\"viewType === 'split'\" class=\"split-buttons\">\n <button *ngFor=\"let button of buttons; let index; let isFirst = first; let isLast = last\"\n [pepDataQa]=\"button?.value\" mat-button pepButtonBlur\n class=\"pep-button {{ sizeType }} {{ styleType }} {{ button?.classNames }} pull-left flip\"\n [disabled]=\"buttonsDisabled || button.disabled\" [ngClass]=\"{\n 'first-button': isFirst, \n 'middle-button': !isFirst && !isLast, \n 'last-button': isLast, \n 'icon-button': button?.iconName && !button?.value}\" (click)=\"onButtonClicked($event, button)\">\n\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: {button: button}\"></ng-container>\n </button>\n </div>\n\n <div *ngIf=\"viewType === 'toggle'\" class=\"toggle-buttons\" [ngClass]=\"{ 'stretch': stretch }\">\n <button *ngFor=\"let button of buttons; let index; let isFirst = first; let isLast = last\"\n [pepDataQa]=\"button?.value\" mat-button pepButtonBlur\n class=\"pep-button {{ sizeType }} {{ styleType }} {{ button?.classNames }} pull-left flip\"\n [disabled]=\"buttonsDisabled || button.disabled\" [ngClass]=\"{\n 'first-button': isFirst && !isLast, \n 'middle-button': !isFirst && !isLast, \n 'last-button': isLast && !isFirst,\n 'icon-button': button?.iconName && !button?.value,\n 'is-selected': button?.key !== '' && button?.key === selectedButtonKey}\"\n (click)=\"onButtonClicked($event, button)\">\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: {button: button}\"></ng-container>\n </button>\n </div>\n</div>\n\n<ng-template #contentTemplate let-button=\"button\">\n <mat-icon *ngIf=\"button.iconName && (!button.iconPosition || button.iconPosition === 'start')\"\n [ngClass]=\"{ 'pull-left flip': button.value }\">\n <pep-icon name=\"{{button.iconName}}\"></pep-icon>\n </mat-icon>\n <span *ngIf=\"button.value\" class=\"ellipsis pull-left flip\"\n [ngClass]=\"{ 'button-title-with-icon': button.iconName, 'icon-before': button.iconPosition === 'start' }\"\n [title]=\"button.value\">\n {{button.value}}\n </span>\n <mat-icon *ngIf=\"button.iconName && button.iconPosition === 'end'\" [ngClass]=\"{ 'pull-left flip': button.value }\">\n <pep-icon name=\"{{button.iconName}}\"></pep-icon>\n </mat-icon>\n</ng-template>", styles: [".group-buttons-container{display:flex;border-radius:var(--pep-border-radius-md, .25rem)}.group-buttons-container .dropdown-buttons .first-button,.group-buttons-container .split-buttons .first-button,.group-buttons-container .toggle-buttons .first-button{margin-inline-end:1px}.group-buttons-container .dropdown-buttons .first-button,.group-buttons-container .dropdown-buttons .first-button:after,.group-buttons-container .split-buttons .first-button,.group-buttons-container .split-buttons .first-button:after,.group-buttons-container .toggle-buttons .first-button,.group-buttons-container .toggle-buttons .first-button:after{border-radius:var(--pep-border-radius-md, .25rem) 0 0 var(--pep-border-radius-md, .25rem)}.group-buttons-container .dropdown-buttons .last-button,.group-buttons-container .dropdown-buttons .last-button:after,.group-buttons-container .split-buttons .last-button,.group-buttons-container .split-buttons .last-button:after,.group-buttons-container .toggle-buttons .last-button,.group-buttons-container .toggle-buttons .last-button:after{border-radius:0 var(--pep-border-radius-md, .25rem) var(--pep-border-radius-md, .25rem) 0}.group-buttons-container .dropdown-buttons .pepperi-button,.group-buttons-container .dropdown-buttons .pep-button,.group-buttons-container .split-buttons .pepperi-button,.group-buttons-container .split-buttons .pep-button,.group-buttons-container .toggle-buttons .pepperi-button,.group-buttons-container .toggle-buttons .pep-button{margin-top:0!important}.group-buttons-container .dropdown-buttons .pepperi-button.cdk-focused,.group-buttons-container .dropdown-buttons .pep-button.cdk-focused,.group-buttons-container .split-buttons .pepperi-button.cdk-focused,.group-buttons-container .split-buttons .pep-button.cdk-focused,.group-buttons-container .toggle-buttons .pepperi-button.cdk-focused,.group-buttons-container .toggle-buttons .pep-button.cdk-focused{z-index:2}@media (max-width: 599px){.group-buttons-container .dropdown-buttons.dropup .first-button,.group-buttons-container .split-buttons.dropup .first-button,.group-buttons-container .toggle-buttons.dropup .first-button{max-width:200px;padding:0 .25rem}.group-buttons-container .dropdown-buttons.dropup .last-button,.group-buttons-container .split-buttons.dropup .last-button,.group-buttons-container .toggle-buttons.dropup .last-button{padding:0}}.group-buttons-container .split-buttons,.group-buttons-container .toggle-buttons{display:grid;grid-auto-flow:column}.group-buttons-container .split-buttons.stretch,.group-buttons-container .toggle-buttons.stretch{width:100%}.group-buttons-container .split-buttons .pep-button,.group-buttons-container .toggle-buttons .pep-button{max-width:unset;padding-inline:var(--pep-spacing-md, .75rem)}.group-buttons-container .split-buttons .first-button,.group-buttons-container .toggle-buttons .first-button{margin-inline-end:-1px}.group-buttons-container .split-buttons .middle-button,.group-buttons-container .toggle-buttons .middle-button{border-radius:0;margin-inline-end:-1px}\n", ".group-buttons-container .toggle-buttons .is-selected.weak{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%))}.group-buttons-container .toggle-buttons .is-selected.weak:hover{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 20%))}.group-buttons-container .toggle-buttons .is-selected.weak:focus{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.group-buttons-container .toggle-buttons .is-selected.weak:active{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.32);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled){box-shadow:unset;border:unset;box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.04)!important;border:1px solid hsla(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%),.08)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled):after{border:unset}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled) .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled) .svg-icon.stroke{fill:unset;stroke:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled):not(.disabled-no-background-no-color){color:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)!important;background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%)!important}.group-buttons-container .toggle-buttons .is-selected.regular{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.08)}.group-buttons-container .toggle-buttons .is-selected.regular:hover{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.16)}.group-buttons-container .toggle-buttons .is-selected.regular:focus{box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);position:relative;box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.group-buttons-container .toggle-buttons .is-selected.regular:focus:not(.keep-background-on-focus){background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.group-buttons-container .toggle-buttons .is-selected.regular:focus:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px solid hsl(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.regular:active{box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);position:relative}.group-buttons-container .toggle-buttons .is-selected.regular:active:not(.keep-background-on-focus){background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.group-buttons-container .toggle-buttons .is-selected.regular:active:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px solid hsl(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled){box-shadow:unset;border:unset}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled):after{border:unset}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled) .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled) .svg-icon.stroke{fill:unset;stroke:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled):not(.disabled-no-background-no-color){color:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)!important;background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.04)!important}\n"] }]
|
|
52
|
-
}], ctorParameters: function () { return [{ type: i1.PepLayoutService }]; }, propDecorators: { viewType: [{
|
|
64
|
+
args: [{ selector: 'pep-group-buttons', template: "<div class=\"group-buttons-container\" pepRtlDirection>\n <ng-container *ngIf=\"viewType === 'regular'\">\n <button *ngFor=\"let button of buttons\" [pepDataQa]=\"button?.value\"\n class=\"pep-button pep-spacing-element pull-left flip first-button {{ sizeType }} {{ styleType }}\"\n [disabled]=\"buttonsDisabled || button.disabled\" mat-button (click)=\"onButtonClicked($event, button)\">\n <span [title]=\"button?.value\">{{ button?.value }}</span>\n </button>\n </ng-container>\n\n <div *ngIf=\"viewType === 'dropdown'\" class=\"dropdown-buttons pep-spacing-element\"\n [ngClass]=\"{dropup: screenSize >= PepScreenSizeType.MD}\">\n <button [pepDataQa]=\"buttons[0]?.value\"\n class=\"pep-button pull-left flip first-button {{ sizeType }} {{ styleType }}\"\n (click)=\"onButtonClicked($event, buttons[0])\" [disabled]=\"buttonsDisabled || buttons[0].disabled\"\n mat-button>\n <span class=\"ellipsis\" [title]=\"buttons[0]?.value\">{{ buttons[0]?.value }}</span>\n </button>\n <button class=\"pep-button icon-button pull-right flip last-button {{ sizeType }} {{ styleType }}\"\n [matMenuTriggerFor]=\"actionsMenu\" [disabled]=\"buttonsDisabled\" pepMenuBlur mat-button\n (click)=\"onMenuTriggerClicked()\">\n <mat-icon>\n <pep-icon name=\"{{ screenSize < PepScreenSizeType.MD ? 'arrow_down' : 'arrow_up' }}\">\n </pep-icon>\n </mat-icon>\n </button>\n\n <mat-menu #actionsMenu=\"matMenu\" xPosition=\"before\">\n <ng-container *ngFor=\"let button of buttons; let i = index; first as isFirst\">\n <button *ngIf=\"!isFirst\" mat-menu-item [pepDataQa]=\"button?.value\"\n (click)=\"onButtonClicked($event, button)\">\n <span [title]=\"button?.value\">{{ button?.value }}</span>\n </button>\n </ng-container>\n </mat-menu>\n </div>\n\n <div *ngIf=\"viewType === 'split'\" class=\"split-buttons\">\n <button *ngFor=\"let button of buttons; let index; let isFirst = first; let isLast = last\"\n [pepDataQa]=\"button?.value\" mat-button pepButtonBlur\n class=\"pep-button {{ sizeType }} {{ styleType }} {{ button?.classNames }} pull-left flip\"\n [disabled]=\"buttonsDisabled || button.disabled\" [ngClass]=\"{\n 'first-button': isFirst, \n 'middle-button': !isFirst && !isLast, \n 'last-button': isLast, \n 'icon-button': button?.iconName && !button?.value}\" (click)=\"onButtonClicked($event, button)\">\n\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: {button: button}\"></ng-container>\n </button>\n </div>\n\n <div *ngIf=\"viewType === 'toggle'\" class=\"toggle-buttons\" [ngClass]=\"{ 'stretch': stretch }\">\n <button *ngFor=\"let button of buttons; let index; let isFirst = first; let isLast = last\"\n [pepDataQa]=\"button?.value\" mat-button pepButtonBlur\n class=\"pep-button {{ sizeType }} {{ styleType }} {{ button?.classNames }} pull-left flip\"\n [disabled]=\"buttonsDisabled || button.disabled\" [ngClass]=\"{\n 'first-button': isFirst && !isLast, \n 'middle-button': !isFirst && !isLast, \n 'last-button': isLast && !isFirst,\n 'icon-button': button?.iconName && !button?.value,\n 'is-selected': button?.key !== '' && button?.key === selectedButtonKey}\"\n (click)=\"onButtonClicked($event, button)\">\n <ng-container *ngTemplateOutlet=\"contentTemplate; context: {button: button}\"></ng-container>\n </button>\n </div>\n</div>\n\n<ng-template #contentTemplate let-button=\"button\">\n <mat-icon *ngIf=\"button.iconName && (!button.iconPosition || button.iconPosition === 'start')\"\n [ngClass]=\"{ 'pull-left flip': button.value }\">\n <pep-icon name=\"{{button.iconName}}\"></pep-icon>\n </mat-icon>\n <span *ngIf=\"button.value\" class=\"ellipsis pull-left flip\"\n [ngClass]=\"{ 'button-title-with-icon': button.iconName, 'icon-before': button.iconPosition === 'start' }\"\n [title]=\"button.value\">\n {{button.value}}\n </span>\n <mat-icon *ngIf=\"button.iconName && button.iconPosition === 'end'\" [ngClass]=\"{ 'pull-left flip': button.value }\">\n <pep-icon name=\"{{button.iconName}}\"></pep-icon>\n </mat-icon>\n</ng-template>", styles: [".group-buttons-container{display:flex;border-radius:var(--pep-border-radius-md, .25rem)}.group-buttons-container .dropdown-buttons .first-button,.group-buttons-container .split-buttons .first-button,.group-buttons-container .toggle-buttons .first-button{margin-inline-end:1px}.group-buttons-container .dropdown-buttons .first-button,.group-buttons-container .dropdown-buttons .first-button:after,.group-buttons-container .split-buttons .first-button,.group-buttons-container .split-buttons .first-button:after,.group-buttons-container .toggle-buttons .first-button,.group-buttons-container .toggle-buttons .first-button:after{border-radius:var(--pep-border-radius-md, .25rem) 0 0 var(--pep-border-radius-md, .25rem)}.group-buttons-container .dropdown-buttons .last-button,.group-buttons-container .dropdown-buttons .last-button:after,.group-buttons-container .split-buttons .last-button,.group-buttons-container .split-buttons .last-button:after,.group-buttons-container .toggle-buttons .last-button,.group-buttons-container .toggle-buttons .last-button:after{border-radius:0 var(--pep-border-radius-md, .25rem) var(--pep-border-radius-md, .25rem) 0}.group-buttons-container .dropdown-buttons .pepperi-button,.group-buttons-container .dropdown-buttons .pep-button,.group-buttons-container .split-buttons .pepperi-button,.group-buttons-container .split-buttons .pep-button,.group-buttons-container .toggle-buttons .pepperi-button,.group-buttons-container .toggle-buttons .pep-button{margin-top:0!important}.group-buttons-container .dropdown-buttons .pepperi-button.cdk-focused,.group-buttons-container .dropdown-buttons .pep-button.cdk-focused,.group-buttons-container .split-buttons .pepperi-button.cdk-focused,.group-buttons-container .split-buttons .pep-button.cdk-focused,.group-buttons-container .toggle-buttons .pepperi-button.cdk-focused,.group-buttons-container .toggle-buttons .pep-button.cdk-focused{z-index:2}@media (max-width: 599px){.group-buttons-container .dropdown-buttons.dropup .first-button,.group-buttons-container .split-buttons.dropup .first-button,.group-buttons-container .toggle-buttons.dropup .first-button{max-width:200px;padding:0 .25rem}.group-buttons-container .dropdown-buttons.dropup .last-button,.group-buttons-container .split-buttons.dropup .last-button,.group-buttons-container .toggle-buttons.dropup .last-button{padding:0}}.group-buttons-container .split-buttons,.group-buttons-container .toggle-buttons{display:grid;grid-auto-flow:column}.group-buttons-container .split-buttons.stretch,.group-buttons-container .toggle-buttons.stretch{width:100%}.group-buttons-container .split-buttons .pep-button,.group-buttons-container .toggle-buttons .pep-button{max-width:unset;padding-inline:var(--pep-spacing-md, .75rem)}.group-buttons-container .split-buttons .first-button,.group-buttons-container .toggle-buttons .first-button{margin-inline-end:-1px}.group-buttons-container .split-buttons .middle-button,.group-buttons-container .toggle-buttons .middle-button{border-radius:0;margin-inline-end:-1px}\n", ".group-buttons-container .toggle-buttons .is-selected.weak{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%))}.group-buttons-container .toggle-buttons .is-selected.weak:hover{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 20%))}.group-buttons-container .toggle-buttons .is-selected.weak:focus{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.group-buttons-container .toggle-buttons .is-selected.weak:active{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.32);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled){box-shadow:unset;border:unset;box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.04)!important;border:1px solid hsla(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),var(--pep-color-regular-l, 10%),.08)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled):after{border:unset}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled) .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled) .svg-icon.stroke{fill:unset;stroke:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.weak:disabled:not(.ignore-disabled):not(.disabled-no-background-no-color){color:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)!important;background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),88%)!important}.group-buttons-container .toggle-buttons .is-selected.regular{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.08)}.group-buttons-container .toggle-buttons .is-selected.regular:hover{background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.16)}.group-buttons-container .toggle-buttons .is-selected.regular:focus{box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);position:relative;box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.group-buttons-container .toggle-buttons .is-selected.regular:focus:not(.keep-background-on-focus){background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.group-buttons-container .toggle-buttons .is-selected.regular:focus:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px solid hsl(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.regular:active{box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);position:relative}.group-buttons-container .toggle-buttons .is-selected.regular:active:not(.keep-background-on-focus){background:hsl(var(--pep-color-system-primary-invert-h, 255),var(--pep-color-system-primary-invert-s, 100%),var(--pep-color-system-primary-invert-l, 100%))}.group-buttons-container .toggle-buttons .is-selected.regular:active:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px solid hsl(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%))}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled){box-shadow:unset;border:unset}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled):after{border:unset}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled) .svg-icon{fill:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled) .svg-icon.stroke{fill:unset;stroke:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)}.group-buttons-container .toggle-buttons .is-selected.regular:disabled:not(.ignore-disabled):not(.disabled-no-background-no-color){color:hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.35)!important;background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.04)!important}\n"] }]
|
|
65
|
+
}], ctorParameters: function () { return [{ type: i1.PepLayoutService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { viewType: [{
|
|
53
66
|
type: Input
|
|
54
67
|
}], styleType: [{
|
|
55
68
|
type: Input
|
|
@@ -68,4 +81,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
|
68
81
|
}], buttonClick: [{
|
|
69
82
|
type: Output
|
|
70
83
|
}] } });
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtYnV0dG9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2dyb3VwLWJ1dHRvbnMvZ3JvdXAtYnV0dG9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2dyb3VwLWJ1dHRvbnMvZ3JvdXAtYnV0dG9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDZSxpQkFBaUIsRUFDdEMsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7QUFZakMsTUFBTSxPQUFPLHdCQUF3QjtJQWlCakMsWUFBbUIsYUFBK0I7UUFBL0Isa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBaEJsRCxzQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztRQUc3QixhQUFRLEdBQTRCLFNBQVMsQ0FBQztRQUM5QyxjQUFTLEdBQWlCLE1BQU0sQ0FBQztRQUNqQyxhQUFRLEdBQWdCLElBQUksQ0FBQztRQUM3QixZQUFPLEdBQXFCLEVBQUUsQ0FBQztRQUMvQixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixzQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDdkIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUd6QixnQkFBVyxHQUF1QyxJQUFJLFlBQVksRUFBd0IsQ0FBQztRQUl2RixJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM1QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1AsMEJBQTBCO1FBQzFCLHNDQUFzQztRQUN0QyxJQUFJO0lBQ1IsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFZLEVBQUUsTUFBaUI7UUFDM0MsTUFBTSxRQUFRLEdBQVksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssTUFBTSxFQUFFLEdBQUcsQ0FBQztRQUV6RixJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUM7UUFFckQsTUFBTSxXQUFXLEdBQUc7WUFDaEIsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNO1lBQ2hDLEtBQUs7U0FDUixDQUFDO1FBRUYsSUFBSSxNQUFNLEVBQUUsUUFBUSxFQUFFO1lBQ2xCLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDaEM7YUFBTTtZQUNILElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3RDO0lBQ0wsQ0FBQzs7cUhBNUNRLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLDBVQ3JCckMsdTlJQThFYzsyRkR6REQsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNJLG1CQUFtQjt1R0FRcEIsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUdOLFdBQVc7c0JBRFYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uRGVzdHJveSxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgUGVwTGF5b3V0U2VydmljZSwgUGVwU2NyZWVuU2l6ZVR5cGUsIFBlcFN0eWxlVHlwZSwgUGVwU2l6ZVR5cGVcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuaW1wb3J0IHtcbiAgICBQZXBCdXR0b24sXG4gICAgSVBlcEJ1dHRvbkNsaWNrRXZlbnQsXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2J1dHRvbic7XG5cbmV4cG9ydCB0eXBlIFBlcEdyb3VwQnV0dG9uc1ZpZXdUeXBlID0gJ3JlZ3VsYXInIHwgJ2Ryb3Bkb3duJyB8ICdzcGxpdCcgfCAndG9nZ2xlJztcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncGVwLWdyb3VwLWJ1dHRvbnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ncm91cC1idXR0b25zLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9ncm91cC1idXR0b25zLmNvbXBvbmVudC5zY3NzJywgJy4vZ3JvdXAtYnV0dG9ucy5jb21wb25lbnQudGhlbWUuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQZXBHcm91cEJ1dHRvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIFBlcFNjcmVlblNpemVUeXBlID0gUGVwU2NyZWVuU2l6ZVR5cGU7XG4gICAgc2NyZWVuU2l6ZTogUGVwU2NyZWVuU2l6ZVR5cGU7XG5cbiAgICBASW5wdXQoKSB2aWV3VHlwZTogUGVwR3JvdXBCdXR0b25zVmlld1R5cGUgPSAncmVndWxhcic7XG4gICAgQElucHV0KCkgc3R5bGVUeXBlOiBQZXBTdHlsZVR5cGUgPSAnd2Vhayc7XG4gICAgQElucHV0KCkgc2l6ZVR5cGU6IFBlcFNpemVUeXBlID0gJ21kJztcbiAgICBASW5wdXQoKSBidXR0b25zOiBBcnJheTxQZXBCdXR0b24+ID0gW107XG4gICAgQElucHV0KCkgYnV0dG9uc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgQElucHV0KCkgc3VwcG9ydFVuc2VsZWN0ID0gZmFsc2U7XG4gICAgQElucHV0KCkgc2VsZWN0ZWRCdXR0b25LZXkgPSAnJztcbiAgICBASW5wdXQoKSBzdHJldGNoID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KClcbiAgICBidXR0b25DbGljazogRXZlbnRFbWl0dGVyPElQZXBCdXR0b25DbGlja0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8SVBlcEJ1dHRvbkNsaWNrRXZlbnQ+KCk7XG5cblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBsYXlvdXRTZXJ2aWNlOiBQZXBMYXlvdXRTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMubGF5b3V0U2VydmljZS5vblJlc2l6ZSQuc3Vic2NyaWJlKChzaXplKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNjcmVlblNpemUgPSBzaXplO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gaWYgKHRoaXMuYnV0dG9uQ2xpY2spIHtcbiAgICAgICAgLy8gICAgIHRoaXMuYnV0dG9uQ2xpY2sudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgLy8gfVxuICAgIH1cblxuICAgIG9uQnV0dG9uQ2xpY2tlZChldmVudDogRXZlbnQsIGJ1dHRvbjogUGVwQnV0dG9uKTogdm9pZCB7ICAgICAgIFxuICAgICAgICBjb25zdCB1bnNlbGVjdDogYm9vbGVhbiA9IHRoaXMuc3VwcG9ydFVuc2VsZWN0ICYmIHRoaXMuc2VsZWN0ZWRCdXR0b25LZXkgPT09IGJ1dHRvbj8ua2V5O1xuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRCdXR0b25LZXkgPSB1bnNlbGVjdCA/ICcnIDogYnV0dG9uPy5rZXk7XG4gICAgICAgIFxuICAgICAgICBjb25zdCBidXR0b25DbGljayA9IHtcbiAgICAgICAgICAgIHNvdXJjZTogdW5zZWxlY3QgPyBudWxsIDogYnV0dG9uLCBcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChidXR0b24/LmNhbGxiYWNrKSB7XG4gICAgICAgICAgICBidXR0b24uY2FsbGJhY2soYnV0dG9uQ2xpY2spO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5idXR0b25DbGljay5lbWl0KGJ1dHRvbkNsaWNrKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJncm91cC1idXR0b25zLWNvbnRhaW5lclwiIHBlcFJ0bERpcmVjdGlvbj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld1R5cGUgPT09ICdyZWd1bGFyJ1wiPlxuICAgICAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCBidXR0b24gb2YgYnV0dG9uc1wiIFtwZXBEYXRhUWFdPVwiYnV0dG9uPy52YWx1ZVwiXG4gICAgICAgICAgICBjbGFzcz1cInBlcC1idXR0b24gcGVwLXNwYWNpbmctZWxlbWVudCBwdWxsLWxlZnQgZmxpcCBmaXJzdC1idXR0b24ge3sgc2l6ZVR5cGUgfX0ge3sgc3R5bGVUeXBlIH19XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJidXR0b25zRGlzYWJsZWQgfHwgYnV0dG9uLmRpc2FibGVkXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwib25CdXR0b25DbGlja2VkKCRldmVudCwgYnV0dG9uKVwiPlxuICAgICAgICAgICAgPHNwYW4gW3RpdGxlXT1cImJ1dHRvbj8udmFsdWVcIj57eyBidXR0b24/LnZhbHVlIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxkaXYgKm5nSWY9XCJ2aWV3VHlwZSA9PT0gJ2Ryb3Bkb3duJ1wiIGNsYXNzPVwiZHJvcGRvd24tYnV0dG9ucyBwZXAtc3BhY2luZy1lbGVtZW50XCJcbiAgICAgICAgW25nQ2xhc3NdPVwie2Ryb3B1cDogc2NyZWVuU2l6ZSA+PSBQZXBTY3JlZW5TaXplVHlwZS5NRH1cIj5cbiAgICAgICAgPGJ1dHRvbiBbcGVwRGF0YVFhXT1cImJ1dHRvbnNbMF0/LnZhbHVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwicGVwLWJ1dHRvbiBwdWxsLWxlZnQgZmxpcCBmaXJzdC1idXR0b24ge3sgc2l6ZVR5cGUgfX0ge3sgc3R5bGVUeXBlIH19XCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkJ1dHRvbkNsaWNrZWQoJGV2ZW50LCBidXR0b25zWzBdKVwiIFtkaXNhYmxlZF09XCJidXR0b25zRGlzYWJsZWQgfHwgYnV0dG9uc1swXS5kaXNhYmxlZFwiXG4gICAgICAgICAgICBtYXQtYnV0dG9uPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlbGxpcHNpc1wiIFt0aXRsZV09XCJidXR0b25zWzBdPy52YWx1ZVwiPnt7IGJ1dHRvbnNbMF0/LnZhbHVlIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBlcC1idXR0b24gaWNvbi1idXR0b24gcHVsbC1yaWdodCBmbGlwIGxhc3QtYnV0dG9uIHt7IHNpemVUeXBlIH19IHt7IHN0eWxlVHlwZSB9fVwiXG4gICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwiYWN0aW9uc01lbnVcIiBbZGlzYWJsZWRdPVwiYnV0dG9uc0Rpc2FibGVkXCIgcGVwTWVudUJsdXIgbWF0LWJ1dHRvbj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8cGVwLWljb24gbmFtZT1cInt7IHNjcmVlblNpemUgPCBQZXBTY3JlZW5TaXplVHlwZS5NRCA/ICdhcnJvd19kb3duJyA6ICdhcnJvd191cCcgfX1cIj5cbiAgICAgICAgICAgICAgICA8L3BlcC1pY29uPlxuICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPG1hdC1tZW51ICNhY3Rpb25zTWVudT1cIm1hdE1lbnVcIiB4UG9zaXRpb249XCJiZWZvcmVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBidXR0b25zOyBsZXQgaSA9IGluZGV4OyBmaXJzdCBhcyBpc0ZpcnN0XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFpc0ZpcnN0XCIgbWF0LW1lbnUtaXRlbSBbcGVwRGF0YVFhXT1cImJ1dHRvbj8udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25CdXR0b25DbGlja2VkKCRldmVudCwgYnV0dG9uKVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBbdGl0bGVdPVwiYnV0dG9uPy52YWx1ZVwiPnt7IGJ1dHRvbj8udmFsdWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9tYXQtbWVudT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJ2aWV3VHlwZSA9PT0gJ3NwbGl0J1wiIGNsYXNzPVwic3BsaXQtYnV0dG9uc1wiPlxuICAgICAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCBidXR0b24gb2YgYnV0dG9uczsgbGV0IGluZGV4OyBsZXQgaXNGaXJzdCA9IGZpcnN0OyBsZXQgaXNMYXN0ID0gbGFzdFwiXG4gICAgICAgICAgICBbcGVwRGF0YVFhXT1cImJ1dHRvbj8udmFsdWVcIiBtYXQtYnV0dG9uIHBlcEJ1dHRvbkJsdXJcbiAgICAgICAgICAgIGNsYXNzPVwicGVwLWJ1dHRvbiB7eyBzaXplVHlwZSB9fSB7eyBzdHlsZVR5cGUgfX0ge3sgYnV0dG9uPy5jbGFzc05hbWVzIH19IHB1bGwtbGVmdCBmbGlwXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJidXR0b25zRGlzYWJsZWQgfHwgYnV0dG9uLmRpc2FibGVkXCIgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICdmaXJzdC1idXR0b24nOiBpc0ZpcnN0LCBcbiAgICAgICAgICAgICAgICAnbWlkZGxlLWJ1dHRvbic6ICFpc0ZpcnN0ICYmICFpc0xhc3QsIFxuICAgICAgICAgICAgICAgICdsYXN0LWJ1dHRvbic6IGlzTGFzdCwgXG4gICAgICAgICAgICAgICAgJ2ljb24tYnV0dG9uJzogYnV0dG9uPy5pY29uTmFtZSAmJiAhYnV0dG9uPy52YWx1ZX1cIiAoY2xpY2spPVwib25CdXR0b25DbGlja2VkKCRldmVudCwgYnV0dG9uKVwiPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlOyBjb250ZXh0OiB7YnV0dG9uOiBidXR0b259XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cInZpZXdUeXBlID09PSAndG9nZ2xlJ1wiIGNsYXNzPVwidG9nZ2xlLWJ1dHRvbnNcIiBbbmdDbGFzc109XCJ7ICdzdHJldGNoJzogc3RyZXRjaCB9XCI+XG4gICAgICAgIDxidXR0b24gKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBidXR0b25zOyBsZXQgaW5kZXg7IGxldCBpc0ZpcnN0ID0gZmlyc3Q7IGxldCBpc0xhc3QgPSBsYXN0XCJcbiAgICAgICAgICAgIFtwZXBEYXRhUWFdPVwiYnV0dG9uPy52YWx1ZVwiIG1hdC1idXR0b24gcGVwQnV0dG9uQmx1clxuICAgICAgICAgICAgY2xhc3M9XCJwZXAtYnV0dG9uIHt7IHNpemVUeXBlIH19IHt7IHN0eWxlVHlwZSB9fSB7eyBidXR0b24/LmNsYXNzTmFtZXMgfX0gcHVsbC1sZWZ0IGZsaXBcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ1dHRvbnNEaXNhYmxlZCB8fCBidXR0b24uZGlzYWJsZWRcIiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ2ZpcnN0LWJ1dHRvbic6IGlzRmlyc3QgJiYgIWlzTGFzdCwgXG4gICAgICAgICAgICAgICAgJ21pZGRsZS1idXR0b24nOiAhaXNGaXJzdCAmJiAhaXNMYXN0LCBcbiAgICAgICAgICAgICAgICAnbGFzdC1idXR0b24nOiBpc0xhc3QgJiYgIWlzRmlyc3QsXG4gICAgICAgICAgICAgICAgJ2ljb24tYnV0dG9uJzogYnV0dG9uPy5pY29uTmFtZSAmJiAhYnV0dG9uPy52YWx1ZSxcbiAgICAgICAgICAgICAgICAnaXMtc2VsZWN0ZWQnOiBidXR0b24/LmtleSAhPT0gJycgJiYgYnV0dG9uPy5rZXkgPT09IHNlbGVjdGVkQnV0dG9uS2V5fVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25CdXR0b25DbGlja2VkKCRldmVudCwgYnV0dG9uKVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRUZW1wbGF0ZTsgY29udGV4dDoge2J1dHRvbjogYnV0dG9ufVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2NvbnRlbnRUZW1wbGF0ZSBsZXQtYnV0dG9uPVwiYnV0dG9uXCI+XG4gICAgPG1hdC1pY29uICpuZ0lmPVwiYnV0dG9uLmljb25OYW1lICYmICghYnV0dG9uLmljb25Qb3NpdGlvbiB8fCBidXR0b24uaWNvblBvc2l0aW9uID09PSAnc3RhcnQnKVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ3B1bGwtbGVmdCBmbGlwJzogYnV0dG9uLnZhbHVlIH1cIj5cbiAgICAgICAgPHBlcC1pY29uIG5hbWU9XCJ7e2J1dHRvbi5pY29uTmFtZX19XCI+PC9wZXAtaWNvbj5cbiAgICA8L21hdC1pY29uPlxuICAgIDxzcGFuICpuZ0lmPVwiYnV0dG9uLnZhbHVlXCIgY2xhc3M9XCJlbGxpcHNpcyBwdWxsLWxlZnQgZmxpcFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2J1dHRvbi10aXRsZS13aXRoLWljb24nOiBidXR0b24uaWNvbk5hbWUsICdpY29uLWJlZm9yZSc6IGJ1dHRvbi5pY29uUG9zaXRpb24gPT09ICdzdGFydCcgfVwiXG4gICAgICAgIFt0aXRsZV09XCJidXR0b24udmFsdWVcIj5cbiAgICAgICAge3tidXR0b24udmFsdWV9fVxuICAgIDwvc3Bhbj5cbiAgICA8bWF0LWljb24gKm5nSWY9XCJidXR0b24uaWNvbk5hbWUgJiYgYnV0dG9uLmljb25Qb3NpdGlvbiA9PT0gJ2VuZCdcIiBbbmdDbGFzc109XCJ7ICdwdWxsLWxlZnQgZmxpcCc6IGJ1dHRvbi52YWx1ZSB9XCI+XG4gICAgICAgIDxwZXAtaWNvbiBuYW1lPVwie3tidXR0b24uaWNvbk5hbWV9fVwiPjwvcGVwLWljb24+XG4gICAgPC9tYXQtaWNvbj5cbjwvbmctdGVtcGxhdGU+Il19
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtYnV0dG9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2dyb3VwLWJ1dHRvbnMvZ3JvdXAtYnV0dG9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2dyb3VwLWJ1dHRvbnMvZ3JvdXAtYnV0dG9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQUVmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDZSxpQkFBaUIsRUFDdEMsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7QUFZakMsTUFBTSxPQUFPLHdCQUF3QjtJQWlCakMsWUFBbUIsYUFBK0IsRUFBVSxpQkFBb0M7UUFBN0Usa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQVUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQWhCaEcsc0JBQWlCLEdBQUcsaUJBQWlCLENBQUM7UUFHN0IsYUFBUSxHQUE0QixTQUFTLENBQUM7UUFDOUMsY0FBUyxHQUFpQixNQUFNLENBQUM7UUFDakMsYUFBUSxHQUFnQixJQUFJLENBQUM7UUFDN0IsWUFBTyxHQUFxQixFQUFFLENBQUM7UUFDL0Isb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsc0JBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFHekIsZ0JBQVcsR0FBdUMsSUFBSSxZQUFZLEVBQXdCLENBQUM7UUFJdkYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDNUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNQLDBCQUEwQjtRQUMxQixzQ0FBc0M7UUFDdEMsSUFBSTtJQUNSLENBQUM7SUFFRCwwRkFBMEY7SUFDMUYsdUZBQXVGO0lBQ3ZGLDRGQUE0RjtJQUM1RixzRkFBc0Y7SUFDdEYsOEZBQThGO0lBQzlGLDhGQUE4RjtJQUM5Riw2RkFBNkY7SUFDN0YsdUZBQXVGO0lBQ3ZGLG1FQUFtRTtJQUNuRSxvQkFBb0I7UUFDaEIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxlQUFlLENBQUMsS0FBWSxFQUFFLE1BQWlCO1FBQzNDLE1BQU0sUUFBUSxHQUFZLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLE1BQU0sRUFBRSxHQUFHLENBQUM7UUFFekYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDO1FBRXJELE1BQU0sV0FBVyxHQUFHO1lBQ2hCLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTTtZQUNoQyxLQUFLO1NBQ1IsQ0FBQztRQUVGLElBQUksTUFBTSxFQUFFLFFBQVEsRUFBRTtZQUNsQixNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ2hDO2FBQU07WUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUN0QztJQUNMLENBQUM7O3FIQXpEUSx3QkFBd0I7eUdBQXhCLHdCQUF3QiwwVUN0QnJDLHVnSkErRWM7MkZEekRELHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDSSxtQkFBbUI7dUlBUXBCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFHTixXQUFXO3NCQURWLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIFBlcExheW91dFNlcnZpY2UsIFBlcFNjcmVlblNpemVUeXBlLCBQZXBTdHlsZVR5cGUsIFBlcFNpemVUeXBlXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcbmltcG9ydCB7XG4gICAgUGVwQnV0dG9uLFxuICAgIElQZXBCdXR0b25DbGlja0V2ZW50LFxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9idXR0b24nO1xuXG5leHBvcnQgdHlwZSBQZXBHcm91cEJ1dHRvbnNWaWV3VHlwZSA9ICdyZWd1bGFyJyB8ICdkcm9wZG93bicgfCAnc3BsaXQnIHwgJ3RvZ2dsZSc7XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BlcC1ncm91cC1idXR0b25zJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZ3JvdXAtYnV0dG9ucy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZ3JvdXAtYnV0dG9ucy5jb21wb25lbnQuc2NzcycsICcuL2dyb3VwLWJ1dHRvbnMuY29tcG9uZW50LnRoZW1lLnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUGVwR3JvdXBCdXR0b25zQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBQZXBTY3JlZW5TaXplVHlwZSA9IFBlcFNjcmVlblNpemVUeXBlO1xuICAgIHNjcmVlblNpemU6IFBlcFNjcmVlblNpemVUeXBlO1xuXG4gICAgQElucHV0KCkgdmlld1R5cGU6IFBlcEdyb3VwQnV0dG9uc1ZpZXdUeXBlID0gJ3JlZ3VsYXInO1xuICAgIEBJbnB1dCgpIHN0eWxlVHlwZTogUGVwU3R5bGVUeXBlID0gJ3dlYWsnO1xuICAgIEBJbnB1dCgpIHNpemVUeXBlOiBQZXBTaXplVHlwZSA9ICdtZCc7XG4gICAgQElucHV0KCkgYnV0dG9uczogQXJyYXk8UGVwQnV0dG9uPiA9IFtdO1xuICAgIEBJbnB1dCgpIGJ1dHRvbnNEaXNhYmxlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHN1cHBvcnRVbnNlbGVjdCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHNlbGVjdGVkQnV0dG9uS2V5ID0gJyc7XG4gICAgQElucHV0KCkgc3RyZXRjaCA9IGZhbHNlO1xuXG4gICAgQE91dHB1dCgpXG4gICAgYnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxJUGVwQnV0dG9uQ2xpY2tFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBCdXR0b25DbGlja0V2ZW50PigpO1xuXG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgbGF5b3V0U2VydmljZTogUGVwTGF5b3V0U2VydmljZSwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLm9uUmVzaXplJC5zdWJzY3JpYmUoKHNpemUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2NyZWVuU2l6ZSA9IHNpemU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICAvLyBpZiAodGhpcy5idXR0b25DbGljaykge1xuICAgICAgICAvLyAgICAgdGhpcy5idXR0b25DbGljay51bnN1YnNjcmliZSgpO1xuICAgICAgICAvLyB9XG4gICAgfVxuXG4gICAgLy8gTWF0TWVudSdzIG93biB0cmlnZ2VyIHNldHMgaXRzIGludGVybmFsIGBfcGFuZWxBbmltYXRpb25TdGF0ZWAgdG8gJ2VudGVyJyBzeW5jaHJvbm91c2x5XG4gICAgLy8gcmlnaHQgYWZ0ZXIgdGhpcyBjbGljayBpcyBoYW5kbGVkIChzZWUgTWF0TWVudVRyaWdnZXIub3Blbk1lbnUoKSksIGJ1dCBNYXRNZW51IGlzIGFuXG4gICAgLy8gT25QdXNoIGNvbXBvbmVudCwgc28gdGhhdCBtdXRhdGlvbiBhbG9uZSBuZXZlciBzY2hlZHVsZXMgYSByZS1jaGVjayBvZiBpdHMgdmlldyB3aGVuIHRoaXNcbiAgICAvLyB3aG9sZSB0cmVlIGlzIGJvb3RzdHJhcHBlZCB2aWEgQW5ndWxhciBFbGVtZW50cyAoY3JlYXRlQ3VzdG9tRWxlbWVudCkgcmF0aGVyIHRoYW4gYVxuICAgIC8vIG5vcm1hbGx5LWJvb3RzdHJhcHBlZCBhcHAg4oCUIHRoZSBwYW5lbCBnZXRzIGNyZWF0ZWQgYW5kIGNvcnJlY3RseSBwb3NpdGlvbmVkIGJ5IENESyBPdmVybGF5LFxuICAgIC8vIGJ1dCBzdGF5cyByZW5kZXJlZCBhdCBpdHMgaW5pdGlhbCAndm9pZCcgKG9wYWNpdHk6IDAsIHNjYWxlKDAuOCkpIGtleWZyYW1lIGZvcmV2ZXIuIEEgcGxhaW5cbiAgICAvLyBBbmd1bGFyIGFwcCBoYXBwZW5zIHRvIHBpY2sgdXAgdGhlIGNoYW5nZSB0aHJvdWdoIG90aGVyIENEIGFjdGl2aXR5IGVsc2V3aGVyZSBpbiB0aGUgdHJlZTtcbiAgICAvLyBBbmd1bGFyIEVsZW1lbnRzIGRvZXNuJ3QsIHNvIG51ZGdlIGl0IGV4cGxpY2l0bHksIG9uY2UgdGhlIGN1cnJlbnQgc3luY2hyb25vdXMgY2xpY2tcbiAgICAvLyBkaXNwYXRjaCAod2hpY2ggaXMgd2hhdCBmbGlwcyB0aGUgYW5pbWF0aW9uIHN0YXRlKSBoYXMgZmluaXNoZWQuXG4gICAgb25NZW51VHJpZ2dlckNsaWNrZWQoKTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCkpO1xuICAgIH1cblxuICAgIG9uQnV0dG9uQ2xpY2tlZChldmVudDogRXZlbnQsIGJ1dHRvbjogUGVwQnV0dG9uKTogdm9pZCB7ICAgICAgIFxuICAgICAgICBjb25zdCB1bnNlbGVjdDogYm9vbGVhbiA9IHRoaXMuc3VwcG9ydFVuc2VsZWN0ICYmIHRoaXMuc2VsZWN0ZWRCdXR0b25LZXkgPT09IGJ1dHRvbj8ua2V5O1xuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRCdXR0b25LZXkgPSB1bnNlbGVjdCA/ICcnIDogYnV0dG9uPy5rZXk7XG4gICAgICAgIFxuICAgICAgICBjb25zdCBidXR0b25DbGljayA9IHtcbiAgICAgICAgICAgIHNvdXJjZTogdW5zZWxlY3QgPyBudWxsIDogYnV0dG9uLCBcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChidXR0b24/LmNhbGxiYWNrKSB7XG4gICAgICAgICAgICBidXR0b24uY2FsbGJhY2soYnV0dG9uQ2xpY2spO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5idXR0b25DbGljay5lbWl0KGJ1dHRvbkNsaWNrKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJncm91cC1idXR0b25zLWNvbnRhaW5lclwiIHBlcFJ0bERpcmVjdGlvbj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld1R5cGUgPT09ICdyZWd1bGFyJ1wiPlxuICAgICAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCBidXR0b24gb2YgYnV0dG9uc1wiIFtwZXBEYXRhUWFdPVwiYnV0dG9uPy52YWx1ZVwiXG4gICAgICAgICAgICBjbGFzcz1cInBlcC1idXR0b24gcGVwLXNwYWNpbmctZWxlbWVudCBwdWxsLWxlZnQgZmxpcCBmaXJzdC1idXR0b24ge3sgc2l6ZVR5cGUgfX0ge3sgc3R5bGVUeXBlIH19XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJidXR0b25zRGlzYWJsZWQgfHwgYnV0dG9uLmRpc2FibGVkXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwib25CdXR0b25DbGlja2VkKCRldmVudCwgYnV0dG9uKVwiPlxuICAgICAgICAgICAgPHNwYW4gW3RpdGxlXT1cImJ1dHRvbj8udmFsdWVcIj57eyBidXR0b24/LnZhbHVlIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxkaXYgKm5nSWY9XCJ2aWV3VHlwZSA9PT0gJ2Ryb3Bkb3duJ1wiIGNsYXNzPVwiZHJvcGRvd24tYnV0dG9ucyBwZXAtc3BhY2luZy1lbGVtZW50XCJcbiAgICAgICAgW25nQ2xhc3NdPVwie2Ryb3B1cDogc2NyZWVuU2l6ZSA+PSBQZXBTY3JlZW5TaXplVHlwZS5NRH1cIj5cbiAgICAgICAgPGJ1dHRvbiBbcGVwRGF0YVFhXT1cImJ1dHRvbnNbMF0/LnZhbHVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwicGVwLWJ1dHRvbiBwdWxsLWxlZnQgZmxpcCBmaXJzdC1idXR0b24ge3sgc2l6ZVR5cGUgfX0ge3sgc3R5bGVUeXBlIH19XCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkJ1dHRvbkNsaWNrZWQoJGV2ZW50LCBidXR0b25zWzBdKVwiIFtkaXNhYmxlZF09XCJidXR0b25zRGlzYWJsZWQgfHwgYnV0dG9uc1swXS5kaXNhYmxlZFwiXG4gICAgICAgICAgICBtYXQtYnV0dG9uPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlbGxpcHNpc1wiIFt0aXRsZV09XCJidXR0b25zWzBdPy52YWx1ZVwiPnt7IGJ1dHRvbnNbMF0/LnZhbHVlIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBlcC1idXR0b24gaWNvbi1idXR0b24gcHVsbC1yaWdodCBmbGlwIGxhc3QtYnV0dG9uIHt7IHNpemVUeXBlIH19IHt7IHN0eWxlVHlwZSB9fVwiXG4gICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwiYWN0aW9uc01lbnVcIiBbZGlzYWJsZWRdPVwiYnV0dG9uc0Rpc2FibGVkXCIgcGVwTWVudUJsdXIgbWF0LWJ1dHRvblxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uTWVudVRyaWdnZXJDbGlja2VkKClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8cGVwLWljb24gbmFtZT1cInt7IHNjcmVlblNpemUgPCBQZXBTY3JlZW5TaXplVHlwZS5NRCA/ICdhcnJvd19kb3duJyA6ICdhcnJvd191cCcgfX1cIj5cbiAgICAgICAgICAgICAgICA8L3BlcC1pY29uPlxuICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPG1hdC1tZW51ICNhY3Rpb25zTWVudT1cIm1hdE1lbnVcIiB4UG9zaXRpb249XCJiZWZvcmVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBidXR0b25zOyBsZXQgaSA9IGluZGV4OyBmaXJzdCBhcyBpc0ZpcnN0XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFpc0ZpcnN0XCIgbWF0LW1lbnUtaXRlbSBbcGVwRGF0YVFhXT1cImJ1dHRvbj8udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25CdXR0b25DbGlja2VkKCRldmVudCwgYnV0dG9uKVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBbdGl0bGVdPVwiYnV0dG9uPy52YWx1ZVwiPnt7IGJ1dHRvbj8udmFsdWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9tYXQtbWVudT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJ2aWV3VHlwZSA9PT0gJ3NwbGl0J1wiIGNsYXNzPVwic3BsaXQtYnV0dG9uc1wiPlxuICAgICAgICA8YnV0dG9uICpuZ0Zvcj1cImxldCBidXR0b24gb2YgYnV0dG9uczsgbGV0IGluZGV4OyBsZXQgaXNGaXJzdCA9IGZpcnN0OyBsZXQgaXNMYXN0ID0gbGFzdFwiXG4gICAgICAgICAgICBbcGVwRGF0YVFhXT1cImJ1dHRvbj8udmFsdWVcIiBtYXQtYnV0dG9uIHBlcEJ1dHRvbkJsdXJcbiAgICAgICAgICAgIGNsYXNzPVwicGVwLWJ1dHRvbiB7eyBzaXplVHlwZSB9fSB7eyBzdHlsZVR5cGUgfX0ge3sgYnV0dG9uPy5jbGFzc05hbWVzIH19IHB1bGwtbGVmdCBmbGlwXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJidXR0b25zRGlzYWJsZWQgfHwgYnV0dG9uLmRpc2FibGVkXCIgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICdmaXJzdC1idXR0b24nOiBpc0ZpcnN0LCBcbiAgICAgICAgICAgICAgICAnbWlkZGxlLWJ1dHRvbic6ICFpc0ZpcnN0ICYmICFpc0xhc3QsIFxuICAgICAgICAgICAgICAgICdsYXN0LWJ1dHRvbic6IGlzTGFzdCwgXG4gICAgICAgICAgICAgICAgJ2ljb24tYnV0dG9uJzogYnV0dG9uPy5pY29uTmFtZSAmJiAhYnV0dG9uPy52YWx1ZX1cIiAoY2xpY2spPVwib25CdXR0b25DbGlja2VkKCRldmVudCwgYnV0dG9uKVwiPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlOyBjb250ZXh0OiB7YnV0dG9uOiBidXR0b259XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cInZpZXdUeXBlID09PSAndG9nZ2xlJ1wiIGNsYXNzPVwidG9nZ2xlLWJ1dHRvbnNcIiBbbmdDbGFzc109XCJ7ICdzdHJldGNoJzogc3RyZXRjaCB9XCI+XG4gICAgICAgIDxidXR0b24gKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBidXR0b25zOyBsZXQgaW5kZXg7IGxldCBpc0ZpcnN0ID0gZmlyc3Q7IGxldCBpc0xhc3QgPSBsYXN0XCJcbiAgICAgICAgICAgIFtwZXBEYXRhUWFdPVwiYnV0dG9uPy52YWx1ZVwiIG1hdC1idXR0b24gcGVwQnV0dG9uQmx1clxuICAgICAgICAgICAgY2xhc3M9XCJwZXAtYnV0dG9uIHt7IHNpemVUeXBlIH19IHt7IHN0eWxlVHlwZSB9fSB7eyBidXR0b24/LmNsYXNzTmFtZXMgfX0gcHVsbC1sZWZ0IGZsaXBcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ1dHRvbnNEaXNhYmxlZCB8fCBidXR0b24uZGlzYWJsZWRcIiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ2ZpcnN0LWJ1dHRvbic6IGlzRmlyc3QgJiYgIWlzTGFzdCwgXG4gICAgICAgICAgICAgICAgJ21pZGRsZS1idXR0b24nOiAhaXNGaXJzdCAmJiAhaXNMYXN0LCBcbiAgICAgICAgICAgICAgICAnbGFzdC1idXR0b24nOiBpc0xhc3QgJiYgIWlzRmlyc3QsXG4gICAgICAgICAgICAgICAgJ2ljb24tYnV0dG9uJzogYnV0dG9uPy5pY29uTmFtZSAmJiAhYnV0dG9uPy52YWx1ZSxcbiAgICAgICAgICAgICAgICAnaXMtc2VsZWN0ZWQnOiBidXR0b24/LmtleSAhPT0gJycgJiYgYnV0dG9uPy5rZXkgPT09IHNlbGVjdGVkQnV0dG9uS2V5fVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25CdXR0b25DbGlja2VkKCRldmVudCwgYnV0dG9uKVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRUZW1wbGF0ZTsgY29udGV4dDoge2J1dHRvbjogYnV0dG9ufVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2NvbnRlbnRUZW1wbGF0ZSBsZXQtYnV0dG9uPVwiYnV0dG9uXCI+XG4gICAgPG1hdC1pY29uICpuZ0lmPVwiYnV0dG9uLmljb25OYW1lICYmICghYnV0dG9uLmljb25Qb3NpdGlvbiB8fCBidXR0b24uaWNvblBvc2l0aW9uID09PSAnc3RhcnQnKVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ3B1bGwtbGVmdCBmbGlwJzogYnV0dG9uLnZhbHVlIH1cIj5cbiAgICAgICAgPHBlcC1pY29uIG5hbWU9XCJ7e2J1dHRvbi5pY29uTmFtZX19XCI+PC9wZXAtaWNvbj5cbiAgICA8L21hdC1pY29uPlxuICAgIDxzcGFuICpuZ0lmPVwiYnV0dG9uLnZhbHVlXCIgY2xhc3M9XCJlbGxpcHNpcyBwdWxsLWxlZnQgZmxpcFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2J1dHRvbi10aXRsZS13aXRoLWljb24nOiBidXR0b24uaWNvbk5hbWUsICdpY29uLWJlZm9yZSc6IGJ1dHRvbi5pY29uUG9zaXRpb24gPT09ICdzdGFydCcgfVwiXG4gICAgICAgIFt0aXRsZV09XCJidXR0b24udmFsdWVcIj5cbiAgICAgICAge3tidXR0b24udmFsdWV9fVxuICAgIDwvc3Bhbj5cbiAgICA8bWF0LWljb24gKm5nSWY9XCJidXR0b24uaWNvbk5hbWUgJiYgYnV0dG9uLmljb25Qb3NpdGlvbiA9PT0gJ2VuZCdcIiBbbmdDbGFzc109XCJ7ICdwdWxsLWxlZnQgZmxpcCc6IGJ1dHRvbi52YWx1ZSB9XCI+XG4gICAgICAgIDxwZXAtaWNvbiBuYW1lPVwie3tidXR0b24uaWNvbk5hbWV9fVwiPjwvcGVwLWljb24+XG4gICAgPC9tYXQtaWNvbj5cbjwvbmctdGVtcGxhdGU+Il19
|