ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
305 lines (304 loc) • 19.9 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { Injectable, ApplicationRef, Compiler, NgZone, ComponentFactoryResolver, } from '@angular/core';
import { ToastComponent } from './toast.component';
import { ToastOptions } from './toast-options.provider';
/**
* @record
*/
export function ConfigInterface() { }
/** @type {?|undefined} */
ConfigInterface.prototype.content;
/** @type {?|undefined} */
ConfigInterface.prototype.iconType;
/** @type {?|undefined} */
ConfigInterface.prototype.mask;
var Toast = /** @class */ (function () {
function Toast(_appRef, _compiler, _cfr, _zone) {
this._appRef = _appRef;
this._compiler = _compiler;
this._cfr = _cfr;
this._zone = _zone;
Toast._zone = this._zone;
Toast._appRef = this._appRef;
Toast._toastCompFactory = this._cfr.resolveComponentFactory(ToastComponent);
}
/**
* @param {?} config
* @param {?} options
* @return {?}
*/
Toast._initConfig = /**
* @param {?} config
* @param {?} options
* @return {?}
*/
function (config, options) {
/** @type {?} */
var props = {};
/** @type {?} */
var optionalParams = ['content', 'iconType', 'mask'];
config = Object.assign(options, config);
optionalParams.forEach(function (key) {
if (config[key] !== undefined) {
props[key] = config[key];
}
});
/** @type {?} */
var iconType = {
info: '',
success: 'success',
fail: 'fail',
offline: 'dislike',
loading: 'loading'
}[options.iconType];
props['iconType'] = iconType;
props['mask'] = options.mask;
return props;
};
/**
* @param {?} config
* @param {?} type
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @return {?}
*/
Toast.notice = /**
* @param {?} config
* @param {?} type
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @return {?}
*/
function (config, type, timeInterval, onClose, mask) {
if (timeInterval === void 0) { timeInterval = 2000; }
if (mask === void 0) { mask = true; }
// 如果已经存在,在没有遮罩层的情况下,会响应别的toast,需要清除原来的
if (Toast.compRef) {
Toast.hide();
}
/** @type {?} */
var options = new ToastOptions();
options.iconType = type;
options.mask = mask;
/** @type {?} */
var props = Toast._initConfig(config, options);
document.body.insertBefore(document.createElement(Toast._toastCompFactory.selector), document.body.firstChild);
/** @type {?} */
var instance;
/** @type {?} */
var subject;
Toast.compRef = Toast._appRef.bootstrap(Toast._toastCompFactory);
instance = Toast.compRef.instance;
subject = instance.subject;
if (timeInterval) {
Toast.timeout = setTimeout(function () {
if (onClose) {
onClose();
}
Toast.hide();
}, timeInterval);
}
Object.assign(instance, props);
return subject;
};
/**
* Open info dialog
*/
/**
* Open info dialog
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @return {?}
*/
Toast.info = /**
* Open info dialog
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @return {?}
*/
function (content, timeInterval, onClose, mask) {
/** @type {?} */
var config = Object.assign({
iconType: 'info',
content: content
});
return Toast.notice(config, 'info', timeInterval, onClose, mask);
};
/**
* Open success dialog
*/
/**
* Open success dialog
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @return {?}
*/
Toast.success = /**
* Open success dialog
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @return {?}
*/
function (content, timeInterval, onClose, mask) {
/** @type {?} */
var config = Object.assign({
iconType: 'success',
content: content
});
return Toast.notice(config, 'success', timeInterval, onClose, mask);
};
/**
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} mask
* @return {?}
*/
Toast.show = /**
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} mask
* @return {?}
*/
function (content, timeInterval, mask) {
/** @type {?} */
var config = Object.assign({
iconType: 'info',
content: content
});
return Toast.notice(config, 'info', timeInterval, function () { }, mask);
};
/**
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @return {?}
*/
Toast.fail = /**
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @return {?}
*/
function (content, timeInterval, onClose, mask) {
/** @type {?} */
var config = Object.assign({
iconType: 'fail',
content: content
});
return Toast.notice(config, 'fail', timeInterval, onClose, mask);
};
/**
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @return {?}
*/
Toast.offline = /**
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @return {?}
*/
function (content, timeInterval, onClose, mask) {
/** @type {?} */
var config = Object.assign({
iconType: 'offline',
content: content
});
return Toast.notice(config, 'offline', timeInterval, onClose, mask);
};
/**
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @return {?}
*/
Toast.loading = /**
* @param {?=} content
* @param {?=} timeInterval
* @param {?=} onClose
* @param {?=} mask
* @return {?}
*/
function (content, timeInterval, onClose, mask) {
/** @type {?} */
var config = Object.assign({
iconType: 'loading',
content: content
});
return Toast.notice(config, 'loading', timeInterval, onClose, mask);
};
/**
* @return {?}
*/
Toast.hide = /**
* @return {?}
*/
function () {
if (Toast.timeout) {
clearTimeout(Toast.timeout);
}
if (Toast.compRef) {
Toast._zone.run(function () {
Toast.compRef.destroy();
});
Toast.compRef = null;
}
};
Toast.timeout = null;
Toast._zone = null;
Toast.compRef = null;
Toast._toastCompFactory = null;
Toast._appRef = null;
Toast.decorators = [
{ type: Injectable }
];
/** @nocollapse */
Toast.ctorParameters = function () { return [
{ type: ApplicationRef },
{ type: Compiler },
{ type: ComponentFactoryResolver },
{ type: NgZone }
]; };
return Toast;
}());
export { Toast };
if (false) {
/** @type {?} */
Toast.timeout;
/** @type {?} */
Toast._zone;
/** @type {?} */
Toast.compRef;
/** @type {?} */
Toast._toastCompFactory;
/** @type {?} */
Toast._appRef;
/** @type {?} */
Toast.prototype._appRef;
/** @type {?} */
Toast.prototype._compiler;
/** @type {?} */
Toast.prototype._cfr;
/** @type {?} */
Toast.prototype._zone;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsidG9hc3QvdG9hc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNMLFVBQVUsRUFHVixjQUFjLEVBQ2QsUUFBUSxFQUNSLE1BQU0sRUFDTix3QkFBd0IsR0FDekIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7Ozs7O0lBZ0J0RCxlQUFvQixPQUF1QixFQUFVLFNBQW1CLEVBQVUsSUFBOEIsRUFBVSxLQUFhO1FBQW5ILFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUFVLFNBQUksR0FBSixJQUFJLENBQTBCO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNySSxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDekIsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzdCLEtBQUssQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGNBQWMsQ0FBQyxDQUFDO0tBQzdFOzs7Ozs7SUFFTSxpQkFBVzs7Ozs7SUFBbEIsVUFBbUIsTUFBYyxFQUFFLE9BQXFCOztRQUN0RCxJQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7O1FBQ2pCLElBQU0sY0FBYyxHQUFhLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVqRSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDeEMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFBLEdBQUc7WUFDeEIsSUFB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LFVBQWUsT0FBZ0IsRUFBRSxZQUFxQixFQUFFLE9BQW9CLEVBQUUsSUFBYzs7UUFDMUYsSUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUMzQixRQUFRLEVBQUUsU0FBUztZQUNuQixPQUFPLEVBQUUsT0FBTztTQUNqQixDQUFDLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ3JFOzs7O0lBRU0sVUFBSTs7O0lBQVg7UUFDRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDakIsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM3QjtRQUNELElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNqQixLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztnQkFDZCxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ3pCLENBQUMsQ0FBQztZQUNILEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1NBQ3RCO0tBQ0Y7b0JBbklnQixJQUFJO2tCQUNFLElBQUk7b0JBQ1MsSUFBSTs4QkFDcUIsSUFBSTtvQkFDaEMsSUFBSTs7Z0JBTnRDLFVBQVU7Ozs7Z0JBZFQsY0FBYztnQkFDZCxRQUFRO2dCQUVSLHdCQUF3QjtnQkFEeEIsTUFBTTs7Z0JBTlI7O1NBbUJhLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3RhYmxlLFxuICBDb21wb25lbnRSZWYsXG4gIENvbXBvbmVudEZhY3RvcnksXG4gIEFwcGxpY2F0aW9uUmVmLFxuICBDb21waWxlcixcbiAgTmdab25lLFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVG9hc3RDb21wb25lbnQgfSBmcm9tICcuL3RvYXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb2FzdE9wdGlvbnMgfSBmcm9tICcuL3RvYXN0LW9wdGlvbnMucHJvdmlkZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ0ludGVyZmFjZSB7XG4gIGNvbnRlbnQ/OiBhbnk7XG4gIGljb25UeXBlPzogc3RyaW5nO1xuICBtYXNrPzogYm9vbGVhbjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRvYXN0IHtcbiAgc3RhdGljIHRpbWVvdXQgPSBudWxsO1xuICBzdGF0aWMgX3pvbmU6IE5nWm9uZSA9IG51bGw7XG4gIHN0YXRpYyBjb21wUmVmOiBDb21wb25lbnRSZWY8YW55PiA9IG51bGw7XG4gIHN0YXRpYyBfdG9hc3RDb21wRmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeTxUb2FzdENvbXBvbmVudD4gPSBudWxsO1xuICBzdGF0aWMgX2FwcFJlZjogQXBwbGljYXRpb25SZWYgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2FwcFJlZjogQXBwbGljYXRpb25SZWYsIHByaXZhdGUgX2NvbXBpbGVyOiBDb21waWxlciwgcHJpdmF0ZSBfY2ZyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIHByaXZhdGUgX3pvbmU6IE5nWm9uZSkge1xuICAgIFRvYXN0Ll96b25lID0gdGhpcy5fem9uZTtcbiAgICBUb2FzdC5fYXBwUmVmID0gdGhpcy5fYXBwUmVmO1xuICAgIFRvYXN0Ll90b2FzdENvbXBGYWN0b3J5ID0gdGhpcy5fY2ZyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFRvYXN0Q29tcG9uZW50KTtcbiAgfVxuXG4gIHN0YXRpYyBfaW5pdENvbmZpZyhjb25maWc6IE9iamVjdCwgb3B0aW9uczogVG9hc3RPcHRpb25zKTogT2JqZWN0IHtcbiAgICBjb25zdCBwcm9wcyA9IHt9O1xuICAgIGNvbnN0IG9wdGlvbmFsUGFyYW1zOiBzdHJpbmdbXSA9IFsnY29udGVudCcsICdpY29uVHlwZScsICdtYXNrJ107XG5cbiAgICBjb25maWcgPSBPYmplY3QuYXNzaWduKG9wdGlvbnMsIGNvbmZpZyk7XG4gICAgb3B0aW9uYWxQYXJhbXMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKGNvbmZpZ1trZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcHJvcHNba2V5XSA9IGNvbmZpZ1trZXldO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgaWNvblR5cGUgPSB7XG4gICAgICBpbmZvOiAnJyxcbiAgICAgIHN1Y2Nlc3M6ICdzdWNjZXNzJyxcbiAgICAgIGZhaWw6ICdmYWlsJyxcbiAgICAgIG9mZmxpbmU6ICdkaXNsaWtlJyxcbiAgICAgIGxvYWRpbmc6ICdsb2FkaW5nJ1xuICAgIH1bb3B0aW9ucy5pY29uVHlwZV07XG5cbiAgICBwcm9wc1snaWNvblR5cGUnXSA9IGljb25UeXBlO1xuICAgIHByb3BzWydtYXNrJ10gPSBvcHRpb25zLm1hc2s7XG4gICAgcmV0dXJuIHByb3BzO1xuICB9XG5cbiAgc3RhdGljIG5vdGljZShjb25maWc6IENvbmZpZ0ludGVyZmFjZSwgdHlwZSwgdGltZUludGVydmFsID0gMjAwMCwgb25DbG9zZSwgbWFzayA9IHRydWUpIHtcbiAgICAvLyDlpoLmnpzlt7Lnu4/lrZjlnKjvvIzlnKjmsqHmnInpga7nvanlsYLnmoTmg4XlhrXkuIvvvIzkvJrlk43lupTliKvnmoR0b2FzdO+8jOmcgOimgea4hemZpOWOn+adpeeahFxuICAgIGlmIChUb2FzdC5jb21wUmVmKSB7XG4gICAgICBUb2FzdC5oaWRlKCk7XG4gICAgfVxuICAgIGNvbnN0IG9wdGlvbnM6IFRvYXN0T3B0aW9ucyA9IG5ldyBUb2FzdE9wdGlvbnMoKTtcbiAgICBvcHRpb25zLmljb25UeXBlID0gdHlwZTtcbiAgICBvcHRpb25zLm1hc2sgPSBtYXNrO1xuICAgIGNvbnN0IHByb3BzID0gVG9hc3QuX2luaXRDb25maWcoY29uZmlnLCBvcHRpb25zKTtcblxuICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoVG9hc3QuX3RvYXN0Q29tcEZhY3Rvcnkuc2VsZWN0b3IpLCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpO1xuICAgIGxldCBpbnN0YW5jZTogYW55O1xuICAgIGxldCBzdWJqZWN0OiBhbnk7XG5cbiAgICBUb2FzdC5jb21wUmVmID0gVG9hc3QuX2FwcFJlZi5ib290c3RyYXAoVG9hc3QuX3RvYXN0Q29tcEZhY3RvcnkpO1xuICAgIGluc3RhbmNlID0gVG9hc3QuY29tcFJlZi5pbnN0YW5jZTtcbiAgICBzdWJqZWN0ID0gaW5zdGFuY2Uuc3ViamVjdDtcblxuICAgIGlmICh0aW1lSW50ZXJ2YWwpIHtcbiAgICAgIFRvYXN0LnRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKG9uQ2xvc2UpIHtcbiAgICAgICAgICBvbkNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgVG9hc3QuaGlkZSgpO1xuICAgICAgfSwgdGltZUludGVydmFsKTtcbiAgICB9XG5cbiAgICBPYmplY3QuYXNzaWduKGluc3RhbmNlLCBwcm9wcyk7XG4gICAgcmV0dXJuIHN1YmplY3Q7XG4gIH1cblxuICAvKipcbiAgICogT3BlbiBpbmZvIGRpYWxvZ1xuICAgKi9cbiAgc3RhdGljIGluZm8oY29udGVudD86IHN0cmluZywgdGltZUludGVydmFsPzogbnVtYmVyLCBvbkNsb3NlPzogKCkgPT4gdm9pZCwgbWFzaz86IGJvb2xlYW4pIHtcbiAgICBjb25zdCBjb25maWcgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgIGljb25UeXBlOiAnaW5mbycsXG4gICAgICBjb250ZW50OiBjb250ZW50XG4gICAgfSk7XG4gICAgcmV0dXJuIFRvYXN0Lm5vdGljZShjb25maWcsICdpbmZvJywgdGltZUludGVydmFsLCBvbkNsb3NlLCBtYXNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVuIHN1Y2Nlc3MgZGlhbG9nXG4gICAqL1xuICBzdGF0aWMgc3VjY2Vzcyhjb250ZW50Pzogc3RyaW5nLCB0aW1lSW50ZXJ2YWw/OiBudW1iZXIsIG9uQ2xvc2U/OiAoKSA9PiB2b2lkLCBtYXNrPzogYm9vbGVhbikge1xuICAgIGNvbnN0IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgaWNvblR5cGU6ICdzdWNjZXNzJyxcbiAgICAgIGNvbnRlbnQ6IGNvbnRlbnRcbiAgICB9KTtcbiAgICByZXR1cm4gVG9hc3Qubm90aWNlKGNvbmZpZywgJ3N1Y2Nlc3MnLCB0aW1lSW50ZXJ2YWwsIG9uQ2xvc2UsIG1hc2spO1xuICB9XG5cbiAgc3RhdGljIHNob3coY29udGVudD86IHN0cmluZywgdGltZUludGVydmFsPzogbnVtYmVyLCBtYXNrPzogYm9vbGVhbikge1xuICAgIGNvbnN0IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgaWNvblR5cGU6ICdpbmZvJyxcbiAgICAgIGNvbnRlbnQ6IGNvbnRlbnRcbiAgICB9KTtcbiAgICByZXR1cm4gVG9hc3Qubm90aWNlKGNvbmZpZywgJ2luZm8nLCB0aW1lSW50ZXJ2YWwsICgpID0+IHt9LCBtYXNrKTtcbiAgfVxuXG4gIHN0YXRpYyBmYWlsKGNvbnRlbnQ/OiBzdHJpbmcsIHRpbWVJbnRlcnZhbD86IG51bWJlciwgb25DbG9zZT86ICgpID0+IHZvaWQsIG1hc2s/OiBib29sZWFuKSB7XG4gICAgY29uc3QgY29uZmlnID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICBpY29uVHlwZTogJ2ZhaWwnLFxuICAgICAgY29udGVudDogY29udGVudFxuICAgIH0pO1xuICAgIHJldHVybiBUb2FzdC5ub3RpY2UoY29uZmlnLCAnZmFpbCcsIHRpbWVJbnRlcnZhbCwgb25DbG9zZSwgbWFzayk7XG4gIH1cblxuICBzdGF0aWMgb2ZmbGluZShjb250ZW50Pzogc3RyaW5nLCB0aW1lSW50ZXJ2YWw/OiBudW1iZXIsIG9uQ2xvc2U/OiAoKSA9PiB2b2lkLCBtYXNrPzogYm9vbGVhbikge1xuICAgIGNvbnN0IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgaWNvblR5cGU6ICdvZmZsaW5lJyxcbiAgICAgIGNvbnRlbnQ6IGNvbnRlbnRcbiAgICB9KTtcbiAgICByZXR1cm4gVG9hc3Qubm90aWNlKGNvbmZpZywgJ29mZmxpbmUnLCB0aW1lSW50ZXJ2YWwsIG9uQ2xvc2UsIG1hc2spO1xuICB9XG5cbiAgc3RhdGljIGxvYWRpbmcoY29udGVudD86IHN0cmluZywgdGltZUludGVydmFsPzogbnVtYmVyLCBvbkNsb3NlPzogKCkgPT4gdm9pZCwgbWFzaz86IGJvb2xlYW4pIHtcbiAgICBjb25zdCBjb25maWcgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgIGljb25UeXBlOiAnbG9hZGluZycsXG4gICAgICBjb250ZW50OiBjb250ZW50XG4gICAgfSk7XG4gICAgcmV0dXJuIFRvYXN0Lm5vdGljZShjb25maWcsICdsb2FkaW5nJywgdGltZUludGVydmFsLCBvbkNsb3NlLCBtYXNrKTtcbiAgfVxuXG4gIHN0YXRpYyBoaWRlKCkge1xuICAgIGlmIChUb2FzdC50aW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQoVG9hc3QudGltZW91dCk7XG4gICAgfVxuICAgIGlmIChUb2FzdC5jb21wUmVmKSB7XG4gICAgICBUb2FzdC5fem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICBUb2FzdC5jb21wUmVmLmRlc3Ryb3koKTtcbiAgICAgIH0pO1xuICAgICAgVG9hc3QuY29tcFJlZiA9IG51bGw7XG4gICAgfVxuICB9XG59XG4iXX0=