UNPKG

ng-devui

Version:

DevUI components based on Angular

108 lines 18.7 kB
import { DOCUMENT } from '@angular/common'; import { ComponentFactoryResolver, Inject, Injectable, RendererFactory2 } from '@angular/core'; import { OverlayContainerRef } from 'ng-devui/overlay-container'; import { DevConfigService } from 'ng-devui/utils'; import { assign, isUndefined } from 'lodash-es'; import { ModalContainerComponent } from './modal-container.component'; import { ModalComponent } from './modal.component'; import * as i0 from "@angular/core"; import * as i1 from "ng-devui/overlay-container"; import * as i2 from "ng-devui/utils"; export class DialogService { constructor(componentFactoryResolver, overlayContainerRef, rendererFactory, devConfigService, doc) { this.componentFactoryResolver = componentFactoryResolver; this.overlayContainerRef = overlayContainerRef; this.rendererFactory = rendererFactory; this.devConfigService = devConfigService; this.doc = doc; this.renderer = this.rendererFactory.createRenderer(null, null); this.document = this.doc; } open({ id, width, zIndex, backDropZIndex, backdropCloseable, maxHeight, showAnimation, /** * @deprecated */ showAnimate, title, content, html, data, buttons, injector, componentFactoryResolver, beforeHidden, onClose, onMaximize, dialogtype = 'standard', showCloseBtn = true, draggable = true, placement = 'center', offsetX, offsetY, bodyScrollable, contentTemplate, escapable = true, showMaximizeBtn = false, }) { const finalComponentFactoryResolver = componentFactoryResolver || this.componentFactoryResolver; const modalRef = this.overlayContainerRef.createComponent(finalComponentFactoryResolver.resolveComponentFactory(ModalComponent), injector); const componentConfig = this.devConfigService.getConfigForComponent('modal') || {}; const showAnimationApiConfig = this.devConfigService.getConfigForApi('showAnimation'); const bodyScrollableApiConfig = this.devConfigService.getConfigForApi('bodyScrollable'); showAnimation = showAnimation ?? showAnimate ?? componentConfig.showAnimation ?? showAnimationApiConfig; bodyScrollable = bodyScrollable ?? componentConfig.bodyScrollable ?? bodyScrollableApiConfig ?? true; assign(modalRef.instance, { id, width, zIndex, backDropZIndex, showAnimation, beforeHidden, // set backdropCloseable default value "true" when not passing it backdropCloseable: isUndefined(backdropCloseable) ? true : backdropCloseable, draggable, placement, offsetX, offsetY, bodyScrollable, escapable }); const modalContainerRef = modalRef.instance.modalContainerHost.viewContainerRef .createComponent(finalComponentFactoryResolver.resolveComponentFactory(ModalContainerComponent), 0, injector); assign(modalContainerRef.instance, { title, buttons, maxHeight, dialogtype, showCloseBtn, showMaximizeBtn }); if (contentTemplate) { assign(modalContainerRef.instance, { contentTemplate }); } else { if (typeof content === 'string') { assign(modalContainerRef.instance, { content, html }); } else { this.contentRef = modalContainerRef.instance.modalContentHost.viewContainerRef .createComponent(finalComponentFactoryResolver.resolveComponentFactory(content)); assign(this.contentRef.instance, { data, dialogtype }); } } modalContainerRef.instance.onClose = () => { modalRef.instance.hide(); }; modalContainerRef.instance.onMaximize = () => { modalRef.instance.maximize(); if (onMaximize) { onMaximize(modalRef.instance.maximized); } }; modalRef.instance.updateButtonOptions = (buttonOptions) => modalContainerRef.instance.updateButtonOptions(buttonOptions); modalRef.instance.onHidden = () => { if (modalRef.instance.documentOverFlow) { this.renderer.removeStyle(this.document.body, 'top'); this.renderer.removeStyle(this.document.body, 'left'); this.renderer.removeClass(this.document.body, 'devui-body-scrollblock'); this.renderer.removeClass(this.document.body, 'devui-body-overflow-hidden'); this.document.documentElement.scrollTop = modalRef.instance.scrollTop; this.document.body.scrollTop = modalRef.instance.scrollTop; this.document.documentElement.scrollLeft = modalRef.instance.scrollLeft; this.document.body.scrollLeft = modalRef.instance.scrollLeft; } if (onClose) { onClose(); } setTimeout(() => { modalRef.hostView.destroy(); }); }; modalRef.instance.show(); return { modalInstance: modalRef.instance, modalContentInstance: this.contentRef ? this.contentRef.instance : null, }; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DialogService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i1.OverlayContainerRef }, { token: i0.RendererFactory2 }, { token: i2.DevConfigService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DialogService }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DialogService, decorators: [{ type: Injectable }], ctorParameters: () => [{ type: i0.ComponentFactoryResolver }, { type: i1.OverlayContainerRef }, { type: i0.RendererFactory2 }, { type: i2.DevConfigService }, { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT] }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9kZXZ1aS9tb2RhbC9kaWFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHdCQUF3QixFQUFnQixNQUFNLEVBQUUsVUFBVSxFQUFhLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQUluRCxNQUFNLE9BQU8sYUFBYTtJQUt4QixZQUNVLHdCQUFrRCxFQUNsRCxtQkFBd0MsRUFDeEMsZUFBaUMsRUFDakMsZ0JBQWtDLEVBQ2hCLEdBQVE7UUFKMUIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLG9CQUFlLEdBQWYsZUFBZSxDQUFrQjtRQUNqQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2hCLFFBQUcsR0FBSCxHQUFHLENBQUs7UUFFbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLENBQUMsRUFDSCxFQUFFLEVBQ0YsS0FBSyxFQUNMLE1B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LElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztnQkFDdEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO2dCQUMzRCxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7Z0JBQ3hFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztZQUMvRCxDQUFDO1lBQ0QsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDWixPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUM7WUFDRCxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDOUIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFRixRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXpCLE9BQU87WUFDTCxhQUFhLEVBQUUsUUFBUSxDQUFDLFFBQVE7WUFDaEMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUk7U0FDeEUsQ0FBQztJQUNKLENBQUM7K0dBbklVLGFBQWEsNkpBVWQsUUFBUTttSEFWUCxhQUFhOzs0RkFBYixhQUFhO2tCQUR6QixVQUFVOzswQkFXTixNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIENvbXBvbmVudFJlZiwgSW5qZWN0LCBJbmplY3RhYmxlLCBSZW5kZXJlcjIsIFJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXlDb250YWluZXJSZWYgfSBmcm9tICduZy1kZXZ1aS9vdmVybGF5LWNvbnRhaW5lcic7XG5pbXBvcnQgeyBEZXZDb25maWdTZXJ2aWNlIH0gZnJvbSAnbmctZGV2dWkvdXRpbHMnO1xuaW1wb3J0IHsgYXNzaWduLCBpc1VuZGVmaW5lZCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBNb2RhbENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IElEaWFsb2dPcHRpb25zIH0gZnJvbSAnLi9tb2RhbC50eXBlcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEaWFsb2dTZXJ2aWNlIHtcbiAgY29udGVudFJlZjogQ29tcG9uZW50UmVmPGFueT47XG4gIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMjtcbiAgZG9jdW1lbnQ6IERvY3VtZW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgcHJpdmF0ZSBvdmVybGF5Q29udGFpbmVyUmVmOiBPdmVybGF5Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyLFxuICAgIHByaXZhdGUgZGV2Q29uZmlnU2VydmljZTogRGV2Q29uZmlnU2VydmljZSxcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvYzogYW55XG4gICkge1xuICAgIHRoaXMucmVuZGVyZXIgPSB0aGlzLnJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcbiAgICB0aGlzLmRvY3VtZW50ID0gdGhpcy5kb2M7XG4gIH1cblxuICBvcGVuKHtcbiAgICBpZCxcbiAgICB3aWR0aCxcbiAgICB6SW5kZXgsXG4gICAgYmFja0Ryb3BaSW5kZXgsXG4gICAgYmFja2Ryb3BDbG9zZWFibGUsXG4gICAgbWF4SGVpZ2h0LFxuICAgIHNob3dBbmltYXRpb24sXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKi9cbiAgICBzaG93QW5pbWF0ZSxcbiAgICB0aXRsZSxcbiAgICBjb250ZW50LFxuICAgIGh0bWwsXG4gICAgZGF0YSxcbiAgICBidXR0b25zLFxuICAgIGluamVjdG9yLFxuICAgIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBiZWZvcmVIaWRkZW4sXG4gICAgb25DbG9zZSxcbiAgICBvbk1heGltaXplLFxuICAgIGRpYWxvZ3R5cGUgPSAnc3RhbmRhcmQnLFxuICAgIHNob3dDbG9zZUJ0biA9IHRydWUsXG4gICAgZHJhZ2dhYmxlID0gdHJ1ZSxcbiAgICBwbGFjZW1lbnQgPSAnY2VudGVyJyxcbiAgICBvZmZzZXRYLFxuICAgIG9mZnNldFksXG4gICAgYm9keVNjcm9sbGFibGUsXG4gICAgY29udGVudFRlbXBsYXRlLFxuICAgIGVzY2FwYWJsZSA9IHRydWUsXG4gICAgc2hvd01heGltaXplQnRuID0gZmFsc2UsXG4gIH06IElEaWFsb2dPcHRpb25zKSB7XG4gICAgY29uc3QgZmluYWxDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIgPSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIgfHwgdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI7XG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm92ZXJsYXlDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KFxuICAgICAgZmluYWxDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoTW9kYWxDb21wb25lbnQpLFxuICAgICAgaW5qZWN0b3JcbiAgICApO1xuICAgIGNvbnN0IGNvbXBvbmVudENvbmZpZyA9IHRoaXMuZGV2Q29uZmlnU2VydmljZS5nZXRDb25maWdGb3JDb21wb25lbnQoJ21vZGFsJykgfHwge307XG4gICAgY29uc3Qgc2hvd0FuaW1hdGlvbkFwaUNvbmZpZyA9IHRoaXMuZGV2Q29uZmlnU2VydmljZS5nZXRDb25maWdGb3JBcGkoJ3Nob3dBbmltYXRpb24nKTtcbiAgICBjb25zdCBib2R5U2Nyb2xsYWJsZUFwaUNvbmZpZyA9IHRoaXMuZGV2Q29uZmlnU2VydmljZS5nZXRDb25maWdGb3JBcGkoJ2JvZHlTY3JvbGxhYmxlJyk7XG4gICAgc2hvd0FuaW1hdGlvbiA9IHNob3dBbmltYXRpb24gPz8gc2hvd0FuaW1hdGUgPz8gY29tcG9uZW50Q29uZmlnLnNob3dBbmltYXRpb24gPz8gc2hvd0FuaW1hdGlvbkFwaUNvbmZpZztcbiAgICBib2R5U2Nyb2xsYWJsZSA9IGJvZHlTY3JvbGxhYmxlID8/IGNvbXBvbmVudENvbmZpZy5ib2R5U2Nyb2xsYWJsZSA/PyBib2R5U2Nyb2xsYWJsZUFwaUNvbmZpZyA/PyB0cnVlO1xuXG4gICAgYXNzaWduKG1vZGFsUmVmLmluc3RhbmNlLCB7XG4gICAgICBpZCxcbiAgICAgIHdpZHRoLFxuICAgICAgekluZGV4LFxuICAgICAgYmFja0Ryb3BaSW5kZXgsXG4gICAgICBzaG93QW5pbWF0aW9uLFxuICAgICAgYmVmb3JlSGlkZGVuLFxuICAgICAgLy8gc2V0IGJhY2tkcm9wQ2xvc2VhYmxlIGRlZmF1bHQgdmFsdWUgXCJ0cnVlXCIgd2hlbiBub3QgcGFzc2luZyBpdFxuICAgICAgYmFja2Ryb3BDbG9zZWFibGU6IGlzVW5kZWZpbmVkKGJhY2tkcm9wQ2xvc2VhYmxlKSA/IHRydWUgOiBiYWNrZHJvcENsb3NlYWJsZSxcbiAgICAgIGRyYWdnYWJsZSxcbiAgICAgIHBsYWNlbWVudCxcbiAgICAgIG9mZnNldFgsXG4gICAgICBvZmZzZXRZLFxuICAgICAgYm9keVNjcm9sbGFibGUsXG4gICAgICBlc2NhcGFibGVcbiAgICB9KTtcblxuICAgIGNvbnN0IG1vZGFsQ29udGFpbmVyUmVmID0gbW9kYWxSZWYuaW5zdGFuY2UubW9kYWxDb250YWluZXJIb3N0LnZpZXdDb250YWluZXJSZWZcbiAgICAgIC5jcmVhdGVDb21wb25lbnQoZmluYWxDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoTW9kYWxDb250YWluZXJDb21wb25lbnQpLCAwLCBpbmplY3Rvcik7XG4gICAgYXNzaWduKG1vZGFsQ29udGFpbmVyUmVmLmluc3RhbmNlLCB7IHRpdGxlLCBidXR0b25zLCBtYXhIZWlnaHQsIGRpYWxvZ3R5cGUsIHNob3dDbG9zZUJ0biwgc2hvd01heGltaXplQnRuIH0pO1xuXG4gICAgaWYgKGNvbnRlbnRUZW1wbGF0ZSkge1xuICAgICAgYXNzaWduKG1vZGFsQ29udGFpbmVyUmVmLmluc3RhbmNlLCB7IGNvbnRlbnRUZW1wbGF0ZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgICBhc3NpZ24obW9kYWxDb250YWluZXJSZWYuaW5zdGFuY2UsIHsgY29udGVudCwgaHRtbCB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY29udGVudFJlZiA9IG1vZGFsQ29udGFpbmVyUmVmLmluc3RhbmNlLm1vZGFsQ29udGVudEhvc3Qudmlld0NvbnRhaW5lclJlZlxuICAgICAgICAgIC5jcmVhdGVDb21wb25lbnQoZmluYWxDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29udGVudCkpO1xuICAgICAgICBhc3NpZ24odGhpcy5jb250ZW50UmVmLmluc3RhbmNlLCB7IGRhdGEsIGRpYWxvZ3R5cGUgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbW9kYWxDb250YWluZXJSZWYuaW5zdGFuY2Uub25DbG9zZSA9ICgpID0+IHtcbiAgICAgIG1vZGFsUmVmLmluc3RhbmNlLmhpZGUoKTtcbiAgICB9O1xuXG4gICAgbW9kYWxDb250YWluZXJSZWYuaW5zdGFuY2Uub25NYXhpbWl6ZSA9ICgpID0+IHtcbiAgICAgIG1vZGFsUmVmLmluc3RhbmNlLm1heGltaXplKCk7XG4gICAgICBpZiAob25NYXhpbWl6ZSkge1xuICAgICAgICBvbk1heGltaXplKG1vZGFsUmVmLmluc3RhbmNlLm1heGltaXplZCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIG1vZGFsUmVmLmluc3RhbmNlLnVwZGF0ZUJ1dHRvbk9wdGlvbnMgPSAoYnV0dG9uT3B0aW9ucykgPT4gbW9kYWxDb250YWluZXJSZWYuaW5zdGFuY2UudXBkYXRlQnV0dG9uT3B0aW9ucyhidXR0b25PcHRpb25zKTtcblxuICAgIG1vZGFsUmVmLmluc3RhbmNlLm9uSGlkZGVuID0gKCkgPT4ge1xuICAgICAgaWYgKG1vZGFsUmVmLmluc3RhbmNlLmRvY3VtZW50T3ZlckZsb3cpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmRvY3VtZW50LmJvZHksICd0b3AnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmRvY3VtZW50LmJvZHksICdsZWZ0Jyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5kb2N1bWVudC5ib2R5LCAnZGV2dWktYm9keS1zY3JvbGxibG9jaycpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZG9jdW1lbnQuYm9keSwgJ2RldnVpLWJvZHktb3ZlcmZsb3ctaGlkZGVuJyk7XG4gICAgICAgIHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCA9IG1vZGFsUmVmLmluc3RhbmNlLnNjcm9sbFRvcDtcbiAgICAgICAgdGhpcy5kb2N1bWVudC5ib2R5LnNjcm9sbFRvcCA9IG1vZGFsUmVmLmluc3RhbmNlLnNjcm9sbFRvcDtcbiAgICAgICAgdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCA9IG1vZGFsUmVmLmluc3RhbmNlLnNjcm9sbExlZnQ7XG4gICAgICAgIHRoaXMuZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0ID0gbW9kYWxSZWYuaW5zdGFuY2Uuc2Nyb2xsTGVmdDtcbiAgICAgIH1cbiAgICAgIGlmIChvbkNsb3NlKSB7XG4gICAgICAgIG9uQ2xvc2UoKTtcbiAgICAgIH1cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBtb2RhbFJlZi5ob3N0Vmlldy5kZXN0cm95KCk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgbW9kYWxSZWYuaW5zdGFuY2Uuc2hvdygpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIG1vZGFsSW5zdGFuY2U6IG1vZGFsUmVmLmluc3RhbmNlLFxuICAgICAgbW9kYWxDb250ZW50SW5zdGFuY2U6IHRoaXMuY29udGVudFJlZiA/IHRoaXMuY29udGVudFJlZi5pbnN0YW5jZSA6IG51bGwsXG4gICAgfTtcbiAgfVxufVxuIl19