@duoduo-oba/ng-devui
Version:
DevUI components based on Angular
255 lines • 23.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: search.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { fromEvent } from 'rxjs';
import { ChangeDetectionStrategy, Component, Input, Output, forwardRef, EventEmitter, ViewChild, ElementRef, Renderer2, ChangeDetectorRef } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { map, filter, debounceTime } from 'rxjs/operators';
import { I18nService } from '@duoduo-oba/ng-devui/i18n';
export class SearchComponent {
/**
* @param {?} renderer
* @param {?} i18n
* @param {?} cdr
*/
constructor(renderer, i18n, cdr) {
this.renderer = renderer;
this.i18n = i18n;
this.cdr = cdr;
this.maxLength = Number.MAX_SAFE_INTEGER;
this.isKeyupSearch = false;
this.delay = 300;
this.searchFn = new EventEmitter();
this.onChange = (/**
* @param {?} _
* @return {?}
*/
(_) => null);
this.onTouch = (/**
* @return {?}
*/
() => null);
}
/**
* @return {?}
*/
ngOnInit() {
this.setI18nText();
}
/**
* @param {?} fn
* @return {?}
*/
registerOnChange(fn) {
this.onChange = fn;
}
/**
* @param {?} fn
* @return {?}
*/
registerOnTouched(fn) {
this.onTouch = fn;
}
/**
* @param {?=} value
* @return {?}
*/
writeValue(value = '') {
this.renderer.setProperty(this.filterInputElement.nativeElement, 'value', value);
this.renderClearIcon();
}
/**
* @return {?}
*/
setI18nText() {
this.i18nCommonText = this.i18n.getI18nText().common;
this.i18nSubscription = this.i18n.langChange().subscribe((/**
* @param {?} data
* @return {?}
*/
(data) => {
this.i18nCommonText = data.common;
this.cdr.markForCheck();
}));
}
/**
* @return {?}
*/
clearText() {
this.renderer.setProperty(this.filterInputElement.nativeElement, 'value', '');
if (this.onChange) {
this.onChange('');
}
this.searchFn.emit('');
this.filterInputElement.nativeElement.focus();
this.renderClearIcon();
}
/**
* @param {?} value
* @param {?=} event
* @return {?}
*/
inputChange(value, event) {
this.renderClearIcon();
// 此函数不能删除,需要给filterInput.value赋值,从而控制clear的显隐。因为registerFilterChange对clear的显隐控制不起作用。
}
/**
* @param {?} term
* @return {?}
*/
keyupEnter(term) {
this.searchFn.emit(term);
}
/**
* @return {?}
*/
registerFilterChange() {
this.subscription = fromEvent(this.filterInputElement.nativeElement, 'input')
.pipe(map((/**
* @param {?} e
* @return {?}
*/
(e) => e.target.value)), filter((/**
* @param {?} term
* @return {?}
*/
term => true)), debounceTime(this.delay)).subscribe((/**
* @param {?} value
* @return {?}
*/
value => {
this.onChange(value);
if (this.isKeyupSearch) {
this.searchFn.emit(value);
}
}));
}
/**
* @return {?}
*/
ngAfterViewInit() {
this.registerFilterChange();
this.renderClearIcon();
}
/**
* @return {?}
*/
renderClearIcon() {
if (this.filterInputElement.nativeElement.value && this.lineElement && this.clearIconElement) {
this.renderer.setStyle(this.lineElement.nativeElement, 'display', 'block');
this.renderer.setStyle(this.clearIconElement.nativeElement, 'display', 'block');
}
else if (this.lineElement && this.clearIconElement) {
this.renderer.setStyle(this.lineElement.nativeElement, 'display', 'none');
this.renderer.setStyle(this.clearIconElement.nativeElement, 'display', 'none');
}
}
/**
* @return {?}
*/
ngOnDestroy() {
if (this.subscription) {
this.subscription.unsubscribe();
}
if (this.i18nSubscription) {
this.i18nSubscription.unsubscribe();
}
}
}
SearchComponent.decorators = [
{ type: Component, args: [{
selector: 'd-search',
template: "<div class=\"devui-search\">\r\n <input\r\n #filterInput\r\n (keyup.enter)=\"keyupEnter(filterInput.value)\"\r\n [placeholder]=\"placeholder || i18nCommonText?.searchPlaceholder\"\r\n [ngClass]=\"size ? 'devui-input-' + size : ''\"\r\n (change)=\"inputChange(filterInput.value, $event)\"\r\n (keyup)=\"inputChange(filterInput.value, $event)\"\r\n [attr.maxlength]=\"maxLength\"\r\n type=\"text\"\r\n class=\"devui-input\"\r\n [ngClass]=\"size ? 'devui-input-' + size : ''\"\r\n />\r\n <span class=\"devui-search-icon\" [ngClass]=\"size ? 'devui-search-icon-' + size : ''\" (click)=\"keyupEnter(filterInput.value)\">\r\n <svg\r\n class=\"svg-icon-search\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n width=\"14px\"\r\n height=\"14px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n >\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <path\r\n d=\"M12.902261,10.765041 L15.5632031,13.425983 C16.1489895,14.0117695 16.1489895,14.961517 15.5632031,15.5473034 C14.9774166,16.1330898 14.0276691,16.1330898 13.4418827,15.5473034 L10.7844126,12.8898333 C9.69325562,13.5923888 8.39422915,14 7,14 C3.13400675,14 0,10.8659932 0,7 C0,3.13400675 3.13400675,0 7,0 C10.8659932,0 14,3.13400675 14,7 C14,8.38598771 13.5971935,9.67789492 12.902261,10.765041 L12.902261,10.765041 Z M7,12 C9.76142375,12 12,9.76142375 12,7 C12,4.23857625 9.76142375,2 7,2 C4.23857625,2 2,4.23857625 2,7 C2,9.76142375 4.23857625,12 7,12 Z\"\r\n id=\"Combined-Shape-Copy-97\"\r\n fill-rule=\"nonzero\"\r\n />\r\n </g>\r\n </svg>\r\n </span>\r\n <span #line class=\"devui-serach-line\" [ngClass]=\"size ? 'devui-serach-line-' + size : ''\"> </span>\r\n <span #clearIcon class=\"devui-search-clear\" [ngClass]=\"size ? 'devui-search-clear-' + size : ''\" (click)=\"clearText()\">\r\n <svg\r\n class=\"svg-icon-clear\"\r\n width=\"10px\"\r\n height=\"10px\"\r\n viewBox=\"0 0 10 10\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <g transform=\"translate(-1546.000000, -432.000000)\">\r\n <polygon\r\n id=\"Combined-Shape-Copy-60\"\r\n points=\"1552.36396 436.949747 1555.89949 433.414214 1554.48528 432 1550.94975 435.535534 1547.41421 432 1546 433.414214 1549.53553 436.949747 1546 440.485281 1547.41421 441.899495 1550.94975 438.363961 1554.48528 441.899495 1555.89949 440.485281\"\r\n ></polygon>\r\n </g>\r\n </g>\r\n </svg>\r\n </span>\r\n</div>\r\n",
exportAs: 'search',
changeDetection: ChangeDetectionStrategy.OnPush,
providers: [{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef((/**
* @return {?}
*/
() => SearchComponent)),
multi: true
}],
styles: ["svg.svg-icon-clear>g>g,svg.svg-icon-search>g>path{fill:#252b3a}:host{display:inline-block}.devui-search{position:relative}.devui-search .devui-input{height:32px;padding:5px 60px 5px 12px;font-size:14px;line-height:1.42857143;text-overflow:ellipsis}.devui-search .devui-input-sm{height:30px;padding:5px 49px 5px 10px;font-size:12px;line-height:1.5}.devui-search .devui-input-lg{height:46px;padding:10px 71px 10px 16px;font-size:18px;line-height:1.3333333}.devui-search .icon{cursor:pointer}.devui-search .devui-search-icon{position:absolute;width:auto;pointer-events:all;cursor:pointer;height:100%;line-height:32px;padding:3px 10px;top:0;right:0;z-index:2;display:block;text-align:center}.devui-search .devui-search-icon>svg{height:14px;width:14px}.devui-search .devui-search-icon-sm{width:30px;height:30px;line-height:30px;padding:1px 10px}.devui-search .devui-search-icon-sm>svg{height:12px;width:12px}.devui-search .devui-search-icon-lg{width:46px;height:46px;line-height:46px}.devui-search .devui-search-icon-lg>svg{height:18px;width:18px}.devui-search .devui-search-clear{position:absolute;width:auto;top:0;right:32px;padding:1px 10px;pointer-events:all;cursor:pointer;height:100%;line-height:32px;font-size:14px;z-index:2}.devui-search .devui-search-clear-sm{right:30px;line-height:30px;padding:0 8px}.devui-search .devui-search-clear-lg{right:46px;line-height:46px;padding:0 10px}.devui-search .devui-serach-line{border-color:#adb0b8;position:absolute;right:32px;height:70%;top:15%;width:1px;border-left-width:1px;border-left-style:solid;line-height:32px}.devui-search .devui-serach-line-sm{line-height:30px;right:30px}.devui-search .devui-serach-line-lg{line-height:46px;right:46px}"]
}] }
];
/** @nocollapse */
SearchComponent.ctorParameters = () => [
{ type: Renderer2 },
{ type: I18nService },
{ type: ChangeDetectorRef }
];
SearchComponent.propDecorators = {
size: [{ type: Input }],
placeholder: [{ type: Input }],
maxLength: [{ type: Input }],
isKeyupSearch: [{ type: Input }],
delay: [{ type: Input }],
searchFn: [{ type: Output }],
filterInputElement: [{ type: ViewChild, args: ['filterInput', { static: true },] }],
lineElement: [{ type: ViewChild, args: ['line', { static: true },] }],
clearIconElement: [{ type: ViewChild, args: ['clearIcon', { static: true },] }]
};
if (false) {
/**
* 【可选】下拉选框尺寸
* @type {?}
*/
SearchComponent.prototype.size;
/**
* 【可选】下拉默认显示文字
* @type {?}
*/
SearchComponent.prototype.placeholder;
/** @type {?} */
SearchComponent.prototype.maxLength;
/** @type {?} */
SearchComponent.prototype.isKeyupSearch;
/** @type {?} */
SearchComponent.prototype.delay;
/** @type {?} */
SearchComponent.prototype.searchFn;
/** @type {?} */
SearchComponent.prototype.filterInputElement;
/** @type {?} */
SearchComponent.prototype.lineElement;
/** @type {?} */
SearchComponent.prototype.clearIconElement;
/** @type {?} */
SearchComponent.prototype.i18nCommonText;
/** @type {?} */
SearchComponent.prototype.i18nSubscription;
/**
* @type {?}
* @private
*/
SearchComponent.prototype.subscription;
/**
* @type {?}
* @private
*/
SearchComponent.prototype.onChange;
/**
* @type {?}
* @private
*/
SearchComponent.prototype.onTouch;
/**
* @type {?}
* @private
*/
SearchComponent.prototype.renderer;
/**
* @type {?}
* @private
*/
SearchComponent.prototype.i18n;
/**
* @type {?}
* @private
*/
SearchComponent.prototype.cdr;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWRldnVpL3NlYXJjaC8iLCJzb3VyY2VzIjpbInNlYXJjaC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFpQixNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFxQixLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFDdEYsWUFBWSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsR0FBRyxFQUFHLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQWMzRCxNQUFNLE9BQU8sZUFBZTs7Ozs7O0lBc0IxQixZQUFvQixRQUFtQixFQUFVLElBQWlCLEVBQVUsR0FBc0I7UUFBOUUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFVLFNBQUksR0FBSixJQUFJLENBQWE7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQWJ6RixjQUFTLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDO1FBQ3BDLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLFVBQUssR0FBRyxHQUFHLENBQUM7UUFDWCxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQU94QyxhQUFROzs7O1FBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBQztRQUM1QixZQUFPOzs7UUFBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUM7SUFHN0IsQ0FBQzs7OztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FB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QUFLO3dCQUNMLEtBQUs7NEJBQ0wsS0FBSztvQkFDTCxLQUFLO3VCQUNMLE1BQU07aUNBQ04sU0FBUyxTQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7MEJBQ3pDLFNBQVMsU0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOytCQUNsQyxTQUFTLFNBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTs7Ozs7OztJQVh4QywrQkFBZ0M7Ozs7O0lBSWhDLHNDQUE2Qjs7SUFDN0Isb0NBQTZDOztJQUM3Qyx3Q0FBK0I7O0lBQy9CLGdDQUFxQjs7SUFDckIsbUNBQWdEOztJQUNoRCw2Q0FBMkU7O0lBQzNFLHNDQUE2RDs7SUFDN0QsMkNBQXVFOztJQUN2RSx5Q0FBd0M7O0lBQ3hDLDJDQUErQjs7Ozs7SUFDL0IsdUNBQW1DOzs7OztJQUNuQyxtQ0FBb0M7Ozs7O0lBQ3BDLGtDQUE2Qjs7Ozs7SUFFakIsbUNBQTJCOzs7OztJQUFFLCtCQUF5Qjs7Ozs7SUFBRSw4QkFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmcm9tRXZlbnQsIFN1YnNjcmlwdGlvbiAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIElucHV0LCBPdXRwdXQsIGZvcndhcmRSZWYsIEFmdGVyVmlld0luaXQsXHJcbiAgIEV2ZW50RW1pdHRlciwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBSZW5kZXJlcjIsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgbWFwICwgZmlsdGVyLCBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEkxOG5TZXJ2aWNlLCBJMThuSW50ZXJmYWNlIH0gZnJvbSAnbmctZGV2dWkvaTE4bic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2Qtc2VhcmNoJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2guY29tcG9uZW50LnNjc3MnXSxcclxuICBleHBvcnRBczogJ3NlYXJjaCcsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbe1xyXG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTZWFyY2hDb21wb25lbnQpLFxyXG4gICAgbXVsdGk6IHRydWVcclxuICB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VhcmNoQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuICAvKipcclxuICAgKiDjgJDlj6/pgInjgJHkuIvmi4npgInmoYblsLrlr7hcclxuICAgKi9cclxuICBASW5wdXQoKSBzaXplOiAnJyB8ICdzbScgfCAnbGcnO1xyXG4gIC8qKlxyXG4gICAqIOOAkOWPr+mAieOAkeS4i+aLiem7mOiupOaYvuekuuaWh+Wtl1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbWF4TGVuZ3RoID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XHJcbiAgQElucHV0KCkgaXNLZXl1cFNlYXJjaCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRlbGF5ID0gMzAwO1xyXG4gIEBPdXRwdXQoKSBzZWFyY2hGbiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbHRlcklucHV0JywgeyBzdGF0aWM6IHRydWUgfSkgZmlsdGVySW5wdXRFbGVtZW50OiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2xpbmUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBsaW5lRWxlbWVudDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdjbGVhckljb24nLCB7IHN0YXRpYzogdHJ1ZSB9KSBjbGVhckljb25FbGVtZW50OiBFbGVtZW50UmVmO1xyXG4gIGkxOG5Db21tb25UZXh0OiBJMThuSW50ZXJmYWNlWydjb21tb24nXTtcclxuICBpMThuU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIG9uQ2hhbmdlID0gKF86IGFueSkgPT4gbnVsbDtcclxuICBwcml2YXRlIG9uVG91Y2ggPSAoKSA9PiBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgaTE4bjogSTE4blNlcnZpY2UsIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnNldEkxOG5UZXh0KCk7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55ID0gJycpOiB2b2lkIHtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5maWx0ZXJJbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgdmFsdWUpO1xyXG4gICAgdGhpcy5yZW5kZXJDbGVhckljb24oKTtcclxuICB9XHJcblxyXG4gIHNldEkxOG5UZXh0KCkge1xyXG4gICAgdGhpcy5pMThuQ29tbW9uVGV4dCA9IHRoaXMuaTE4bi5nZXRJMThuVGV4dCgpLmNvbW1vbjtcclxuICAgIHRoaXMuaTE4blN1YnNjcmlwdGlvbiA9IHRoaXMuaTE4bi5sYW5nQ2hhbmdlKCkuc3Vic2NyaWJlKChkYXRhKSA9PiB7XHJcbiAgICAgIHRoaXMuaTE4bkNvbW1vblRleHQgPSBkYXRhLmNvbW1vbjtcclxuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsZWFyVGV4dCgpIHtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5maWx0ZXJJbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgJycpO1xyXG4gICAgaWYgKCB0aGlzLm9uQ2hhbmdlKSB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSgnJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlYXJjaEZuLmVtaXQoJycpO1xyXG4gICAgdGhpcy5maWx0ZXJJbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgdGhpcy5yZW5kZXJDbGVhckljb24oKTtcclxuICB9XHJcblxyXG4gIGlucHV0Q2hhbmdlKHZhbHVlLCBldmVudD8pIHtcclxuICAgIHRoaXMucmVuZGVyQ2xlYXJJY29uKCk7XHJcbiAgICAvLyDmraTlh73mlbDkuI3og73liKDpmaTvvIzpnIDopoHnu5lmaWx0ZXJJbnB1dC52YWx1Zei1i+WAvO+8jOS7juiAjOaOp+WItmNsZWFy55qE5pi+6ZqQ44CC5Zug5Li6cmVnaXN0ZXJGaWx0ZXJDaGFuZ2Xlr7ljbGVhcueahOaYvumakOaOp+WItuS4jei1t+S9nOeUqOOAglxyXG4gIH1cclxuXHJcbiAga2V5dXBFbnRlcih0ZXJtKSB7XHJcbiAgICB0aGlzLnNlYXJjaEZuLmVtaXQodGVybSk7XHJcbiAgfVxyXG5cclxuICByZWdpc3RlckZpbHRlckNoYW5nZSgpIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KHRoaXMuZmlsdGVySW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdpbnB1dCcpXHJcbiAgICAgLnBpcGUoXHJcbiAgICAgIG1hcCgoZTogYW55KSA9PiBlLnRhcmdldC52YWx1ZSksXHJcbiAgICAgIGZpbHRlcih0ZXJtID0+IHRydWUpLFxyXG4gICAgICBkZWJvdW5jZVRpbWUodGhpcy5kZWxheSlcclxuICAgICApLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNLZXl1cFNlYXJjaCkge1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hGbi5lbWl0KHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5yZWdpc3RlckZpbHRlckNoYW5nZSgpO1xyXG4gICAgdGhpcy5yZW5kZXJDbGVhckljb24oKTtcclxuICB9XHJcblxyXG4gIHJlbmRlckNsZWFySWNvbigpIHtcclxuICAgIGlmICh0aGlzLmZpbHRlcklucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlICYmIHRoaXMubGluZUVsZW1lbnQgJiYgdGhpcy5jbGVhckljb25FbGVtZW50KSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5saW5lRWxlbWVudC5uYXRpdmVFbGVtZW50LCAnZGlzcGxheScsICdibG9jaycpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuY2xlYXJJY29uRWxlbWVudC5uYXRpdmVFbGVtZW50LCAnZGlzcGxheScsICdibG9jaycpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmxpbmVFbGVtZW50ICYmIHRoaXMuY2xlYXJJY29uRWxlbWVudCkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMubGluZUVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2Rpc3BsYXknLCAnbm9uZScpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuY2xlYXJJY29uRWxlbWVudC5uYXRpdmVFbGVtZW50LCAnZGlzcGxheScsICdub25lJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaTE4blN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLmkxOG5TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==