UNPKG

systelab-components

Version:

systelab-components is a set of components that use wide accepted and adopted standard technologies like Angular and Bootstrap, as well as other popular libraries. Please read the ATTRIBUTION.md file for a complete list of dependencies.

177 lines 23.4 kB
import { Directive, Input } from '@angular/core'; import { AbstractApiComboBox } from '../abstract-api-combobox.component'; import { AbstractComboBox } from '../abstract-combobox.component'; import * as i0 from "@angular/core"; import * as i1 from "systelab-preferences"; export class KeyName { static { this.backspace = 'Backspace'; } static { this.enter = 'Enter'; } static { this.escape = 'Escape'; } static { this.tab = 'Tab'; } static { this.arrowUp = 'ArrowUp'; } static { this.arrowDown = 'ArrowDown'; } static { this.shift = 'Shift'; } } export class AutocompleteApiComboBox extends AbstractApiComboBox { constructor(myRenderer, chref, preferencesService) { super(myRenderer, chref, preferencesService); this.myRenderer = myRenderer; this.chref = chref; this.preferencesService = preferencesService; this.startsWith = ''; this.debounceTime = 350; this.withClearOption = false; } doSearch(event) { if (event.shiftKey || event.ctrlKey || event.key === KeyName.arrowUp || event.key === KeyName.arrowDown || event.key === KeyName.shift) { return; } if (event.key === KeyName.escape || event.key === KeyName.enter || event.key === KeyName.tab) { if (this.isDropdownOpened) { this.closeDropDown(); } } else { this.doSearchText(event.target?.value); } } // Overrides setDropdownHeight() { let calculatedHeight = 0; calculatedHeight += AbstractComboBox.ROW_HEIGHT * 10; this.myRenderer.setStyle(this.dropdownElement.nativeElement, 'height', calculatedHeight + 'px'); } onInputClicked(event) { event.stopPropagation(); if (!this.isDisabled) { if (!this.isDropdownOpened) { this.openDropDown(); this.doSearchText(this.description); } this.inputElement.nativeElement.focus(); } } onInputNavigate(event) { if (!this.isDisabled) { if (!this.isDropdownOpened) { this.openDropDown(); this.doSearchText(this.description); } this.chref.detectChanges(); // sets focus into the first grid cell setTimeout(() => { const firstCol = this.gridOptions.columnApi.getAllDisplayedColumns()[0]; this.gridOptions.api.setFocusedCell(0, firstCol); }, 0); } } // Overrides onCellKeyDown(e) { if (e.event.key === KeyName.enter) { e.node.setSelected(true); this.selectedItemChange.emit(e.node.data); this.closeDropDown(); this.inputElement.nativeElement.focus(); } else if (e.event.key === KeyName.backspace) { this.inputElement.nativeElement.value = this.inputElement.nativeElement.value.slice(0, -1); this.inputElement.nativeElement.focus(); } else if (e.event.key.length === 1 && e.event.key.match(/^[a-zA-Z]+|[0-9]/g)) { this.inputElement.nativeElement.value += e.event.key; this.inputElement.nativeElement.focus(); } else if (e.event.key === KeyName.tab) { this.closeDropDown(); e.event.stopPropagation(); } e.event.preventDefault(); } // Overrides onComboClicked(event) { super.onComboClicked(event); this.doSearchText(this.description); } // Overrides closeDropDown() { this.startsWith = ''; const selectedRow = this.getSelectedRow(); if (selectedRow) { this.id = selectedRow[this.getIdField()]; this.description = selectedRow[this.getDescriptionField()]; } else if (!this.id) { this.resetComboSelection(); } super.closeDropDown(); } // Overrides getRows(params) { if (this.gridOptions && this.gridOptions.api) { this.gridOptions.api.showLoadingOverlay(); const page = params.endRow / this.gridOptions.paginationPageSize; this.totalItemsLoaded = false; this.getData(page, this.gridOptions.paginationPageSize, this.startsWith) .subscribe({ next: (v) => { this.gridOptions.api.hideOverlay(); this.totalItemsLoaded = true; params.successCallback(v, this.getTotalItems()); }, error: () => { this.gridOptions.api.hideOverlay(); params.failCallback(); } }); } } doSearchText(text) { if (!this.isDropdownOpened) { this.openDropDown(); } this.startsWith = text; if (!this.startsWith || this.startsWith.length < 1) { this.resetComboSelection(); } this.refresh(null); } resetComboSelection() { this.id = undefined; this.code = undefined; this.description = undefined; this.currentSelected = undefined; if (this.gridOptions && this.gridOptions.api) { this.gridOptions.api.deselectAll(); } this.selectedItemChange.emit(undefined); } openDropDown() { this.showDropDown(); jQuery('#' + this.comboId) .dropdown('toggle'); this.isDropdownOpened = true; } inputIsEmpty() { return !this.input || this.input.nativeElement?.value.length === 0; } clearText(event) { this.input.nativeElement.value = ''; this.doSearchText(''); } onEnterDoSelect(event) { if (this.isDropdownOpened && this.gridOptions.api.getRenderedNodes().length > 0) { this.gridOptions.api.getDisplayedRowAtIndex(0).selectThisNode(true); this.selectedItemChange.emit(this.gridOptions.api.getDisplayedRowAtIndex(0).data); } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AutocompleteApiComboBox, deps: [{ token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.PreferencesService }], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.9", type: AutocompleteApiComboBox, inputs: { debounceTime: "debounceTime", withClearOption: "withClearOption" }, usesInheritance: true, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AutocompleteApiComboBox, decorators: [{ type: Directive }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.PreferencesService }], propDecorators: { debounceTime: [{ type: Input }], withClearOption: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWFwaS1jb21ib2JveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zeXN0ZWxhYi1jb21wb25lbnRzL3NyYy9saWIvY29tYm9ib3gvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS1hcGktY29tYm9ib3guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUcvRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7O0FBS2xFLE1BQU0sT0FBTyxPQUFPO2FBQ0gsY0FBUyxHQUFHLFdBQVcsQ0FBQzthQUN4QixVQUFLLEdBQUcsT0FBTyxDQUFDO2FBQ2hCLFdBQU0sR0FBRyxRQUFRLENBQUM7YUFDbEIsUUFBRyxHQUFHLEtBQUssQ0FBQzthQUNaLFlBQU8sR0FBRyxTQUFTLENBQUM7YUFDcEIsY0FBUyxHQUFHLFdBQVcsQ0FBQzthQUN4QixVQUFLLEdBQUcsT0FBTyxDQUFDOztBQUlqQyxNQUFNLE9BQWdCLHVCQUEyQixTQUFRLG1CQUFzQjtJQU05RSxZQUNpQixVQUFxQixFQUNyQixLQUF3QixFQUN4QixrQkFBdUM7UUFFdkQsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUo3QixlQUFVLEdBQVYsVUFBVSxDQUFXO1FBQ3JCLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBcUI7UUFQeEMsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixpQkFBWSxHQUFXLEdBQUcsQ0FBQztRQUMzQixvQkFBZSxHQUFZLEtBQUssQ0FBQztJQVFqRCxDQUFDO0lBRWUsUUFBUSxDQUFDLEtB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QUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVNLFNBQVMsQ0FBQyxLQUFpQjtRQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVNLGVBQWUsQ0FBQyxLQUFvQjtRQUMxQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDaEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbEY7SUFDRixDQUFDOzhHQXJLb0IsdUJBQXVCO2tHQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBRDVDLFNBQVM7K0lBSU8sWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxlQUFlO3NCQUE5QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgSW5wdXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWdSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XG5pbXBvcnQge0lHZXRSb3dzUGFyYW1zIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgQWJzdHJhY3RBcGlDb21ib0JveCB9IGZyb20gJy4uL2Fic3RyYWN0LWFwaS1jb21ib2JveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb21ib0JveCB9IGZyb20gJy4uL2Fic3RyYWN0LWNvbWJvYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tICdzeXN0ZWxhYi1wcmVmZXJlbmNlcyc7XG5cbmRlY2xhcmUgY29uc3QgalF1ZXJ5OiBhbnk7XG5cbmV4cG9ydCBjbGFzcyBLZXlOYW1lIHtcblx0c3RhdGljIHJlYWRvbmx5IGJhY2tzcGFjZSA9ICdCYWNrc3BhY2UnO1xuXHRzdGF0aWMgcmVhZG9ubHkgZW50ZXIgPSAnRW50ZXInO1xuXHRzdGF0aWMgcmVhZG9ubHkgZXNjYXBlID0gJ0VzY2FwZSc7XG5cdHN0YXRpYyByZWFkb25seSB0YWIgPSAnVGFiJztcblx0c3RhdGljIHJlYWRvbmx5IGFycm93VXAgPSAnQXJyb3dVcCc7XG5cdHN0YXRpYyByZWFkb25seSBhcnJvd0Rvd24gPSAnQXJyb3dEb3duJztcblx0c3RhdGljIHJlYWRvbmx5IHNoaWZ0ID0gJ1NoaWZ0Jztcbn1cblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXV0b2NvbXBsZXRlQXBpQ29tYm9Cb3g8VD4gZXh0ZW5kcyBBYnN0cmFjdEFwaUNvbWJvQm94PFQ+IGltcGxlbWVudHMgQWdSZW5kZXJlckNvbXBvbmVudCB7XG5cblx0cHVibGljIG92ZXJyaWRlIHN0YXJ0c1dpdGggPSAnJztcblx0QElucHV0KCkgcHVibGljIGRlYm91bmNlVGltZTogbnVtYmVyID0gMzUwO1xuXHRASW5wdXQoKSBwdWJsaWMgd2l0aENsZWFyT3B0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0cHVibGljIG92ZXJyaWRlIG15UmVuZGVyZXI6IFJlbmRlcmVyMixcblx0XHRwdWJsaWMgb3ZlcnJpZGUgY2hyZWY6IENoYW5nZURldGVjdG9yUmVmLFxuXHRcdHB1YmxpYyBvdmVycmlkZSBwcmVmZXJlbmNlc1NlcnZpY2U/OiBQcmVmZXJlbmNlc1NlcnZpY2Vcblx0KSB7XG5cdFx0c3VwZXIobXlSZW5kZXJlciwgY2hyZWYsIHByZWZlcmVuY2VzU2VydmljZSk7XG5cdH1cblxuXHRwdWJsaWMgb3ZlcnJpZGUgZG9TZWFyY2goZXZlbnQ6IGFueSk6IHZvaWQge1xuXHRcdGlmIChldmVudC5zaGlmdEtleSB8fCBldmVudC5jdHJsS2V5IHx8IGV2ZW50LmtleSA9PT0gS2V5TmFtZS5hcnJvd1VwIHx8IGV2ZW50LmtleSA9PT0gS2V5TmFtZS5hcnJvd0Rvd24gfHwgZXZlbnQua2V5ID09PSBLZXlOYW1lLnNoaWZ0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmIChldmVudC5rZXkgPT09IEtleU5hbWUuZXNjYXBlIHx8IGV2ZW50LmtleSA9PT0gS2V5TmFtZS5lbnRlciB8fCBldmVudC5rZXkgPT09IEtleU5hbWUudGFiKSB7XG5cdFx0XHRpZiAodGhpcy5pc0Ryb3Bkb3duT3BlbmVkKSB7XG5cdFx0XHRcdHRoaXMuY2xvc2VEcm9wRG93bigpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmRvU2VhcmNoVGV4dChldmVudC50YXJnZXQ/LnZhbHVlKTtcblx0XHR9XG5cdH1cblxuXHQvLyBPdmVycmlkZXNcblx0cHVibGljIG92ZXJyaWRlIHNldERyb3Bkb3duSGVpZ2h0KCk6IHZvaWQge1xuXHRcdGxldCBjYWxjdWxhdGVkSGVpZ2h0ID0gMDtcblxuXHRcdGNhbGN1bGF0ZWRIZWlnaHQgKz0gQWJzdHJhY3RDb21ib0JveC5ST1dfSEVJR0hUICogMTA7XG5cdFx0dGhpcy5teVJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZHJvcGRvd25FbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdoZWlnaHQnLCBjYWxjdWxhdGVkSGVpZ2h0ICsgJ3B4Jyk7XG5cdH1cblxuXHRwdWJsaWMgb25JbnB1dENsaWNrZWQoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRpZiAoIXRoaXMuaXNEaXNhYmxlZCkge1xuXHRcdFx0aWYgKCF0aGlzLmlzRHJvcGRvd25PcGVuZWQpIHtcblx0XHRcdFx0dGhpcy5vcGVuRHJvcERvd24oKTtcblx0XHRcdFx0dGhpcy5kb1NlYXJjaFRleHQodGhpcy5kZXNjcmlwdGlvbik7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIG9uSW5wdXROYXZpZ2F0ZShldmVudCk6IHZvaWQge1xuXHRcdGlmICghdGhpcy5pc0Rpc2FibGVkKSB7XG5cdFx0XHRpZiAoIXRoaXMuaXNEcm9wZG93bk9wZW5lZCkge1xuXHRcdFx0XHR0aGlzLm9wZW5Ecm9wRG93bigpO1xuXHRcdFx0XHR0aGlzLmRvU2VhcmNoVGV4dCh0aGlzLmRlc2NyaXB0aW9uKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuY2hyZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdFx0Ly8gc2V0cyBmb2N1cyBpbnRvIHRoZSBmaXJzdCBncmlkIGNlbGxcblx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBmaXJzdENvbCA9IHRoaXMuZ3JpZE9wdGlvbnMuY29sdW1uQXBpLmdldEFsbERpc3BsYXllZENvbHVtbnMoKVswXTtcblx0XHRcdFx0dGhpcy5ncmlkT3B0aW9ucy5hcGkuc2V0Rm9jdXNlZENlbGwoMCwgZmlyc3RDb2wpO1xuXHRcdFx0fSwgMCk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gT3ZlcnJpZGVzXG5cdHB1YmxpYyBvdmVycmlkZSBvbkNlbGxLZXlEb3duKGU6IGFueSk6IHZvaWQge1xuXHRcdGlmIChlLmV2ZW50LmtleSA9PT0gS2V5TmFtZS5lbnRlcikge1xuXHRcdFx0ZS5ub2RlLnNldFNlbGVjdGVkKHRydWUpO1xuXHRcdFx0dGhpcy5zZWxlY3RlZEl0ZW1DaGFuZ2UuZW1pdChlLm5vZGUuZGF0YSk7XG5cdFx0XHR0aGlzLmNsb3NlRHJvcERvd24oKTtcblx0XHRcdHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcblx0XHR9IGVsc2UgaWYgKGUuZXZlbnQua2V5ID09PSBLZXlOYW1lLmJhY2tzcGFjZSkge1xuXHRcdFx0dGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUuc2xpY2UoMCwgLTEpO1xuXHRcdFx0dGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXHRcdH0gZWxzZSBpZiAoZS5ldmVudC5rZXkubGVuZ3RoID09PSAxICYmIGUuZXZlbnQua2V5Lm1hdGNoKC9eW2EtekEtWl0rfFswLTldL2cpKSB7XG5cdFx0XHR0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlICs9IGUuZXZlbnQua2V5O1xuXHRcdFx0dGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXHRcdH0gZWxzZSBpZiAoZS5ldmVudC5rZXkgPT09IEtleU5hbWUudGFiKSB7XG5cdFx0XHR0aGlzLmNsb3NlRHJvcERvd24oKTtcblx0XHRcdGUuZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0fVxuXHRcdGUuZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0fVxuXG5cdC8vIE92ZXJyaWRlc1xuXHRwdWJsaWMgb3ZlcnJpZGUgb25Db21ib0NsaWNrZWQoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcblx0XHRzdXBlci5vbkNvbWJvQ2xpY2tlZChldmVudCk7XG5cdFx0dGhpcy5kb1NlYXJjaFRleHQodGhpcy5kZXNjcmlwdGlvbik7XG5cdH1cblxuXHQvLyBPdmVycmlkZXNcblx0cHVibGljIG92ZXJyaWRlIGNsb3NlRHJvcERvd24oKTogdm9pZCB7XG5cdFx0dGhpcy5zdGFydHNXaXRoID0gJyc7XG5cdFx0Y29uc3Qgc2VsZWN0ZWRSb3c6IFQgPSB0aGlzLmdldFNlbGVjdGVkUm93KCk7XG5cdFx0aWYgKHNlbGVjdGVkUm93KSB7XG5cdFx0XHR0aGlzLmlkID0gc2VsZWN0ZWRSb3dbdGhpcy5nZXRJZEZpZWxkKCldO1xuXHRcdFx0dGhpcy5kZXNjcmlwdGlvbiA9IHNlbGVjdGVkUm93W3RoaXMuZ2V0RGVzY3JpcHRpb25GaWVsZCgpXTtcblx0XHR9IGVsc2UgaWYgKCF0aGlzLmlkKSB7XG5cdFx0XHR0aGlzLnJlc2V0Q29tYm9TZWxlY3Rpb24oKTtcblx0XHR9XG5cdFx0c3VwZXIuY2xvc2VEcm9wRG93bigpO1xuXHR9XG5cblx0Ly8gT3ZlcnJpZGVzXG5cdHB1YmxpYyBvdmVycmlkZSBnZXRSb3dzKHBhcmFtczogSUdldFJvd3NQYXJhbXMpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5ncmlkT3B0aW9ucyAmJiB0aGlzLmdyaWRPcHRpb25zLmFwaSkge1xuXHRcdFx0dGhpcy5ncmlkT3B0aW9ucy5hcGkuc2hvd0xvYWRpbmdPdmVybGF5KCk7XG5cdFx0XHRjb25zdCBwYWdlOiBudW1iZXIgPSBwYXJhbXMuZW5kUm93IC8gdGhpcy5ncmlkT3B0aW9ucy5wYWdpbmF0aW9uUGFnZVNpemU7XG5cdFx0XHR0aGlzLnRvdGFsSXRlbXNMb2FkZWQgPSBmYWxzZTtcblx0XHRcdHRoaXMuZ2V0RGF0YShwYWdlLCB0aGlzLmdyaWRPcHRpb25zLnBhZ2luYXRpb25QYWdlU2l6ZSwgdGhpcy5zdGFydHNXaXRoKVxuXHRcdFx0XHQuc3Vic2NyaWJlKHtcblx0XHRcdFx0XHRcdG5leHQ6ICAodjogQXJyYXk8VD4pID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5ncmlkT3B0aW9ucy5hcGkuaGlkZU92ZXJsYXkoKTtcblx0XHRcdFx0XHRcdFx0dGhpcy50b3RhbEl0ZW1zTG9hZGVkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0cGFyYW1zLnN1Y2Nlc3NDYWxsYmFjayh2LCB0aGlzLmdldFRvdGFsSXRlbXMoKSk7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0ZXJyb3I6ICgpID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5ncmlkT3B0aW9ucy5hcGkuaGlkZU92ZXJsYXkoKTtcblx0XHRcdFx0XHRcdFx0cGFyYW1zLmZhaWxDYWxsYmFjaygpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHRwcm90ZWN0ZWQgZG9TZWFyY2hUZXh0KHRleHQ6IHN0cmluZyk6IHZvaWQge1xuXHRcdGlmICghdGhpcy5pc0Ryb3Bkb3duT3BlbmVkKSB7XG5cdFx0XHR0aGlzLm9wZW5Ecm9wRG93bigpO1xuXHRcdH1cblx0XHR0aGlzLnN0YXJ0c1dpdGggPSB0ZXh0O1xuXHRcdGlmICghdGhpcy5zdGFydHNXaXRoIHx8IHRoaXMuc3RhcnRzV2l0aC5sZW5ndGggPCAxKSB7XG5cdFx0XHR0aGlzLnJlc2V0Q29tYm9TZWxlY3Rpb24oKTtcblx0XHR9XG5cdFx0dGhpcy5yZWZyZXNoKG51bGwpO1xuXHR9XG5cblx0cHJvdGVjdGVkIHJlc2V0Q29tYm9TZWxlY3Rpb24oKTogdm9pZCB7XG5cdFx0dGhpcy5pZCA9IHVuZGVmaW5lZDtcblx0XHR0aGlzLmNvZGUgPSB1bmRlZmluZWQ7XG5cdFx0dGhpcy5kZXNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcblx0XHR0aGlzLmN1cnJlbnRTZWxlY3RlZCA9IHVuZGVmaW5lZDtcblx0XHRpZiAodGhpcy5ncmlkT3B0aW9ucyAmJiB0aGlzLmdyaWRPcHRpb25zLmFwaSkge1xuXHRcdFx0dGhpcy5ncmlkT3B0aW9ucy5hcGkuZGVzZWxlY3RBbGwoKTtcblx0XHR9XG5cdFx0dGhpcy5zZWxlY3RlZEl0ZW1DaGFuZ2UuZW1pdCh1bmRlZmluZWQpO1xuXHR9XG5cblx0cHJpdmF0ZSBvcGVuRHJvcERvd24oKTogdm9pZCB7XG5cdFx0dGhpcy5zaG93RHJvcERvd24oKTtcblx0XHRqUXVlcnkoJyMnICsgdGhpcy5jb21ib0lkKVxuXHRcdFx0LmRyb3Bkb3duKCd0b2dnbGUnKTtcblx0XHR0aGlzLmlzRHJvcGRvd25PcGVuZWQgPSB0cnVlO1xuXHR9XG5cblx0cHVibGljIGlucHV0SXNFbXB0eSgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gIXRoaXMuaW5wdXQgfHwgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50Py52YWx1ZS5sZW5ndGggPT09IDA7XG5cdH1cblxuXHRwdWJsaWMgY2xlYXJUZXh0KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG5cdFx0dGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG5cdFx0dGhpcy5kb1NlYXJjaFRleHQoJycpO1xuXHR9XG5cblx0cHVibGljIG9uRW50ZXJEb1NlbGVjdChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuXHRcdGlmICh0aGlzLmlzRHJvcGRvd25PcGVuZWQgJiYgdGhpcy5ncmlkT3B0aW9ucy5hcGkuZ2V0UmVuZGVyZWROb2RlcygpLmxlbmd0aCA+IDApIHtcblx0XHRcdHRoaXMuZ3JpZE9wdGlvbnMuYXBpLmdldERpc3BsYXllZFJvd0F0SW5kZXgoMCkuc2VsZWN0VGhpc05vZGUodHJ1ZSk7XG5cdFx0XHR0aGlzLnNlbGVjdGVkSXRlbUNoYW5nZS5lbWl0KHRoaXMuZ3JpZE9wdGlvbnMuYXBpLmdldERpc3BsYXllZFJvd0F0SW5kZXgoMCkuZGF0YSk7XG5cdFx0fVxuXHR9XG5cbn1cbiJdfQ==