UNPKG

@duoduo-oba/ng-devui

Version:

DevUI components based on Angular

323 lines 29.7 kB
/** * @fileoverview added by tsickle * Generated from: toast.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core'; import { ToastService } from './toast.service'; import { Subject } from 'rxjs'; import { throttleTime } from 'rxjs/operators'; /** * @record */ export function Message() { } if (false) { /** @type {?|undefined} */ Message.prototype.severity; /** @type {?|undefined} */ Message.prototype.summary; /** @type {?|undefined} */ Message.prototype.detail; /** @type {?|undefined} */ Message.prototype.id; } var ToastComponent = /** @class */ (function () { function ToastComponent(el, toastService) { var _this = this; this.el = el; this.toastService = toastService; this.closeEvent = new EventEmitter(); this.valueChange = new EventEmitter(); this.zIndex = ToastService.zIndex; this.clickSub = new Subject(); this.subItem = this.clickSub.pipe(throttleTime(250, undefined, { leading: true, trailing: false })) .subscribe((/** * @param {?} obj * @return {?} */ function (obj) { return _this.remove(obj.index, obj.dom); })); } Object.defineProperty(ToastComponent.prototype, "_life", { get: /** * @return {?} */ function () { if (this.life) { return this.life; } else { if (this.value && this.value.length > 0) { switch (this.value[0].severity) { case 'success': return 5000; break; case 'info': return 5000; break; case 'warn': return 10000; break; case 'error': return 10000; break; default: return 5000; } } else { return 5000; } } }, enumerable: true, configurable: true }); /** * @return {?} */ ToastComponent.prototype.ngAfterViewInit = /** * @return {?} */ function () { this.container = (/** @type {?} */ (this.containerViewChild.nativeElement)); }; Object.defineProperty(ToastComponent.prototype, "value", { get: /** * @return {?} */ function () { return this._value; }, set: /** * @param {?} val * @return {?} */ function (val) { this._value = val; if (this.container) { this.handleValueChange(); } }, enumerable: true, configurable: true }); /** * @return {?} */ ToastComponent.prototype.handleValueChange = /** * @return {?} */ function () { var _this = this; this.zIndex = ++ToastService.zIndex; this.toastService.fadeIn(this.container, 250); if (!this.sticky) { if (this.timeout) { clearTimeout(this.timeout); } this.timestamp = new Date().getTime(); this.timeout = setTimeout((/** * @return {?} */ function () { _this.removeAll(); }), this._life); } }; /** * @param {?} index * @return {?} */ ToastComponent.prototype.interrupt = /** * @param {?} index * @return {?} */ function (index) { var _this = this; this.resetDelay((/** * @return {?} */ function () { /** @type {?} */ var otherToasts = _this._value.slice(0); otherToasts.splice(index, 1, undefined); /** @type {?} */ var doms = _this.container.children; otherToasts.forEach((/** * @param {?} v * @param {?} i * @return {?} */ function (v, i) { return v && _this.toastService.fadeOut(doms[i], 250); })); })); }; /** * @param {?} fn * @return {?} */ ToastComponent.prototype.resetDelay = /** * @param {?} fn * @return {?} */ function (fn) { if (!this.sticky && this.timeout) { clearTimeout(this.timeout); /** @type {?} */ var remainTime = this._life - (new Date().getTime() - this.timestamp); this.timeout = setTimeout((/** * @return {?} */ function () { fn(); }), remainTime); } }; /** * @param {?} index * @param {?} msgel * @return {?} */ ToastComponent.prototype.remove = /** * @param {?} index * @param {?} msgel * @return {?} */ function (index, msgel) { var _this = this; this.toastService.fadeOut(msgel, 250, (/** * @return {?} */ function () { _this.closeEvent.emit({ message: _this.value[index] }); _this._value = _this.value.filter((/** * @param {?} val * @param {?} i * @return {?} */ function (val, i) { return i !== index; })); _this.valueChange.emit(_this._value); _this.removeReset(); })); }; /** * @return {?} */ ToastComponent.prototype.removeAll = /** * @return {?} */ function () { var _this = this; if (this.value && this.value.length) { this.toastService.fadeOut(this.container, 250, (/** * @return {?} */ function () { _this.value.forEach((/** * @param {?} msg * @param {?} index * @return {?} */ function (msg, index) { return _this.closeEvent.emit({ message: _this.value[index] }); })); _this.value = []; _this.valueChange.emit(_this.value); })); } }; /** * @param {?} index * @param {?} msgel * @return {?} */ ToastComponent.prototype.removeThrottle = /** * @param {?} index * @param {?} msgel * @return {?} */ function (index, msgel) { this.clickSub.next({ index: index, dom: msgel }); }; /** * @return {?} */ ToastComponent.prototype.removeReset = /** * @return {?} */ function () { var _this = this; this.resetDelay((/** * @return {?} */ function () { _this.removeAll(); })); }; /** * @return {?} */ ToastComponent.prototype.ngOnDestroy = /** * @return {?} */ function () { if (!this.sticky) { clearTimeout(this.timeout); } if (this.subItem) { this.subItem.unsubscribe(); } }; ToastComponent.decorators = [ { type: Component, args: [{ selector: 'd-toast', template: "<div #container [ngClass]=\"'devui-toast'\" [style.zIndex]=\"zIndex\" [ngStyle]=\"style\" [class]=\"styleClass\">\r\n <div\r\n #msgel\r\n *ngFor=\"let msg of value; let i = index\"\r\n class=\"devui-toast-item-container\"\r\n aria-live=\"polite\"\r\n [ngClass]=\"{\r\n 'devui-toast-message-info': msg.severity == 'info',\r\n 'devui-toast-message-warn': msg.severity == 'warn',\r\n 'devui-toast-message-error': msg.severity == 'error',\r\n 'devui-toast-message-success': msg.severity == 'success'\r\n }\"\r\n >\r\n <div class=\"devui-toast-item\" [ngSwitch]=\"msg.severity\" (mouseenter)=\"interrupt(i)\" (mouseleave)=\"removeReset()\">\r\n <div class=\"devui-toast-icon-close\" (click)=\"removeThrottle(i, msgel)\">\r\n <svg\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 14 14\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <defs>\r\n <polygon\r\n id=\"path-1\"\r\n points=\"8.07106781 6.65685425 10.8994949 3.82842712 12.3137085 5.24264069 9.48528137 8.07106781 12.3137085 10.8994949 10.8994949 12.3137085 8.07106781 9.48528137 5.24264069 12.3137085 3.82842712 10.8994949 6.65685425 8.07106781 3.82842712 5.24264069 5.24264069 3.82842712\"\r\n ></polygon>\r\n </defs>\r\n <g id=\"error\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <mask id=\"mask-2\" fill=\"white\">\r\n <use xlink:href=\"#path-1\"></use>\r\n </mask>\r\n <use id=\"Mask\" class=\"devui-toast-close-icon\" xlink:href=\"#path-1\"></use>\r\n </g>\r\n </svg>\r\n </div>\r\n <span\r\n class=\"devui-toast-image\"\r\n [ngClass]=\"{\r\n 'devui-toast-image-info': msg.severity === 'info',\r\n 'devui-toast-image-warning': msg.severity === 'warn',\r\n 'devui-toast-image-error': msg.severity === 'error',\r\n 'devui-toast-image-success': msg.severity === 'success'\r\n }\"\r\n >\r\n <ng-container *ngSwitchCase=\"'info'\">\r\n <svg\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g id=\"info\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <path class=\"devui-toast-image-info-path\" d=\"M7,13 L7,6 L9,6 L9,13 L7,13 Z M7,5 L7,3 L9,3 L9,5 L7,5 Z\" id=\"info\"></path>\r\n </g>\r\n </svg>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'warn'\">\r\n <svg\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g id=\"warning\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <path\r\n class=\"devui-toast-image-warning-path\"\r\n d=\"M7,3 L9,3 L9,10 L7,10 L7,3 Z M7,11 L9,11 L9,13 L7,13 L7,11 Z\"\r\n id=\"warn\"\r\n ></path>\r\n </g>\r\n </svg>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'error'\">\r\n <svg\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <defs>\r\n <polygon\r\n id=\"path-e\"\r\n points=\"8.07106781 6.65685425 10.8994949 3.82842712 12.3137085 5.24264069 9.48528137 8.07106781 12.3137085 10.8994949 10.8994949 12.3137085 8.07106781 9.48528137 5.24264069 12.3137085 3.82842712 10.8994949 6.65685425 8.07106781 3.82842712 5.24264069 5.24264069 3.82842712\"\r\n ></polygon>\r\n </defs>\r\n <g id=\"error\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <mask id=\"mask-2\" fill=\"white\">\r\n <use xlink:href=\"#path-e\"></use>\r\n </mask>\r\n <use id=\"Mask\" class=\"devui-toast-image-error-path\" xlink:href=\"#path-e\"></use>\r\n </g>\r\n </svg>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'success'\">\r\n <svg\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <defs>\r\n <polygon\r\n id=\"path-s\"\r\n points=\"6.53553391 9.77817459 12.1923882 4.12132034 13.6066017 5.53553391 6.53553391 12.6066017 3 9.07106781 4.41421356 7.65685425 6.53553391 9.77817459\"\r\n ></polygon>\r\n </defs>\r\n <g id=\"correct\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <mask id=\"mask-2\" fill=\"white\">\r\n <use xlink:href=\"#path-s\"></use>\r\n </mask>\r\n <use id=\"Mask\" class=\"devui-toast-image-success-path\" xlink:href=\"#path-s\"></use>\r\n </g>\r\n </svg>\r\n </ng-container>\r\n </span>\r\n <div class=\"devui-toast-message\">\r\n <span class=\"devui-toast-title\">{{ msg.summary }}</span>\r\n <p *ngIf=\"msg.detail\" [innerHTML]=\"msg.detail | safe: 'html'\"></p>\r\n </div>\r\n <div style=\"clear: both;\"></div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host::ng-deep a:link,:host::ng-deep a:visited{color:#5e7ce0}:host::ng-deep a:active,:host::ng-deep a:hover{color:#344899}.devui-toast{position:fixed;top:50px;right:20px;width:20em;word-break:normal;word-wrap:break-word}.devui-toast-item-container{position:relative;margin:0 0 10px;opacity:.95;box-shadow:0 12px 24px rgba(41,48,64,.2);border-radius:.25em;color:#dfe1e6}.devui-toast-item{position:relative;display:block;padding:8px 1em}.devui-toast-item p{padding:0;margin:0}.devui-toast-icon-close{position:absolute;top:7px;right:10px;cursor:pointer}.devui-toast-icon-close .devui-toast-close-icon{fill:#fff}.devui-toast-title{font-size:14px;padding:0 0 .5em;display:block;font-weight:700}.devui-toast-image{position:absolute;display:inline-block;width:16px;height:16px;border-radius:50%;left:10px;top:10px;padding:0}.devui-toast-image.devui-toast-image-warning{background-color:#fac20a}.devui-toast-image.devui-toast-image-info{background-color:#5e7ce0}.devui-toast-image.devui-toast-image-error{background-color:#f66f6a}.devui-toast-image.devui-toast-image-success{background-color:#50d4ab}.devui-toast-image .devui-toast-image-error-path,.devui-toast-image .devui-toast-image-info-path,.devui-toast-image .devui-toast-image-success-path,.devui-toast-image .devui-toast-image-warning-path{fill:#fff}.devui-toast-message{padding:0 0 .25em;margin-left:20px}.devui-toast-message p{font-size:12px}.devui-toast .devui-toast-message-error,.devui-toast .devui-toast-message-info,.devui-toast .devui-toast-message-success,.devui-toast .devui-toast-message-warn{background-color:#464d6e}"] }] } ]; /** @nocollapse */ ToastComponent.ctorParameters = function () { return [ { type: ElementRef }, { type: ToastService } ]; }; ToastComponent.propDecorators = { sticky: [{ type: Input }], life: [{ type: Input }], style: [{ type: Input }], styleClass: [{ type: Input }], closeEvent: [{ type: Output }], valueChange: [{ type: Output }], containerViewChild: [{ type: ViewChild, args: ['container', { static: true },] }], value: [{ type: Input }] }; return ToastComponent; }()); export { ToastComponent }; if (false) { /** @type {?} */ ToastComponent.prototype.sticky; /** @type {?} */ ToastComponent.prototype.life; /** @type {?} */ ToastComponent.prototype.style; /** @type {?} */ ToastComponent.prototype.styleClass; /** @type {?} */ ToastComponent.prototype.closeEvent; /** @type {?} */ ToastComponent.prototype.valueChange; /** @type {?} */ ToastComponent.prototype.containerViewChild; /** @type {?} */ ToastComponent.prototype._value; /** @type {?} */ ToastComponent.prototype.zIndex; /** @type {?} */ ToastComponent.prototype.container; /** @type {?} */ ToastComponent.prototype.timeout; /** @type {?} */ ToastComponent.prototype.timestamp; /** @type {?} */ ToastComponent.prototype.clickSub; /** @type {?} */ ToastComponent.prototype.subItem; /** @type {?} */ ToastComponent.prototype.el; /** @type {?} */ ToastComponent.prototype.toastService; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZGV2dWkvdG9hc3QvIiwic291cmNlcyI6WyJ0b2FzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFFOUMsNkJBS0M7OztJQUpDLDJCQUFrQjs7SUFDbEIsMEJBQWlCOztJQUNqQix5QkFBZ0I7O0lBQ2hCLHFCQUFTOztBQUdYO0lBb0RFLHdCQUFtQixFQUFjLEVBQVMsWUFBMEI7UUFBcEUsaUJBS0M7UUFMa0IsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFTLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBekMxRCxlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkQsZ0JBQVcsR0FBNEIsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQXlDN0UsSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQzthQUNoRyxTQUFTOzs7O1FBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxLQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcs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QkFDTCxLQUFLO3dCQUNMLEtBQUs7NkJBQ0wsS0FBSzs2QkFFTCxNQUFNOzhCQUNOLE1BQU07cUNBQ04sU0FBUyxTQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7d0JBa0R2QyxLQUFLOztJQThFUixxQkFBQztDQUFBLEFBN0lELElBNklDO1NBeElZLGNBQWM7OztJQUN6QixnQ0FBeUI7O0lBQ3pCLDhCQUFtQjs7SUFDbkIsK0JBQW9COztJQUNwQixvQ0FBNEI7O0lBRTVCLG9DQUE2RDs7SUFDN0QscUNBQStFOztJQUMvRSw0Q0FBeUU7O0lBNEJ6RSxnQ0FBdUI7O0lBQ3ZCLGdDQUFlOztJQUNmLG1DQUEwQjs7SUFDMUIsaUNBQWE7O0lBRWIsbUNBQWtCOztJQUVsQixrQ0FBYzs7SUFFZCxpQ0FBc0I7O0lBRVYsNEJBQXFCOztJQUFFLHNDQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuL3RvYXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGhyb3R0bGVUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlIHtcclxuICBzZXZlcml0eT86IHN0cmluZztcclxuICBzdW1tYXJ5Pzogc3RyaW5nO1xyXG4gIGRldGFpbD86IHN0cmluZztcclxuICBpZD86IGFueTtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkLXRvYXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdG9hc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RvYXN0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRvYXN0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBzdGlja3k6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgbGlmZTogYW55O1xyXG4gIEBJbnB1dCgpIHN0eWxlOiBhbnk7XHJcbiAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nO1xyXG5cclxuICBAT3V0cHV0KCkgY2xvc2VFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TWVzc2FnZVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8TWVzc2FnZVtdPigpO1xyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pIGNvbnRhaW5lclZpZXdDaGlsZDogRWxlbWVudFJlZjtcclxuXHJcbiAgZ2V0IF9saWZlKCkge1xyXG4gICAgaWYgKHRoaXMubGlmZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5saWZlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgc3dpdGNoICh0aGlzLnZhbHVlWzBdLnNldmVyaXR5KSB7XHJcbiAgICAgICAgICBjYXNlICdzdWNjZXNzJzpcclxuICAgICAgICAgICAgcmV0dXJuIDUwMDA7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnaW5mbyc6XHJcbiAgICAgICAgICAgIHJldHVybiA1MDAwO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ3dhcm4nOlxyXG4gICAgICAgICAgICByZXR1cm4gMTAwMDA7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnZXJyb3InOlxyXG4gICAgICAgICAgICByZXR1cm4gMTAwMDA7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgcmV0dXJuIDUwMDA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiA1MDAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIF92YWx1ZTogQXJyYXk8TWVzc2FnZT47XHJcbiAgekluZGV4OiBudW1iZXI7XHJcbiAgY29udGFpbmVyOiBIVE1MRGl2RWxlbWVudDtcclxuICB0aW1lb3V0OiBhbnk7XHJcblxyXG4gIHRpbWVzdGFtcDogbnVtYmVyO1xyXG5cclxuICBjbGlja1N1YjogYW55O1xyXG5cclxuICBzdWJJdGVtOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZiwgcHVibGljIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLnpJbmRleCA9IFRvYXN0U2VydmljZS56SW5kZXg7XHJcbiAgICB0aGlzLmNsaWNrU3ViID0gbmV3IFN1YmplY3QoKTtcclxuICAgIHRoaXMuc3ViSXRlbSA9IHRoaXMuY2xpY2tTdWIucGlwZSh0aHJvdHRsZVRpbWUoMjUwLCB1bmRlZmluZWQsIHsgbGVhZGluZzogdHJ1ZSwgdHJhaWxpbmc6IGZhbHNlIH0pKVxyXG4gICAgICAuc3Vic2NyaWJlKG9iaiA9PiB0aGlzLnJlbW92ZShvYmouaW5kZXgsIG9iai5kb20pKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuY29udGFpbmVyID0gPEhUTUxEaXZFbGVtZW50PnRoaXMuY29udGFpbmVyVmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBnZXQgdmFsdWUoKTogQXJyYXk8TWVzc2FnZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gIH1cclxuXHJcbiAgc2V0IHZhbHVlKHZhbDogQXJyYXk8TWVzc2FnZT4pIHtcclxuICAgIHRoaXMuX3ZhbHVlID0gdmFsO1xyXG4gICAgaWYgKHRoaXMuY29udGFpbmVyKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlVmFsdWVDaGFuZ2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZVZhbHVlQ2hhbmdlKCkge1xyXG4gICAgdGhpcy56SW5kZXggPSArK1RvYXN0U2VydmljZS56SW5kZXg7XHJcbiAgICB0aGlzLnRvYXN0U2VydmljZS5mYWRlSW4odGhpcy5jb250YWluZXIsIDI1MCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLnN0aWNreSkge1xyXG4gICAgICBpZiAodGhpcy50aW1lb3V0KSB7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVBbGwoKTtcclxuICAgICAgfSwgdGhpcy5fbGlmZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbnRlcnJ1cHQoaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5yZXNldERlbGF5KCgpID0+IHtcclxuICAgICAgY29uc3Qgb3RoZXJUb2FzdHMgPSB0aGlzLl92YWx1ZS5zbGljZSgwKTtcclxuICAgICAgb3RoZXJUb2FzdHMuc3BsaWNlKGluZGV4LCAxLCB1bmRlZmluZWQpO1xyXG4gICAgICBjb25zdCBkb21zID0gdGhpcy5jb250YWluZXIuY2hpbGRyZW47XHJcbiAgICAgIG90aGVyVG9hc3RzLmZvckVhY2goKHYsIGkpID0+IHYgJiYgdGhpcy50b2FzdFNlcnZpY2UuZmFkZU91dChkb21zW2ldLCAyNTApKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVzZXREZWxheShmbjogRnVuY3Rpb24pIHtcclxuICAgIGlmICghdGhpcy5zdGlja3kgJiYgdGhpcy50aW1lb3V0KSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpO1xyXG4gICAgICBjb25zdCByZW1haW5UaW1lID0gdGhpcy5fbGlmZSAtIChuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRoaXMudGltZXN0YW1wKTtcclxuICAgICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7IGZuKCk7IH0sIHJlbWFpblRpbWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKGluZGV4OiBudW1iZXIsIG1zZ2VsOiBhbnkpIHtcclxuICAgIHRoaXMudG9hc3RTZXJ2aWNlLmZhZGVPdXQobXNnZWwsIDI1MCwgKCkgPT4ge1xyXG4gICAgICB0aGlzLmNsb3NlRXZlbnQuZW1pdCh7IG1lc3NhZ2U6IHRoaXMudmFsdWVbaW5kZXhdIH0pO1xyXG4gICAgICB0aGlzLl92YWx1ZSA9IHRoaXMudmFsdWUuZmlsdGVyKCh2YWwsIGkpID0+IGkgIT09IGluZGV4KTtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuX3ZhbHVlKTtcclxuICAgICAgdGhpcy5yZW1vdmVSZXNldCgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVBbGwoKSB7XHJcbiAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5mYWRlT3V0KHRoaXMuY29udGFpbmVyLCAyNTAsICgpID0+IHtcclxuICAgICAgICB0aGlzLnZhbHVlLmZvckVhY2goKG1zZywgaW5kZXgpID0+IHRoaXMuY2xvc2VFdmVudC5lbWl0KHsgbWVzc2FnZTogdGhpcy52YWx1ZVtpbmRleF0gfSkpO1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSBbXTtcclxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlVGhyb3R0bGUoaW5kZXg6IG51bWJlciwgbXNnZWw6IGFueSkge1xyXG4gICAgdGhpcy5jbGlja1N1Yi5uZXh0KHsgaW5kZXg6IGluZGV4LCBkb206IG1zZ2VsIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlUmVzZXQoKSB7XHJcbiAgICB0aGlzLnJlc2V0RGVsYXkoKCkgPT4geyB0aGlzLnJlbW92ZUFsbCgpOyB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKCF0aGlzLnN0aWNreSkge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnN1Ykl0ZW0pIHtcclxuICAgICAgdGhpcy5zdWJJdGVtLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==