UNPKG

ontimize-web-ngx

Version:
130 lines 20.8 kB
import { __decorate, __metadata } from "tslib"; import { Directive, ElementRef, EventEmitter, Inject, Injector, Optional, ViewChild } from '@angular/core'; import { MatExpansionPanel } from '@angular/material/expansion'; import { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field'; import { Subscription } from 'rxjs'; import { BooleanInputConverter } from '../../decorators/input-converter'; import { OContainerComponent } from './o-container-component.class'; import * as i0 from "@angular/core"; export const DEFAULT_INPUTS_O_CONTAINER_COLLAPSIBLE = [ 'expanded', 'description', 'collapsedHeight: collapsed-height', 'expandedHeight: expanded-height' ]; export const DEFAULT_OUTPUTS_O_CONTAINER_COLLAPSIBLE = [ 'onClosed', 'onOpened', 'onAfterCollapse', 'onAfterExpand' ]; export class OContainerCollapsibleComponent extends OContainerComponent { constructor(elRef, injector, matFormDefaultOption) { super(elRef, injector, matFormDefaultOption); this.elRef = elRef; this.injector = injector; this.matFormDefaultOption = matFormDefaultOption; this.expanded = true; this.collapsedHeight = '37px'; this.expandedHeight = '37px'; this.onClosed = new EventEmitter(); this.onOpened = new EventEmitter(); this.onAfterCollapse = new EventEmitter(); this.onAfterExpand = new EventEmitter(); this.expPanelSubscriptions = new Subscription(); } ngAfterViewInit() { super.ngAfterViewInit(); this.updateOutlineGap(); this.subscribeEventsExpPanel(); } subscribeEventsExpPanel() { this.expPanelSubscriptions.add(this.expPanel.afterCollapse.subscribe(() => this.onAfterCollapse.emit())); this.expPanelSubscriptions.add(this.expPanel.afterExpand.subscribe(() => this.onAfterExpand.emit())); this.expPanelSubscriptions.add(this.expPanel.closed.subscribe(() => this.onClosed.emit())); this.expPanelSubscriptions.add(this.expPanel.opened.subscribe(() => this.onOpened.emit())); } updateOutlineGap() { if (this.isAppearanceOutline()) { const exPanelHeader = this._titleEl ? this._titleEl._element.nativeElement : null; if (!this.oContainerOutline) { return; } const containerOutline = this.oContainerOutline.nativeElement; const containerOutlineRect = containerOutline.getBoundingClientRect(); if (containerOutlineRect.width === 0 && containerOutlineRect.height === 0) { return; } const titleEl = exPanelHeader.querySelector('.o-container-title.mat-expansion-panel-header-title'); const descrEl = exPanelHeader.querySelector('.mat-expansion-panel-header-description'); const containerStart = containerOutlineRect.left; const descrStart = descrEl.getBoundingClientRect().left; let titleWidth = 0; if (this.hasHeader()) { titleWidth += this.icon ? titleEl.querySelector('mat-icon').offsetWidth : 0; titleWidth += this.title ? titleEl.querySelector('span').offsetWidth : 0; titleWidth = titleWidth === 0 ? 0 : titleWidth + 4; } const labelStart = titleEl.getBoundingClientRect().left; const startWidth = labelStart - containerStart - 2; const empty1Width = descrStart - containerStart - titleWidth - 24; const descrWidth = this.description ? descrEl.querySelector('span').offsetWidth + 8 : 0; const startEls = containerOutline.querySelectorAll('.o-container-outline-start'); const gapTitleEls = containerOutline.querySelectorAll('.o-container-outline-gap-title'); const gapEmpty1Els = containerOutline.querySelectorAll('.o-container-outline-gap-empty1'); const gapDescrEls = containerOutline.querySelectorAll('.o-container-outline-gap-description'); startEls[0].style.width = `${startWidth}px`; gapTitleEls[0].style.width = `${titleWidth}px`; gapEmpty1Els[0].style.width = `${empty1Width}px`; gapDescrEls[0].style.width = `${descrWidth}px`; } } registerObserver() { if (this._titleEl) { this.titleObserver.observe(this._titleEl._element.nativeElement, { childList: true, characterData: true, subtree: true }); } } updateInnerHeight(height) { if (this.containerContent) { this.containerContent.nativeElement.style.height = height; } if (this.oContainerOutline) { this.oContainerOutline.nativeElement.style.height = height; } } ngOnDestroy() { this.expPanelSubscriptions.unsubscribe(); } } OContainerCollapsibleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OContainerCollapsibleComponent, deps: [{ token: i0.ElementRef }, { token: i0.Injector }, { token: MAT_FORM_FIELD_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); OContainerCollapsibleComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: OContainerCollapsibleComponent, inputs: { expanded: "expanded", description: "description", collapsedHeight: ["collapsed-height", "collapsedHeight"], expandedHeight: ["expanded-height", "expandedHeight"] }, outputs: { onClosed: "onClosed", onOpened: "onOpened", onAfterCollapse: "onAfterCollapse", onAfterExpand: "onAfterExpand" }, viewQueries: [{ propertyName: "expPanel", first: true, predicate: ["expPanel"], descendants: true }, { propertyName: "containerContent", first: true, predicate: ["containerContent"], descendants: true, static: true }, { propertyName: "oContainerOutline", first: true, predicate: ["oContainerOutline"], descendants: true }], usesInheritance: true, ngImport: i0 }); __decorate([ BooleanInputConverter(), __metadata("design:type", Boolean) ], OContainerCollapsibleComponent.prototype, "expanded", void 0); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OContainerCollapsibleComponent, decorators: [{ type: Directive, args: [{ inputs: DEFAULT_INPUTS_O_CONTAINER_COLLAPSIBLE, outputs: DEFAULT_OUTPUTS_O_CONTAINER_COLLAPSIBLE }] }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Injector }, { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_FORM_FIELD_DEFAULT_OPTIONS] }] }]; }, propDecorators: { expanded: [], expPanel: [{ type: ViewChild, args: ['expPanel'] }], containerContent: [{ type: ViewChild, args: ['containerContent', { static: true }] }], oContainerOutline: [{ type: ViewChild, args: ['oContainerOutline'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1jb250YWluZXItY29sbGFwc2libGUtY29tcG9uZW50LmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvY29udGFpbmVyL28tY29udGFpbmVyLWNvbGxhcHNpYmxlLWNvbXBvbmVudC5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFhLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckksT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFFcEUsTUFBTSxDQUFDLE1BQU0sc0NBQXNDLEdBQUc7SUFDcEQsVUFBVTtJQUNWLGFBQWE7SUFDYixtQ0FBbUM7SUFDbkMsaUNBQWlDO0NBQ2xDLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSx1Q0FBdUMsR0FBRztJQUVyRCxVQUFVO0lBRVYsVUFBVTtJQUVWLGlCQUFpQjtJQUVqQixlQUFlO0NBQ2hCLENBQUE7QUFNRCxNQUFNLE9BQU8sOEJBQStCLFNBQVEsbUJBQW1CO0lBb0JyRSxZQUNZLEtBQWlCLEVBQ2pCLFFBQWtCLEVBQ2tDLG9CQUFvQjtRQUVsRixLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBSm5DLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsYUFBUSxH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QyxRQUFRLE1BVVEsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUNzQyxnQkFBZ0I7c0JBQTFFLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNMLGlCQUFpQjtzQkFBMUQsU0FBUzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbmplY3RvciwgT25EZXN0cm95LCBPcHRpb25hbCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRFeHBhbnNpb25QYW5lbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbic7XG5pbXBvcnQgeyBNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBPQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9vLWNvbnRhaW5lci1jb21wb25lbnQuY2xhc3MnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19DT05UQUlORVJfQ09MTEFQU0lCTEUgPSBbXG4gICdleHBhbmRlZCcsXG4gICdkZXNjcmlwdGlvbicsXG4gICdjb2xsYXBzZWRIZWlnaHQ6IGNvbGxhcHNlZC1oZWlnaHQnLFxuICAnZXhwYW5kZWRIZWlnaHQ6IGV4cGFuZGVkLWhlaWdodCdcbl07XG5leHBvcnQgY29uc3QgREVGQVVMVF9PVVRQVVRTX09fQ09OVEFJTkVSX0NPTExBUFNJQkxFID0gW1xuICAvL29uQ2xvc2VkOiBFdmVudCBlbWl0dGVkIGV2ZXJ5IHRpbWUgdGhlIGNvbXBvbmVudCBjb2xsYXBzaWJsZSBpcyBjbG9zZWQuXG4gICdvbkNsb3NlZCcsXG4gIC8vb25PcGVuZWQ6IEV2ZW50IGVtaXR0ZWQgZXZlcnkgdGltZSB0aGUgY29tcG9uZW50IGNvbGxhcHNpYmxlIGlzIG9wZW5lZC5cbiAgJ29uT3BlbmVkJyxcbiAgLy9vbkFmdGVyQ29sbGFwc2U6IEFuIGV2ZW50IGVtaXR0ZWQgYWZ0ZXIgdGhlIGJvZHkncyBjb2xsYXBzZSBhbmltYXRpb24gaGFwcGVucy5cbiAgJ29uQWZ0ZXJDb2xsYXBzZScsXG4gIC8vb25BZnRlckV4cGFuZDogQW4gZXZlbnQgZW1pdHRlZCBhZnRlciB0aGUgYm9keSdzIGV4cGFuc2lvbiBhbmltYXRpb24gaGFwcGVucy5cbiAgJ29uQWZ0ZXJFeHBhbmQnXG5dXG5cbkBEaXJlY3RpdmUoe1xuICBpbnB1dHM6IERFRkFVTFRfSU5QVVRTX09fQ09OVEFJTkVSX0NPTExBUFNJQkxFLFxuICBvdXRwdXRzOiBERUZBVUxUX09VVFBVVFNfT19DT05UQUlORVJfQ09MTEFQU0lCTEVcbn0pXG5leHBvcnQgY2xhc3MgT0NvbnRhaW5lckNvbGxhcHNpYmxlQ29tcG9uZW50IGV4dGVuZHMgT0NvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHB1YmxpYyBleHBhbmRlZDogYm9vbGVhbiA9IHRydWU7XG4gIHB1YmxpYyBjb2xsYXBzZWRIZWlnaHQgPSAnMzdweCc7XG4gIHB1YmxpYyBleHBhbmRlZEhlaWdodCA9ICczN3B4JztcbiAgcHVibGljIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG5cbiAgb25DbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIG9uT3BlbmVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBvbkFmdGVyQ29sbGFwc2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIG9uQWZ0ZXJFeHBhbmQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQFZpZXdDaGlsZCgnZXhwUGFuZWwnKSBleHBQYW5lbDogTWF0RXhwYW5zaW9uUGFuZWw7IC8vIFVzZWQgaW4gc3ViY29tcG9uZW50c1xuICBAVmlld0NoaWxkKCdjb250YWluZXJDb250ZW50JywgeyBzdGF0aWM6IHRydWUgfSkgcHJvdGVjdGVkIGNvbnRhaW5lckNvbnRlbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ29Db250YWluZXJPdXRsaW5lJykgcHJvdGVjdGVkIG9Db250YWluZXJPdXRsaW5lOiBFbGVtZW50UmVmO1xuXG5cbiAgcHJvdGVjdGVkIGV4cFBhbmVsU3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBlbFJlZjogRWxlbWVudFJlZixcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTUFUX0ZPUk1fRklFTERfREVGQVVMVF9PUFRJT05TKSBwcm90ZWN0ZWQgbWF0Rm9ybURlZmF1bHRPcHRpb25cbiAgKSB7XG4gICAgc3VwZXIoZWxSZWYsIGluamVjdG9yLCBtYXRGb3JtRGVmYXVsdE9wdGlvbik7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgdGhpcy51cGRhdGVPdXRsaW5lR2FwKCk7XG4gICAgdGhpcy5zdWJzY3JpYmVFdmVudHNFeHBQYW5lbCgpO1xuICB9XG5cbiAgc3Vic2NyaWJlRXZlbnRzRXhwUGFuZWwoKSB7XG4gICAgdGhpcy5leHBQYW5lbFN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuZXhwUGFuZWwuYWZ0ZXJDb2xsYXBzZS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5vbkFmdGVyQ29sbGFwc2UuZW1pdCgpKSk7XG4gICAgdGhpcy5leHBQYW5lbFN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuZXhwUGFuZWwuYWZ0ZXJFeHBhbmQuc3Vic2NyaWJlKCgpID0+IHRoaXMub25BZnRlckV4cGFuZC5lbWl0KCkpKTtcbiAgICB0aGlzLmV4cFBhbmVsU3Vic2NyaXB0aW9ucy5hZGQodGhpcy5leHBQYW5lbC5jbG9zZWQuc3Vic2NyaWJlKCgpID0+IHRoaXMub25DbG9zZWQuZW1pdCgpKSk7XG4gICAgdGhpcy5leHBQYW5lbFN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuZXhwUGFuZWwub3BlbmVkLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uT3BlbmVkLmVtaXQoKSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZU91dGxpbmVHYXAoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNBcHBlYXJhbmNlT3V0bGluZSgpKSB7XG4gICAgICBjb25zdCBleFBhbmVsSGVhZGVyID0gdGhpcy5fdGl0bGVFbCA/ICh0aGlzLl90aXRsZUVsIGFzIGFueSkuX2VsZW1lbnQubmF0aXZlRWxlbWVudCA6IG51bGw7XG5cbiAgICAgIGlmICghdGhpcy5vQ29udGFpbmVyT3V0bGluZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBjb250YWluZXJPdXRsaW5lID0gdGhpcy5vQ29udGFpbmVyT3V0bGluZS5uYXRpdmVFbGVtZW50O1xuICAgICAgY29uc3QgY29udGFpbmVyT3V0bGluZVJlY3QgPSBjb250YWluZXJPdXRsaW5lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgaWYgKGNvbnRhaW5lck91dGxpbmVSZWN0LndpZHRoID09PSAwICYmIGNvbnRhaW5lck91dGxpbmVSZWN0LmhlaWdodCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRpdGxlRWwgPSBleFBhbmVsSGVhZGVyLnF1ZXJ5U2VsZWN0b3IoJy5vLWNvbnRhaW5lci10aXRsZS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZScpO1xuICAgICAgY29uc3QgZGVzY3JFbCA9IGV4UGFuZWxIZWFkZXIucXVlcnlTZWxlY3RvcignLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uJyk7XG5cbiAgICAgIGNvbnN0IGNvbnRhaW5lclN0YXJ0ID0gY29udGFpbmVyT3V0bGluZVJlY3QubGVmdDtcbiAgICAgIGNvbnN0IGRlc2NyU3RhcnQgPSBkZXNjckVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG5cbiAgICAgIGxldCB0aXRsZVdpZHRoID0gMDtcbiAgICAgIGlmICh0aGlzLmhhc0hlYWRlcigpKSB7XG4gICAgICAgIHRpdGxlV2lkdGggKz0gdGhpcy5pY29uID8gdGl0bGVFbC5xdWVyeVNlbGVjdG9yKCdtYXQtaWNvbicpLm9mZnNldFdpZHRoIDogMDsgLy8gaWNvblxuICAgICAgICB0aXRsZVdpZHRoICs9IHRoaXMudGl0bGUgPyB0aXRsZUVsLnF1ZXJ5U2VsZWN0b3IoJ3NwYW4nKS5vZmZzZXRXaWR0aCA6IDA7IC8vIHRpdGxlXG4gICAgICAgIHRpdGxlV2lkdGggPSB0aXRsZVdpZHRoID09PSAwID8gMCA6IHRpdGxlV2lkdGggKyA0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBsYWJlbFN0YXJ0ID0gdGl0bGVFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xuICAgICAgY29uc3Qgc3RhcnRXaWR0aCA9IGxhYmVsU3RhcnQgLSBjb250YWluZXJTdGFydCAtIDI7XG4gICAgICBjb25zdCBlbXB0eTFXaWR0aCA9IGRlc2NyU3RhcnQgLSBjb250YWluZXJTdGFydCAtIHRpdGxlV2lkdGggLSAyNDtcbiAgICAgIGNvbnN0IGRlc2NyV2lkdGggPSB0aGlzLmRlc2NyaXB0aW9uID8gZGVzY3JFbC5xdWVyeVNlbGVjdG9yKCdzcGFuJykub2Zmc2V0V2lkdGggKyA4IDogMDtcblxuICAgICAgY29uc3Qgc3RhcnRFbHMgPSBjb250YWluZXJPdXRsaW5lLnF1ZXJ5U2VsZWN0b3JBbGwoJy5vLWNvbnRhaW5lci1vdXRsaW5lLXN0YXJ0Jyk7XG4gICAgICBjb25zdCBnYXBUaXRsZUVscyA9IGNvbnRhaW5lck91dGxpbmUucXVlcnlTZWxlY3RvckFsbCgnLm8tY29udGFpbmVyLW91dGxpbmUtZ2FwLXRpdGxlJyk7XG4gICAgICBjb25zdCBnYXBFbXB0eTFFbHMgPSBjb250YWluZXJPdXRsaW5lLnF1ZXJ5U2VsZWN0b3JBbGwoJy5vLWNvbnRhaW5lci1vdXRsaW5lLWdhcC1lbXB0eTEnKTtcbiAgICAgIGNvbnN0IGdhcERlc2NyRWxzID0gY29udGFpbmVyT3V0bGluZS5xdWVyeVNlbGVjdG9yQWxsKCcuby1jb250YWluZXItb3V0bGluZS1nYXAtZGVzY3JpcHRpb24nKTtcblxuICAgICAgc3RhcnRFbHNbMF0uc3R5bGUud2lkdGggPSBgJHtzdGFydFdpZHRofXB4YDtcbiAgICAgIGdhcFRpdGxlRWxzWzBdLnN0eWxlLndpZHRoID0gYCR7dGl0bGVXaWR0aH1weGA7XG4gICAgICBnYXBFbXB0eTFFbHNbMF0uc3R5bGUud2lkdGggPSBgJHtlbXB0eTFXaWR0aH1weGA7XG4gICAgICBnYXBEZXNjckVsc1swXS5zdHlsZS53aWR0aCA9IGAke2Rlc2NyV2lkdGh9cHhgO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCByZWdpc3Rlck9ic2VydmVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl90aXRsZUVsKSB7XG4gICAgICB0aGlzLnRpdGxlT2JzZXJ2ZXIub2JzZXJ2ZSgodGhpcy5fdGl0bGVFbCBhcyBhbnkpLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlLFxuICAgICAgICBzdWJ0cmVlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVJbm5lckhlaWdodChoZWlnaHQ6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbnRhaW5lckNvbnRlbnQpIHtcbiAgICAgIHRoaXMuY29udGFpbmVyQ29udGVudC5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9IGhlaWdodDtcbiAgICB9XG4gICAgaWYgKHRoaXMub0NvbnRhaW5lck91dGxpbmUpIHtcbiAgICAgIHRoaXMub0NvbnRhaW5lck91dGxpbmUubmF0aXZlRWxlbWVudC5zdHlsZS5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgfVxuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZXhwUGFuZWxTdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxufVxuIl19