UNPKG

ng-toast-stack

Version:

Beautiful & easy to use toast stack messages, having auto close, pause, resume functionality and customization.

116 lines 14.9 kB
import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; export class NgToastStackService { constructor() { this.id = 0; this.toastsBag = []; } push(data) { if (typeof data === 'string') data = { msg: data }; data.id = ++this.id; const toast = new NgToastStack(data); this.toastsBag.push(toast); if (toast.autoClose) { toast.timerRef = new Timer(() => { this.pop(toast.id); }, toast.autoCloseTimer); let index = this.toastsBag.findIndex((n) => n.id === toast.id); this.toastsBag.splice(index, 1, toast); } } pop(id) { if (!id) return; let index = this.toastsBag.findIndex((n) => n.id == id); this.toastsBag.splice(index, 1); } // Sugared methods static(data) { if (typeof data === 'string') { data = { msg: data, autoClose: false }; this.push(data); } else { this.push({ ...data, autoClose: false }); } } success(data) { if (typeof data === 'string') { data = { msg: data, type: 'success' }; this.push(data); } else { this.push({ ...data, type: 'success' }); } } error(data) { if (typeof data === 'string') { data = { msg: data, type: 'error' }; this.push(data); } else { this.push({ ...data, type: 'error' }); } } } NgToastStackService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: NgToastStackService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); NgToastStackService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: NgToastStackService, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: NgToastStackService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: function () { return []; } }); export class NgToastStack { constructor(data) { this.id = data.id || 5000; this.type = data.type || 'success'; this.title = this.getTitle(data); this.msg = data.msg; this.autoClose = (data.hasOwnProperty('autoClose') && data.autoClose !== undefined) ? data.autoClose : true; this.autoCloseTimer = data.autoCloseTimer || 5000; this.icon = (data.hasOwnProperty('icon') && data.icon !== undefined) ? data.icon : true; this.pauseOnHover = (data.hasOwnProperty('pauseOnHover') && data.pauseOnHover !== undefined) ? data.pauseOnHover : true; } getTitle(data) { if (!data.title && data.type == 'error') return 'Error'; if (!data.title && (!data.type || data.type == 'success')) return 'Success'; return data.title || 'Message'; } } // Custom Timer with resume/pause export class Timer { constructor(callback, delay) { this.delay = 0; this.start = 0; this.remaining = 0; this.remainingPercentage = 100; this.delay = delay; this.remaining = delay; this.callback = callback; this.resume(); } pause() { window.clearTimeout(this.timeoutId); this.timeoutId = undefined; window.clearInterval(this.intervalId); this.intervalId = undefined; } resume() { if (this.timeoutId && this.intervalId) { return; } this.start = Date.now(); this.timeoutId = window.setTimeout(this.callback, this.remaining); this.intervalId = window.setInterval(() => { if (this.remaining <= 0) window.clearInterval(this.intervalId); this.remaining -= 10; this.remainingPercentage = (this.remaining * 100) / this.delay; }, 10); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctdG9hc3Qtc3RhY2suc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXRvYXN0LXN0YWNrL3NyYy9saWIvbmctdG9hc3Qtc3RhY2suc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sbUJBQW1CO0lBSTlCO1FBSEEsT0FBRSxHQUFXLENBQUMsQ0FBQztRQUNmLGNBQVMsR0FBNEIsRUFBRSxDQUFBO0lBRXZCLENBQUM7SUFFakIsSUFBSSxDQUFDLElBQStCO1FBQ2xDLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUTtZQUFFLElBQUksR0FBcUIsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUE7UUFDcEUsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDcEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFM0IsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFO1lBQ25CLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFO2dCQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNyQixDQUFDLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBRXpCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQztJQUVELEdBQUcsQ0FBQyxFQUFXO1FBQ2IsSUFBSSxDQUFDLEVBQUU7WUFBRSxPQUFPO1FBQ2hCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsa0JBQWtCO0lBRWxCLE1BQU0sQ0FBQyxJQUErQjtRQUNwQyxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUM1QixJQUFJLEdBQXFCLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUE7WUFDeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtTQUNoQjthQUFNO1lBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO1NBQ3pDO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUErQjtRQUNyQyxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUM1QixJQUFJLEdBQXFCLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUE7WUFDdkQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtTQUNoQjthQUFNO1lBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFBO1NBQ3hDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUErQjtRQUNuQyxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUM1QixJQUFJLEdBQXFCLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUE7WUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtTQUNoQjthQUFNO1lBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO1NBQ3RDO0lBQ0gsQ0FBQzs7Z0hBdkRVLG1CQUFtQjtvSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7QUF5RUQsTUFBTSxPQUFPLFlBQVk7SUFXdkIsWUFBWSxJQUFzQjtRQUNoQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFBO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxTQUFTLENBQUE7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2hDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQTtRQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7UUFDM0csSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQTtRQUNqRCxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7UUFDdkYsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO0lBQ3pILENBQUM7SUFFRCxRQUFRLENBQUMsSUFBc0I7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxPQUFPO1lBQUUsT0FBTyxPQUFPLENBQUM7UUFDeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxTQUFTLENBQUM7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUM1RSxPQUFPLElBQUksQ0FBQyxLQUFLLElBQUksU0FBUyxDQUFDO0lBQ2pDLENBQUM7Q0FDRjtBQUVELGlDQUFpQztBQUNqQyxNQUFNLE9BQU8sS0FBSztJQVNoQixZQUFZLFFBQWEsRUFBRSxLQUFhO1FBTnhDLFVBQUssR0FBVyxDQUFDLENBQUE7UUFDakIsVUFBSyxHQUFXLENBQUMsQ0FBQTtRQUNqQixjQUFTLEdBQVcsQ0FBQyxDQUFBO1FBQ3JCLHdCQUFtQixHQUFXLEdBQUcsQ0FBQTtRQUkvQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtRQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQTtRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN4QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7SUFDZixDQUFDO0lBRUQsS0FBSztRQUNILE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO1FBQzFCLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ3JDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFBO0lBQzdCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDckMsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDeEMsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUM7Z0JBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7WUFDOUQsSUFBSSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFBO1FBQ2hFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUNSLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTmdUb2FzdFN0YWNrU2VydmljZSB7XG4gIGlkOiBudW1iZXIgPSAwO1xuICB0b2FzdHNCYWc6IEFycmF5PE5nVG9hc3RTdGFja1R5cGU+ID0gW11cblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIHB1c2goZGF0YTogTmdUb2FzdFN0YWNrVHlwZSB8IHN0cmluZykge1xuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIGRhdGEgPSA8TmdUb2FzdFN0YWNrVHlwZT57IG1zZzogZGF0YSB9XG4gICAgZGF0YS5pZCA9ICsrdGhpcy5pZDtcbiAgICBjb25zdCB0b2FzdCA9IG5ldyBOZ1RvYXN0U3RhY2soZGF0YSlcbiAgICB0aGlzLnRvYXN0c0JhZy5wdXNoKHRvYXN0KTtcblxuICAgIGlmICh0b2FzdC5hdXRvQ2xvc2UpIHtcbiAgICAgIHRvYXN0LnRpbWVyUmVmID0gbmV3IFRpbWVyKCgpID0+IHtcbiAgICAgICAgdGhpcy5wb3AodG9hc3QuaWQpO1xuICAgICAgfSwgdG9hc3QuYXV0b0Nsb3NlVGltZXIpO1xuXG4gICAgICBsZXQgaW5kZXggPSB0aGlzLnRvYXN0c0JhZy5maW5kSW5kZXgoKG4pID0+IG4uaWQgPT09IHRvYXN0LmlkKTtcbiAgICAgIHRoaXMudG9hc3RzQmFnLnNwbGljZShpbmRleCwgMSwgdG9hc3QpO1xuICAgIH1cbiAgfVxuXG4gIHBvcChpZD86IG51bWJlcikge1xuICAgIGlmICghaWQpIHJldHVybjtcbiAgICBsZXQgaW5kZXggPSB0aGlzLnRvYXN0c0JhZy5maW5kSW5kZXgoKG4pID0+IG4uaWQgPT0gaWQpO1xuICAgIHRoaXMudG9hc3RzQmFnLnNwbGljZShpbmRleCwgMSk7XG4gIH1cblxuICAvLyBTdWdhcmVkIG1ldGhvZHNcblxuICBzdGF0aWMoZGF0YTogTmdUb2FzdFN0YWNrVHlwZSB8IHN0cmluZykge1xuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGRhdGEgPSA8TmdUb2FzdFN0YWNrVHlwZT57IG1zZzogZGF0YSwgYXV0b0Nsb3NlOiBmYWxzZSB9XG4gICAgICB0aGlzLnB1c2goZGF0YSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wdXNoKHsgLi4uZGF0YSwgYXV0b0Nsb3NlOiBmYWxzZSB9KVxuICAgIH1cbiAgfVxuXG4gIHN1Y2Nlc3MoZGF0YTogTmdUb2FzdFN0YWNrVHlwZSB8IHN0cmluZykge1xuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGRhdGEgPSA8TmdUb2FzdFN0YWNrVHlwZT57IG1zZzogZGF0YSwgdHlwZTogJ3N1Y2Nlc3MnIH1cbiAgICAgIHRoaXMucHVzaChkYXRhKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2goeyAuLi5kYXRhLCB0eXBlOiAnc3VjY2VzcycgfSlcbiAgICB9XG4gIH1cblxuICBlcnJvcihkYXRhOiBOZ1RvYXN0U3RhY2tUeXBlIHwgc3RyaW5nKSB7XG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgZGF0YSA9IDxOZ1RvYXN0U3RhY2tUeXBlPnsgbXNnOiBkYXRhLCB0eXBlOiAnZXJyb3InIH1cbiAgICAgIHRoaXMucHVzaChkYXRhKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2goeyAuLi5kYXRhLCB0eXBlOiAnZXJyb3InIH0pXG4gICAgfVxuICB9XG5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ1RvYXN0U3RhY2tUeXBlIHtcbiAgaWQ/OiBudW1iZXI7XG4gIHR5cGU/OiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBtc2c6IHN0cmluZztcbiAgYXV0b0Nsb3NlPzogYm9vbGVhbjtcbiAgYXV0b0Nsb3NlVGltZXI/OiBudW1iZXI7XG4gIHRpbWVyUmVmPzogYW55O1xuICB0aW1lcldpZHRoPzogYW55O1xuICBpY29uPzogc3RyaW5nIHwgYm9vbGVhbjtcbiAgcGF1c2VPbkhvdmVyPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIE5nVG9hc3RTdGFjayB7XG4gIGlkOiBudW1iZXJcbiAgdHlwZTogc3RyaW5nXG4gIHRpdGxlOiBzdHJpbmdcbiAgbXNnOiBzdHJpbmdcbiAgYXV0b0Nsb3NlOiBib29sZWFuXG4gIGF1dG9DbG9zZVRpbWVyOiBudW1iZXJcbiAgdGltZXJSZWY/OiBhbnlcbiAgaWNvbj86IHN0cmluZyB8IGJvb2xlYW5cbiAgcGF1c2VPbkhvdmVyPzogYm9vbGVhblxuXG4gIGNvbnN0cnVjdG9yKGRhdGE6IE5nVG9hc3RTdGFja1R5cGUpIHtcbiAgICB0aGlzLmlkID0gZGF0YS5pZCB8fCA1MDAwXG4gICAgdGhpcy50eXBlID0gZGF0YS50eXBlIHx8ICdzdWNjZXNzJ1xuICAgIHRoaXMudGl0bGUgPSB0aGlzLmdldFRpdGxlKGRhdGEpXG4gICAgdGhpcy5tc2cgPSBkYXRhLm1zZ1xuICAgIHRoaXMuYXV0b0Nsb3NlID0gKGRhdGEuaGFzT3duUHJvcGVydHkoJ2F1dG9DbG9zZScpICYmIGRhdGEuYXV0b0Nsb3NlICE9PSB1bmRlZmluZWQpID8gZGF0YS5hdXRvQ2xvc2UgOiB0cnVlXG4gICAgdGhpcy5hdXRvQ2xvc2VUaW1lciA9IGRhdGEuYXV0b0Nsb3NlVGltZXIgfHwgNTAwMFxuICAgIHRoaXMuaWNvbiA9IChkYXRhLmhhc093blByb3BlcnR5KCdpY29uJykgJiYgZGF0YS5pY29uICE9PSB1bmRlZmluZWQpID8gZGF0YS5pY29uIDogdHJ1ZVxuICAgIHRoaXMucGF1c2VPbkhvdmVyID0gKGRhdGEuaGFzT3duUHJvcGVydHkoJ3BhdXNlT25Ib3ZlcicpICYmIGRhdGEucGF1c2VPbkhvdmVyICE9PSB1bmRlZmluZWQpID8gZGF0YS5wYXVzZU9uSG92ZXIgOiB0cnVlXG4gIH1cblxuICBnZXRUaXRsZShkYXRhOiBOZ1RvYXN0U3RhY2tUeXBlKSB7XG4gICAgaWYgKCFkYXRhLnRpdGxlICYmIGRhdGEudHlwZSA9PSAnZXJyb3InKSByZXR1cm4gJ0Vycm9yJztcbiAgICBpZiAoIWRhdGEudGl0bGUgJiYgKCFkYXRhLnR5cGUgfHwgZGF0YS50eXBlID09ICdzdWNjZXNzJykpIHJldHVybiAnU3VjY2Vzcyc7XG4gICAgcmV0dXJuIGRhdGEudGl0bGUgfHwgJ01lc3NhZ2UnO1xuICB9XG59XG5cbi8vIEN1c3RvbSBUaW1lciB3aXRoIHJlc3VtZS9wYXVzZVxuZXhwb3J0IGNsYXNzIFRpbWVyIHtcbiAgdGltZW91dElkOiBudW1iZXIgfCB1bmRlZmluZWRcbiAgaW50ZXJ2YWxJZDogbnVtYmVyIHwgdW5kZWZpbmVkXG4gIGRlbGF5OiBudW1iZXIgPSAwXG4gIHN0YXJ0OiBudW1iZXIgPSAwXG4gIHJlbWFpbmluZzogbnVtYmVyID0gMFxuICByZW1haW5pbmdQZXJjZW50YWdlOiBudW1iZXIgPSAxMDBcbiAgY2FsbGJhY2s6IGFueVxuXG4gIGNvbnN0cnVjdG9yKGNhbGxiYWNrOiBhbnksIGRlbGF5OiBudW1iZXIpIHtcbiAgICB0aGlzLmRlbGF5ID0gZGVsYXlcbiAgICB0aGlzLnJlbWFpbmluZyA9IGRlbGF5XG4gICAgdGhpcy5jYWxsYmFjayA9IGNhbGxiYWNrXG4gICAgdGhpcy5yZXN1bWUoKVxuICB9XG5cbiAgcGF1c2UoKSB7XG4gICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRJZClcbiAgICB0aGlzLnRpbWVvdXRJZCA9IHVuZGVmaW5lZFxuICAgIHdpbmRvdy5jbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWxJZClcbiAgICB0aGlzLmludGVydmFsSWQgPSB1bmRlZmluZWRcbiAgfVxuXG4gIHJlc3VtZSgpIHtcbiAgICBpZiAodGhpcy50aW1lb3V0SWQgJiYgdGhpcy5pbnRlcnZhbElkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdGFydCA9IERhdGUubm93KCk7XG4gICAgdGhpcy50aW1lb3V0SWQgPSB3aW5kb3cuc2V0VGltZW91dCh0aGlzLmNhbGxiYWNrLCB0aGlzLnJlbWFpbmluZyk7XG4gICAgdGhpcy5pbnRlcnZhbElkID0gd2luZG93LnNldEludGVydmFsKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnJlbWFpbmluZyA8PSAwKSB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsSWQpXG4gICAgICB0aGlzLnJlbWFpbmluZyAtPSAxMDtcbiAgICAgIHRoaXMucmVtYWluaW5nUGVyY2VudGFnZSA9ICh0aGlzLnJlbWFpbmluZyAqIDEwMCkgLyB0aGlzLmRlbGF5XG4gICAgfSwgMTApXG4gIH1cbn0iXX0=