com.phloxui
Version:
PhloxUI Ng2+ Framework
246 lines (245 loc) • 17.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, Input, EventEmitter, Output } from '@angular/core';
import { AbstractMenuItem } from './AbstractMenuItem';
import { NeedFocusService } from '../service/NeedFocusService.service';
import { Option } from '../decorator/Option.decorator';
import { I18N } from '../decorator/I18N.decorator';
import { MenuItemModel } from './model/MenuItemModel';
import { EventUtils } from '../share/utils/EventUtils';
import { CHECK_EVENT, UNCHECK_EVENT } from '../share/CustomEventType';
var /** @type {?} */ TYPE_NAME = "phx-check-menu-item";
var CheckMenuItem = /** @class */ (function (_super) {
tslib_1.__extends(CheckMenuItem, _super);
function CheckMenuItem(needFocusService) {
var _this = _super.call(this, needFocusService) || this;
_this._isCheck = false;
_this.checkEvent = new EventEmitter();
_this.uncheckEvent = new EventEmitter();
return _this;
}
/**
* @return {?}
*/
CheckMenuItem.prototype.ngOnInit = /**
* @return {?}
*/
function () {
if (this.model !== null && typeof this.model !== 'undefined') {
var /** @type {?} */ chkModel = this.model;
if (chkModel.checked !== null && typeof chkModel.checked === 'boolean') {
this._isCheck = chkModel.checked;
}
}
};
/**
* @param {?} check
* @return {?}
*/
CheckMenuItem.prototype.setCheck = /**
* @param {?} check
* @return {?}
*/
function (check) {
this._isCheck = check;
};
/**
* @return {?}
*/
CheckMenuItem.prototype.hasModel = /**
* @return {?}
*/
function () {
if (this.model !== null && typeof this.model !== 'undefined') {
return true;
}
return false;
};
/**
* @return {?}
*/
CheckMenuItem.prototype.hasPrefixIcon = /**
* @return {?}
*/
function () {
if (this.model !== null && typeof this.model !== 'undefined') {
var /** @type {?} */ chkModel = this.model;
if (chkModel.prefixIconURL !== null && typeof chkModel.prefixIconURL === 'string') {
return true;
}
}
return false;
};
/**
* @return {?}
*/
CheckMenuItem.prototype.check = /**
* @return {?}
*/
function () {
this.setCheck(true);
var /** @type {?} */ data = null;
var /** @type {?} */ ev = EventUtils.newCustomEvent(CHECK_EVENT, this, data, null);
this.checkEvent.emit(ev);
};
/**
* @return {?}
*/
CheckMenuItem.prototype.uncheck = /**
* @return {?}
*/
function () {
this.setCheck(false);
var /** @type {?} */ data = null;
var /** @type {?} */ ev = EventUtils.newCustomEvent(UNCHECK_EVENT, this, data, null);
this.uncheckEvent.emit(ev);
};
/**
* @return {?}
*/
CheckMenuItem.prototype.getCheckEvent = /**
* @return {?}
*/
function () {
return this.checkEvent;
};
/**
* @param {?} event
* @return {?}
*/
CheckMenuItem.prototype.setCheckEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.checkEvent = event;
};
/**
* @return {?}
*/
CheckMenuItem.prototype.getUncheckEvent = /**
* @return {?}
*/
function () {
return this.uncheckEvent;
};
/**
* @param {?} event
* @return {?}
*/
CheckMenuItem.prototype.setUncheckEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.uncheckEvent = event;
};
/**
* @return {?}
*/
CheckMenuItem.prototype.isCheck = /**
* @return {?}
*/
function () {
return this._isCheck;
};
/**
* @return {?}
*/
CheckMenuItem.prototype.getPrefixIconURL = /**
* @return {?}
*/
function () {
if (this.model === null || typeof this.model === 'undefined') {
return null;
}
return (/** @type {?} */ (this.model)).prefixIconURL;
};
/**
* @return {?}
*/
CheckMenuItem.prototype.getPrefixLabel = /**
* @return {?}
*/
function () {
if (this.model === null || typeof this.model === 'undefined') {
return null;
}
return (/** @type {?} */ (this.model)).prefixLabel;
};
/**
* @return {?}
*/
CheckMenuItem.prototype.getLabel = /**
* @return {?}
*/
function () {
if (this.model === null || typeof this.model === 'undefined') {
return null;
}
return (/** @type {?} */ (this.model)).label;
};
CheckMenuItem.TYPE_NAME = TYPE_NAME;
CheckMenuItem.CHECK_EVENT = CHECK_EVENT;
CheckMenuItem.UNCHECK_EVENT = UNCHECK_EVENT;
CheckMenuItem.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: "<div class=\"phx-check-menu-item\" (click)=\"onClick($event)\">\n\t<div class=\"container\" *ngIf=\"hasModel()\">\n\t\t<div class=\"left\">\n\t\t\t<div *ngIf=\"hasPrefixIcon()\">\n\t\t\t\t<img src=\"{{getPrefixIconURL()}}\">\n\t\t\t</div>\n\t\t\t<div *ngIf=\"!hasPrefixIcon()\">\n\t\t\t\t{{getPrefixLabel()}}\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"center\">{{getLabel()}}</div>\n\t\t<div class=\"right\">\n\t\t\t<div class=\"heavy-check-mark\" *ngIf=\"isCheck()\"></div>\n\t\t</div>\n\t</div>\n</div>\n"
},] },
];
/** @nocollapse */
CheckMenuItem.ctorParameters = function () { return [
{ type: NeedFocusService, },
]; };
CheckMenuItem.propDecorators = {
"model": [{ type: Input },],
"checkEvent": [{ type: Output, args: ['phxCheck',] },],
"uncheckEvent": [{ type: Output, args: ['phxUncheck',] },],
};
tslib_1.__decorate([
Option(),
I18N(),
tslib_1.__metadata("design:type", MenuItemModel)
], CheckMenuItem.prototype, "model", void 0);
tslib_1.__decorate([
Option('check'),
tslib_1.__metadata("design:type", EventEmitter)
], CheckMenuItem.prototype, "checkEvent", void 0);
tslib_1.__decorate([
Option('uncheck'),
tslib_1.__metadata("design:type", EventEmitter)
], CheckMenuItem.prototype, "uncheckEvent", void 0);
return CheckMenuItem;
}(AbstractMenuItem));
export { CheckMenuItem };
function CheckMenuItem_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
CheckMenuItem.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
CheckMenuItem.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
CheckMenuItem.propDecorators;
/** @type {?} */
CheckMenuItem.TYPE_NAME;
/** @type {?} */
CheckMenuItem.CHECK_EVENT;
/** @type {?} */
CheckMenuItem.UNCHECK_EVENT;
/** @type {?} */
CheckMenuItem.prototype._isCheck;
/** @type {?} */
CheckMenuItem.prototype.model;
/** @type {?} */
CheckMenuItem.prototype.checkEvent;
/** @type {?} */
CheckMenuItem.prototype.uncheckEvent;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hlY2tNZW51SXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9jb20ucGhsb3h1aS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnQvQ2hlY2tNZW51SXRlbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFzQixLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUV2RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRW5ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUl0RSxxQkFBTSxTQUFTLEdBQVcscUJBQXFCLENBQUM7O0lBdUJiLHlDQUFnQjtJQXFCakQsdUJBQVksZ0JBQWtDO1FBQTlDLFlBQ0Usa0JBQU0sZ0JBQWdCLENBQUMsU0FJeEI7UUFIQyxLQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixLQUFJLENBQUMsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckMsS0FBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDOztLQUN4Qzs7OztJQUVNLGdDQUFROzs7O1FBQ2IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7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QVcsQ0FBQyxDQUFDLENBQUM7WUFDN0QsTUFBTSxDQUFDLElBQUksQ0FBQztTQUNiO1FBRUQsTUFBTSxDQUFDLG1CQUFNLElBQUksQ0FBQyxLQUFLLEVBQUMsQ0FBQyxXQUFXLENBQUM7Ozs7O0lBR2hDLGdDQUFROzs7O1FBQ2IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDN0QsTUFBTSxDQUFDLElBQUksQ0FBQztTQUNiO1FBRUQsTUFBTSxDQUFDLG1CQUFNLElBQUksQ0FBQyxLQUFLLEVBQUMsQ0FBQyxLQUFLLENBQUM7OzhCQXBIVSxTQUFTO2dDQUVQLFdBQVc7a0NBQ1QsYUFBYTs7Z0JBMUI3RCxTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFO29CQUNuQixRQUFRLEVBQUUsU0FBUztvQkFDbkIsUUFBUSxFQUFFLDZmQWdCWDtpQkFDQTs7OztnQkFuQ1EsZ0JBQWdCOzs7MEJBNkN0QixLQUFLOytCQUtMLE1BQU0sU0FBQyxVQUFVO2lDQUdqQixNQUFNLFNBQUMsWUFBWTs7O1FBUG5CLE1BQU0sRUFBRTtRQUNSLElBQUksRUFBRTswQ0FDVSxhQUFhOzs7UUFHN0IsTUFBTSxDQUFDLE9BQU8sQ0FBQzswQ0FDSSxZQUFZOzs7UUFFL0IsTUFBTSxDQUFDLFNBQVMsQ0FBQzswQ0FDSSxZQUFZOzt3QkF6RHBDO0VBc0NtQyxnQkFBZ0I7U0FBdEMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBFbGVtZW50UmVmLCBJbnB1dCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0TWVudUl0ZW0gfSBmcm9tICcuL0Fic3RyYWN0TWVudUl0ZW0nO1xuaW1wb3J0IHsgTmVlZEZvY3VzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvTmVlZEZvY3VzU2VydmljZS5zZXJ2aWNlJztcblxuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnLi4vZGVjb3JhdG9yL09wdGlvbi5kZWNvcmF0b3InO1xuaW1wb3J0IHsgSTE4TiB9IGZyb20gJy4uL2RlY29yYXRvci9JMThOLmRlY29yYXRvcic7XG5cbmltcG9ydCB7IE1lbnVJdGVtTW9kZWwgfSBmcm9tICcuL21vZGVsL01lbnVJdGVtTW9kZWwnO1xuXG5pbXBvcnQgeyBFdmVudFV0aWxzIH0gZnJvbSAnLi4vc2hhcmUvdXRpbHMvRXZlbnRVdGlscyc7XG5cbmltcG9ydCB7IENIRUNLX0VWRU5ULCBVTkNIRUNLX0VWRU5UIH0gZnJvbSAnLi4vc2hhcmUvQ3VzdG9tRXZlbnRUeXBlJztcblxuZGVjbGFyZSB2YXIgJDogYW55O1xuXG5jb25zdCBUWVBFX05BTUU6IHN0cmluZyA9IFwicGh4LWNoZWNrLW1lbnUtaXRlbVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgbW9kdWxlSWQ6IG1vZHVsZS5pZCxcbiAgc2VsZWN0b3I6IFRZUEVfTkFNRSxcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwicGh4LWNoZWNrLW1lbnUtaXRlbVwiIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIj5cblx0PGRpdiBjbGFzcz1cImNvbnRhaW5lclwiICpuZ0lmPVwiaGFzTW9kZWwoKVwiPlxuXHRcdDxkaXYgY2xhc3M9XCJsZWZ0XCI+XG5cdFx0XHQ8ZGl2ICpuZ0lmPVwiaGFzUHJlZml4SWNvbigpXCI+XG5cdFx0XHRcdDxpbWcgc3JjPVwie3tnZXRQcmVmaXhJY29uVVJMKCl9fVwiPlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2ICpuZ0lmPVwiIWhhc1ByZWZpeEljb24oKVwiPlxuXHRcdFx0XHR7e2dldFByZWZpeExhYmVsKCl9fVxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiBjbGFzcz1cImNlbnRlclwiPnt7Z2V0TGFiZWwoKX19PC9kaXY+XG5cdFx0PGRpdiBjbGFzcz1cInJpZ2h0XCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiaGVhdnktY2hlY2stbWFya1wiICpuZ0lmPVwiaXNDaGVjaygpXCI+PC9kaXY+XG5cdFx0PC9kaXY+XG5cdDwvZGl2PlxuPC9kaXY+XG5gXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrTWVudUl0ZW0gZXh0ZW5kcyBBYnN0cmFjdE1lbnVJdGVtIGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRZUEVfTkFNRTogc3RyaW5nID0gVFlQRV9OQU1FO1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0hFQ0tfRVZFTlQ6IHN0cmluZyA9IENIRUNLX0VWRU5UO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFVOQ0hFQ0tfRVZFTlQ6IHN0cmluZyA9IFVOQ0hFQ0tfRVZFTlQ7XG5cbiAgcHJpdmF0ZSBfaXNDaGVjazogYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgQEkxOE4oKVxuICBwcm90ZWN0ZWQgbW9kZWw6IE1lbnVJdGVtTW9kZWw7XG5cbiAgQE91dHB1dCgncGh4Q2hlY2snKVxuICBAT3B0aW9uKCdjaGVjaycpXG4gIHByaXZhdGUgY2hlY2tFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPdXRwdXQoJ3BoeFVuY2hlY2snKVxuICBAT3B0aW9uKCd1bmNoZWNrJylcbiAgcHJpdmF0ZSB1bmNoZWNrRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKG5lZWRGb2N1c1NlcnZpY2U6IE5lZWRGb2N1c1NlcnZpY2UpIHtcbiAgICBzdXBlcihuZWVkRm9jdXNTZXJ2aWNlKTtcbiAgICB0aGlzLl9pc0NoZWNrID0gZmFsc2U7XG4gICAgdGhpcy5jaGVja0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIHRoaXMudW5jaGVja0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vZGVsICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLm1vZGVsICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgbGV0IGNoa01vZGVsOiBhbnkgPSB0aGlzLm1vZGVsO1xuICAgICAgaWYgKGNoa01vZGVsLmNoZWNrZWQgIT09IG51bGwgJiYgdHlwZW9mIGNoa01vZGVsLmNoZWNrZWQgPT09ICdib29sZWFuJykge1xuICAgICAgICB0aGlzLl9pc0NoZWNrID0gY2hrTW9kZWwuY2hlY2tlZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldENoZWNrKGNoZWNrOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5faXNDaGVjayA9IGNoZWNrO1xuICB9XG5cbiAgcHVibGljIGhhc01vZGVsKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLm1vZGVsICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLm1vZGVsICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNQcmVmaXhJY29uKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLm1vZGVsICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLm1vZGVsICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgbGV0IGNoa01vZGVsOiBhbnkgPSB0aGlzLm1vZGVsO1xuICAgICAgaWYgKGNoa01vZGVsLnByZWZpeEljb25VUkwgIT09IG51bGwgJiYgdHlwZW9mIGNoa01vZGVsLnByZWZpeEljb25VUkwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBjaGVjaygpOiB2b2lkIHtcbiAgICB0aGlzLnNldENoZWNrKHRydWUpO1xuXG4gICAgbGV0IGRhdGE6IGFueSA9IG51bGw7XG4gICAgbGV0IGV2ID0gRXZlbnRVdGlscy5uZXdDdXN0b21FdmVudChDSEVDS19FVkVOVCwgdGhpcywgZGF0YSwgbnVsbCk7XG5cbiAgICB0aGlzLmNoZWNrRXZlbnQuZW1pdChldik7XG4gIH1cblxuICBwdWJsaWMgdW5jaGVjaygpOiB2b2lkIHtcbiAgICB0aGlzLnNldENoZWNrKGZhbHNlKTtcblxuICAgIGxldCBkYXRhOiBhbnkgPSBudWxsO1xuICAgIGxldCBldiA9IEV2ZW50VXRpbHMubmV3Q3VzdG9tRXZlbnQoVU5DSEVDS19FVkVOVCwgdGhpcywgZGF0YSwgbnVsbCk7XG5cbiAgICB0aGlzLnVuY2hlY2tFdmVudC5lbWl0KGV2KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDaGVja0V2ZW50KCk6IEV2ZW50RW1pdHRlcjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5jaGVja0V2ZW50O1xuICB9XG5cbiAgcHVibGljIHNldENoZWNrRXZlbnQoZXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+KTogdm9pZCB7XG4gICAgdGhpcy5jaGVja0V2ZW50ID0gZXZlbnQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0VW5jaGVja0V2ZW50KCk6IEV2ZW50RW1pdHRlcjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy51bmNoZWNrRXZlbnQ7XG4gIH1cblxuICBwdWJsaWMgc2V0VW5jaGVja0V2ZW50KGV2ZW50OiBFdmVudEVtaXR0ZXI8YW55Pik6IHZvaWQge1xuICAgIHRoaXMudW5jaGVja0V2ZW50ID0gZXZlbnQ7XG4gIH1cblxuICBwdWJsaWMgaXNDaGVjaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNDaGVjaztcbiAgfVxuXG4gIHB1YmxpYyBnZXRQcmVmaXhJY29uVVJMKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMubW9kZWwgPT09IG51bGwgfHwgdHlwZW9mIHRoaXMubW9kZWwgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gKDxhbnk+dGhpcy5tb2RlbCkucHJlZml4SWNvblVSTDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRQcmVmaXhMYWJlbCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLm1vZGVsID09PSBudWxsIHx8IHR5cGVvZiB0aGlzLm1vZGVsID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuICg8YW55PnRoaXMubW9kZWwpLnByZWZpeExhYmVsO1xuICB9XG5cbiAgcHVibGljIGdldExhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMubW9kZWwgPT09IG51bGwgfHwgdHlwZW9mIHRoaXMubW9kZWwgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gKDxhbnk+dGhpcy5tb2RlbCkubGFiZWw7XG4gIH1cbn1cbiJdfQ==