@neocomplexx/ngx-neo-completer-mat
Version:
530 lines • 63.1 kB
JavaScript
import { ChangeDetectorRef, Component, Input, Output, EventEmitter, ViewChild, forwardRef, ElementRef } from '@angular/core';
import { FormControl, NG_VALUE_ACCESSOR, Validators, NgForm } from '@angular/forms';
import { CtrCompleter } from '../directives/ctr-completer';
import { CompleterService } from '../services/completer-service';
import { MAX_CHARS, MIN_SEARCH_LENGTH, PAUSE, TEXT_SEARCHING, TEXT_NO_RESULTS } from '../globals';
import * as i0 from "@angular/core";
import * as i1 from "../services/completer-service";
import * as i2 from "@angular/material/form-field";
import * as i3 from "@angular/common";
import * as i4 from "../directives/ctr-completer";
import * as i5 from "@angular/material/input";
import * as i6 from "@angular/forms";
import * as i7 from "../directives/ctr-input";
import * as i8 from "../directives/ctr-list";
import * as i9 from "../directives/ctr-dropdown";
import * as i10 from "../directives/ctr-row";
import * as i11 from "./completer-list-item-cmp";
import * as i12 from "@angular/material/chips";
import * as i13 from "@angular/material/icon";
var _c0 = ["ctrInput"];
function CompleterCmp_mat_label_1_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "mat-label");
i0.ɵɵtext(1);
i0.ɵɵelementEnd();
} if (rf & 2) {
var ctx_r0 = i0.ɵɵnextContext();
i0.ɵɵadvance(1);
i0.ɵɵtextInterpolate(ctx_r0.placeholder);
} }
function CompleterCmp_div_7_div_1_div_1_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div", 15);
i0.ɵɵtext(1);
i0.ɵɵelementEnd();
} if (rf & 2) {
var ctx_r10 = i0.ɵɵnextContext(3);
i0.ɵɵadvance(1);
i0.ɵɵtextInterpolate(ctx_r10._textSearching);
} }
function CompleterCmp_div_7_div_1_div_2_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div", 16);
i0.ɵɵtext(1);
i0.ɵɵelementEnd();
} if (rf & 2) {
var ctx_r11 = i0.ɵɵnextContext(3);
i0.ɵɵadvance(1);
i0.ɵɵtextInterpolate(ctx_r11._textNoResults);
} }
function CompleterCmp_div_7_div_1_div_3_div_2_img_1_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelement(0, "img", 26);
} if (rf & 2) {
var item_r13 = i0.ɵɵnextContext(2).$implicit;
i0.ɵɵpropertyInterpolate("src", item_r13.image, i0.ɵɵsanitizeUrl);
} }
function CompleterCmp_div_7_div_1_div_3_div_2_div_2_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelement(0, "div", 27);
} }
function CompleterCmp_div_7_div_1_div_3_div_2_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div", 23);
i0.ɵɵtemplate(1, CompleterCmp_div_7_div_1_div_3_div_2_img_1_Template, 1, 1, "img", 24);
i0.ɵɵtemplate(2, CompleterCmp_div_7_div_1_div_3_div_2_div_2_Template, 1, 0, "div", 25);
i0.ɵɵelementEnd();
} if (rf & 2) {
var item_r13 = i0.ɵɵnextContext().$implicit;
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", item_r13.image != "");
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", item_r13.image === "");
} }
function CompleterCmp_div_7_div_1_div_3_completer_list_item_5_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelement(0, "completer-list-item", 28);
} if (rf & 2) {
var item_r13 = i0.ɵɵnextContext().$implicit;
var ctx_r16 = i0.ɵɵnextContext(3);
i0.ɵɵproperty("text", item_r13.description)("matchClass", ctx_r16.matchClass)("searchStr", ctx_r16.searchStr)("type", "description");
} }
var _c1 = function (a0) { return { "completer-item-text-image": a0 }; };
function CompleterCmp_div_7_div_1_div_3_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div", 17);
i0.ɵɵelementStart(1, "div", 18);
i0.ɵɵtemplate(2, CompleterCmp_div_7_div_1_div_3_div_2_Template, 3, 2, "div", 19);
i0.ɵɵelementStart(3, "div", 20);
i0.ɵɵelement(4, "completer-list-item", 21);
i0.ɵɵtemplate(5, CompleterCmp_div_7_div_1_div_3_completer_list_item_5_Template, 1, 4, "completer-list-item", 22);
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
} if (rf & 2) {
var item_r13 = ctx.$implicit;
var rowIndex_r14 = ctx.index;
var ctx_r12 = i0.ɵɵnextContext(3);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ctrRow", rowIndex_r14)("dataItem", item_r13);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", item_r13.image || item_r13.image === "");
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(9, _c1, item_r13.image || item_r13.image === ""));
i0.ɵɵadvance(1);
i0.ɵɵproperty("text", item_r13.title)("matchClass", ctx_r12.matchClass)("searchStr", ctx_r12.searchStr)("type", "title");
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", item_r13.description && item_r13.description != "");
} }
function CompleterCmp_div_7_div_1_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div", 11);
i0.ɵɵtemplate(1, CompleterCmp_div_7_div_1_div_1_Template, 2, 1, "div", 12);
i0.ɵɵtemplate(2, CompleterCmp_div_7_div_1_div_2_Template, 2, 1, "div", 13);
i0.ɵɵtemplate(3, CompleterCmp_div_7_div_1_div_3_Template, 6, 11, "div", 14);
i0.ɵɵelementEnd();
} if (rf & 2) {
var ctx_r22 = i0.ɵɵnextContext();
var searchActive_r6 = ctx_r22.searching;
var items_r5 = ctx_r22.results;
var ctx_r9 = i0.ɵɵnextContext();
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", searchActive_r6 && ctx_r9.displaySearching);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", !searchActive_r6 && (!items_r5 || (items_r5 == null ? null : items_r5.length) === 0));
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngForOf", items_r5);
} }
function CompleterCmp_div_7_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div", 9);
i0.ɵɵtemplate(1, CompleterCmp_div_7_div_1_Template, 4, 3, "div", 10);
i0.ɵɵelementEnd();
} if (rf & 2) {
var items_r5 = ctx.results;
var searchActive_r6 = ctx.searching;
var isInitialized_r7 = ctx.searchInitialized;
var isOpen_r8 = ctx.isOpen;
var ctx_r3 = i0.ɵɵnextContext();
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", isInitialized_r7 && isOpen_r8 && ((items_r5 == null ? null : items_r5.length) > 0 || ctx_r3.displayNoResults && !searchActive_r6 || searchActive_r6 && ctx_r3.displaySearching));
} }
function CompleterCmp_div_8_Template(rf, ctx) { if (rf & 1) {
var _r24 = i0.ɵɵgetCurrentView();
i0.ɵɵelementStart(0, "div", 29);
i0.ɵɵelementStart(1, "mat-chip-list", 30);
i0.ɵɵelementStart(2, "mat-chip", 31);
i0.ɵɵlistener("removed", function CompleterCmp_div_8_Template_mat_chip_removed_2_listener() { i0.ɵɵrestoreView(_r24); var ctx_r23 = i0.ɵɵnextContext(); return ctx_r23.removeItem(); });
i0.ɵɵelementStart(3, "span", 32);
i0.ɵɵtext(4);
i0.ɵɵelementEnd();
i0.ɵɵelementStart(5, "mat-icon", 33);
i0.ɵɵtext(6, "cancel");
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
} if (rf & 2) {
var ctx_r4 = i0.ɵɵnextContext();
var _r2 = i0.ɵɵreference(6);
i0.ɵɵadvance(1);
i0.ɵɵproperty("disabled", _r2.disabled);
i0.ɵɵadvance(1);
i0.ɵɵproperty("selectable", true)("removable", true);
i0.ɵɵadvance(2);
i0.ɵɵtextInterpolate(ctx_r4.completerItem == null ? null : ctx_r4.completerItem.title);
} }
'use strict';
var noop = function () { };
var COMPLETER_CONTROL_VALUE_ACCESSOR = {
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(function () { return CompleterCmp; }),
multi: true
};
var CompleterCmp = /** @class */ (function () {
function CompleterCmp(completerService, cdr) {
this.completerService = completerService;
this.cdr = cdr;
this.inputName = '';
this.inputId = '';
this.pause = PAUSE;
this.minSearchLength = MIN_SEARCH_LENGTH;
this.maxChars = MAX_CHARS;
this.overrideSuggested = false;
this.clearSelected = false;
this.clearUnselected = false;
this.fillHighlighted = true;
this.placeholder = '';
this.autoMatch = false;
this.disableInput = false;
this.autofocus = false;
this.openOnFocus = false;
this.openOnClick = false;
this.selectOnClick = false;
this.autoHighlight = false;
this.autoSelectOnEnter = true;
this.appearance = '';
this.selected = new EventEmitter();
this.highlighted = new EventEmitter();
// tslint:disable:no-output-rename
this.blurEvent = new EventEmitter();
this.click = new EventEmitter();
this.focusEvent = new EventEmitter();
this.opened = new EventEmitter();
this.keyup = new EventEmitter();
this.keydown = new EventEmitter();
this.searchStr = '';
this.control = new FormControl('');
this.displaySearching = true;
this.displayNoResults = true;
this._textNoResults = TEXT_NO_RESULTS;
this._textSearching = TEXT_SEARCHING;
this._onTouchedCallback = noop;
this._onChangeCallback = noop;
this._focus = false;
this._open = false;
this._onlyOnInit = true;
}
Object.defineProperty(CompleterCmp.prototype, "value", {
get: function () { return (this.completerItem) ? this.completerItem.originalObject : this.searchStr; },
set: function (v) {
if (typeof (v) === 'string') {
this.searchStr = v;
}
else {
this.completerItem = v;
}
},
enumerable: true,
configurable: true
});
CompleterCmp.prototype.ngAfterViewInit = function () {
if (this.autofocus) {
this._focus = true;
}
};
CompleterCmp.prototype.ngAfterViewChecked = function () {
var _this = this;
if (this._focus) {
setTimeout(function () {
if (_this.ctrInput) {
_this.ctrInput.nativeElement.focus();
_this._focus = false;
}
}, 0);
}
};
CompleterCmp.prototype.onTouched = function () {
this._onTouchedCallback();
};
CompleterCmp.prototype.writeValue = function (value) {
if (value && (value.id === 0 || value.id === 0))
value = null;
if (value && this.dataService.convertToItem) {
this.completerItem = this.dataService.convertToItem(value);
this.searchStr = this.completerItem.title;
}
else {
this.completerItem = null;
this.searchStr = null;
}
};
CompleterCmp.prototype.registerOnChange = function (fn) {
this._onChangeCallback = fn;
};
CompleterCmp.prototype.registerOnTouched = function (fn) {
this._onTouchedCallback = fn;
};
CompleterCmp.prototype.setDisabledState = function (isDisabled) {
this.disableInput = isDisabled;
if (!this.form) {
if (isDisabled) {
this.control.disable({ onlySelf: false, emitEvent: true });
}
else {
this.control.enable({ onlySelf: false, emitEvent: true });
}
}
};
Object.defineProperty(CompleterCmp.prototype, "datasource", {
set: function (source) {
if (source) {
if (source instanceof Array) {
this.dataService = this.completerService.local(source);
}
else if (typeof (source) === 'string') {
this.dataService = this.completerService.remote(source);
}
else {
this.dataService = source;
}
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(CompleterCmp.prototype, "textNoResults", {
set: function (text) {
if (this._textNoResults !== text) {
this._textNoResults = text;
this.displayNoResults = !!this._textNoResults && this._textNoResults !== 'false';
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(CompleterCmp.prototype, "textSearching", {
set: function (text) {
if (this._textSearching !== text) {
this._textSearching = text;
this.displaySearching = !!this._textSearching && this._textSearching !== 'false';
}
},
enumerable: true,
configurable: true
});
CompleterCmp.prototype.ngOnInit = function () {
var _this = this;
if (this.required === '')
this.required = true;
if (this.required) {
this.control.setValidators(Validators.required);
}
if (this.form) {
this.form.control.addControl(this.name, this.control);
this.form.control.get(this.name).updateValueAndValidity();
}
this.completer.selected.subscribe(function (item) {
_this.completerItem = item;
if (!_this.completerItem)
_this.searchStr = undefined;
_this._onChangeCallback((_this.completerItem) ? _this.completerItem.originalObject : null);
_this.selected.emit(item);
});
this.completer.highlighted.subscribe(function (item) {
_this.highlighted.emit(item);
});
this.completer.opened.subscribe(function (isOpen) {
_this._open = isOpen;
_this.opened.emit(isOpen);
});
};
CompleterCmp.prototype.removeItem = function () {
var _this = this;
this.completerItem = undefined;
this.searchStr = undefined;
this._onChangeCallback((this.completerItem) ? this.completerItem.originalObject : null);
this.selected.emit(null);
setTimeout(function () {
if (_this.ctrInput) {
_this.ctrInput.nativeElement.focus();
_this._focus = false;
}
}, 10);
};
CompleterCmp.prototype.onBlur = function () {
this.blurEvent.emit();
this.onTouched();
this.cdr.detectChanges();
};
CompleterCmp.prototype.onFocus = function () {
this.focusEvent.emit();
//this.onTouched();
};
CompleterCmp.prototype.onClick = function (event) {
this.click.emit(event);
this.onTouched();
};
CompleterCmp.prototype.onKeyup = function (event) {
this.keyup.emit(event);
};
CompleterCmp.prototype.onKeydown = function (event) {
this._onlyOnInit = false;
this.keydown.emit(event);
};
CompleterCmp.prototype.onChange = function (value) {
this.value = value;
};
CompleterCmp.prototype.open = function () {
this.completer.open();
};
CompleterCmp.prototype.close = function () {
this.completer.clear();
};
CompleterCmp.prototype.focus = function () {
if (this.ctrInput) {
this.ctrInput.nativeElement.focus();
}
else {
this._focus = true;
}
};
CompleterCmp.prototype.blur = function () {
if (this.ctrInput) {
this.ctrInput.nativeElement.blur();
}
else {
this._focus = false;
}
};
CompleterCmp.prototype.isOpen = function () {
return this._open;
};
CompleterCmp.ɵfac = function CompleterCmp_Factory(t) { return new (t || CompleterCmp)(i0.ɵɵdirectiveInject(i1.CompleterService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
CompleterCmp.ɵcmp = i0.ɵɵdefineComponent({ type: CompleterCmp, selectors: [["neo-completer-mat"]], viewQuery: function CompleterCmp_Query(rf, ctx) { if (rf & 1) {
i0.ɵɵstaticViewQuery(CtrCompleter, true);
i0.ɵɵstaticViewQuery(_c0, true);
} if (rf & 2) {
var _t;
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.completer = _t.first);
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.ctrInput = _t.first);
} }, inputs: { dataService: "dataService", required: "required", name: "name", inputName: "inputName", inputId: "inputId", pause: "pause", minSearchLength: "minSearchLength", maxChars: "maxChars", overrideSuggested: "overrideSuggested", clearSelected: "clearSelected", clearUnselected: "clearUnselected", fillHighlighted: "fillHighlighted", placeholder: "placeholder", matchClass: "matchClass", fieldTabindex: "fieldTabindex", autoMatch: "autoMatch", disableInput: "disableInput", inputClass: "inputClass", formFieldClass: "formFieldClass", autofocus: "autofocus", openOnFocus: "openOnFocus", openOnClick: "openOnClick", selectOnClick: "selectOnClick", initialValue: "initialValue", autoHighlight: "autoHighlight", autoSelectOnEnter: "autoSelectOnEnter", appearance: "appearance", form: "form", datasource: "datasource", textNoResults: "textNoResults", textSearching: "textSearching" }, outputs: { selected: "selected", highlighted: "highlighted", blurEvent: "blur", click: "click", focusEvent: "focus", opened: "opened", keyup: "keyup", keydown: "keydown" }, features: [i0.ɵɵProvidersFeature([COMPLETER_CONTROL_VALUE_ACCESSOR])], decls: 9, vars: 33, consts: [[3, "ngClass", "appearance"], [4, "ngIf"], ["ctrCompleter", "", 1, "completer-holder"], ["matInput", "", "type", "search", "ctrInput", "", "autocomplete", "off", "autocorrect", "off", "autocapitalize", "off", 1, "completer-input", 3, "required", "ngClass", "ngModel", "placeholder", "tabindex", "disabled", "clearSelected", "clearUnselected", "overrideSuggested", "openOnFocus", "fillHighlighted", "openOnClick", "selectOnClick", "autoSelectOnEnter", "ngModelChange", "blur", "focus", "keyup", "keydown", "click"], ["ctrInput", ""], ["matInput", "", 3, "formControl"], ["ctrInputHidden", ""], ["class", "completer-dropdown-holder", 4, "ctrList", "ctrListMinSearchLength", "ctrListPause", "ctrListAutoMatch", "ctrListInitialValue", "ctrListAutoHighlight", "ctrListDisplaySearching"], ["class", "completer-holder", 4, "ngIf"], [1, "completer-dropdown-holder"], ["class", "completer-dropdown", "ctrDropdown", "", 4, "ngIf"], ["ctrDropdown", "", 1, "completer-dropdown"], ["class", "completer-searching", 4, "ngIf"], ["class", "completer-no-results", 4, "ngIf"], ["class", "completer-row-wrapper", 4, "ngFor", "ngForOf"], [1, "completer-searching"], [1, "completer-no-results"], [1, "completer-row-wrapper"], [1, "completer-row", 3, "ctrRow", "dataItem"], ["class", "completer-image-holder", 4, "ngIf"], [1, "completer-item-text", 3, "ngClass"], [1, "completer-title", 3, "text", "matchClass", "searchStr", "type"], ["class", "completer-description", 3, "text", "matchClass", "searchStr", "type", 4, "ngIf"], [1, "completer-image-holder"], ["class", "completer-image", 3, "src", 4, "ngIf"], ["class", "completer-image-default", 4, "ngIf"], [1, "completer-image", 3, "src"], [1, "completer-image-default"], [1, "completer-description", 3, "text", "matchClass", "searchStr", "type"], [1, "completer-holder"], [3, "disabled"], ["id", "chip-badge", 3, "selectable", "removable", "removed"], [1, ""], ["matChipRemove", ""]], template: function CompleterCmp_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "mat-form-field", 0);
i0.ɵɵtemplate(1, CompleterCmp_mat_label_1_Template, 2, 1, "mat-label", 1);
i0.ɵɵelementStart(2, "div", 2);
i0.ɵɵelementStart(3, "input", 3, 4);
i0.ɵɵlistener("ngModelChange", function CompleterCmp_Template_input_ngModelChange_3_listener($event) { return ctx.searchStr = $event; })("ngModelChange", function CompleterCmp_Template_input_ngModelChange_3_listener($event) { return ctx.onChange($event); })("blur", function CompleterCmp_Template_input_blur_3_listener() { return ctx.onBlur(); })("focus", function CompleterCmp_Template_input_focus_3_listener() { return ctx.onFocus(); })("keyup", function CompleterCmp_Template_input_keyup_3_listener($event) { return ctx.onKeyup($event); })("keydown", function CompleterCmp_Template_input_keydown_3_listener($event) { return ctx.onKeydown($event); })("click", function CompleterCmp_Template_input_click_3_listener($event) { return ctx.onClick($event); });
i0.ɵɵelementEnd();
i0.ɵɵelement(5, "input", 5, 6);
i0.ɵɵtemplate(7, CompleterCmp_div_7_Template, 2, 1, "div", 7);
i0.ɵɵelementEnd();
i0.ɵɵtemplate(8, CompleterCmp_div_8_Template, 7, 4, "div", 8);
i0.ɵɵelementEnd();
} if (rf & 2) {
var _r2 = i0.ɵɵreference(6);
i0.ɵɵproperty("ngClass", ctx.formFieldClass)("appearance", ctx.appearance);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", ctx.appearance);
i0.ɵɵadvance(2);
i0.ɵɵclassProp("none-display", ctx.completerItem);
i0.ɵɵproperty("required", ctx.required)("ngClass", ctx.inputClass)("ngModel", ctx.searchStr)("placeholder", ctx.placeholder)("tabindex", ctx.fieldTabindex)("disabled", _r2.disabled)("clearSelected", ctx.clearSelected)("clearUnselected", ctx.clearUnselected)("overrideSuggested", ctx.overrideSuggested)("openOnFocus", ctx.openOnFocus)("fillHighlighted", ctx.fillHighlighted)("openOnClick", ctx.openOnClick)("selectOnClick", ctx.selectOnClick)("autoSelectOnEnter", ctx.autoSelectOnEnter);
i0.ɵɵattribute("id", ctx.inputId.length > 0 ? ctx.inputId : null)("name", ctx.inputName)("maxlength", ctx.maxChars);
i0.ɵɵadvance(2);
i0.ɵɵclassProp("none-display", true);
i0.ɵɵproperty("formControl", ctx.control);
i0.ɵɵadvance(2);
i0.ɵɵproperty("ctrList", ctx.dataService)("ctrListMinSearchLength", ctx.minSearchLength)("ctrListPause", ctx.pause)("ctrListAutoMatch", ctx.autoMatch)("ctrListInitialValue", ctx.initialValue)("ctrListAutoHighlight", ctx.autoHighlight)("ctrListDisplaySearching", ctx.displaySearching);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", ctx.completerItem);
} }, directives: [i2.MatFormField, i3.NgClass, i3.NgIf, i4.CtrCompleter, i5.MatInput, i6.DefaultValueAccessor, i7.CtrInput, i6.RequiredValidator, i6.NgControlStatus, i6.NgModel, i6.MaxLengthValidator, i6.FormControlDirective, i8.CtrList, i2.MatLabel, i9.CtrDropdown, i3.NgForOf, i10.CtrRow, i11.CompleterListItemCmp, i12.MatChipList, i12.MatChip, i13.MatIcon, i12.MatChipRemove], styles: [".completer-dropdown[_ngcontent-%COMP%]{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);width:100%;border-bottom-left-radius:4px;border-bottom-right-radius:4px;margin-top:10px;cursor:pointer;z-index:9999;position:absolute;background-color:#fff;max-height:200px;height:200px;overflow-y:auto;overflow-x:hidden}.completer-row[_ngcontent-%COMP%]:hover{background:rgba(0,0,0,.04)}.completer-row[_ngcontent-%COMP%]{line-height:48px;height:48px;color:#000;width:100%;text-overflow:ellipsis;text-align:left;padding:0 16px}.completer-row-wrapper[_ngcontent-%COMP%]{text-overflow:ellipsis}.completer-selected-row[_ngcontent-%COMP%]{background:rgba(0,0,0,.04)}.completer-description[_ngcontent-%COMP%]{font-size:14px}.completer-image-default[_ngcontent-%COMP%]{width:16px;height:16px}.completer-image-holder[_ngcontent-%COMP%]{float:left;width:10%}.completer-item-text-image[_ngcontent-%COMP%]{float:right;width:90%}.none-display[_ngcontent-%COMP%]{display:none}.mat-standard-chip[_ngcontent-%COMP%] .mat-chip-remove.mat-icon[_ngcontent-%COMP%]{width:16px!important;height:16px!important}.mat-chip[_ngcontent-%COMP%] .mat-chip-remove.mat-icon[_ngcontent-%COMP%], .mat-chip[_ngcontent-%COMP%] .mat-chip-trailing-icon.mat-icon[_ngcontent-%COMP%]{font-size:16px!important}.mat-standard-chip[_ngcontent-%COMP%]{min-height:24px!important;font-size:14px!important}mat-chip-list[_ngcontent-%COMP%] .mat-chip-list-wrapper[_ngcontent-%COMP%]{margin:-7px!important}#chip-badge[_ngcontent-%COMP%]{margin:1px!important}"] });
return CompleterCmp;
}());
export { CompleterCmp };
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(CompleterCmp, [{
type: Component,
args: [{
// tslint:disable:max-line-length
selector: 'neo-completer-mat',
template: "\n <mat-form-field [ngClass]=\"formFieldClass\" [appearance]=\"appearance\">\n <mat-label *ngIf=\"appearance\">{{placeholder}}</mat-label>\n <div class=\"completer-holder\" ctrCompleter>\n <input #ctrInput [class.none-display]=\"completerItem\" [required]=\"required\" matInput [attr.id]=\"inputId.length > 0 ? inputId : null\" type=\"search\" class=\"completer-input\" ctrInput [ngClass]=\"inputClass\"\n [(ngModel)]=\"searchStr\" (ngModelChange)=\"onChange($event)\" [attr.name]=\"inputName\" [placeholder]=\"placeholder\"\n [attr.maxlength]=\"maxChars\" [tabindex]=\"fieldTabindex\" [disabled]=\"ctrInputHidden.disabled\"\n [clearSelected]=\"clearSelected\" [clearUnselected]=\"clearUnselected\" \n [overrideSuggested]=\"overrideSuggested\" [openOnFocus]=\"openOnFocus\" [fillHighlighted]=\"fillHighlighted\"\n [openOnClick]=\"openOnClick\" [selectOnClick]=\"selectOnClick\" [autoSelectOnEnter]=\"autoSelectOnEnter\"\n (blur)=\"onBlur()\" (focus)=\"onFocus()\" (keyup)=\"onKeyup($event)\" (keydown)=\"onKeydown($event)\" (click)=\"onClick($event)\"\n autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"off\" />\n <input #ctrInputHidden [class.none-display]=\"true\" matInput [formControl]=\"control\"/>\n <div class=\"completer-dropdown-holder\"\n *ctrList=\"dataService;\n minSearchLength: minSearchLength;\n pause: pause;\n autoMatch: autoMatch;\n initialValue: initialValue;\n autoHighlight: autoHighlight;\n displaySearching: displaySearching;\n let items = results;\n let searchActive = searching;\n let isInitialized = searchInitialized;\n let isOpen = isOpen;\">\n <div class=\"completer-dropdown\" ctrDropdown *ngIf=\"isInitialized && isOpen && (( items?.length > 0|| (displayNoResults && !searchActive)) || (searchActive && displaySearching))\">\n <div *ngIf=\"searchActive && displaySearching\" class=\"completer-searching\">{{_textSearching}}</div>\n <div *ngIf=\"!searchActive && (!items || items?.length === 0)\" class=\"completer-no-results\">{{_textNoResults}}</div>\n <div class=\"completer-row-wrapper\" *ngFor=\"let item of items; let rowIndex=index\">\n <div class=\"completer-row\" [ctrRow]=\"rowIndex\" [dataItem]=\"item\">\n <div *ngIf=\"item.image || item.image === ''\" class=\"completer-image-holder\">\n <img *ngIf=\"item.image != ''\" src=\"{{item.image}}\" class=\"completer-image\" />\n <div *ngIf=\"item.image === ''\" class=\"completer-image-default\"></div>\n </div>\n <div class=\"completer-item-text\" [ngClass]=\"{'completer-item-text-image': item.image || item.image === '' }\">\n <completer-list-item class=\"completer-title\" [text]=\"item.title\" [matchClass]=\"matchClass\" [searchStr]=\"searchStr\" [type]=\"'title'\"></completer-list-item>\n <completer-list-item *ngIf=\"item.description && item.description != ''\" class=\"completer-description\" [text]=\"item.description\"\n [matchClass]=\"matchClass\" [searchStr]=\"searchStr\" [type]=\"'description'\">\n </completer-list-item>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"completerItem\" class=\"completer-holder\">\n <mat-chip-list [disabled]=\"ctrInputHidden.disabled\">\n <mat-chip id=\"chip-badge\" [selectable]=\"true\" [removable]=\"true\" (removed)=\"removeItem()\">\n <span class=\"\">{{completerItem?.title}}</span>\n <mat-icon matChipRemove>cancel</mat-icon>\n </mat-chip>\n </mat-chip-list>\n </div>\n </mat-form-field>\n ",
styleUrls: ['completer-cmp.scss'],
providers: [COMPLETER_CONTROL_VALUE_ACCESSOR]
}]
}], function () { return [{ type: i1.CompleterService }, { type: i0.ChangeDetectorRef }]; }, { dataService: [{
type: Input
}], required: [{
type: Input
}], name: [{
type: Input
}], inputName: [{
type: Input
}], inputId: [{
type: Input
}], pause: [{
type: Input
}], minSearchLength: [{
type: Input
}], maxChars: [{
type: Input
}], overrideSuggested: [{
type: Input
}], clearSelected: [{
type: Input
}], clearUnselected: [{
type: Input
}], fillHighlighted: [{
type: Input
}], placeholder: [{
type: Input
}], matchClass: [{
type: Input
}], fieldTabindex: [{
type: Input
}], autoMatch: [{
type: Input
}], disableInput: [{
type: Input
}], inputClass: [{
type: Input
}], formFieldClass: [{
type: Input
}], autofocus: [{
type: Input
}], openOnFocus: [{
type: Input
}], openOnClick: [{
type: Input
}], selectOnClick: [{
type: Input
}], initialValue: [{
type: Input
}], autoHighlight: [{
type: Input
}], autoSelectOnEnter: [{
type: Input
}], appearance: [{
type: Input
}], form: [{
type: Input
}], selected: [{
type: Output
}], highlighted: [{
type: Output
}], blurEvent: [{
type: Output,
args: ['blur']
}], click: [{
type: Output
}], focusEvent: [{
type: Output,
args: ['focus']
}], opened: [{
type: Output
}], keyup: [{
type: Output
}], keydown: [{
type: Output
}], completer: [{
type: ViewChild,
args: [CtrCompleter, { static: true }]
}], ctrInput: [{
type: ViewChild,
args: ['ctrInput', { static: true }]
}], datasource: [{
type: Input
}], textNoResults: [{
type: Input
}], textSearching: [{
type: Input
}] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxldGVyLWNtcC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZW9jb21wbGV4eC9uZ3gtbmVvLWNvbXBsZXRlci1tYXQvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9jb21wbGV0ZXItY21wLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDSCxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQ3pELFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUNwQyxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRWpFLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBZ0IxRixpQ0FBOEI7SUFBQSxZQUFlO0lBQUEsaUJBQVk7OztJQUEzQixlQUFlO0lBQWYsd0NBQWU7OztJQXdCakMsK0JBQTBFO0lBQUEsWUFBa0I7SUFBQSxpQkFBTTs7O0lBQXhCLGVBQWtCO0lBQWxCLDRDQUFrQjs7O0lBQzVGLCtCQUEyRjtJQUFBLFlBQWtCO0lBQUEsaUJBQU07OztJQUF4QixlQUFrQjtJQUFsQiw0Q0FBa0I7OztJQUlqRywwQkFDQTs7O0lBRDhCLGlFQUFvQjs7O0lBQ2xELDBCQUFxRTs7O0lBRnpFLCtCQUNJO0lBQUEsc0ZBQ0E7SUFBQSxzRkFBK0Q7SUFDbkUsaUJBQU07OztJQUZHLGVBQXdCO0lBQXhCLDJDQUF3QjtJQUN4QixlQUF5QjtJQUF6Qiw0Q0FBeUI7OztJQUk5QiwwQ0FFc0I7Ozs7SUFGZ0YsMkNB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QUFLOztrQkFDTCxLQUFLOztrQkFDTCxLQUFLOztrQkFDTCxLQUFLOztrQkFDTCxLQUFLOztrQkFDTCxLQUFLOztrQkFDTCxLQUFLOztrQkFDTCxLQUFLOztrQkFDTCxLQUFLOztrQkFDTCxLQUFLOztrQkFDTCxLQUFLOztrQkFDTCxLQUFLOztrQkFDTCxLQUFLOztrQkFDTCxLQUFLOztrQkFDTCxLQUFLOztrQkFDTCxLQUFLOztrQkFDTCxLQUFLOztrQkFDTCxLQUFLOztrQkFDTCxLQUFLOztrQkFDTCxLQUFLOztrQkFDTCxLQUFLOztrQkFDTCxLQUFLOztrQkFDTCxLQUFLOztrQkFDTCxLQUFLOztrQkFDTCxLQUFLOztrQkFFTCxNQUFNOztrQkFDTixNQUFNOztrQkFFTixNQUFNO21CQUFDLE1BQU07O2tCQUNiLE1BQU07O2tCQUNOLE1BQU07bUJBQUMsT0FBTzs7a0JBQ2QsTUFBTTs7a0JBQ04sTUFBTTs7a0JBQ04sTUFBTTs7a0JBRU4sU0FBUzttQkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOztrQkFDeEMsU0FBUzttQkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOztrQkFtRnRDLEtBQUs7O2tCQWFMLEtBQUs7O2tCQVFMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XHJcbmltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsXHJcbiAgICBWaWV3Q2hpbGQsIGZvcndhcmRSZWYsIEVsZW1lbnRSZWYsIEFmdGVyVmlld0NoZWNrZWQsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3JzLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBDdHJDb21wbGV0ZXIgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2N0ci1jb21wbGV0ZXInO1xyXG5pbXBvcnQgeyBDb21wbGV0ZXJEYXRhIH0gZnJvbSAnLi4vc2VydmljZXMvY29tcGxldGVyLWRhdGEnO1xyXG5pbXBvcnQgeyBDb21wbGV0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29tcGxldGVyLXNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21wbGV0ZXJJdGVtIH0gZnJvbSAnLi9jb21wbGV0ZXItaXRlbSc7XHJcbmltcG9ydCB7IE1BWF9DSEFSUywgTUlOX1NFQVJDSF9MRU5HVEgsIFBBVVNFLCBURVhUX1NFQVJDSElORywgVEVYVF9OT19SRVNVTFRTIH0gZnJvbSAnLi4vZ2xvYmFscyc7XHJcblxyXG5jb25zdCBub29wID0gKCkgPT4geyB9O1xyXG5cclxuY29uc3QgQ09NUExFVEVSX0NPTlRST0xfVkFMVUVfQUNDRVNTT1IgPSB7XHJcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENvbXBsZXRlckNtcCksXHJcbiAgICBtdWx0aTogdHJ1ZVxyXG59O1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgLy8gdHNsaW50OmRpc2FibGU6bWF4LWxpbmUtbGVuZ3RoXHJcbiAgICBzZWxlY3RvcjogJ25lby1jb21wbGV0ZXItbWF0JyxcclxuICAgIHRlbXBsYXRlOiBgXHJcbiAgICA8bWF0LWZvcm0tZmllbGQgW25nQ2xhc3NdPVwiZm9ybUZpZWxkQ2xhc3NcIiBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbCAqbmdJZj1cImFwcGVhcmFuY2VcIj57e3BsYWNlaG9sZGVyfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGxldGVyLWhvbGRlclwiIGN0ckNvbXBsZXRlcj5cclxuICAgICAgICAgICAgPGlucHV0ICNjdHJJbnB1dCBbY2xhc3Mubm9uZS1kaXNwbGF5XT1cImNvbXBsZXRlckl0ZW1cIiBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIiBtYXRJbnB1dCBbYXR0ci5pZF09XCJpbnB1dElkLmxlbmd0aCA+IDAgPyBpbnB1dElkIDogbnVsbFwiIHR5cGU9XCJzZWFyY2hcIiBjbGFzcz1cImNvbXBsZXRlci1pbnB1dFwiIGN0cklucHV0IFtuZ0NsYXNzXT1cImlucHV0Q2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hTdHJcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCIgW2F0dHIubmFtZV09XCJpbnB1dE5hbWVcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgW2F0dHIubWF4bGVuZ3RoXT1cIm1heENoYXJzXCIgW3RhYmluZGV4XT1cImZpZWxkVGFiaW5kZXhcIiBbZGlzYWJsZWRdPVwiY3RySW5wdXRIaWRkZW4uZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgW2NsZWFyU2VsZWN0ZWRdPVwiY2xlYXJTZWxlY3RlZFwiIFtjbGVhclVuc2VsZWN0ZWRdPVwiY2xlYXJVbnNlbGVjdGVkXCIgXHJcbiAgICAgICAgICAgICAgICBbb3ZlcnJpZGVTdWdnZXN0ZWRdPVwib3ZlcnJpZGVTdWdnZXN0ZWRcIiBbb3Blbk9uRm9jdXNdPVwib3Blbk9uRm9jdXNcIiBbZmlsbEhpZ2hsaWdodGVkXT1cImZpbGxIaWdobGlnaHRlZFwiXHJcbiAgICAgICAgICAgICAgICBbb3Blbk9uQ2xpY2tdPVwib3Blbk9uQ2xpY2tcIiBbc2VsZWN0T25DbGlja109XCJzZWxlY3RPbkNsaWNrXCIgW2F1dG9TZWxlY3RPbkVudGVyXT1cImF1dG9TZWxlY3RPbkVudGVyXCJcclxuICAgICAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCIgKGZvY3VzKT1cIm9uRm9jdXMoKVwiIChrZXl1cCk9XCJvbktleXVwKCRldmVudClcIiAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgYXV0b2NvcnJlY3Q9XCJvZmZcIiBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiIC8+XHJcbiAgICAgICAgICAgIDxpbnB1dCAjY3RySW5wdXRIaWRkZW4gW2NsYXNzLm5vbmUtZGlzcGxheV09XCJ0cnVlXCIgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIi8+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wbGV0ZXItZHJvcGRvd24taG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICpjdHJMaXN0PVwiZGF0YVNlcnZpY2U7XHJcbiAgICAgICAgICAgICAgICAgICAgbWluU2VhcmNoTGVuZ3RoOiBtaW5TZWFyY2hMZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgcGF1c2U6IHBhdXNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGF1dG9NYXRjaDogYXV0b01hdGNoO1xyXG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxWYWx1ZTogaW5pdGlhbFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGF1dG9IaWdobGlnaHQ6IGF1dG9IaWdobGlnaHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheVNlYXJjaGluZzogZGlzcGxheVNlYXJjaGluZztcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbXMgPSByZXN1bHRzO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBzZWFyY2hBY3RpdmUgPSBzZWFyY2hpbmc7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGlzSW5pdGlhbGl6ZWQgPSBzZWFyY2hJbml0aWFsaXplZDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXNPcGVuID0gaXNPcGVuO1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBsZXRlci1kcm9wZG93blwiIGN0ckRyb3Bkb3duICpuZ0lmPVwiaXNJbml0aWFsaXplZCAmJiBpc09wZW4gJiYgKCggaXRlbXM/Lmxlbmd0aCA+IDB8fCAoZGlzcGxheU5vUmVzdWx0cyAmJiAhc2VhcmNoQWN0aXZlKSkgfHwgKHNlYXJjaEFjdGl2ZSAmJiBkaXNwbGF5U2VhcmNoaW5nKSlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VhcmNoQWN0aXZlICYmIGRpc3BsYXlTZWFyY2hpbmdcIiBjbGFzcz1cImNvbXBsZXRlci1zZWFyY2hpbmdcIj57e190ZXh0U2VhcmNoaW5nfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXNlYXJjaEFjdGl2ZSAmJiAoIWl0ZW1zIHx8IGl0ZW1zPy5sZW5ndGggPT09IDApXCIgY2xhc3M9XCJjb21wbGV0ZXItbm8tcmVzdWx0c1wiPnt7X3RleHROb1Jlc3VsdHN9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wbGV0ZXItcm93LXdyYXBwZXJcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgbGV0IHJvd0luZGV4PWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wbGV0ZXItcm93XCIgW2N0clJvd109XCJyb3dJbmRleFwiIFtkYXRhSXRlbV09XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5pbWFnZSB8fCBpdGVtLmltYWdlID09PSAnJ1wiIGNsYXNzPVwiY29tcGxldGVyLWltYWdlLWhvbGRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJpdGVtLmltYWdlICE9ICcnXCIgc3JjPVwie3tpdGVtLmltYWdlfX1cIiBjbGFzcz1cImNvbXBsZXRlci1pbWFnZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uaW1hZ2UgPT09ICcnXCIgY2xhc3M9XCJjb21wbGV0ZXItaW1hZ2UtZGVmYXVsdFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGxldGVyLWl0ZW0tdGV4dFwiIFtuZ0NsYXNzXT1cInsnY29tcGxldGVyLWl0ZW0tdGV4dC1pbWFnZSc6IGl0ZW0uaW1hZ2UgfHwgaXRlbS5pbWFnZSA9PT0gJycgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb21wbGV0ZXItbGlzdC1pdGVtIGNsYXNzPVwiY29tcGxldGVyLXRpdGxlXCIgW3RleHRdPVwiaXRlbS50aXRsZVwiIFttYXRjaENsYXNzXT1cIm1hdGNoQ2xhc3NcIiBbc2VhcmNoU3RyXT1cInNlYXJjaFN0clwiIFt0eXBlXT1cIid0aXRsZSdcIj48L2NvbXBsZXRlci1saXN0LWl0ZW0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvbXBsZXRlci1saXN0LWl0ZW0gKm5nSWY9XCJp