UNPKG

ngx-mat-cdk

Version:

Extra Components for Angular Material including Filters,Drag Drop File, MatSelect Mobile Version

148 lines 20.8 kB
import { ContentChild, Directive, HostListener, Injector, Input, TemplateRef } from '@angular/core'; import { MatSelectSearchDirective } from './mat-select-search.directive'; import { MediaTracker } from '../media-tracker'; import { ActivatedRoute, Router } from '@angular/router'; import { MatOption } from '@angular/material/core'; import { NgxMatCdkUtilityService } from "../services/ngx-mat-cdk-utility.service"; import { MatSelect } from "@angular/material/select"; export const scrollStrategy = () => { }; export class NgxMatMobileSelectDirective extends MediaTracker { constructor(injector, host, router, route, utilService) { super(injector); this.host = host; this.router = router; this.route = route; this.utilService = utilService; this._htmlScrollTop = 0; this.fragment = 'search'; this.onChangeMediaTracker = (change) => { this.changeMedia(change.mqAlias == 'xs'); }; } changeMedia(useMobile) { var _a; let classes = (_a = this.host.panelClass) === null || _a === void 0 ? void 0 : _a.toString().split(' '); if (!classes) { classes = []; } if (useMobile) { const hasMyClass = classes.includes('ngx-mat-cdk-select-mobile'); if (this.host) { if (!hasMyClass) { classes.push('ngx-mat-cdk-select-mobile'); } if (!classes.includes('ngx-mat-cdk-select-mobile-opacity')) { classes.push('ngx-mat-cdk-select-mobile-opacity'); } } } else { classes = classes.filter(z => z !== 'ngx-mat-cdk-select-mobile' && z !== 'ngx-mat-cdk-select-mobile-opacity'); } if (classes) this.host.panelClass = classes.join(' '); } onPopState(event) { var _a; // if (this.ngxMobileSelect) { (_a = this.host) === null || _a === void 0 ? void 0 : _a.close(); // } } ngOnDestroy() { super.ngOnDestroy(); if (this.openPanelSub) { this.openPanelSub.unsubscribe(); } if (this.closePanelSub) { this.closePanelSub.unsubscribe(); } } ngOnInit() { // if (this.ngxMobileSelect) { this.openPanelSub = this.host._openedStream.subscribe(() => { this._htmlScrollTop = document.documentElement.scrollTop; const panel = this.host.panel; const panelEl = panel.nativeElement; const parentEl = panelEl.parentElement; if (this.isXs) { document.documentElement.style.overflow = 'hidden'; panelEl.classList.remove('mat-select-panel'); setTimeout(() => { panelEl.classList.remove('ngx-mat-cdk-select-mobile-opacity'); }, 150); this.utilService.setClassToDialogContainer(panel, 'ngx-mat-cdk-mobile-wrapper', '.cdk-overlay-pane'); parentEl.style.overflowY = 'auto'; parentEl.style.overflowX = 'hidden'; const firstSelected = panelEl.querySelector('.mat-selected'); setTimeout(() => { firstSelected === null || firstSelected === void 0 ? void 0 : firstSelected.scrollIntoView({ block: 'center', behavior: 'smooth' }); }, 500); const iconAppend = panelEl.querySelector('.mat-select-search-inner'); const inputSearch = iconAppend.querySelector('.mat-select-search-input'); if (inputSearch) inputSearch.style.padding = '0'; if (!iconAppend.querySelector('.material-icons-back')) { const btn = document.createElement('i'); btn.classList.add('material-icons'); btn.classList.add('material-icons-back'); btn.style.width = '20px'; btn.style.margin = '8px 15px 8px 8px'; if (document.documentElement.dir === 'rtl') { btn.innerHTML = 'arrow_forward'; } else { btn.innerHTML = 'arrow_backward'; } btn.onclick = (ev) => { ev.stopImmediatePropagation(); this.host.close(); }; iconAppend.style.display = 'flex'; iconAppend.style.alignItems = 'center'; iconAppend.style.width = '100%'; iconAppend === null || iconAppend === void 0 ? void 0 : iconAppend.prepend(btn); } if (this.fragment) { this.router.navigate([], { relativeTo: this.route, fragment: this.fragment }); } } else { if (!panelEl.classList.contains('mat-select-panel')) { panel.nativeElement.classList.add('mat-select-panel'); } } }); this.closePanelSub = this.host._closedStream.subscribe(() => { if (this.isXs) { document.documentElement.style.overflow = ''; setTimeout(() => { document.documentElement.scrollTo(0, this._htmlScrollTop); }, 0); if (this.fragment) { this.router.navigate([], { relativeTo: this.route, fragment: null }); } } }); // } } } NgxMatMobileSelectDirective.decorators = [ { type: Directive, args: [{ selector: '[ngxMobileSelect]', },] } ]; NgxMatMobileSelectDirective.ctorParameters = () => [ { type: Injector }, { type: MatSelect }, { type: Router }, { type: ActivatedRoute }, { type: NgxMatCdkUtilityService } ]; NgxMatMobileSelectDirective.propDecorators = { matSelectSearch: [{ type: ContentChild, args: [MatSelectSearchDirective,] }], matSelect: [{ type: ContentChild, args: [MatOption, { read: TemplateRef },] }], fragment: [{ type: Input }], onPopState: [{ type: HostListener, args: ['window:popstate', ['$event'],] }] }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LW1hdC1tb2JpbGUtc2VsZWN0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9BbGlyZXphIE1vaGFtbWFkaS9zb3VyY2UvcmVwb3MvTXlMaWJyYXJ5L0FuZ3VsYXIuTGlicmFyeS9saWJzL3Byb2plY3RzL25neC1tYXQtY2RrL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9zaGFyZWQvZGlyZWN0aXZlcy9uZ3gtbWF0LW1vYmlsZS1zZWxlY3QuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxZQUFZLEVBQ1osU0FBUyxFQUNULFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUVMLFdBQVcsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUV2RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFDLGNBQWMsRUFBRSxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV2RCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRW5ELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBZSxHQUFHLEVBQUU7QUFFL0MsQ0FBQyxDQUFBO0FBS0QsTUFBTSxPQUFPLDJCQUE0QixTQUFRLFlBQVk7SUFFM0QsWUFDRSxRQUFrQixFQUNWLElBQWUsRUFDZixNQUFjLEVBQ2QsS0FBcUIsRUFDckIsV0FBb0M7UUFFNUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBTFIsU0FBSSxHQUFKLElBQUksQ0FBVztRQUNmLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixnQkFBVyxHQUFYLFdB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Q2QsUUFBUSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDNUQsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNOLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtvQkFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7aUJBQ3BFO2FBRUY7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUk7SUFFTixDQUFDOzs7WUE5SUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQkFBbUI7YUFDOUI7OztZQXBCQyxRQUFRO1lBWUYsU0FBUztZQUpPLE1BQU07WUFBdEIsY0FBYztZQUdkLHVCQUF1Qjs7OzhCQXdCNUIsWUFBWSxTQUFDLHdCQUF3Qjt3QkFDckMsWUFBWSxTQUFDLFNBQVMsRUFBRSxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUM7dUJBQzNDLEtBQUs7eUJBZ0NMLFlBQVksU0FBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29udGVudENoaWxkLFxyXG4gIERpcmVjdGl2ZSxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LCBPbkluaXQsXHJcbiAgVGVtcGxhdGVSZWZcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtNYXRTZWxlY3RTZWFyY2hEaXJlY3RpdmV9IGZyb20gJy4vbWF0LXNlbGVjdC1zZWFyY2guZGlyZWN0aXZlJztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge01lZGlhVHJhY2tlcn0gZnJvbSAnLi4vbWVkaWEtdHJhY2tlcic7XHJcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHtNZWRpYUNoYW5nZX0gZnJvbSAnQGFuZ3VsYXIvZmxleC1sYXlvdXQnO1xyXG5pbXBvcnQge01hdE9wdGlvbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcbmltcG9ydCB7Tmd4TWF0Q2RrVXRpbGl0eVNlcnZpY2V9IGZyb20gXCIuLi9zZXJ2aWNlcy9uZ3gtbWF0LWNkay11dGlsaXR5LnNlcnZpY2VcIjtcclxuaW1wb3J0IHtNYXRTZWxlY3R9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3RcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBzY3JvbGxTdHJhdGVneTogKCkgPT4gdm9pZCA9ICgpID0+IHtcclxuXHJcbn1cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW25neE1vYmlsZVNlbGVjdF0nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4TWF0TW9iaWxlU2VsZWN0RGlyZWN0aXZlIGV4dGVuZHMgTWVkaWFUcmFja2VyIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgaG9zdDogTWF0U2VsZWN0LFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSB1dGlsU2VydmljZTogTmd4TWF0Q2RrVXRpbGl0eVNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKGluamVjdG9yKTtcclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9odG1sU2Nyb2xsVG9wID0gMDtcclxuICBAQ29udGVudENoaWxkKE1hdFNlbGVjdFNlYXJjaERpcmVjdGl2ZSkgbWF0U2VsZWN0U2VhcmNoOiBNYXRTZWxlY3RTZWFyY2hEaXJlY3RpdmU7XHJcbiAgQENvbnRlbnRDaGlsZChNYXRPcHRpb24sIHtyZWFkOiBUZW1wbGF0ZVJlZn0pIG1hdFNlbGVjdDogTWF0U2VsZWN0O1xyXG4gIEBJbnB1dCgpIGZyYWdtZW50ID0gJ3NlYXJjaCc7XHJcblxyXG4gIG9wZW5QYW5lbFN1YjogU3Vic2NyaXB0aW9uO1xyXG4gIGNsb3NlUGFuZWxTdWI6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgb25DaGFuZ2VNZWRpYVRyYWNrZXIgPSAoY2hhbmdlOiBNZWRpYUNoYW5nZSkgPT4ge1xyXG4gICAgdGhpcy5jaGFuZ2VNZWRpYShjaGFuZ2UubXFBbGlhcyA9PSAneHMnKTtcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGNoYW5nZU1lZGlhKHVzZU1vYmlsZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgbGV0IGNsYXNzZXMgPSB0aGlzLmhvc3QucGFuZWxDbGFzcz8udG9TdHJpbmcoKS5zcGxpdCgnICcpO1xyXG4gICAgaWYgKCFjbGFzc2VzKSB7XHJcbiAgICAgIGNsYXNzZXMgPSBbXTtcclxuICAgIH1cclxuICAgIGlmICh1c2VNb2JpbGUpIHtcclxuICAgICAgY29uc3QgaGFzTXlDbGFzcyA9IGNsYXNzZXMuaW5jbHVkZXMoJ25neC1tYXQtY2RrLXNlbGVjdC1tb2JpbGUnKTtcclxuICAgICAgaWYgKHRoaXMuaG9zdCkge1xyXG4gICAgICAgIGlmICghaGFzTXlDbGFzcykge1xyXG4gICAgICAgICAgY2xhc3Nlcy5wdXNoKCduZ3gtbWF0LWNkay1zZWxlY3QtbW9iaWxlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghY2xhc3Nlcy5pbmNsdWRlcygnbmd4LW1hdC1jZGstc2VsZWN0LW1vYmlsZS1vcGFjaXR5JykpIHtcclxuICAgICAgICAgIGNsYXNzZXMucHVzaCgnbmd4LW1hdC1jZGstc2VsZWN0LW1vYmlsZS1vcGFjaXR5Jyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjbGFzc2VzID0gY2xhc3Nlcy5maWx0ZXIoeiA9PiB6ICE9PSAnbmd4LW1hdC1jZGstc2VsZWN0LW1vYmlsZScgJiYgeiAhPT0gJ25neC1tYXQtY2RrLXNlbGVjdC1tb2JpbGUtb3BhY2l0eScpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNsYXNzZXMpXHJcbiAgICAgIHRoaXMuaG9zdC5wYW5lbENsYXNzID0gY2xhc3Nlcy5qb2luKCcgJyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnBvcHN0YXRlJywgWyckZXZlbnQnXSlcclxuICBvblBvcFN0YXRlKGV2ZW50KSB7XHJcbiAgICAvLyBpZiAodGhpcy5uZ3hNb2JpbGVTZWxlY3QpIHtcclxuICAgIHRoaXMuaG9zdD8uY2xvc2UoKTtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuICAgIGlmICh0aGlzLm9wZW5QYW5lbFN1Yikge1xyXG4gICAgICB0aGlzLm9wZW5QYW5lbFN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY2xvc2VQYW5lbFN1Yikge1xyXG4gICAgICB0aGlzLmNsb3NlUGFuZWxTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gaWYgKHRoaXMubmd4TW9iaWxlU2VsZWN0KSB7XHJcbiAgICB0aGlzLm9wZW5QYW5lbFN1YiA9IHRoaXMuaG9zdC5fb3BlbmVkU3RyZWFtLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuX2h0bWxTY3JvbGxUb3AgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wO1xyXG4gICAgICBjb25zdCBwYW5lbCA9IHRoaXMuaG9zdC5wYW5lbDtcclxuICAgICAgY29uc3QgcGFuZWxFbCA9IHBhbmVsLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGNvbnN0IHBhcmVudEVsID0gcGFuZWxFbC5wYXJlbnRFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAodGhpcy5pc1hzKSB7XHJcbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XHJcbiAgICAgICAgcGFuZWxFbC5jbGFzc0xpc3QucmVtb3ZlKCdtYXQtc2VsZWN0LXBhbmVsJyk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBwYW5lbEVsLmNsYXNzTGlzdC5yZW1vdmUoJ25neC1tYXQtY2RrLXNlbGVjdC1tb2JpbGUtb3BhY2l0eScpO1xyXG4gICAgICAgIH0sIDE1MCk7XHJcbiAgICAgICAgdGhpcy51dGlsU2VydmljZS5zZXRDbGFzc1RvRGlhbG9nQ29udGFpbmVyKHBhbmVsLCAnbmd4LW1hdC1jZGstbW9iaWxlLXdyYXBwZXInLCAnLmNkay1vdmVybGF5LXBhbmUnKTtcclxuICAgICAgICBwYXJlbnRFbC5zdHlsZS5vdmVyZmxvd1kgPSAnYXV0byc7XHJcbiAgICAgICAgcGFyZW50RWwuc3R5bGUub3ZlcmZsb3dYID0gJ2hpZGRlbic7XHJcblxyXG4gICAgICAgIGNvbnN0IGZpcnN0U2VsZWN0ZWQgPSBwYW5lbEVsLnF1ZXJ5U2VsZWN0b3IoJy5tYXQtc2VsZWN0ZWQnKTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIGZpcnN0U2VsZWN0ZWQ/LnNjcm9sbEludG9WaWV3KHtibG9jazogJ2NlbnRlcicsIGJlaGF2aW9yOiAnc21vb3RoJ30pO1xyXG4gICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgY29uc3QgaWNvbkFwcGVuZCA9IHBhbmVsRWwucXVlcnlTZWxlY3RvcignLm1hdC1zZWxlY3Qtc2VhcmNoLWlubmVyJykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgY29uc3QgaW5wdXRTZWFyY2ggPSBpY29uQXBwZW5kLnF1ZXJ5U2VsZWN0b3IoJy5tYXQtc2VsZWN0LXNlYXJjaC1pbnB1dCcpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICAgICAgaWYgKGlucHV0U2VhcmNoKVxyXG4gICAgICAgICAgaW5wdXRTZWFyY2guc3R5bGUucGFkZGluZyA9ICcwJztcclxuICAgICAgICBpZiAoIWljb25BcHBlbmQucXVlcnlTZWxlY3RvcignLm1hdGVyaWFsLWljb25zLWJhY2snKSkge1xyXG4gICAgICAgICAgY29uc3QgYnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaScpO1xyXG4gICAgICAgICAgYnRuLmNsYXNzTGlzdC5hZGQoJ21hdGVyaWFsLWljb25zJyk7XHJcbiAgICAgICAgICBidG4uY2xhc3NMaXN0LmFkZCgnbWF0ZXJpYWwtaWNvbnMtYmFjaycpO1xyXG4gICAgICAgICAgYnRuLnN0eWxlLndpZHRoID0gJzIwcHgnO1xyXG4gICAgICAgICAgYnRuLnN0eWxlLm1hcmdpbiA9ICc4cHggMTVweCA4cHggOHB4JztcclxuXHJcblxyXG4gICAgICAgICAgaWYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kaXIgPT09ICdydGwnKSB7XHJcbiAgICAgICAgICAgIGJ0bi5pbm5lckhUTUwgPSAnYXJyb3dfZm9yd2FyZCc7XHJcblxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgYnRuLmlubmVySFRNTCA9ICdhcnJvd19iYWNrd2FyZCc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBidG4ub25jbGljayA9IChldjogTW91c2VFdmVudCkgPT4ge1xyXG4gICAgICAgICAgICBldi5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgdGhpcy5ob3N0LmNsb3NlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpY29uQXBwZW5kLnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7XHJcbiAgICAgICAgICBpY29uQXBwZW5kLnN0eWxlLmFsaWduSXRlbXMgPSAnY2VudGVyJztcclxuICAgICAgICAgIGljb25BcHBlbmQuc3R5bGUud2lkdGggPSAnMTAwJSc7XHJcblxyXG5cclxuICAgICAgICAgIGljb25BcHBlbmQ/LnByZXBlbmQoYnRuKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5mcmFnbWVudCkge1xyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtyZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLCBmcmFnbWVudDogdGhpcy5mcmFnbWVudH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoIXBhbmVsRWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdtYXQtc2VsZWN0LXBhbmVsJykpIHtcclxuICAgICAgICAgIChwYW5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5jbGFzc0xpc3QuYWRkKCdtYXQtc2VsZWN0LXBhbmVsJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNsb3NlUGFuZWxTdWIgPSB0aGlzLmhvc3QuX2Nsb3NlZFN0cmVhbS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5pc1hzKSB7XHJcbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJyc7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG8oMCwgdGhpcy5faHRtbFNjcm9sbFRvcCk7XHJcbiAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgaWYgKHRoaXMuZnJhZ21lbnQpIHtcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7cmVsYXRpdmVUbzogdGhpcy5yb3V0ZSwgZnJhZ21lbnQ6IG51bGx9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vIH1cclxuXHJcbiAgfVxyXG5cclxufVxyXG4iXX0=