{"version":3,"sources":["webpack:///../node_modules/@syncfusion/ej2-dropdowns/src/multi-select/multi-select.js"],"names":["extendStatics","__extends","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","FOCUS","HIDE_LIST","CHIP","MultiSelect","_super","option","element","_this","call","clearIconWidth","previousFilterText","storedSelectAllHeight","isUpdateHeaderHeight","isUpdateFooterHeight","isBlurDispatching","isFilterPrevented","isFilteringAction","isVirtualReorder","isValidKey","selectAllEventData","selectAllEventEle","preventSetCurrentData","isSelectAllLoop","scrollFocusStatus","keyDownStatus","enableRTL","state","overAllWrapper","classList","add","remove","popupObj","enableRtl","dataBind","requiredModules","modules","enableVirtualization","push","args","member","mode","isGroupChecking","enableGroupCheckBox","prevOnChange","isProtectedOnChange","enableSelectionOrder","allowCustomValue","hideSelectedItem","closePopupOnSelect","updateHTMLAttribute","keys","htmlAttributes","_i","_a","htmlAttr","updatedClassValue","replace","trim","split","popupWrapper","enable","placeholder","inputElement","setAttribute","setProperties","refreshPlaceHolder","indexOf","hiddenElement","updateReadonly","removeAttribute","updateClearButton","overAllClear","parentNode","style","display","componentWrapper","appendChild","updateCssClass","cssClass","updatedCssClassValues","updateOldPropCssClass","oldClass","onPopupShown","e","isDevice","allowFiltering","proxy_1","window","onpopstate","hidePopup","focus","history","pushState","eventArgs","popup","event","cancel","animation","name","duration","trigger","focusAtFirstListItem","document","body","fields","groupBy","updateListItems","list","querySelectorAll","mainList","showDropDownIcon","refreshPopup","renderReactTemplates","show","zIndex","isReact","setTimeout","popupHeight","popupHeightValue","parseInt","headerTemplate","header","listHeight","maxHeight","offsetHeight","toString","footerTemplate","footer","id","updateAriaActiveDescendant","isFirstClick","loadTemplate","showSelectAll","clickHandler","updateVirtualReOrderList","isCheckBoxUpdate","query","getForQuery","value","clone","dataSource","resetList","selectedListData","UpdateSkeleton","liCollections","li","virtualItemCount","itemCount","totalItemCount","querySelector","getElementsByClassName","GetVirtualTrackHeight","virualElement","createElement","className","cssText","getTransformValues","listItems","mainListItems","findGroupStart","deselectHeader","refreshListItems","reOrderList","removeChild","removeFocus","notify","module","isPreventScrollAction","setScrollPosition","allowObjectBinding","valueEle","findListElement","ulElement","scrollBottom","undefined","focusedItem","isKeyBoardAction","isOpen","elements","disabled","viewPortInfo","startIndex","addListFocus","focusAtLastListItem","data","activeElement","ignoreCase","item","isPopupOpen","index","getAriaAttributes","updateListARIA","disableStatus","ensureAriaDisabled","status","attr","removelastSelection","chipCollectionWrapper","getAttribute","tempValues","slice","customValue","getDataByValue","getFormattedValue","removeValue","removeChipSelection","updateDelimeter","delimiterChar","makeTextBoxEmpty","listData","refreshSelection","checkPlaceholderSize","removeSelectedChip","onActionFailure","renderPopup","targetElement","targetInputElement","valuecheck","isCheckbox","predicate","field","isPrimitiveData","startindex","endindex","endIndex","or","where","isaddNonPresentItems","and","adaptor","getQuery","onActionComplete","isUpdated","virtualGroupDataSource","count","every","itemValue","some","val","innerHTML","skeletonCount","updateSelectElementData","splice","presentItemValue","addNonPresentItems","updateActionList","isCustomRendered","text","ignoreAccent","checkForCustomValue","remoteCustomValue","disableGroupHeader","mainData","cloneNode","mainListCollection","inputFocus","tempQuery","keyCode","unwireListEvents","wireListEvents","setInitialValue","selectAllAction","setDynValue","initialTextUpdate","initialValueUpdate","initialUpdate","changeOnBlur","updateValueState","beforePopupOpen","selected","previousSibling","previousElementSibling","contains","group","nextElementSibling","hideGroupItem","listEle","parentElement","l10nUpdate","noData","checkSelectAll","checkMaxSelection","element1","j","temp","temp1","getValidLi","liElement","groupItemLength","listItem","searchCount","searchActiveCount","maximumSelectionLength","virtualSelectAll","openClick","openOnClick","showPopup","keyUp","isWordCharacter","String","fromCharCode","match","ctrlKey","expandTextbox","showOverAllClear","search","filter","isFiltered","remoteFilterAction","dataUpdater","filterQuery","customFilterQuery","virtualFilterQuery","filterAction","dataType","typeOfData","typeof","isClearAllAction","filterType","take","requiresCount","takeValue","getTakeValue","isReOrder","isSkip","queryElements","queries","getModuleName","condition","operator","fn","queryTakeValue","nos","skip","virtualItemStartIndex","isIncrementalRequest","incrementalEndIndex","Math","round","outerHeight","listItemHeight","isDataFetched","isNoData","backCommand","isReordered","scrollTop","previousStartIndex","virtualListInfo","component","contentElement","getFilteringSkeletonCount","allowResize","setResize","dataChecks","getValueByText","customData","dataItem_1","random","emptyObject_1","firstItem","forEach","virtualCustomData","tempData","JSON","parse","stringify","virtualCustomSelectData","concat","isCustomDataUpdated","tempCount","virtualItemEndIndex","isNaN","parseFloat","isRemoteSelection","getNgDirective","wrapperClick","keyboardEvent","enabled","readonly","preventDefault","onBlurHandler","eve","isDocClickFromCheck","isAngular","relatedTarget","floatLabelType","isIE","addTagOnBlur","listLiElement","updateListSelection","updateDataList","updateDelimView","dispatchEvent","focused","removeChipFocus","refreshInputHight","createSpanElement","calculateWidth","elementWidth","clientWidth","getComputedStyle","paddingRight","downIconWidth","dropIcon","offsetWidth","marginRight","setPlaceholderSize","searchWrapper","width","validateValues","newValue","oldValue","sort","newVal","oldVal","initStatus","isInteracted","preventChange","updateTempValue","selectedValueInfo","pageUpSelection","steps","isVirtualKeyAction","collection","previousItem","getIndexByValue","previousFocusItem","pageDownSelection","getItems","render","focusInHandler","showDelimWrapper","viewWrapper","delimiterWrapper","hideDelimWrapper","size","codePoint","charCodeAt","sizeMultiplier","mobFilter","calcPopupWidth","refreshPosition","resolveCollision","checkTextLength","popupKeyActions","updatePopupPosition","updateAriaAttribute","filterInput","homeNavigation","isHome","updateVirtualItemIndex","scrollEle","updateSelectionList","selectedItem","getElementByValue","handleVirtualKeyboardActions","pageCount","activeIndex","arrowDown","arrowUp","isMouseScrollAction","isScrollChanged","onKeyDown","isPreventKeyAction","altKey","getPageCount","selectByKey","spaceKeySelection","escapeAction","keyNavigation","checkBackCommand","moveByList","keyAction","focuseElem","focusFirstListItem","selectAllParent","li_1","moveBy","selectListByKey","hideOverAllClear","selectedLI","isInitialSelection","isInitial","selectedListMargin","marginBottom","isUpwardScrolling","virtualListCount","lastElementValue","selectedLiOffsetTop","offsetTop","currentOffset","nextBottom","nextOffset","isScrollerCHanged","boxRange","fixedHeaderElement","currentElementValue","liCount","isVirtualScrolling","isScrollerAtEnd","scrollHeight","firstElementValue","isPageUpKeyAction","scrollTo","clientHeight","limit","isValidLI","firstElementChild","lastElementChild","isFilterData","textContent","selectAllItem","selectAllCheckBox","childNodes","renderItems","updateInitialData","isVirtualTrackHeight","selectedElem","addChipSelection","currentChip","moveByTop","filterInputClassName","position","currentFocuedListElement","updateCheck","isVirtualElement","elementIndex","focusedLi","isDisabledElement","listItems_1","liItem","chipClick","elem","onChipRemove","which","button","customVal","setFloatLabelType","removeAllItems","isClearAll","mainElement","indexOfObjectInArray","removeVal","invokeCheckboxSelection","currentValue","updateMainList","updateChipStatus","isSelectAll","targetEle","element_1","val_1","itemData","removeIndex","isRemoveSelection","currentRemoveValue","currentText","currentValue_1","hideElement","currentValue_2","scrollStop","removeChip","targetEle_1","currentTarget","isSelectAllTarget","items","isChecked","clearAllCallback","isArray","totalItemsCount","element2","setWidth","objectToFind","array","_loop_1","state_1","addValue","isObjectInArray","getOverflowVal","updateWrapperText","textValues","addListSelection","addChip","activeItems","inactiveItems","dispatchSelect","isNotTrigger","dataValue","val_2","isServerRendered","updateListSelectEventCallback","getChip","closeElements","onMobileChipInteraction","chipElem","chipClose","multiCompiler","multiselectTemplate","checkTemplate","exception","encodeHtmlEntities","input","chip","attrs","chipContent","valueTemplate","valueCompTemp","valueTemplateId","isStringTemplate","enableHtmlSanitizer","innerText","setClass","classes","isPreventChange","showClearButton","popupWidth","mouseIn","mouseOut","listOption","iconCss","fieldProperty","properties","listCurrentOptions","showIcon","ariaAttributes","groupItemRole","checkboxFilter","filterParent","overAllHeight","visibility","setHeaderTemplate","setFooterTemplate","selectAllHeight","popupElement","searchBoxHeight","targetType","X","Y","relateTo","collision","offsetY","close","unwireScrollEvents","checkboxFilterInput","blur","open","wireScrollEvents","offsets","top","targetExitViewport","checkCollision","popupContentElement","isDeviceFullScreen","popupEle","marginTop","headercheck","headerTemplateId","onListMouseDown","footercheck","footerTemplateId","currentData","selectData","currentPageNumber","direction","sentinelInfo","previousEndIndex","remoteDataCount","dataCount","getSkeletonCount","clearAll","selectAllItems","selectedElementID","checkAndResetCache","isClearAllItem","preventSelection","stopPropagation","windowResize","resetValueHandler","formElement","textVal","tagName","wireEvent","onInput","pasteHandler","info","isRequesting","eventArgs_1","preventDefaultAction","updateData","isCustomFiltering","type","updatingincrementalindex","incrementalStartIndex","updateIncrementalInfo","updateIncrementalView","incrementalLiCollections","preRender","initializeData","updateDataAttribute","getLocaleName","initial","isInitialVirtualData","delim","out_index_1","valueLength","hiddenElementContent","_loop_2","valueItem","this_1","listValue","isDynamicRemoteVirtualData","getTextByValue","item_1","lastChild","state_2","isChipRemove","addValidInputClass","textArr","renderList","isEmptyData","noRecordsTemplate","childElementCount","removeListSelection","isCustomData","includes","indexItem","noDataEle","addItem","replaceChild","updateActionCompleteData","updateAddItemList","isDynamicGroupItemUpdate","isReactTemplateUpdate","children","isAngularTemplateUpdate","itemTemplate","removeHover","temp_1","fieldValue","data_1","newData","selectedItems","selectItems","hoveredItem","hover","mainlist","addListHover","delimChar","onMouseClick","visibleListElements","actualCount","virtualListHeight","floor","groupValues","findGroupAttrtibutes","updateCheckBox","listElement","checked","unChecked","groupHeader","checkBoxElement","isDisabled","disableListItem","onMouseOver","currentLi","onMouseLeave","onDocumentClick","focusIn","focusOut","showSpinner","spinnerElement","filterClear","CLOSEICON_CLASS","hideSpinner","wrapperType","wrapperData","tempIndex","wrapperleng","remaining","overAllContainer","l10nLocale","actionFailureTemplate","overflowCountTemplate","totalCountTemplate","l10n","locale","getConstant","remainContent","totalContent","raminElement","remainCompildTemp","remainSize","checkClearIconWidth","paddingLeft","join","totalWidth","updateRemainTemplate","updateRemainWidth","updateRemainingText","firstChild","nodeType","nodeValue","remainTemp","totalTemp","pop","newTemp","unWireEvent","resizingWireEvent","resizePopup","stopResizing","resizingUnWireEvent","groupTemplate","selectionLimit","focusedElement","textboxValueUpdate","updateValue","virtualSelectionAll","virtualSelectAllData","firstItems","createListItems","fragment_1","createDocumentFragment","node","concatenatedNodeList","map","obj","updatedataValueItems","updateHiddenElement","virtualTrackElement","virtualContentElement","beforeSelectArgs","preventSelectEvent","index_1","count_1","virtualSelectAllState","CurrentEvent","isVirtualSelectAll","hiddenValue","wrapperText","isRemoveAll","setZIndex","updateDataSource","prop","onLoadSelect","getPersistData","addOnPersist","onPropertyChanged","newProp","oldProp","isDynamicDataChange","setUpdateInitial","destroy","isDisabledItemByIndex","updateVal","removeDisabledItemsValue","filterBarPlaceholder","height","dropDownIcon","reInitializePoup","removeScrollEvent","msProps","getPropObject","newProperty","oldProperty","dataSourceCount","checkvalue","executeQuery","then","result","isInitRemoteVirtualData","itemIndex","animModel","delay","typedValue","hide","resizer","boxSizing","paddingBottom","startResizing","mainLiLength","liLength","updatevirtualizationList","checkValue","selectAll","clear","SEARCHBOX_WRAPPER","DELIMITER_VIEW","spellcheck","autocomplete","tabindex","role","hasAttribute","insertBefore","opacity","validationAttribute","updateVirtualizationProperties","getListHeight","checkInitialValue","renderComplete","toLowerCase","resizeWidth","resizeHeight","isResizing","clientX","MouseEvent","touches","clientY","originalWidth","originalHeight","originalMouseX","originalMouseY","dx","dy","max","minWidth_1","minWidth","minHeight_1","minHeight","listParent","listParentHeight","getBoundingClientRect","ceil","dataIndex","indexValue","isData","options","optionsElement","valueCol","textCol","optionsLen","opt","listItems_2","executeLocal","checkAutoFocus","disableItem","HTMLLIElement","parsedData","clearTemplate","selectElement","attrArray"],"mappings":"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","file":"c0591ee5-react.js","sourcesContent":["var __extends = this && this.__extends || function () {\n  var extendStatics = function (d, b) {\n    extendStatics = Object.setPrototypeOf || {\n      __proto__: []\n    } instanceof Array && function (d, b) {\n      d.__proto__ = b;\n    } || function (d, b) {\n      for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n    };\n    return extendStatics(d, b);\n  };\n  return function (d, b) {\n    extendStatics(d, b);\n    function __() {\n      this.constructor = d;\n    }\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n  };\n}();\nvar __decorate = this && this.__decorate || function (decorators, target, key, desc) {\n  var c = arguments.length,\n    r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n    d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path='../drop-down-base/drop-down-base-model.d.ts'/>\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { isCollide, Popup, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { attributes, setValue, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, extend } from '@syncfusion/ej2-base';\nimport { EventHandler, Property, Event, compile, L10n } from '@syncfusion/ej2-base';\nimport { Animation, Browser, prepend, Complex } from '@syncfusion/ej2-base';\nimport { Search } from '../common/incremental-search';\nimport { append, addClass, removeClass, closest, detach, remove, select, selectAll } from '@syncfusion/ej2-base';\nimport { getUniqueID, formatUnit, isNullOrUndefined, isUndefined } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Predicate, JsonAdaptor } from '@syncfusion/ej2-data';\nimport { createFloatLabel, removeFloating, floatLabelFocus, floatLabelBlur, encodePlaceholder } from './float-label';\nvar FOCUS = 'e-input-focus';\nvar DISABLED = 'e-disabled';\nvar OVER_ALL_WRAPPER = 'e-multiselect e-input-group e-control-wrapper';\nvar ELEMENT_WRAPPER = 'e-multi-select-wrapper';\nvar ELEMENT_MOBILE_WRAPPER = 'e-mob-wrapper';\nvar HIDE_LIST = 'e-hide-listitem';\nvar DELIMITER_VIEW = 'e-delim-view';\nvar CHIP_WRAPPER = 'e-chips-collection';\nvar CHIP = 'e-chips';\nvar CHIP_CONTENT = 'e-chipcontent';\nvar CHIP_CLOSE = 'e-chips-close';\nvar CHIP_SELECTED = 'e-chip-selected';\nvar SEARCHBOX_WRAPPER = 'e-searcher';\nvar DELIMITER_VIEW_WRAPPER = 'e-delimiter';\nvar ZERO_SIZE = 'e-zero-size';\nvar REMAIN_WRAPPER = 'e-remain';\nvar CLOSEICON_CLASS = 'e-chips-close e-close-hooker';\nvar DELIMITER_WRAPPER = 'e-delim-values';\nvar POPUP_WRAPPER = 'e-ddl e-popup e-multi-select-list-wrapper';\nvar INPUT_ELEMENT = 'e-dropdownbase';\nvar RTL_CLASS = 'e-rtl';\nvar CLOSE_ICON_HIDE = 'e-close-icon-hide';\nvar MOBILE_CHIP = 'e-mob-chip';\nvar FOOTER = 'e-ddl-footer';\nvar HEADER = 'e-ddl-header';\nvar DISABLE_ICON = 'e-ddl-disable-icon';\nvar SPINNER_CLASS = 'e-ms-spinner-icon';\nvar HIDDEN_ELEMENT = 'e-multi-hidden';\nvar destroy = 'destroy';\nvar dropdownIcon = 'e-input-group-icon e-ddl-icon';\nvar iconAnimation = 'e-icon-anim';\nvar TOTAL_COUNT_WRAPPER = 'e-delim-total';\nvar BOX_ELEMENT = 'e-multiselect-box';\nvar FILTERPARENT = 'e-filter-parent';\nvar CUSTOM_WIDTH = 'e-search-custom-width';\nvar FILTERINPUT = 'e-input-filter';\nvar RESIZE_ICON = 'e-resizer-right e-icons';\n/**\n * The Multiselect allows the user to pick a more than one value from list of predefined values.\n * ```html\n * <select id=\"list\">\n *      <option value='1'>Badminton</option>\n *      <option value='2'>Basketball</option>\n *      <option value='3'>Cricket</option>\n *      <option value='4'>Football</option>\n *      <option value='5'>Tennis</option>\n * </select>\n * ```\n * ```typescript\n * <script>\n *   var multiselectObj = new Multiselect();\n *   multiselectObj.appendTo(\"#list\");\n * </script>\n * ```\n */\nvar MultiSelect = /** @class */function (_super) {\n  __extends(MultiSelect, _super);\n  /**\n   * Constructor for creating the DropDownList widget.\n   *\n   * @param {MultiSelectModel} option - Specifies the MultiSelect model.\n   * @param {string | HTMLElement} element - Specifies the element to render as component.\n   * @private\n   */\n  function MultiSelect(option, element) {\n    var _this = _super.call(this, option, element) || this;\n    _this.clearIconWidth = 0;\n    _this.previousFilterText = '';\n    _this.storedSelectAllHeight = 0;\n    _this.isUpdateHeaderHeight = false;\n    _this.isUpdateFooterHeight = false;\n    _this.isBlurDispatching = false;\n    _this.isFilterPrevented = false;\n    _this.isFilteringAction = false;\n    _this.isVirtualReorder = false;\n    _this.isValidKey = false;\n    _this.selectAllEventData = [];\n    _this.selectAllEventEle = [];\n    _this.preventSetCurrentData = false;\n    _this.isSelectAllLoop = false;\n    _this.scrollFocusStatus = false;\n    _this.keyDownStatus = false;\n    return _this;\n  }\n  MultiSelect.prototype.enableRTL = function (state) {\n    if (state) {\n      this.overAllWrapper.classList.add(RTL_CLASS);\n    } else {\n      this.overAllWrapper.classList.remove(RTL_CLASS);\n    }\n    if (this.popupObj) {\n      this.popupObj.enableRtl = state;\n      this.popupObj.dataBind();\n    }\n  };\n  MultiSelect.prototype.requiredModules = function () {\n    var modules = [];\n    if (this.enableVirtualization) {\n      modules.push({\n        args: [this],\n        member: 'VirtualScroll'\n      });\n    }\n    if (this.mode === 'CheckBox') {\n      this.isGroupChecking = this.enableGroupCheckBox;\n      if (this.enableGroupCheckBox) {\n        var prevOnChange = this.isProtectedOnChange;\n        this.isProtectedOnChange = true;\n        this.enableSelectionOrder = false;\n        this.isProtectedOnChange = prevOnChange;\n      }\n      this.allowCustomValue = false;\n      this.hideSelectedItem = false;\n      this.closePopupOnSelect = false;\n      modules.push({\n        member: 'CheckBoxSelection',\n        args: [this]\n      });\n    }\n    return modules;\n  };\n  MultiSelect.prototype.updateHTMLAttribute = function () {\n    if (Object.keys(this.htmlAttributes).length) {\n      for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n        var htmlAttr = _a[_i];\n        switch (htmlAttr) {\n          case 'class':\n            {\n              var updatedClassValue = this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ').trim();\n              if (updatedClassValue !== '') {\n                addClass([this.overAllWrapper], updatedClassValue.split(' '));\n                addClass([this.popupWrapper], updatedClassValue.split(' '));\n              }\n              break;\n            }\n          case 'disabled':\n            this.enable(false);\n            break;\n          case 'placeholder':\n            if (!this.placeholder) {\n              this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n              this.setProperties({\n                placeholder: this.inputElement.placeholder\n              }, true);\n              this.refreshPlaceHolder();\n            }\n            break;\n          default:\n            {\n              var defaultAttr = ['id'];\n              var validateAttr = ['name', 'required', 'aria-required', 'form'];\n              var containerAttr = ['title', 'role', 'style', 'class'];\n              if (defaultAttr.indexOf(htmlAttr) > -1) {\n                this.element.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n              } else if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n                this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n              } else if (containerAttr.indexOf(htmlAttr) > -1) {\n                this.overAllWrapper.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n              } else if (htmlAttr !== 'size' && !isNullOrUndefined(this.inputElement)) {\n                this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n              }\n              break;\n            }\n        }\n      }\n    }\n  };\n  MultiSelect.prototype.updateReadonly = function (state) {\n    if (!isNullOrUndefined(this.inputElement)) {\n      if (state || this.mode === 'CheckBox') {\n        this.inputElement.setAttribute('readonly', 'true');\n      } else {\n        this.inputElement.removeAttribute('readonly');\n      }\n    }\n  };\n  MultiSelect.prototype.updateClearButton = function (state) {\n    if (state) {\n      if (this.overAllClear.parentNode) {\n        this.overAllClear.style.display = '';\n      } else {\n        this.componentWrapper.appendChild(this.overAllClear);\n      }\n      this.componentWrapper.classList.remove(CLOSE_ICON_HIDE);\n    } else {\n      this.overAllClear.style.display = 'none';\n      this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n    }\n  };\n  MultiSelect.prototype.updateCssClass = function () {\n    if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n      var updatedCssClassValues = this.cssClass;\n      updatedCssClassValues = this.cssClass.replace(/\\s+/g, ' ').trim();\n      if (updatedCssClassValues !== '') {\n        addClass([this.overAllWrapper], updatedCssClassValues.split(' '));\n        addClass([this.popupWrapper], updatedCssClassValues.split(' '));\n      }\n    }\n  };\n  MultiSelect.prototype.updateOldPropCssClass = function (oldClass) {\n    if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n      oldClass = oldClass.replace(/\\s+/g, ' ').trim();\n      if (oldClass !== '') {\n        removeClass([this.overAllWrapper], oldClass.split(' '));\n        removeClass([this.popupWrapper], oldClass.split(' '));\n      }\n    }\n  };\n  MultiSelect.prototype.onPopupShown = function (e) {\n    var _this = this;\n    if (Browser.isDevice && this.mode === 'CheckBox' && this.allowFiltering) {\n      // eslint-disable-next-line @typescript-eslint/no-this-alias\n      var proxy_1 = this;\n      window.onpopstate = function () {\n        proxy_1.hidePopup();\n        proxy_1.inputElement.focus();\n      };\n      history.pushState({}, '');\n    }\n    var animModel = {\n      name: 'FadeIn',\n      duration: 100\n    };\n    var eventArgs = {\n      popup: this.popupObj,\n      event: e,\n      cancel: false,\n      animation: animModel\n    };\n    this.trigger('open', eventArgs, function (eventArgs) {\n      if (!eventArgs.cancel) {\n        _this.focusAtFirstListItem(true);\n        if (_this.popupObj) {\n          document.body.appendChild(_this.popupObj.element);\n        }\n        if (_this.mode === 'CheckBox' && _this.enableGroupCheckBox && !isNullOrUndefined(_this.fields.groupBy)) {\n          _this.updateListItems(_this.list.querySelectorAll('li.e-list-item'), _this.mainList.querySelectorAll('li.e-list-item'));\n        }\n        if (_this.mode === 'CheckBox' || _this.showDropDownIcon) {\n          addClass([_this.overAllWrapper], [iconAnimation]);\n        }\n        _this.refreshPopup();\n        _this.renderReactTemplates();\n        if (_this.popupObj) {\n          _this.popupObj.show(eventArgs.animation, _this.zIndex === 1000 ? _this.element : null);\n        }\n        if (_this.isReact) {\n          setTimeout(function () {\n            if (_this.popupHeight && _this.list && _this.popupHeight !== 'auto') {\n              var popupHeightValue = typeof _this.popupHeight === 'string' ? parseInt(_this.popupHeight, 10) : _this.popupHeight;\n              if (!_this.isUpdateHeaderHeight && _this.headerTemplate && _this.header) {\n                var listHeight = _this.list.style.maxHeight === '' ? popupHeightValue : parseInt(_this.list.style.maxHeight, 10);\n                _this.list.style.maxHeight = (listHeight - _this.header.offsetHeight).toString() + 'px';\n                _this.isUpdateHeaderHeight = true;\n              }\n              if (!_this.isUpdateFooterHeight && _this.footerTemplate && _this.footer) {\n                var listHeight = _this.list.style.maxHeight === '' ? popupHeightValue : parseInt(_this.list.style.maxHeight, 10);\n                _this.list.style.maxHeight = (listHeight - _this.footer.offsetHeight).toString() + 'px';\n                _this.isUpdateFooterHeight = true;\n              }\n            }\n          }, 15);\n        }\n        attributes(_this.inputElement, {\n          'aria-expanded': 'true',\n          'aria-owns': _this.element.id + '_popup',\n          'aria-controls': _this.element.id\n        });\n        _this.updateAriaActiveDescendant();\n        if (_this.isFirstClick) {\n          if (!_this.enableVirtualization) {\n            _this.loadTemplate();\n          }\n        }\n        if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n          EventHandler.add(_this.popupObj.element, 'click', _this.clickHandler, _this);\n        }\n      }\n    });\n  };\n  MultiSelect.prototype.updateVirtualReOrderList = function (isCheckBoxUpdate) {\n    var query = this.getForQuery(this.value, true).clone();\n    this.isVirtualReorder = true;\n    if (this.enableVirtualization && this.dataSource instanceof DataManager) {\n      this.resetList(this.selectedListData, this.fields, query);\n    } else {\n      this.resetList(this.dataSource, this.fields, query);\n    }\n    this.isVirtualReorder = false;\n    this.UpdateSkeleton();\n    this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n    this.virtualItemCount = this.itemCount;\n    if (this.mode !== 'CheckBox') {\n      this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n    }\n    if (!this.list.querySelector('.e-virtual-ddl')) {\n      var virualElement = this.createElement('div', {\n        id: this.element.id + '_popup',\n        className: 'e-virtual-ddl'\n      });\n      virualElement.style.cssText = this.GetVirtualTrackHeight();\n      this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n    } else {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n    }\n    if (this.list.querySelector('.e-virtual-ddl-content')) {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n    }\n    if (isCheckBoxUpdate) {\n      this.loadTemplate();\n    }\n  };\n  MultiSelect.prototype.updateListItems = function (listItems, mainListItems) {\n    for (var i = 0; i < listItems.length; i++) {\n      this.findGroupStart(listItems[i]);\n      this.findGroupStart(mainListItems[i]);\n    }\n    this.deselectHeader();\n  };\n  MultiSelect.prototype.loadTemplate = function () {\n    this.refreshListItems(null);\n    if (this.enableVirtualization && this.list && this.mode === 'CheckBox') {\n      var reOrderList = this.list.querySelectorAll('.e-reorder')[0];\n      if (this.list.querySelector('.e-virtual-ddl-content') && reOrderList) {\n        this.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList);\n      }\n    }\n    if (this.mode === 'CheckBox') {\n      this.removeFocus();\n    }\n    this.notify('reOrder', {\n      module: 'CheckBoxSelection',\n      enable: this.mode === 'CheckBox',\n      e: this\n    });\n    this.isPreventScrollAction = true;\n  };\n  MultiSelect.prototype.setScrollPosition = function () {\n    if ((!this.hideSelectedItem && this.mode !== 'CheckBox' || this.mode === 'CheckBox' && !this.enableSelectionOrder) && !isNullOrUndefined(this.value) && this.value.length > 0) {\n      var value = this.allowObjectBinding ? getValue(this.fields.value ? this.fields.value : '', this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n      var valueEle = this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n      if (!isNullOrUndefined(valueEle)) {\n        this.scrollBottom(valueEle, undefined, false, null, true);\n      }\n    }\n    if (this.enableVirtualization) {\n      var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n      this.isKeyBoardAction = false;\n      this.scrollBottom(focusedItem, undefined, false, null, true);\n    }\n  };\n  MultiSelect.prototype.focusAtFirstListItem = function (isOpen) {\n    if (this.ulElement && this.ulElement.querySelector('li.' + dropDownBaseClasses.li)) {\n      var element = void 0;\n      if (this.mode === 'CheckBox') {\n        this.removeFocus();\n        return;\n      } else {\n        if (this.enableVirtualization) {\n          if (this.fields.disabled) {\n            element = this.ulElement.querySelector('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)' + ':not(.' + DISABLED + ')');\n            if (isOpen && this.viewPortInfo && this.viewPortInfo.startIndex !== 0) {\n              var elements = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');\n              element = elements && elements.length > 0 ? elements[2] : element;\n            }\n          } else {\n            element = this.ulElement.querySelector('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');\n            if (isOpen && this.viewPortInfo && this.viewPortInfo.startIndex !== 0) {\n              var elements = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');\n              element = elements && elements.length > 0 ? elements[2] : element;\n            }\n          }\n        } else {\n          if (this.fields.disabled) {\n            element = this.ulElement.querySelector('li.' + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.' + DISABLED + ')');\n          } else {\n            element = this.ulElement.querySelector('li.' + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n          }\n        }\n      }\n      if (element !== null) {\n        this.removeFocus();\n        this.addListFocus(element);\n      }\n    }\n  };\n  MultiSelect.prototype.focusAtLastListItem = function (data) {\n    var activeElement;\n    if (data) {\n      activeElement = Search(data, this.liCollections, 'StartsWith', this.ignoreCase);\n    } else {\n      if (this.value && this.value.length) {\n        var value = this.allowObjectBinding ? getValue(this.fields.value ? this.fields.value : '', this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n        Search(value, this.liCollections, 'StartsWith', this.ignoreCase);\n      } else {\n        activeElement = null;\n      }\n    }\n    if (activeElement && activeElement.item !== null) {\n      this.addListFocus(activeElement.item);\n      if ((this.allowCustomValue || this.allowFiltering) && this.isPopupOpen() && this.closePopupOnSelect && !this.enableVirtualization || this.closePopupOnSelect && !this.enableVirtualization) {\n        this.scrollBottom(activeElement.item, activeElement.index);\n      }\n    }\n  };\n  MultiSelect.prototype.getAriaAttributes = function () {\n    var ariaAttributes = {\n      'aria-disabled': 'false',\n      'role': 'combobox',\n      'aria-expanded': 'false'\n    };\n    return ariaAttributes;\n  };\n  MultiSelect.prototype.updateListARIA = function () {\n    if (!isNullOrUndefined(this.ulElement)) {\n      attributes(this.ulElement, {\n        'id': this.element.id + '_options',\n        'role': 'listbox',\n        'aria-hidden': 'false',\n        'aria-label': 'list'\n      });\n    }\n    var disableStatus = !isNullOrUndefined(this.inputElement) && this.inputElement.disabled ? true : false;\n    if (!this.isPopupOpen() && !isNullOrUndefined(this.inputElement)) {\n      attributes(this.inputElement, this.getAriaAttributes());\n    }\n    if (disableStatus) {\n      attributes(this.inputElement, {\n        'aria-disabled': 'true'\n      });\n    }\n    this.ensureAriaDisabled(disableStatus ? 'true' : 'false');\n  };\n  MultiSelect.prototype.ensureAriaDisabled = function (status) {\n    if (this.htmlAttributes && this.htmlAttributes['aria-disabled']) {\n      var attr = this.htmlAttributes;\n      extend(attr, {\n        'aria-disabled': status\n      }, attr);\n      this.setProperties({\n        htmlAttributes: attr\n      }, true);\n    }\n  };\n  MultiSelect.prototype.removelastSelection = function (e) {\n    var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n    if (selectedElem !== null) {\n      this.removeSelectedChip(e);\n      return;\n    }\n    var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n    var value = elements[elements.length - 1].getAttribute('data-value');\n    if (!isNullOrUndefined(this.value)) {\n      this.tempValues = this.allowObjectBinding ? this.value.slice() : this.value.slice();\n    }\n    var customValue = this.allowObjectBinding ? this.getDataByValue(this.getFormattedValue(value)) : this.getFormattedValue(value);\n    if (this.allowCustomValue && (value !== 'false' && customValue === false || !isNullOrUndefined(customValue) && customValue.toString() === 'NaN')) {\n      customValue = value;\n    }\n    this.removeValue(customValue, e);\n    this.removeChipSelection();\n    this.updateDelimeter(this.delimiterChar, e);\n    this.makeTextBoxEmpty();\n    if (this.mainList && this.listData) {\n      this.refreshSelection();\n    }\n    this.checkPlaceholderSize();\n  };\n  MultiSelect.prototype.onActionFailure = function (e) {\n    _super.prototype.onActionFailure.call(this, e);\n    this.renderPopup();\n    this.onPopupShown();\n  };\n  MultiSelect.prototype.targetElement = function () {\n    this.targetInputElement = this.inputElement;\n    if (this.mode === 'CheckBox' && this.allowFiltering) {\n      this.notify('targetElement', {\n        module: 'CheckBoxSelection',\n        enable: this.mode === 'CheckBox'\n      });\n    }\n    return this.targetInputElement.value;\n  };\n  MultiSelect.prototype.getForQuery = function (valuecheck, isCheckbox) {\n    var predicate;\n    var field = this.isPrimitiveData ? '' : this.fields.value;\n    if (this.enableVirtualization && valuecheck) {\n      if (isCheckbox) {\n        var startindex = this.viewPortInfo.startIndex;\n        var endindex = startindex + this.viewPortInfo.endIndex <= valuecheck.length && valuecheck[startindex + this.viewPortInfo.endIndex] ? startindex + this.viewPortInfo.endIndex : valuecheck.length;\n        for (var i = startindex; i < endindex; i++) {\n          var value = this.allowObjectBinding ? getValue(this.fields.value ? this.fields.value : '', valuecheck[i]) : valuecheck[i];\n          if (i === startindex) {\n            predicate = new Predicate(field, 'equal', value);\n          } else {\n            predicate = predicate.or(field, 'equal', value);\n          }\n        }\n        return new Query().where(predicate);\n      } else {\n        for (var i = 0; i < valuecheck.length; i++) {\n          var value = this.allowObjectBinding ? getValue(this.fields.value ? this.fields.value : '', valuecheck[i]) : valuecheck[i];\n          if (this.isaddNonPresentItems) {\n            predicate = i === 0 ? new Predicate(field, 'equal', valuecheck[i]) : predicate.or(field, 'equal', valuecheck[i]);\n          } else {\n            predicate = i === 0 ? predicate = new Predicate(field, 'notequal', value) : predicate.and(field, 'notequal', value);\n          }\n        }\n        return new Query().where(predicate);\n      }\n    } else {\n      for (var i = 0; i < valuecheck.length; i++) {\n        if (i === 0) {\n          predicate = new Predicate(field, 'equal', valuecheck[i]);\n        } else {\n          predicate = predicate.or(field, 'equal', valuecheck[i]);\n        }\n      }\n    }\n    if (this.dataSource instanceof DataManager && this.dataSource.adaptor instanceof JsonAdaptor) {\n      return new Query().where(predicate);\n    } else {\n      return this.getQuery(this.query).clone().where(predicate);\n    }\n  };\n  /* eslint-disable @typescript-eslint/no-unused-vars */\n  MultiSelect.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n    var _this = this;\n    if (this.dataSource instanceof DataManager && !isNullOrUndefined(e) && !this.virtualGroupDataSource) {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      this.totalItemCount = e.count;\n    }\n    if (this.value && list && list.length > 0 && this.allowFiltering && this.mode !== 'CheckBox' && !this.enableVirtualization && !this.isFilterPrevented && !this.allowCustomValue && this.isFilteringAction) {\n      var allItemsInValue = list.every(function (item) {\n        var itemValue = getValue(_this.fields.value ? _this.fields.value : '', item);\n        return _this.value.some(function (val) {\n          var value = _this.allowObjectBinding ? getValue(_this.fields.value ? _this.fields.value : '', val) : val;\n          return itemValue === value;\n        });\n      });\n      if (allItemsInValue) {\n        ulElement.innerHTML = '';\n        list = [];\n      }\n    }\n    /* eslint-enable @typescript-eslint/no-unused-vars */\n    _super.prototype.onActionComplete.call(this, ulElement, list, e);\n    this.skeletonCount = this.totalItemCount !== 0 && this.totalItemCount < this.itemCount * 2 && (!(this.dataSource instanceof DataManager) || this.dataSource instanceof DataManager && this.totalItemCount <= this.itemCount) ? 0 : this.skeletonCount;\n    this.updateSelectElementData(this.allowFiltering);\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    var proxy = this;\n    if (!isNullOrUndefined(this.value) && !this.allowCustomValue && !this.enableVirtualization && this.listData && this.listData.length > 0) {\n      for (var i = 0; i < this.value.length; i++) {\n        var value = this.allowObjectBinding ? getValue(this.fields.value ? this.fields.value : '', proxy.value[i]) : proxy.value[i];\n        var checkEle = this.findListElement(this.allowFiltering && !isNullOrUndefined(this.mainList) ? this.mainList : ulElement, 'li', 'data-value', value);\n        if (!checkEle && !(this.dataSource instanceof DataManager)) {\n          this.value.splice(i, 1);\n          i -= 1;\n        }\n      }\n    }\n    var valuecheck = [];\n    if (!isNullOrUndefined(this.value)) {\n      valuecheck = this.presentItemValue(this.ulElement);\n    }\n    if (valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value) && this.listData != null) {\n      this.isaddNonPresentItems = true;\n      this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n      this.isaddNonPresentItems = false;\n    } else {\n      this.updateActionList(ulElement, list, e);\n    }\n    if (this.dataSource instanceof DataManager && this.allowCustomValue && !this.isCustomRendered && this.inputElement.value && this.inputElement.value !== '') {\n      var query = new Query();\n      query = this.allowFiltering ? query.where(this.fields.text, 'startswith', this.inputElement.value, this.ignoreCase, this.ignoreAccent) : query;\n      this.checkForCustomValue(query, this.fields);\n      this.isCustomRendered = true;\n      this.remoteCustomValue = this.enableVirtualization ? false : this.remoteCustomValue;\n    }\n    if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy) && !isNullOrUndefined(this.fields.disabled)) {\n      this.disableGroupHeader();\n    }\n    if (this.dataSource instanceof DataManager && this.mode === 'CheckBox' && this.allowFiltering) {\n      this.removeFocus();\n    }\n  };\n  /* eslint-disable @typescript-eslint/no-unused-vars */\n  MultiSelect.prototype.updateActionList = function (ulElement, list, e, isUpdated) {\n    /* eslint-enable @typescript-eslint/no-unused-vars */\n    if (this.mode === 'CheckBox' && this.showSelectAll) {\n      this.notify('selectAll', {\n        module: 'CheckBoxSelection',\n        enable: this.mode === 'CheckBox'\n      });\n    }\n    if (!this.mainList && !this.mainData) {\n      this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n      this.mainData = list;\n      this.mainListCollection = this.liCollections;\n    } else if (isNullOrUndefined(this.mainData) || this.mainData.length === 0) {\n      this.mainData = list;\n    }\n    if ((this.remoteCustomValue || list.length <= 0) && this.allowCustomValue && this.inputFocus && this.allowFiltering && this.inputElement.value && this.inputElement.value !== '') {\n      this.checkForCustomValue(this.tempQuery, this.fields);\n      if (this.isCustomRendered) {\n        return;\n      }\n    }\n    if (this.value && this.value.length && (this.mode !== 'CheckBox' && !isNullOrUndefined(this.inputElement) && this.inputElement.value.trim() !== '' || this.mode === 'CheckBox' || (this.keyCode === 8 || this.keyCode === 46) && this.allowFiltering && this.allowCustomValue && this.dataSource instanceof DataManager && this.inputElement.value === '')) {\n      this.refreshSelection();\n    }\n    this.updateListARIA();\n    this.unwireListEvents();\n    this.wireListEvents();\n    if (!isNullOrUndefined(this.setInitialValue)) {\n      this.setInitialValue();\n    }\n    if (!isNullOrUndefined(this.selectAllAction)) {\n      this.selectAllAction();\n    }\n    if (this.setDynValue) {\n      if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n        this.initialTextUpdate();\n      }\n      if (!this.enableVirtualization || this.enableVirtualization && !(this.dataSource instanceof DataManager)) {\n        this.initialValueUpdate();\n      } else {\n        this.initialValueUpdate(this.listData, true);\n      }\n      this.initialUpdate();\n      this.refreshPlaceHolder();\n      if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n        this.updateValueState(null, this.value, null);\n      }\n    }\n    this.renderPopup();\n    if (this.beforePopupOpen) {\n      this.beforePopupOpen = false;\n      this.onPopupShown(e);\n    }\n  };\n  MultiSelect.prototype.refreshSelection = function () {\n    var value;\n    var element;\n    var className = this.hideSelectedItem ? HIDE_LIST : dropDownBaseClasses.selected;\n    if (!isNullOrUndefined(this.value)) {\n      for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n        value = this.allowObjectBinding ? getValue(this.fields.value ? this.fields.value : '', this.value[index]) : this.value[index];\n        element = this.findListElement(this.list, 'li', 'data-value', value);\n        if (element) {\n          addClass([element], className);\n          if (this.hideSelectedItem && element.previousSibling && element.previousElementSibling.classList.contains(dropDownBaseClasses.group) && (!element.nextElementSibling || element.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n            addClass([element.previousElementSibling], className);\n          }\n          if (this.hideSelectedItem && this.fields.groupBy && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n            this.hideGroupItem(value);\n          }\n          if (this.hideSelectedItem && element.classList.contains(dropDownBaseClasses.focus)) {\n            removeClass([element], dropDownBaseClasses.focus);\n            var listEle = element.parentElement.querySelectorAll('.' + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.' + DISABLED + ')');\n            if (listEle.length > 0) {\n              addClass([listEle[0]], dropDownBaseClasses.focus);\n              this.updateAriaActiveDescendant();\n            } else {\n              //EJ2-57588 - for this task, we prevent the ul element cloning ( this.ulElement = this.ulElement.cloneNode ? <HTMLElement>this.ulElement.cloneNode(true) : this.ulElement;)\n              if (!(this.list && this.list.querySelectorAll('.' + dropDownBaseClasses.li).length > 0)) {\n                this.l10nUpdate();\n                addClass([this.list], dropDownBaseClasses.noData);\n              }\n            }\n          }\n          element.setAttribute('aria-selected', 'true');\n          if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n            var ariaValue = element.getElementsByClassName('e-check').length;\n            if (ariaValue === 0) {\n              var args = {\n                module: 'CheckBoxSelection',\n                enable: this.mode === 'CheckBox',\n                li: element,\n                e: null\n              };\n              this.notify('updatelist', args);\n            }\n          }\n        }\n      }\n    }\n    this.checkSelectAll();\n    this.checkMaxSelection();\n  };\n  MultiSelect.prototype.hideGroupItem = function (value) {\n    var element;\n    var element1;\n    var className = this.hideSelectedItem ? HIDE_LIST : dropDownBaseClasses.selected;\n    element1 = element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n    var i = 0;\n    var j = 0;\n    var temp = true;\n    var temp1 = true;\n    do {\n      if (element && element.previousElementSibling && !element.previousElementSibling.classList.contains(HIDE_LIST) && element.previousElementSibling.classList.contains(dropDownBaseClasses.li)) {\n        temp = false;\n      }\n      if (!temp || !element || element.previousElementSibling && element.previousElementSibling.classList.contains(dropDownBaseClasses.group)) {\n        i = 10;\n      } else {\n        element = element.previousElementSibling;\n      }\n      if (element1 && element1.nextElementSibling && !element1.nextElementSibling.classList.contains(HIDE_LIST) && element1.nextElementSibling.classList.contains(dropDownBaseClasses.li)) {\n        temp1 = false;\n      }\n      if (!temp1 || !element1 || element1.nextElementSibling && element1.nextElementSibling.classList.contains(dropDownBaseClasses.group)) {\n        j = 10;\n      } else {\n        element1 = element1.nextElementSibling;\n      }\n    } while (i < 10 || j < 10);\n    if (temp && temp1 && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n      addClass([element.previousElementSibling], className);\n    } else if (temp && temp1 && element.previousElementSibling.classList.contains(HIDE_LIST)) {\n      removeClass([element.previousElementSibling], className);\n    }\n  };\n  MultiSelect.prototype.getValidLi = function () {\n    var liElement = this.ulElement.querySelector('li.' + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n    return !isNullOrUndefined(liElement) ? liElement : this.liCollections[0];\n  };\n  MultiSelect.prototype.checkSelectAll = function () {\n    var groupItemLength = !isNullOrUndefined(this.fields.disabled) ? this.list.querySelectorAll('li.e-list-group-item.e-active:not(.e-disabled)').length : this.list.querySelectorAll('li.e-list-group-item.e-active').length;\n    var listItem = this.list.querySelectorAll('li.e-list-item');\n    var searchCount = this.enableVirtualization ? this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)').length : !isNullOrUndefined(this.fields.disabled) ? this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-disabled)').length : this.list.querySelectorAll('li.' + dropDownBaseClasses.li).length;\n    var searchActiveCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.selected).length;\n    if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n      searchActiveCount = searchActiveCount - groupItemLength;\n    }\n    if (!this.enableVirtualization && (searchCount === searchActiveCount || searchActiveCount === this.maximumSelectionLength) && this.mode === 'CheckBox' && this.showSelectAll || this.enableVirtualization && this.mode === 'CheckBox' && this.showSelectAll && this.virtualSelectAll && this.value && this.value.length === this.totalItemCount) {\n      this.notify('checkSelectAll', {\n        module: 'CheckBoxSelection',\n        enable: this.mode === 'CheckBox',\n        value: 'check'\n      });\n    } else if (searchCount !== searchActiveCount && this.mode === 'CheckBox' && this.showSelectAll && (!this.enableVirtualization || this.enableVirtualization && !this.virtualSelectAll)) {\n      this.notify('checkSelectAll', {\n        module: 'CheckBoxSelection',\n        enable: this.mode === 'CheckBox',\n        value: 'uncheck'\n      });\n    }\n    if (this.enableGroupCheckBox && this.fields.groupBy && !this.enableSelectionOrder) {\n      for (var i = 0; i < listItem.length; i++) {\n        this.findGroupStart(listItem[i]);\n      }\n      this.deselectHeader();\n    }\n  };\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  MultiSelect.prototype.openClick = function (e) {\n    if (!this.openOnClick && this.mode !== 'CheckBox' && !this.isPopupOpen()) {\n      if (this.targetElement() !== '') {\n        this.showPopup();\n      } else {\n        this.hidePopup(e);\n      }\n    } else if (!this.openOnClick && this.mode === 'CheckBox' && !this.isPopupOpen()) {\n      this.showPopup();\n    }\n  };\n  MultiSelect.prototype.keyUp = function (e) {\n    if (this.mode === 'CheckBox' && !this.openOnClick) {\n      var char = String.fromCharCode(e.keyCode);\n      var isWordCharacter = char.match(/\\w/);\n      if (!isNullOrUndefined(isWordCharacter)) {\n        this.isValidKey = true;\n      }\n    }\n    this.isValidKey = this.isPopupOpen() && e.keyCode === 8 || this.isValidKey;\n    this.isValidKey = e.ctrlKey && e.keyCode === 86 ? false : this.isValidKey;\n    if (this.isValidKey && this.inputElement) {\n      this.isValidKey = false;\n      this.expandTextbox();\n      this.showOverAllClear();\n      switch (e.keyCode) {\n        default:\n          // For filtering works in mobile firefox\n          this.search(e);\n      }\n    }\n  };\n  /**\n   * To filter the multiselect data from given data source by using query\n   *\n   * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n   * @param {Query} query - Specify the query to filter the data.\n   * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n   * @returns {void}\n   */\n  MultiSelect.prototype.filter = function (dataSource, query, fields) {\n    this.isFiltered = true;\n    this.remoteFilterAction = true;\n    this.dataUpdater(dataSource, query, fields);\n  };\n  MultiSelect.prototype.getQuery = function (query) {\n    var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n    if (this.isFiltered) {\n      if (this.enableVirtualization && !isNullOrUndefined(this.customFilterQuery)) {\n        filterQuery = this.customFilterQuery.clone();\n        return this.virtualFilterQuery(filterQuery);\n      } else if (!this.enableVirtualization) {\n        return filterQuery;\n      }\n    }\n    if (this.filterAction) {\n      if (this.targetElement() !== null && !this.enableVirtualization || this.enableVirtualization && this.targetElement() !== null && this.targetElement().trim() !== '') {\n        var dataType = this.typeOfData(this.dataSource).typeof;\n        if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n          filterQuery.where('', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n        } else if (this.enableVirtualization && this.targetElement() !== '' && !this.isClearAllAction || !this.enableVirtualization) {\n          var fields = this.fields;\n          filterQuery.where(!isNullOrUndefined(fields.text) ? fields.text : '', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n        }\n      }\n      if (this.enableVirtualization && this.viewPortInfo.endIndex !== 0 && !this.virtualSelectAll) {\n        return this.virtualFilterQuery(filterQuery);\n      }\n      if (this.virtualSelectAll) {\n        return query ? query.take(this.maximumSelectionLength).requiresCount() : this.query ? this.query.take(this.maximumSelectionLength).requiresCount() : new Query().take(this.maximumSelectionLength).requiresCount();\n      }\n      return filterQuery;\n    } else {\n      if (this.enableVirtualization && this.viewPortInfo.endIndex !== 0 && !this.virtualSelectAll) {\n        return this.virtualFilterQuery(filterQuery);\n      }\n      if (this.virtualSelectAll) {\n        return query ? query.take(this.maximumSelectionLength).requiresCount() : this.query ? this.query.take(this.maximumSelectionLength).requiresCount() : new Query().take(this.maximumSelectionLength).requiresCount();\n      }\n      return query ? query : this.query ? this.query : new Query();\n    }\n  };\n  MultiSelect.prototype.virtualFilterQuery = function (filterQuery) {\n    var takeValue = this.getTakeValue();\n    var isReOrder = true;\n    var isSkip = true;\n    var isTake = true;\n    for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n      if (this.getModuleName() === 'multiselect' && (filterQuery.queries[queryElements].e && filterQuery.queries[queryElements].e.condition === 'or' || filterQuery.queries[queryElements].e && filterQuery.queries[queryElements].e.operator === 'equal')) {\n        isReOrder = false;\n      }\n      if (filterQuery.queries[queryElements].fn === 'onSkip') {\n        isSkip = false;\n      }\n      if (filterQuery.queries[queryElements].fn === 'onTake') {\n        isTake = false;\n      }\n    }\n    var queryTakeValue = 0;\n    if (filterQuery && filterQuery.queries.length > 0) {\n      for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n        if (filterQuery.queries[queryElements].fn === 'onTake') {\n          queryTakeValue = takeValue <= filterQuery.queries[queryElements].e.nos ? filterQuery.queries[queryElements].e.nos : takeValue;\n        }\n      }\n    }\n    if (queryTakeValue <= 0 && this.query && this.query.queries.length > 0) {\n      for (var queryElements = 0; queryElements < this.query.queries.length; queryElements++) {\n        if (this.query.queries[queryElements].fn === 'onTake') {\n          queryTakeValue = takeValue <= this.query.queries[queryElements].e.nos ? this.query.queries[queryElements].e.nos : takeValue;\n        }\n      }\n    }\n    if (filterQuery && filterQuery.queries.length > 0) {\n      for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n        if (filterQuery.queries[queryElements].fn === 'onTake') {\n          queryTakeValue = filterQuery.queries[queryElements].e.nos <= queryTakeValue ? queryTakeValue : filterQuery.queries[queryElements].e.nos;\n          filterQuery.queries.splice(queryElements, 1);\n          --queryElements;\n        }\n      }\n    }\n    if (this.allowFiltering && isSkip || !isReOrder || !this.allowFiltering && isSkip && !this.isVirtualReorder) {\n      if (!isReOrder) {\n        filterQuery.skip(this.viewPortInfo.startIndex);\n      } else {\n        filterQuery.skip(this.virtualItemStartIndex);\n      }\n    }\n    if (this.isIncrementalRequest) {\n      filterQuery.take(this.incrementalEndIndex);\n    } else if (queryTakeValue > 0) {\n      filterQuery.take(queryTakeValue);\n    } else {\n      filterQuery.take(takeValue);\n    }\n    filterQuery.requiresCount();\n    this.customFilterQuery = null;\n    return filterQuery;\n  };\n  MultiSelect.prototype.getTakeValue = function () {\n    return this.allowFiltering && Browser.isDevice ? Math.round(window.outerHeight / this.listItemHeight) : this.itemCount;\n  };\n  MultiSelect.prototype.dataUpdater = function (dataSource, query, fields) {\n    this.isDataFetched = false;\n    var isNoData = this.list.classList.contains(dropDownBaseClasses.noData);\n    if (this.targetElement().trim() === '') {\n      var list = this.enableVirtualization ? this.list.cloneNode(true) : this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n      if (this.backCommand || this.enableVirtualization && this.mode === 'CheckBox' && this.value && this.value.length > 0) {\n        this.remoteCustomValue = false;\n        var isReordered = false;\n        if (this.allowCustomValue && list.querySelectorAll('li').length === 0 && this.mainData.length > 0) {\n          this.mainData = [];\n        }\n        if (this.enableVirtualization) {\n          if (this.allowFiltering) {\n            this.isPreventScrollAction = true;\n            this.list.scrollTop = 0;\n            this.previousStartIndex = 0;\n            this.virtualListInfo = null;\n          }\n          if (this.value && this.value.length > 0 && this.mode === 'CheckBox') {\n            this.notify('setCurrentViewDataAsync', {\n              component: this.getModuleName(),\n              module: 'VirtualScroll'\n            });\n            isReordered = true;\n          } else {\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n            this.resetList(dataSource, fields, query);\n            if (this.mode !== 'CheckBox') {\n              this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n            }\n            this.UpdateSkeleton();\n            if ((isNoData || this.allowCustomValue) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n              if (!this.list.querySelector('.e-virtual-ddl-content')) {\n                var contentElement = this.createElement('div', {\n                  className: 'e-virtual-ddl-content'\n                });\n                contentElement.style.cssText = this.getTransformValues();\n                this.list.appendChild(contentElement).appendChild(this.list.querySelector('.e-list-parent'));\n              }\n              if (!this.list.querySelector('.e-virtual-ddl')) {\n                var virualElement = this.createElement('div', {\n                  id: this.element.id + '_popup',\n                  className: 'e-virtual-ddl'\n                });\n                virualElement.style.cssText = this.GetVirtualTrackHeight();\n                document.getElementsByClassName('e-multi-select-list-wrapper')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n              }\n            }\n          }\n        }\n        this.onActionComplete(list, this.mainData);\n        if (this.value && this.value.length) {\n          this.refreshSelection();\n        }\n        if (this.keyCode !== 8) {\n          this.focusAtFirstListItem();\n        }\n        if (!isReordered) {\n          this.notify('reOrder', {\n            module: 'CheckBoxSelection',\n            enable: this.mode === 'CheckBox',\n            e: this\n          });\n        }\n      }\n    } else {\n      if (this.enableVirtualization && this.allowFiltering) {\n        this.isPreventScrollAction = true;\n        this.list.scrollTop = 0;\n        this.previousStartIndex = 0;\n        this.virtualListInfo = null;\n        if (this.list.querySelector('.e-list-parent' + '.e-reorder')) {\n          this.list.querySelector('.e-list-parent' + '.e-reorder').remove();\n        }\n      }\n      this.resetList(dataSource, fields, query);\n      if (this.enableVirtualization && (isNoData || this.allowCustomValue) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n        if (!this.list.querySelector('.e-virtual-ddl-content')) {\n          var contentElement = this.createElement('div', {\n            className: 'e-virtual-ddl-content'\n          });\n          contentElement.style.cssText = this.getTransformValues();\n          this.list.appendChild(contentElement).appendChild(this.list.querySelector('.e-list-parent'));\n        }\n        if (this.mode !== 'CheckBox') {\n          this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n        }\n        if (!this.list.querySelector('.e-virtual-ddl')) {\n          var virualElement = this.createElement('div', {\n            id: this.element.id + '_popup',\n            className: 'e-virtual-ddl'\n          });\n          virualElement.style.cssText = this.GetVirtualTrackHeight();\n          document.getElementsByClassName('e-multi-select-list-wrapper')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n        }\n      }\n      if (this.allowCustomValue) {\n        if (!(dataSource instanceof DataManager)) {\n          this.checkForCustomValue(query, fields);\n        } else {\n          this.remoteCustomValue = true;\n          this.tempQuery = query;\n        }\n      }\n    }\n    if (this.enableVirtualization && this.allowFiltering) {\n      this.getFilteringSkeletonCount();\n    }\n    this.refreshPopup();\n    if (this.allowResize) {\n      this.setResize();\n    }\n    if (this.mode === 'CheckBox') {\n      this.removeFocus();\n    }\n  };\n  MultiSelect.prototype.checkForCustomValue = function (query, fields) {\n    var dataChecks = !this.getValueByText(this.inputElement.value, this.ignoreCase);\n    var field = fields ? fields : this.fields;\n    if (this.allowCustomValue && dataChecks) {\n      var value = this.inputElement.value;\n      var customData = !isNullOrUndefined(this.mainData) && this.mainData.length > 0 ? this.mainData[0] : this.mainData;\n      if (customData && typeof customData !== 'string' && typeof customData !== 'number' && typeof customData !== 'boolean') {\n        var dataItem_1 = {};\n        setValue(field.text, value, dataItem_1);\n        if (typeof getValue(this.fields.value ? this.fields.value : 'value', customData) === 'number' && this.fields.value !== this.fields.text) {\n          setValue(field.value, Math.random(), dataItem_1);\n        } else {\n          setValue(field.value, value, dataItem_1);\n        }\n        var emptyObject_1 = {};\n        if (this.allowObjectBinding) {\n          var keys = this.listData && this.listData.length > 0 ? Object.keys(this.listData[0]) : this.firstItem ? Object.keys(this.firstItem) : Object.keys(dataItem_1);\n          // Create an empty object with predefined keys\n          keys.forEach(function (key) {\n            emptyObject_1[key] = key === fields.value || key === fields.text ? getValue(fields.value, dataItem_1) : null;\n          });\n        }\n        dataItem_1 = this.allowObjectBinding ? emptyObject_1 : dataItem_1;\n        if (this.enableVirtualization) {\n          this.virtualCustomData = dataItem_1;\n          var tempData = this.dataSource instanceof DataManager ? JSON.parse(JSON.stringify(this.listData)) : JSON.parse(JSON.stringify(this.dataSource));\n          var totalData = [];\n          if (this.virtualCustomSelectData && this.virtualCustomSelectData.length > 0) {\n            totalData = tempData.concat(this.virtualCustomSelectData);\n          }\n          tempData.splice(0, 0, dataItem_1);\n          this.isCustomDataUpdated = true;\n          var tempCount = this.totalItemCount;\n          this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n          this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n          this.resetList(tempData, field, query);\n          this.isCustomDataUpdated = false;\n          this.totalItemCount = this.enableVirtualization && this.dataSource instanceof DataManager ? tempCount : this.totalItemCount;\n        } else {\n          if (this.dataSource instanceof DataManager && this.allowCustomValue && this.allowFiltering) {\n            this.remoteCustomValue = false;\n          }\n          var tempData = JSON.parse(JSON.stringify(this.listData));\n          tempData.splice(0, 0, dataItem_1);\n          this.resetList(tempData, field, query);\n        }\n      } else if (this.listData) {\n        var tempData = JSON.parse(JSON.stringify(this.listData));\n        tempData.splice(0, 0, this.inputElement.value);\n        tempData[0] = typeof customData === 'number' && !isNaN(parseFloat(tempData[0])) ? parseFloat(tempData[0]) : tempData[0];\n        tempData[0] = typeof customData === 'boolean' ? tempData[0] === 'true' ? true : tempData[0] === 'false' ? false : tempData[0] : tempData[0];\n        this.resetList(tempData, field);\n      }\n    } else if (this.listData && this.mainData && !dataChecks && this.allowCustomValue) {\n      if (this.allowFiltering && this.isRemoteSelection && this.remoteCustomValue) {\n        this.isRemoteSelection = false;\n        if (!this.enableVirtualization) {\n          this.resetList(this.listData, field, query);\n        }\n      } else if (!this.allowFiltering && this.list) {\n        var liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n        var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n        if (activeElement && activeElement.item !== null) {\n          this.addListFocus(activeElement.item);\n        }\n      }\n    }\n    if (this.value && this.value.length) {\n      this.refreshSelection();\n    }\n  };\n  MultiSelect.prototype.getNgDirective = function () {\n    return 'EJS-MULTISELECT';\n  };\n  MultiSelect.prototype.wrapperClick = function (e) {\n    this.setDynValue = false;\n    this.keyboardEvent = null;\n    this.isKeyBoardAction = false;\n    if (!this.enabled) {\n      return;\n    }\n    if (e.target === this.overAllClear) {\n      e.preventDefault();\n      return;\n    }\n    if (!this.inputFocus) {\n      this.inputElement.focus();\n    }\n    if (!this.readonly) {\n      if (e.target && e.target.classList.toString().indexOf(CHIP_CLOSE) !== -1) {\n        if (this.isPopupOpen()) {\n          this.refreshPopup();\n        }\n        return;\n      }\n      if (!this.isPopupOpen() && (this.openOnClick || this.showDropDownIcon && e.target && e.target.className === dropdownIcon)) {\n        this.showPopup(e);\n      } else {\n        this.hidePopup(e);\n        if (this.mode === 'CheckBox') {\n          this.showOverAllClear();\n          this.inputFocus = true;\n          if (!this.overAllWrapper.classList.contains(FOCUS)) {\n            this.overAllWrapper.classList.add(FOCUS);\n          }\n        }\n      }\n    }\n    if (!(this.targetElement() && this.targetElement() !== '')) {\n      e.preventDefault();\n    }\n  };\n  MultiSelect.prototype.enable = function (state) {\n    if (state) {\n      this.overAllWrapper.classList.remove(DISABLED);\n      this.inputElement.removeAttribute('disabled');\n      attributes(this.inputElement, {\n        'aria-disabled': 'false'\n      });\n      this.ensureAriaDisabled('false');\n    } else {\n      this.overAllWrapper.classList.add(DISABLED);\n      this.inputElement.setAttribute('disabled', 'true');\n      attributes(this.inputElement, {\n        'aria-disabled': 'true'\n      });\n      this.ensureAriaDisabled('true');\n    }\n    if (this.enabled !== state) {\n      this.enabled = state;\n    }\n    this.hidePopup();\n  };\n  MultiSelect.prototype.onBlurHandler = function (eve, isDocClickFromCheck) {\n    var target;\n    if (this.isBlurDispatching && this.isAngular) {\n      this.isBlurDispatching = false;\n      return;\n    }\n    if (!isNullOrUndefined(eve)) {\n      target = eve.relatedTarget;\n    }\n    if (this.popupObj && document.body.contains(this.popupObj.element) && this.popupObj.element.contains(target)) {\n      if (this.mode !== 'CheckBox') {\n        this.inputElement.focus();\n      } else if (this.floatLabelType === 'Auto' && (this.overAllWrapper.classList.contains('e-outline') || this.overAllWrapper.classList.contains('e-filled'))) {\n        addClass([this.overAllWrapper], 'e-valid-input');\n      }\n      return;\n    }\n    if (this.floatLabelType === 'Auto' && this.overAllWrapper.classList.contains('e-outline') && this.mode === 'CheckBox' && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n      removeClass([this.overAllWrapper], 'e-valid-input');\n    }\n    if (this.mode === 'CheckBox' && Browser.isIE && !isNullOrUndefined(eve) && !isDocClickFromCheck) {\n      this.inputFocus = false;\n      this.overAllWrapper.classList.remove(FOCUS);\n      return;\n    }\n    if (this.scrollFocusStatus) {\n      if (!isNullOrUndefined(eve)) {\n        eve.preventDefault();\n      }\n      this.inputElement.focus();\n      this.scrollFocusStatus = false;\n      return;\n    }\n    this.inputFocus = false;\n    this.overAllWrapper.classList.remove(FOCUS);\n    if (this.addTagOnBlur) {\n      var dataChecks = this.getValueByText(this.inputElement.value, this.ignoreCase, this.ignoreAccent);\n      var listLiElement = this.findListElement(this.list, 'li', 'data-value', dataChecks);\n      var className = this.hideSelectedItem ? HIDE_LIST : dropDownBaseClasses.selected;\n      var allowChipAddition = listLiElement && !listLiElement.classList.contains(className) ? true : false;\n      if (allowChipAddition) {\n        this.updateListSelection(listLiElement, eve);\n        if (this.mode === 'Delimiter') {\n          this.updateDelimeter(this.delimiterChar);\n        }\n      }\n    }\n    this.updateDataList();\n    this.refreshListItems(null);\n    if (this.mode !== 'Box' && this.mode !== 'CheckBox') {\n      this.updateDelimView();\n    }\n    if (this.changeOnBlur) {\n      this.updateValueState(eve, this.value, this.tempValues);\n      this.dispatchEvent(this.hiddenElement, 'change');\n    }\n    this.overAllClear.style.display = 'none';\n    if (this.isPopupOpen()) {\n      this.hidePopup(eve);\n    }\n    this.makeTextBoxEmpty();\n    this.trigger('blur');\n    this.focused = true;\n    if (Browser.isDevice && this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n      this.removeChipFocus();\n    }\n    this.removeChipSelection();\n    this.refreshInputHight();\n    floatLabelBlur(this.overAllWrapper, this.componentWrapper, this.value, this.floatLabelType, this.placeholder);\n    this.refreshPlaceHolder();\n    if ((this.allowFiltering || this.enableSelectionOrder === true && this.mode === 'CheckBox') && !isNullOrUndefined(this.mainList)) {\n      this.ulElement = this.mainList;\n    }\n    this.checkPlaceholderSize();\n    Input.createSpanElement(this.overAllWrapper, this.createElement);\n    this.calculateWidth();\n    if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n      this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n    }\n    this.isBlurDispatching = true;\n    if (this.isAngular) {\n      this.dispatchEvent(this.inputElement, 'blur');\n    }\n  };\n  MultiSelect.prototype.calculateWidth = function () {\n    var elementWidth;\n    if (this.overAllWrapper) {\n      if (!this.showDropDownIcon || this.overAllWrapper.querySelector('.' + 'e-label-top')) {\n        elementWidth = this.overAllWrapper.clientWidth - 2 * parseInt(getComputedStyle(this.inputElement).paddingRight, 10);\n      } else {\n        var downIconWidth = this.dropIcon.offsetWidth + parseInt(getComputedStyle(this.dropIcon).marginRight, 10);\n        elementWidth = this.overAllWrapper.clientWidth - (downIconWidth + 2 * parseInt(getComputedStyle(this.inputElement).paddingRight, 10));\n      }\n      if (this.floatLabelType !== 'Never') {\n        Input.calculateWidth(elementWidth, this.overAllWrapper, this.getModuleName());\n      }\n    }\n  };\n  MultiSelect.prototype.checkPlaceholderSize = function () {\n    if (this.showDropDownIcon) {\n      var downIconWidth = this.dropIcon.offsetWidth + parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n      this.setPlaceholderSize(downIconWidth);\n    } else {\n      if (!isNullOrUndefined(this.dropIcon)) {\n        this.setPlaceholderSize(this.showDropDownIcon ? this.dropIcon.offsetWidth : 0);\n      }\n    }\n  };\n  MultiSelect.prototype.setPlaceholderSize = function (downIconWidth) {\n    if (isNullOrUndefined(this.value) || this.value.length === 0) {\n      if (this.dropIcon.offsetWidth !== 0) {\n        this.searchWrapper.style.width = 'calc(100% - ' + (downIconWidth + 10) + 'px';\n      } else {\n        addClass([this.searchWrapper], CUSTOM_WIDTH);\n      }\n    } else if (!isNullOrUndefined(this.value)) {\n      this.searchWrapper.removeAttribute('style');\n      removeClass([this.searchWrapper], CUSTOM_WIDTH);\n    }\n  };\n  MultiSelect.prototype.refreshInputHight = function () {\n    if (!isNullOrUndefined(this.searchWrapper)) {\n      if ((!this.value || !this.value.length) && (isNullOrUndefined(this.text) || this.text === '')) {\n        this.searchWrapper.classList.remove(ZERO_SIZE);\n      } else {\n        this.searchWrapper.classList.add(ZERO_SIZE);\n      }\n    }\n  };\n  MultiSelect.prototype.validateValues = function (newValue, oldValue) {\n    return JSON.stringify(newValue.slice().sort()) !== JSON.stringify(oldValue.slice().sort());\n  };\n  MultiSelect.prototype.updateValueState = function (event, newVal, oldVal) {\n    var newValue = newVal ? newVal : [];\n    var oldValue = oldVal ? oldVal : [];\n    if (this.initStatus && this.validateValues(newValue, oldValue)) {\n      var eventArgs = {\n        e: event,\n        oldValue: this.allowObjectBinding ? oldVal : oldVal,\n        value: this.allowObjectBinding ? newVal : newVal,\n        isInteracted: event ? true : false,\n        element: this.element,\n        event: event\n      };\n      if (this.isAngular && this.preventChange) {\n        this.preventChange = false;\n      } else {\n        this.trigger('change', eventArgs);\n      }\n      this.updateTempValue();\n      if (!this.changeOnBlur) {\n        this.dispatchEvent(this.hiddenElement, 'change');\n      }\n    }\n    this.selectedValueInfo = this.viewPortInfo;\n  };\n  MultiSelect.prototype.updateTempValue = function () {\n    if (!this.value) {\n      this.tempValues = this.value;\n    } else {\n      this.tempValues = this.allowObjectBinding ? this.value.slice() : this.value.slice();\n    }\n  };\n  MultiSelect.prototype.updateAriaActiveDescendant = function () {\n    if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n      attributes(this.inputElement, {\n        'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id\n      });\n    }\n  };\n  MultiSelect.prototype.pageUpSelection = function (steps, isVirtualKeyAction) {\n    var collection = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n    var previousItem = steps >= 0 ? collection[steps + 1] : collection[0];\n    if (this.fields.disabled && previousItem && !this.enableVirtualization) {\n      while (previousItem && (previousItem.classList.contains('e-disabled') || previousItem.classList.contains(HIDE_LIST) || previousItem.classList.contains('.e-reorder-hide') || previousItem.classList.contains('e-list-group-item'))) {\n        previousItem = previousItem.previousElementSibling;\n      }\n      if (!previousItem) {\n        return;\n      }\n    }\n    if (this.enableVirtualization && isVirtualKeyAction) {\n      previousItem = this.liCollections.length >= steps && steps >= 0 ? this.liCollections[steps] : this.liCollections[this.skeletonCount];\n    }\n    if (!isNullOrUndefined(previousItem) && previousItem.classList.contains('e-virtual-list')) {\n      previousItem = this.liCollections[this.skeletonCount];\n    }\n    if (this.enableVirtualization) {\n      if (!isNullOrUndefined(previousItem) && !previousItem.classList.contains('e-item-focus')) {\n        this.isKeyBoardAction = true;\n        this.addListFocus(previousItem);\n        this.scrollTop(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), this.keyboardEvent.keyCode);\n      } else if (this.viewPortInfo.startIndex === 0) {\n        this.isKeyBoardAction = true;\n        this.scrollTop(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), this.keyboardEvent.keyCode);\n      }\n      this.previousFocusItem = previousItem;\n    } else {\n      this.isKeyBoardAction = true;\n      this.addListFocus(previousItem);\n      this.scrollTop(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), this.keyboardEvent.keyCode);\n    }\n  };\n  MultiSelect.prototype.pageDownSelection = function (steps, isVirtualKeyAction) {\n    var list = this.getItems();\n    var collection = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n    var previousItem = steps <= collection.length ? collection[steps - 1] : collection[collection.length - 1];\n    if (this.fields.disabled && previousItem && !this.enableVirtualization) {\n      while (previousItem && (previousItem.classList.contains('e-disabled') || previousItem.classList.contains(HIDE_LIST) || previousItem.classList.contains('.e-reorder-hide') || previousItem.classList.contains('e-list-group-item'))) {\n        previousItem = previousItem.nextElementSibling;\n      }\n      if (!previousItem) {\n        return;\n      }\n    }\n    if (this.enableVirtualization && this.skeletonCount > 0) {\n      previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n    }\n    if (this.enableVirtualization && isVirtualKeyAction) {\n      previousItem = steps <= list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n    }\n    this.isKeyBoardAction = true;\n    this.addListFocus(previousItem);\n    this.previousFocusItem = previousItem;\n    this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')), false, this.keyboardEvent.keyCode);\n  };\n  MultiSelect.prototype.getItems = function () {\n    if (!this.list) {\n      _super.prototype.render.call(this);\n    }\n    return this.ulElement && this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li).length > 0 ? this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')') : [];\n  };\n  MultiSelect.prototype.focusInHandler = function (e) {\n    var _this = this;\n    if (this.enabled) {\n      this.showOverAllClear();\n      this.inputFocus = true;\n      if (this.value && this.value.length) {\n        if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n          this.chipCollectionWrapper.style.display = '';\n        } else {\n          this.showDelimWrapper();\n        }\n        if (this.mode !== 'CheckBox') {\n          this.viewWrapper.style.display = 'none';\n        }\n      }\n      if (this.mode !== 'CheckBox') {\n        this.searchWrapper.classList.remove(ZERO_SIZE);\n      }\n      this.checkPlaceholderSize();\n      if (this.focused) {\n        var args = {\n          isInteracted: e ? true : false,\n          event: e\n        };\n        this.trigger('focus', args);\n        this.focused = false;\n      }\n      if (!this.overAllWrapper.classList.contains(FOCUS)) {\n        this.overAllWrapper.classList.add(FOCUS);\n      }\n      floatLabelFocus(this.overAllWrapper, this.componentWrapper);\n      if (this.isPopupOpen()) {\n        this.refreshPopup();\n      }\n      if (this.allowResize) {\n        this.setResize();\n      }\n      setTimeout(function () {\n        _this.calculateWidth();\n      }, 150);\n      return true;\n    } else {\n      return false;\n    }\n  };\n  MultiSelect.prototype.showDelimWrapper = function () {\n    if (this.mode === 'CheckBox') {\n      this.viewWrapper.style.display = '';\n    } else {\n      this.delimiterWrapper.style.display = '';\n    }\n    this.componentWrapper.classList.add(DELIMITER_VIEW_WRAPPER);\n  };\n  MultiSelect.prototype.hideDelimWrapper = function () {\n    this.delimiterWrapper.style.display = 'none';\n    this.componentWrapper.classList.remove(DELIMITER_VIEW_WRAPPER);\n  };\n  MultiSelect.prototype.expandTextbox = function () {\n    var size = 5;\n    if (this.placeholder) {\n      var codePoint = this.placeholder.charCodeAt(0);\n      var sizeMultiplier = 0xAC00 <= codePoint && codePoint <= 0xD7AF ? 1.5 : 0x4E00 <= codePoint && codePoint <= 0x9FFF ? 2 : 1;\n      size = size > this.inputElement.placeholder.length ? size : this.inputElement.placeholder.length * sizeMultiplier;\n    }\n    if (this.inputElement.value.length > size) {\n      this.inputElement.size = this.inputElement.value.length;\n    } else {\n      this.inputElement.size = size;\n    }\n  };\n  MultiSelect.prototype.isPopupOpen = function () {\n    return this.popupWrapper !== null && this.popupWrapper.parentElement !== null;\n  };\n  MultiSelect.prototype.refreshPopup = function () {\n    if (this.popupObj && this.mobFilter) {\n      this.popupObj.setProperties({\n        width: this.calcPopupWidth()\n      });\n      this.popupObj.refreshPosition(this.overAllWrapper);\n      this.popupObj.resolveCollision();\n    }\n  };\n  MultiSelect.prototype.checkTextLength = function () {\n    return this.targetElement().length < 1;\n  };\n  MultiSelect.prototype.popupKeyActions = function (e) {\n    switch (e.keyCode) {\n      case 38:\n        this.hidePopup(e);\n        if (this.mode === 'CheckBox') {\n          this.inputElement.focus();\n        }\n        e.preventDefault();\n        break;\n      case 40:\n        if (!this.isPopupOpen()) {\n          this.showPopup(e);\n          e.preventDefault();\n        }\n        break;\n    }\n  };\n  MultiSelect.prototype.updatePopupPosition = function () {\n    this.refreshPopup();\n  };\n  MultiSelect.prototype.updateAriaAttribute = function () {\n    var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n    if (!isNullOrUndefined(focusedItem)) {\n      this.inputElement.setAttribute('aria-activedescendant', focusedItem.id);\n      if (this.allowFiltering) {\n        var filterInput = this.popupWrapper.querySelector('.' + FILTERINPUT);\n        if (filterInput) {\n          filterInput.setAttribute('aria-activedescendant', focusedItem.id);\n        }\n      } else if (this.mode === 'CheckBox') {\n        this.overAllWrapper.setAttribute('aria-activedescendant', focusedItem.id);\n      }\n    }\n  };\n  MultiSelect.prototype.homeNavigation = function (isHome, isVirtualKeyAction) {\n    this.removeFocus();\n    if (this.enableVirtualization) {\n      if (isHome) {\n        if (this.enableVirtualization && this.viewPortInfo.startIndex !== 0) {\n          this.viewPortInfo.startIndex = 0;\n          this.viewPortInfo.endIndex = this.itemCount;\n          this.updateVirtualItemIndex();\n          this.resetList(this.dataSource, this.fields, this.query);\n        }\n      } else {\n        if (this.enableVirtualization && (!this.value && this.viewPortInfo.endIndex !== this.totalItemCount || this.value && this.value.length > 0 && this.viewPortInfo.endIndex !== this.totalItemCount + this.value.length)) {\n          this.viewPortInfo.startIndex = this.totalItemCount - this.itemCount;\n          this.viewPortInfo.endIndex = this.totalItemCount;\n          this.updateVirtualItemIndex();\n          var query = new Query().clone();\n          if (this.value && this.value.length > 0) {\n            query = this.getForQuery(this.value).clone();\n            query = query.skip(this.totalItemCount - this.itemCount);\n          }\n          this.resetList(this.dataSource, this.fields, query);\n        }\n      }\n    }\n    this.UpdateSkeleton();\n    var scrollEle = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n    if (scrollEle.length > 0) {\n      var element = scrollEle[isHome ? 0 : scrollEle.length - 1];\n      if (this.enableVirtualization && isHome) {\n        element = scrollEle[this.skeletonCount];\n      }\n      this.removeFocus();\n      element.classList.add(dropDownBaseClasses.focus);\n      if (this.enableVirtualization && isHome) {\n        this.scrollTop(element, undefined, this.keyboardEvent.keyCode);\n      } else if (!isVirtualKeyAction) {\n        this.scrollBottom(element, undefined, false, this.keyboardEvent.keyCode);\n      }\n      this.updateAriaActiveDescendant();\n    }\n  };\n  MultiSelect.prototype.updateSelectionList = function () {\n    if (!isNullOrUndefined(this.value) && this.value.length) {\n      for (var index = 0; index < this.value.length; index++) {\n        var value = this.allowObjectBinding ? getValue(this.fields.value ? this.fields.value : '', this.value[index]) : this.value[index];\n        var selectedItem = this.getElementByValue(value);\n        if (selectedItem && !selectedItem.classList.contains(dropDownBaseClasses.selected)) {\n          selectedItem.classList.add('e-active');\n        }\n      }\n    }\n  };\n  MultiSelect.prototype.handleVirtualKeyboardActions = function (e, pageCount) {\n    var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n    var activeIndex;\n    this.isKeyBoardAction = true;\n    switch (e.keyCode) {\n      case 40:\n        this.arrowDown(e, true);\n        break;\n      case 38:\n        this.arrowUp(e, true);\n        break;\n      case 33:\n        e.preventDefault();\n        if (focusedItem) {\n          activeIndex = this.getIndexByValue(this.previousFocusItem.getAttribute('data-value')) - 1;\n          this.pageUpSelection(activeIndex, true);\n          this.updateAriaAttribute();\n        }\n        break;\n      case 34:\n        e.preventDefault();\n        if (focusedItem) {\n          activeIndex = this.getIndexByValue(this.previousFocusItem.getAttribute('data-value'));\n          this.pageDownSelection(activeIndex, true);\n          this.updateAriaAttribute();\n        }\n        break;\n      case 35:\n      case 36:\n        this.isMouseScrollAction = true;\n        this.homeNavigation(e.keyCode === 36 ? true : false, true);\n        this.isPreventScrollAction = true;\n        break;\n    }\n    this.keyboardEvent = null;\n    this.isScrollChanged = true;\n    this.isKeyBoardAction = false;\n  };\n  MultiSelect.prototype.onKeyDown = function (e) {\n    if (this.readonly || !this.enabled && this.mode !== 'CheckBox') {\n      return;\n    }\n    this.preventSetCurrentData = false;\n    this.keyboardEvent = e;\n    if (this.isPreventKeyAction && this.enableVirtualization) {\n      e.preventDefault();\n    }\n    this.keyCode = e.keyCode;\n    this.keyDownStatus = true;\n    if (e.keyCode > 111 && e.keyCode < 124) {\n      return;\n    }\n    if (e.altKey) {\n      this.popupKeyActions(e);\n      return;\n    } else if (this.isPopupOpen()) {\n      var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n      var activeIndex = void 0;\n      switch (e.keyCode) {\n        case 36:\n        case 35:\n          this.isMouseScrollAction = true;\n          this.isKeyBoardAction = true;\n          this.homeNavigation(e.keyCode === 36 ? true : false);\n          break;\n        case 33:\n          e.preventDefault();\n          if (focusedItem) {\n            activeIndex = this.getIndexByValue(focusedItem.getAttribute('data-value'));\n            this.pageUpSelection(activeIndex - this.getPageCount() - 1);\n            this.updateAriaAttribute();\n          }\n          return;\n        case 34:\n          e.preventDefault();\n          if (focusedItem) {\n            activeIndex = this.getIndexByValue(focusedItem.getAttribute('data-value'));\n            this.pageDownSelection(activeIndex + this.getPageCount());\n            this.updateAriaAttribute();\n          }\n          return;\n        case 38:\n          this.isKeyBoardAction = true;\n          this.arrowUp(e);\n          break;\n        case 40:\n          this.isKeyBoardAction = true;\n          this.arrowDown(e);\n          break;\n        case 27:\n          e.preventDefault();\n          this.isKeyBoardAction = true;\n          this.hidePopup(e);\n          if (this.mode === 'CheckBox') {\n            this.inputElement.focus();\n          }\n          this.isKeyBoardAction = false;\n          return;\n        case 13:\n          e.preventDefault();\n          this.isKeyBoardAction = true;\n          if (this.mode !== 'CheckBox') {\n            this.selectByKey(e);\n          }\n          this.checkPlaceholderSize();\n          this.isKeyBoardAction = false;\n          return;\n        case 32:\n          this.isKeyBoardAction = true;\n          this.spaceKeySelection(e);\n          this.isKeyBoardAction = false;\n          return;\n        case 9:\n          e.preventDefault();\n          this.isKeyBoardAction = true;\n          this.hidePopup(e);\n          this.inputElement.focus();\n          this.overAllWrapper.classList.add(FOCUS);\n      }\n    } else {\n      switch (e.keyCode) {\n        case 13:\n        case 9:\n        case 16:\n        case 17:\n        case 20:\n          return;\n        case 40:\n          if (this.openOnClick) {\n            this.showPopup();\n          }\n          break;\n        case 27:\n          e.preventDefault();\n          this.escapeAction();\n          return;\n      }\n    }\n    if (this.checkTextLength()) {\n      this.keyNavigation(e);\n    }\n    if (this.mode === 'CheckBox' && this.enableSelectionOrder) {\n      if (this.allowFiltering) {\n        this.previousFilterText = this.targetElement();\n      }\n      this.checkBackCommand(e);\n    }\n    this.expandTextbox();\n    if (!(this.mode === 'CheckBox' && this.showSelectAll)) {\n      this.refreshPopup();\n    }\n    if (this.allowResize) {\n      this.setResize();\n    }\n    this.isKeyBoardAction = false;\n  };\n  MultiSelect.prototype.arrowDown = function (e, isVirtualKeyAction) {\n    e.preventDefault();\n    this.moveByList(1, isVirtualKeyAction);\n    this.keyAction = true;\n    if (document.activeElement.classList.contains(FILTERINPUT) || this.mode === 'CheckBox' && !this.allowFiltering && document.activeElement !== this.list) {\n      EventHandler.add(this.list, 'keydown', this.onKeyDown, this);\n    }\n    this.updateAriaAttribute();\n  };\n  MultiSelect.prototype.arrowUp = function (e, isVirtualKeyAction) {\n    e.preventDefault();\n    this.keyAction = true;\n    var list = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n    if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n      list = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n    }\n    var focuseElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n    this.focusFirstListItem = !isNullOrUndefined(this.liCollections[0]) ? this.liCollections[0].classList.contains('e-item-focus') : false;\n    var index = Array.prototype.slice.call(list).indexOf(focuseElem);\n    if (index <= 0 && this.mode === 'CheckBox' && this.allowFiltering) {\n      this.keyAction = false;\n      this.notify('inputFocus', {\n        module: 'CheckBoxSelection',\n        enable: this.mode === 'CheckBox',\n        value: 'focus'\n      });\n    }\n    this.moveByList(-1, isVirtualKeyAction);\n    this.updateAriaAttribute();\n  };\n  MultiSelect.prototype.spaceKeySelection = function (e) {\n    if (this.mode === 'CheckBox') {\n      var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n      var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n      if (!isNullOrUndefined(li) || selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n        e.preventDefault();\n        this.keyAction = true;\n      }\n      this.selectByKey(e);\n      if (this.keyAction) {\n        var li_1 = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n        if (!isNullOrUndefined(li_1) && selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n          li_1.classList.remove('e-item-focus');\n        }\n      }\n    }\n    this.checkPlaceholderSize();\n  };\n  MultiSelect.prototype.checkBackCommand = function (e) {\n    if (e.keyCode === 8 && this.allowFiltering ? this.targetElement() !== this.previousFilterText : this.targetElement() === '') {\n      this.backCommand = false;\n    } else {\n      this.backCommand = true;\n    }\n  };\n  MultiSelect.prototype.keyNavigation = function (e) {\n    if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox' && this.value && this.value.length) {\n      switch (e.keyCode) {\n        case 37:\n          //left arrow\n          e.preventDefault();\n          this.moveBy(-1, e);\n          break;\n        case 39:\n          //right arrow\n          e.preventDefault();\n          this.moveBy(1, e);\n          break;\n        case 8:\n          this.removelastSelection(e);\n          break;\n        case 46:\n          //del\n          this.removeSelectedChip(e);\n          break;\n      }\n    } else if (e.keyCode === 8 && this.mode === 'Delimiter') {\n      if (this.value && this.value.length) {\n        e.preventDefault();\n        var temp = this.allowObjectBinding ? getValue(this.fields.value ? this.fields.value : '', this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n        this.removeValue(this.value[this.value.length - 1], e);\n        this.updateDelimeter(this.delimiterChar, e);\n        this.focusAtLastListItem(temp);\n      }\n    }\n  };\n  MultiSelect.prototype.selectByKey = function (e) {\n    this.removeChipSelection();\n    this.selectListByKey(e);\n    if (this.hideSelectedItem) {\n      this.focusAtFirstListItem();\n    }\n  };\n  MultiSelect.prototype.escapeAction = function () {\n    var temp = this.tempValues ? this.tempValues.slice() : [];\n    if (this.allowObjectBinding) {\n      temp = this.tempValues ? this.tempValues.slice() : [];\n    }\n    if (this.value && this.validateValues(this.value, temp)) {\n      if (this.mode !== 'CheckBox') {\n        this.value = temp;\n        this.initialValueUpdate();\n      }\n      if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n        this.chipCollectionWrapper.style.display = '';\n      } else {\n        this.showDelimWrapper();\n      }\n      this.refreshPlaceHolder();\n      if (this.value.length) {\n        this.showOverAllClear();\n      } else {\n        this.hideOverAllClear();\n      }\n    }\n    this.makeTextBoxEmpty();\n  };\n  MultiSelect.prototype.scrollBottom = function (selectedLI, activeIndex, isInitialSelection, keyCode, isInitial) {\n    if (isInitialSelection === void 0) {\n      isInitialSelection = false;\n    }\n    if (keyCode === void 0) {\n      keyCode = null;\n    }\n    if (isInitial === void 0) {\n      isInitial = false;\n    }\n    if (!isNullOrUndefined(selectedLI) && selectedLI.classList.contains('e-virtual-list') || this.enableVirtualization && isNullOrUndefined(selectedLI)) {\n      selectedLI = this.liCollections[this.skeletonCount];\n    }\n    var selectedListMargin = selectedLI && !isNaN(parseInt(window.getComputedStyle(selectedLI).marginBottom, 10)) ? parseInt(window.getComputedStyle(selectedLI).marginBottom, 10) : 0;\n    this.isUpwardScrolling = false;\n    var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n    var lastElementValue = this.list.querySelector('li:last-of-type') ? this.list.querySelector('li:last-of-type').getAttribute('data-value') : null;\n    var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? selectedLI.offsetTop + this.virtualListInfo.startIndex * (selectedLI.offsetHeight + selectedListMargin) : selectedLI.offsetTop;\n    var currentOffset = this.list.offsetHeight;\n    var nextBottom = selectedLiOffsetTop - virtualListCount * (selectedLI.offsetHeight + selectedListMargin) + (selectedLI.offsetHeight + selectedListMargin) - this.list.scrollTop;\n    var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n    var isScrollerCHanged = false;\n    var isScrollTopChanged = false;\n    var boxRange = selectedLiOffsetTop - virtualListCount * (selectedLI.offsetHeight + selectedListMargin) + (selectedLI.offsetHeight + selectedListMargin) - this.list.scrollTop;\n    boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ? boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n    if (activeIndex === 0 && !this.enableVirtualization) {\n      this.list.scrollTop = 0;\n    } else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n      var currentElementValue = selectedLI ? selectedLI.getAttribute('data-value') : null;\n      var liCount = keyCode === 34 ? this.getPageCount() - 1 : 1;\n      if (!this.enableVirtualization || this.isKeyBoardAction || isInitialSelection) {\n        if (this.isKeyBoardAction && this.enableVirtualization && lastElementValue && currentElementValue === lastElementValue && keyCode !== 35 && !this.isVirtualScrolling) {\n          this.isPreventKeyAction = true;\n          this.list.scrollTop += (selectedLI.offsetHeight + selectedListMargin) * liCount;\n          this.isPreventKeyAction = this.isScrollerAtEnd() ? false : this.isPreventKeyAction;\n          this.isKeyBoardAction = false;\n          this.isPreventScrollAction = false;\n        } else if (this.enableVirtualization && keyCode === 35) {\n          this.isPreventKeyAction = false;\n          this.isKeyBoardAction = false;\n          this.isPreventScrollAction = false;\n          this.list.scrollTop = this.list.scrollHeight;\n        } else {\n          if (keyCode === 34 && this.enableVirtualization && !this.isVirtualScrolling) {\n            this.isPreventKeyAction = false;\n            this.isKeyBoardAction = false;\n            this.isPreventScrollAction = false;\n          }\n          this.list.scrollTop = nextOffset;\n        }\n      } else {\n        this.list.scrollTop = this.virtualListInfo && this.virtualListInfo.startIndex ? isInitial && this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight + this.listItemHeight * 2 : this.virtualListInfo.startIndex * this.listItemHeight : 0;\n      }\n      isScrollerCHanged = this.isKeyBoardAction;\n      isScrollTopChanged = true;\n    }\n    this.isKeyBoardAction = isScrollerCHanged;\n  };\n  MultiSelect.prototype.scrollTop = function (selectedLI, activeIndex, keyCode) {\n    if (keyCode === void 0) {\n      keyCode = null;\n    }\n    var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n    var selectedListMargin = selectedLI && !isNaN(parseInt(window.getComputedStyle(selectedLI).marginBottom, 10)) ? parseInt(window.getComputedStyle(selectedLI).marginBottom, 10) : 0;\n    var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? selectedLI.offsetTop + this.virtualListInfo.startIndex * (selectedLI.offsetHeight + selectedListMargin) : selectedLI.offsetTop;\n    var nextOffset = selectedLiOffsetTop - virtualListCount * (selectedLI.offsetHeight + selectedListMargin) - this.list.scrollTop;\n    var firstElementValue = this.list.querySelector('li.e-list-item:not(.e-virtual-list)') ? this.list.querySelector('li.e-list-item:not(.e-virtual-list)').getAttribute('data-value') : null;\n    nextOffset = this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ? nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n    var boxRange = selectedLiOffsetTop - virtualListCount * (selectedLI.offsetHeight + selectedListMargin) + (selectedLI.offsetHeight + selectedListMargin) - this.list.scrollTop;\n    var isPageUpKeyAction = this.enableVirtualization && this.getModuleName() === 'autocomplete' && nextOffset <= 0;\n    if (activeIndex === 0 && !this.enableVirtualization) {\n      this.list.scrollTop = 0;\n    } else if (nextOffset < 0 || isPageUpKeyAction) {\n      var currentElementValue = selectedLI ? selectedLI.getAttribute('data-value') : null;\n      var liCount = keyCode === 33 ? this.getPageCount() - 2 : 1;\n      if (this.enableVirtualization && this.isKeyBoardAction && firstElementValue && currentElementValue === firstElementValue && keyCode !== 36 && !this.isVirtualScrolling) {\n        this.isUpwardScrolling = true;\n        this.isPreventKeyAction = true;\n        this.isKeyBoardAction = false;\n        this.list.scrollTop -= (selectedLI.offsetHeight + selectedListMargin) * liCount;\n        this.isPreventKeyAction = this.list.scrollTop !== 0 ? this.isPreventKeyAction : false;\n        this.isPreventScrollAction = false;\n      } else if (this.enableVirtualization && keyCode === 36) {\n        this.isPreventScrollAction = false;\n        this.isPreventKeyAction = true;\n        this.isKeyBoardAction = false;\n        this.list.scrollTo(0, 0);\n      } else {\n        if (keyCode === 33 && this.enableVirtualization && !this.isVirtualScrolling) {\n          this.isPreventKeyAction = false;\n          this.isKeyBoardAction = false;\n          this.isPreventScrollAction = false;\n        }\n        this.list.scrollTop = this.list.scrollTop + nextOffset;\n      }\n    } else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n      this.list.scrollTop = selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement.offsetHeight : 0);\n    }\n  };\n  MultiSelect.prototype.isScrollerAtEnd = function () {\n    return this.list && this.list.scrollTop + this.list.clientHeight >= this.list.scrollHeight;\n  };\n  MultiSelect.prototype.selectListByKey = function (e) {\n    var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n    var limit = this.value && this.value.length ? this.value.length : 0;\n    var target;\n    if (li !== null) {\n      e.preventDefault();\n      if (li.classList.contains('e-active')) {\n        limit = limit - 1;\n      }\n      if (this.isValidLI(li) && limit < this.maximumSelectionLength) {\n        this.updateListSelection(li, e);\n        this.addListFocus(li);\n        if (this.mode === 'CheckBox') {\n          this.updateDelimView();\n          this.updateDelimeter(this.delimiterChar, e);\n          this.refreshInputHight();\n          this.checkPlaceholderSize();\n          if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n            target = li.firstElementChild.lastElementChild;\n            this.findGroupStart(target);\n            this.deselectHeader();\n          }\n        } else {\n          this.updateDelimeter(this.delimiterChar, e);\n        }\n        var isFilterData = this.targetElement().trim() !== '' ? true : false;\n        this.makeTextBoxEmpty();\n        if (this.mode !== 'CheckBox') {\n          this.refreshListItems(li.textContent, isFilterData);\n        }\n        if (!this.changeOnBlur) {\n          this.updateValueState(e, this.value, this.tempValues);\n        }\n        this.refreshPopup();\n      } else {\n        if (!this.isValidLI(li) && limit < this.maximumSelectionLength) {\n          target = li.firstElementChild.lastElementChild;\n          if (target.classList.contains('e-check')) {\n            this.selectAllItem(false, e, li);\n          } else {\n            this.selectAllItem(true, e, li);\n          }\n        }\n      }\n      this.refreshSelection();\n      if (this.closePopupOnSelect) {\n        this.hidePopup(e);\n      }\n    }\n    var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n    if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n      var selectAllCheckBox = selectAllParent.childNodes[0];\n      if (!selectAllCheckBox.classList.contains('e-check')) {\n        selectAllCheckBox.classList.add('e-check');\n        var args = {\n          module: 'CheckBoxSelection',\n          enable: this.mode === 'CheckBox',\n          value: 'check',\n          name: 'checkSelectAll'\n        };\n        this.notify('checkSelectAll', args);\n        this.selectAllItem(true, e, li);\n      } else {\n        selectAllCheckBox.classList.remove('e-check');\n        var args = {\n          module: 'CheckBoxSelection',\n          enable: this.mode === 'CheckBox',\n          value: 'check',\n          name: 'checkSelectAll'\n        };\n        this.notify('checkSelectAll', args);\n        this.selectAllItem(false, e, li);\n      }\n    }\n    this.refreshPlaceHolder();\n  };\n  MultiSelect.prototype.refreshListItems = function (data, isFilterData) {\n    if ((this.allowFiltering || this.mode === 'CheckBox' && this.enableSelectionOrder === true || this.allowCustomValue) && this.mainList && this.listData) {\n      var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n      if (this.enableVirtualization) {\n        if (this.allowCustomValue && this.virtualCustomData && data == null && this.virtualCustomData && this.viewPortInfo && this.viewPortInfo.startIndex === 0 && this.viewPortInfo.endIndex === this.itemCount) {\n          this.virtualCustomData = null;\n          // eslint-disable-next-line @typescript-eslint/no-explicit-any\n          this.renderItems(this.mainData, this.fields);\n        } else {\n          if (this.allowFiltering && isFilterData) {\n            this.updateInitialData();\n            this.onActionComplete(list, this.mainData);\n            this.isVirtualTrackHeight = false;\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n              // eslint-disable-next-line @typescript-eslint/no-explicit-any\n              this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n            } else if (!this.list.querySelector('.e-virtual-ddl') && this.skeletonCount > 0) {\n              var virualElement = this.createElement('div', {\n                id: this.element.id + '_popup',\n                className: 'e-virtual-ddl'\n              });\n              virualElement.style.cssText = this.GetVirtualTrackHeight();\n              this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n            }\n          } else {\n            this.onActionComplete(this.list, this.listData);\n          }\n        }\n      } else {\n        this.onActionComplete(list, this.mainData);\n      }\n      this.focusAtLastListItem(data);\n      if (this.value && this.value.length) {\n        this.refreshSelection();\n      }\n    } else if (!isNullOrUndefined(this.fields.groupBy) && this.value && this.value.length) {\n      this.refreshSelection();\n    }\n  };\n  MultiSelect.prototype.removeSelectedChip = function (e) {\n    var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n    var temp;\n    if (selectedElem !== null) {\n      if (!isNullOrUndefined(this.value)) {\n        this.tempValues = this.allowObjectBinding ? this.value.slice() : this.value.slice();\n      }\n      temp = selectedElem.nextElementSibling;\n      if (temp !== null) {\n        this.removeChipSelection();\n        this.addChipSelection(temp, e);\n      }\n      var currentChip = this.allowObjectBinding ? this.getDataByValue(this.getFormattedValue(selectedElem.getAttribute('data-value'))) : selectedElem.getAttribute('data-value');\n      this.removeValue(currentChip, e);\n      this.updateDelimeter(this.delimiterChar, e);\n      this.makeTextBoxEmpty();\n    }\n    if (this.closePopupOnSelect) {\n      this.hidePopup(e);\n    }\n    this.checkPlaceholderSize();\n  };\n  MultiSelect.prototype.moveByTop = function (state) {\n    var elements = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n    var index;\n    if (elements.length > 1) {\n      this.removeFocus();\n      index = state ? 0 : elements.length - 1;\n      this.addListFocus(elements[index]);\n      this.scrollBottom(elements[index], index);\n    }\n    this.updateAriaAttribute();\n  };\n  MultiSelect.prototype.clickHandler = function (e) {\n    var targetElement = e.target;\n    var filterInputClassName = targetElement.className;\n    var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n    if ((filterInputClassName === 'e-input-filter e-input' || filterInputClassName === 'e-input-group e-control-wrapper e-input-focus') && selectAllParent.classList.contains('e-item-focus')) {\n      selectAllParent.classList.remove('e-item-focus');\n    }\n  };\n  MultiSelect.prototype.moveByList = function (position, isVirtualKeyAction) {\n    if (this.list) {\n      var elements = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n      if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n        elements = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n      }\n      var selectedElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n      if (this.enableVirtualization && isVirtualKeyAction && !isNullOrUndefined(this.currentFocuedListElement)) {\n        selectedElem = this.getElementByValue(this.getFormattedValue(this.currentFocuedListElement.getAttribute('data-value')));\n      }\n      var temp = -1;\n      var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n      if (this.mode === 'CheckBox' && this.showSelectAll && position === 1 && !isNullOrUndefined(selectAllParent) && !selectAllParent.classList.contains('e-item-focus') && this.list.getElementsByClassName('e-item-focus').length === 0 && this.liCollections.length > 1) {\n        if (!this.focusFirstListItem && selectAllParent.classList.contains('e-item-focus')) {\n          selectAllParent.classList.remove('e-item-focus');\n        } else if (!selectAllParent.classList.contains('e-item-focus')) {\n          selectAllParent.classList.add('e-item-focus');\n        }\n      } else if (elements.length) {\n        if (this.mode === 'CheckBox' && this.showSelectAll && !isNullOrUndefined(selectAllParent && position === -1)) {\n          if (!this.focusFirstListItem && selectAllParent.classList.contains('e-item-focus')) {\n            selectAllParent.classList.remove('e-item-focus');\n          } else if (this.focusFirstListItem && !selectAllParent.classList.contains('e-item-focus')) {\n            selectAllParent.classList.add('e-item-focus');\n          }\n        }\n        for (var index = 0; index < elements.length; index++) {\n          if (elements[index] === selectedElem) {\n            temp = index;\n            break;\n          }\n        }\n        if (position > 0) {\n          if (temp < elements.length - 1) {\n            this.removeFocus();\n            if (this.enableVirtualization && isVirtualKeyAction) {\n              this.addListFocus(elements[temp]);\n            } else {\n              if (this.enableVirtualization && elements[temp + 1].classList.contains('e-virtual-list')) {\n                this.addListFocus(elements[this.skeletonCount]);\n              } else {\n                this.addListFocus(elements[++temp]);\n              }\n            }\n            if (temp > -1) {\n              this.updateCheck(elements[temp]);\n              this.scrollBottom(elements[temp], temp);\n              this.currentFocuedListElement = elements[temp];\n            }\n          }\n        } else {\n          if (temp > 0) {\n            if (this.enableVirtualization) {\n              var isVirtualElement = elements[temp - 1].classList.contains('e-virtual-list');\n              var elementIndex = isVirtualKeyAction ? temp : temp - 1;\n              if (isVirtualKeyAction || !isVirtualElement) {\n                this.removeFocus();\n              }\n              if (isVirtualKeyAction || !isVirtualElement) {\n                this.addListFocus(elements[elementIndex]);\n                this.updateCheck(elements[elementIndex]);\n                this.scrollTop(elements[elementIndex], temp);\n                this.currentFocuedListElement = elements[elementIndex];\n              }\n            } else {\n              this.removeFocus();\n              this.addListFocus(elements[--temp]);\n              this.updateCheck(elements[temp]);\n              this.scrollTop(elements[temp], temp);\n            }\n          }\n        }\n      }\n    }\n    var focusedLi = this.list ? this.list.querySelector('.e-item-focus') : null;\n    if (this.isDisabledElement(focusedLi)) {\n      if (this.list.querySelectorAll('.e-list-item:not(.e-hide-listitem):not(.e-disabled)').length === 0 || this.keyCode === 38 && this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy) && focusedLi === this.list.querySelector('li.e-list-group-item')) {\n        this.removeFocus();\n        return;\n      }\n      var index = this.getIndexByValue(focusedLi.getAttribute('data-value'));\n      if (index === 0) {\n        position = 1;\n      }\n      if (index === this.list.querySelectorAll('.e-list-item:not(.e-hide-listitem)').length - 1) {\n        position = -1;\n      }\n      this.moveByList(position);\n    }\n  };\n  MultiSelect.prototype.getElementByValue = function (value) {\n    var item;\n    var listItems = this.getItems();\n    for (var _i = 0, listItems_1 = listItems; _i < listItems_1.length; _i++) {\n      var liItem = listItems_1[_i];\n      if (this.getFormattedValue(liItem.getAttribute('data-value')) === value) {\n        item = liItem;\n        break;\n      }\n    }\n    return item;\n  };\n  MultiSelect.prototype.updateCheck = function (element) {\n    if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n      var checkElement = element.firstElementChild.lastElementChild;\n      if (checkElement.classList.contains('e-check')) {\n        element.classList.add('e-active');\n      } else {\n        element.classList.remove('e-active');\n      }\n    }\n  };\n  MultiSelect.prototype.moveBy = function (position, e) {\n    var temp;\n    var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n    var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n    if (selectedElem === null) {\n      if (position < 0) {\n        this.addChipSelection(elements[elements.length - 1], e);\n      }\n    } else {\n      if (position < 0) {\n        temp = selectedElem.previousElementSibling;\n        if (temp !== null) {\n          this.removeChipSelection();\n          this.addChipSelection(temp, e);\n        }\n      } else {\n        temp = selectedElem.nextElementSibling;\n        this.removeChipSelection();\n        if (temp !== null) {\n          this.addChipSelection(temp, e);\n        }\n      }\n    }\n  };\n  MultiSelect.prototype.chipClick = function (e) {\n    if (this.enabled) {\n      var elem = closest(e.target, '.' + CHIP);\n      this.removeChipSelection();\n      this.addChipSelection(elem, e);\n    }\n  };\n  MultiSelect.prototype.removeChipSelection = function () {\n    if (this.chipCollectionWrapper) {\n      this.removeChipFocus();\n    }\n  };\n  MultiSelect.prototype.addChipSelection = function (element, e) {\n    addClass([element], CHIP_SELECTED);\n    this.trigger('chipSelection', e);\n  };\n  MultiSelect.prototype.onChipRemove = function (e) {\n    if (e.which === 3 || e.button === 2) {\n      return;\n    }\n    if (this.enabled && !this.readonly) {\n      var element = e.target.parentElement;\n      var customVal = element.getAttribute('data-value');\n      var value = this.allowObjectBinding ? this.getDataByValue(this.getFormattedValue(customVal)) : this.getFormattedValue(customVal);\n      if (this.allowCustomValue && (customVal !== 'false' && value === false || !isNullOrUndefined(value) && value.toString() === 'NaN')) {\n        value = customVal;\n      }\n      if (this.isPopupOpen() && this.mode !== 'CheckBox') {\n        this.hidePopup(e);\n      }\n      if (!this.inputFocus) {\n        this.inputElement.focus();\n      }\n      this.removeValue(value, e);\n      value = this.allowObjectBinding ? getValue(this.fields.value ? this.fields.value : '', value) : value;\n      if (isNullOrUndefined(this.findListElement(this.list, 'li', 'data-value', value)) && this.mainList && this.listData) {\n        var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n        this.onActionComplete(list, this.mainData);\n      }\n      this.updateDelimeter(this.delimiterChar, e);\n      if (this.placeholder && this.floatLabelType === 'Never') {\n        this.makeTextBoxEmpty();\n        this.checkPlaceholderSize();\n      } else {\n        this.inputElement.value = '';\n      }\n      e.preventDefault();\n    }\n  };\n  MultiSelect.prototype.makeTextBoxEmpty = function () {\n    this.inputElement.value = '';\n    this.refreshPlaceHolder();\n  };\n  MultiSelect.prototype.refreshPlaceHolder = function () {\n    if (this.placeholder && this.floatLabelType === 'Never') {\n      if (this.value && this.value.length || !isNullOrUndefined(this.text) && this.text !== '') {\n        this.inputElement.placeholder = '';\n      } else {\n        this.inputElement.placeholder = encodePlaceholder(this.placeholder);\n      }\n    } else {\n      this.setFloatLabelType();\n    }\n    this.expandTextbox();\n  };\n  MultiSelect.prototype.removeAllItems = function (value, eve, isClearAll, element, mainElement) {\n    var index = this.allowObjectBinding ? this.indexOfObjectInArray(value, this.value) : this.value.indexOf(value);\n    var removeVal = this.value.slice(0);\n    removeVal.splice(index, 1);\n    this.setProperties({\n      value: [].concat([], removeVal)\n    }, true);\n    element.setAttribute('aria-selected', 'false');\n    var className = this.hideSelectedItem ? HIDE_LIST : dropDownBaseClasses.selected;\n    removeClass([element], className);\n    this.notify('activeList', {\n      module: 'CheckBoxSelection',\n      enable: this.mode === 'CheckBox',\n      li: element,\n      e: this,\n      index: index\n    });\n    this.invokeCheckboxSelection(element, eve, isClearAll);\n    var currentValue = this.allowObjectBinding ? getValue(this.fields.value ? this.fields.value : '', value) : value;\n    this.updateMainList(true, currentValue, mainElement);\n    this.updateChipStatus();\n  };\n  MultiSelect.prototype.invokeCheckboxSelection = function (element, eve, isClearAll) {\n    this.notify('updatelist', {\n      module: 'CheckBoxSelection',\n      enable: this.mode === 'CheckBox',\n      li: element,\n      e: eve\n    });\n    this.updateAriaActiveDescendant();\n    if (this.value && this.value.length !== this.mainData.length && this.mode === 'CheckBox' && this.showSelectAll && !(this.isSelectAll || isClearAll)) {\n      this.notify('checkSelectAll', {\n        module: 'CheckBoxSelection',\n        enable: this.mode === 'CheckBox',\n        value: 'uncheck'\n      });\n    }\n  };\n  MultiSelect.prototype.removeValue = function (value, eve, length, isClearAll) {\n    var _this = this;\n    var index = this.allowObjectBinding ? this.indexOfObjectInArray(value, this.value) : this.value.indexOf(this.getFormattedValue(value));\n    if (index === -1 && this.allowCustomValue && !isNullOrUndefined(value)) {\n      index = this.allowObjectBinding ? this.indexOfObjectInArray(value, this.value) : this.value.indexOf(value.toString());\n    }\n    var targetEle = eve && eve.target;\n    isClearAll = isClearAll || targetEle && targetEle.classList.contains('e-close-hooker') ? true : null;\n    var className = this.hideSelectedItem ? HIDE_LIST : dropDownBaseClasses.selected;\n    if (index !== -1) {\n      var currentValue = this.allowObjectBinding ? getValue(this.fields.value ? this.fields.value : '', value) : value;\n      var element_1 = this.virtualSelectAll ? null : this.findListElement(this.list, 'li', 'data-value', currentValue);\n      var val_1 = this.allowObjectBinding ? value : this.getDataByValue(value);\n      var eventArgs = {\n        e: eve,\n        item: element_1,\n        itemData: val_1,\n        isInteracted: eve ? true : false,\n        cancel: false\n      };\n      this.trigger('removing', eventArgs, function (eventArgs) {\n        if (eventArgs.cancel) {\n          _this.removeIndex++;\n        } else {\n          _this.isRemoveSelection = _this.enableVirtualization ? true : _this.isRemoveSelection;\n          _this.currentRemoveValue = _this.allowObjectBinding ? getValue(_this.fields.value ? _this.fields.value : '', value) : value;\n          _this.virtualSelectAll = false;\n          var removeVal = _this.value.slice(0);\n          removeVal.splice(index, 1);\n          if (_this.enableVirtualization && _this.mode === 'CheckBox') {\n            _this.selectedListData.splice(index, 1);\n          }\n          _this.setProperties({\n            value: [].concat([], removeVal)\n          }, true);\n          if (_this.enableVirtualization) {\n            var currentText = index === 0 && _this.text.split(_this.delimiterChar) && _this.text.split(_this.delimiterChar).length === 1 ? _this.text.replace(_this.text.split(_this.delimiterChar)[index], '') : index === 0 ? _this.text.replace(_this.text.split(_this.delimiterChar)[index] + _this.delimiterChar, '') : _this.text.replace(_this.delimiterChar + _this.text.split(_this.delimiterChar)[index], '');\n            _this.setProperties({\n              text: currentText.toString()\n            }, true);\n          }\n          if (element_1 !== null) {\n            var currentValue_1 = _this.allowObjectBinding ? getValue(_this.fields.value ? _this.fields.value : '', value) : value;\n            var hideElement = _this.findListElement(_this.mainList, 'li', 'data-value', currentValue_1);\n            element_1.setAttribute('aria-selected', 'false');\n            removeClass([element_1], className);\n            if (hideElement) {\n              hideElement.setAttribute('aria-selected', 'false');\n              removeClass([element_1, hideElement], className);\n            }\n            _this.notify('activeList', {\n              module: 'CheckBoxSelection',\n              enable: _this.mode === 'CheckBox',\n              li: element_1,\n              e: _this,\n              index: index\n            });\n            _this.invokeCheckboxSelection(element_1, eve, isClearAll);\n          }\n          var currentValue_2 = _this.allowObjectBinding ? getValue(_this.fields.value ? _this.fields.value : '', value) : value;\n          if (_this.hideSelectedItem && _this.fields.groupBy && element_1) {\n            _this.hideGroupItem(currentValue_2);\n          }\n          if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox' && _this.isPopupOpen()) {\n            _super.prototype.scrollStop.call(_this);\n          }\n          _this.updateMainList(true, currentValue_2);\n          _this.removeChip(currentValue_2, isClearAll);\n          _this.updateChipStatus();\n          var limit = _this.value && _this.value.length ? _this.value.length : 0;\n          if (limit < _this.maximumSelectionLength) {\n            var collection = _this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-active)');\n            removeClass(collection, 'e-disable');\n          }\n          _this.trigger('removed', eventArgs);\n          var targetEle_1 = eve && eve.currentTarget;\n          var isSelectAll = targetEle_1 && targetEle_1.classList.contains('e-selectall-parent') ? true : null;\n          if (!_this.changeOnBlur && !isClearAll && eve && length && !isSelectAll && _this.isSelectAllTarget) {\n            _this.updateValueState(eve, _this.value, _this.tempValues);\n          }\n          if (length) {\n            _this.selectAllEventData.push(val_1);\n            _this.selectAllEventEle.push(element_1);\n          }\n          if (length === 1) {\n            if (!_this.changeOnBlur) {\n              _this.updateValueState(eve, _this.value, _this.tempValues);\n            }\n            var args = {\n              event: eve,\n              items: _this.selectAllEventEle,\n              itemData: _this.selectAllEventData,\n              isInteracted: eve ? true : false,\n              isChecked: false\n            };\n            _this.trigger('selectedAll', args);\n            _this.selectAllEventData = [];\n            _this.selectAllEventEle = [];\n          }\n          if (isClearAll && (length === 1 || length === null)) {\n            _this.clearAllCallback(eve, isClearAll);\n          }\n          if (_this.isPopupOpen() && element_1 && element_1.parentElement.classList.contains('e-reorder')) {\n            if (_this.hideSelectedItem && _this.value && Array.isArray(_this.value) && _this.value.length > 0) {\n              _this.totalItemsCount();\n            }\n            _this.notify('setCurrentViewDataAsync', {\n              module: 'VirtualScroll'\n            });\n          }\n        }\n      });\n    }\n  };\n  MultiSelect.prototype.updateMainList = function (state, value, mainElement) {\n    if (this.allowFiltering || this.mode === 'CheckBox') {\n      var element2 = mainElement ? mainElement : this.findListElement(this.mainList, 'li', 'data-value', value);\n      if (element2) {\n        if (state) {\n          element2.setAttribute('aria-selected', 'false');\n          removeClass([element2], this.hideSelectedItem ? HIDE_LIST : dropDownBaseClasses.selected);\n          if (this.mode === 'CheckBox') {\n            removeClass([element2.firstElementChild.lastElementChild], 'e-check');\n          }\n        } else {\n          element2.setAttribute('aria-selected', 'true');\n          addClass([element2], this.hideSelectedItem ? HIDE_LIST : dropDownBaseClasses.selected);\n          if (this.mode === 'CheckBox') {\n            addClass([element2.firstElementChild.lastElementChild], 'e-check');\n          }\n        }\n      }\n    }\n  };\n  MultiSelect.prototype.removeChip = function (value, isClearAll) {\n    if (this.chipCollectionWrapper) {\n      if (!(this.enableVirtualization && isClearAll)) {\n        var element = this.findListElement(this.chipCollectionWrapper, 'span', 'data-value', value);\n        if (element) {\n          remove(element);\n        }\n      }\n    }\n  };\n  MultiSelect.prototype.setWidth = function (width) {\n    if (!isNullOrUndefined(width)) {\n      if (typeof width === 'number') {\n        this.overAllWrapper.style.width = formatUnit(width);\n      } else if (typeof width === 'string') {\n        this.overAllWrapper.style.width = width.match(/px|%|em/) ? width : formatUnit(width);\n      }\n    }\n  };\n  MultiSelect.prototype.updateChipStatus = function () {\n    if (this.value && this.value.length) {\n      if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n        this.chipCollectionWrapper.style.display = '';\n      }\n      if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n        this.showDelimWrapper();\n      }\n      this.showOverAllClear();\n    } else {\n      if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n        this.chipCollectionWrapper.style.display = 'none';\n      }\n      if (!isNullOrUndefined(this.delimiterWrapper)) {\n        this.delimiterWrapper.style.display = 'none';\n      }\n      this.hideOverAllClear();\n    }\n  };\n  MultiSelect.prototype.indexOfObjectInArray = function (objectToFind, array) {\n    var _loop_1 = function (i) {\n      var item = array[i];\n      // eslint-disable-next-line no-prototype-builtins\n      if (Object.keys(objectToFind).every(function (key) {\n        return item.hasOwnProperty(key) && item[key] === objectToFind[key];\n      })) {\n        return {\n          value: i\n        };\n      }\n    };\n    for (var i = 0; i < array.length; i++) {\n      var state_1 = _loop_1(i);\n      if (typeof state_1 === \"object\") return state_1.value;\n    }\n    return -1; // Return -1 if the object is not found\n  };\n  MultiSelect.prototype.addValue = function (value, text, eve) {\n    if (!this.value) {\n      this.value = [];\n    }\n    var currentValue = this.allowObjectBinding ? this.getDataByValue(value) : value;\n    if (this.allowObjectBinding && !this.isObjectInArray(this.getDataByValue(value), this.value) || !this.allowObjectBinding && this.value.indexOf(currentValue) < 0) {\n      this.setProperties({\n        value: [].concat([], this.value, [currentValue])\n      }, true);\n      if (this.enableVirtualization && !this.isSelectAllLoop) {\n        var data = this.viewWrapper.innerHTML;\n        var temp = void 0;\n        data += this.value.length === 1 ? '' : this.delimiterChar + ' ';\n        temp = this.getOverflowVal(this.value.length - 1);\n        data += temp;\n        temp = this.viewWrapper.innerHTML;\n        this.updateWrapperText(this.viewWrapper, data);\n      }\n      if (this.enableVirtualization && this.mode === 'CheckBox') {\n        var currentText = [];\n        var value_1 = this.allowObjectBinding ? getValue(this.fields.value ? this.fields.value : '', this.value[this.value.length - 1]) : this.value[this.value.length - 1];\n        var temp = text;\n        var textValues = this.text != null && this.text !== '' ? this.text + this.delimiterChar + temp : temp;\n        currentText.push(textValues);\n        this.setProperties({\n          text: currentText.toString()\n        }, true);\n      }\n    }\n    var element = this.findListElement(this.list, 'li', 'data-value', value);\n    this.removeFocus();\n    if (element) {\n      this.addListFocus(element);\n      this.addListSelection(element);\n    }\n    if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n      this.addChip(text, value, eve);\n    }\n    if (this.hideSelectedItem && this.fields.groupBy) {\n      this.hideGroupItem(value);\n    }\n    this.updateChipStatus();\n    this.checkMaxSelection();\n  };\n  MultiSelect.prototype.checkMaxSelection = function () {\n    var limit = this.value && this.value.length ? this.value.length : 0;\n    if (limit === this.maximumSelectionLength) {\n      var activeItems = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + '.e-active');\n      removeClass(activeItems, 'e-disable');\n      var inactiveItems = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-active)');\n      addClass(inactiveItems, 'e-disable');\n    }\n    if (limit < this.maximumSelectionLength) {\n      var collection = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n      removeClass(collection, 'e-disable');\n    }\n  };\n  MultiSelect.prototype.dispatchSelect = function (value, eve, element, isNotTrigger, length, dataValue, text) {\n    var _this = this;\n    var list = this.listData;\n    if (this.initStatus && !isNotTrigger) {\n      value = this.allowObjectBinding ? getValue(this.fields.value ? this.fields.value : '', value) : value;\n      var val_2 = dataValue ? dataValue : this.getDataByValue(value);\n      var eventArgs = {\n        e: eve,\n        item: element,\n        itemData: val_2,\n        isInteracted: eve ? true : false,\n        cancel: false\n      };\n      this.trigger('select', eventArgs, function (eventArgs) {\n        if (!eventArgs.cancel) {\n          if (length) {\n            _this.selectAllEventData.push(val_2);\n            _this.selectAllEventEle.push(element);\n          }\n          if (length === 1) {\n            var args = {\n              event: eve,\n              items: _this.selectAllEventEle,\n              itemData: _this.selectAllEventData,\n              isInteracted: eve ? true : false,\n              isChecked: true\n            };\n            _this.trigger('selectedAll', args);\n            _this.selectAllEventData = [];\n          }\n          if (_this.allowCustomValue && _this.isServerRendered && _this.listData !== list) {\n            _this.listData = list;\n          }\n          value = _this.allowObjectBinding ? _this.getDataByValue(value) : value;\n          if (_this.enableVirtualization) {\n            if (isNullOrUndefined(_this.selectedListData)) {\n              _this.selectedListData = [_this.getDataByValue(value)];\n            } else {\n              if (dataValue) {\n                if (Array.isArray(_this.selectedListData)) {\n                  _this.selectedListData.push(dataValue);\n                } else {\n                  _this.selectedListData = [_this.selectedListData, dataValue];\n                }\n              } else {\n                if (Array.isArray(_this.selectedListData)) {\n                  _this.selectedListData.push(_this.getDataByValue(value));\n                } else {\n                  _this.selectedListData = [_this.selectedListData, _this.getDataByValue(value)];\n                }\n              }\n            }\n          }\n          if (_this.enableVirtualization && value || !_this.enableVirtualization) {\n            _this.updateListSelectEventCallback(value, element, eve, text);\n          }\n          if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox') {\n            _super.prototype.scrollStop.call(_this);\n          }\n        }\n      });\n    }\n  };\n  MultiSelect.prototype.addChip = function (text, value, e) {\n    if (this.chipCollectionWrapper) {\n      this.getChip(text, value, e);\n    }\n  };\n  MultiSelect.prototype.removeChipFocus = function () {\n    var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP + '.' + CHIP_SELECTED);\n    removeClass(elements, CHIP_SELECTED);\n    if (Browser.isDevice) {\n      var closeElements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP_CLOSE.split(' ')[0]);\n      for (var index = 0; index < closeElements.length; index++) {\n        closeElements[index].style.display = 'none';\n      }\n    }\n  };\n  MultiSelect.prototype.onMobileChipInteraction = function (e) {\n    var chipElem = closest(e.target, '.' + CHIP);\n    var chipClose = chipElem.querySelector('span.' + CHIP_CLOSE.split(' ')[0]);\n    if (this.enabled && !this.readonly) {\n      if (!chipElem.classList.contains(CHIP_SELECTED)) {\n        this.removeChipFocus();\n        chipClose.style.display = '';\n        chipElem.classList.add(CHIP_SELECTED);\n      }\n      this.refreshPopup();\n      e.preventDefault();\n    }\n  };\n  MultiSelect.prototype.multiCompiler = function (multiselectTemplate) {\n    var checkTemplate = false;\n    if (typeof multiselectTemplate !== 'function' && multiselectTemplate) {\n      try {\n        checkTemplate = selectAll(multiselectTemplate, document).length ? true : false;\n      } catch (exception) {\n        checkTemplate = false;\n      }\n    }\n    return checkTemplate;\n  };\n  MultiSelect.prototype.encodeHtmlEntities = function (input) {\n    return input.replace(/[\\u00A0-\\u9999<>&]/g, function (match) {\n      return \"&#\" + match.charCodeAt(0) + \";\";\n    });\n  };\n  MultiSelect.prototype.getChip = function (data, value, e) {\n    var _this = this;\n    var itemData = {\n      text: value,\n      value: value\n    };\n    var chip = this.createElement('span', {\n      className: CHIP,\n      attrs: {\n        'data-value': value,\n        'title': data\n      }\n    });\n    var compiledString;\n    var chipContent = this.createElement('span', {\n      className: CHIP_CONTENT\n    });\n    var chipClose = this.createElement('span', {\n      className: CHIP_CLOSE\n    });\n    if (this.mainData) {\n      itemData = this.getDataByValue(value);\n    }\n    if (this.valueTemplate && !isNullOrUndefined(itemData)) {\n      var valuecheck = this.multiCompiler(this.valueTemplate);\n      if (typeof this.valueTemplate !== 'function' && valuecheck) {\n        compiledString = compile(select(this.valueTemplate, document).innerHTML.trim());\n      } else {\n        compiledString = compile(this.valueTemplate);\n      }\n      var valueCompTemp = compiledString(itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, chipContent);\n      if (valueCompTemp && valueCompTemp.length > 0) {\n        append(valueCompTemp, chipContent);\n      }\n      this.renderReactTemplates();\n    } else if (this.enableHtmlSanitizer) {\n      chipContent.innerText = data;\n    } else {\n      chipContent.innerHTML = this.encodeHtmlEntities(data.toString());\n    }\n    chip.appendChild(chipContent);\n    var eventArgs = {\n      isInteracted: e ? true : false,\n      itemData: itemData,\n      e: e,\n      setClass: function (classes) {\n        addClass([chip], classes);\n      },\n      cancel: false\n    };\n    this.isPreventChange = this.isAngular && this.preventChange;\n    this.trigger('tagging', eventArgs, function (eventArgs) {\n      if (!eventArgs.cancel) {\n        if (Browser.isDevice) {\n          chip.classList.add(MOBILE_CHIP);\n          append([chipClose], chip);\n          chipClose.style.display = 'none';\n          EventHandler.add(chip, 'click', _this.onMobileChipInteraction, _this);\n        } else {\n          EventHandler.add(chip, 'mousedown', _this.chipClick, _this);\n          if (_this.showClearButton) {\n            chip.appendChild(chipClose);\n          }\n        }\n        EventHandler.add(chipClose, 'mousedown', _this.onChipRemove, _this);\n        _this.chipCollectionWrapper.appendChild(chip);\n        if (!_this.changeOnBlur && e) {\n          _this.updateValueState(e, _this.value, _this.tempValues);\n        }\n      }\n    });\n  };\n  MultiSelect.prototype.calcPopupWidth = function () {\n    var width = formatUnit(this.popupWidth);\n    if (width.indexOf('%') > -1) {\n      var inputWidth = this.componentWrapper.offsetWidth * parseFloat(width) / 100;\n      width = inputWidth.toString() + 'px';\n    }\n    return width;\n  };\n  MultiSelect.prototype.mouseIn = function () {\n    if (this.enabled && !this.readonly) {\n      this.showOverAllClear();\n    }\n  };\n  MultiSelect.prototype.mouseOut = function () {\n    if (!this.inputFocus) {\n      this.overAllClear.style.display = 'none';\n    }\n  };\n  MultiSelect.prototype.listOption = function (dataSource, fields) {\n    var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n    var fieldProperty = isNullOrUndefined(fields.properties) ? fields : fields.properties;\n    this.listCurrentOptions = fields.text !== null || fields.value !== null ? {\n      fields: fieldProperty,\n      showIcon: iconCss,\n      ariaAttributes: {\n        groupItemRole: 'presentation'\n      }\n    } : {\n      fields: {\n        value: 'text'\n      }\n    };\n    extend(this.listCurrentOptions, this.listCurrentOptions, fields, true);\n    if (this.mode === 'CheckBox') {\n      this.notify('listoption', {\n        module: 'CheckBoxSelection',\n        enable: this.mode === 'CheckBox',\n        dataSource: dataSource,\n        fieldProperty: fieldProperty\n      });\n    }\n    return this.listCurrentOptions;\n  };\n  MultiSelect.prototype.renderPopup = function () {\n    var _this = this;\n    if (!this.list) {\n      _super.prototype.render.call(this);\n    }\n    if (this.popupObj && document.body.contains(this.popupObj.element) && this.allowFiltering) {\n      this.refreshPopup();\n      return;\n    }\n    if (!this.popupObj) {\n      if (!isNullOrUndefined(this.popupWrapper)) {\n        document.body.appendChild(this.popupWrapper);\n        var checkboxFilter = this.popupWrapper.querySelector('.' + FILTERPARENT);\n        if (this.mode === 'CheckBox' && !this.allowFiltering && checkboxFilter && this.filterParent) {\n          checkboxFilter.remove();\n          this.filterParent = null;\n        }\n        var overAllHeight = parseInt(this.popupHeight, 10);\n        this.popupWrapper.style.visibility = 'hidden';\n        if (this.headerTemplate) {\n          this.setHeaderTemplate();\n          overAllHeight -= this.header.offsetHeight;\n          this.isUpdateHeaderHeight = this.header.offsetHeight !== 0;\n        }\n        append([this.list], this.popupWrapper);\n        if (!this.list.classList.contains(dropDownBaseClasses.noData) && this.getItems()[1]) {\n          this.listItemHeight = this.getItems()[1].offsetHeight + parseInt(window.getComputedStyle(this.getItems()[1]).marginBottom, 10);\n        }\n        if (this.enableVirtualization && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n          if (!this.list.querySelector('.e-virtual-ddl-content') && this.list.querySelector('.e-list-parent')) {\n            var contentElement = this.createElement('div', {\n              className: 'e-virtual-ddl-content'\n            });\n            contentElement.style.cssText = this.getTransformValues();\n            this.list.appendChild(contentElement).appendChild(this.list.querySelector('.e-list-parent'));\n          } else if (this.list.querySelector('.e-virtual-ddl-content')) {\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n          }\n          this.UpdateSkeleton();\n          this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n          this.virtualItemCount = this.itemCount;\n          if (this.mode !== 'CheckBox') {\n            this.totalItemsCount();\n          }\n          if (!this.list.querySelector('.e-virtual-ddl')) {\n            var virualElement = this.createElement('div', {\n              id: this.element.id + '_popup',\n              className: 'e-virtual-ddl'\n            });\n            virualElement.style.cssText = this.GetVirtualTrackHeight();\n            this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n          } else {\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n          }\n        }\n        if (this.footerTemplate) {\n          this.setFooterTemplate();\n          overAllHeight -= this.footer.offsetHeight;\n          this.isUpdateFooterHeight = this.footer.offsetHeight !== 0;\n        }\n        if (this.mode === 'CheckBox' && this.showSelectAll) {\n          this.notify('selectAll', {\n            module: 'CheckBoxSelection',\n            enable: this.mode === 'CheckBox'\n          });\n          overAllHeight -= this.selectAllHeight;\n        } else if (this.mode === 'CheckBox' && !this.showSelectAll && !this.headerTemplate && !this.footerTemplate) {\n          this.notify('selectAll', {\n            module: 'CheckBoxSelection',\n            enable: this.mode === 'CheckBox'\n          });\n          overAllHeight = parseInt(this.popupHeight, 10);\n        } else if (this.mode === 'CheckBox' && !this.showSelectAll) {\n          this.notify('selectAll', {\n            module: 'CheckBoxSelection',\n            enable: this.mode === 'CheckBox'\n          });\n          overAllHeight = parseInt(this.popupHeight, 10);\n          if (this.headerTemplate && this.header) {\n            overAllHeight -= this.header.offsetHeight;\n          }\n          if (this.footerTemplate && this.footer) {\n            overAllHeight -= this.footer.offsetHeight;\n          }\n        }\n        if (this.mode === 'CheckBox') {\n          var args = {\n            module: 'CheckBoxSelection',\n            enable: this.mode === 'CheckBox',\n            popupElement: this.popupWrapper\n          };\n          if (this.allowFiltering) {\n            this.notify('searchBox', args);\n            overAllHeight -= this.searchBoxHeight;\n          }\n          addClass([this.popupWrapper], 'e-checkbox');\n        }\n        if (this.popupHeight !== 'auto') {\n          this.list.style.maxHeight = formatUnit(overAllHeight);\n          this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n        } else {\n          this.list.style.maxHeight = formatUnit(this.popupHeight);\n        }\n        this.popupObj = new Popup(this.popupWrapper, {\n          width: this.calcPopupWidth(),\n          targetType: 'relative',\n          position: this.enableRtl ? {\n            X: 'right',\n            Y: 'bottom'\n          } : {\n            X: 'left',\n            Y: 'bottom'\n          },\n          relateTo: this.overAllWrapper,\n          collision: this.enableRtl ? {\n            X: 'fit',\n            Y: 'flip'\n          } : {\n            X: 'flip',\n            Y: 'flip'\n          },\n          offsetY: 1,\n          enableRtl: this.enableRtl,\n          zIndex: this.zIndex,\n          close: function () {\n            if (_this.popupObj.element.parentElement) {\n              _this.popupObj.unwireScrollEvents();\n              // For restrict the page scrolling in safari browser\n              var checkboxFilterInput = _this.popupWrapper.querySelector('.' + FILTERINPUT);\n              if (_this.mode === 'CheckBox' && checkboxFilterInput && document.activeElement === checkboxFilterInput) {\n                checkboxFilterInput.blur();\n              }\n              detach(_this.popupObj.element);\n            }\n          },\n          open: function () {\n            _this.popupObj.resolveCollision();\n            if (!_this.isFirstClick) {\n              var ulElement = _this.list.querySelector('ul');\n              if (ulElement) {\n                if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) && _this.targetElement().trim() !== '')) {\n                  _this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n                }\n              }\n              _this.isFirstClick = true;\n            }\n            _this.popupObj.wireScrollEvents();\n            if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) && _this.targetElement().trim() !== '') && !_this.enableVirtualization) {\n              _this.loadTemplate();\n              if (_this.enableVirtualization && _this.mode === 'CheckBox') {\n                _this.UpdateSkeleton();\n              }\n            }\n            _this.isPreventScrollAction = true;\n            _this.setScrollPosition();\n            if (!_this.list.classList.contains(dropDownBaseClasses.noData) && _this.getItems()[1] && _this.getItems()[1].offsetHeight !== 0) {\n              _this.listItemHeight = _this.getItems()[1].offsetHeight + parseInt(window.getComputedStyle(_this.getItems()[1]).marginBottom, 10);\n              if (_this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n                // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                _this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = _this.getTransformValues();\n              }\n            }\n            if (_this.allowFiltering) {\n              _this.notify('inputFocus', {\n                module: 'CheckBoxSelection',\n                enable: _this.mode === 'CheckBox',\n                value: 'focus'\n              });\n            }\n            if (_this.enableVirtualization) {\n              _this.notify('bindScrollEvent', {\n                module: 'VirtualScroll',\n                component: _this.getModuleName(),\n                enable: _this.enableVirtualization\n              });\n              setTimeout(function () {\n                if (_this.value) {\n                  _this.updateSelectionList();\n                } else if (_this.viewPortInfo && _this.viewPortInfo.offsets.top) {\n                  _this.list.scrollTop = _this.viewPortInfo.offsets.top;\n                }\n              }, 5);\n            }\n          },\n          targetExitViewport: function () {\n            if (!Browser.isDevice) {\n              _this.hidePopup();\n            }\n          }\n        });\n        this.checkCollision(this.popupWrapper);\n        this.popupContentElement = this.popupObj.element.querySelector('.e-content');\n        if (this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering && this.isDeviceFullScreen) {\n          this.notify('deviceSearchBox', {\n            module: 'CheckBoxSelection',\n            enable: this.mode === 'CheckBox'\n          });\n        }\n        if (this.allowResize) {\n          this.setResize();\n        }\n        this.popupObj.close();\n        this.popupWrapper.style.visibility = '';\n      }\n    }\n  };\n  MultiSelect.prototype.checkCollision = function (popupEle) {\n    if (!(this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering && this.isDeviceFullScreen)) {\n      var collision = isCollide(popupEle);\n      if (collision.length > 0) {\n        popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n      }\n      this.popupObj.resolveCollision();\n    }\n  };\n  MultiSelect.prototype.setHeaderTemplate = function () {\n    var compiledString;\n    if (this.header) {\n      this.header.remove();\n    }\n    this.header = this.createElement('div');\n    addClass([this.header], HEADER);\n    var headercheck = this.multiCompiler(this.headerTemplate);\n    if (typeof this.headerTemplate !== 'function' && headercheck) {\n      compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n    } else {\n      compiledString = compile(this.headerTemplate);\n    }\n    // eslint-disable-next-line\n    var elements = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n    if (elements && elements.length > 0) {\n      append(elements, this.header);\n    }\n    if (this.mode === 'CheckBox' && this.showSelectAll) {\n      prepend([this.header], this.popupWrapper);\n    } else {\n      append([this.header], this.popupWrapper);\n    }\n    EventHandler.add(this.header, 'mousedown', this.onListMouseDown, this);\n  };\n  MultiSelect.prototype.setFooterTemplate = function () {\n    var compiledString;\n    if (this.footer) {\n      this.footer.remove();\n    }\n    this.footer = this.createElement('div');\n    addClass([this.footer], FOOTER);\n    var footercheck = this.multiCompiler(this.footerTemplate);\n    if (typeof this.footerTemplate !== 'function' && footercheck) {\n      compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n    } else {\n      compiledString = compile(this.footerTemplate);\n    }\n    // eslint-disable-next-line\n    var elements = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n    if (elements && elements.length > 0) {\n      append(elements, this.footer);\n    }\n    append([this.footer], this.popupWrapper);\n    EventHandler.add(this.footer, 'mousedown', this.onListMouseDown, this);\n  };\n  MultiSelect.prototype.updateInitialData = function () {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    var currentData = this.selectData;\n    var ulElement = this.renderItems(currentData, this.fields);\n    this.list.scrollTop = 0;\n    this.virtualListInfo = {\n      currentPageNumber: null,\n      direction: null,\n      sentinelInfo: {},\n      offsets: {},\n      startIndex: 0,\n      endIndex: this.itemCount\n    };\n    this.previousStartIndex = 0;\n    this.previousEndIndex = this.itemCount;\n    if (this.dataSource instanceof DataManager) {\n      if (this.remoteDataCount >= 0) {\n        this.totalItemCount = this.dataCount = this.remoteDataCount;\n      } else {\n        this.resetList(this.dataSource);\n      }\n    } else {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n    }\n    if (this.mode !== 'CheckBox') {\n      this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n    }\n    this.getSkeletonCount();\n    this.skeletonCount = this.totalItemCount !== 0 && this.totalItemCount < this.itemCount * 2 && (!(this.dataSource instanceof DataManager) || this.dataSource instanceof DataManager && this.totalItemCount <= this.itemCount) ? 0 : this.skeletonCount;\n    this.UpdateSkeleton();\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n    } else if (!this.list.querySelector('.e-virtual-ddl') && this.skeletonCount > 0) {\n      var virualElement = this.createElement('div', {\n        id: this.element.id + '_popup',\n        className: 'e-virtual-ddl'\n      });\n      virualElement.style.cssText = this.GetVirtualTrackHeight();\n      this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n    }\n    this.listData = currentData;\n    this.liCollections = this.list.querySelectorAll('.e-list-item');\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n    }\n    if (this.enableVirtualization) {\n      this.notify('setGeneratedData', {\n        module: 'VirtualScroll'\n      });\n    }\n  };\n  MultiSelect.prototype.clearAll = function (e) {\n    if (this.enabled && !this.readonly) {\n      var temp = void 0;\n      this.setDynValue = false;\n      this.isClearAllAction = true;\n      if (this.value && this.value.length > 0) {\n        if (this.allowFiltering) {\n          this.refreshListItems(null);\n          if (this.mode === 'CheckBox' && this.targetInputElement) {\n            this.targetInputElement.value = '';\n          }\n        }\n        var liElement = this.list && this.list.querySelectorAll('li.e-list-item');\n        if (liElement && liElement.length > 0) {\n          this.selectAllItems(false, e);\n        } else {\n          this.removeIndex = 0;\n          for (temp = this.value[this.removeIndex]; this.removeIndex < this.value.length; temp = this.value[this.removeIndex]) {\n            this.removeValue(temp, e, null, true);\n          }\n        }\n        this.selectedElementID = null;\n        this.inputElement.removeAttribute('aria-activedescendant');\n      } else {\n        this.clearAllCallback(e);\n      }\n      this.checkAndResetCache();\n      Input.createSpanElement(this.overAllWrapper, this.createElement);\n      this.calculateWidth();\n      if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n        this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n      }\n      if (this.enableVirtualization) {\n        this.updateInitialData();\n        if (this.chipCollectionWrapper) {\n          this.chipCollectionWrapper.innerHTML = '';\n        }\n        if (!this.isCustomDataUpdated) {\n          this.notify('setGeneratedData', {\n            module: 'VirtualScroll'\n          });\n        }\n      }\n      if (this.enableVirtualization) {\n        this.list.scrollTop = 0;\n        this.virtualListInfo = null;\n        this.previousStartIndex = 0;\n        this.previousEndIndex = this.itemCount;\n      }\n      this.isClearAllAction = false;\n    }\n    this.isClearAllItem = true;\n    EventHandler.add(document, 'mouseup', this.preventSelection, this);\n  };\n  MultiSelect.prototype.preventSelection = function (e) {\n    if (this.isClearAllItem) {\n      e.stopPropagation();\n    }\n    this.isClearAllItem = false;\n    EventHandler.remove(document, 'mouseup', this.preventSelection);\n  };\n  MultiSelect.prototype.clearAllCallback = function (e, isClearAll) {\n    var tempValues = this.value ? this.value.slice() : [];\n    if (this.mainList && this.listData && (this.allowFiltering && this.mode !== 'CheckBox' || this.allowCustomValue)) {\n      var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n      this.onActionComplete(list, this.mainData);\n    }\n    this.focusAtFirstListItem();\n    this.updateDelimeter(this.delimiterChar, e);\n    if (this.mode !== 'Box' && (!this.inputFocus || this.mode === 'CheckBox')) {\n      this.updateDelimView();\n    }\n    if (this.inputElement.value !== '') {\n      this.makeTextBoxEmpty();\n      this.search(null);\n    }\n    this.checkPlaceholderSize();\n    if (this.isPopupOpen()) {\n      this.refreshPopup();\n    }\n    if (this.allowResize) {\n      this.setResize();\n    }\n    if (!this.inputFocus) {\n      if (this.changeOnBlur) {\n        this.updateValueState(e, this.value, tempValues);\n      }\n      if (this.mode !== 'CheckBox') {\n        this.inputElement.focus();\n      }\n    }\n    if (this.mode === 'CheckBox') {\n      this.refreshPlaceHolder();\n      this.refreshInputHight();\n      if (this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n        this.updateValueState(e, this.value, this.tempValues);\n      }\n    }\n    if (!this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n      this.updateValueState(e, this.value, this.tempValues);\n    }\n    if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n      this.updateListItems(this.list.querySelectorAll('li.e-list-item'), this.mainList.querySelectorAll('li.e-list-item'));\n    }\n    e.preventDefault();\n  };\n  MultiSelect.prototype.windowResize = function () {\n    this.refreshPopup();\n    if ((!this.inputFocus || this.mode === 'CheckBox') && this.viewWrapper && this.viewWrapper.parentElement) {\n      this.updateDelimView();\n    }\n  };\n  MultiSelect.prototype.resetValueHandler = function (e) {\n    if (!isNullOrUndefined(this.inputElement)) {\n      var formElement = closest(this.inputElement, 'form');\n      if (formElement && e.target === formElement) {\n        var textVal = this.element.tagName === this.getNgDirective() ? null : this.element.getAttribute('data-initial-value');\n        this.text = textVal;\n      }\n    }\n  };\n  MultiSelect.prototype.wireEvent = function () {\n    EventHandler.add(this.componentWrapper, 'mousedown', this.wrapperClick, this);\n    EventHandler.add(window, 'resize', this.windowResize, this);\n    EventHandler.add(this.inputElement, 'focus', this.focusInHandler, this);\n    EventHandler.add(this.inputElement, 'keydown', this.onKeyDown, this);\n    EventHandler.add(this.inputElement, 'keyup', this.keyUp, this);\n    if (this.mode !== 'CheckBox') {\n      EventHandler.add(this.inputElement, 'input', this.onInput, this);\n    }\n    EventHandler.add(this.inputElement, 'blur', this.onBlurHandler, this);\n    EventHandler.add(this.componentWrapper, 'mouseover', this.mouseIn, this);\n    var formElement = closest(this.inputElement, 'form');\n    if (formElement) {\n      EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n    }\n    EventHandler.add(this.componentWrapper, 'mouseout', this.mouseOut, this);\n    EventHandler.add(this.overAllClear, 'mousedown', this.clearAll, this);\n    EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n  };\n  MultiSelect.prototype.onInput = function (e) {\n    if (this.keyDownStatus) {\n      this.isValidKey = true;\n    } else {\n      this.isValidKey = false;\n    }\n    this.keyDownStatus = false;\n    // For Filtering works in mobile firefox\n    if (Browser.isDevice && Browser.info.name === 'mozilla') {\n      this.search(e);\n    }\n  };\n  MultiSelect.prototype.pasteHandler = function (event) {\n    var _this = this;\n    setTimeout(function () {\n      _this.expandTextbox();\n      _this.search(event);\n    });\n  };\n  MultiSelect.prototype.search = function (e) {\n    var _this = this;\n    this.preventSetCurrentData = false;\n    this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n    if (!isNullOrUndefined(e)) {\n      this.keyCode = e.keyCode;\n    }\n    if (!this.isPopupOpen() && this.openOnClick) {\n      this.showPopup(e);\n    }\n    this.openClick(e);\n    if (this.checkTextLength() && !this.allowFiltering && !isNullOrUndefined(e) && e.keyCode !== 8) {\n      this.focusAtFirstListItem();\n    } else {\n      var text = this.targetElement();\n      if (this.allowFiltering) {\n        if (this.allowCustomValue) {\n          this.isRemoteSelection = true;\n        }\n        this.checkAndResetCache();\n        this.isRequesting = false;\n        var eventArgs_1 = {\n          preventDefaultAction: false,\n          text: this.targetElement(),\n          updateData: function (dataSource, query, fields) {\n            if (eventArgs_1.cancel) {\n              return;\n            }\n            _this.isFiltered = true;\n            _this.customFilterQuery = query;\n            _this.remoteFilterAction = true;\n            _this.isCustomFiltering = true;\n            _this.dataUpdater(dataSource, query, fields);\n          },\n          event: e,\n          cancel: false\n        };\n        this.trigger('filtering', eventArgs_1, function (eventArgs) {\n          _this.isFilterPrevented = eventArgs.cancel;\n          if (!eventArgs.cancel) {\n            if (!_this.isFiltered && !eventArgs.preventDefaultAction) {\n              _this.filterAction = true;\n              _this.isFilteringAction = true;\n              if (_this.dataSource instanceof DataManager && _this.allowCustomValue) {\n                _this.isCustomRendered = false;\n              }\n              _this.dataUpdater(_this.dataSource, null, _this.fields);\n              _this.isFilteringAction = false;\n            }\n          }\n        });\n      } else if (this.allowCustomValue) {\n        var query = new Query();\n        query = this.allowFiltering && text !== '' ? query.where(this.fields.text, 'startswith', text, this.ignoreCase, this.ignoreAccent) : query;\n        if (this.enableVirtualization) {\n          this.dataUpdater(this.dataSource, query, this.fields);\n        } else {\n          this.dataUpdater(this.mainData, query, this.fields);\n        }\n        this.UpdateSkeleton();\n      } else {\n        var liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n        var type = this.typeOfData(this.listData).typeof;\n        var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n        if (this.enableVirtualization && this.targetElement().trim() !== '' && !this.allowFiltering) {\n          var updatingincrementalindex = false;\n          if (this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount || this.incrementalEndIndex === 0) {\n            updatingincrementalindex = true;\n            this.incrementalStartIndex = 0;\n            this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n            this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n            updatingincrementalindex = false;\n          }\n          if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n            this.updateIncrementalView(0, this.itemCount);\n          }\n          activeElement = Search(this.targetElement(), this.incrementalLiCollections, this.filterType, true, this.listData, this.fields, type);\n          while (isNullOrUndefined(activeElement) && this.incrementalEndIndex < this.totalItemCount) {\n            this.incrementalStartIndex = this.incrementalEndIndex;\n            this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n            this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n            updatingincrementalindex = true;\n            if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n              this.updateIncrementalView(0, this.itemCount);\n            }\n            activeElement = Search(this.targetElement(), this.incrementalLiCollections, this.filterType, true, this.listData, this.fields, type);\n            if (!isNullOrUndefined(activeElement)) {\n              break;\n            }\n            if (isNullOrUndefined(activeElement) && this.incrementalEndIndex >= this.totalItemCount) {\n              this.incrementalStartIndex = 0;\n              this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n              break;\n            }\n          }\n          if (activeElement.index) {\n            if (!(this.viewPortInfo.startIndex >= activeElement.index) || !(activeElement.index >= this.viewPortInfo.endIndex)) {\n              var startIndex = activeElement.index - (this.itemCount / 2 - 2) > 0 ? activeElement.index - (this.itemCount / 2 - 2) : 0;\n              var endIndex = startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : startIndex + this.itemCount;\n              if (startIndex !== this.viewPortInfo.startIndex) {\n                this.updateIncrementalView(startIndex, endIndex);\n              }\n            }\n          }\n          if (!isNullOrUndefined(activeElement.item)) {\n            var index1 = this.getIndexByValue(activeElement.item.getAttribute('data-value')) - this.skeletonCount;\n            if (index1 > this.itemCount / 2) {\n              var startIndex = this.viewPortInfo.startIndex + (this.itemCount / 2 - 2) < this.totalItemCount ? this.viewPortInfo.startIndex + (this.itemCount / 2 - 2) : this.totalItemCount;\n              var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n              this.updateIncrementalView(startIndex, endIndex);\n            }\n            activeElement.item = this.getElementByValue(activeElement.item.getAttribute('data-value'));\n          } else {\n            this.updateIncrementalView(0, this.itemCount);\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n            this.list.scrollTop = 0;\n          }\n          if (activeElement && activeElement.item) {\n            activeElement.item = this.getElementByValue(activeElement.item.getAttribute('data-value'));\n          }\n        }\n        if (activeElement && activeElement.item) {\n          this.addListFocus(activeElement.item);\n          this.list.scrollTop = activeElement.item.offsetHeight * activeElement.index;\n        } else if (this.targetElement() !== '') {\n          this.removeFocus();\n        } else {\n          this.focusAtFirstListItem();\n        }\n      }\n    }\n    if (this.enableVirtualization && this.allowFiltering) {\n      this.getFilteringSkeletonCount();\n    }\n  };\n  MultiSelect.prototype.preRender = function () {\n    if (this.allowFiltering === null) {\n      this.allowFiltering = this.mode === 'CheckBox' ? true : false;\n    }\n    this.preventSetCurrentData = false;\n    this.initializeData();\n    this.updateDataAttribute(this.htmlAttributes);\n    _super.prototype.preRender.call(this);\n  };\n  MultiSelect.prototype.getLocaleName = function () {\n    return 'multi-select';\n  };\n  MultiSelect.prototype.initializeData = function () {\n    this.mainListCollection = [];\n    this.beforePopupOpen = false;\n    this.filterAction = false;\n    this.remoteFilterAction = false;\n    this.isFirstClick = false;\n    this.mobFilter = true;\n    this.isFiltered = false;\n    this.focused = true;\n    this.initial = true;\n    this.backCommand = true;\n    this.isCustomRendered = false;\n    this.isRemoteSelection = false;\n    this.isSelectAllTarget = true;\n    this.isaddNonPresentItems = false;\n    this.viewPortInfo = {\n      currentPageNumber: null,\n      direction: null,\n      sentinelInfo: {},\n      offsets: {},\n      startIndex: 0,\n      endIndex: this.itemCount\n    };\n  };\n  MultiSelect.prototype.updateData = function (delimiterChar, e, isInitialVirtualData) {\n    var data = '';\n    var delim = this.mode === 'Delimiter' || this.mode === 'CheckBox';\n    var text = [];\n    var temp;\n    var tempData = this.listData;\n    if (!this.enableVirtualization) {\n      this.listData = this.mainData;\n    }\n    if (!isNullOrUndefined(this.hiddenElement) && !this.enableVirtualization) {\n      this.hiddenElement.innerHTML = '';\n    }\n    if (!isNullOrUndefined(this.value)) {\n      var valueLength = this.value.length;\n      var hiddenElementContent = '';\n      var _loop_2 = function (index) {\n        var valueItem = this_1.allowObjectBinding ? getValue(this_1.fields.value ? this_1.fields.value : '', this_1.value[index]) : this_1.value[index];\n        var listValue = this_1.findListElement(!isNullOrUndefined(this_1.mainList) ? this_1.mainList : this_1.ulElement, 'li', 'data-value', valueItem);\n        if (this_1.enableVirtualization) {\n          listValue = this_1.findListElement(!isNullOrUndefined(this_1.list) ? this_1.list : this_1.ulElement, 'li', 'data-value', valueItem);\n        }\n        if (isNullOrUndefined(listValue) && !this_1.allowCustomValue && !this_1.enableVirtualization && this_1.listData && this_1.listData.length > 0) {\n          this_1.value.splice(index, 1);\n          index -= 1;\n          valueLength -= 1;\n        } else {\n          if (this_1.listData) {\n            if (this_1.enableVirtualization) {\n              if (delim && !this_1.isDynamicRemoteVirtualData) {\n                data = this_1.delimiterWrapper && this_1.delimiterWrapper.innerHTML === '' ? data : this_1.delimiterWrapper.innerHTML;\n              }\n              var value = this_1.allowObjectBinding ? getValue(this_1.fields.value ? this_1.fields.value : '', this_1.value[this_1.value.length - 1]) : this_1.value[this_1.value.length - 1];\n              if (this_1.isRemoveSelection) {\n                data = this_1.text.replace(/,/g, delimiterChar + ' ') + delimiterChar + ' ';\n                text = this_1.text.split(delimiterChar);\n              } else {\n                temp = isInitialVirtualData && delim ? this_1.text : this_1.getTextByValue(value);\n                var textValues = this_1.isDynamicRemoteVirtualData && value != null && value !== '' && !isInitialVirtualData ? this_1.getTextByValue(value) : isInitialVirtualData ? this_1.text : this_1.text && this_1.text !== '' ? this_1.text + this_1.delimiterChar + temp : temp;\n                data += temp + delimiterChar + ' ';\n                text.push(textValues);\n                hiddenElementContent = this_1.hiddenElement.innerHTML;\n              }\n              if (e && e.currentTarget && e.currentTarget.classList.contains('e-chips-close') || e && e.key === 'Backspace') {\n                var item_1 = e.target.parentElement.getAttribute('data-value');\n                if (e.key === 'Backspace') {\n                  var lastChild = this_1.hiddenElement.lastChild;\n                  if (lastChild) {\n                    this_1.hiddenElement.removeChild(lastChild);\n                  }\n                } else {\n                  this_1.hiddenElement.childNodes.forEach(function (option) {\n                    if (option.value === item_1) {\n                      option.parentNode.removeChild(option);\n                    }\n                  });\n                }\n                hiddenElementContent = this_1.hiddenElement.innerHTML;\n              } else {\n                hiddenElementContent += '<option selected value=\\'' + value + '\\'>' + index + '</option>';\n              }\n              return out_index_1 = index, \"break\";\n            } else {\n              temp = this_1.getTextByValue(valueItem);\n            }\n          } else {\n            temp = valueItem;\n          }\n          data += temp + delimiterChar + ' ';\n          text.push(temp);\n        }\n        hiddenElementContent += \"<option selected value=\\\"\" + valueItem + \"\\\">\" + index + \"</option>\";\n        out_index_1 = index;\n      };\n      var this_1 = this,\n        out_index_1;\n      for (var index = 0; index < valueLength; index++) {\n        var state_2 = _loop_2(index);\n        index = out_index_1;\n        if (state_2 === \"break\") break;\n      }\n      if (!isNullOrUndefined(this.hiddenElement)) {\n        if (this.isRemoveSelection) {\n          if (this.findListElement(this.hiddenElement, 'option', 'value', this.currentRemoveValue)) {\n            this.hiddenElement.removeChild(this.findListElement(this.hiddenElement, 'option', 'value', this.currentRemoveValue));\n          }\n          this.isRemoveSelection = false;\n        } else {\n          this.hiddenElement.innerHTML = hiddenElementContent;\n        }\n      }\n    }\n    var isChipRemove = e && e.target && e.target.classList.contains('e-chips-close');\n    if (!this.enableVirtualization || this.enableVirtualization && this.mode !== 'CheckBox' && !isChipRemove) {\n      this.setProperties({\n        text: text.toString()\n      }, true);\n    }\n    if (delim) {\n      this.updateWrapperText(this.delimiterWrapper, data);\n      this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n      this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n    }\n    var targetEle = e && e.target;\n    var isClearAll = targetEle && targetEle.classList.contains('e-close-hooker') ? true : null;\n    if (!this.changeOnBlur && e && !isClearAll || this.isSelectAll) {\n      this.isSelectAll = false;\n      this.updateValueState(e, this.value, this.tempValues);\n    }\n    this.listData = tempData;\n    this.addValidInputClass();\n  };\n  MultiSelect.prototype.initialTextUpdate = function () {\n    if (!isNullOrUndefined(this.text)) {\n      var textArr = this.text.split(this.delimiterChar);\n      var textVal = [];\n      for (var index = 0; textArr.length > index; index++) {\n        var val = this.getValueByText(textArr[index]);\n        if (!isNullOrUndefined(val)) {\n          textVal.push(val);\n        } else if (this.allowCustomValue) {\n          textVal.push(textArr[index]);\n        }\n      }\n      if (textVal && textVal.length) {\n        var value = this.allowObjectBinding ? this.getDataByValue(textVal) : textVal;\n        this.setProperties({\n          value: value\n        }, true);\n      }\n    } else {\n      this.setProperties({\n        value: null\n      }, true);\n    }\n  };\n  MultiSelect.prototype.renderList = function (isEmptyData) {\n    if (!isEmptyData && this.allowCustomValue && this.list && (this.list.textContent === this.noRecordsTemplate || this.list.querySelector('.e-ul') && this.list.querySelector('.e-ul').childElementCount === 0)) {\n      isEmptyData = true;\n    }\n    _super.prototype.render.call(this, null, isEmptyData);\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n    this.unwireListEvents();\n    this.wireListEvents();\n  };\n  MultiSelect.prototype.initialValueUpdate = function (listItems, isInitialVirtualData) {\n    if (this.list) {\n      var text = void 0;\n      var element = void 0;\n      var value = void 0;\n      if (this.chipCollectionWrapper) {\n        this.chipCollectionWrapper.innerHTML = '';\n      }\n      this.removeListSelection();\n      if (!isNullOrUndefined(this.value)) {\n        for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n          value = this.allowObjectBinding ? getValue(this.fields.value ? this.fields.value : '', this.value[index]) : this.value[index];\n          element = this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n          var isCustomData = false;\n          if (this.enableVirtualization) {\n            text = null;\n            if (listItems != null && listItems.length > 0) {\n              for (var i = 0; i < listItems.length; i++) {\n                if (this.isPrimitiveData && listItems[i] === value || !this.isPrimitiveData && getValue(this.fields.value ? this.fields.value : 'value', listItems[i]) === value) {\n                  text = this.isPrimitiveData ? listItems[i] : getValue(this.fields.text, listItems[i]);\n                  if (this.enableVirtualization) {\n                    if (isNullOrUndefined(this.selectedListData)) {\n                      this.selectedListData = [listItems[i]];\n                    } else {\n                      if (Array.isArray(this.selectedListData)) {\n                        this.selectedListData.push(listItems[i]);\n                      } else {\n                        this.selectedListData = [this.selectedListData, listItems[i]];\n                      }\n                    }\n                  }\n                  break;\n                }\n              }\n            }\n            if (isNullOrUndefined(text) && this.allowCustomValue && (!(this.dataSource instanceof DataManager) || this.dataSource instanceof DataManager && isInitialVirtualData)) {\n              text = this.getTextByValue(value);\n              isCustomData = true;\n            }\n          } else {\n            text = this.getTextByValue(value);\n          }\n          if (element && element.getAttribute('aria-selected') !== 'true' || element && element.getAttribute('aria-selected') === 'true' && this.hideSelectedItem && (this.mode === 'Box' || this.mode === 'Default') || this.enableVirtualization && value != null && text != null && !isCustomData) {\n            var currentText = [];\n            var textValues = this.isDynamicRemoteVirtualData && text != null && text !== '' && index === 0 ? text : this.text != null && this.text !== '' && !this.text.includes(text) ? this.text + this.delimiterChar + text : text;\n            currentText.push(textValues);\n            this.setProperties({\n              text: currentText.toString()\n            }, true);\n            this.addChip(text, value);\n            this.addListSelection(element);\n          } else if (!this.enableVirtualization && value && this.allowCustomValue || this.enableVirtualization && value && this.allowCustomValue && (!(this.dataSource instanceof DataManager) || this.dataSource instanceof DataManager && isInitialVirtualData)) {\n            var indexItem = this.listData.length;\n            var newValue = {};\n            setValue(this.fields.text, value, newValue);\n            setValue(this.fields.value, value, newValue);\n            var noDataEle = this.popupWrapper.querySelector('.' + dropDownBaseClasses.noData);\n            if (!this.enableVirtualization) {\n              this.addItem(newValue, indexItem);\n            }\n            if (this.enableVirtualization) {\n              if (this.virtualCustomSelectData && this.virtualCustomSelectData.length >= 0) {\n                this.virtualCustomSelectData.push(newValue);\n              } else {\n                this.virtualCustomSelectData = [newValue];\n              }\n            }\n            element = element ? element : this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n            if (this.popupWrapper.contains(noDataEle)) {\n              this.list.setAttribute('style', noDataEle.getAttribute('style'));\n              this.popupWrapper.replaceChild(this.list, noDataEle);\n              this.wireListEvents();\n            }\n            var currentText = [];\n            var textValues = this.text != null && this.text !== '' ? this.text + this.delimiterChar + text : text;\n            currentText.push(textValues);\n            this.setProperties({\n              text: currentText.toString()\n            }, true);\n            this.addChip(text, value);\n            this.addListSelection(element);\n          }\n        }\n      }\n      if (this.mode === 'CheckBox') {\n        this.updateDelimView();\n        if (this.changeOnBlur) {\n          this.updateValueState(null, this.value, this.tempValues);\n        }\n        this.updateDelimeter(this.delimiterChar);\n        this.refreshInputHight();\n      } else {\n        this.updateDelimeter(this.delimiterChar, null, isInitialVirtualData);\n      }\n      if (this.mode === 'CheckBox' && this.showSelectAll && (isNullOrUndefined(this.value) || !this.value.length)) {\n        this.notify('checkSelectAll', {\n          module: 'CheckBoxSelection',\n          enable: this.mode === 'CheckBox',\n          value: 'uncheck'\n        });\n      }\n      if (this.mode === 'Box' || this.mode === 'Default' && this.inputFocus) {\n        this.chipCollectionWrapper.style.display = '';\n      } else if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n        this.showDelimWrapper();\n      }\n    }\n  };\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  MultiSelect.prototype.updateActionCompleteData = function (li, item) {\n    if (this.value && (!this.allowObjectBinding && this.value.indexOf(li.getAttribute('data-value')) > -1 || this.allowObjectBinding && this.isObjectInArray(this.getDataByValue(li.getAttribute('data-value')), this.value))) {\n      this.mainList = this.ulElement;\n      if (this.hideSelectedItem) {\n        addClass([li], HIDE_LIST);\n      }\n    }\n  };\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  MultiSelect.prototype.updateAddItemList = function (list, itemCount) {\n    if (this.popupObj && this.popupObj.element && this.popupObj.element.querySelector('.' + dropDownBaseClasses.noData) && list) {\n      this.list = list;\n      this.mainList = this.ulElement = list.querySelector('ul');\n      remove(this.popupWrapper.querySelector('.e-content'));\n      this.popupObj = null;\n      this.renderPopup();\n    } else if (this.allowCustomValue) {\n      this.list = list;\n      this.mainList = this.ulElement = list.querySelector('ul');\n    }\n  };\n  MultiSelect.prototype.updateDataList = function () {\n    if (this.mainList && this.ulElement && !(this.isFiltered || this.filterAction || this.targetElement().trim())) {\n      var isDynamicGroupItemUpdate = this.mainList.childElementCount < this.ulElement.childElementCount;\n      var isReactTemplateUpdate = this.ulElement.childElementCount > 0 && this.ulElement.children[0].childElementCount > 0 && this.mainList.children[0] && this.mainList.children[0].childElementCount < this.ulElement.children[0].childElementCount;\n      var isAngularTemplateUpdate = this.itemTemplate && this.ulElement.childElementCount > 0 && !(this.ulElement.childElementCount < this.mainList.childElementCount) && (this.ulElement.children[0].childElementCount > 0 || this.fields.groupBy && this.ulElement.children[1] && this.ulElement.children[1].childElementCount > 0);\n      if (isDynamicGroupItemUpdate || isReactTemplateUpdate || isAngularTemplateUpdate) {\n        //EJ2-57748 - for this task, we prevent the ul element cloning ( this.mainList = this.ulElement.cloneNode ? <HTMLElement>this.ulElement.cloneNode(true) : this.ulElement;)\n        this.mainList = this.ulElement;\n      }\n    }\n  };\n  MultiSelect.prototype.isValidLI = function (li) {\n    return li && !li.classList.contains(dropDownBaseClasses.disabled) && !li.classList.contains(dropDownBaseClasses.group) && li.classList.contains(dropDownBaseClasses.li);\n  };\n  MultiSelect.prototype.updateListSelection = function (li, e, length) {\n    var customVal = li.getAttribute('data-value');\n    var value = this.allowObjectBinding ? this.getDataByValue(this.getFormattedValue(customVal)) : this.getFormattedValue(customVal);\n    if (this.allowCustomValue && (customVal !== 'false' && value === false || !isNullOrUndefined(value) && value.toString() === 'NaN')) {\n      value = customVal;\n    }\n    this.removeHover();\n    if (!this.value || !this.allowObjectBinding && this.value.indexOf(value) === -1 || this.allowObjectBinding && this.indexOfObjectInArray(value, this.value) === -1) {\n      this.dispatchSelect(value, e, li, li.getAttribute('aria-selected') === 'true', length);\n    } else {\n      this.removeValue(value, e, length);\n    }\n  };\n  MultiSelect.prototype.updateListSelectEventCallback = function (value, li, e, currentText) {\n    var _this = this;\n    value = this.allowObjectBinding ? getValue(this.fields.value ? this.fields.value : '', value) : value;\n    var text = currentText ? currentText : this.getTextByValue(value);\n    if ((this.allowCustomValue || this.allowFiltering) && !this.findListElement(this.mainList, 'li', 'data-value', value) && (!this.enableVirtualization || this.enableVirtualization && this.virtualCustomData)) {\n      var temp_1 = li ? li.cloneNode(true) : li;\n      var fieldValue = this.fields.value ? this.fields.value : 'value';\n      if (this.allowCustomValue && this.mainData.length && typeof getValue(fieldValue, this.mainData[0]) === 'number') {\n        value = !isNaN(parseFloat(value.toString())) ? parseFloat(value.toString()) : value;\n      }\n      var data_1 = this.getDataByValue(value);\n      var eventArgs = {\n        newData: data_1,\n        cancel: false\n      };\n      this.trigger('customValueSelection', eventArgs, function (eventArgs) {\n        if (!eventArgs.cancel) {\n          if (_this.enableVirtualization && _this.virtualCustomData) {\n            if (_this.virtualCustomSelectData && _this.virtualCustomSelectData.length >= 0) {\n              _this.virtualCustomSelectData.push(data_1);\n            } else {\n              _this.virtualCustomSelectData = [data_1];\n            }\n            _this.remoteCustomValue = false;\n            _this.addValue(value, text, e);\n          } else {\n            append([temp_1], _this.mainList);\n            _this.mainData.push(data_1);\n            _this.remoteCustomValue = false;\n            _this.addValue(value, text, e);\n          }\n        }\n      });\n    } else {\n      this.remoteCustomValue = false;\n      this.addValue(value, text, e);\n    }\n  };\n  MultiSelect.prototype.removeListSelection = function () {\n    var className = this.hideSelectedItem ? HIDE_LIST : dropDownBaseClasses.selected;\n    var selectedItems = this.list.querySelectorAll('.' + className);\n    var temp = selectedItems.length;\n    if (selectedItems && selectedItems.length) {\n      removeClass(selectedItems, className);\n      while (temp > 0) {\n        selectedItems[temp - 1].setAttribute('aria-selected', 'false');\n        temp--;\n      }\n    }\n    if (!isNullOrUndefined(this.mainList)) {\n      var selectItems = this.mainList.querySelectorAll('.' + className);\n      var temp1 = selectItems.length;\n      if (selectItems && selectItems.length) {\n        removeClass(selectItems, className);\n        while (temp1 > 0) {\n          selectItems[temp1 - 1].setAttribute('aria-selected', 'false');\n          if (this.mode === 'CheckBox') {\n            if (selectedItems && selectedItems.length > temp1 - 1) {\n              removeClass([selectedItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n            }\n            removeClass([selectItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n          }\n          temp1--;\n        }\n      }\n    }\n  };\n  MultiSelect.prototype.removeHover = function () {\n    var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n    if (hoveredItem && hoveredItem.length) {\n      removeClass(hoveredItem, dropDownBaseClasses.hover);\n    }\n  };\n  MultiSelect.prototype.removeFocus = function () {\n    if (this.list && this.mainList) {\n      var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.focus);\n      var mainlist = this.mainList.querySelectorAll('.' + dropDownBaseClasses.focus);\n      if (hoveredItem && hoveredItem.length) {\n        removeClass(hoveredItem, dropDownBaseClasses.focus);\n        removeClass(mainlist, dropDownBaseClasses.focus);\n      }\n    }\n  };\n  MultiSelect.prototype.addListHover = function (li) {\n    if (this.enabled && this.isValidLI(li)) {\n      this.removeHover();\n      addClass([li], dropDownBaseClasses.hover);\n    } else {\n      if (li !== null && li.classList.contains('e-list-group-item') && this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n        this.removeHover();\n        addClass([li], dropDownBaseClasses.hover);\n      }\n    }\n  };\n  MultiSelect.prototype.addListFocus = function (element) {\n    if (this.enabled && (this.isValidLI(element) || this.fields.disabled && this.isDisabledElement(element))) {\n      this.removeFocus();\n      addClass([element], dropDownBaseClasses.focus);\n      this.updateAriaActiveDescendant();\n    } else {\n      if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n        addClass([element], dropDownBaseClasses.focus);\n        this.updateAriaActiveDescendant();\n      }\n    }\n  };\n  MultiSelect.prototype.addListSelection = function (element, mainElement) {\n    var className = this.hideSelectedItem ? HIDE_LIST : dropDownBaseClasses.selected;\n    if (this.isValidLI(element) && !element.classList.contains(dropDownBaseClasses.hover)) {\n      addClass([element], className);\n      this.updateMainList(false, element.getAttribute('data-value'), mainElement);\n      element.setAttribute('aria-selected', 'true');\n      if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n        var ariaCheck = element.getElementsByClassName('e-check').length;\n        if (ariaCheck === 0) {\n          this.notify('updatelist', {\n            module: 'CheckBoxSelection',\n            enable: this.mode === 'CheckBox',\n            li: element,\n            e: this\n          });\n        }\n      }\n      this.notify('activeList', {\n        module: 'CheckBoxSelection',\n        enable: this.mode === 'CheckBox',\n        li: element,\n        e: this\n      });\n      if (this.chipCollectionWrapper) {\n        this.removeChipSelection();\n      }\n      this.selectedElementID = element.id;\n    }\n  };\n  MultiSelect.prototype.updateDelimeter = function (delimChar, e, isInitialVirtualData) {\n    this.updateData(delimChar, e, isInitialVirtualData);\n  };\n  MultiSelect.prototype.onMouseClick = function (e) {\n    var _this = this;\n    if (!this.isClearAllItem) {\n      this.keyCode = null;\n      this.scrollFocusStatus = false;\n      this.keyboardEvent = null;\n      var target = e.target;\n      var li = closest(target, '.' + dropDownBaseClasses.li);\n      if (this.enableVirtualization && li && li.classList.contains('e-virtual-list')) {\n        return;\n      }\n      var headerLi = closest(target, '.' + dropDownBaseClasses.group);\n      if (headerLi && this.enableGroupCheckBox && this.mode === 'CheckBox' && this.fields.groupBy) {\n        target = target.classList.contains('e-list-group-item') ? target.firstElementChild.lastElementChild : e.target;\n        if (target.classList.contains('e-check')) {\n          this.selectAllItem(false, e);\n          target.classList.remove('e-check');\n          target.classList.remove('e-stop');\n          closest(target, '.' + 'e-list-group-item').classList.remove('e-active');\n          target.setAttribute('aria-selected', 'false');\n        } else {\n          this.selectAllItem(true, e);\n          target.classList.remove('e-stop');\n          target.classList.add('e-check');\n          closest(target, '.' + 'e-list-group-item').classList.add('e-active');\n          target.setAttribute('aria-selected', 'true');\n        }\n        this.refreshSelection();\n        this.checkSelectAll();\n      } else {\n        if (this.isValidLI(li)) {\n          var limit = this.value && this.value.length ? this.value.length : 0;\n          if (li.classList.contains('e-active')) {\n            limit = limit - 1;\n          }\n          if (limit < this.maximumSelectionLength) {\n            this.updateListSelection(li, e);\n            this.checkPlaceholderSize();\n            this.addListFocus(li);\n            if ((this.allowCustomValue || this.allowFiltering) && this.mainList && this.listData) {\n              if (this.mode !== 'CheckBox') {\n                this.focusAtLastListItem(li.getAttribute('data-value'));\n                this.refreshSelection();\n              }\n            } else {\n              this.makeTextBoxEmpty();\n            }\n          }\n          if (this.mode === 'CheckBox') {\n            this.updateDelimView();\n            if (this.value && this.value.length > 50) {\n              setTimeout(function () {\n                _this.updateDelimeter(_this.delimiterChar, e);\n              }, 0);\n            } else {\n              this.updateDelimeter(this.delimiterChar, e);\n            }\n            this.refreshInputHight();\n          } else {\n            this.updateDelimeter(this.delimiterChar, e);\n          }\n          this.checkSelectAll();\n          this.refreshPopup();\n          if (this.allowResize) {\n            this.setResize();\n          }\n          if (this.hideSelectedItem) {\n            this.focusAtFirstListItem();\n          }\n          if (this.closePopupOnSelect) {\n            this.hidePopup(e);\n          } else {\n            e.preventDefault();\n          }\n          var isFilterData = this.targetElement().trim() !== '' ? true : false;\n          this.makeTextBoxEmpty();\n          this.findGroupStart(target);\n          if (this.mode !== 'CheckBox') {\n            this.refreshListItems(isNullOrUndefined(li) ? null : li.textContent, isFilterData);\n          }\n        } else {\n          e.preventDefault();\n        }\n        if (this.enableVirtualization && this.hideSelectedItem) {\n          var visibleListElements = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)' + ':not(.e-virtual-list)');\n          if (visibleListElements.length) {\n            var actualCount = this.virtualListHeight > 0 ? Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n            if (visibleListElements.length < actualCount + 2) {\n              var query = this.getForQuery(this.value).clone();\n              query = query.skip(this.virtualItemStartIndex);\n              this.resetList(this.dataSource, this.fields, query);\n              this.UpdateSkeleton();\n              this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n              this.virtualItemCount = this.itemCount;\n              if (this.mode !== 'CheckBox') {\n                this.totalItemCount = this.value && this.value.length ? this.totalItemCount - this.value.length : this.totalItemCount;\n              }\n              if (!this.list.querySelector('.e-virtual-ddl')) {\n                var virualElement = this.createElement('div', {\n                  id: this.element.id + '_popup',\n                  className: 'e-virtual-ddl'\n                });\n                virualElement.style.cssText = this.GetVirtualTrackHeight();\n                this.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n              } else {\n                // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n              }\n              if (this.list.querySelector('.e-virtual-ddl-content')) {\n                // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n              }\n            }\n          }\n        }\n        this.refreshPlaceHolder();\n        this.deselectHeader();\n      }\n    }\n  };\n  MultiSelect.prototype.findGroupStart = function (target) {\n    if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n      var count = 0;\n      var liChecked = 0;\n      var liUnchecked = 0;\n      var groupValues = void 0;\n      if (this.itemTemplate && !target.getElementsByClassName('e-frame').length) {\n        while (!target.getElementsByClassName('e-frame').length) {\n          target = target.parentElement;\n        }\n      }\n      if (target.classList.contains('e-frame')) {\n        target = target.parentElement.parentElement;\n      }\n      groupValues = this.findGroupAttrtibutes(target, liChecked, liUnchecked, count, 0);\n      groupValues = this.findGroupAttrtibutes(target, groupValues[0], groupValues[1], groupValues[2], 1);\n      while (!target.classList.contains('e-list-group-item')) {\n        if (target.classList.contains('e-list-icon')) {\n          target = target.parentElement;\n        }\n        target = target.previousElementSibling;\n        if (target == null) {\n          break;\n        }\n      }\n      this.updateCheckBox(target, groupValues[0], groupValues[1], groupValues[2]);\n    }\n  };\n  MultiSelect.prototype.findGroupAttrtibutes = function (listElement, checked, unChecked, count, position) {\n    while (!listElement.classList.contains('e-list-group-item')) {\n      if (!(this.fields.disabled && this.isDisabledElement(listElement))) {\n        if (listElement.classList.contains('e-list-icon')) {\n          listElement = listElement.parentElement;\n        }\n        if (listElement.getElementsByClassName('e-frame')[0].classList.contains('e-check') && listElement.classList.contains('e-list-item')) {\n          checked++;\n        } else if (listElement.classList.contains('e-list-item')) {\n          unChecked++;\n        }\n        count++;\n      }\n      listElement = position ? listElement.nextElementSibling : listElement.previousElementSibling;\n      if (listElement == null) {\n        break;\n      }\n    }\n    return [checked, unChecked, count];\n  };\n  MultiSelect.prototype.updateCheckBox = function (groupHeader, checked, unChecked, count) {\n    if (groupHeader === null || !isNullOrUndefined(this.fields.disabled) && count === 0) {\n      return;\n    }\n    var checkBoxElement = groupHeader.getElementsByClassName('e-frame')[0];\n    if (count === checked) {\n      checkBoxElement.classList.remove('e-stop');\n      checkBoxElement.classList.add('e-check');\n      closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n      groupHeader.setAttribute('aria-selected', 'true');\n    } else if (count === unChecked) {\n      checkBoxElement.classList.remove('e-check');\n      checkBoxElement.classList.remove('e-stop');\n      closest(checkBoxElement, '.' + 'e-list-group-item').classList.remove('e-active');\n      groupHeader.setAttribute('aria-selected', 'false');\n    } else if (this.maximumSelectionLength === checked - 1) {\n      checkBoxElement.classList.remove('e-stop');\n      groupHeader.setAttribute('aria-selected', 'true');\n      closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n      checkBoxElement.classList.add('e-check');\n    } else {\n      checkBoxElement.classList.remove('e-check');\n      checkBoxElement.classList.add('e-stop');\n      closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n      groupHeader.setAttribute('aria-selected', 'false');\n    }\n  };\n  MultiSelect.prototype.disableGroupHeader = function () {\n    var collection = this.list.querySelectorAll('li.e-list-group-item');\n    if (collection) {\n      for (var index = 0; index < collection.length; index++) {\n        var isDisabled = true;\n        var target = collection[index].nextElementSibling;\n        while (!target.classList.contains('e-list-group-item')) {\n          if (!this.isDisabledElement(target)) {\n            isDisabled = false;\n            break;\n          }\n          target = target.nextElementSibling;\n          if (target == null) {\n            break;\n          }\n        }\n        if (isDisabled) {\n          this.disableListItem(collection[index]);\n        }\n      }\n    }\n  };\n  MultiSelect.prototype.deselectHeader = function () {\n    var limit = this.value && this.value.length ? this.value.length : 0;\n    var collection = this.list.querySelectorAll('li.e-list-group-item:not(.e-active)');\n    if (limit < this.maximumSelectionLength) {\n      removeClass(collection, 'e-disable');\n    }\n    if (limit === this.maximumSelectionLength) {\n      addClass(collection, 'e-disable');\n    }\n  };\n  MultiSelect.prototype.onMouseOver = function (e) {\n    var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n    if (currentLi === null && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy) && this.enableGroupCheckBox) {\n      currentLi = closest(e.target, '.' + dropDownBaseClasses.group);\n    }\n    this.addListHover(currentLi);\n  };\n  MultiSelect.prototype.onMouseLeave = function () {\n    this.removeHover();\n  };\n  MultiSelect.prototype.onListMouseDown = function (e) {\n    e.preventDefault();\n    this.scrollFocusStatus = true;\n  };\n  MultiSelect.prototype.onDocumentClick = function (e) {\n    if (this.mode !== 'CheckBox') {\n      var target = e.target;\n      if (!(!isNullOrUndefined(this.popupObj) && closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) && !this.overAllWrapper.contains(e.target)) {\n        this.scrollFocusStatus = false;\n      } else {\n        this.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') && document.activeElement === this.inputElement;\n      }\n    }\n  };\n  MultiSelect.prototype.wireListEvents = function () {\n    if (!isNullOrUndefined(this.list)) {\n      EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n      EventHandler.add(this.list, 'mousedown', this.onListMouseDown, this);\n      EventHandler.add(this.list, 'mouseup', this.onMouseClick, this);\n      EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n      EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n    }\n  };\n  MultiSelect.prototype.unwireListEvents = function () {\n    EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n    if (this.list) {\n      EventHandler.remove(this.list, 'mousedown', this.onListMouseDown);\n      EventHandler.remove(this.list, 'mouseup', this.onMouseClick);\n      EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n      EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n    }\n  };\n  MultiSelect.prototype.hideOverAllClear = function () {\n    if (!this.value || !this.value.length || this.inputElement.value === '') {\n      this.overAllClear.style.display = 'none';\n    }\n  };\n  MultiSelect.prototype.showOverAllClear = function () {\n    if ((this.value && this.value.length || this.inputElement.value !== '') && this.showClearButton && this.readonly !== true) {\n      this.overAllClear.style.display = '';\n    } else {\n      this.overAllClear.style.display = 'none';\n    }\n  };\n  /**\n   * Sets the focus to widget for interaction.\n   *\n   * @returns {void}\n   */\n  MultiSelect.prototype.focusIn = function () {\n    if (document.activeElement !== this.inputElement && this.enabled) {\n      this.inputElement.focus();\n    }\n  };\n  /**\n   * Remove the focus from widget, if the widget is in focus state.\n   *\n   * @returns {void}\n   */\n  MultiSelect.prototype.focusOut = function () {\n    if (document.activeElement === this.inputElement && this.enabled) {\n      this.inputElement.blur();\n    }\n  };\n  /**\n   * Shows the spinner loader.\n   *\n   * @returns {void}\n   */\n  MultiSelect.prototype.showSpinner = function () {\n    if (isNullOrUndefined(this.spinnerElement)) {\n      var filterClear = this.filterParent && this.filterParent.querySelector('.e-clear-icon.e-icons');\n      if (this.overAllClear.style.display !== 'none' || filterClear) {\n        this.spinnerElement = filterClear ? filterClear : this.overAllClear;\n      } else {\n        this.spinnerElement = this.createElement('span', {\n          className: CLOSEICON_CLASS + ' ' + SPINNER_CLASS\n        });\n        this.componentWrapper.appendChild(this.spinnerElement);\n      }\n      createSpinner({\n        target: this.spinnerElement,\n        width: Browser.isDevice ? '16px' : '14px'\n      }, this.createElement);\n      addClass([this.spinnerElement], DISABLE_ICON);\n      showSpinner(this.spinnerElement);\n    }\n  };\n  /**\n   * Hides the spinner loader.\n   *\n   * @returns {void}\n   */\n  MultiSelect.prototype.hideSpinner = function () {\n    if (!isNullOrUndefined(this.spinnerElement)) {\n      hideSpinner(this.spinnerElement);\n      removeClass([this.spinnerElement], DISABLE_ICON);\n      if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n        detach(this.spinnerElement);\n      } else {\n        this.spinnerElement.innerHTML = '';\n      }\n      this.spinnerElement = null;\n    }\n  };\n  MultiSelect.prototype.updateWrapperText = function (wrapperType, wrapperData) {\n    if (this.valueTemplate || !this.enableHtmlSanitizer) {\n      wrapperType.innerHTML = this.encodeHtmlEntities(wrapperData);\n    } else {\n      wrapperType.innerText = wrapperData;\n    }\n  };\n  MultiSelect.prototype.updateDelimView = function () {\n    if (this.delimiterWrapper) {\n      this.hideDelimWrapper();\n    }\n    if (this.chipCollectionWrapper) {\n      this.chipCollectionWrapper.style.display = 'none';\n    }\n    if (!isNullOrUndefined(this.viewWrapper)) {\n      this.viewWrapper.style.display = '';\n      this.viewWrapper.style.width = '';\n      this.viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n    }\n    if (this.value && this.value.length) {\n      var data = '';\n      var temp = void 0;\n      var tempData = void 0;\n      var tempIndex = 1;\n      var wrapperleng = void 0;\n      var remaining = void 0;\n      var downIconWidth = 0;\n      var overAllContainer = void 0;\n      if (!this.enableVirtualization) {\n        this.updateWrapperText(this.viewWrapper, data);\n      }\n      var l10nLocale = {\n        noRecordsTemplate: 'No records found',\n        actionFailureTemplate: 'Request failed',\n        overflowCountTemplate: '+${count} more..',\n        totalCountTemplate: '${count} selected'\n      };\n      var l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n      if (l10n.getConstant('actionFailureTemplate') === '') {\n        l10n = new L10n('dropdowns', l10nLocale, this.locale);\n      }\n      if (l10n.getConstant('noRecordsTemplate') === '') {\n        l10n = new L10n('dropdowns', l10nLocale, this.locale);\n      }\n      var remainContent = l10n.getConstant('overflowCountTemplate');\n      var totalContent = l10n.getConstant('totalCountTemplate');\n      var raminElement = this.createElement('span', {\n        className: REMAIN_WRAPPER\n      });\n      var remainCompildTemp = remainContent.replace('${count}', this.value.length.toString());\n      raminElement.innerText = remainCompildTemp;\n      this.viewWrapper.appendChild(raminElement);\n      this.renderReactTemplates();\n      var remainSize = raminElement.offsetWidth;\n      remove(raminElement);\n      if (this.showDropDownIcon) {\n        downIconWidth = this.dropIcon.offsetWidth + parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n      }\n      this.checkClearIconWidth();\n      if (!isNullOrUndefined(this.value) && (this.allowCustomValue || this.listData && this.listData.length > 0)) {\n        for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n          var items = this.text && this.text.split(this.delimiterChar);\n          if (!this.enableVirtualization) {\n            data += index === 0 ? '' : this.delimiterChar + ' ';\n            temp = this.getOverflowVal(index);\n            data += temp;\n            temp = this.viewWrapper.innerHTML;\n            this.updateWrapperText(this.viewWrapper, data);\n          } else if (items) {\n            data += index === 0 ? '' : this.delimiterChar + ' ';\n            temp = items[index];\n            data += temp;\n            temp = this.viewWrapper.innerHTML;\n            this.updateWrapperText(this.viewWrapper, data);\n          }\n          wrapperleng = this.viewWrapper.offsetWidth + parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n          overAllContainer = this.componentWrapper.offsetWidth - parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) - parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n          if (wrapperleng + downIconWidth + this.clearIconWidth > overAllContainer) {\n            if (tempData !== undefined && tempData !== '') {\n              temp = tempData;\n              index = tempIndex + 1;\n            }\n            this.updateWrapperText(this.viewWrapper, temp);\n            remaining = this.value.length - index;\n            wrapperleng = this.viewWrapper.offsetWidth + parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n            while (wrapperleng + remainSize + downIconWidth + this.clearIconWidth > overAllContainer && wrapperleng !== 0 && this.viewWrapper.innerHTML !== '') {\n              var textArr = [];\n              this.viewWrapper.innerHTML = textArr.join(this.delimiterChar);\n              remaining = this.value.length;\n              wrapperleng = this.viewWrapper.offsetWidth + parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n            }\n            break;\n          } else if (wrapperleng + remainSize + downIconWidth + this.clearIconWidth <= overAllContainer) {\n            tempData = data;\n            tempIndex = index;\n          } else if (index === 0) {\n            tempData = '';\n            tempIndex = -1;\n          }\n        }\n      }\n      if (remaining > 0) {\n        var totalWidth = overAllContainer - downIconWidth - this.clearIconWidth;\n        this.viewWrapper.appendChild(this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth));\n        this.updateRemainWidth(this.viewWrapper, totalWidth);\n        this.updateRemainingText(raminElement, downIconWidth, remaining, remainContent, totalContent);\n      }\n    } else {\n      if (!isNullOrUndefined(this.viewWrapper)) {\n        this.viewWrapper.innerHTML = '';\n        this.viewWrapper.style.display = 'none';\n      }\n    }\n  };\n  MultiSelect.prototype.checkClearIconWidth = function () {\n    if (this.showClearButton) {\n      this.clearIconWidth = this.overAllClear.offsetWidth;\n    }\n  };\n  MultiSelect.prototype.updateRemainWidth = function (viewWrapper, totalWidth) {\n    if (viewWrapper.classList.contains(TOTAL_COUNT_WRAPPER) && totalWidth < viewWrapper.offsetWidth + parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10) + parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10)) {\n      viewWrapper.style.width = totalWidth + 'px';\n    }\n  };\n  MultiSelect.prototype.updateRemainTemplate = function (raminElement, viewWrapper, remaining, remainContent, totalContent, totalWidth) {\n    if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3 && viewWrapper.firstChild.nodeValue === '') {\n      viewWrapper.removeChild(viewWrapper.firstChild);\n    }\n    raminElement.innerHTML = '';\n    var remainTemp = remainContent.replace('${count}', remaining.toString());\n    var totalTemp = totalContent.replace('${count}', remaining.toString());\n    raminElement.innerText = viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3 ? remainTemp : totalTemp;\n    if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) {\n      viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n    } else {\n      viewWrapper.classList.add(TOTAL_COUNT_WRAPPER);\n      this.updateRemainWidth(viewWrapper, totalWidth);\n    }\n    return raminElement;\n  };\n  MultiSelect.prototype.updateRemainingText = function (raminElement, downIconWidth, remaining, remainContent, totalContent) {\n    var overAllContainer = this.componentWrapper.offsetWidth - parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) - parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n    var wrapperleng = this.viewWrapper.offsetWidth + parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n    if (wrapperleng + downIconWidth >= overAllContainer && wrapperleng !== 0 && this.viewWrapper.firstChild && this.viewWrapper.firstChild.nodeType === 3) {\n      while (wrapperleng + downIconWidth > overAllContainer && wrapperleng !== 0 && this.viewWrapper.firstChild && this.viewWrapper.firstChild.nodeType === 3) {\n        var textArr = this.viewWrapper.firstChild.nodeValue.split(this.delimiterChar);\n        textArr.pop();\n        this.viewWrapper.firstChild.nodeValue = textArr.join(this.delimiterChar);\n        if (this.viewWrapper.firstChild.nodeValue === '') {\n          this.viewWrapper.removeChild(this.viewWrapper.firstChild);\n        }\n        remaining++;\n        wrapperleng = this.viewWrapper.offsetWidth;\n      }\n      var totalWidth = overAllContainer - downIconWidth;\n      this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth);\n    }\n  };\n  MultiSelect.prototype.getOverflowVal = function (index) {\n    var temp;\n    if (this.mainData && this.mainData.length) {\n      var value = this.allowObjectBinding ? getValue(this.fields.value ? this.fields.value : '', this.value[index]) : this.value[index];\n      if (this.mode === 'CheckBox') {\n        var newTemp = this.listData;\n        this.listData = this.mainData;\n        temp = this.getTextByValue(value);\n        this.listData = newTemp;\n      } else {\n        temp = this.getTextByValue(value);\n      }\n    } else {\n      temp = this.allowObjectBinding ? getValue(this.fields.value ? this.fields.value : '', this.value[index]) : this.value[index];\n    }\n    return temp;\n  };\n  MultiSelect.prototype.unWireEvent = function () {\n    if (!isNullOrUndefined(this.componentWrapper)) {\n      EventHandler.remove(this.componentWrapper, 'mousedown', this.wrapperClick);\n    }\n    EventHandler.remove(window, 'resize', this.windowResize);\n    if (!isNullOrUndefined(this.inputElement)) {\n      EventHandler.remove(this.inputElement, 'focus', this.focusInHandler);\n      EventHandler.remove(this.inputElement, 'keydown', this.onKeyDown);\n      if (this.mode !== 'CheckBox') {\n        EventHandler.remove(this.inputElement, 'input', this.onInput);\n      }\n      EventHandler.remove(this.inputElement, 'keyup', this.keyUp);\n      var formElement = closest(this.inputElement, 'form');\n      if (formElement) {\n        EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n      }\n      EventHandler.remove(this.inputElement, 'blur', this.onBlurHandler);\n    }\n    if (!isNullOrUndefined(this.componentWrapper)) {\n      EventHandler.remove(this.componentWrapper, 'mouseover', this.mouseIn);\n      EventHandler.remove(this.componentWrapper, 'mouseout', this.mouseOut);\n    }\n    if (!isNullOrUndefined(this.overAllClear)) {\n      EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n    }\n    if (!isNullOrUndefined(this.inputElement)) {\n      EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n    }\n  };\n  MultiSelect.prototype.resizingWireEvent = function () {\n    // Mouse events\n    EventHandler.add(document, 'mousemove', this.resizePopup, this);\n    EventHandler.add(document, 'mouseup', this.stopResizing, this);\n    // Touch events\n    EventHandler.add(document, 'touchmove', this.resizePopup, this);\n    EventHandler.add(document, 'touchend', this.stopResizing, this);\n  };\n  MultiSelect.prototype.resizingUnWireEvent = function () {\n    // Mouse events\n    EventHandler.remove(document, 'mousemove', this.resizePopup);\n    EventHandler.remove(document, 'mouseup', this.stopResizing);\n    // Touch events\n    EventHandler.remove(document, 'touchmove', this.resizePopup);\n    EventHandler.remove(document, 'touchend', this.stopResizing);\n  };\n  MultiSelect.prototype.selectAllItem = function (state, event, list) {\n    var li;\n    if (!isNullOrUndefined(this.list)) {\n      li = this.list.querySelectorAll(state ? 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide):not(.e-disabled):not(.e-virtual-list)' : 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide):not(.e-disabled):not(.e-virtual-list)');\n    }\n    if (this.value && this.value.length && event && event.target && closest(event.target, '.e-close-hooker') && this.allowFiltering) {\n      li = this.mainList.querySelectorAll(state ? 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide):not(.e-disabled):not(.e-virtual-list)' : 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide):not(.e-disabled):not(.e-virtual-list)');\n    }\n    if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n      var target = event ? this.groupTemplate ? closest(event.target, '.e-list-group-item') : event.target : null;\n      target = event && event.keyCode === 32 ? list : target;\n      target = target && target.classList.contains('e-frame') ? target.parentElement.parentElement : target;\n      if (target && target.classList.contains('e-list-group-item')) {\n        var listElement = target.nextElementSibling;\n        if (isNullOrUndefined(listElement)) {\n          return;\n        }\n        while (listElement.classList.contains('e-list-item')) {\n          if (!(this.fields.disabled && this.isDisabledElement(listElement))) {\n            if (state) {\n              if (!listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n                var selectionLimit = this.value && this.value.length ? this.value.length : 0;\n                if (listElement.classList.contains('e-active')) {\n                  selectionLimit -= 1;\n                }\n                if (selectionLimit < this.maximumSelectionLength) {\n                  this.updateListSelection(listElement, event);\n                }\n              }\n            } else {\n              if (listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n                this.updateListSelection(listElement, event);\n              }\n            }\n          }\n          listElement = listElement.nextElementSibling;\n          if (listElement == null) {\n            break;\n          }\n        }\n        if (target.classList.contains('e-list-group-item')) {\n          var focusedElement = this.list.getElementsByClassName('e-item-focus')[0];\n          if (focusedElement) {\n            focusedElement.classList.remove('e-item-focus');\n          }\n          if (state) {\n            target.classList.add('e-active');\n          } else {\n            target.classList.remove('e-active');\n          }\n          target.classList.add('e-item-focus');\n          this.updateAriaActiveDescendant();\n        }\n        this.textboxValueUpdate();\n        this.checkPlaceholderSize();\n        if (!this.changeOnBlur && event) {\n          this.updateValueState(event, this.value, this.tempValues);\n        }\n      } else {\n        this.updateValue(event, li, state);\n      }\n    } else {\n      this.updateValue(event, li, state);\n    }\n    this.addValidInputClass();\n  };\n  MultiSelect.prototype.virtualSelectionAll = function (state, li, event) {\n    var _this = this;\n    var index = 0;\n    var length = li.length;\n    var count = this.maximumSelectionLength;\n    if (state) {\n      this.virtualSelectAll = true;\n      length = this.virtualSelectAllData && this.virtualSelectAllData.length !== 0 ? this.virtualSelectAllData.length : length;\n      this.listData = this.virtualSelectAllData;\n      var ulElement = this.createListItems(this.virtualSelectAllData.slice(0, 30), this.fields);\n      var firstItems = ulElement.querySelectorAll('li');\n      var fragment_1 = document.createDocumentFragment();\n      firstItems.forEach(function (node) {\n        fragment_1.appendChild(node.cloneNode(true));\n      });\n      li.forEach(function (node) {\n        fragment_1.appendChild(node.cloneNode(true));\n      });\n      var concatenatedNodeList = fragment_1.childNodes;\n      if (this.virtualSelectAllData instanceof Array) {\n        while (index < length && index <= 50 && index < count) {\n          this.isSelectAllTarget = length === index + 1;\n          if (concatenatedNodeList[index]) {\n            var value = this.allowObjectBinding ? this.getDataByValue(concatenatedNodeList[index].getAttribute('data-value')) : this.getFormattedValue(concatenatedNodeList[index].getAttribute('data-value'));\n            if (!this.allowObjectBinding && this.value && this.value.indexOf(value) >= 0 || this.allowObjectBinding && this.indexOfObjectInArray(value, this.value) >= 0) {\n              index++;\n              continue;\n            }\n            this.updateListSelection(concatenatedNodeList[index], event, length - index);\n          } else {\n            var value = getValue(this.fields.value ? this.fields.value : '', this.virtualSelectAllData[index]);\n            value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n            if (!this.allowObjectBinding && this.value && this.value.indexOf(value) >= 0 || this.allowObjectBinding && this.indexOfObjectInArray(value, this.value) >= 0) {\n              index++;\n              continue;\n            }\n            if (this.value && value != null && Array.isArray(this.value) && (!this.allowObjectBinding && this.value.indexOf(value) < 0 || this.allowObjectBinding && !this.isObjectInArray(value, this.value))) {\n              this.dispatchSelect(value, event, null, false, length);\n            }\n          }\n          index++;\n        }\n        if (length > 50) {\n          setTimeout(function () {\n            if (_this.virtualSelectAllData && _this.virtualSelectAllData.length > 0) {\n              _this.virtualSelectAllData.map(function (obj) {\n                if (_this.value && obj[_this.fields.value] != null && Array.isArray(_this.value) && (!_this.allowObjectBinding && _this.value.indexOf(obj[_this.fields.value]) < 0 || _this.allowObjectBinding && !_this.isObjectInArray(obj[_this.fields.value], _this.value))) {\n                  var value = obj[_this.fields.value];\n                  var text = obj[_this.fields.text].toString();\n                  _this.dispatchSelect(value, event, null, false, length, obj, text);\n                }\n              });\n            }\n            _this.updatedataValueItems(event);\n            _this.isSelectAllLoop = false;\n            if (!_this.changeOnBlur) {\n              _this.updateValueState(event, _this.value, _this.tempValues);\n              _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;\n            }\n            _this.updateHiddenElement(true);\n            if (_this.popupWrapper && li[index - 1] && li[index - 1].classList.contains('e-item-focus')) {\n              var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n              if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n                li[index - 1].classList.remove('e-item-focus');\n              }\n            }\n          }, 0);\n        }\n      }\n    } else {\n      if (this.virtualSelectAllData && this.virtualSelectAllData.length > 0) {\n        this.virtualSelectAllData.map(function (obj) {\n          _this.virtualSelectAll = true;\n          _this.removeValue(_this.value[index], event, _this.value.length - index);\n        });\n      }\n      this.updatedataValueItems(event);\n      if (!this.changeOnBlur) {\n        this.updateValueState(event, this.value, this.tempValues);\n        this.isSelectAll = this.isSelectAll ? !this.isSelectAll : this.isSelectAll;\n      }\n      this.updateHiddenElement();\n      this.setProperties({\n        value: []\n      }, true);\n      this.virtualSelectAll = false;\n      if (!isNullOrUndefined(this.viewPortInfo.startIndex) && !isNullOrUndefined(this.viewPortInfo.endIndex)) {\n        this.notify('setCurrentViewDataAsync', {\n          component: this.getModuleName(),\n          module: 'VirtualScroll'\n        });\n      }\n    }\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    var virtualTrackElement = this.list.getElementsByClassName('e-virtual-ddl')[0];\n    if (virtualTrackElement) {\n      virtualTrackElement.style = this.GetVirtualTrackHeight();\n    }\n    this.UpdateSkeleton();\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    var virtualContentElement = this.list.getElementsByClassName('e-virtual-ddl-content')[0];\n    if (virtualContentElement) {\n      virtualContentElement.style = this.getTransformValues();\n    }\n  };\n  MultiSelect.prototype.updateValue = function (event, li, state) {\n    var _this = this;\n    var length = li.length;\n    var beforeSelectArgs = {\n      event: event,\n      items: state ? li : [],\n      itemData: state ? this.listData : [],\n      isInteracted: event ? true : false,\n      isChecked: state,\n      preventSelectEvent: false\n    };\n    this.trigger('beforeSelectAll', beforeSelectArgs);\n    if (li && li.length || this.enableVirtualization && !state) {\n      var index_1 = 0;\n      var count_1 = 0;\n      if (this.enableGroupCheckBox) {\n        count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : li.length;\n      } else {\n        count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : this.maximumSelectionLength;\n      }\n      if (!beforeSelectArgs.preventSelectEvent) {\n        if (this.enableVirtualization) {\n          this.virtualSelectAllState = state;\n          this.virtualSelectAll = true;\n          this.CurrentEvent = event;\n          if (!this.virtualSelectAllData) {\n            this.resetList(this.dataSource, this.fields, new Query());\n          }\n          if (this.virtualSelectAllData) {\n            this.virtualSelectionAll(state, li, event);\n          }\n        } else {\n          while (index_1 < length && index_1 <= 50 && index_1 < count_1) {\n            this.isSelectAllTarget = length === index_1 + 1;\n            this.updateListSelection(li[index_1], event, length - index_1);\n            if (this.enableGroupCheckBox) {\n              this.findGroupStart(li[index_1]);\n            }\n            index_1++;\n          }\n          if (length > 50) {\n            setTimeout(function () {\n              while (index_1 < length && index_1 < count_1) {\n                _this.isSelectAllTarget = length === index_1 + 1;\n                _this.updateListSelection(li[index_1], event, length - index_1);\n                if (_this.enableGroupCheckBox) {\n                  _this.findGroupStart(li[index_1]);\n                }\n                index_1++;\n              }\n              _this.updatedataValueItems(event);\n              if (!_this.changeOnBlur) {\n                _this.updateValueState(event, _this.value, _this.tempValues);\n                _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;\n              }\n              _this.updateHiddenElement();\n              if (_this.popupWrapper && li[index_1 - 1].classList.contains('e-item-focus')) {\n                var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n                if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n                  li[index_1 - 1].classList.remove('e-item-focus');\n                }\n              }\n            }, 0);\n          }\n        }\n      } else {\n        for (var i = 0; i < li.length && i < count_1; i++) {\n          this.removeHover();\n          var customVal = li[i].getAttribute('data-value');\n          var value = this.getFormattedValue(customVal);\n          value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n          var mainElement = this.mainList ? this.mainList.querySelectorAll(state ? 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' : 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)')[i] : null;\n          if (state) {\n            this.value = !this.value ? [] : this.value;\n            if (!this.allowObjectBinding && this.value.indexOf(value) < 0 || this.allowObjectBinding && !this.isObjectInArray(value, this.value)) {\n              this.setProperties({\n                value: [].concat([], this.value, [value])\n              }, true);\n            }\n            this.removeFocus();\n            this.addListSelection(li[i], mainElement);\n            this.updateChipStatus();\n            this.checkMaxSelection();\n          } else {\n            this.removeAllItems(value, event, false, li[i], mainElement);\n          }\n          if (this.enableGroupCheckBox) {\n            this.findGroupStart(li[i]);\n          }\n        }\n        if (!state) {\n          var limit = this.value && this.value.length ? this.value.length : 0;\n          if (limit < this.maximumSelectionLength) {\n            var collection = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-active)');\n            removeClass(collection, 'e-disable');\n          }\n        }\n        var args = {\n          event: event,\n          items: state ? li : [],\n          itemData: state ? this.listData : [],\n          isInteracted: event ? true : false,\n          isChecked: state\n        };\n        this.trigger('selectedAll', args);\n      }\n    }\n    this.updatedataValueItems(event);\n    this.checkPlaceholderSize();\n    if (length <= 50 && !beforeSelectArgs.preventSelectEvent) {\n      if (!this.changeOnBlur) {\n        this.updateValueState(event, this.value, this.tempValues);\n        this.isSelectAll = this.isSelectAll ? !this.isSelectAll : this.isSelectAll;\n      }\n      if (this.enableVirtualization && this.value && this.value.length > 0 || !this.enableVirtualization) {\n        this.updateHiddenElement();\n      }\n    }\n  };\n  MultiSelect.prototype.updateHiddenElement = function (isVirtualSelectAll) {\n    var _this = this;\n    var hiddenValue = '';\n    var wrapperText = '';\n    var data = '';\n    var text = [];\n    if (this.mode === 'CheckBox') {\n      this.value.map(function (value, index) {\n        hiddenValue += '<option selected value =\"' + value + '\">' + index + '</option>';\n        if (!isVirtualSelectAll) {\n          if (_this.listData) {\n            data = _this.getTextByValue(value);\n          } else {\n            data = value;\n          }\n          wrapperText += data + _this.delimiterChar + ' ';\n          text.push(data);\n        }\n      });\n      this.hiddenElement.innerHTML = hiddenValue;\n      if (!isVirtualSelectAll) {\n        this.updateWrapperText(this.delimiterWrapper, wrapperText);\n        this.setProperties({\n          text: text.toString()\n        }, true);\n      }\n      this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n      this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n      this.refreshInputHight();\n      this.refreshPlaceHolder();\n    }\n  };\n  MultiSelect.prototype.updatedataValueItems = function (event) {\n    this.deselectHeader();\n    this.textboxValueUpdate(event);\n  };\n  MultiSelect.prototype.textboxValueUpdate = function (event) {\n    var isRemoveAll = event && event.target && (closest(event.target, '.e-selectall-parent') || closest(event.target, '.e-close-hooker'));\n    if (this.mode !== 'Box' && !this.isPopupOpen() && !(this.mode === 'CheckBox' && (this.isSelectAll || isRemoveAll))) {\n      this.updateDelimView();\n    } else {\n      this.searchWrapper.classList.remove(ZERO_SIZE);\n    }\n    if (this.mode === 'CheckBox') {\n      this.updateDelimView();\n      if (!(isRemoveAll || this.isSelectAll) && this.isSelectAllTarget || this.isSelectAll && this.isSelectAllTarget) {\n        this.updateDelimeter(this.delimiterChar, event);\n      }\n      this.refreshInputHight();\n    } else {\n      this.updateDelimeter(this.delimiterChar, event);\n    }\n    this.refreshPlaceHolder();\n  };\n  MultiSelect.prototype.setZIndex = function () {\n    if (this.popupObj) {\n      this.popupObj.setProperties({\n        'zIndex': this.zIndex\n      });\n    }\n  };\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  MultiSelect.prototype.updateDataSource = function (prop) {\n    if (isNullOrUndefined(this.list)) {\n      this.renderPopup();\n    } else {\n      this.resetList(this.dataSource);\n    }\n    if (this.value && this.value.length) {\n      this.setProperties({\n        'value': this.value\n      });\n      this.refreshSelection();\n    }\n  };\n  MultiSelect.prototype.onLoadSelect = function () {\n    this.setDynValue = true;\n    this.renderPopup();\n  };\n  MultiSelect.prototype.selectAllItems = function (state, event) {\n    var _this = this;\n    if (isNullOrUndefined(this.list)) {\n      this.selectAllAction = function () {\n        if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n          var args = {\n            module: 'CheckBoxSelection',\n            enable: _this.mode === 'CheckBox',\n            value: state ? 'check' : 'uncheck'\n          };\n          _this.notify('checkSelectAll', args);\n        }\n        _this.selectAllItem(state, event);\n        _this.selectAllAction = null;\n      };\n      _super.prototype.render.call(this);\n    } else {\n      this.selectAllAction = null;\n      if (this.mode === 'CheckBox' && this.showSelectAll) {\n        var args = {\n          value: state ? 'check' : 'uncheck',\n          enable: this.mode === 'CheckBox',\n          module: 'CheckBoxSelection'\n        };\n        this.notify('checkSelectAll', args);\n      }\n      this.selectAllItem(state, event);\n    }\n    if (!(this.dataSource instanceof DataManager) || this.dataSource instanceof DataManager && this.virtualSelectAllData) {\n      this.virtualSelectAll = false;\n    }\n  };\n  /**\n   * Get the properties to be maintained in the persisted state.\n   *\n   * @returns {string} Returns the persisted data of the component.\n   */\n  MultiSelect.prototype.getPersistData = function () {\n    return this.addOnPersist(['value']);\n  };\n  /**\n   * Dynamically change the value of properties.\n   *\n   * @param {MultiSelectModel} newProp - Returns the dynamic property value of the component.\n   * @param {MultiSelectModel} oldProp - Returns the previous property value of the component.\n   * @private\n   * @returns {void}\n   */\n  MultiSelect.prototype.onPropertyChanged = function (newProp, oldProp) {\n    if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource)) || newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n      this.mainList = null;\n      this.mainData = null;\n      this.isFirstClick = false;\n      this.isDynamicDataChange = true;\n    }\n    if (this.getModuleName() === 'multiselect') {\n      this.filterAction = false;\n      this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n    }\n    for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n      var prop = _a[_i];\n      switch (prop) {\n        case 'query':\n        case 'dataSource':\n          if (this.mode === 'CheckBox' && this.showSelectAll) {\n            if (!isNullOrUndefined(this.popupObj)) {\n              this.popupObj.destroy();\n              this.popupObj = null;\n            }\n            this.renderPopup();\n          }\n          break;\n        case 'htmlAttributes':\n          this.updateHTMLAttribute();\n          break;\n        case 'showClearButton':\n          this.updateClearButton(newProp.showClearButton);\n          break;\n        case 'text':\n          if (this.fields.disabled) {\n            this.text = this.text && !this.isDisabledItemByIndex(this.getIndexByValue(this.getValueByText(this.text))) ? this.text : null;\n          }\n          this.updateVal(this.value, this.value, 'text');\n          break;\n        case 'value':\n          if (this.fields.disabled) {\n            this.removeDisabledItemsValue(this.value);\n          }\n          this.updateVal(this.value, oldProp.value, 'value');\n          this.addValidInputClass();\n          if (!this.closePopupOnSelect && this.isPopupOpen()) {\n            this.refreshPopup();\n          }\n          if (this.isPopupOpen() && this.mode === 'CheckBox' && this.list && this.list.querySelector('.e-active.e-disable')) {\n            var activeItems = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + '.e-active' + '.e-disable');\n            removeClass(activeItems, 'e-disable');\n          }\n          this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n          break;\n        case 'width':\n          this.setWidth(newProp.width);\n          this.popupObj.setProperties({\n            width: this.calcPopupWidth()\n          });\n          break;\n        case 'placeholder':\n          this.refreshPlaceHolder();\n          break;\n        case 'filterBarPlaceholder':\n          if (this.allowFiltering) {\n            this.notify('filterBarPlaceholder', {\n              filterBarPlaceholder: newProp.filterBarPlaceholder\n            });\n          }\n          break;\n        case 'delimiterChar':\n          if (this.mode !== 'Box') {\n            this.updateDelimView();\n          }\n          this.updateData(newProp.delimiterChar);\n          break;\n        case 'cssClass':\n          this.updateOldPropCssClass(oldProp.cssClass);\n          this.updateCssClass();\n          this.calculateWidth();\n          break;\n        case 'enableRtl':\n          this.enableRTL(newProp.enableRtl);\n          _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n          break;\n        case 'allowResize':\n          this.allowResize = newProp.allowResize;\n          if (!this.allowResize && this.popupObj) {\n            var overAllHeight = parseInt(this.popupHeight, 10);\n            if (this.popupHeight !== 'auto') {\n              this.list.style.maxHeight = formatUnit(overAllHeight);\n              this.popupWrapper.style.height = formatUnit(this.popupHeight);\n              this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n            } else {\n              this.list.style.maxHeight = formatUnit(this.popupHeight);\n            }\n          }\n          break;\n        case 'readonly':\n          this.updateReadonly(newProp.readonly);\n          this.hidePopup();\n          break;\n        case 'enabled':\n          this.hidePopup();\n          this.enable(newProp.enabled);\n          break;\n        case 'showSelectAll':\n          if (this.popupObj) {\n            this.popupObj.destroy();\n            this.popupObj = null;\n          }\n          this.renderPopup();\n          break;\n        case 'showDropDownIcon':\n          this.dropDownIcon();\n          break;\n        case 'floatLabelType':\n          this.setFloatLabelType();\n          this.addValidInputClass();\n          Input.createSpanElement(this.overAllWrapper, this.createElement);\n          this.calculateWidth();\n          if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n            this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n          }\n          break;\n        case 'enableSelectionOrder':\n          break;\n        case 'selectAllText':\n          this.notify('selectAllText', false);\n          break;\n        case 'popupHeight':\n          if (this.popupObj) {\n            var overAllHeight = parseInt(this.popupHeight, 10);\n            if (this.popupHeight !== 'auto') {\n              this.list.style.maxHeight = formatUnit(overAllHeight);\n              this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n            } else {\n              this.list.style.maxHeight = formatUnit(this.popupHeight);\n            }\n          }\n          break;\n        case 'headerTemplate':\n        case 'footerTemplate':\n          this.reInitializePoup();\n          break;\n        case 'allowFiltering':\n          if (this.mode === 'CheckBox' && this.popupObj) {\n            this.reInitializePoup();\n          }\n          this.updateSelectElementData(this.allowFiltering);\n          break;\n        case 'fields':\n          if (isNullOrUndefined(this.fields.groupBy)) {\n            this.removeScrollEvent();\n          }\n          break;\n        default:\n          {\n            var msProps = this.getPropObject(prop, newProp, oldProp);\n            _super.prototype.onPropertyChanged.call(this, msProps.newProperty, msProps.oldProperty);\n          }\n          break;\n      }\n    }\n  };\n  MultiSelect.prototype.reInitializePoup = function () {\n    if (this.popupObj) {\n      this.popupObj.destroy();\n      this.popupObj = null;\n    }\n    this.renderPopup();\n  };\n  MultiSelect.prototype.totalItemsCount = function () {\n    var dataSourceCount;\n    if (this.dataSource instanceof DataManager) {\n      if (this.remoteDataCount >= 0) {\n        dataSourceCount = this.totalItemCount = this.dataCount = this.remoteDataCount;\n      } else {\n        this.resetList(this.dataSource);\n      }\n    } else {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      dataSourceCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n    }\n    if (this.mode === 'CheckBox') {\n      this.totalItemCount = dataSourceCount !== 0 ? dataSourceCount : this.totalItemCount;\n    } else {\n      if (this.hideSelectedItem) {\n        this.totalItemCount = dataSourceCount !== 0 && this.value ? dataSourceCount - this.value.length : this.totalItemCount;\n        if (this.allowCustomValue && this.virtualCustomSelectData && this.virtualCustomSelectData.length > 0) {\n          for (var i = 0; i < this.virtualCustomSelectData.length; i++) {\n            for (var j = 0; j < this.value.length; j++) {\n              var value = this.allowObjectBinding ? getValue(this.fields.value ? this.fields.value : '', this.value[j]) : this.value[j];\n              var customValue = getValue(this.fields.value ? this.fields.value : '', this.virtualCustomSelectData[i]);\n              if (value === customValue) {\n                this.totalItemCount += 1;\n              }\n            }\n          }\n        }\n      } else {\n        this.totalItemCount = dataSourceCount !== 0 ? dataSourceCount : this.totalItemCount;\n        if (this.allowCustomValue && this.virtualCustomSelectData && this.virtualCustomSelectData.length > 0) {\n          this.totalItemCount += this.virtualCustomSelectData.length;\n        }\n      }\n    }\n  };\n  MultiSelect.prototype.presentItemValue = function (ulElement) {\n    var valuecheck = [];\n    for (var i = 0; i < this.value.length; i++) {\n      var value = this.allowObjectBinding ? getValue(this.fields.value ? this.fields.value : '', this.value[i]) : this.value[i];\n      var checkEle = this.findListElement(this.allowFiltering && !isNullOrUndefined(this.mainList) ? this.mainList : ulElement, 'li', 'data-value', value);\n      if (!checkEle) {\n        var checkvalue = this.allowObjectBinding ? this.getDataByValue(this.value[i]) : this.value[i];\n        valuecheck.push(checkvalue);\n      }\n    }\n    return valuecheck;\n  };\n  MultiSelect.prototype.addNonPresentItems = function (valuecheck, ulElement, list, event) {\n    var _this = this;\n    this.dataSource.executeQuery(this.getForQuery(valuecheck)).then(function (e) {\n      if (e.result.length > 0) {\n        _this.addItem(e.result, list.length);\n      }\n      _this.updateActionList(ulElement, list, event);\n    });\n  };\n  MultiSelect.prototype.updateVal = function (newProp, oldProp, prop) {\n    if (!this.list) {\n      this.onLoadSelect();\n    } else if (this.dataSource instanceof DataManager && (!this.listData || !(this.mainList && this.mainData))) {\n      this.onLoadSelect();\n    } else {\n      var valuecheck = [];\n      if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n        valuecheck = this.presentItemValue(this.ulElement);\n      }\n      if (prop === 'value' && valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value) && this.listData != null) {\n        this.mainData = null;\n        this.setDynValue = true;\n        this.isaddNonPresentItems = true;\n        this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n        this.isaddNonPresentItems = false;\n      } else {\n        if (prop === 'text') {\n          this.initialTextUpdate();\n          newProp = this.value;\n        }\n        if (isNullOrUndefined(this.value) || this.value.length === 0) {\n          this.tempValues = oldProp;\n        }\n        // eslint-disable-next-line\n        if (this.allowCustomValue && (this.mode === 'Default' || this.mode === 'Box') && this.isReact && this.inputFocus && this.isPopupOpen() && this.mainData !== this.listData) {\n          var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n          this.onActionComplete(list, this.mainData);\n        }\n        if (!this.enableVirtualization) {\n          this.initialValueUpdate();\n        } else if (this.enableVirtualization && !(this.dataSource instanceof DataManager)) {\n          this.initialValueUpdate(this.dataSource, true);\n        } else if (!this.isInitRemoteVirtualData) {\n          this.isDynamicRemoteVirtualData = true;\n          this.initialValueUpdate(this.listData, true);\n          this.isDynamicRemoteVirtualData = false;\n          this.initialUpdate();\n        }\n        if (this.mode !== 'Box' && !this.inputFocus) {\n          this.updateDelimView();\n        }\n        if (!this.inputFocus) {\n          this.refreshInputHight();\n        }\n        this.refreshPlaceHolder();\n        if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n          this.updateValueState(null, newProp, oldProp);\n        }\n        this.checkPlaceholderSize();\n      }\n    }\n    if (!this.changeOnBlur) {\n      this.updateValueState(null, newProp, oldProp);\n    }\n  };\n  /**\n   * Adds a new item to the multiselect popup list. By default, new item appends to the list as the last item,\n   * but you can insert based on the index parameter.\n   *\n   * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n   * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n   * @returns {void}\n   */\n  MultiSelect.prototype.addItem = function (items, itemIndex) {\n    _super.prototype.addItem.call(this, items, itemIndex);\n  };\n  /**\n   * Hides the popup, if the popup in a open state.\n   *\n   * @param {MouseEvent | KeyboardEventArgs} e - Specifies the mouse event or keyboard event.\n   * @returns {void}\n   */\n  MultiSelect.prototype.hidePopup = function (e) {\n    var _this = this;\n    var delay = 100;\n    if (this.isPopupOpen()) {\n      var animModel = {\n        name: 'FadeOut',\n        duration: 100,\n        delay: delay ? delay : 0\n      };\n      this.customFilterQuery = null;\n      var eventArgs = {\n        popup: this.popupObj,\n        cancel: false,\n        animation: animModel,\n        event: e || null\n      };\n      this.trigger('close', eventArgs, function (eventArgs) {\n        if (!eventArgs.cancel) {\n          if (_this.fields.groupBy && _this.mode !== 'CheckBox' && _this.fixedHeaderElement) {\n            remove(_this.fixedHeaderElement);\n            _this.fixedHeaderElement = null;\n          }\n          _this.beforePopupOpen = false;\n          _this.overAllWrapper.classList.remove(iconAnimation);\n          var typedValue = _this.mode === 'CheckBox' ? _this.targetElement() : null;\n          _this.popupObj.hide(new Animation(eventArgs.animation));\n          attributes(_this.inputElement, {\n            'aria-expanded': 'false'\n          });\n          _this.inputElement.removeAttribute('aria-owns');\n          _this.inputElement.removeAttribute('aria-activedescendant');\n          if (_this.allowFiltering) {\n            _this.notify('inputFocus', {\n              module: 'CheckBoxSelection',\n              enable: _this.mode === 'CheckBox',\n              value: 'clear'\n            });\n          }\n          _this.popupObj.hide();\n          removeClass([document.body, _this.popupObj.element], 'e-popup-full-page');\n          EventHandler.remove(_this.list, 'keydown', _this.onKeyDown);\n          if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n            EventHandler.remove(_this.popupObj.element, 'click', _this.clickHandler);\n          }\n          if (_this.list && _this.list.parentElement && _this.allowResize) {\n            if (_this.resizer && _this.list.parentElement.contains(_this.resizer)) {\n              _this.list.parentElement.removeChild(_this.resizer);\n            }\n            if (_this.list.parentElement.classList.contains('e-resize')) {\n              _this.list.parentElement.classList.remove('e-resize');\n            }\n            _this.list.parentElement.style.boxSizing = '';\n            _this.list.parentElement.style.paddingBottom = '';\n            var overAllHeight = parseInt(_this.popupHeight, 10);\n            _this.list.style.maxHeight = formatUnit(overAllHeight);\n            _this.list.parentElement.style.height = formatUnit(_this.popupHeight);\n            _this.list.parentElement.style.maxHeight = formatUnit(_this.popupHeight);\n          }\n          if (_this.resizer) {\n            EventHandler.remove(_this.resizer, 'mousedown', _this.startResizing);\n            _this.resizer.remove();\n          }\n          if (_this.enableVirtualization && _this.mode === 'CheckBox' && _this.value && _this.value.length > 0 && _this.enableSelectionOrder) {\n            _this.viewPortInfo.startIndex = _this.virtualItemStartIndex = 0;\n            _this.viewPortInfo.endIndex = _this.virtualItemEndIndex = _this.viewPortInfo.startIndex > 0 ? _this.viewPortInfo.endIndex : _this.itemCount;\n            _this.virtualListInfo = _this.viewPortInfo;\n            _this.previousStartIndex = 0;\n            _this.previousEndIndex = _this.itemCount;\n          }\n          var dataSourceCount = void 0;\n          if (_this.dataSource instanceof DataManager) {\n            if (_this.remoteDataCount >= 0) {\n              _this.totalItemCount = _this.dataCount = _this.remoteDataCount;\n            } else {\n              _this.resetList(_this.dataSource);\n            }\n          } else {\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            dataSourceCount = _this.dataSource && _this.dataSource.length ? _this.dataSource.length : 0;\n          }\n          if (_this.enableVirtualization && (_this.allowFiltering || _this.allowCustomValue) && (_this.targetElement() || typedValue) && _this.totalItemCount !== dataSourceCount) {\n            _this.checkAndResetCache();\n            _this.updateInitialData();\n          }\n          if (_this.virtualCustomData && _this.viewPortInfo && _this.viewPortInfo.startIndex === 0 && _this.viewPortInfo.endIndex === _this.itemCount) {\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            _this.renderItems(_this.mainData, _this.fields);\n          }\n          _this.virtualCustomData = null;\n          _this.isVirtualTrackHeight = false;\n        }\n      });\n    }\n  };\n  /**\n   * Shows the popup, if the popup in a closed state.\n   *\n   * @param {MouseEvent | KeyboardEventArgs} e - Specifies the mouse event or keyboard event.\n   * @returns {void}\n   */\n  MultiSelect.prototype.showPopup = function (e) {\n    var _this = this;\n    if (!this.enabled) {\n      return;\n    }\n    this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n    var args = {\n      cancel: false\n    };\n    this.trigger('beforeOpen', args, function (args) {\n      if (!args.cancel) {\n        if (!_this.ulElement) {\n          _this.beforePopupOpen = true;\n          if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering && _this.isDeviceFullScreen) {\n            _this.notify('popupFullScreen', {\n              module: 'CheckBoxSelection',\n              enable: _this.mode === 'CheckBox'\n            });\n          }\n          _super.prototype.render.call(_this, e);\n          return;\n        }\n        if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering && _this.isDeviceFullScreen) {\n          _this.notify('popupFullScreen', {\n            module: 'CheckBoxSelection',\n            enable: _this.mode === 'CheckBox'\n          });\n        }\n        var mainLiLength = _this.ulElement.querySelectorAll('li.' + 'e-list-item').length;\n        var liLength = _this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li + '.' + HIDE_LIST).length;\n        if (mainLiLength > 0 && mainLiLength === liLength && liLength === _this.mainData.length && !(_this.targetElement() !== '' && _this.allowCustomValue)) {\n          _this.beforePopupOpen = false;\n          return;\n        }\n        _this.onPopupShown(e);\n        if (_this.enableVirtualization && _this.listData && _this.listData.length) {\n          if (!isNullOrUndefined(_this.value) && (_this.getModuleName() === 'dropdownlist' || _this.getModuleName() === 'combobox')) {\n            _this.removeHover();\n          }\n          if (!_this.beforePopupOpen) {\n            if (_this.hideSelectedItem && _this.value && Array.isArray(_this.value) && _this.value.length > 0) {\n              _this.totalItemsCount();\n            }\n            if (!_this.preventSetCurrentData && !isNullOrUndefined(_this.viewPortInfo.startIndex) && !isNullOrUndefined(_this.viewPortInfo.endIndex)) {\n              _this.notify('setCurrentViewDataAsync', {\n                component: _this.getModuleName(),\n                module: 'VirtualScroll'\n              });\n            }\n          }\n        }\n        if (_this.enableVirtualization && !_this.allowFiltering && _this.selectedValueInfo != null && _this.selectedValueInfo.startIndex > 0 && _this.value != null) {\n          _this.notify('dataProcessAsync', {\n            module: 'VirtualScroll',\n            isOpen: true\n          });\n        }\n        if (_this.enableVirtualization) {\n          _this.updatevirtualizationList();\n        } else {\n          if (_this.value && _this.value.length) {\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n            var element = void 0;\n            var listItems = _this.getItems();\n            for (var _i = 0, _a = _this.value; _i < _a.length; _i++) {\n              var value = _a[_i];\n              var checkValue = _this.allowObjectBinding ? getValue(_this.fields.value ? _this.fields.value : '', value) : value;\n              element = _this.getElementByValue(checkValue);\n              if (element) {\n                _this.addListSelection(element);\n              }\n            }\n          }\n        }\n        if (_this.allowResize) {\n          _this.setResize();\n        }\n        _this.preventSetCurrentData = true;\n      }\n    });\n  };\n  /**\n   * Based on the state parameter, entire list item will be selected/deselected.\n   * parameter\n   * `true`   - Selects entire list items.\n   * `false`  - Un Selects entire list items.\n   *\n   * @param {boolean} state - if it’s true then Selects the entire list items. If it’s false the Unselects entire list items.\n   * @returns {void}\n   */\n  MultiSelect.prototype.selectAll = function (state) {\n    this.isSelectAll = true;\n    this.selectAllItems(state);\n  };\n  /**\n   * Return the module name of this component.\n   *\n   * @private\n   * @returns {string} Return the module name of this component.\n   */\n  MultiSelect.prototype.getModuleName = function () {\n    return 'multiselect';\n  };\n  /**\n   * Allows you to clear the selected values from the Multiselect component.\n   *\n   * @returns {void}\n   */\n  MultiSelect.prototype.clear = function () {\n    var _this = this;\n    this.selectAll(false);\n    if (this.value && this.value.length) {\n      setTimeout(function () {\n        _this.setProperties({\n          value: null\n        }, true);\n      }, 0);\n    } else {\n      this.setProperties({\n        value: null\n      }, true);\n    }\n  };\n  /**\n   * To Initialize the control rendering\n   *\n   * @private\n   * @returns {void}\n   */\n  MultiSelect.prototype.render = function () {\n    if (!isNullOrUndefined(this.value) && this.value.length > 0) {\n      // eslint-disable-next-line\n      this.value = this.value.slice();\n    }\n    this.setDynValue = this.initStatus = false;\n    this.isSelectAll = false;\n    this.selectAllEventEle = [];\n    this.searchWrapper = this.createElement('span', {\n      className: SEARCHBOX_WRAPPER + ' ' + (this.mode === 'Box' ? BOX_ELEMENT : '')\n    });\n    this.viewWrapper = this.createElement('span', {\n      className: DELIMITER_VIEW + ' ' + DELIMITER_WRAPPER\n    });\n    this.viewWrapper.style.display = 'none';\n    this.overAllClear = this.createElement('span', {\n      className: CLOSEICON_CLASS\n    });\n    this.overAllClear.style.display = 'none';\n    this.componentWrapper = this.createElement('div', {\n      className: ELEMENT_WRAPPER\n    });\n    this.overAllWrapper = this.createElement('div', {\n      className: OVER_ALL_WRAPPER\n    });\n    if (this.mode === 'CheckBox') {\n      addClass([this.overAllWrapper], 'e-checkbox');\n    }\n    if (Browser.isDevice) {\n      this.componentWrapper.classList.add(ELEMENT_MOBILE_WRAPPER);\n    }\n    this.setWidth(this.width);\n    this.overAllWrapper.appendChild(this.componentWrapper);\n    this.popupWrapper = this.createElement('div', {\n      id: this.element.id + '_popup',\n      className: POPUP_WRAPPER\n    });\n    this.popupWrapper.setAttribute('aria-label', this.element.id);\n    this.popupWrapper.setAttribute('role', 'dialog');\n    if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n      this.delimiterWrapper = this.createElement('span', {\n        className: DELIMITER_WRAPPER\n      });\n      this.delimiterWrapper.style.display = 'none';\n      this.componentWrapper.appendChild(this.delimiterWrapper);\n    } else {\n      this.chipCollectionWrapper = this.createElement('span', {\n        className: CHIP_WRAPPER\n      });\n      this.chipCollectionWrapper.style.display = 'none';\n      if (this.mode === 'Default') {\n        this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_default'));\n      } else if (this.mode === 'Box') {\n        this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_box'));\n      }\n      this.componentWrapper.appendChild(this.chipCollectionWrapper);\n    }\n    if (this.mode !== 'Box') {\n      this.componentWrapper.appendChild(this.viewWrapper);\n    }\n    this.componentWrapper.appendChild(this.searchWrapper);\n    if (this.showClearButton && !Browser.isDevice) {\n      this.componentWrapper.appendChild(this.overAllClear);\n    } else {\n      this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n    }\n    this.dropDownIcon();\n    this.inputElement = this.createElement('input', {\n      className: INPUT_ELEMENT,\n      attrs: {\n        spellcheck: 'false',\n        type: 'text',\n        autocomplete: 'off',\n        tabindex: '0',\n        role: 'combobox'\n      }\n    });\n    if (this.mode === 'Default' || this.mode === 'Box') {\n      this.inputElement.setAttribute('aria-describedby', this.chipCollectionWrapper.id);\n    }\n    if (!isNullOrUndefined(this.inputElement)) {\n      attributes(this.inputElement, {\n        'aria-expanded': 'false'\n      });\n      if (!this.inputElement.hasAttribute('aria-label')) {\n        this.inputElement.setAttribute('aria-label', this.getModuleName());\n      }\n    }\n    if (this.element.tagName !== this.getNgDirective()) {\n      this.element.style.display = 'none';\n    }\n    if (this.element.tagName === this.getNgDirective()) {\n      this.element.appendChild(this.overAllWrapper);\n      this.searchWrapper.appendChild(this.inputElement);\n    } else {\n      this.element.parentElement.insertBefore(this.overAllWrapper, this.element);\n      this.searchWrapper.appendChild(this.inputElement);\n      this.searchWrapper.appendChild(this.element);\n      this.element.removeAttribute('tabindex');\n    }\n    if (this.floatLabelType !== 'Never') {\n      createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n    } else if (this.floatLabelType === 'Never') {\n      this.refreshPlaceHolder();\n    }\n    this.addValidInputClass();\n    this.element.style.opacity = '';\n    var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n    this.element.id = id;\n    this.hiddenElement = this.createElement('select', {\n      attrs: {\n        'aria-hidden': 'true',\n        'class': HIDDEN_ELEMENT,\n        'tabindex': '-1',\n        'multiple': ''\n      }\n    });\n    this.componentWrapper.appendChild(this.hiddenElement);\n    this.validationAttribute(this.element, this.hiddenElement);\n    if (this.mode !== 'CheckBox') {\n      this.hideOverAllClear();\n    }\n    if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n      this.enabled = false;\n    }\n    this.wireEvent();\n    this.enable(this.enabled);\n    this.enableRTL(this.enableRtl);\n    if (this.enableVirtualization) {\n      this.updateVirtualizationProperties(this.itemCount, this.allowFiltering, this.mode === 'CheckBox');\n    }\n    this.listItemHeight = this.getListHeight();\n    this.getSkeletonCount();\n    this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n    this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.viewPortInfo.startIndex > 0 ? this.viewPortInfo.endIndex : this.itemCount;\n    this.checkInitialValue();\n    if (this.element.hasAttribute('data-val')) {\n      this.element.setAttribute('data-val', 'false');\n    }\n    Input.createSpanElement(this.overAllWrapper, this.createElement);\n    this.calculateWidth();\n    if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n      this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n    }\n    this.renderComplete();\n  };\n  MultiSelect.prototype.setResize = function () {\n    var resizePaddingBottom = 16;\n    if (this.list && this.list.parentElement && isNullOrUndefined(this.list.parentElement.querySelector('.e-resizer-right.e-icons'))) {\n      this.resizer = this.createElement('div', {\n        id: this.element.id + '_resize-popup',\n        className: RESIZE_ICON\n      });\n    }\n    if (this.mode === 'CheckBox' && this.showSelectAll && this.selectAllHeight && this.selectAllHeight !== 0) {\n      this.storedSelectAllHeight = this.selectAllHeight;\n    }\n    if (this.list && this.list.parentElement) {\n      this.list.parentElement.classList.add('e-resize');\n      if (this.popupHeight.toString().toLowerCase() !== 'auto') {\n        this.list.parentElement.style.height = '100%';\n      }\n      this.list.parentElement.style.boxSizing = 'border-box'; // Ensures padding doesn't affect element size\n      var paddingBottom = this.mode === 'CheckBox' && this.searchBoxHeight ? this.searchBoxHeight + resizePaddingBottom + (this.showSelectAll ? this.storedSelectAllHeight : 0) : resizePaddingBottom;\n      this.list.parentElement.style.paddingBottom = paddingBottom + \"px\";\n      this.list.parentElement.appendChild(this.resizer);\n      this.list.parentElement.style.width = this.resizeWidth + 'px';\n      this.list.parentElement.style.height = this.resizeHeight + 'px';\n      this.list.parentElement.style.maxHeight = this.resizeHeight + 'px';\n      this.list.style.maxHeight = this.resizeHeight + \"px\";\n    }\n    if (this.resizer) {\n      EventHandler.add(this.resizer, 'mousedown', this.startResizing, this);\n      EventHandler.add(this.resizer, 'touchstart', this.startResizing, this);\n    }\n  };\n  MultiSelect.prototype.startResizing = function (event) {\n    this.isResizing = true;\n    this.trigger('resizeStart', event);\n    // Get initial touch or mouse coordinates\n    var clientX = event instanceof MouseEvent ? event.clientX : event.touches[0].clientX;\n    var clientY = event instanceof MouseEvent ? event.clientY : event.touches[0].clientY;\n    if (this.list && this.list.parentElement) {\n      this.originalWidth = this.list.parentElement.offsetWidth;\n      this.originalHeight = this.list.parentElement.offsetHeight;\n      this.originalMouseX = clientX;\n      this.originalMouseY = clientY;\n    }\n    this.resizingWireEvent();\n    // Prevent default behavior like text selection\n    if (event) {\n      event.preventDefault();\n    }\n  };\n  MultiSelect.prototype.resizePopup = function (event) {\n    if (!this.isResizing) {\n      return;\n    }\n    this.trigger('resizing', event);\n    // Get the current touch or mouse position\n    var clientX = event instanceof MouseEvent ? event.clientX : event.touches[0].clientX;\n    var clientY = event instanceof MouseEvent ? event.clientY : event.touches[0].clientY;\n    // Calculate the new width and height based on drag\n    var dx = clientX - this.originalMouseX;\n    var dy = clientY - this.originalMouseY;\n    // Set minimum width and height (100px)\n    var minWidth = 100;\n    var minHeight = 130;\n    // Ensure the new width and height are not smaller than the minimum\n    this.resizeWidth = Math.max(this.originalWidth + dx, minWidth);\n    this.resizeHeight = Math.max(this.originalHeight + dy, minHeight);\n    if (this.list && this.list.parentElement) {\n      // Set minimum width and height (100px)\n      var minWidth_1 = parseInt(window.getComputedStyle(this.list.parentElement).minWidth, 10);\n      var minHeight_1 = parseInt(window.getComputedStyle(this.list.parentElement).minHeight, 10);\n      minWidth_1 = minWidth_1 || 100;\n      minHeight_1 = minHeight_1 || 120;\n      // Ensure the new width and height are not smaller than the minimum\n      this.resizeWidth = Math.max(this.originalWidth + dx, minWidth_1);\n      this.resizeHeight = Math.max(this.originalHeight + dy, minHeight_1);\n      this.list.parentElement.style.width = this.resizeWidth + \"px\";\n      this.list.parentElement.style.height = this.resizeHeight + \"px\";\n      this.list.parentElement.style.maxHeight = this.resizeHeight + \"px\";\n      this.list.style.maxHeight = this.resizeHeight + \"px\";\n      if (this.fixedHeaderElement && this.ulElement) {\n        this.fixedHeaderElement.style.width = this.ulElement.offsetWidth + \"px\";\n      }\n    }\n    if (event) {\n      event.preventDefault();\n    }\n  };\n  MultiSelect.prototype.stopResizing = function (event) {\n    if (this.isResizing) {\n      this.isResizing = false;\n      this.trigger('resizeStop', event);\n      this.resizingUnWireEvent();\n    }\n    if (event) {\n      event.preventDefault();\n    }\n  };\n  MultiSelect.prototype.getListHeight = function () {\n    var listParent = this.createElement('div', {\n      className: 'e-dropdownbase'\n    });\n    var item = this.createElement('li', {\n      className: 'e-list-item'\n    });\n    var listParentHeight = formatUnit(this.popupHeight);\n    listParent.style.height = parseInt(listParentHeight, 10).toString() + 'px';\n    listParent.appendChild(item);\n    document.body.appendChild(listParent);\n    this.virtualListHeight = listParent.getBoundingClientRect().height;\n    var listItemHeight = Math.ceil(item.getBoundingClientRect().height) + parseInt(window.getComputedStyle(item).marginBottom, 10);\n    listParent.remove();\n    return listItemHeight;\n  };\n  /**\n   * Removes disabled values from the given array.\n   *\n   * @param { number[] | string[] | boolean[] | object[] } value - The array to check.\n   * @returns {void}\n   */\n  MultiSelect.prototype.removeDisabledItemsValue = function (value) {\n    if (value) {\n      var data = [];\n      var dataIndex = 0;\n      for (var index = 0; index < value.length; index++) {\n        var indexValue = value[index];\n        if (typeof indexValue === 'object') {\n          indexValue = JSON.parse(JSON.stringify(indexValue))[this.fields.value];\n        }\n        if (indexValue != null && !this.isDisabledItemByIndex(this.getIndexByValue(indexValue))) {\n          data[dataIndex++] = value[index];\n        }\n      }\n      this.value = data.length > 0 ? data : null;\n    }\n  };\n  MultiSelect.prototype.checkInitialValue = function () {\n    var _this = this;\n    if (this.fields.disabled) {\n      this.removeDisabledItemsValue(this.value);\n    }\n    var isData = this.dataSource instanceof Array ? this.dataSource.length > 0 : !isNullOrUndefined(this.dataSource);\n    if (!(this.value && this.value.length) && isNullOrUndefined(this.text) && !isData && this.element.tagName === 'SELECT' && this.element.options.length > 0) {\n      var optionsElement = this.element.options;\n      var valueCol = [];\n      var textCol = '';\n      for (var index = 0, optionsLen = optionsElement.length; index < optionsLen; index++) {\n        var opt = optionsElement[index];\n        if (!isNullOrUndefined(opt.getAttribute('selected'))) {\n          if (opt.getAttribute('value')) {\n            var value = this.allowObjectBinding ? this.getDataByValue(opt.getAttribute('value')) : opt.getAttribute('value');\n            valueCol.push(value);\n          } else {\n            textCol += opt.text + this.delimiterChar;\n          }\n        }\n      }\n      if (valueCol.length > 0) {\n        this.setProperties({\n          value: valueCol\n        }, true);\n      } else if (textCol !== '') {\n        this.setProperties({\n          text: textCol\n        }, true);\n      }\n      if (valueCol.length > 0 || textCol !== '') {\n        this.refreshInputHight();\n        this.refreshPlaceHolder();\n      }\n    }\n    if (this.value && this.value.length || !isNullOrUndefined(this.text)) {\n      if (!this.list) {\n        _super.prototype.render.call(this);\n      }\n    }\n    if (this.fields.disabled) {\n      this.text = this.text && !this.isDisabledItemByIndex(this.getIndexByValue(this.getValueByText(this.text))) ? this.text : null;\n    }\n    if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n      this.initialTextUpdate();\n    }\n    if (this.value && this.value.length) {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      var listItems_2;\n      if (this.enableVirtualization) {\n        var fields = !this.isPrimitiveData ? this.fields.value : '';\n        var predicate = void 0;\n        for (var i = 0; i < this.value.length; i++) {\n          var value = this.allowObjectBinding ? getValue(this.fields.value ? this.fields.value : '', this.value[i]) : this.value[i];\n          if (i === 0) {\n            predicate = new Predicate(fields, 'equal', value);\n          } else {\n            predicate = predicate.or(fields, 'equal', value);\n          }\n        }\n        if (this.dataSource instanceof DataManager) {\n          this.dataSource.executeQuery(new Query().where(predicate)).then(function (e) {\n            if (e.result.length > 0) {\n              listItems_2 = e.result;\n              _this.initStatus = false;\n              _this.isInitRemoteVirtualData = true;\n              setTimeout(function () {\n                _this.initialValueUpdate(listItems_2, true);\n                _this.initialUpdate();\n                _this.isInitRemoteVirtualData = false;\n              }, 100);\n              _this.initStatus = true;\n            }\n          });\n        } else {\n          listItems_2 = new DataManager(this.dataSource).executeLocal(new Query().where(predicate));\n        }\n      }\n      if (!(this.dataSource instanceof DataManager)) {\n        this.initialValueUpdate(listItems_2, true);\n        this.initialUpdate();\n      } else {\n        this.setInitialValue = function () {\n          _this.initStatus = false;\n          if (!_this.enableVirtualization || _this.enableVirtualization && !(_this.dataSource instanceof DataManager)) {\n            _this.initialValueUpdate(listItems_2);\n          }\n          _this.initialUpdate();\n          _this.setInitialValue = null;\n          _this.initStatus = true;\n        };\n      }\n      this.updateTempValue();\n    } else {\n      this.initialUpdate();\n    }\n    this.initStatus = true;\n    this.checkAutoFocus();\n    if (!isNullOrUndefined(this.text)) {\n      this.element.setAttribute('data-initial-value', this.text);\n    }\n  };\n  MultiSelect.prototype.checkAutoFocus = function () {\n    if (this.element.hasAttribute('autofocus')) {\n      this.inputElement.focus();\n    }\n  };\n  MultiSelect.prototype.updatevirtualizationList = function () {\n    if (this.value && this.value.length) {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      var element = void 0;\n      for (var _i = 0, _a = this.value; _i < _a.length; _i++) {\n        var value = _a[_i];\n        var checkValue = this.allowObjectBinding ? getValue(this.fields.value ? this.fields.value : '', value) : value;\n        element = this.getElementByValue(checkValue);\n        if (element) {\n          this.addListSelection(element);\n        }\n      }\n      if (this.enableVirtualization && this.hideSelectedItem) {\n        var visibleListElements = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)' + ':not(.e-virtual-list)');\n        if (visibleListElements.length) {\n          var actualCount = this.virtualListHeight > 0 ? Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n          if (visibleListElements.length < actualCount + 2) {\n            var query = this.getForQuery(this.value).clone();\n            query = query.skip(this.viewPortInfo.startIndex);\n            this.resetList(this.dataSource, this.fields, query);\n          }\n        }\n      }\n    }\n  };\n  MultiSelect.prototype.setFloatLabelType = function () {\n    removeFloating(this.overAllWrapper, this.componentWrapper, this.searchWrapper, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n    if (this.floatLabelType !== 'Never') {\n      createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n    }\n  };\n  MultiSelect.prototype.addValidInputClass = function () {\n    if (!isNullOrUndefined(this.overAllWrapper)) {\n      if (!isNullOrUndefined(this.value) && this.value.length || this.floatLabelType === 'Always') {\n        addClass([this.overAllWrapper], 'e-valid-input');\n      } else {\n        removeClass([this.overAllWrapper], 'e-valid-input');\n      }\n    }\n  };\n  MultiSelect.prototype.dropDownIcon = function () {\n    if (this.showDropDownIcon) {\n      this.dropIcon = this.createElement('span', {\n        className: dropdownIcon\n      });\n      this.componentWrapper.appendChild(this.dropIcon);\n      addClass([this.componentWrapper], ['e-down-icon']);\n    } else {\n      if (!isNullOrUndefined(this.dropIcon)) {\n        this.dropIcon.parentElement.removeChild(this.dropIcon);\n        removeClass([this.componentWrapper], ['e-down-icon']);\n      }\n    }\n  };\n  MultiSelect.prototype.initialUpdate = function () {\n    if (this.mode !== 'Box' && !(this.setDynValue && this.mode === 'Default' && this.inputFocus)) {\n      this.updateDelimView();\n    }\n    this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n    this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n    this.updateCssClass();\n    this.updateHTMLAttribute();\n    this.updateReadonly(this.readonly);\n    this.refreshInputHight();\n    this.checkPlaceholderSize();\n  };\n  /**\n   * Method to disable specific item in the popup.\n   *\n   * @param {string | number | object | HTMLLIElement} item - Specifies the item to be disabled.\n   * @returns {void}\n   * @deprecated\n   */\n  MultiSelect.prototype.disableItem = function (item) {\n    if (this.fields.disabled) {\n      if (!this.list) {\n        this.renderList();\n      }\n      var itemIndex = -1;\n      if (this.liCollections && this.liCollections.length > 0 && this.listData && this.fields.disabled) {\n        if (typeof item === 'string') {\n          itemIndex = this.getIndexByValue(item);\n        } else if (typeof item === 'object') {\n          if (item instanceof HTMLLIElement) {\n            for (var index = 0; index < this.liCollections.length; index++) {\n              if (this.liCollections[index] === item) {\n                itemIndex = this.getIndexByValue(item.getAttribute('data-value'));\n                break;\n              }\n            }\n          } else {\n            var value = JSON.parse(JSON.stringify(item))[this.fields.value];\n            for (var index = 0; index < this.listData.length; index++) {\n              if (JSON.parse(JSON.stringify(this.listData[index]))[this.fields.value] === value) {\n                itemIndex = this.getIndexByValue(value);\n                break;\n              }\n            }\n          }\n        } else {\n          itemIndex = item;\n        }\n        var isValidIndex = itemIndex < this.liCollections.length && itemIndex > -1;\n        if (isValidIndex && !JSON.parse(JSON.stringify(this.listData[itemIndex]))[this.fields.disabled]) {\n          var li = this.liCollections[itemIndex];\n          if (li) {\n            this.disableListItem(li);\n            var parsedData = JSON.parse(JSON.stringify(this.listData[itemIndex]));\n            parsedData[this.fields.disabled] = true;\n            this.listData[itemIndex] = parsedData;\n            if (li.classList.contains(dropDownBaseClasses.focus)) {\n              this.removeFocus();\n            }\n            if (li.classList.contains(HIDE_LIST) || li.classList.contains(dropDownBaseClasses.selected)) {\n              var oldValue = this.value;\n              this.removeDisabledItemsValue(this.value);\n              this.updateVal(this.value, oldValue, 'value');\n            }\n            if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n              this.disableGroupHeader();\n            }\n          }\n        }\n      }\n    }\n  };\n  /**\n   * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n   *\n   * @method destroy\n   * @returns {void}\n   */\n  MultiSelect.prototype.destroy = function () {\n    // eslint-disable-next-line\n    if (this.isReact) {\n      this.clearTemplate();\n    }\n    if (!isNullOrUndefined(this.popupObj)) {\n      this.popupObj.hide();\n      this.popupObj.destroy();\n    }\n    this.notify(destroy, {});\n    this.unwireListEvents();\n    this.unWireEvent();\n    var temp = ['readonly', 'aria-disabled', 'placeholder', 'aria-label', 'aria-expanded'];\n    var length = temp.length;\n    if (!isNullOrUndefined(this.inputElement)) {\n      while (length > 0) {\n        this.inputElement.removeAttribute(temp[length - 1]);\n        length--;\n      }\n    }\n    if (!isNullOrUndefined(this.element)) {\n      this.element.removeAttribute('data-initial-value');\n      this.element.style.display = 'block';\n    }\n    if (this.overAllWrapper && this.overAllWrapper.parentElement) {\n      if (this.overAllWrapper.parentElement.tagName === this.getNgDirective()) {\n        remove(this.overAllWrapper);\n      } else {\n        this.overAllWrapper.parentElement.insertBefore(this.element, this.overAllWrapper);\n        remove(this.overAllWrapper);\n      }\n    }\n    if (this.popupWrapper && this.popupWrapper.parentElement) {\n      this.popupWrapper.parentElement.remove();\n    }\n    while (this.searchWrapper && this.searchWrapper.firstChild) {\n      this.searchWrapper.removeChild(this.searchWrapper.firstChild);\n    }\n    if (this.searchWrapper && this.searchWrapper.parentElement) {\n      this.searchWrapper.parentElement.remove();\n    }\n    if (this.viewWrapper && this.viewWrapper.parentElement) {\n      this.viewWrapper.parentElement.remove();\n    }\n    if (this.overAllClear && this.overAllClear.parentElement) {\n      this.overAllClear.parentElement.remove();\n    }\n    if (this.delimiterWrapper && this.delimiterWrapper.parentElement) {\n      this.delimiterWrapper.parentElement.remove();\n    }\n    // Remove the select element if it exists\n    var selectElement = this.overAllWrapper.querySelector('select.e-multi-hidden');\n    if (selectElement && selectElement.parentElement) {\n      selectElement.parentElement.remove();\n    }\n    while (this.componentWrapper && this.componentWrapper.firstChild) {\n      this.componentWrapper.removeChild(this.componentWrapper.firstChild);\n    }\n    if (this.componentWrapper && this.componentWrapper.parentElement) {\n      this.componentWrapper.removeAttribute('class');\n      this.componentWrapper.parentElement.remove();\n    }\n    while (this.popupWrapper && this.popupWrapper.firstChild) {\n      this.popupWrapper.removeChild(this.popupWrapper.firstChild);\n    }\n    if (this.inputElement) {\n      var attrArray = ['readonly', 'aria-disabled', 'placeholder', 'aria-labelledby', 'aria-expanded', 'autocomplete', 'aria-readonly', 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-label', 'aria-hidden', 'tabindex', 'aria-controls', 'aria-describedby', 'size', 'role', 'type', 'class'];\n      for (var i = 0; i < attrArray.length; i++) {\n        this.inputElement.removeAttribute(attrArray[i]);\n      }\n    }\n    if (this.inputElement) {\n      this.inputElement.remove();\n    }\n    this.list = null;\n    this.popupObj = null;\n    this.mainData = null;\n    this.filterParent = null;\n    this.ulElement = null;\n    this.componentWrapper = null;\n    this.overAllClear = null;\n    this.overAllWrapper = null;\n    this.hiddenElement = null;\n    this.searchWrapper = null;\n    this.viewWrapper = null;\n    this.chipCollectionWrapper = null;\n    this.targetInputElement = null;\n    this.popupWrapper = null;\n    this.inputElement = null;\n    this.delimiterWrapper = null;\n    this.liCollections = null;\n    this.popupContentElement = null;\n    this.header = null;\n    this.mainList = null;\n    this.mainListCollection = null;\n    this.footer = null;\n    this.selectAllEventEle = null;\n    _super.prototype.destroy.call(this);\n  };\n  __decorate([Complex({\n    text: null,\n    value: null,\n    iconCss: null,\n    groupBy: null,\n    disabled: null\n  }, FieldSettings)], MultiSelect.prototype, \"fields\", void 0);\n  __decorate([Property(false)], MultiSelect.prototype, \"enablePersistence\", void 0);\n  __decorate([Property(null)], MultiSelect.prototype, \"groupTemplate\", void 0);\n  __decorate([Property('No records found')], MultiSelect.prototype, \"noRecordsTemplate\", void 0);\n  __decorate([Property('Request failed')], MultiSelect.prototype, \"actionFailureTemplate\", void 0);\n  __decorate([Property('None')], MultiSelect.prototype, \"sortOrder\", void 0);\n  __decorate([Property(true)], MultiSelect.prototype, \"enabled\", void 0);\n  __decorate([Property(true)], MultiSelect.prototype, \"enableHtmlSanitizer\", void 0);\n  __decorate([Property(false)], MultiSelect.prototype, \"enableVirtualization\", void 0);\n  __decorate([Property([])], MultiSelect.prototype, \"dataSource\", void 0);\n  __decorate([Property(null)], MultiSelect.prototype, \"query\", void 0);\n  __decorate([Property('StartsWith')], MultiSelect.prototype, \"filterType\", void 0);\n  __decorate([Property(1000)], MultiSelect.prototype, \"zIndex\", void 0);\n  __decorate([Property(false)], MultiSelect.prototype, \"ignoreAccent\", void 0);\n  __decorate([Property()], MultiSelect.prototype, \"locale\", void 0);\n  __decorate([Property(false)], MultiSelect.prototype, \"enableGroupCheckBox\", void 0);\n  __decorate([Property(null)], MultiSelect.prototype, \"cssClass\", void 0);\n  __decorate([Property('100%')], MultiSelect.prototype, \"width\", void 0);\n  __decorate([Property('300px')], MultiSelect.prototype, \"popupHeight\", void 0);\n  __decorate([Property('100%')], MultiSelect.prototype, \"popupWidth\", void 0);\n  __decorate([Property(null)], MultiSelect.prototype, \"placeholder\", void 0);\n  __decorate([Property(null)], MultiSelect.prototype, \"filterBarPlaceholder\", void 0);\n  __decorate([Property({})], MultiSelect.prototype, \"htmlAttributes\", void 0);\n  __decorate([Property(null)], MultiSelect.prototype, \"valueTemplate\", void 0);\n  __decorate([Property(null)], MultiSelect.prototype, \"headerTemplate\", void 0);\n  __decorate([Property(null)], MultiSelect.prototype, \"footerTemplate\", void 0);\n  __decorate([Property(null)], MultiSelect.prototype, \"itemTemplate\", void 0);\n  __decorate([Property(null)], MultiSelect.prototype, \"allowFiltering\", void 0);\n  __decorate([Property(true)], MultiSelect.prototype, \"isDeviceFullScreen\", void 0);\n  __decorate([Property(true)], MultiSelect.prototype, \"changeOnBlur\", void 0);\n  __decorate([Property(false)], MultiSelect.prototype, \"allowCustomValue\", void 0);\n  __decorate([Property(true)], MultiSelect.prototype, \"showClearButton\", void 0);\n  __decorate([Property(1000)], MultiSelect.prototype, \"maximumSelectionLength\", void 0);\n  __decorate([Property(false)], MultiSelect.prototype, \"readonly\", void 0);\n  __decorate([Property(false)], MultiSelect.prototype, \"allowResize\", void 0);\n  __decorate([Property(null)], MultiSelect.prototype, \"text\", void 0);\n  __decorate([Property(null)], MultiSelect.prototype, \"value\", void 0);\n  __decorate([Property(false)], MultiSelect.prototype, \"allowObjectBinding\", void 0);\n  __decorate([Property(true)], MultiSelect.prototype, \"hideSelectedItem\", void 0);\n  __decorate([Property(true)], MultiSelect.prototype, \"closePopupOnSelect\", void 0);\n  __decorate([Property('Default')], MultiSelect.prototype, \"mode\", void 0);\n  __decorate([Property(',')], MultiSelect.prototype, \"delimiterChar\", void 0);\n  __decorate([Property(true)], MultiSelect.prototype, \"ignoreCase\", void 0);\n  __decorate([Property(false)], MultiSelect.prototype, \"showDropDownIcon\", void 0);\n  __decorate([Property('Never')], MultiSelect.prototype, \"floatLabelType\", void 0);\n  __decorate([Property(false)], MultiSelect.prototype, \"showSelectAll\", void 0);\n  __decorate([Property('Select All')], MultiSelect.prototype, \"selectAllText\", void 0);\n  __decorate([Property('Unselect All')], MultiSelect.prototype, \"unSelectAllText\", void 0);\n  __decorate([Property(true)], MultiSelect.prototype, \"enableSelectionOrder\", void 0);\n  __decorate([Property(true)], MultiSelect.prototype, \"openOnClick\", void 0);\n  __decorate([Property(false)], MultiSelect.prototype, \"addTagOnBlur\", void 0);\n  __decorate([Event()], MultiSelect.prototype, \"change\", void 0);\n  __decorate([Event()], MultiSelect.prototype, \"removing\", void 0);\n  __decorate([Event()], MultiSelect.prototype, \"removed\", void 0);\n  __decorate([Event()], MultiSelect.prototype, \"beforeSelectAll\", void 0);\n  __decorate([Event()], MultiSelect.prototype, \"selectedAll\", void 0);\n  __decorate([Event()], MultiSelect.prototype, \"beforeOpen\", void 0);\n  __decorate([Event()], MultiSelect.prototype, \"open\", void 0);\n  __decorate([Event()], MultiSelect.prototype, \"close\", void 0);\n  __decorate([Event()], MultiSelect.prototype, \"blur\", void 0);\n  __decorate([Event()], MultiSelect.prototype, \"focus\", void 0);\n  __decorate([Event()], MultiSelect.prototype, \"chipSelection\", void 0);\n  __decorate([Event()], MultiSelect.prototype, \"resizeStop\", void 0);\n  __decorate([Event()], MultiSelect.prototype, \"resizing\", void 0);\n  __decorate([Event()], MultiSelect.prototype, \"resizeStart\", void 0);\n  __decorate([Event()], MultiSelect.prototype, \"filtering\", void 0);\n  __decorate([Event()], MultiSelect.prototype, \"tagging\", void 0);\n  __decorate([Event()], MultiSelect.prototype, \"customValueSelection\", void 0);\n  MultiSelect = __decorate([NotifyPropertyChanges], MultiSelect);\n  return MultiSelect;\n}(DropDownBase);\nexport { MultiSelect };"],"sourceRoot":""}