UNPKG

@duoduo-oba/ng-devui

Version:

DevUI components based on Angular

310 lines 25.5 kB
/** * @fileoverview added by tsickle * Generated from: fullscreen.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, Input, Inject, ElementRef, Output, EventEmitter } from '@angular/core'; import { DOCUMENT } from '@angular/common'; import { DEFAULT_ZINDEX, DEFAULT_MODE, ESC_KEYCODE } from './fullscreen.config'; var FullscreenComponent = /** @class */ (function () { function FullscreenComponent(elementRef, doc) { var _this = this; this.elementRef = elementRef; this.doc = doc; this.isFullscreen = false; this.mode = DEFAULT_MODE; this.zIndex = DEFAULT_ZINDEX; this.fullscreenLaunch = new EventEmitter(); this.onFullScreenChange = (/** * @param {?} event * @return {?} */ function (event) { if (_this.currentTarget) { /** @type {?} */ var targetElement = _this.currentTarget; if (_this.doc.fullscreenElement) { // 进入全屏 _this.launchNormalFullscreen(targetElement); } else { // 退出全屏 _this.currentTarget = null; _this.exitNormalFullscreen(targetElement); } // F11退出全屏时,需要将全屏状态传出去 /** @type {?} */ var isFullscreen = !!_this.doc.fullscreenElement; _this.fullscreenLaunch.emit({ isFullscreen: isFullscreen }); _this.isFullscreen = isFullscreen; } }); this.handleFullscreen = (/** * @return {?} */ function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { var targetElement, isFullscreen, fullscreen; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: targetElement = this.elementRef.nativeElement.querySelector('[fullscreen-target]'); if (!(this.mode === 'normal')) return [3 /*break*/, 1]; fullscreen = targetElement.classList.contains('fullscreen'); if (!fullscreen) { // 进入全屏 this.launchNormalFullscreen(targetElement); isFullscreen = true; } else { // 退出全屏 this.exitNormalFullscreen(targetElement); isFullscreen = false; } return [3 /*break*/, 5]; case 1: this.currentTarget = targetElement; if (!this.doc.fullscreenElement) return [3 /*break*/, 3]; return [4 /*yield*/, this.exitImmersiveFullScreen(this.doc)]; case 2: isFullscreen = _a.sent(); return [3 /*break*/, 5]; case 3: return [4 /*yield*/, this.launchImmersiveFullScreen(this.doc.documentElement)]; case 4: isFullscreen = _a.sent(); _a.label = 5; case 5: this.isFullscreen = isFullscreen; this.fullscreenLaunch.emit({ isFullscreen: isFullscreen }); return [2 /*return*/]; } }); }); }); this.handleKeyDown = (/** * @param {?} event * @return {?} */ function (event) { if (event.keyCode === ESC_KEYCODE) { // 按ESC键退出全屏 if (_this.isFullscreen) { /** @type {?} */ var targetElement = _this.elementRef.nativeElement.querySelector('[fullscreen-target]'); if (_this.mode === 'normal') { _this.exitNormalFullscreen(targetElement); } else { if (_this.doc.fullscreenElement) { _this.exitImmersiveFullScreen(_this.doc); } } _this.fullscreenLaunch.emit({ isFullscreen: false }); _this.isFullscreen = false; } } }); } /** * @return {?} */ FullscreenComponent.prototype.ngOnInit = /** * @return {?} */ function () { document.addEventListener('fullscreenchange', this.onFullScreenChange); document.addEventListener('keydown', this.handleKeyDown); /** @type {?} */ var btnLaunch = this.elementRef.nativeElement.querySelector('[fullscreen-launch]'); if (btnLaunch) { btnLaunch.addEventListener('click', this.handleFullscreen); } }; /** * @private * @param {?} targetElement * @return {?} */ FullscreenComponent.prototype.launchNormalFullscreen = /** * @private * @param {?} targetElement * @return {?} */ function (targetElement) { targetElement.classList.add('fullscreen'); if (this.zIndex) { targetElement.setAttribute('style', "z-index: " + this.zIndex); } }; /** * @private * @param {?} targetElement * @return {?} */ FullscreenComponent.prototype.exitNormalFullscreen = /** * @private * @param {?} targetElement * @return {?} */ function (targetElement) { targetElement.classList.remove('fullscreen'); targetElement.style.zIndex = null; }; /** * @private * @param {?} docElement * @return {?} */ FullscreenComponent.prototype.launchImmersiveFullScreen = /** * @private * @param {?} docElement * @return {?} */ function (docElement) { return tslib_1.__awaiter(this, void 0, void 0, function () { var fullscreenLaunch; var _this = this; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: if (docElement.requestFullscreen) { fullscreenLaunch = docElement.requestFullscreen(); } else if (docElement.mozRequestFullScreen) { fullscreenLaunch = docElement.mozRequestFullScreen(); } else if (docElement.webkitRequestFullScreen) { fullscreenLaunch = docElement.webkitRequestFullScreen(); } else if (docElement.msRequestFullscreen) { fullscreenLaunch = docElement.msRequestFullscreen(); } return [4 /*yield*/, fullscreenLaunch.then((/** * @return {?} */ function () { return !!_this.doc.fullscreenElement; }))]; case 1: return [2 /*return*/, _a.sent()]; } }); }); }; /** * @private * @param {?} doc * @return {?} */ FullscreenComponent.prototype.exitImmersiveFullScreen = /** * @private * @param {?} doc * @return {?} */ function (doc) { return tslib_1.__awaiter(this, void 0, void 0, function () { var fullscreenExit; var _this = this; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: if (doc.exitFullscreen) { fullscreenExit = doc.exitFullscreen(); } else if (doc.mozCancelFullScreen) { fullscreenExit = doc.mozCancelFullScreen(); } else if (doc.webkitCancelFullScreen) { fullscreenExit = doc.webkitCancelFullScreen(); } else if (doc.msExitFullscreen) { fullscreenExit = doc.msExitFullscreen(); } return [4 /*yield*/, fullscreenExit.then((/** * @return {?} */ function () { return !!_this.doc.fullscreenElement; }))]; case 1: return [2 /*return*/, _a.sent()]; } }); }); }; /** * @return {?} */ FullscreenComponent.prototype.ngOnDestroy = /** * @return {?} */ function () { document.removeEventListener('fullscreenchange', this.onFullScreenChange); document.removeEventListener('keydown', this.handleKeyDown); /** @type {?} */ var btnLaunch = this.elementRef.nativeElement.querySelector('[fullscreen-launch]'); if (btnLaunch) { btnLaunch.removeEventListener('click', this.handleFullscreen); } }; FullscreenComponent.decorators = [ { type: Component, args: [{ selector: 'd-fullscreen', template: "<div class=\"fullscreen-container\">\r\n <ng-content select=\"[fullscreen-launch]\"></ng-content>\r\n <ng-content select=\"[fullscreen-target]\"></ng-content>\r\n</div>\r\n", styles: [":host ::ng-deep .fullscreen{position:fixed;top:0;left:0;width:100%;height:100%;z-index:10;overflow:auto;background-color:#fff}"] }] } ]; /** @nocollapse */ FullscreenComponent.ctorParameters = function () { return [ { type: ElementRef }, { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] } ]; }; FullscreenComponent.propDecorators = { mode: [{ type: Input }], zIndex: [{ type: Input }], target: [{ type: Input }], fullscreenLaunch: [{ type: Output }] }; return FullscreenComponent; }()); export { FullscreenComponent }; if (false) { /** * @type {?} * @private */ FullscreenComponent.prototype.currentTarget; /** * @type {?} * @private */ FullscreenComponent.prototype.isFullscreen; /** @type {?} */ FullscreenComponent.prototype.mode; /** @type {?} */ FullscreenComponent.prototype.zIndex; /** @type {?} */ FullscreenComponent.prototype.target; /** @type {?} */ FullscreenComponent.prototype.fullscreenLaunch; /** * @type {?} * @private */ FullscreenComponent.prototype.onFullScreenChange; /** * @type {?} * @private */ FullscreenComponent.prototype.handleFullscreen; /** * @type {?} * @private */ FullscreenComponent.prototype.handleKeyDown; /** * @type {?} * @private */ FullscreenComponent.prototype.elementRef; /** * @type {?} * @private */ FullscreenComponent.prototype.doc; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVsbHNjcmVlbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1kZXZ1aS9mdWxsc2NyZWVuLyIsInNvdXJjZXMiOlsiZnVsbHNjcmVlbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsS0FBSyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFaEY7SUFlRSw2QkFDVSxVQUFzQixFQUNKLEdBQVE7UUFGcEMsaUJBR0s7UUFGSyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ0osUUFBRyxHQUFILEdBQUcsQ0FBSztRQVY1QixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVwQixTQUFJLEdBQW1CLFlBQVksQ0FBQztRQUNwQyxXQUFNLEdBQUcsY0FBYyxDQUFDO1FBR3ZCLHFCQUFnQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBc0QzRCx1QkFBa0I7Ozs7UUFBRyxVQUFDLEtBQUs7WUFDakMsSUFBSSxLQUFJLENBQUMsYUFBYSxFQUFFOztvQkFDaEIsYUFBYSxHQUFnQixLQUFJLENBQUMsYUFBYTtnQkFDckQsSUFBSSxLQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsT0FBTztvQkFDdkMsS0FBSSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxDQUFDO2lCQUM1QztxQkFBTSxFQUFFLE9BQU87b0JBQ2QsS0FBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7b0JBQzFCLEtBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztpQkFDMUM7OztvQkFFSyxZQUFZLEdBQUcsQ0FBQyxDQUFDLEtB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QkFUcUQsVUFBVTtnREFzQjNELE1BQU0sU0FBQyxRQUFROzs7dUJBUmpCLEtBQUs7eUJBQ0wsS0FBSzt5QkFDTCxLQUFLO21DQUVMLE1BQU07O0lBMEhULDBCQUFDO0NBQUEsQUF2SUQsSUF1SUM7U0FsSVksbUJBQW1COzs7Ozs7SUFDOUIsNENBQW1DOzs7OztJQUNuQywyQ0FBNkI7O0lBRTdCLG1DQUE2Qzs7SUFDN0MscUNBQWlDOztJQUNqQyxxQ0FBNkI7O0lBRTdCLCtDQUFtRTs7Ozs7SUFzRG5FLGlEQWdCQzs7Ozs7SUFFRCwrQ0F5QkM7Ozs7O0lBRUQsNENBZUM7Ozs7O0lBL0dDLHlDQUE4Qjs7Ozs7SUFDOUIsa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgSW5wdXQsIEluamVjdCwgRWxlbWVudFJlZiwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGdWxsc2NyZWVuTW9kZSB9IGZyb20gJy4vZnVsbHNjcmVlbi50eXBlJztcclxuaW1wb3J0IHsgREVGQVVMVF9aSU5ERVgsIERFRkFVTFRfTU9ERSwgRVNDX0tFWUNPREUgfSBmcm9tICcuL2Z1bGxzY3JlZW4uY29uZmlnJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZC1mdWxsc2NyZWVuJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZnVsbHNjcmVlbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbICcuL2Z1bGxzY3JlZW4uY29tcG9uZW50LnNjc3MnIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEZ1bGxzY3JlZW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBjdXJyZW50VGFyZ2V0OiBIVE1MRWxlbWVudDtcclxuICBwcml2YXRlIGlzRnVsbHNjcmVlbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBtb2RlOiBGdWxsc2NyZWVuTW9kZSA9IERFRkFVTFRfTU9ERTtcclxuICBASW5wdXQoKSB6SW5kZXggPSBERUZBVUxUX1pJTkRFWDtcclxuICBASW5wdXQoKSB0YXJnZXQ6IEhUTUxFbGVtZW50O1xyXG5cclxuICBAT3V0cHV0KCkgZnVsbHNjcmVlbkxhdW5jaDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2M6IGFueVxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZnVsbHNjcmVlbmNoYW5nZScsIHRoaXMub25GdWxsU2NyZWVuQ2hhbmdlKTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLmhhbmRsZUtleURvd24pO1xyXG4gICAgY29uc3QgYnRuTGF1bmNoID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignW2Z1bGxzY3JlZW4tbGF1bmNoXScpO1xyXG4gICAgaWYgKGJ0bkxhdW5jaCkgeyBidG5MYXVuY2guYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmhhbmRsZUZ1bGxzY3JlZW4pOyB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxhdW5jaE5vcm1hbEZ1bGxzY3JlZW4odGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnQpIHtcclxuICAgIHRhcmdldEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnZnVsbHNjcmVlbicpO1xyXG4gICAgaWYgKHRoaXMuekluZGV4KSB7XHJcbiAgICAgIHRhcmdldEVsZW1lbnQuc2V0QXR0cmlidXRlKCdzdHlsZScsIGB6LWluZGV4OiAke3RoaXMuekluZGV4fWApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleGl0Tm9ybWFsRnVsbHNjcmVlbih0YXJnZXRFbGVtZW50OiBIVE1MRWxlbWVudCkge1xyXG4gICAgdGFyZ2V0RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdmdWxsc2NyZWVuJyk7XHJcbiAgICB0YXJnZXRFbGVtZW50LnN0eWxlLnpJbmRleCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGxhdW5jaEltbWVyc2l2ZUZ1bGxTY3JlZW4oZG9jRWxlbWVudDogYW55KSB7XHJcbiAgICBsZXQgZnVsbHNjcmVlbkxhdW5jaDtcclxuICAgIGlmIChkb2NFbGVtZW50LnJlcXVlc3RGdWxsc2NyZWVuKSB7XHJcbiAgICAgIGZ1bGxzY3JlZW5MYXVuY2ggPSBkb2NFbGVtZW50LnJlcXVlc3RGdWxsc2NyZWVuKCk7XHJcbiAgICB9IGVsc2UgaWYgKGRvY0VsZW1lbnQubW96UmVxdWVzdEZ1bGxTY3JlZW4pIHtcclxuICAgICAgZnVsbHNjcmVlbkxhdW5jaCA9IGRvY0VsZW1lbnQubW96UmVxdWVzdEZ1bGxTY3JlZW4oKTtcclxuICAgIH0gZWxzZSBpZiAoZG9jRWxlbWVudC53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbikge1xyXG4gICAgICBmdWxsc2NyZWVuTGF1bmNoID0gZG9jRWxlbWVudC53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpO1xyXG4gICAgfSBlbHNlIGlmIChkb2NFbGVtZW50Lm1zUmVxdWVzdEZ1bGxzY3JlZW4pIHtcclxuICAgICAgZnVsbHNjcmVlbkxhdW5jaCA9IGRvY0VsZW1lbnQubXNSZXF1ZXN0RnVsbHNjcmVlbigpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGF3YWl0IGZ1bGxzY3JlZW5MYXVuY2gudGhlbigoKSA9PiAhIXRoaXMuZG9jLmZ1bGxzY3JlZW5FbGVtZW50KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZXhpdEltbWVyc2l2ZUZ1bGxTY3JlZW4oZG9jOiBhbnkpIHtcclxuICAgIGxldCBmdWxsc2NyZWVuRXhpdDtcclxuICAgIGlmIChkb2MuZXhpdEZ1bGxzY3JlZW4pIHtcclxuICAgICAgZnVsbHNjcmVlbkV4aXQgPSBkb2MuZXhpdEZ1bGxzY3JlZW4oKTtcclxuICAgIH0gZWxzZSBpZiAoZG9jLm1vekNhbmNlbEZ1bGxTY3JlZW4pIHtcclxuICAgICAgZnVsbHNjcmVlbkV4aXQgPSBkb2MubW96Q2FuY2VsRnVsbFNjcmVlbigpO1xyXG4gICAgfSBlbHNlIGlmIChkb2Mud2Via2l0Q2FuY2VsRnVsbFNjcmVlbikge1xyXG4gICAgICBmdWxsc2NyZWVuRXhpdCA9IGRvYy53ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCk7XHJcbiAgICB9IGVsc2UgaWYgKGRvYy5tc0V4aXRGdWxsc2NyZWVuKSB7XHJcbiAgICAgIGZ1bGxzY3JlZW5FeGl0ID0gZG9jLm1zRXhpdEZ1bGxzY3JlZW4oKTtcclxuICAgIH1cclxuICAgIHJldHVybiBhd2FpdCBmdWxsc2NyZWVuRXhpdC50aGVuKCgpID0+ICEhdGhpcy5kb2MuZnVsbHNjcmVlbkVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkZ1bGxTY3JlZW5DaGFuZ2UgPSAoZXZlbnQpID0+IHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnQgPSB0aGlzLmN1cnJlbnRUYXJnZXQ7XHJcbiAgICAgIGlmICh0aGlzLmRvYy5mdWxsc2NyZWVuRWxlbWVudCkgeyAvLyDov5vlhaXlhajlsY9cclxuICAgICAgICB0aGlzLmxhdW5jaE5vcm1hbEZ1bGxzY3JlZW4odGFyZ2V0RWxlbWVudCk7XHJcbiAgICAgIH0gZWxzZSB7IC8vIOmAgOWHuuWFqOWxj1xyXG4gICAgICAgIHRoaXMuY3VycmVudFRhcmdldCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5leGl0Tm9ybWFsRnVsbHNjcmVlbih0YXJnZXRFbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgICAvLyBGMTHpgIDlh7rlhajlsY/ml7bvvIzpnIDopoHlsIblhajlsY/nirbmgIHkvKDlh7rljrtcclxuICAgICAgY29uc3QgaXNGdWxsc2NyZWVuID0gISF0aGlzLmRvYy5mdWxsc2NyZWVuRWxlbWVudDtcclxuICAgICAgdGhpcy5mdWxsc2NyZWVuTGF1bmNoLmVtaXQoe1xyXG4gICAgICAgIGlzRnVsbHNjcmVlblxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5pc0Z1bGxzY3JlZW4gPSBpc0Z1bGxzY3JlZW47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUZ1bGxzY3JlZW4gPSBhc3luYyAoKSA9PiB7XHJcbiAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignW2Z1bGxzY3JlZW4tdGFyZ2V0XScpO1xyXG4gICAgbGV0IGlzRnVsbHNjcmVlbjtcclxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdub3JtYWwnKSB7XHJcbiAgICAgIGNvbnN0IGZ1bGxzY3JlZW4gPSB0YXJnZXRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnZnVsbHNjcmVlbicpO1xyXG4gICAgICBpZiAoIWZ1bGxzY3JlZW4pIHsgLy8g6L+b5YWl5YWo5bGPXHJcbiAgICAgICAgdGhpcy5sYXVuY2hOb3JtYWxGdWxsc2NyZWVuKHRhcmdldEVsZW1lbnQpO1xyXG4gICAgICAgIGlzRnVsbHNjcmVlbiA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7IC8vIOmAgOWHuuWFqOWxj1xyXG4gICAgICAgIHRoaXMuZXhpdE5vcm1hbEZ1bGxzY3JlZW4odGFyZ2V0RWxlbWVudCk7XHJcbiAgICAgICAgaXNGdWxsc2NyZWVuID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFRhcmdldCA9IHRhcmdldEVsZW1lbnQ7XHJcbiAgICAgIGlmICh0aGlzLmRvYy5mdWxsc2NyZWVuRWxlbWVudCkge1xyXG4gICAgICAgIGlzRnVsbHNjcmVlbiA9IGF3YWl0IHRoaXMuZXhpdEltbWVyc2l2ZUZ1bGxTY3JlZW4odGhpcy5kb2MpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlzRnVsbHNjcmVlbiA9IGF3YWl0IHRoaXMubGF1bmNoSW1tZXJzaXZlRnVsbFNjcmVlbih0aGlzLmRvYy5kb2N1bWVudEVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pc0Z1bGxzY3JlZW4gPSBpc0Z1bGxzY3JlZW47XHJcbiAgICB0aGlzLmZ1bGxzY3JlZW5MYXVuY2guZW1pdCh7XHJcbiAgICAgIGlzRnVsbHNjcmVlblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUtleURvd24gPSAoZXZlbnQpID0+IHtcclxuICAgIGlmIChldmVudC5rZXlDb2RlID09PSBFU0NfS0VZQ09ERSkgeyAvLyDmjIlFU0PplK7pgIDlh7rlhajlsY9cclxuICAgICAgaWYgKHRoaXMuaXNGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tmdWxsc2NyZWVuLXRhcmdldF0nKTtcclxuICAgICAgICBpZiAodGhpcy5tb2RlID09PSAnbm9ybWFsJykge1xyXG4gICAgICAgICAgdGhpcy5leGl0Tm9ybWFsRnVsbHNjcmVlbih0YXJnZXRFbGVtZW50KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZG9jLmZ1bGxzY3JlZW5FbGVtZW50KSB7IHRoaXMuZXhpdEltbWVyc2l2ZUZ1bGxTY3JlZW4odGhpcy5kb2MpOyB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZnVsbHNjcmVlbkxhdW5jaC5lbWl0KHtcclxuICAgICAgICAgIGlzRnVsbHNjcmVlbjogZmFsc2VcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmlzRnVsbHNjcmVlbiA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Z1bGxzY3JlZW5jaGFuZ2UnLCB0aGlzLm9uRnVsbFNjcmVlbkNoYW5nZSk7XHJcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5oYW5kbGVLZXlEb3duKTtcclxuICAgIGNvbnN0IGJ0bkxhdW5jaCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tmdWxsc2NyZWVuLWxhdW5jaF0nKTtcclxuICAgIGlmIChidG5MYXVuY2gpIHsgYnRuTGF1bmNoLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5oYW5kbGVGdWxsc2NyZWVuKTsgfVxyXG4gIH1cclxufVxyXG4iXX0=