theme-lib
Version:
This is a simple example Angular Library published to npm.
193 lines • 14.9 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/*
* @license
* Copyright Akveo. All Rights Reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*/
import { Inject, Injectable } from '@angular/core';
import { ReplaySubject, Subject } from 'rxjs';
import { map, filter, pairwise, distinctUntilChanged, startWith, share } from 'rxjs/operators';
import { NB_THEME_OPTIONS } from '../theme.options';
import { NbJSThemesRegistry } from './js-themes-registry.service';
import { NbMediaBreakpointsService } from './breakpoints.service';
/*
* Main Nebular service. Includes various helper methods.
*/
export class NbThemeService {
/**
* @param {?} options
* @param {?} breakpointService
* @param {?} jsThemesRegistry
*/
constructor(options, breakpointService, jsThemesRegistry) {
this.options = options;
this.breakpointService = breakpointService;
this.jsThemesRegistry = jsThemesRegistry;
this.themeChanges$ = new ReplaySubject(1);
this.appendLayoutClass$ = new Subject();
this.removeLayoutClass$ = new Subject();
this.changeWindowWidth$ = new ReplaySubject(2);
if (options && options.name) {
this.changeTheme(options.name);
}
}
/*
* Change current application theme
* @param {string} name
*/
/**
* @param {?} name
* @return {?}
*/
changeTheme(name) {
this.themeChanges$.next({ name, previous: this.currentTheme });
this.currentTheme = name;
}
/**
* @param {?} width
* @return {?}
*/
changeWindowWidth(width) {
this.changeWindowWidth$.next(width);
}
/*
* Returns a theme object with variables (color/paddings/etc) on a theme change.
* Once subscribed - returns current theme.
*
* @returns {Observable<NbJSThemeOptions>}
*/
/**
* @return {?}
*/
getJsTheme() {
return this.onThemeChange().pipe(map((theme) => {
return this.jsThemesRegistry.get(theme.name);
}));
}
/*
* Triggers media query breakpoint change
* Returns a pair where the first item is previous media breakpoint and the second item is current breakpoit.
* ```ts
* [{ name: 'xs', width: 0 }, { name: 'md', width: 768 }] // change from `xs` to `md`
* ```
* @returns {Observable<[NbMediaBreakpoint, NbMediaBreakpoint]>}
*/
/**
* @return {?}
*/
onMediaQueryChange() {
return this.changeWindowWidth$
.pipe(startWith(undefined), pairwise(), map(([prevWidth, width]) => {
return [
this.breakpointService.getByWidth(prevWidth),
this.breakpointService.getByWidth(width),
];
}), filter(([prevPoint, point]) => {
return prevPoint.name !== point.name;
}), distinctUntilChanged(null, params => params[0].name + params[1].name), share());
}
/*
* Triggered when current theme is changed
* @returns {Observable<any>}
*/
/**
* @return {?}
*/
onThemeChange() {
return this.themeChanges$.pipe(share());
}
/*
* Append a class to nb-layout
* @param {string} className
*/
/**
* @param {?} className
* @return {?}
*/
appendLayoutClass(className) {
this.appendLayoutClass$.next(className);
}
/*
* Triggered when a new class is added to nb-layout through `appendLayoutClass` method
* @returns {Observable<any>}
*/
/**
* @return {?}
*/
onAppendLayoutClass() {
return this.appendLayoutClass$.pipe(share());
}
/*
* Removes a class from nb-layout
* @param {string} className
*/
/**
* @param {?} className
* @return {?}
*/
removeLayoutClass(className) {
this.removeLayoutClass$.next(className);
}
/*
* Triggered when a class is removed from nb-layout through `removeLayoutClass` method
* @returns {Observable<any>}
*/
/**
* @return {?}
*/
onRemoveLayoutClass() {
return this.removeLayoutClass$.pipe(share());
}
}
NbThemeService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
NbThemeService.ctorParameters = () => [
{ type: undefined, decorators: [{ type: Inject, args: [NB_THEME_OPTIONS,] }] },
{ type: NbMediaBreakpointsService },
{ type: NbJSThemesRegistry }
];
if (false) {
/** @type {?} */
NbThemeService.prototype.currentTheme;
/**
* @type {?}
* @private
*/
NbThemeService.prototype.themeChanges$;
/**
* @type {?}
* @private
*/
NbThemeService.prototype.appendLayoutClass$;
/**
* @type {?}
* @private
*/
NbThemeService.prototype.removeLayoutClass$;
/**
* @type {?}
* @private
*/
NbThemeService.prototype.changeWindowWidth$;
/**
* @type {?}
* @protected
*/
NbThemeService.prototype.options;
/**
* @type {?}
* @private
*/
NbThemeService.prototype.breakpointService;
/**
* @type {?}
* @private
*/
NbThemeService.prototype.jsThemesRegistry;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3RoZW1lLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy90aGVtZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQU1BLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBYyxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFcEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHlCQUF5QixFQUFxQixNQUFNLHVCQUF1QixDQUFDOzs7O0FBTXJGLE1BQU0sT0FBTyxjQUFjOzs7Ozs7SUFTekIsWUFBZ0QsT0FBWSxFQUN4QyxpQkFBNEMsRUFDNUMsZ0JBQW9DO1FBRlIsWUFBTyxHQUFQLE9BQU8sQ0FBSztRQUN4QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQTJCO1FBQzVDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0I7UUFQaEQsa0JBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQyx1QkFBa0IsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ25DLHVCQUFrQixHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDbkMsdUJBQWtCLEdBQUcsSUFBSSxhQUFhLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFLeEQsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksRUFBRTtZQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUM7Ozs7Ozs7OztJQU1ELFdBQVcsQ0FBQyxJQUFZO1FBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDOzs7OztJQUVELGlCQUFpQixDQUFDLEtBQWE7UUFDN0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDOzs7Ozs7Ozs7O0lBUUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FDOUIsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7WUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7Ozs7Ozs7Ozs7O0lBVUQsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQjthQUMzQixJQUFJLENBQ0gsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUNwQixRQUFRLEVBQUUsRUFDVixHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQW1CLEVBQUUsRUFBRTtZQUMzQyxPQUFPO2dCQUNMLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO2dCQUM1QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQzthQUN6QyxDQUFBO1FBQ0gsQ0FBQyxDQUFDLEVBQ0YsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUF5QyxFQUFFLEVBQUU7WUFDcEUsT0FBTyxTQUFTLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDdkMsQ0FBQyxDQUFDLEVBQ0Ysb0JBQW9CLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQ3JFLEtBQUssRUFBRSxDQUNSLENBQUM7SUFDTixDQUFDOzs7Ozs7OztJQU1ELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQzs7Ozs7Ozs7O0lBTUQsaUJBQWlCLENBQUMsU0FBaUI7UUFDakMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxQyxDQUFDOzs7Ozs7OztJQU1ELG1CQUFtQjtRQUNqQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDOzs7Ozs7Ozs7SUFNRCxpQkFBaUIsQ0FBQyxTQUFpQjtRQUNqQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7Ozs7Ozs7O0lBTUQsbUJBQW1CO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7OztZQTlHRixVQUFVOzs7OzRDQVVJLE1BQU0sU0FBQyxnQkFBZ0I7WUFmN0IseUJBQXlCO1lBRHpCLGtCQUFrQjs7OztJQVV6QixzQ0FBcUI7Ozs7O0lBQ3JCLHVDQUE2Qzs7Ozs7SUFDN0MsNENBQTJDOzs7OztJQUMzQyw0Q0FBMkM7Ozs7O0lBQzNDLDRDQUEwRDs7Ozs7SUFFOUMsaUNBQWdEOzs7OztJQUNoRCwyQ0FBb0Q7Ozs7O0lBQ3BELDBDQUE0QyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBsaWNlbnNlXHJcbiAqIENvcHlyaWdodCBBa3Zlby4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cclxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgTGljZW5zZS50eHQgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi5cclxuICovXHJcblxyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCBmaWx0ZXIsIHBhaXJ3aXNlLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc3RhcnRXaXRoLCBzaGFyZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IE5CX1RIRU1FX09QVElPTlMgfSBmcm9tICcuLi90aGVtZS5vcHRpb25zJztcclxuaW1wb3J0IHsgTmJKU1RoZW1lT3B0aW9ucyB9IGZyb20gJy4vanMtdGhlbWVzL3RoZW1lLm9wdGlvbnMnO1xyXG5pbXBvcnQgeyBOYkpTVGhlbWVzUmVnaXN0cnkgfSBmcm9tICcuL2pzLXRoZW1lcy1yZWdpc3RyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmJNZWRpYUJyZWFrcG9pbnRzU2VydmljZSwgTmJNZWRpYUJyZWFrcG9pbnQgfSBmcm9tICcuL2JyZWFrcG9pbnRzLnNlcnZpY2UnO1xyXG5cclxuLypcclxuICogTWFpbiBOZWJ1bGFyIHNlcnZpY2UuIEluY2x1ZGVzIHZhcmlvdXMgaGVscGVyIG1ldGhvZHMuXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBOYlRoZW1lU2VydmljZSB7XHJcblxyXG4gIC8vIFRPRE86IGJlaGF2aW9yYWwgc3ViamVjdCBoZXJlP1xyXG4gIGN1cnJlbnRUaGVtZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgdGhlbWVDaGFuZ2VzJCA9IG5ldyBSZXBsYXlTdWJqZWN0KDEpO1xyXG4gIHByaXZhdGUgYXBwZW5kTGF5b3V0Q2xhc3MkID0gbmV3IFN1YmplY3QoKTtcclxuICBwcml2YXRlIHJlbW92ZUxheW91dENsYXNzJCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgcHJpdmF0ZSBjaGFuZ2VXaW5kb3dXaWR0aCQgPSBuZXcgUmVwbGF5U3ViamVjdDxudW1iZXI+KDIpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KE5CX1RIRU1FX09QVElPTlMpIHByb3RlY3RlZCBvcHRpb25zOiBhbnksXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBicmVha3BvaW50U2VydmljZTogTmJNZWRpYUJyZWFrcG9pbnRzU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGpzVGhlbWVzUmVnaXN0cnk6IE5iSlNUaGVtZXNSZWdpc3RyeSkge1xyXG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5uYW1lKSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlVGhlbWUob3B0aW9ucy5uYW1lKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICogQ2hhbmdlIGN1cnJlbnQgYXBwbGljYXRpb24gdGhlbWVcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxyXG4gICAqL1xyXG4gIGNoYW5nZVRoZW1lKG5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy50aGVtZUNoYW5nZXMkLm5leHQoeyBuYW1lLCBwcmV2aW91czogdGhpcy5jdXJyZW50VGhlbWUgfSk7XHJcbiAgICB0aGlzLmN1cnJlbnRUaGVtZSA9IG5hbWU7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VXaW5kb3dXaWR0aCh3aWR0aDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmNoYW5nZVdpbmRvd1dpZHRoJC5uZXh0KHdpZHRoKTtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICogUmV0dXJucyBhIHRoZW1lIG9iamVjdCB3aXRoIHZhcmlhYmxlcyAoY29sb3IvcGFkZGluZ3MvZXRjKSBvbiBhIHRoZW1lIGNoYW5nZS5cclxuICAgKiBPbmNlIHN1YnNjcmliZWQgLSByZXR1cm5zIGN1cnJlbnQgdGhlbWUuXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxOYkpTVGhlbWVPcHRpb25zPn1cclxuICAgKi9cclxuICBnZXRKc1RoZW1lKCk6IE9ic2VydmFibGU8TmJKU1RoZW1lT3B0aW9ucz4ge1xyXG4gICAgcmV0dXJuIHRoaXMub25UaGVtZUNoYW5nZSgpLnBpcGUoXHJcbiAgICAgIG1hcCgodGhlbWU6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmpzVGhlbWVzUmVnaXN0cnkuZ2V0KHRoZW1lLm5hbWUpO1xyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAqIFRyaWdnZXJzIG1lZGlhIHF1ZXJ5IGJyZWFrcG9pbnQgY2hhbmdlXHJcbiAgICogUmV0dXJucyBhIHBhaXIgd2hlcmUgdGhlIGZpcnN0IGl0ZW0gaXMgcHJldmlvdXMgbWVkaWEgYnJlYWtwb2ludCBhbmQgdGhlIHNlY29uZCBpdGVtIGlzIGN1cnJlbnQgYnJlYWtwb2l0LlxyXG4gICAqIGBgYHRzXHJcbiAgICogIFt7IG5hbWU6ICd4cycsIHdpZHRoOiAwIH0sIHsgbmFtZTogJ21kJywgd2lkdGg6IDc2OCB9XSAvLyBjaGFuZ2UgZnJvbSBgeHNgIHRvIGBtZGBcclxuICAgKiBgYGBcclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxbTmJNZWRpYUJyZWFrcG9pbnQsIE5iTWVkaWFCcmVha3BvaW50XT59XHJcbiAgICovXHJcbiAgb25NZWRpYVF1ZXJ5Q2hhbmdlKCk6IE9ic2VydmFibGU8TmJNZWRpYUJyZWFrcG9pbnRbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hhbmdlV2luZG93V2lkdGgkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQpLFxyXG4gICAgICAgIHBhaXJ3aXNlKCksXHJcbiAgICAgICAgbWFwKChbcHJldldpZHRoLCB3aWR0aF06IFtudW1iZXIsIG51bWJlcl0pID0+IHtcclxuICAgICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgIHRoaXMuYnJlYWtwb2ludFNlcnZpY2UuZ2V0QnlXaWR0aChwcmV2V2lkdGgpLFxyXG4gICAgICAgICAgICB0aGlzLmJyZWFrcG9pbnRTZXJ2aWNlLmdldEJ5V2lkdGgod2lkdGgpLFxyXG4gICAgICAgICAgXVxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGZpbHRlcigoW3ByZXZQb2ludCwgcG9pbnRdOiBbTmJNZWRpYUJyZWFrcG9pbnQsIE5iTWVkaWFCcmVha3BvaW50XSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHByZXZQb2ludC5uYW1lICE9PSBwb2ludC5uYW1lO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKG51bGwsIHBhcmFtcyA9PiBwYXJhbXNbMF0ubmFtZSArIHBhcmFtc1sxXS5uYW1lKSxcclxuICAgICAgICBzaGFyZSgpLFxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgKiBUcmlnZ2VyZWQgd2hlbiBjdXJyZW50IHRoZW1lIGlzIGNoYW5nZWRcclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxhbnk+fVxyXG4gICAqL1xyXG4gIG9uVGhlbWVDaGFuZ2UoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnRoZW1lQ2hhbmdlcyQucGlwZShzaGFyZSgpKTtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICogQXBwZW5kIGEgY2xhc3MgdG8gbmItbGF5b3V0XHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzTmFtZVxyXG4gICAqL1xyXG4gIGFwcGVuZExheW91dENsYXNzKGNsYXNzTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmFwcGVuZExheW91dENsYXNzJC5uZXh0KGNsYXNzTmFtZSk7XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAqIFRyaWdnZXJlZCB3aGVuIGEgbmV3IGNsYXNzIGlzIGFkZGVkIHRvIG5iLWxheW91dCB0aHJvdWdoIGBhcHBlbmRMYXlvdXRDbGFzc2AgbWV0aG9kXHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8YW55Pn1cclxuICAgKi9cclxuICBvbkFwcGVuZExheW91dENsYXNzKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5hcHBlbmRMYXlvdXRDbGFzcyQucGlwZShzaGFyZSgpKTtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICogUmVtb3ZlcyBhIGNsYXNzIGZyb20gbmItbGF5b3V0XHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzTmFtZVxyXG4gICAqL1xyXG4gIHJlbW92ZUxheW91dENsYXNzKGNsYXNzTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnJlbW92ZUxheW91dENsYXNzJC5uZXh0KGNsYXNzTmFtZSk7XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAqIFRyaWdnZXJlZCB3aGVuIGEgY2xhc3MgaXMgcmVtb3ZlZCBmcm9tIG5iLWxheW91dCB0aHJvdWdoIGByZW1vdmVMYXlvdXRDbGFzc2AgbWV0aG9kXHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8YW55Pn1cclxuICAgKi9cclxuICBvblJlbW92ZUxheW91dENsYXNzKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5yZW1vdmVMYXlvdXRDbGFzcyQucGlwZShzaGFyZSgpKTtcclxuICB9XHJcbn1cclxuIl19