@grapecity/spread-sheets-angular
Version:
SpreadJS angular support
208 lines • 23.3 kB
JavaScript
/*import_begin*/
import { Component, ContentChildren, Input, } from '@angular/core';
/*import_end*/
import { ColumnComponent } from './column.component';
import * as GC from '@grapecity/spread-sheets';
import * as i0 from "@angular/core";
/*code_begin*/
export class WorksheetComponent {
constructor() {
this.sheet = new GC["default"].Spread.Sheets.Worksheet('');
}
onAttached() {
const sheet = this.sheet;
const columns = this.columns;
sheet.suspendPaint();
sheet.suspendEvent();
if (this.dataSource) {
sheet.setDataSource(this.dataSource);
columns.forEach((columnComponent, index) => {
if (columnComponent.dataField) {
sheet.bindColumn(index, {
name: columnComponent.dataField,
displayName: columnComponent.headerText,
});
}
});
}
if (columns.length > 0) {
sheet.setColumnCount(columns.length);
columns.forEach((columnComponent, index) => {
columnComponent.onAttached(this.sheet, index);
});
}
sheet.resumeEvent();
sheet.resumePaint();
}
getSheet() {
return this.sheet;
}
ngOnChanges(changes) {
const sheet = this.sheet;
sheet.suspendPaint();
sheet.suspendEvent();
for (const changeName in changes) {
const newValue = changes[changeName].currentValue;
if (newValue === null || newValue === void 0) {
continue;
}
switch (changeName) {
case 'rowCount':
sheet.setRowCount(newValue);
break;
case 'colCount':
sheet.setColumnCount(newValue);
break;
case 'name':
sheet.name(newValue);
break;
case 'frozenColumnCount':
sheet.frozenColumnCount(newValue);
break;
case 'frozenRowCount':
sheet.frozenRowCount(newValue);
break;
case 'frozenTrailingRowCount':
sheet.frozenTrailingRowCount(newValue);
break;
case 'frozenTrailingColumnCount':
sheet.frozenTrailingColumnCount(newValue);
break;
case 'selectionPolicy':
sheet.selectionPolicy(newValue);
break;
case 'selectionUnit':
sheet.selectionUnit(newValue);
break;
case 'zoom':
sheet.zoom(newValue);
break;
case 'currentTheme':
sheet.currentTheme(newValue);
break;
case 'defaultStyle':
sheet.setDefaultStyle(newValue);
break;
case 'rowOutlineInfo':
newValue.forEach((item) => {
sheet.rowOutlines.group(item.index, item.count);
});
sheet.repaint();
break;
case 'columnOutlineInfo':
newValue.forEach((item) => {
sheet.columnOutlines.group(item.index, item.count);
});
sheet.repaint();
break;
case 'showRowOutline':
sheet.showRowOutline(newValue);
break;
case 'showColumnOutline':
sheet.showColumnOutline(newValue);
break;
case 'dataSource':
sheet.setDataSource(newValue);
break;
case 'autoGenerateColumns':
sheet[changeName] = newValue;
default:
sheet.options[changeName] = newValue;
}
}
sheet.resumeEvent();
sheet.resumePaint();
}
ngAfterViewInit() {
this.columns.changes.subscribe(() => { this.onAttached(); });
}
ngOnDestroy() {
const sheet = this.sheet;
const spread = sheet ? sheet.getParent() : null;
if (spread) {
const sheetIndex = spread.getSheetIndex(sheet.name());
if (sheetIndex !== void 0) {
spread.removeSheet(sheetIndex);
}
}
}
}
WorksheetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: WorksheetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
WorksheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: WorksheetComponent, selector: "gc-worksheet", inputs: { rowCount: "rowCount", colCount: "colCount", dataSource: "dataSource", name: "name", frozenColumnCount: "frozenColumnCount", frozenRowCount: "frozenRowCount", frozenTrailingRowCount: "frozenTrailingRowCount", frozenTrailingColumnCount: "frozenTrailingColumnCount", allowCellOverflow: "allowCellOverflow", frozenlineColor: "frozenlineColor", sheetTabColor: "sheetTabColor", selectionPolicy: "selectionPolicy", selectionUnit: "selectionUnit", zoom: "zoom", currentTheme: "currentTheme", clipBoardOptions: "clipBoardOptions", rowHeaderVisible: "rowHeaderVisible", colHeaderVisible: "colHeaderVisible", rowHeaderAutoText: "rowHeaderAutoText", colHeaderAutoText: "colHeaderAutoText", rowHeaderAutoTextIndex: "rowHeaderAutoTextIndex", colHeaderAutoTextIndex: "colHeaderAutoTextIndex", isProtected: "isProtected", showRowOutline: "showRowOutline", showColumnOutline: "showColumnOutline", selectionBackColor: "selectionBackColor", selectionBorderColor: "selectionBorderColor", defaultStyle: "defaultStyle", rowOutlineInfo: "rowOutlineInfo", columnOutlineInfo: "columnOutlineInfo", autoGenerateColumns: "autoGenerateColumns" }, queries: [{ propertyName: "columns", predicate: ColumnComponent }], usesOnChanges: true, ngImport: i0, template: `
<ng-content></ng-content>
`, isInline: true });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: WorksheetComponent, decorators: [{
type: Component,
args: [{
selector: 'gc-worksheet',
template: `
<ng-content></ng-content>
`,
}]
}], ctorParameters: function () { return []; }, propDecorators: { columns: [{
type: ContentChildren,
args: [ColumnComponent]
}], rowCount: [{
type: Input
}], colCount: [{
type: Input
}], dataSource: [{
type: Input
}], name: [{
type: Input
}], frozenColumnCount: [{
type: Input
}], frozenRowCount: [{
type: Input
}], frozenTrailingRowCount: [{
type: Input
}], frozenTrailingColumnCount: [{
type: Input
}], allowCellOverflow: [{
type: Input
}], frozenlineColor: [{
type: Input
}], sheetTabColor: [{
type: Input
}], selectionPolicy: [{
type: Input
}], selectionUnit: [{
type: Input
}], zoom: [{
type: Input
}], currentTheme: [{
type: Input
}], clipBoardOptions: [{
type: Input
}], rowHeaderVisible: [{
type: Input
}], colHeaderVisible: [{
type: Input
}], rowHeaderAutoText: [{
type: Input
}], colHeaderAutoText: [{
type: Input
}], rowHeaderAutoTextIndex: [{
type: Input
}], colHeaderAutoTextIndex: [{
type: Input
}], isProtected: [{
type: Input
}], showRowOutline: [{
type: Input
}], showColumnOutline: [{
type: Input
}], selectionBackColor: [{
type: Input
}], selectionBorderColor: [{
type: Input
}], defaultStyle: [{
type: Input
}], rowOutlineInfo: [{
type: Input
}], columnOutlineInfo: [{
type: Input
}], autoGenerateColumns: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NoZWV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy93b3Jrc2hlZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQjtBQUNoQixPQUFPLEVBRUwsU0FBUyxFQUNULGVBQWUsRUFDZixLQUFLLEdBSU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsY0FBYztBQUNkLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUMvQyxjQUFjO0FBT2QsTUFBTSxPQUFPLGtCQUFrQjtJQXNDN0I7UUFDRSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTSxVQUFVO1FBQ2YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN6QixNQUFNLE9BQU8sR0FBSSxJQUFJLENBQUMsT0FBc0MsQ0FBQztRQUM3RCxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDckIsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3JCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNyQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsZUFBZ0MsRUFBRSxLQUFhLEVBQUUsRUFBRTtnQkFDbEUsSUFBSSxlQUFlLENBQUMsU0FBUyxFQUFFO29CQUM3QixLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRTt3QkFDdEIsSUFBSSxFQUFFLGVBQWUsQ0FBQyxTQUFTO3dCQUMvQixXQUFXLEVBQUUsZUFBZSxDQUFDLFVBQVU7cUJBQ3hDLENBQUMsQ0FBQztpQkFDSjtZ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aEMsS0FBSztnQkFDVSxrQkFBa0I7c0JBQWpDLEtBQUs7Z0JBQ1Usb0JBQW9CO3NCQUFuQyxLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsY0FBYztzQkFBN0IsS0FBSztnQkFDVSxpQkFBaUI7c0JBQWhDLEtBQUs7Z0JBQ1UsbUJBQW1CO3NCQUFsQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyppbXBvcnRfYmVnaW4qL1xyXG5pbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZHJlbixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIFF1ZXJ5TGlzdCwgU2ltcGxlQ2hhbmdlcyxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuLyppbXBvcnRfZW5kKi9cclxuaW1wb3J0IHsgQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9jb2x1bW4uY29tcG9uZW50JztcclxuaW1wb3J0ICogYXMgR0MgZnJvbSAnQGdyYXBlY2l0eS9zcHJlYWQtc2hlZXRzJztcclxuLypjb2RlX2JlZ2luKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdnYy13b3Jrc2hlZXQnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgYCxcclxufSlcclxuZXhwb3J0IGNsYXNzIFdvcmtzaGVldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgcHJpdmF0ZSBzaGVldDogR0MuU3ByZWFkLlNoZWV0cy5Xb3Jrc2hlZXQ7XHJcbiAgQENvbnRlbnRDaGlsZHJlbihDb2x1bW5Db21wb25lbnQpXHJcbiAgcHVibGljIGNvbHVtbnM/OiBRdWVyeUxpc3Q8Q29sdW1uQ29tcG9uZW50PjtcclxuXHJcbiAgLy8gaW5kaWNhdGUgYWxsIGlucHV0c1xyXG4gIEBJbnB1dCgpIHB1YmxpYyByb3dDb3VudD86IG51bWJlcjtcclxuICBASW5wdXQoKSBwdWJsaWMgY29sQ291bnQ/OiBudW1iZXI7XHJcbiAgQElucHV0KCkgcHVibGljIGRhdGFTb3VyY2U6IGFueTtcclxuICBASW5wdXQoKSBwdWJsaWMgbmFtZT86IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgZnJvemVuQ29sdW1uQ291bnQ/OiBudW1iZXI7XHJcbiAgQElucHV0KCkgcHVibGljIGZyb3plblJvd0NvdW50PzogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmcm96ZW5UcmFpbGluZ1Jvd0NvdW50PzogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmcm96ZW5UcmFpbGluZ0NvbHVtbkNvdW50PzogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBhbGxvd0NlbGxPdmVyZmxvdz86IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcHVibGljIGZyb3plbmxpbmVDb2xvcj86IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgc2hlZXRUYWJDb2xvcj86IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0aW9uUG9saWN5PzogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3Rpb25Vbml0PzogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB6b29tPzogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXJyZW50VGhlbWU/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGNsaXBCb2FyZE9wdGlvbnM/OiBudW1iZXI7XHJcbiAgQElucHV0KCkgcHVibGljIHJvd0hlYWRlclZpc2libGU/OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjb2xIZWFkZXJWaXNpYmxlPzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBwdWJsaWMgcm93SGVhZGVyQXV0b1RleHQ/OiBudW1iZXI7XHJcbiAgQElucHV0KCkgcHVibGljIGNvbEhlYWRlckF1dG9UZXh0PzogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyByb3dIZWFkZXJBdXRvVGV4dEluZGV4PzogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjb2xIZWFkZXJBdXRvVGV4dEluZGV4PzogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpc1Byb3RlY3RlZD86IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcHVibGljIHNob3dSb3dPdXRsaW5lPzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBwdWJsaWMgc2hvd0NvbHVtbk91dGxpbmU/OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3Rpb25CYWNrQ29sb3I/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIHNlbGVjdGlvbkJvcmRlckNvbG9yPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkZWZhdWx0U3R5bGU/OiBHQy5TcHJlYWQuU2hlZXRzLlN0eWxlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyByb3dPdXRsaW5lSW5mbz86IGFueVtdO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjb2x1bW5PdXRsaW5lSW5mbz86IGFueVtdO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBhdXRvR2VuZXJhdGVDb2x1bW5zPzogYm9vbGVhbjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLnNoZWV0ID0gbmV3IEdDW1wiZGVmYXVsdFwiXS5TcHJlYWQuU2hlZXRzLldvcmtzaGVldCgnJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25BdHRhY2hlZCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHNoZWV0ID0gdGhpcy5zaGVldDtcclxuICAgIGNvbnN0IGNvbHVtbnMgPSAodGhpcy5jb2x1bW5zIGFzIFF1ZXJ5TGlzdDxDb2x1bW5Db21wb25lbnQ+KTtcclxuICAgIHNoZWV0LnN1c3BlbmRQYWludCgpO1xyXG4gICAgc2hlZXQuc3VzcGVuZEV2ZW50KCk7XHJcbiAgICBpZiAodGhpcy5kYXRhU291cmNlKSB7XHJcbiAgICAgIHNoZWV0LnNldERhdGFTb3VyY2UodGhpcy5kYXRhU291cmNlKTtcclxuICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW5Db21wb25lbnQ6IENvbHVtbkNvbXBvbmVudCwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGlmIChjb2x1bW5Db21wb25lbnQuZGF0YUZpZWxkKSB7XHJcbiAgICAgICAgICBzaGVldC5iaW5kQ29sdW1uKGluZGV4LCB7XHJcbiAgICAgICAgICAgIG5hbWU6IGNvbHVtbkNvbXBvbmVudC5kYXRhRmllbGQsXHJcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBjb2x1bW5Db21wb25lbnQuaGVhZGVyVGV4dCxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoY29sdW1ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHNoZWV0LnNldENvbHVtbkNvdW50KGNvbHVtbnMubGVuZ3RoKTtcclxuICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW5Db21wb25lbnQ6IENvbHVtbkNvbXBvbmVudCwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGNvbHVtbkNvbXBvbmVudC5vbkF0dGFjaGVkKHRoaXMuc2hlZXQsIGluZGV4KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBzaGVldC5yZXN1bWVFdmVudCgpO1xyXG4gICAgc2hlZXQucmVzdW1lUGFpbnQoKTtcclxuICB9XHJcbiAgcHVibGljIGdldFNoZWV0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2hlZXQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgY29uc3Qgc2hlZXQgPSB0aGlzLnNoZWV0O1xyXG4gICAgc2hlZXQuc3VzcGVuZFBhaW50KCk7XHJcbiAgICBzaGVldC5zdXNwZW5kRXZlbnQoKTtcclxuICAgIGZvciAoY29uc3QgY2hhbmdlTmFtZSBpbiBjaGFuZ2VzKSB7XHJcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gY2hhbmdlc1tjaGFuZ2VOYW1lXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIGlmIChuZXdWYWx1ZSA9PT0gbnVsbCB8fCBuZXdWYWx1ZSA9PT0gdm9pZCAwKSB7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuICAgICAgc3dpdGNoIChjaGFuZ2VOYW1lKSB7XHJcbiAgICAgICAgY2FzZSAncm93Q291bnQnOlxyXG4gICAgICAgICAgc2hlZXQuc2V0Um93Q291bnQobmV3VmFsdWUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnY29sQ291bnQnOlxyXG4gICAgICAgICAgc2hlZXQuc2V0Q29sdW1uQ291bnQobmV3VmFsdWUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnbmFtZSc6XHJcbiAgICAgICAgICBzaGVldC5uYW1lKG5ld1ZhbHVlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2Zyb3plbkNvbHVtbkNvdW50JzpcclxuICAgICAgICAgIHNoZWV0LmZyb3plbkNvbHVtbkNvdW50KG5ld1ZhbHVlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2Zyb3plblJvd0NvdW50JzpcclxuICAgICAgICAgIHNoZWV0LmZyb3plblJvd0NvdW50KG5ld1ZhbHVlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2Zyb3plblRyYWlsaW5nUm93Q291bnQnOlxyXG4gICAgICAgICAgc2hlZXQuZnJvemVuVHJhaWxpbmdSb3dDb3VudChuZXdWYWx1ZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdmcm96ZW5UcmFpbGluZ0NvbHVtbkNvdW50JzpcclxuICAgICAgICAgIHNoZWV0LmZyb3plblRyYWlsaW5nQ29sdW1uQ291bnQobmV3VmFsdWUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnc2VsZWN0aW9uUG9saWN5JzpcclxuICAgICAgICAgIHNoZWV0LnNlbGVjdGlvblBvbGljeShuZXdWYWx1ZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdzZWxlY3Rpb25Vbml0JzpcclxuICAgICAgICAgIHNoZWV0LnNlbGVjdGlvblVuaXQobmV3VmFsdWUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnem9vbSc6XHJcbiAgICAgICAgICBzaGVldC56b29tKG5ld1ZhbHVlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2N1cnJlbnRUaGVtZSc6XHJcbiAgICAgICAgICBzaGVldC5jdXJyZW50VGhlbWUobmV3VmFsdWUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnZGVmYXVsdFN0eWxlJzpcclxuICAgICAgICAgIHNoZWV0LnNldERlZmF1bHRTdHlsZShuZXdWYWx1ZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdyb3dPdXRsaW5lSW5mbyc6XHJcbiAgICAgICAgICBuZXdWYWx1ZS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgc2hlZXQucm93T3V0bGluZXMuZ3JvdXAoaXRlbS5pbmRleCwgaXRlbS5jb3VudCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHNoZWV0LnJlcGFpbnQoKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2NvbHVtbk91dGxpbmVJbmZvJzpcclxuICAgICAgICAgIG5ld1ZhbHVlLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBzaGVldC5jb2x1bW5PdXRsaW5lcy5ncm91cChpdGVtLmluZGV4LCBpdGVtLmNvdW50KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgc2hlZXQucmVwYWludCgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnc2hvd1Jvd091dGxpbmUnOlxyXG4gICAgICAgICAgc2hlZXQuc2hvd1Jvd091dGxpbmUobmV3VmFsdWUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnc2hvd0NvbHVtbk91dGxpbmUnOlxyXG4gICAgICAgICAgc2hlZXQuc2hvd0NvbHVtbk91dGxpbmUobmV3VmFsdWUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnZGF0YVNvdXJjZSc6XHJcbiAgICAgICAgICBzaGVldC5zZXREYXRhU291cmNlKG5ld1ZhbHVlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2F1dG9HZW5lcmF0ZUNvbHVtbnMnOlxyXG4gICAgICAgICAgc2hlZXRbY2hhbmdlTmFtZV0gPSBuZXdWYWx1ZTtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgKHNoZWV0Lm9wdGlvbnMgYXMgYW55KVtjaGFuZ2VOYW1lXSA9IG5ld1ZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBzaGVldC5yZXN1bWVFdmVudCgpO1xyXG4gICAgc2hlZXQucmVzdW1lUGFpbnQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAodGhpcy5jb2x1bW5zIGFzIFF1ZXJ5TGlzdDxDb2x1bW5Db21wb25lbnQ+KS5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7IHRoaXMub25BdHRhY2hlZCgpOyB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcclxuICAgIGNvbnN0IHNoZWV0ID0gdGhpcy5zaGVldDtcclxuICAgIGNvbnN0IHNwcmVhZCA9IHNoZWV0ID8gc2hlZXQuZ2V0UGFyZW50KCkgOiBudWxsO1xyXG4gICAgaWYgKHNwcmVhZCkge1xyXG4gICAgICBjb25zdCBzaGVldEluZGV4ID0gc3ByZWFkLmdldFNoZWV0SW5kZXgoc2hlZXQubmFtZSgpKTtcclxuICAgICAgaWYgKHNoZWV0SW5kZXggIT09IHZvaWQgMCkge1xyXG4gICAgICAgIHNwcmVhZC5yZW1vdmVTaGVldChzaGVldEluZGV4KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4vKmNvZGVfZW5kKi9cclxuIl19