UNPKG

theme-lib

Version:

This is a simple example Angular Library published to npm.

193 lines 14.9 kB
/** * @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