UNPKG

ng-devui

Version:

DevUI components based on Angular

121 lines 14.9 kB
import { ElementRef } from '@angular/core'; export class Utils { /** * Polyfill for element.matches. * See: https://developer.mozilla.org/en/docs/Web/API/Element/matches#Polyfill * element */ static matches(element, selectorName) { const proto = Element.prototype; const func = proto.matches || proto.matchesSelector || proto.mozMatchesSelector || proto.msMatchesSelector || proto.oMatchesSelector || proto.webkitMatchesSelector || function (s) { const matches = (this.document || this.ownerDocument).querySelectorAll(s); let i = matches.length; while (--i >= 0 && matches.item(i) !== this) { // do nothing } return i > -1; }; return func.call(element, selectorName); } /** * Applies the specified css class on nativeElement * elementRef * className */ static addClass(elementRef, className) { if (className === undefined) { return; } const e = this.getElementWithValidClassList(elementRef); if (e) { e.classList.add(className); } } /** * Removes the specified class from nativeElement * elementRef * className */ static removeClass(elementRef, className) { if (className === undefined) { return; } const e = this.getElementWithValidClassList(elementRef); if (e) { e.classList.remove(className); } } /** * Gets element with valid classList * * elementRef * @returns ElementRef | null */ static getElementWithValidClassList(elementRef) { const e = elementRef instanceof ElementRef ? elementRef.nativeElement : elementRef; if (e.classList !== undefined && e.classList !== null) { return e; } return null; } static slice(args, slice, sliceEnd) { const ret = []; let len = args.length; if (len === 0) { return ret; } const start = slice < 0 ? Math.max(0, slice + len) : slice || 0; if (sliceEnd !== undefined) { len = sliceEnd < 0 ? sliceEnd + len : sliceEnd; } while (len-- > start) { ret[len - start] = args[len]; } return ret; } // 动态添加styles static addElStyles(el, styles) { if (styles instanceof Object) { for (const s in styles) { if (Object.prototype.hasOwnProperty.call(styles, s)) { if (Array.isArray(styles[s])) { // 用于支持兼容渐退 styles[s].forEach((val) => { el.style[s] = val; }); } else { el.style[s] = styles[s]; } } } } } static dispatchEventToUnderElement(event, target, eventType) { const up = target || event.target; up.style.display = 'none'; const { x, y } = { x: event.clientX, y: event.clientY }; const under = document.elementFromPoint(x, y); up.style.display = ''; if (!under) { return event; } const ev = document.createEvent('DragEvent'); ev.initMouseEvent(eventType || event.type, true, true, window, 0, event.screenX, event.screenY, event.clientX, event.clientY, event.ctrlKey, event.altKey, event.shiftKey, event.metaKey, event.button, event.relatedTarget); if (ev.dataTransfer !== null) { ev.dataTransfer.setData('text', ''); ev.dataTransfer.effectAllowed = event.dataTransfer.effectAllowed; } setTimeout(() => { under.dispatchEvent(ev); }, 0); return event; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9kZXZ1aS9kcmFnZHJvcC9zaGFyZWQvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxNQUFNLE9BQU8sS0FBSztJQUNoQjs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFZLEVBQUUsWUFBb0I7UUFDdEQsTUFBTSxLQUFLLEdBQVEsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUNyQyxNQUFNLElBQUksR0FDUixLQUFLLENBQUMsT0FBTztZQUNiLEtBQUssQ0FBQyxlQUFlO1lBQ3JCLEtBQUssQ0FBQyxrQkFBa0I7WUFDeEIsS0FBSyxDQUFDLGlCQUFpQjtZQUN2QixLQUFLLENBQUMsZ0JBQWdCO1lBQ3RCLEtBQUssQ0FBQyxxQkFBcUI7WUFDM0IsVUFBVSxDQUFDO2dCQUNULE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFFLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7Z0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQzVDLGFBQWE7Z0JBQ2YsQ0FBQztnQkFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNoQixDQUFDLENBQUM7UUFFSixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUE0QixFQUFFLFNBQWlCO1FBQ3BFLElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzVCLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXhELElBQUksQ0FBQyxFQUFFLENBQUM7WUFDTixDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLFVBQTRCLEVBQUUsU0FBaUI7UUFDdkUsSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDNUIsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFeEQsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNOLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxNQUFNLENBQUMsNEJBQTRCLENBQUMsVUFBc0I7UUFDaEUsTUFBTSxDQUFDLEdBQUcsVUFBVSxZQUFZLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1FBRW5GLElBQUksQ0FBQyxDQUFDLFNBQVMsS0FBSyxTQUFTLElBQUksQ0FBQyxDQUFDLFNBQVMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN0RCxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFNLEVBQUUsUUFBUztRQUN6QyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDZixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBRXRCLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2QsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO1FBRWhFLElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzNCLEdBQUcsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDakQsQ0FBQztRQUVELE9BQU8sR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7WUFDckIsR0FBRyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELGFBQWE7SUFDTixNQUFNLENBQUMsV0FBVyxDQUFDLEVBQU8sRUFBRSxNQUFXO1FBQzVDLElBQUksTUFBTSxZQUFZLE1BQU0sRUFBRSxDQUFDO1lBQzdCLEtBQUssTUFBTSxDQUFDLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNwRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDN0IsV0FBVzt3QkFDWCxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7NEJBQ3hCLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO3dCQUNwQixDQUFDLENBQUMsQ0FBQztvQkFDTCxDQUFDO3lCQUFNLENBQUM7d0JBQ04sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzFCLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUNNLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxLQUFnQixFQUFFLE1BQW9CLEVBQUUsU0FBa0I7UUFDbEcsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFpQixLQUFLLENBQUMsTUFBTSxDQUFDO1FBQy9DLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUMxQixNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN4RCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzlDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzdDLEVBQUUsQ0FBQyxjQUFjLENBQ2YsU0FBUyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQ3ZCLElBQUksRUFDSixJQUFJLEVBQ0osTUFBTSxFQUNOLENBQUMsRUFDRCxLQUFLLENBQUMsT0FBTyxFQUNiLEtBQUssQ0FBQyxPQUFPLEVBQ2IsS0FBSyxDQUFDLE9BQU8sRUFDYixLQUFLLENBQUMsT0FBTyxFQUNiLEtBQUssQ0FBQyxPQUFPLEVBQ2IsS0FBSyxDQUFDLE1BQU0sRUFDWixLQUFLLENBQUMsUUFBUSxFQUNkLEtBQUssQ0FBQyxPQUFPLEVBQ2IsS0FBSyxDQUFDLE1BQU0sRUFDWixLQUFLLENBQUMsYUFBYSxDQUNwQixDQUFDO1FBQ0YsSUFBSSxFQUFFLENBQUMsWUFBWSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzdCLEVBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNwQyxFQUFFLENBQUMsWUFBWSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQztRQUNuRSxDQUFDO1FBQ0QsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ04sT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgVXRpbHMge1xyXG4gIC8qKlxyXG4gICAqIFBvbHlmaWxsIGZvciBlbGVtZW50Lm1hdGNoZXMuXHJcbiAgICogU2VlOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi9kb2NzL1dlYi9BUEkvRWxlbWVudC9tYXRjaGVzI1BvbHlmaWxsXHJcbiAgICogZWxlbWVudFxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgbWF0Y2hlcyhlbGVtZW50OiBhbnksIHNlbGVjdG9yTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBwcm90bzogYW55ID0gRWxlbWVudC5wcm90b3R5cGU7XHJcbiAgICBjb25zdCBmdW5jID1cclxuICAgICAgcHJvdG8ubWF0Y2hlcyB8fFxyXG4gICAgICBwcm90by5tYXRjaGVzU2VsZWN0b3IgfHxcclxuICAgICAgcHJvdG8ubW96TWF0Y2hlc1NlbGVjdG9yIHx8XHJcbiAgICAgIHByb3RvLm1zTWF0Y2hlc1NlbGVjdG9yIHx8XHJcbiAgICAgIHByb3RvLm9NYXRjaGVzU2VsZWN0b3IgfHxcclxuICAgICAgcHJvdG8ud2Via2l0TWF0Y2hlc1NlbGVjdG9yIHx8XHJcbiAgICAgIGZ1bmN0aW9uIChzKSB7XHJcbiAgICAgICAgY29uc3QgbWF0Y2hlcyA9ICh0aGlzLmRvY3VtZW50IHx8IHRoaXMub3duZXJEb2N1bWVudCkucXVlcnlTZWxlY3RvckFsbChzKTtcclxuICAgICAgICBsZXQgaSA9IG1hdGNoZXMubGVuZ3RoO1xyXG4gICAgICAgIHdoaWxlICgtLWkgPj0gMCAmJiBtYXRjaGVzLml0ZW0oaSkgIT09IHRoaXMpIHtcclxuICAgICAgICAgIC8vIGRvIG5vdGhpbmdcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGkgPiAtMTtcclxuICAgICAgfTtcclxuXHJcbiAgICByZXR1cm4gZnVuYy5jYWxsKGVsZW1lbnQsIHNlbGVjdG9yTmFtZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBsaWVzIHRoZSBzcGVjaWZpZWQgY3NzIGNsYXNzIG9uIG5hdGl2ZUVsZW1lbnRcclxuICAgKiBlbGVtZW50UmVmXHJcbiAgICogY2xhc3NOYW1lXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBhZGRDbGFzcyhlbGVtZW50UmVmOiBFbGVtZW50UmVmIHwgYW55LCBjbGFzc05hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKGNsYXNzTmFtZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGUgPSB0aGlzLmdldEVsZW1lbnRXaXRoVmFsaWRDbGFzc0xpc3QoZWxlbWVudFJlZik7XHJcblxyXG4gICAgaWYgKGUpIHtcclxuICAgICAgZS5jbGFzc0xpc3QuYWRkKGNsYXNzTmFtZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmVzIHRoZSBzcGVjaWZpZWQgY2xhc3MgZnJvbSBuYXRpdmVFbGVtZW50XHJcbiAgICogZWxlbWVudFJlZlxyXG4gICAqIGNsYXNzTmFtZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgcmVtb3ZlQ2xhc3MoZWxlbWVudFJlZjogRWxlbWVudFJlZiB8IGFueSwgY2xhc3NOYW1lOiBzdHJpbmcpIHtcclxuICAgIGlmIChjbGFzc05hbWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBlID0gdGhpcy5nZXRFbGVtZW50V2l0aFZhbGlkQ2xhc3NMaXN0KGVsZW1lbnRSZWYpO1xyXG5cclxuICAgIGlmIChlKSB7XHJcbiAgICAgIGUuY2xhc3NMaXN0LnJlbW92ZShjbGFzc05hbWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyBlbGVtZW50IHdpdGggdmFsaWQgY2xhc3NMaXN0XHJcbiAgICpcclxuICAgKiBlbGVtZW50UmVmXHJcbiAgICogQHJldHVybnMgRWxlbWVudFJlZiB8IG51bGxcclxuICAgKi9cclxuICBwcml2YXRlIHN0YXRpYyBnZXRFbGVtZW50V2l0aFZhbGlkQ2xhc3NMaXN0KGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcclxuICAgIGNvbnN0IGUgPSBlbGVtZW50UmVmIGluc3RhbmNlb2YgRWxlbWVudFJlZiA/IGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCA6IGVsZW1lbnRSZWY7XHJcblxyXG4gICAgaWYgKGUuY2xhc3NMaXN0ICE9PSB1bmRlZmluZWQgJiYgZS5jbGFzc0xpc3QgIT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIGU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIHNsaWNlKGFyZ3MsIHNsaWNlPywgc2xpY2VFbmQ/KSB7XHJcbiAgICBjb25zdCByZXQgPSBbXTtcclxuICAgIGxldCBsZW4gPSBhcmdzLmxlbmd0aDtcclxuXHJcbiAgICBpZiAobGVuID09PSAwKSB7XHJcbiAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc3RhcnQgPSBzbGljZSA8IDAgPyBNYXRoLm1heCgwLCBzbGljZSArIGxlbikgOiBzbGljZSB8fCAwO1xyXG5cclxuICAgIGlmIChzbGljZUVuZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGxlbiA9IHNsaWNlRW5kIDwgMCA/IHNsaWNlRW5kICsgbGVuIDogc2xpY2VFbmQ7XHJcbiAgICB9XHJcblxyXG4gICAgd2hpbGUgKGxlbi0tID4gc3RhcnQpIHtcclxuICAgICAgcmV0W2xlbiAtIHN0YXJ0XSA9IGFyZ3NbbGVuXTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXQ7XHJcbiAgfVxyXG5cclxuICAvLyDliqjmgIHmt7vliqBzdHlsZXNcclxuICBwdWJsaWMgc3RhdGljIGFkZEVsU3R5bGVzKGVsOiBhbnksIHN0eWxlczogYW55KSB7XHJcbiAgICBpZiAoc3R5bGVzIGluc3RhbmNlb2YgT2JqZWN0KSB7XHJcbiAgICAgIGZvciAoY29uc3QgcyBpbiBzdHlsZXMpIHtcclxuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0eWxlcywgcykpIHtcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHN0eWxlc1tzXSkpIHtcclxuICAgICAgICAgICAgLy8g55So5LqO5pSv5oyB5YW85a655riQ6YCAXHJcbiAgICAgICAgICAgIHN0eWxlc1tzXS5mb3JFYWNoKCh2YWwpID0+IHtcclxuICAgICAgICAgICAgICBlbC5zdHlsZVtzXSA9IHZhbDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBlbC5zdHlsZVtzXSA9IHN0eWxlc1tzXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcHVibGljIHN0YXRpYyBkaXNwYXRjaEV2ZW50VG9VbmRlckVsZW1lbnQoZXZlbnQ6IERyYWdFdmVudCwgdGFyZ2V0PzogSFRNTEVsZW1lbnQsIGV2ZW50VHlwZT86IHN0cmluZykge1xyXG4gICAgY29uc3QgdXAgPSB0YXJnZXQgfHwgPEhUTUxFbGVtZW50PmV2ZW50LnRhcmdldDtcclxuICAgIHVwLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICBjb25zdCB7IHgsIHkgfSA9IHsgeDogZXZlbnQuY2xpZW50WCwgeTogZXZlbnQuY2xpZW50WSB9O1xyXG4gICAgY29uc3QgdW5kZXIgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHgsIHkpO1xyXG4gICAgdXAuc3R5bGUuZGlzcGxheSA9ICcnO1xyXG4gICAgaWYgKCF1bmRlcikge1xyXG4gICAgICByZXR1cm4gZXZlbnQ7XHJcbiAgICB9XHJcbiAgICBjb25zdCBldiA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdEcmFnRXZlbnQnKTtcclxuICAgIGV2LmluaXRNb3VzZUV2ZW50KFxyXG4gICAgICBldmVudFR5cGUgfHwgZXZlbnQudHlwZSxcclxuICAgICAgdHJ1ZSxcclxuICAgICAgdHJ1ZSxcclxuICAgICAgd2luZG93LFxyXG4gICAgICAwLFxyXG4gICAgICBldmVudC5zY3JlZW5YLFxyXG4gICAgICBldmVudC5zY3JlZW5ZLFxyXG4gICAgICBldmVudC5jbGllbnRYLFxyXG4gICAgICBldmVudC5jbGllbnRZLFxyXG4gICAgICBldmVudC5jdHJsS2V5LFxyXG4gICAgICBldmVudC5hbHRLZXksXHJcbiAgICAgIGV2ZW50LnNoaWZ0S2V5LFxyXG4gICAgICBldmVudC5tZXRhS2V5LFxyXG4gICAgICBldmVudC5idXR0b24sXHJcbiAgICAgIGV2ZW50LnJlbGF0ZWRUYXJnZXRcclxuICAgICk7XHJcbiAgICBpZiAoZXYuZGF0YVRyYW5zZmVyICE9PSBudWxsKSB7XHJcbiAgICAgIGV2LmRhdGFUcmFuc2Zlci5zZXREYXRhKCd0ZXh0JywgJycpO1xyXG4gICAgICBldi5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9IGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkO1xyXG4gICAgfVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHVuZGVyLmRpc3BhdGNoRXZlbnQoZXYpO1xyXG4gICAgfSwgMCk7XHJcbiAgICByZXR1cm4gZXZlbnQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==