ng2-pdf-viewer-piyapan
Version:
Angular 5+ component for rendering PDF
139 lines • 21.3 kB
JavaScript
import { fromEvent } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
export function createEventBus(pdfJsViewer, destroy$) {
const globalEventBus = new pdfJsViewer.EventBus();
attachDOMEventsToEventBus(globalEventBus, destroy$);
return globalEventBus;
}
function attachDOMEventsToEventBus(eventBus, destroy$) {
fromEvent(eventBus, 'documentload')
.pipe(takeUntil(destroy$))
.subscribe(() => {
const event = document.createEvent('CustomEvent');
event.initCustomEvent('documentload', true, true, {});
window.dispatchEvent(event);
});
fromEvent(eventBus, 'pagerendered')
.pipe(takeUntil(destroy$))
.subscribe(({ pageNumber, cssTransform, source }) => {
const event = document.createEvent('CustomEvent');
event.initCustomEvent('pagerendered', true, true, {
pageNumber,
cssTransform,
});
source.div.dispatchEvent(event);
});
fromEvent(eventBus, 'textlayerrendered')
.pipe(takeUntil(destroy$))
.subscribe(({ pageNumber, source }) => {
const event = document.createEvent('CustomEvent');
event.initCustomEvent('textlayerrendered', true, true, { pageNumber });
source.textLayerDiv?.dispatchEvent(event);
});
fromEvent(eventBus, 'pagechanging')
.pipe(takeUntil(destroy$))
.subscribe(({ pageNumber, source }) => {
const event = document.createEvent('UIEvents');
event.initEvent('pagechanging', true, true);
/* tslint:disable:no-string-literal */
event['pageNumber'] = pageNumber;
source.container.dispatchEvent(event);
});
fromEvent(eventBus, 'pagesinit')
.pipe(takeUntil(destroy$))
.subscribe(({ source }) => {
const event = document.createEvent('CustomEvent');
event.initCustomEvent('pagesinit', true, true, null);
source.container.dispatchEvent(event);
});
fromEvent(eventBus, 'pagesloaded')
.pipe(takeUntil(destroy$))
.subscribe(({ pagesCount, source }) => {
const event = document.createEvent('CustomEvent');
event.initCustomEvent('pagesloaded', true, true, { pagesCount });
source.container.dispatchEvent(event);
});
fromEvent(eventBus, 'scalechange')
.pipe(takeUntil(destroy$))
.subscribe(({ scale, presetValue, source }) => {
const event = document.createEvent('UIEvents');
event.initEvent('scalechange', true, true);
/* tslint:disable:no-string-literal */
event['scale'] = scale;
/* tslint:disable:no-string-literal */
event['presetValue'] = presetValue;
source.container.dispatchEvent(event);
});
fromEvent(eventBus, 'updateviewarea')
.pipe(takeUntil(destroy$))
.subscribe(({ location, source }) => {
const event = document.createEvent('UIEvents');
event.initEvent('updateviewarea', true, true);
event['location'] = location;
source.container.dispatchEvent(event);
});
fromEvent(eventBus, 'find')
.pipe(takeUntil(destroy$))
.subscribe(({ source, type, query, phraseSearch, caseSensitive, highlightAll, findPrevious, }) => {
if (source === window) {
return; // event comes from FirefoxCom, no need to replicate
}
const event = document.createEvent('CustomEvent');
event.initCustomEvent('find' + type, true, true, {
query,
phraseSearch,
caseSensitive,
highlightAll,
findPrevious,
});
window.dispatchEvent(event);
});
fromEvent(eventBus, 'attachmentsloaded')
.pipe(takeUntil(destroy$))
.subscribe(({ attachmentsCount, source }) => {
const event = document.createEvent('CustomEvent');
event.initCustomEvent('attachmentsloaded', true, true, {
attachmentsCount,
});
source.container.dispatchEvent(event);
});
fromEvent(eventBus, 'sidebarviewchanged')
.pipe(takeUntil(destroy$))
.subscribe(({ view, source }) => {
const event = document.createEvent('CustomEvent');
event.initCustomEvent('sidebarviewchanged', true, true, { view });
source.outerContainer.dispatchEvent(event);
});
fromEvent(eventBus, 'pagemode')
.pipe(takeUntil(destroy$))
.subscribe(({ mode, source }) => {
const event = document.createEvent('CustomEvent');
event.initCustomEvent('pagemode', true, true, { mode });
source.pdfViewer.container.dispatchEvent(event);
});
fromEvent(eventBus, 'namedaction')
.pipe(takeUntil(destroy$))
.subscribe(({ action, source }) => {
const event = document.createEvent('CustomEvent');
event.initCustomEvent('namedaction', true, true, { action });
source.pdfViewer.container.dispatchEvent(event);
});
fromEvent(eventBus, 'presentationmodechanged')
.pipe(takeUntil(destroy$))
.subscribe(({ active, switchInProgress }) => {
const event = document.createEvent('CustomEvent');
event.initCustomEvent('presentationmodechanged', true, true, {
active,
switchInProgress,
});
window.dispatchEvent(event);
});
fromEvent(eventBus, 'outlineloaded')
.pipe(takeUntil(destroy$))
.subscribe(({ outlineCount, source }) => {
const event = document.createEvent('CustomEvent');
event.initCustomEvent('outlineloaded', true, true, { outlineCount });
source.container.dispatchEvent(event);
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtYnVzLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC91dGlscy9ldmVudC1idXMtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVyxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0MsTUFBTSxVQUFVLGNBQWMsQ0FBQyxXQUFnQixFQUFFLFFBQXVCO0lBQ3RFLE1BQU0sY0FBYyxHQUFhLElBQUksV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVELHlCQUF5QixDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNwRCxPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDO0FBRUQsU0FBUyx5QkFBeUIsQ0FDaEMsUUFBa0IsRUFDbEIsUUFBdUI7SUFFdkIsU0FBUyxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUM7U0FDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN6QixTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2QsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNsRCxLQUFLLENBQUMsZUFBZSxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFFTCxTQUFTLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQztTQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3pCLFNBQVMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQU8sRUFBRSxFQUFFO1FBQ3ZELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxX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SUFBSSxFQUFFO1lBQzNELE1BQU07WUFDTixnQkFBZ0I7U0FDakIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDLENBQUMsQ0FBQztJQUVMLFNBQVMsQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDO1NBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDekIsU0FBUyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFPLEVBQUUsRUFBRTtRQUMzQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xELEtBQUssQ0FBQyxlQUFlLENBQUMsZUFBZSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZyb21FdmVudCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHR5cGUgeyBFdmVudEJ1cyB9IGZyb20gJ3BkZmpzLWRpc3Qvd2ViL3BkZl92aWV3ZXInO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRXZlbnRCdXMocGRmSnNWaWV3ZXI6IGFueSwgZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4pIHtcbiAgY29uc3QgZ2xvYmFsRXZlbnRCdXM6IEV2ZW50QnVzID0gbmV3IHBkZkpzVmlld2VyLkV2ZW50QnVzKCk7XG4gIGF0dGFjaERPTUV2ZW50c1RvRXZlbnRCdXMoZ2xvYmFsRXZlbnRCdXMsIGRlc3Ryb3kkKTtcbiAgcmV0dXJuIGdsb2JhbEV2ZW50QnVzO1xufVxuXG5mdW5jdGlvbiBhdHRhY2hET01FdmVudHNUb0V2ZW50QnVzKFxuICBldmVudEJ1czogRXZlbnRCdXMsXG4gIGRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+XG4pOiB2b2lkIHtcbiAgZnJvbUV2ZW50KGV2ZW50QnVzLCAnZG9jdW1lbnRsb2FkJylcbiAgICAucGlwZSh0YWtlVW50aWwoZGVzdHJveSQpKVxuICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnQ3VzdG9tRXZlbnQnKTtcbiAgICAgIGV2ZW50LmluaXRDdXN0b21FdmVudCgnZG9jdW1lbnRsb2FkJywgdHJ1ZSwgdHJ1ZSwge30pO1xuICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgIH0pO1xuXG4gIGZyb21FdmVudChldmVudEJ1cywgJ3BhZ2VyZW5kZXJlZCcpXG4gICAgLnBpcGUodGFrZVVudGlsKGRlc3Ryb3kkKSlcbiAgICAuc3Vic2NyaWJlKCh7IHBhZ2VOdW1iZXIsIGNzc1RyYW5zZm9ybSwgc291cmNlIH06IGFueSkgPT4ge1xuICAgICAgY29uc3QgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnQ3VzdG9tRXZlbnQnKTtcbiAgICAgIGV2ZW50LmluaXRDdXN0b21FdmVudCgncGFnZXJlbmRlcmVkJywgdHJ1ZSwgdHJ1ZSwge1xuICAgICAgICBwYWdlTnVtYmVyLFxuICAgICAgICBjc3NUcmFuc2Zvcm0sXG4gICAgICB9KTtcbiAgICAgIHNvdXJjZS5kaXYuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgfSk7XG5cbiAgZnJvbUV2ZW50KGV2ZW50QnVzLCAndGV4dGxheWVycmVuZGVyZWQnKVxuICAgIC5waXBlKHRha2VVbnRpbChkZXN0cm95JCkpXG4gICAgLnN1YnNjcmliZSgoeyBwYWdlTnVtYmVyLCBzb3VyY2UgfTogYW55KSA9PiB7XG4gICAgICBjb25zdCBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdDdXN0b21FdmVudCcpO1xuICAgICAgZXZlbnQuaW5pdEN1c3RvbUV2ZW50KCd0ZXh0bGF5ZXJyZW5kZXJlZCcsIHRydWUsIHRydWUsIHsgcGFnZU51bWJlciB9KTtcbiAgICAgIHNvdXJjZS50ZXh0TGF5ZXJEaXY/LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgIH0pO1xuXG4gIGZyb21FdmVudChldmVudEJ1cywgJ3BhZ2VjaGFuZ2luZycpXG4gICAgLnBpcGUodGFrZVVudGlsKGRlc3Ryb3kkKSlcbiAgICAuc3Vic2NyaWJlKCh7IHBhZ2VOdW1iZXIsIHNvdXJjZSB9OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ1VJRXZlbnRzJyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ3BhZ2VjaGFuZ2luZycsIHRydWUsIHRydWUpO1xuICAgICAgLyogdHNsaW50OmRpc2FibGU6bm8tc3RyaW5nLWxpdGVyYWwgKi9cbiAgICAgIGV2ZW50WydwYWdlTnVtYmVyJ10gPSBwYWdlTnVtYmVyO1xuICAgICAgc291cmNlLmNvbnRhaW5lci5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICB9KTtcblxuICBmcm9tRXZlbnQoZXZlbnRCdXMsICdwYWdlc2luaXQnKVxuICAgIC5waXBlKHRha2VVbnRpbChkZXN0cm95JCkpXG4gICAgLnN1YnNjcmliZSgoeyBzb3VyY2UgfTogYW55KSA9PiB7XG4gICAgICBjb25zdCBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdDdXN0b21FdmVudCcpO1xuICAgICAgZXZlbnQuaW5pdEN1c3RvbUV2ZW50KCdwYWdlc2luaXQnLCB0cnVlLCB0cnVlLCBudWxsKTtcbiAgICAgIHNvdXJjZS5jb250YWluZXIuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgfSk7XG5cbiAgZnJvbUV2ZW50KGV2ZW50QnVzLCAncGFnZXNsb2FkZWQnKVxuICAgIC5waXBlKHRha2VVbnRpbChkZXN0cm95JCkpXG4gICAgLnN1YnNjcmliZSgoeyBwYWdlc0NvdW50LCBzb3VyY2UgfTogYW55KSA9PiB7XG4gICAgICBjb25zdCBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdDdXN0b21FdmVudCcpO1xuICAgICAgZXZlbnQuaW5pdEN1c3RvbUV2ZW50KCdwYWdlc2xvYWRlZCcsIHRydWUsIHRydWUsIHsgcGFnZXNDb3VudCB9KTtcbiAgICAgIHNvdXJjZS5jb250YWluZXIuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgfSk7XG5cbiAgZnJvbUV2ZW50KGV2ZW50QnVzLCAnc2NhbGVjaGFuZ2UnKVxuICAgIC5waXBlKHRha2VVbnRpbChkZXN0cm95JCkpXG4gICAgLnN1YnNjcmliZSgoeyBzY2FsZSwgcHJlc2V0VmFsdWUsIHNvdXJjZSB9OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ1VJRXZlbnRzJyk7XG4gICAgICBldmVudC5pbml0RXZlbnQoJ3NjYWxlY2hhbmdlJywgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAvKiB0c2xpbnQ6ZGlzYWJsZTpuby1zdHJpbmctbGl0ZXJhbCAqL1xuICAgICAgZXZlbnRbJ3NjYWxlJ10gPSBzY2FsZTtcbiAgICAgIC8qIHRzbGludDpkaXNhYmxlOm5vLXN0cmluZy1saXRlcmFsICovXG4gICAgICBldmVudFsncHJlc2V0VmFsdWUnXSA9IHByZXNldFZhbHVlO1xuICAgICAgc291cmNlLmNvbnRhaW5lci5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICB9KTtcblxuICBmcm9tRXZlbnQoZXZlbnRCdXMsICd1cGRhdGV2aWV3YXJlYScpXG4gICAgLnBpcGUodGFrZVVudGlsKGRlc3Ryb3kkKSlcbiAgICAuc3Vic2NyaWJlKCh7IGxvY2F0aW9uLCBzb3VyY2UgfTogYW55KSA9PiB7XG4gICAgICBjb25zdCBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdVSUV2ZW50cycpO1xuICAgICAgZXZlbnQuaW5pdEV2ZW50KCd1cGRhdGV2aWV3YXJlYScsIHRydWUsIHRydWUpO1xuICAgICAgZXZlbnRbJ2xvY2F0aW9uJ10gPSBsb2NhdGlvbjtcbiAgICAgIHNvdXJjZS5jb250YWluZXIuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgfSk7XG5cbiAgZnJvbUV2ZW50KGV2ZW50QnVzLCAnZmluZCcpXG4gICAgLnBpcGUodGFrZVVudGlsKGRlc3Ryb3kkKSlcbiAgICAuc3Vic2NyaWJlKFxuICAgICAgKHtcbiAgICAgICAgc291cmNlLFxuICAgICAgICB0eXBlLFxuICAgICAgICBxdWVyeSxcbiAgICAgICAgcGhyYXNlU2VhcmNoLFxuICAgICAgICBjYXNlU2Vuc2l0aXZlLFxuICAgICAgICBoaWdobGlnaHRBbGwsXG4gICAgICAgIGZpbmRQcmV2aW91cyxcbiAgICAgIH06IGFueSkgPT4ge1xuICAgICAgICBpZiAoc291cmNlID09PSB3aW5kb3cpIHtcbiAgICAgICAgICByZXR1cm47IC8vIGV2ZW50IGNvbWVzIGZyb20gRmlyZWZveENvbSwgbm8gbmVlZCB0byByZXBsaWNhdGVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdDdXN0b21FdmVudCcpO1xuICAgICAgICBldmVudC5pbml0Q3VzdG9tRXZlbnQoJ2ZpbmQnICsgdHlwZSwgdHJ1ZSwgdHJ1ZSwge1xuICAgICAgICAgIHF1ZXJ5LFxuICAgICAgICAgIHBocmFzZVNlYXJjaCxcbiAgICAgICAgICBjYXNlU2Vuc2l0aXZlLFxuICAgICAgICAgIGhpZ2hsaWdodEFsbCxcbiAgICAgICAgICBmaW5kUHJldmlvdXMsXG4gICAgICAgIH0pO1xuICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgICB9XG4gICAgKTtcblxuICBmcm9tRXZlbnQoZXZlbnRCdXMsICdhdHRhY2htZW50c2xvYWRlZCcpXG4gICAgLnBpcGUodGFrZVVudGlsKGRlc3Ryb3kkKSlcbiAgICAuc3Vic2NyaWJlKCh7IGF0dGFjaG1lbnRzQ291bnQsIHNvdXJjZSB9OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0N1c3RvbUV2ZW50Jyk7XG4gICAgICBldmVudC5pbml0Q3VzdG9tRXZlbnQoJ2F0dGFjaG1lbnRzbG9hZGVkJywgdHJ1ZSwgdHJ1ZSwge1xuICAgICAgICBhdHRhY2htZW50c0NvdW50LFxuICAgICAgfSk7XG4gICAgICBzb3VyY2UuY29udGFpbmVyLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgIH0pO1xuXG4gIGZyb21FdmVudChldmVudEJ1cywgJ3NpZGViYXJ2aWV3Y2hhbmdlZCcpXG4gICAgLnBpcGUodGFrZVVudGlsKGRlc3Ryb3kkKSlcbiAgICAuc3Vic2NyaWJlKCh7IHZpZXcsIHNvdXJjZSB9OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0N1c3RvbUV2ZW50Jyk7XG4gICAgICBldmVudC5pbml0Q3VzdG9tRXZlbnQoJ3NpZGViYXJ2aWV3Y2hhbmdlZCcsIHRydWUsIHRydWUsIHsgdmlldyB9KTtcbiAgICAgIHNvdXJjZS5vdXRlckNvbnRhaW5lci5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICB9KTtcblxuICBmcm9tRXZlbnQoZXZlbnRCdXMsICdwYWdlbW9kZScpXG4gICAgLnBpcGUodGFrZVVudGlsKGRlc3Ryb3kkKSlcbiAgICAuc3Vic2NyaWJlKCh7IG1vZGUsIHNvdXJjZSB9OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0N1c3RvbUV2ZW50Jyk7XG4gICAgICBldmVudC5pbml0Q3VzdG9tRXZlbnQoJ3BhZ2Vtb2RlJywgdHJ1ZSwgdHJ1ZSwgeyBtb2RlIH0pO1xuICAgICAgc291cmNlLnBkZlZpZXdlci5jb250YWluZXIuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgfSk7XG5cbiAgZnJvbUV2ZW50KGV2ZW50QnVzLCAnbmFtZWRhY3Rpb24nKVxuICAgIC5waXBlKHRha2VVbnRpbChkZXN0cm95JCkpXG4gICAgLnN1YnNjcmliZSgoeyBhY3Rpb24sIHNvdXJjZSB9OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0N1c3RvbUV2ZW50Jyk7XG4gICAgICBldmVudC5pbml0Q3VzdG9tRXZlbnQoJ25hbWVkYWN0aW9uJywgdHJ1ZSwgdHJ1ZSwgeyBhY3Rpb24gfSk7XG4gICAgICBzb3VyY2UucGRmVmlld2VyLmNvbnRhaW5lci5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICB9KTtcblxuICBmcm9tRXZlbnQoZXZlbnRCdXMsICdwcmVzZW50YXRpb25tb2RlY2hhbmdlZCcpXG4gICAgLnBpcGUodGFrZVVudGlsKGRlc3Ryb3kkKSlcbiAgICAuc3Vic2NyaWJlKCh7IGFjdGl2ZSwgc3dpdGNoSW5Qcm9ncmVzcyB9OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0N1c3RvbUV2ZW50Jyk7XG4gICAgICBldmVudC5pbml0Q3VzdG9tRXZlbnQoJ3ByZXNlbnRhdGlvbm1vZGVjaGFuZ2VkJywgdHJ1ZSwgdHJ1ZSwge1xuICAgICAgICBhY3RpdmUsXG4gICAgICAgIHN3aXRjaEluUHJvZ3Jlc3MsXG4gICAgICB9KTtcbiAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICB9KTtcblxuICBmcm9tRXZlbnQoZXZlbnRCdXMsICdvdXRsaW5lbG9hZGVkJylcbiAgICAucGlwZSh0YWtlVW50aWwoZGVzdHJveSQpKVxuICAgIC5zdWJzY3JpYmUoKHsgb3V0bGluZUNvdW50LCBzb3VyY2UgfTogYW55KSA9PiB7XG4gICAgICBjb25zdCBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdDdXN0b21FdmVudCcpO1xuICAgICAgZXZlbnQuaW5pdEN1c3RvbUV2ZW50KCdvdXRsaW5lbG9hZGVkJywgdHJ1ZSwgdHJ1ZSwgeyBvdXRsaW5lQ291bnQgfSk7XG4gICAgICBzb3VyY2UuY29udGFpbmVyLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgIH0pO1xufVxuIl19