UNPKG

@neocomplexx/ngx-neo-modal

Version:

This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.0.5.

206 lines 23.6 kB
/** * @fileoverview added by tsickle * Generated from: lib/ngx-neo-modal.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /* tslint:disable:no-bitwise */ import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; import { Component, ChangeDetectorRef, ViewChild } from '@angular/core'; export class NgxNeoModalComponent { /** * @param {?} activeModal * @param {?} changeRef */ constructor(activeModal, changeRef) { this.activeModal = activeModal; this.changeRef = changeRef; // Default config this.config = { title: { visibility: true, text: 'This is a title' }, message: 'This is a message', type: null, input: { visibility: false, placeholder: 'Ingrese su texto aquí', value: null, autofocus: false, id: 'neoInput' }, button: { yes: { visibility: false, autofocus: false, text: 'Si', id: 'neoBtnYes' }, no: { visibility: false, autofocus: false, text: 'No', id: 'neoBtnNo' }, retry: { visibility: false, autofocus: false, text: 'Reintentar', id: 'neoBtnRetry' }, cancel: { visibility: true, autofocus: false, text: 'Cancelar', id: 'neoBtnCancel' }, accept: { visibility: true, autofocus: true, text: 'Aceptar', id: 'neoBtnAccept' }, } }; } /** * @return {?} */ ngAfterViewInit() { setTimeout((/** * @return {?} */ () => this.activeFocus()), 0); } /** * @private * @param {?=} inputModal * @return {?} */ activeFocus(inputModal = true) { /** @type {?} */ const foc = this.getButtonFocus(); /** @type {?} */ const inputFocus = this.getInputFocus(); // Find element in DOM and focus. if (inputFocus && inputModal && (!foc || foc === 'neoBtnAccept')) { this.input.nativeElement.focus(); } else if (foc) { /** @type {?} */ const button = this.btn.nativeElement.children.namedItem(foc); if (button) { button.focus(); } } } /** * @private * @return {?} */ getButtonFocus() { /** @type {?} */ const button = Object.keys(this.config.button) .find((/** * @param {?} key * @return {?} */ key => this.config.button[key].visibility && this.config.button[key].autofocus)); if (button) { return this.config.button[button].id; } else { return null; } } /** * @private * @return {?} */ getInputFocus() { if (this.config.input.visibility && this.config.input.autofocus) { return this.config.input.id; } else { return null; } } /** * @param {?} res * @return {?} */ informResult(res) { /** @type {?} */ const button = AlertButton[res]; /** @type {?} */ const respuesta = new AlertResult(button, this.config.input.value); this.activeModal.close(respuesta); this.activeModal.dismiss(respuesta); } /** * @return {?} */ setFocus() { this.activeFocus(false); } } NgxNeoModalComponent.decorators = [ { type: Component, args: [{ template: "<div id=\"myModal\">\n <div class=\"modal-header\">\n <button type=\"button\" class=\"close\" aria-label=\"Close\" data-dismiss=\"myModal\" (click)=\"informResult('None')\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n <div class=\"modal-body text-center\">\n <div class=\"icons\">\n <div *ngIf=\"config.type === 'success'\" class=\"swal2-icon swal2-success swal2-animate-success-icon\">\n <div class=\"swal2-success-circular-line-left\"></div>\n <span class=\"swal2-success-line-tip swal2-animate-success-line-tip\"></span>\n <span class=\"swal2-success-line-long swal2-animate-success-line-long\"></span>\n <div class=\"swal2-success-ring\"></div>\n <div class=\"swal2-success-fix\"></div>\n <div class=\"swal2-success-circular-line-right\"></div>\n </div>\n\n <div *ngIf=\"config.type === 'error'\" class=\"swal2-icon swal2-error swal2-animate-error-icon\">\n <span class=\"swal2-x-mark swal2-animate-x-mark\">\n <span class=\"swal2-x-mark-line-left\"></span>\n <span class=\"swal2-x-mark-line-right\"></span>\n </span>\n </div>\n\n <div *ngIf=\"config.type === 'warning'\" class=\"swal2-icon swal2-warning\">!</div>\n\n <div *ngIf=\"config.type === 'info'\" class=\"swal2-icon swal2-info\">i</div>\n\n <div *ngIf=\"config.type === 'question'\" class=\"swal2-icon swal2-question\">?</div>\n </div>\n\n <h4 *ngIf='config.title.visibility'>{{config.title.text}}</h4>\n <p>{{config.message}}</p>\n <div class=\"form-group\">\n <input id=\"neoInput\" #myInput *ngIf='config.input.visibility' class=\"form-control\" [(ngModel)]=\"config.input.value\" placeholder={{config.input.placeholder}}\n type='text' (keyup.enter)=\"setFocus()\">\n </div>\n </div>\n\n <div #buttons class=\"modal-footer\">\n <button id=\"neoBtnAccept\" *ngIf='config.button.accept.visibility' type=\"button\" class=\"btn btn-primary\" (click)=\"informResult('Accept')\">{{config.button.accept.text}}</button>\n <button id=\"neoBtnCancel\" *ngIf='config.button.cancel.visibility' type=\"button\" class=\"btn btn-primary\" (click)=\"informResult('Cancel')\">{{config.button.cancel.text}}</button>\n <button id=\"neoBtnYes\" *ngIf='config.button.yes.visibility' type=\"button\" class=\"btn btn-primary\" (click)=\"informResult('Yes')\">{{config.button.yes.text}}</button>\n <button id=\"neoBtnRetry\" *ngIf='config.button.retry.visibility' type=\"button\" class=\"btn btn-primary\" (click)=\"informResult('Retry')\">{{config.button.retry.text}}</button>\n <button id=\"neoBtnNo\" *ngIf='config.button.no.visibility' type=\"button\" class=\"btn btn-primary\" (click)=\"informResult('No')\">{{config.button.no.text}}</button>\n </div>\n\n</div>", styles: [".modal-footer,.modal-header{border:0}@-webkit-keyframes showSweetAlert{0%{-webkit-transform:scale(.7);transform:scale(.7)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes showSweetAlert{0%{-webkit-transform:scale(.7);transform:scale(.7)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}100%{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes hideSweetAlert{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(.5);transform:scale(.5);opacity:0}}@keyframes hideSweetAlert{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(.5);transform:scale(.5);opacity:0}}.swal2-show{-webkit-animation:.3s showSweetAlert;animation:.3s showSweetAlert}.swal2-show.swal2-noanimation{-webkit-animation:none;animation:none}.swal2-hide{-webkit-animation:.15s forwards hideSweetAlert;animation:.15s forwards hideSweetAlert}.swal2-hide.swal2-noanimation{-webkit-animation:none;animation:none}@-webkit-keyframes animate-success-tip{0%,54%{width:0;left:1px;top:19px}70%{width:50px;left:-8px;top:37px}84%{width:17px;left:21px;top:48px}100%{width:25px;left:14px;top:45px}}@keyframes animate-success-tip{0%,54%{width:0;left:1px;top:19px}70%{width:50px;left:-8px;top:37px}84%{width:17px;left:21px;top:48px}100%{width:25px;left:14px;top:45px}}@-webkit-keyframes animate-success-long{0%,65%{width:0;right:46px;top:54px}84%{width:55px;right:0;top:35px}100%{width:47px;right:8px;top:38px}}@keyframes animate-success-long{0%,65%{width:0;right:46px;top:54px}84%{width:55px;right:0;top:35px}100%{width:47px;right:8px;top:38px}}@-webkit-keyframes rotatePlaceholder{0%,5%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}100%,12%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}@keyframes rotatePlaceholder{0%,5%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}100%,12%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}.swal2-animate-success-line-tip{-webkit-animation:.75s animate-success-tip;animation:.75s animate-success-tip}.swal2-animate-success-line-long{-webkit-animation:.75s animate-success-long;animation:.75s animate-success-long}@-webkit-keyframes animate-error-icon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}100%{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:1}}@keyframes animate-error-icon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}100%{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:1}}.swal2-animate-error-icon{-webkit-animation:.5s animate-error-icon;animation:.5s animate-error-icon}@-webkit-keyframes animate-x-mark{0%,50%{-webkit-transform:scale(.4);transform:scale(.4);margin-top:26px;opacity:0}80%{-webkit-transform:scale(1.15);transform:scale(1.15);margin-top:-6px}100%{-webkit-transform:scale(1);transform:scale(1);margin-top:0;opacity:1}}@keyframes animate-x-mark{0%,50%{-webkit-transform:scale(.4);transform:scale(.4);margin-top:26px;opacity:0}80%{-webkit-transform:scale(1.15);transform:scale(1.15);margin-top:-6px}100%{-webkit-transform:scale(1);transform:scale(1);margin-top:0;opacity:1}}.swal2-animate-x-mark{-webkit-animation:.5s animate-x-mark;animation:.5s animate-x-mark}@-webkit-keyframes rotate-loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate-loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.swal2-success.swal2-animate-success-icon .swal2-success-circular-line-right{-webkit-animation:4.25s ease-in rotatePlaceholder;animation:4.25s ease-in rotatePlaceholder}.swal2-icon{width:80px;height:80px;border:4px solid transparent;border-radius:50%;margin:20px auto 30px;padding:0;position:relative;box-sizing:content-box;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon.swal2-error{border-color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;display:block}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{position:absolute;height:5px;width:47px;background-color:#f27474;display:block;top:37px;border-radius:2px}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{-webkit-transform:rotate(45deg);transform:rotate(45deg);left:17px}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);right:16px}.swal2-icon.swal2-warning{font-family:\"Helvetica Neue\",Helvetica,Arial,sans-serif;color:#f8bb86;border-color:#facea8;font-size:60px;line-height:80px;text-align:center}.swal2-icon.swal2-info{font-family:\"Open Sans\",sans-serif;color:#3fc3ee;border-color:#9de0f6;font-size:60px;line-height:80px;text-align:center}.swal2-icon.swal2-question{font-family:\"Helvetica Neue\",Helvetica,Arial,sans-serif;color:#87adbd;border-color:#c9dae1;font-size:60px;line-height:80px;text-align:center}.swal2-icon.swal2-success{border-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{border-radius:50%;position:absolute;width:60px;height:120px;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{border-radius:120px 0 0 120px;top:-7px;left:-33px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:60px 60px;transform-origin:60px 60px}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{border-radius:0 120px 120px 0;top:-11px;left:30px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:0 60px;transform-origin:0 60px}.swal2-icon.swal2-success .swal2-success-ring{width:80px;height:80px;border:4px solid rgba(165,220,134,.2);border-radius:50%;box-sizing:content-box;position:absolute;left:-4px;top:-4px;z-index:2}.swal2-icon.swal2-success .swal2-success-fix{width:7px;height:90px;position:absolute;left:28px;top:8px;z-index:1;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{height:5px;background-color:#a5dc86;display:block;border-radius:2px;position:absolute;z-index:2}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{width:25px;left:14px;top:46px;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{width:47px;right:8px;top:38px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}"] }] } ]; /** @nocollapse */ NgxNeoModalComponent.ctorParameters = () => [ { type: NgbActiveModal }, { type: ChangeDetectorRef } ]; NgxNeoModalComponent.propDecorators = { btn: [{ type: ViewChild, args: ['buttons', { static: true },] }], input: [{ type: ViewChild, args: ['myInput', { static: false },] }] }; if (false) { /** @type {?} */ NgxNeoModalComponent.prototype.config; /** @type {?} */ NgxNeoModalComponent.prototype.btn; /** @type {?} */ NgxNeoModalComponent.prototype.input; /** @type {?} */ NgxNeoModalComponent.prototype.activeModal; /** @type {?} */ NgxNeoModalComponent.prototype.changeRef; } export class AlertResult { /** * @param {?} ButtonResponse * @param {?} messageInput */ constructor(ButtonResponse, messageInput) { this.ButtonResponse = ButtonResponse; this.messageInput = messageInput; } } if (false) { /** @type {?} */ AlertResult.prototype.ButtonResponse; /** @type {?} */ AlertResult.prototype.messageInput; } /** @enum {number} */ const AlertButton = { None: 0, Accept: 1, Cancel: 2, Yes: 4, No: 8, Retry: 16, }; export { AlertButton }; AlertButton[AlertButton.None] = 'None'; AlertButton[AlertButton.Accept] = 'Accept'; AlertButton[AlertButton.Cancel] = 'Cancel'; AlertButton[AlertButton.Yes] = 'Yes'; AlertButton[AlertButton.No] = 'No'; AlertButton[AlertButton.Retry] = 'Retry'; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LW5lby1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbmVvY29tcGxleHgvbmd4LW5lby1tb2RhbC8iLCJzb3VyY2VzIjpbImxpYi9uZ3gtbmVvLW1vZGFsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBaUIsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBT3ZGLE1BQU0sT0FBTyxvQkFBb0I7Ozs7O0lBcUQvQixZQUFtQixXQUEyQixFQUFTLFNBQTRCO1FBQWhFLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUFTLGNBQVMsR0FBVCxTQUFTLENBQW1COztRQW5ENUUsV0FBTSxHQUFHO1lBQ2QsS0FBSyxFQUFFO2dCQUNMLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixJQUFJLEVBQUUsaUJBQWlCO2FBQ3hCO1lBQ0QsT0FBTyxFQUFFLG1CQUFtQjtZQUM1QixJQUFJLEVBQUUsSUFBSTtZQUNWLEtBQUssRUFBRTtnQkFDTCxVQUFVLEVBQUUsS0FBSztnQkFDakIsV0FBVyxFQUFFLHVCQUF1QjtnQkFDcEMsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsU0FBUyxFQUFFLEtBQUs7Z0JBQ2hCLEVBQUUsRUFBRSxVQUFVO2FBQ2Y7WUFDRCxNQUFNLEVBQUU7Z0JBQ04sR0FBRyxFQUFFO29CQUNILFVBQVUsRUFBRSxLQUFLO29CQUNqQixTQUFTLEVBQUUsS0FBSztvQkFDaEIsSUFBSSxFQUFFLElBQUk7b0JBQ1YsRUFBRSxFQUFFLFdBQVc7aUJBQ2hCO2dCQUNELEVBQUUsRUFBRTtvQkFDRixVQUFVLEVBQUUsS0FBSztvQkFDakIsU0FBUyxFQUFFLEtBQUs7b0JBQ2hCLElBQUksRUFBRSxJQUFJO29CQUNWLEVBQUUsRUFBRSxVQUFVO2lCQUNmO2dCQUNELEtBQUssRUFBRTtvQkFDTCxV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OztrQkF5RGpELFNBQVMsU0FBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO29CQUNyQyxTQUFTLFNBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs7OztJQWpEdkMsc0NBOENFOztJQUVGLG1DQUFpRDs7SUFDakQscUNBQW9EOztJQUV4QywyQ0FBa0M7O0lBQUUseUNBQW1DOztBQTBEckYsTUFBTSxPQUFPLFdBQVc7Ozs7O0lBRXRCLFlBQW1CLGNBQTJCLEVBQVMsWUFBb0I7UUFBeEQsbUJBQWMsR0FBZCxjQUFjLENBQWE7UUFBUyxpQkFBWSxHQUFaLFlBQVksQ0FBUTtJQUMzRSxDQUFDO0NBQ0Y7OztJQUZhLHFDQUFrQzs7SUFBRSxtQ0FBMkI7OztBQUk3RSxNQUFZLFdBQVc7SUFDckIsSUFBSSxHQUFJO0lBQ1IsTUFBTSxHQUFTO0lBQ2YsTUFBTSxHQUFTO0lBQ2YsR0FBRyxHQUFTO0lBQ1osRUFBRSxHQUFTO0lBQ1gsS0FBSyxJQUFTO0VBQ2YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiB0c2xpbnQ6ZGlzYWJsZTpuby1iaXR3aXNlICovXG5pbXBvcnQgeyBOZ2JBY3RpdmVNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IENvbXBvbmVudCwgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL25neC1uZW8tbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9uZ3gtbmVvLW1vZGFsLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5cbmV4cG9ydCBjbGFzcyBOZ3hOZW9Nb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAvLyBEZWZhdWx0IGNvbmZpZ1xuICBwdWJsaWMgY29uZmlnID0ge1xuICAgIHRpdGxlOiB7XG4gICAgICB2aXNpYmlsaXR5OiB0cnVlLFxuICAgICAgdGV4dDogJ1RoaXMgaXMgYSB0aXRsZSdcbiAgICB9LFxuICAgIG1lc3NhZ2U6ICdUaGlzIGlzIGEgbWVzc2FnZScsXG4gICAgdHlwZTogbnVsbCxcbiAgICBpbnB1dDoge1xuICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICBwbGFjZWhvbGRlcjogJ0luZ3Jlc2Ugc3UgdGV4dG8gYXF1w60nLFxuICAgICAgdmFsdWU6IG51bGwsXG4gICAgICBhdXRvZm9jdXM6IGZhbHNlLFxuICAgICAgaWQ6ICduZW9JbnB1dCdcbiAgICB9LFxuICAgIGJ1dHRvbjoge1xuICAgICAgeWVzOiB7XG4gICAgICAgIHZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICBhdXRvZm9jdXM6IGZhbHNlLFxuICAgICAgICB0ZXh0OiAnU2knLFxuICAgICAgICBpZDogJ25lb0J0blllcydcbiAgICAgIH0sXG4gICAgICBubzoge1xuICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgYXV0b2ZvY3VzOiBmYWxzZSxcbiAgICAgICAgdGV4dDogJ05vJyxcbiAgICAgICAgaWQ6ICduZW9CdG5ObydcbiAgICAgIH0sXG4gICAgICByZXRyeToge1xuICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgYXV0b2ZvY3VzOiBmYWxzZSxcbiAgICAgICAgdGV4dDogJ1JlaW50ZW50YXInLFxuICAgICAgICBpZDogJ25lb0J0blJldHJ5J1xuICAgICAgfSxcbiAgICAgIGNhbmNlbDoge1xuICAgICAgICB2aXNpYmlsaXR5OiB0cnVlLFxuICAgICAgICBhdXRvZm9jdXM6IGZhbHNlLFxuICAgICAgICB0ZXh0OiAnQ2FuY2VsYXInLFxuICAgICAgICBpZDogJ25lb0J0bkNhbmNlbCdcbiAgICAgIH0sXG4gICAgICBhY2NlcHQ6IHtcbiAgICAgICAgdmlzaWJpbGl0eTogdHJ1ZSxcbiAgICAgICAgYXV0b2ZvY3VzOiB0cnVlLFxuICAgICAgICB0ZXh0OiAnQWNlcHRhcicsXG4gICAgICAgIGlkOiAnbmVvQnRuQWNjZXB0J1xuICAgICAgfSxcbiAgICB9XG4gIH07XG5cbiAgQFZpZXdDaGlsZCgnYnV0dG9ucycsIHsgc3RhdGljOiB0cnVlIH0pIGJ0bjogYW55O1xuICBAVmlld0NoaWxkKCdteUlucHV0JywgeyBzdGF0aWM6IGZhbHNlIH0pIGlucHV0OiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGFjdGl2ZU1vZGFsOiBOZ2JBY3RpdmVNb2RhbCwgcHVibGljIGNoYW5nZVJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgfVxuXG5cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmFjdGl2ZUZvY3VzKCksIDApO1xuICB9XG5cbiAgcHJpdmF0ZSBhY3RpdmVGb2N1cyhpbnB1dE1vZGFsID0gdHJ1ZSkge1xuICAgIGNvbnN0IGZvYzogc3RyaW5nID0gdGhpcy5nZXRCdXR0b25Gb2N1cygpO1xuICAgIGNvbnN0IGlucHV0Rm9jdXMgPSB0aGlzLmdldElucHV0Rm9jdXMoKTtcblxuICAgIC8vIEZpbmQgZWxlbWVudCBpbiBET00gYW5kIGZvY3VzLlxuICAgIGlmIChpbnB1dEZvY3VzICYmIGlucHV0TW9kYWwgJiYgKCFmb2MgfHwgZm9jID09PSAnbmVvQnRuQWNjZXB0JykpIHtcbiAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH0gZWxzZSBpZiAoZm9jKSB7XG4gICAgICBjb25zdCBidXR0b24gPSB0aGlzLmJ0bi5uYXRpdmVFbGVtZW50LmNoaWxkcmVuLm5hbWVkSXRlbShmb2MpO1xuICAgICAgaWYgKGJ1dHRvbikgeyBidXR0b24uZm9jdXMoKTsgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0QnV0dG9uRm9jdXMoKTogc3RyaW5nIHtcbiAgICBjb25zdCBidXR0b24gPSBPYmplY3Qua2V5cyh0aGlzLmNvbmZpZy5idXR0b24pXG4gICAgICAuZmluZChrZXkgPT4gdGhpcy5jb25maWcuYnV0dG9uW2tleV0udmlzaWJpbGl0eSAmJiB0aGlzLmNvbmZpZy5idXR0b25ba2V5XS5hdXRvZm9jdXMpO1xuICAgIGlmIChidXR0b24pIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5idXR0b25bYnV0dG9uXS5pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gIH1cblxuICBwcml2YXRlIGdldElucHV0Rm9jdXMoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5jb25maWcuaW5wdXQudmlzaWJpbGl0eSAmJiB0aGlzLmNvbmZpZy5pbnB1dC5hdXRvZm9jdXMpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5pbnB1dC5pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGluZm9ybVJlc3VsdChyZXM6IHN0cmluZykge1xuICAgIGNvbnN0IGJ1dHRvbjogQWxlcnRCdXR0b24gPSBBbGVydEJ1dHRvbltyZXNdO1xuICAgIGNvbnN0IHJlc3B1ZXN0YTogQWxlcnRSZXN1bHQgPSBuZXcgQWxlcnRSZXN1bHQoYnV0dG9uLCB0aGlzLmNvbmZpZy5pbnB1dC52YWx1ZSk7XG5cbiAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKHJlc3B1ZXN0YSk7XG4gICAgdGhpcy5hY3RpdmVNb2RhbC5kaXNtaXNzKHJlc3B1ZXN0YSk7XG4gIH1cblxuICBwdWJsaWMgc2V0Rm9jdXMoKSB7XG4gICAgdGhpcy5hY3RpdmVGb2N1cyhmYWxzZSk7XG4gIH1cblxuXG59XG5cblxuXG5leHBvcnQgY2xhc3MgQWxlcnRSZXN1bHQge1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBCdXR0b25SZXNwb25zZTogQWxlcnRCdXR0b24sIHB1YmxpYyBtZXNzYWdlSW5wdXQ6IHN0cmluZykge1xuICB9XG59XG5cbmV4cG9ydCBlbnVtIEFsZXJ0QnV0dG9uIHtcbiAgTm9uZSA9IDAsXG4gIEFjY2VwdCA9IDEgPDwgMCxcbiAgQ2FuY2VsID0gMSA8PCAxLFxuICBZZXMgPSAxIDw8IDIsXG4gIE5vID0gMSA8PCAzLFxuICBSZXRyeSA9IDEgPDwgNFxufVxuIl19