ontimize-web-ngx
Version:
Ontimize Web framework using Angular 15
110 lines • 23.5 kB
JavaScript
import { CdkColumnDef } from '@angular/cdk/table';
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Inject, Injector, Optional, ViewEncapsulation } from '@angular/core';
import { matSortAnimations, MatSortHeader, MatSortHeaderIntl } from '@angular/material/sort';
import { FocusMonitor } from '@angular/cdk/a11y';
import { OMatSort } from './o-mat-sort';
import { OTableLoadingService } from '../../o-table-loading.service';
import * as i0 from "@angular/core";
import * as i1 from "@angular/material/sort";
import * as i2 from "./o-mat-sort";
import * as i3 from "@angular/cdk/a11y";
import * as i4 from "@angular/common";
import * as i5 from "@angular/cdk/table";
export class OMatSortHeader extends MatSortHeader {
constructor(_intl, changeDetectorRef, _sort, _cdkColumnDef, _focusMonitor, _elementRef, injector) {
super(_intl, changeDetectorRef, _sort, _cdkColumnDef, _focusMonitor, _elementRef);
this._intl = _intl;
this._sort = _sort;
this._cdkColumnDef = _cdkColumnDef;
this.injector = injector;
this.loadingService = injector.get(OTableLoadingService);
}
_handleClick() {
if (this._isDisabled()) {
return;
}
const event = arguments[0];
if (!this.loadingService.handleProtected(event)) {
return;
}
this._sort.addSortColumn(this);
if (this._viewState.toState === 'hint' || this._viewState.toState === 'active') {
this._disableViewStateAnimation = true;
}
const viewState = this._isSorted() ?
{ fromState: this._arrowDirection, toState: 'active' } :
{ fromState: 'active', toState: this._arrowDirection };
this._setAnimationTransitionState(viewState);
this._showIndicatorHint = false;
}
_isSorted() {
return this._sort.isActive(this) && this._sort.hasDirection(this.id);
}
_updateArrowDirection() {
this._arrowDirection = this._isSorted() ?
this._sort.directionById[this.id] :
(this.start || this._sort.start);
}
refresh() {
if (this._sort.isActive(this)) {
this._setAnimationTransitionState({
fromState: this._sort.directionById[this.id],
toState: 'active'
});
this._showIndicatorHint = false;
}
else {
this._viewState.toState = 'active';
this._intl.changes.next(void 0);
}
}
getSortIndicatorNumbered() {
let result = '';
if (this._sort.activeArray.length < 2) {
return result;
}
const index = this._sort.activeArray.findIndex(x => x.id === this.id);
if (index > -1) {
result += index + 1;
}
return result;
}
getSortIndicatorNumberedClass() {
return 'o-table-header-indicator-numbered o-mat-sort-indicator-numbered-' + this._arrowDirection;
}
}
OMatSortHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OMatSortHeader, deps: [{ token: i1.MatSortHeaderIntl }, { token: i0.ChangeDetectorRef }, { token: i2.OMatSort, optional: true }, { token: 'MAT_SORT_HEADER_COLUMN_DEF', optional: true }, { token: i3.FocusMonitor }, { token: i0.ElementRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
OMatSortHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OMatSortHeader, selector: "[o-mat-sort-header]", inputs: { disabled: "disabled" }, host: { listeners: { "click": "_handleClick()", "mouseenter": "_setIndicatorHintVisible(true)", "longpress": "_setIndicatorHintVisible(true)", "mouseleave": "_setIndicatorHintVisible(false)" }, properties: { "attr.aria-sort": "_getAriaSortAttribute()", "class.mat-sort-header-disabled": "_isDisabled()" } }, exportAs: ["oMatSortHeader"], usesInheritance: true, ngImport: i0, template: "<div class=\"mat-sort-header-container mat-focus-indicator\" [class.mat-sort-header-sorted]=\"_isSorted()\"\n [class.mat-sort-header-position-before]=\"arrowPosition === 'before'\" [attr.tabindex]=\"_isDisabled() ? null : 0\"\n [attr.role]=\"_isDisabled() ? null : 'button'\">\n\n <div class=\"mat-sort-header-content\">\n <ng-content></ng-content>\n </div>\n\n <!-- Disable animations while a current animation is running -->\n <div class=\"mat-sort-header-arrow\" *ngIf=\"_renderArrow()\" [@arrowOpacity]=\"_getArrowViewState()\" [@arrowPosition]=\"_getArrowViewState()\"\n [@allowChildren]=\"_getArrowDirectionState()\" (@arrowPosition.start)=\"_disableViewStateAnimation = true\"\n (@arrowPosition.done)=\"_disableViewStateAnimation = false\">\n <div class=\"mat-sort-header-stem\"></div>\n <div class=\"mat-sort-header-indicator\" [@indicator]=\"_getArrowDirectionState()\">\n <div class=\"mat-sort-header-pointer-left\" [@leftPointer]=\"_getArrowDirectionState()\"></div>\n <div class=\"mat-sort-header-pointer-right\" [@rightPointer]=\"_getArrowDirectionState()\"></div>\n <div class=\"mat-sort-header-pointer-middle\"></div>\n </div>\n <span [ngClass]=\"getSortIndicatorNumberedClass()\"> {{ getSortIndicatorNumbered() }} </span>\n </div>\n</div>\n", styles: [".mat-sort-header-container{display:flex;cursor:pointer;align-items:center}.mat-sort-header-disabled .mat-sort-header-container{cursor:default}.mat-sort-header-container .mat-sort-header-content{flex-grow:1;display:block;overflow:hidden;text-overflow:ellipsis;line-height:normal}.mat-sort-header-position-before{flex-direction:row-reverse}.mat-sort-header-button{border:none;background:0 0;display:flex;align-items:center;padding:0;cursor:inherit;outline:0;font:inherit;color:currentColor}.mat-sort-header-button:has(+ .mat-sort-header-arrow){padding-right:6px}.mat-sort-header-arrow{height:12px;width:12px;min-width:12px;position:relative;display:flex}.mat-sort-header-position-before .mat-sort-header-arrow{margin:0 6px 0 0}.mat-sort-header-arrow .o-mat-sort-indicator-numbered-desc{top:-8px}.mat-sort-header-stem{background:currentColor;height:10px;width:2px;margin:auto;display:flex;align-items:center}.mat-sort-header-indicator{width:100%;height:2px;display:flex;align-items:center;position:absolute;top:0;left:0}.mat-sort-header-pointer-middle{margin:auto;height:2px;width:2px;background:currentColor;transform:rotate(45deg)}.mat-sort-header-pointer-left,.mat-sort-header-pointer-right{background:currentColor;width:6px;height:2px;position:absolute;top:0}.mat-sort-header-pointer-left{transform-origin:right;left:0}.mat-sort-header-pointer-right{transform-origin:left;right:0}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
matSortAnimations.indicator,
matSortAnimations.leftPointer,
matSortAnimations.rightPointer,
matSortAnimations.arrowOpacity,
matSortAnimations.arrowPosition,
matSortAnimations.allowChildren,
], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OMatSortHeader, decorators: [{
type: Component,
args: [{ selector: '[o-mat-sort-header]', exportAs: 'oMatSortHeader', host: {
'(click)': '_handleClick()',
'(mouseenter)': '_setIndicatorHintVisible(true)',
'(longpress)': '_setIndicatorHintVisible(true)',
'(mouseleave)': '_setIndicatorHintVisible(false)',
'[attr.aria-sort]': '_getAriaSortAttribute()',
'[class.mat-sort-header-disabled]': '_isDisabled()',
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['disabled'], animations: [
matSortAnimations.indicator,
matSortAnimations.leftPointer,
matSortAnimations.rightPointer,
matSortAnimations.arrowOpacity,
matSortAnimations.arrowPosition,
matSortAnimations.allowChildren,
], template: "<div class=\"mat-sort-header-container mat-focus-indicator\" [class.mat-sort-header-sorted]=\"_isSorted()\"\n [class.mat-sort-header-position-before]=\"arrowPosition === 'before'\" [attr.tabindex]=\"_isDisabled() ? null : 0\"\n [attr.role]=\"_isDisabled() ? null : 'button'\">\n\n <div class=\"mat-sort-header-content\">\n <ng-content></ng-content>\n </div>\n\n <!-- Disable animations while a current animation is running -->\n <div class=\"mat-sort-header-arrow\" *ngIf=\"_renderArrow()\" [@arrowOpacity]=\"_getArrowViewState()\" [@arrowPosition]=\"_getArrowViewState()\"\n [@allowChildren]=\"_getArrowDirectionState()\" (@arrowPosition.start)=\"_disableViewStateAnimation = true\"\n (@arrowPosition.done)=\"_disableViewStateAnimation = false\">\n <div class=\"mat-sort-header-stem\"></div>\n <div class=\"mat-sort-header-indicator\" [@indicator]=\"_getArrowDirectionState()\">\n <div class=\"mat-sort-header-pointer-left\" [@leftPointer]=\"_getArrowDirectionState()\"></div>\n <div class=\"mat-sort-header-pointer-right\" [@rightPointer]=\"_getArrowDirectionState()\"></div>\n <div class=\"mat-sort-header-pointer-middle\"></div>\n </div>\n <span [ngClass]=\"getSortIndicatorNumberedClass()\"> {{ getSortIndicatorNumbered() }} </span>\n </div>\n</div>\n", styles: [".mat-sort-header-container{display:flex;cursor:pointer;align-items:center}.mat-sort-header-disabled .mat-sort-header-container{cursor:default}.mat-sort-header-container .mat-sort-header-content{flex-grow:1;display:block;overflow:hidden;text-overflow:ellipsis;line-height:normal}.mat-sort-header-position-before{flex-direction:row-reverse}.mat-sort-header-button{border:none;background:0 0;display:flex;align-items:center;padding:0;cursor:inherit;outline:0;font:inherit;color:currentColor}.mat-sort-header-button:has(+ .mat-sort-header-arrow){padding-right:6px}.mat-sort-header-arrow{height:12px;width:12px;min-width:12px;position:relative;display:flex}.mat-sort-header-position-before .mat-sort-header-arrow{margin:0 6px 0 0}.mat-sort-header-arrow .o-mat-sort-indicator-numbered-desc{top:-8px}.mat-sort-header-stem{background:currentColor;height:10px;width:2px;margin:auto;display:flex;align-items:center}.mat-sort-header-indicator{width:100%;height:2px;display:flex;align-items:center;position:absolute;top:0;left:0}.mat-sort-header-pointer-middle{margin:auto;height:2px;width:2px;background:currentColor;transform:rotate(45deg)}.mat-sort-header-pointer-left,.mat-sort-header-pointer-right{background:currentColor;width:6px;height:2px;position:absolute;top:0}.mat-sort-header-pointer-left{transform-origin:right;left:0}.mat-sort-header-pointer-right{transform-origin:left;right:0}\n"] }]
}], ctorParameters: function () { return [{ type: i1.MatSortHeaderIntl }, { type: i0.ChangeDetectorRef }, { type: i2.OMatSort, decorators: [{
type: Optional
}] }, { type: i5.CdkColumnDef, decorators: [{
type: Inject,
args: ['MAT_SORT_HEADER_COLUMN_DEF']
}, {
type: Optional
}] }, { type: i3.FocusMonitor }, { type: i0.ElementRef }, { type: i0.Injector }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1tYXQtc29ydC1oZWFkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL3NvcnQvby1tYXQtc29ydC1oZWFkZXIudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL3NvcnQvc29ydC1oZWFkZXIuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakosT0FBTyxFQUE0QixpQkFBaUIsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7OztBQTRCckUsTUFBTSxPQUFPLGNBQWUsU0FBUSxhQUFhO0lBRy9DLFlBQW1CLEtBQXdCLEVBQ3pDLGlCQUFvQyxFQUNqQixLQUFlLEVBRTNCLGFBQTJCLEVBQ2xDLGFBQTJCLEVBQzNCLFdBQW9DLEVBQzdCLFFBQWtCO1FBRXpCLEtBQUssQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFUakUsVUFBSyxHQUFMLEtBQUss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L3RhYmxlJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIEluamVjdG9yLCBPcHRpb25hbCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFycm93Vmlld1N0YXRlVHJhbnNpdGlvbiwgbWF0U29ydEFuaW1hdGlvbnMsIE1hdFNvcnRIZWFkZXIsIE1hdFNvcnRIZWFkZXJJbnRsIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBPTWF0U29ydCB9IGZyb20gJy4vby1tYXQtc29ydCc7XG5pbXBvcnQgeyBPVGFibGVMb2FkaW5nU2VydmljZSB9IGZyb20gJy4uLy4uL28tdGFibGUtbG9hZGluZy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW28tbWF0LXNvcnQtaGVhZGVyXScsXG4gIGV4cG9ydEFzOiAnb01hdFNvcnRIZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc29ydC1oZWFkZXIuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NvcnQtaGVhZGVyLnNjc3MnXSxcbiAgaG9zdDoge1xuICAgICcoY2xpY2spJzogJ19oYW5kbGVDbGljaygpJyxcbiAgICAnKG1vdXNlZW50ZXIpJzogJ19zZXRJbmRpY2F0b3JIaW50VmlzaWJsZSh0cnVlKScsXG4gICAgJyhsb25ncHJlc3MpJzogJ19zZXRJbmRpY2F0b3JIaW50VmlzaWJsZSh0cnVlKScsXG4gICAgJyhtb3VzZWxlYXZlKSc6ICdfc2V0SW5kaWNhdG9ySGludFZpc2libGUoZmFsc2UpJyxcbiAgICAnW2F0dHIuYXJpYS1zb3J0XSc6ICdfZ2V0QXJpYVNvcnRBdHRyaWJ1dGUoKScsXG4gICAgJ1tjbGFzcy5tYXQtc29ydC1oZWFkZXItZGlzYWJsZWRdJzogJ19pc0Rpc2FibGVkKCknLFxuICB9LFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJ10sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICBtYXRTb3J0QW5pbWF0aW9ucy5pbmRpY2F0b3IsXG4gICAgbWF0U29ydEFuaW1hdGlvbnMubGVmdFBvaW50ZXIsXG4gICAgbWF0U29ydEFuaW1hdGlvbnMucmlnaHRQb2ludGVyLFxuICAgIG1hdFNvcnRBbmltYXRpb25zLmFycm93T3BhY2l0eSxcbiAgICBtYXRTb3J0QW5pbWF0aW9ucy5hcnJvd1Bvc2l0aW9uLFxuICAgIG1hdFNvcnRBbmltYXRpb25zLmFsbG93Q2hpbGRyZW4sXG4gIF1cbn0pXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1jbGFzcy1zdWZmaXhcbmV4cG9ydCBjbGFzcyBPTWF0U29ydEhlYWRlciBleHRlbmRzIE1hdFNvcnRIZWFkZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGxvYWRpbmdTZXJ2aWNlOiBPVGFibGVMb2FkaW5nU2VydmljZVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBfaW50bDogTWF0U29ydEhlYWRlckludGwsXG4gICAgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBfc29ydDogT01hdFNvcnQsXG4gICAgQEluamVjdCgnTUFUX1NPUlRfSEVBREVSX0NPTFVNTl9ERUYnKSBAT3B0aW9uYWwoKVxuICAgIHB1YmxpYyBfY2RrQ29sdW1uRGVmOiBDZGtDb2x1bW5EZWYsXG4gICAgX2ZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICAgIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwdWJsaWMgaW5qZWN0b3I6IEluamVjdG9yKSB7XG5cbiAgICBzdXBlcihfaW50bCwgY2hhbmdlRGV0ZWN0b3JSZWYsIF9zb3J0LCBfY2RrQ29sdW1uRGVmLCBfZm9jdXNNb25pdG9yLCBfZWxlbWVudFJlZik7XG4gICAgdGhpcy5sb2FkaW5nU2VydmljZSA9IGluamVjdG9yLmdldChPVGFibGVMb2FkaW5nU2VydmljZSk7XG4gIH1cblxuICBfaGFuZGxlQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2lzRGlzYWJsZWQoKSkgeyByZXR1cm47IH1cblxuICAgIGNvbnN0IGV2ZW50ID0gKGFyZ3VtZW50c1swXSBhcyBNb3VzZUV2ZW50IHwgdW5kZWZpbmVkKTtcblxuICAgIGlmICghdGhpcy5sb2FkaW5nU2VydmljZS5oYW5kbGVQcm90ZWN0ZWQoZXZlbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fc29ydC5hZGRTb3J0Q29sdW1uKHRoaXMpO1xuXG4gICAgLy8gRG8gbm90IHNob3cgdGhlIGFuaW1hdGlvbiBpZiB0aGUgaGVhZGVyIHdhcyBhbHJlYWR5IHNob3duIGluIHRoZSByaWdodCBwb3NpdGlvbi5cbiAgICBpZiAodGhpcy5fdmlld1N0YXRlLnRvU3RhdGUgPT09ICdoaW50JyB8fCB0aGlzLl92aWV3U3RhdGUudG9TdGF0ZSA9PT0gJ2FjdGl2ZScpIHtcbiAgICAgIHRoaXMuX2Rpc2FibGVWaWV3U3RhdGVBbmltYXRpb24gPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBhcnJvdyBpcyBub3cgc29ydGVkLCBhbmltYXRlIHRoZSBhcnJvdyBpbnRvIHBsYWNlLiBPdGhlcndpc2UsIGFuaW1hdGUgaXQgYXdheSBpbnRvXG4gICAgLy8gdGhlIGRpcmVjdGlvbiBpdCBpcyBmYWNpbmcuXG4gICAgY29uc3Qgdmlld1N0YXRlOiBBcnJvd1ZpZXdTdGF0ZVRyYW5zaXRpb24gPSB0aGlzLl9pc1NvcnRlZCgpID9cbiAgICAgIHsgZnJvbVN0YXRlOiB0aGlzLl9hcnJvd0RpcmVjdGlvbiwgdG9TdGF0ZTogJ2FjdGl2ZScgfSA6XG4gICAgICB7IGZyb21TdGF0ZTogJ2FjdGl2ZScsIHRvU3RhdGU6IHRoaXMuX2Fycm93RGlyZWN0aW9uIH07XG4gICAgdGhpcy5fc2V0QW5pbWF0aW9uVHJhbnNpdGlvblN0YXRlKHZpZXdTdGF0ZSk7XG5cbiAgICB0aGlzLl9zaG93SW5kaWNhdG9ySGludCA9IGZhbHNlO1xuICB9XG5cbiAgX2lzU29ydGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9zb3J0LmlzQWN0aXZlKHRoaXMpICYmIHRoaXMuX3NvcnQuaGFzRGlyZWN0aW9uKHRoaXMuaWQpO1xuICB9XG5cbiAgX3VwZGF0ZUFycm93RGlyZWN0aW9uKCkge1xuICAgIHRoaXMuX2Fycm93RGlyZWN0aW9uID0gdGhpcy5faXNTb3J0ZWQoKSA/XG4gICAgICB0aGlzLl9zb3J0LmRpcmVjdGlvbkJ5SWRbdGhpcy5pZF0gOlxuICAgICAgKHRoaXMuc3RhcnQgfHwgdGhpcy5fc29ydC5zdGFydCk7XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIGlmICh0aGlzLl9zb3J0LmlzQWN0aXZlKHRoaXMpKSB7XG4gICAgICB0aGlzLl9zZXRBbmltYXRpb25UcmFuc2l0aW9uU3RhdGUoe1xuICAgICAgICBmcm9tU3RhdGU6IHRoaXMuX3NvcnQuZGlyZWN0aW9uQnlJZFt0aGlzLmlkXSxcbiAgICAgICAgdG9TdGF0ZTogJ2FjdGl2ZSdcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fc2hvd0luZGljYXRvckhpbnQgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdmlld1N0YXRlLnRvU3RhdGUgPSAnYWN0aXZlJztcbiAgICAgIHRoaXMuX2ludGwuY2hhbmdlcy5uZXh0KHZvaWQgMCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0U29ydEluZGljYXRvck51bWJlcmVkKCk6IHN0cmluZyB7XG4gICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgIC8vIGlmIHRoZXJlIGlzIG9ubHkgb25lIHNvcnRlZCBjb2x1bW4gdGhlIG51bWJlciBpcyBub3QgZGlzcGxheWVkXG4gICAgaWYgKHRoaXMuX3NvcnQuYWN0aXZlQXJyYXkubGVuZ3RoIDwgMikgeyByZXR1cm4gcmVzdWx0OyB9XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLl9zb3J0LmFjdGl2ZUFycmF5LmZpbmRJbmRleCh4ID0+IHguaWQgPT09IHRoaXMuaWQpO1xuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICByZXN1bHQgKz0gaW5kZXggKyAxO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZ2V0U29ydEluZGljYXRvck51bWJlcmVkQ2xhc3MoKSB7XG4gICAgcmV0dXJuICdvLXRhYmxlLWhlYWRlci1pbmRpY2F0b3ItbnVtYmVyZWQgby1tYXQtc29ydC1pbmRpY2F0b3ItbnVtYmVyZWQtJyArIHRoaXMuX2Fycm93RGlyZWN0aW9uO1xuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJtYXQtc29ydC1oZWFkZXItY29udGFpbmVyIG1hdC1mb2N1cy1pbmRpY2F0b3JcIiBbY2xhc3MubWF0LXNvcnQtaGVhZGVyLXNvcnRlZF09XCJfaXNTb3J0ZWQoKVwiXG4gIFtjbGFzcy5tYXQtc29ydC1oZWFkZXItcG9zaXRpb24tYmVmb3JlXT1cImFycm93UG9zaXRpb24gPT09ICdiZWZvcmUnXCIgW2F0dHIudGFiaW5kZXhdPVwiX2lzRGlzYWJsZWQoKSA/IG51bGwgOiAwXCJcbiAgW2F0dHIucm9sZV09XCJfaXNEaXNhYmxlZCgpID8gbnVsbCA6ICdidXR0b24nXCI+XG5cbiAgPGRpdiBjbGFzcz1cIm1hdC1zb3J0LWhlYWRlci1jb250ZW50XCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cblxuICA8IS0tIERpc2FibGUgYW5pbWF0aW9ucyB3aGlsZSBhIGN1cnJlbnQgYW5pbWF0aW9uIGlzIHJ1bm5pbmcgLS0+XG4gIDxkaXYgY2xhc3M9XCJtYXQtc29ydC1oZWFkZXItYXJyb3dcIiAqbmdJZj1cIl9yZW5kZXJBcnJvdygpXCIgW0BhcnJvd09wYWNpdHldPVwiX2dldEFycm93Vmlld1N0YXRlKClcIiBbQGFycm93UG9zaXRpb25dPVwiX2dldEFycm93Vmlld1N0YXRlKClcIlxuICAgIFtAYWxsb3dDaGlsZHJlbl09XCJfZ2V0QXJyb3dEaXJlY3Rpb25TdGF0ZSgpXCIgKEBhcnJvd1Bvc2l0aW9uLnN0YXJ0KT1cIl9kaXNhYmxlVmlld1N0YXRlQW5pbWF0aW9uID0gdHJ1ZVwiXG4gICAgKEBhcnJvd1Bvc2l0aW9uLmRvbmUpPVwiX2Rpc2FibGVWaWV3U3RhdGVBbmltYXRpb24gPSBmYWxzZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJtYXQtc29ydC1oZWFkZXItc3RlbVwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtYXQtc29ydC1oZWFkZXItaW5kaWNhdG9yXCIgW0BpbmRpY2F0b3JdPVwiX2dldEFycm93RGlyZWN0aW9uU3RhdGUoKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLWxlZnRcIiBbQGxlZnRQb2ludGVyXT1cIl9nZXRBcnJvd0RpcmVjdGlvblN0YXRlKClcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYXQtc29ydC1oZWFkZXItcG9pbnRlci1yaWdodFwiIFtAcmlnaHRQb2ludGVyXT1cIl9nZXRBcnJvd0RpcmVjdGlvblN0YXRlKClcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYXQtc29ydC1oZWFkZXItcG9pbnRlci1taWRkbGVcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8c3BhbiBbbmdDbGFzc109XCJnZXRTb3J0SW5kaWNhdG9yTnVtYmVyZWRDbGFzcygpXCI+IHt7IGdldFNvcnRJbmRpY2F0b3JOdW1iZXJlZCgpIH19IDwvc3Bhbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==