UNPKG

ontimize-web-ngx

Version:
94 lines 19.4 kB
import { __decorate, __metadata } from "tslib"; import { Component, Injector, ViewEncapsulation } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { BooleanInputConverter } from '../../../decorators/input-converter'; import { DialogService } from '../../../services/dialog.service'; import { OLoadFilterDialogComponent } from '../../../shared/components/filter/load-filter/o-load-filter-dialog.component'; import { OStoreFilterDialogComponent } from '../../../shared/components/filter/store-filter/o-store-filter-dialog.component'; import * as i0 from "@angular/core"; import * as i1 from "@angular/material/button"; import * as i2 from "@angular/material/icon"; import * as i3 from "@angular/material/menu"; import * as i4 from "@angular/common"; import * as i5 from "../../../pipes/o-translate.pipe"; export const DEFAULT_INPUTS_O_FILTER_BUILDER_MENU = [ '_filterBuilder: oFilterBuilder', 'icon', 'svgIcon : svg-icon', 'showClearFilterOption: show-clear-filter-option', 'showFilterOption: show-filter-option' ]; export class OFilterBuilderMenuComponent { constructor(injector) { this.injector = injector; this.showFilterOption = true; this.showClearFilterOption = true; this.defaultSvgIcon = 'ontimize:more_vert'; this.dialog = this.injector.get(MatDialog); this.dialogService = this.injector.get(DialogService); } onStoreFilterClicked() { const dialogRef = this.dialog.open(OStoreFilterDialogComponent, { data: this._filterBuilder.state.storedFilterBuilders.map(filter => filter.name), width: 'calc((75em - 100%) * 1000)', maxWidth: '65vw', minWidth: '30vw', disableClose: true, panelClass: ['o-dialog-class', 'o-table-dialog'] }); dialogRef.afterClosed().subscribe(result => { if (result) { this._filterBuilder.storeFilterInState(dialogRef.componentInstance.getFilterAttributes()); } }); } onLoadFilterClicked() { const dialogRef = this.dialog.open(OLoadFilterDialogComponent, { data: this._filterBuilder.state.storedFilterBuilders, width: 'calc((75em - 100%) * 1000)', maxWidth: '65vw', minWidth: '30vw', disableClose: true, panelClass: ['o-dialog-class', 'o-table-dialog'] }); dialogRef.componentInstance.onDelete.subscribe(filterName => this._filterBuilder.state.deleteStoredFilter(filterName)); dialogRef.afterClosed().subscribe(result => { if (result) { const selectedFilterName = dialogRef.componentInstance.getSelectedFilterName(); if (selectedFilterName) { this._filterBuilder.state.applyFilter(selectedFilterName); this._filterBuilder.setFilterValues(this._filterBuilder.state.filterBuilderValues); this._filterBuilder.triggerReload(); } } }); } onClearFilterClicked() { this.dialogService.confirm('CONFIRM', 'FILTERBUILDERMENU.DIALOG.CONFIRM_CLEAR_FILTER').then(result => { if (result) { this._filterBuilder.clearFilter(); this._filterBuilder.triggerReload(); } }); } onFilterClicked() { if (this._filterBuilder) { this._filterBuilder.triggerReload(); } } } OFilterBuilderMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OFilterBuilderMenuComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); OFilterBuilderMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OFilterBuilderMenuComponent, selector: "o-filter-builder-menu", inputs: { _filterBuilder: ["oFilterBuilder", "_filterBuilder"], icon: "icon", svgIcon: ["svg-icon", "svgIcon"], showClearFilterOption: ["show-clear-filter-option", "showClearFilterOption"], showFilterOption: ["show-filter-option", "showFilterOption"] }, ngImport: i0, template: "<button mat-icon-button [attr.aria-label]=\"'FILTERBUILDERMENU.BUTTONS.ARIALBUTTON' | oTranslate\" [matMenuTriggerFor]=\"filterMenu\">\n <ng-container *ngIf=\"svgIcon !== undefined; else buttonIconTemplate\">\n <mat-icon [svgIcon]=\"svgIcon\"></mat-icon>\n </ng-container>\n <ng-template #buttonIconTemplate>\n <ng-container *ngIf=\"icon !== undefined; else defaultButtonTemplate\">\n <mat-icon>{{icon}}</mat-icon>\n </ng-container>\n </ng-template>\n <ng-template #defaultButtonTemplate>\n <mat-icon [svgIcon]=\"defaultSvgIcon\"></mat-icon>\n </ng-template>\n</button>\n<mat-menu #filterMenu=\"matMenu\" class=\"o-mat-menu\">\n <button type=\"button\" mat-menu-item (click)=\"onFilterClicked()\" *ngIf=\"showFilterOption\">\n {{ 'FILTERBUILDERMENU.BUTTONS.FILTER' | oTranslate }}\n </button>\n <button type=\"button\" mat-menu-item (click)=\"onStoreFilterClicked()\">\n {{ 'FILTERBUILDERMENU.BUTTONS.SAVE_FILTER' | oTranslate }}\n </button>\n <button type=\"button\" mat-menu-item (click)=\"onLoadFilterClicked()\">\n {{ 'FILTERBUILDERMENU.BUTTONS.LOAD_FILTER' | oTranslate}}\n </button>\n <button type=\"button\" mat-menu-item (click)=\"onClearFilterClicked()\" *ngIf=\"showClearFilterOption\">\n {{ 'FILTERBUILDERMENU.BUTTONS.CLEAR_FILTER' | oTranslate}}\n </button>\n</mat-menu>\n", dependencies: [{ kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.OTranslatePipe, name: "oTranslate" }], encapsulation: i0.ViewEncapsulation.None }); __decorate([ BooleanInputConverter(), __metadata("design:type", Boolean) ], OFilterBuilderMenuComponent.prototype, "showFilterOption", void 0); __decorate([ BooleanInputConverter(), __metadata("design:type", Boolean) ], OFilterBuilderMenuComponent.prototype, "showClearFilterOption", void 0); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OFilterBuilderMenuComponent, decorators: [{ type: Component, args: [{ selector: 'o-filter-builder-menu', inputs: DEFAULT_INPUTS_O_FILTER_BUILDER_MENU, encapsulation: ViewEncapsulation.None, template: "<button mat-icon-button [attr.aria-label]=\"'FILTERBUILDERMENU.BUTTONS.ARIALBUTTON' | oTranslate\" [matMenuTriggerFor]=\"filterMenu\">\n <ng-container *ngIf=\"svgIcon !== undefined; else buttonIconTemplate\">\n <mat-icon [svgIcon]=\"svgIcon\"></mat-icon>\n </ng-container>\n <ng-template #buttonIconTemplate>\n <ng-container *ngIf=\"icon !== undefined; else defaultButtonTemplate\">\n <mat-icon>{{icon}}</mat-icon>\n </ng-container>\n </ng-template>\n <ng-template #defaultButtonTemplate>\n <mat-icon [svgIcon]=\"defaultSvgIcon\"></mat-icon>\n </ng-template>\n</button>\n<mat-menu #filterMenu=\"matMenu\" class=\"o-mat-menu\">\n <button type=\"button\" mat-menu-item (click)=\"onFilterClicked()\" *ngIf=\"showFilterOption\">\n {{ 'FILTERBUILDERMENU.BUTTONS.FILTER' | oTranslate }}\n </button>\n <button type=\"button\" mat-menu-item (click)=\"onStoreFilterClicked()\">\n {{ 'FILTERBUILDERMENU.BUTTONS.SAVE_FILTER' | oTranslate }}\n </button>\n <button type=\"button\" mat-menu-item (click)=\"onLoadFilterClicked()\">\n {{ 'FILTERBUILDERMENU.BUTTONS.LOAD_FILTER' | oTranslate}}\n </button>\n <button type=\"button\" mat-menu-item (click)=\"onClearFilterClicked()\" *ngIf=\"showClearFilterOption\">\n {{ 'FILTERBUILDERMENU.BUTTONS.CLEAR_FILTER' | oTranslate}}\n </button>\n</mat-menu>\n" }] }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { showFilterOption: [], showClearFilterOption: [] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWJ1aWxkZXItbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXItYnVpbGRlci9maWx0ZXItYnVpbGRlci1tZW51L2ZpbHRlci1idWlsZGVyLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvZmlsdGVyLWJ1aWxkZXIvZmlsdGVyLWJ1aWxkZXItbWVudS9maWx0ZXItYnVpbGRlci1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFckQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhFQUE4RSxDQUFDO0FBQzFILE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGdGQUFnRixDQUFDOzs7Ozs7O0FBRzdILE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFHO0lBQ2xELGdDQUFnQztJQUVoQyxNQUFNO0lBRU4sb0JBQW9CO0lBRXBCLGlEQUFpRDtJQUVqRCxzQ0FBc0M7Q0FDdkMsQ0FBQztBQVFGLE1BQU0sT0FBTywyQkFBMkI7SUFZdEMsWUFDWSxRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBUjlCLHFCQUFnQixHQUFZLElBQUksQ0FBQztRQUVqQywwQkFBcUIsR0FBWSxJQUFJLENBQUM7UUFHL0IsbUJB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QyxhQUFhLEVBQUUsQ0FBQztTQUNyQztJQUNILENBQUM7O3lIQXhFVSwyQkFBMkI7NkdBQTNCLDJCQUEyQiwyVEMzQnhDLGl6Q0EyQkE7QURJRTtJQUFDLHFCQUFxQixFQUFFOztxRUFDUztBQUNqQztJQUFDLHFCQUFxQixFQUFFOzswRUFDYzs0RkFQM0IsMkJBQTJCO2tCQU52QyxTQUFTOytCQUNFLHVCQUF1QixVQUV6QixvQ0FBb0MsaUJBQzdCLGlCQUFpQixDQUFDLElBQUk7K0ZBT3JDLGdCQUFnQixNQUVoQixxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgQm9vbGVhbklucHV0Q29udmVydGVyIH0gZnJvbSAnLi4vLi4vLi4vZGVjb3JhdG9ycy9pbnB1dC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IE9Mb2FkRmlsdGVyRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2NvbXBvbmVudHMvZmlsdGVyL2xvYWQtZmlsdGVyL28tbG9hZC1maWx0ZXItZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPU3RvcmVGaWx0ZXJEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvY29tcG9uZW50cy9maWx0ZXIvc3RvcmUtZmlsdGVyL28tc3RvcmUtZmlsdGVyLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgT0ZpbHRlckJ1aWxkZXJDb21wb25lbnQgfSBmcm9tICcuLi9vLWZpbHRlci1idWlsZGVyLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX0ZJTFRFUl9CVUlMREVSX01FTlUgPSBbXG4gICdfZmlsdGVyQnVpbGRlcjogb0ZpbHRlckJ1aWxkZXInLFxuICAvLyBpY29uIFtzdHJpbmddOiBOYW1lIG9mIGdvb2dsZSBpY29uIChzZWUgaHR0cHM6Ly9kZXNpZ24uZ29vZ2xlLmNvbS9pY29ucy8pXG4gICdpY29uJyxcbiAgLy8gTmFtZSBvZiBzdmcgaWNvblxuICAnc3ZnSWNvbiA6IHN2Zy1pY29uJyxcbiAgLy8gc2hvdy1jbGVhci1maWx0ZXItb3B0aW9uIFt5ZXN8bm98dHJ1ZXxmYWxzZV06IHNob3cgY2xlYXIgZmlsdGVyIG9wdGlvbiBpbiB0aGUgZmlsdGVyIGJ1aWxkZXIgbWVudVxuICAnc2hvd0NsZWFyRmlsdGVyT3B0aW9uOiBzaG93LWNsZWFyLWZpbHRlci1vcHRpb24nLFxuICAvLyBzaG93LWZpbHRlci1vcHRpb24gW3llc3xub3x0cnVlfGZhbHNlXTogc2hvdyBmaWx0ZXIgb3B0aW9uIGluIHRoZSBmaWx0ZXIgYnVpbGRlciBtZW51XG4gICdzaG93RmlsdGVyT3B0aW9uOiBzaG93LWZpbHRlci1vcHRpb24nXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLWZpbHRlci1idWlsZGVyLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLWJ1aWxkZXItbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19GSUxURVJfQlVJTERFUl9NRU5VLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIE9GaWx0ZXJCdWlsZGVyTWVudUNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBkaWFsb2c6IE1hdERpYWxvZztcbiAgcHJvdGVjdGVkIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2U7XG4gIHByb3RlY3RlZCBfZmlsdGVyQnVpbGRlcjogT0ZpbHRlckJ1aWxkZXJDb21wb25lbnQ7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBzaG93RmlsdGVyT3B0aW9uOiBib29sZWFuID0gdHJ1ZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNob3dDbGVhckZpbHRlck9wdGlvbjogYm9vbGVhbiA9IHRydWU7XG4gIHB1YmxpYyBpY29uOiBzdHJpbmc7XG4gIHB1YmxpYyBzdmdJY29uOiBzdHJpbmc7XG4gIHB1YmxpYyBkZWZhdWx0U3ZnSWNvbiA9ICdvbnRpbWl6ZTptb3JlX3ZlcnQnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICkge1xuICAgIHRoaXMuZGlhbG9nID0gdGhpcy5pbmplY3Rvci5nZXQoTWF0RGlhbG9nKTtcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChEaWFsb2dTZXJ2aWNlKTtcbiAgfVxuXG4gIHB1YmxpYyBvblN0b3JlRmlsdGVyQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKE9TdG9yZUZpbHRlckRpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgZGF0YTogdGhpcy5fZmlsdGVyQnVpbGRlci5zdGF0ZS5zdG9yZWRGaWx0ZXJCdWlsZGVycy5tYXAoZmlsdGVyID0+IGZpbHRlci5uYW1lKSxcbiAgICAgIHdpZHRoOiAnY2FsYygoNzVlbSAtIDEwMCUpICogMTAwMCknLFxuICAgICAgbWF4V2lkdGg6ICc2NXZ3JyxcbiAgICAgIG1pbldpZHRoOiAnMzB2dycsXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICBwYW5lbENsYXNzOiBbJ28tZGlhbG9nLWNsYXNzJywgJ28tdGFibGUtZGlhbG9nJ11cbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLl9maWx0ZXJCdWlsZGVyLnN0b3JlRmlsdGVySW5TdGF0ZShkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZ2V0RmlsdGVyQXR0cmlidXRlcygpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkxvYWRGaWx0ZXJDbGlja2VkKCk6IHZvaWQge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oT0xvYWRGaWx0ZXJEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHRoaXMuX2ZpbHRlckJ1aWxkZXIuc3RhdGUuc3RvcmVkRmlsdGVyQnVpbGRlcnMsXG4gICAgICB3aWR0aDogJ2NhbGMoKDc1ZW0gLSAxMDAlKSAqIDEwMDApJyxcbiAgICAgIG1heFdpZHRoOiAnNjV2dycsXG4gICAgICBtaW5XaWR0aDogJzMwdncnLFxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxuICAgICAgcGFuZWxDbGFzczogWydvLWRpYWxvZy1jbGFzcycsICdvLXRhYmxlLWRpYWxvZyddXG4gICAgfSk7XG5cbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2Uub25EZWxldGUuc3Vic2NyaWJlKGZpbHRlck5hbWUgPT4gdGhpcy5fZmlsdGVyQnVpbGRlci5zdGF0ZS5kZWxldGVTdG9yZWRGaWx0ZXIoZmlsdGVyTmFtZSkpO1xuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEZpbHRlck5hbWU6IHN0cmluZyA9IGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5nZXRTZWxlY3RlZEZpbHRlck5hbWUoKTtcbiAgICAgICAgaWYgKHNlbGVjdGVkRmlsdGVyTmFtZSkge1xuICAgICAgICAgIHRoaXMuX2ZpbHRlckJ1aWxkZXIuc3RhdGUuYXBwbHlGaWx0ZXIoc2VsZWN0ZWRGaWx0ZXJOYW1lKTtcbiAgICAgICAgICB0aGlzLl9maWx0ZXJCdWlsZGVyLnNldEZpbHRlclZhbHVlcyh0aGlzLl9maWx0ZXJCdWlsZGVyLnN0YXRlLmZpbHRlckJ1aWxkZXJWYWx1ZXMpXG4gICAgICAgICAgdGhpcy5fZmlsdGVyQnVpbGRlci50cmlnZ2VyUmVsb2FkKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uQ2xlYXJGaWx0ZXJDbGlja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nU2VydmljZS5jb25maXJtKCdDT05GSVJNJywgJ0ZJTFRFUkJVSUxERVJNRU5VLkRJQUxPRy5DT05GSVJNX0NMRUFSX0ZJTFRFUicpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyQnVpbGRlci5jbGVhckZpbHRlcigpO1xuICAgICAgICB0aGlzLl9maWx0ZXJCdWlsZGVyLnRyaWdnZXJSZWxvYWQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uRmlsdGVyQ2xpY2tlZCgpIHtcbiAgICBpZiAodGhpcy5fZmlsdGVyQnVpbGRlcikge1xuICAgICAgdGhpcy5fZmlsdGVyQnVpbGRlci50cmlnZ2VyUmVsb2FkKCk7XG4gICAgfVxuICB9XG59XG4iLCI8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbYXR0ci5hcmlhLWxhYmVsXT1cIidGSUxURVJCVUlMREVSTUVOVS5CVVRUT05TLkFSSUFMQlVUVE9OJyB8IG9UcmFuc2xhdGVcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiZmlsdGVyTWVudVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic3ZnSWNvbiAhPT0gdW5kZWZpbmVkOyBlbHNlIGJ1dHRvbkljb25UZW1wbGF0ZVwiPlxuICAgIDxtYXQtaWNvbiBbc3ZnSWNvbl09XCJzdmdJY29uXCI+PC9tYXQtaWNvbj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSAjYnV0dG9uSWNvblRlbXBsYXRlPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpY29uICE9PSB1bmRlZmluZWQ7IGVsc2UgZGVmYXVsdEJ1dHRvblRlbXBsYXRlXCI+XG4gICAgICA8bWF0LWljb24+e3tpY29ufX08L21hdC1pY29uPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI2RlZmF1bHRCdXR0b25UZW1wbGF0ZT5cbiAgICA8bWF0LWljb24gW3N2Z0ljb25dPVwiZGVmYXVsdFN2Z0ljb25cIj48L21hdC1pY29uPlxuICA8L25nLXRlbXBsYXRlPlxuPC9idXR0b24+XG48bWF0LW1lbnUgI2ZpbHRlck1lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJvLW1hdC1tZW51XCI+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uRmlsdGVyQ2xpY2tlZCgpXCIgKm5nSWY9XCJzaG93RmlsdGVyT3B0aW9uXCI+XG4gICAge3sgJ0ZJTFRFUkJVSUxERVJNRU5VLkJVVFRPTlMuRklMVEVSJyB8IG9UcmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uU3RvcmVGaWx0ZXJDbGlja2VkKClcIj5cbiAgICB7eyAnRklMVEVSQlVJTERFUk1FTlUuQlVUVE9OUy5TQVZFX0ZJTFRFUicgfCBvVHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvbkxvYWRGaWx0ZXJDbGlja2VkKClcIj5cbiAgICB7eyAnRklMVEVSQlVJTERFUk1FTlUuQlVUVE9OUy5MT0FEX0ZJTFRFUicgfCBvVHJhbnNsYXRlfX1cbiAgPC9idXR0b24+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uQ2xlYXJGaWx0ZXJDbGlja2VkKClcIiAqbmdJZj1cInNob3dDbGVhckZpbHRlck9wdGlvblwiPlxuICAgIHt7ICdGSUxURVJCVUlMREVSTUVOVS5CVVRUT05TLkNMRUFSX0ZJTFRFUicgfCBvVHJhbnNsYXRlfX1cbiAgPC9idXR0b24+XG48L21hdC1tZW51PlxuIl19