UNPKG

@neocomplexx/ngx-neo-completer-mat

Version:
530 lines 63.1 kB
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