{"version":3,"sources":["webpack:///../node_modules/react-fast-compare/index.js","webpack:///../node_modules/@syncfusion/ej2-data/src/adaptors.js","webpack:///../node_modules/@syncfusion/ej2-data/src/query.js","webpack:///../node_modules/@syncfusion/ej2-data/src/util.js","webpack:///../node_modules/@syncfusion/ej2-data/src/manager.js","webpack:///../node_modules/@syncfusion/ej2-dropdowns/src/common/highlight-search.js","webpack:///../node_modules/@syncfusion/ej2-navigations/src/common/h-scroll.js","webpack:///../node_modules/@syncfusion/ej2-dropdowns/src/common/virtual-scroll.js","webpack:///../node_modules/@syncfusion/ej2-navigations/src/common/v-scroll.js","webpack:///../node_modules/@syncfusion/ej2-navigations/src/common/menu-scroll.js","webpack:///../node_modules/@syncfusion/ej2-navigations/src/breadcrumb/breadcrumb.js","webpack:///../node_modules/@syncfusion/ej2-navigations/src/common/menu-base.js","webpack:///../node_modules/@syncfusion/ej2-navigations/src/toolbar/toolbar.js","webpack:///../node_modules/@syncfusion/ej2-navigations/src/accordion/accordion.js","webpack:///../node_modules/@syncfusion/ej2-navigations/src/context-menu/context-menu.js","webpack:///../node_modules/@syncfusion/ej2-navigations/src/menu/menu.js","webpack:///../node_modules/@syncfusion/ej2-navigations/src/tab/tab.js","webpack:///../node_modules/@syncfusion/ej2-navigations/src/sidebar/sidebar.js","webpack:///../node_modules/@syncfusion/ej2-navigations/src/carousel/carousel.js","webpack:///../node_modules/@syncfusion/ej2-navigations/src/stepper-base/stepper-base.js","webpack:///../node_modules/@syncfusion/ej2-navigations/src/appbar/appbar.js","webpack:///../node_modules/@syncfusion/ej2-navigations/src/stepper/stepper.js","webpack:///../node_modules/@syncfusion/ej2-dropdowns/src/drop-down-tree/drop-down-tree.js","webpack:///../node_modules/@syncfusion/ej2-dropdowns/src/combo-box/combo-box.js","webpack:///../node_modules/@syncfusion/ej2-dropdowns/src/auto-complete/auto-complete.js","webpack:///../node_modules/@syncfusion/ej2-dropdowns/src/list-box/list-box.js","webpack:///../node_modules/@syncfusion/ej2-dropdowns/src/multi-select/checkbox-selection.js","webpack:///../node_modules/@syncfusion/ej2-dropdowns/src/mention/mention.js","webpack:///../node_modules/@syncfusion/ej2-react-base/src/component-base.js","webpack:///../node_modules/@syncfusion/ej2-react-base/src/util.js","webpack:///../node_modules/@syncfusion/ej2-react-base/src/complex-base.js","webpack:///../node_modules/@syncfusion/ej2-react-base/src/services.js","webpack:///../node_modules/@syncfusion/ej2-react-base/src/template.js","webpack:///../node_modules/@syncfusion/ej2-react-dropdowns/src/drop-down-list/dropdownlist.component.js","webpack:///../node_modules/@syncfusion/ej2-react-dropdowns/src/combo-box/combobox.component.js","webpack:///../node_modules/@syncfusion/ej2-react-dropdowns/src/auto-complete/autocomplete.component.js","webpack:///../node_modules/@syncfusion/ej2-react-dropdowns/src/multi-select/multiselect.component.js","webpack:///../node_modules/@syncfusion/ej2-react-dropdowns/src/list-box/listbox.component.js","webpack:///../node_modules/@syncfusion/ej2-react-dropdowns/src/drop-down-tree/dropdowntree.component.js","webpack:///../node_modules/@syncfusion/ej2-react-dropdowns/src/mention/mention.component.js","webpack:///./src/components/Layout/Header.js","webpack:///../node_modules/@syncfusion/ej2-react-buttons/src/button/button.component.js","webpack:///../node_modules/@syncfusion/ej2-react-buttons/src/check-box/checkbox.component.js","webpack:///../node_modules/@syncfusion/ej2-react-buttons/src/radio-button/radiobutton.component.js","webpack:///../node_modules/@syncfusion/ej2-react-buttons/src/switch/switch.component.js","webpack:///../node_modules/@syncfusion/ej2-react-buttons/src/chips/chips-directive.js","webpack:///../node_modules/@syncfusion/ej2-react-buttons/src/chips/chiplist.component.js","webpack:///../node_modules/@syncfusion/ej2-react-buttons/src/floating-action-button/fab.component.js","webpack:///../node_modules/@syncfusion/ej2-react-buttons/src/speed-dial/items-directive.js","webpack:///../node_modules/@syncfusion/ej2-react-buttons/src/speed-dial/speeddial.component.js","webpack:///../node_modules/@syncfusion/ej2-react-buttons/src/smart-paste-button/smartpastebutton.component.js","webpack:///../node_modules/@syncfusion/ej2-react-popups/src/dialog/buttons-directive.js","webpack:///../node_modules/@syncfusion/ej2-react-popups/src/dialog/dialog.component.js","webpack:///../node_modules/@syncfusion/ej2-react-popups/src/tooltip/tooltip.component.js","webpack:///../node_modules/@syncfusion/ej2-react-navigations/src/accordion/items-directive.js","webpack:///../node_modules/@syncfusion/ej2-react-navigations/src/accordion/accordion.component.js","webpack:///../node_modules/@syncfusion/ej2-react-navigations/src/toolbar/items-directive.js","webpack:///../node_modules/@syncfusion/ej2-react-navigations/src/toolbar/toolbar.component.js","webpack:///../node_modules/@syncfusion/ej2-react-navigations/src/context-menu/contextmenu.component.js","webpack:///../node_modules/@syncfusion/ej2-react-navigations/src/breadcrumb/items-directive.js","webpack:///../node_modules/@syncfusion/ej2-react-navigations/src/breadcrumb/breadcrumb.component.js","webpack:///../node_modules/@syncfusion/ej2-react-navigations/src/carousel/items-directive.js","webpack:///../node_modules/@syncfusion/ej2-react-navigations/src/carousel/carousel.component.js","webpack:///../node_modules/@syncfusion/ej2-react-navigations/src/tab/items-directive.js","webpack:///../node_modules/@syncfusion/ej2-react-navigations/src/tab/tab.component.js","webpack:///../node_modules/@syncfusion/ej2-react-navigations/src/treeview/treeview.component.js","webpack:///../node_modules/@syncfusion/ej2-react-navigations/src/sidebar/sidebar.component.js","webpack:///../node_modules/@syncfusion/ej2-react-navigations/src/menu/items-directive.js","webpack:///../node_modules/@syncfusion/ej2-react-navigations/src/menu/menu.component.js","webpack:///../node_modules/@syncfusion/ej2-react-navigations/src/appbar/appbar.component.js","webpack:///../node_modules/@syncfusion/ej2-react-navigations/src/stepper/steps-directive.js","webpack:///../node_modules/@syncfusion/ej2-react-navigations/src/stepper/stepper.component.js","webpack:///../node_modules/@syncfusion/ej2-react-notifications/src/toast/buttons-directive.js","webpack:///../node_modules/@syncfusion/ej2-react-notifications/src/toast/toast.component.js","webpack:///../node_modules/@syncfusion/ej2-react-notifications/src/message/message.component.js","webpack:///../node_modules/@syncfusion/ej2-react-notifications/src/skeleton/skeleton.component.js","webpack:///./src/templates/layout.js","webpack:///../node_modules/process/browser.js","webpack:///../node_modules/stylis/stylis.js","webpack:///../node_modules/fbjs/lib/hyphenateStyleName.js","webpack:///../node_modules/react-is/cjs/react-is.production.min.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./src/templates/theme.js","webpack:///./src/components/layout.js","webpack:///../node_modules/shallowequal/index.js","webpack:///../node_modules/fbjs/lib/hyphenate.js","webpack:///../node_modules/@syncfusion/ej2-dropdowns/src/drop-down-base/drop-down-base.js","webpack:///../node_modules/@syncfusion/ej2-buttons/src/common/common.js","webpack:///../node_modules/@syncfusion/ej2-buttons/src/button/button.js","webpack:///../node_modules/@syncfusion/ej2-buttons/src/floating-action-button/floating-action-button.js","webpack:///../node_modules/@syncfusion/ej2-buttons/src/check-box/check-box.js","webpack:///../node_modules/@syncfusion/ej2-buttons/src/radio-button/radio-button.js","webpack:///../node_modules/@syncfusion/ej2-buttons/src/switch/switch.js","webpack:///../node_modules/@syncfusion/ej2-buttons/src/chips/chip-list.js","webpack:///../node_modules/@syncfusion/ej2-buttons/src/speed-dial/speed-dial.js","webpack:///../node_modules/@syncfusion/ej2-buttons/src/smart-paste-button/smart-paste-button.js","webpack:///../node_modules/stylis-rule-sheet/index.js","webpack:///../node_modules/@syncfusion/ej2-notifications/src/toast/toast.js","webpack:///../node_modules/@syncfusion/ej2-notifications/src/message/message.js","webpack:///../node_modules/@syncfusion/ej2-notifications/src/skeleton/skeleton.js","webpack:///./src/templates/site-config.js","webpack:///./static/favicon.ico","webpack:///../node_modules/@syncfusion/ej2-popups/src/common/position.js","webpack:///../node_modules/@syncfusion/ej2-popups/src/common/collision.js","webpack:///../node_modules/@syncfusion/ej2-popups/src/popup/popup.js","webpack:///../node_modules/@syncfusion/ej2-popups/src/common/resize.js","webpack:///../node_modules/@syncfusion/ej2-popups/src/dialog/dialog.js","webpack:///../node_modules/@syncfusion/ej2-popups/src/tooltip/tooltip.js","webpack:///../node_modules/@syncfusion/ej2-popups/src/spinner/spinner.js","webpack:///../node_modules/@syncfusion/ej2-dropdowns/src/multi-select/float-label.js","webpack:///../node_modules/styled-components/dist/styled-components.browser.esm.js","webpack:///../node_modules/react-side-effect/lib/index.js","webpack:///../node_modules/@syncfusion/ej2-base/src/util.js","webpack:///../node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","webpack:///../node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","webpack:///../node_modules/@syncfusion/ej2-base/src/ajax.js","webpack:///../node_modules/@syncfusion/ej2-base/src/fetch.js","webpack:///../node_modules/@syncfusion/ej2-base/src/browser.js","webpack:///../node_modules/@syncfusion/ej2-base/src/event-handler.js","webpack:///../node_modules/@syncfusion/ej2-base/src/dom.js","webpack:///../node_modules/@syncfusion/ej2-base/src/observer.js","webpack:///../node_modules/@syncfusion/ej2-base/src/base.js","webpack:///../node_modules/@syncfusion/ej2-base/src/notify-property-change.js","webpack:///../node_modules/@syncfusion/ej2-base/src/animation.js","webpack:///../node_modules/@syncfusion/ej2-base/src/module-loader.js","webpack:///../node_modules/@syncfusion/ej2-base/src/hijri-parser.js","webpack:///../node_modules/@syncfusion/ej2-base/src/child-property.js","webpack:///../node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","webpack:///../node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","webpack:///../node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","webpack:///../node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","webpack:///../node_modules/@syncfusion/ej2-base/src/internationalization.js","webpack:///../node_modules/@syncfusion/ej2-base/src/validate-lic.js","webpack:///../node_modules/@syncfusion/ej2-base/src/component.js","webpack:///../node_modules/@syncfusion/ej2-base/src/draggable.js","webpack:///../node_modules/@syncfusion/ej2-base/src/droppable.js","webpack:///../node_modules/@syncfusion/ej2-base/src/keyboard.js","webpack:///../node_modules/@syncfusion/ej2-base/src/l10n.js","webpack:///../node_modules/@syncfusion/ej2-base/src/touch.js","webpack:///../node_modules/@syncfusion/ej2-base/src/template.js","webpack:///../node_modules/@syncfusion/ej2-base/src/template-engine.js","webpack:///../node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","webpack:///../node_modules/react-helmet/lib/HelmetConstants.js","webpack:///(webpack)/buildin/global.js","webpack:///../node_modules/styled-components/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack:///../node_modules/react-helmet/lib/HelmetUtils.js","webpack:///../node_modules/@syncfusion/ej2-lists/src/common/list-base.js","webpack:///../node_modules/@syncfusion/ej2-lists/src/list-view/list-view.js","webpack:///../node_modules/@syncfusion/ej2-lists/src/sortable/sortable.js","webpack:///../node_modules/@syncfusion/ej2-lists/src/list-view/virtualization.js","webpack:///../node_modules/@syncfusion/ej2-inputs/src/input/input.js","webpack:///../node_modules/@syncfusion/ej2-inputs/src/numerictextbox/numerictextbox.js","webpack:///../node_modules/@syncfusion/ej2-inputs/src/maskedtextbox/base/mask-base.js","webpack:///../node_modules/@syncfusion/ej2-inputs/src/form-validator/form-validator.js","webpack:///../node_modules/@syncfusion/ej2-inputs/src/maskedtextbox/maskedtextbox/maskedtextbox.js","webpack:///../node_modules/@syncfusion/ej2-inputs/src/slider/slider.js","webpack:///../node_modules/@syncfusion/ej2-inputs/src/uploader/uploader.js","webpack:///../node_modules/@syncfusion/ej2-splitbuttons/src/common/common.js","webpack:///../node_modules/@syncfusion/ej2-splitbuttons/src/drop-down-button/drop-down-button.js","webpack:///../node_modules/@syncfusion/ej2-splitbuttons/src/split-button/split-button.js","webpack:///../node_modules/@syncfusion/ej2-splitbuttons/src/progress-button/progress-button.js","webpack:///../node_modules/@syncfusion/ej2-inputs/src/smart-textarea/smart-textarea.js","webpack:///../node_modules/@syncfusion/ej2-inputs/src/color-picker/color-picker.js","webpack:///../node_modules/@syncfusion/ej2-inputs/src/textbox/textbox.js","webpack:///../node_modules/@syncfusion/ej2-inputs/src/textarea/textarea.js","webpack:///../node_modules/@syncfusion/ej2-inputs/src/smart-textarea/caret-helper.js","webpack:///../node_modules/@syncfusion/ej2-inputs/src/rating/rating.js","webpack:///../node_modules/@syncfusion/ej2-inputs/src/common/signature-base.js","webpack:///../node_modules/@syncfusion/ej2-inputs/src/signature/signature.js","webpack:///../node_modules/@syncfusion/ej2-inputs/src/otp-input/otp-input.js","webpack:///../node_modules/@syncfusion/ej2-inputs/src/speech-to-text/speech-to-text.js","webpack:///../node_modules/react-helmet/lib/Helmet.js","webpack:///../node_modules/@syncfusion/ej2-dropdowns/src/common/incremental-search.js","webpack:///../node_modules/react-is/index.js"],"names":["isArray","Array","keyList","Object","keys","hasProp","prototype","hasOwnProperty","hasElementType","Element","module","exports","a","b","equal","i","length","key","arrA","arrB","dateA","Date","dateB","getTime","regexpA","RegExp","regexpB","toString","call","$$typeof","error","message","match","number","console","warn","name","extendStatics","Query","from","this","subQuery","isChild","distincts","queries","fKey","fromTable","lookups","expands","sortedColumns","groupedColumns","params","lazyLoad","defineProperty","get","enumerable","configurable","setKey","field","using","dataManager","execute","done","fail","always","executeQuery","throwError","executeLocal","clone","cloned","slice","subQuerySelector","isCountRequired","tableName","addParams","value","push","fn","distinct","fields","expand","tables","where","fieldName","operator","ignoreCase","ignoreAccent","matchCase","toLowerCase","predicate","e","search","searchKey","fieldNames","comparer","fnOperators","sortBy","isFromGroup","sortByForeignKey","direction","sorts","temp","order","endsWith","replace","fnSort","filterQueries","j","sortByDesc","group","format","page","pageIndex","pageSize","range","start","end","take","nos","skip","select","hierarchy","query","selectorFn","foreignKey","requiresCount","aggregate","type","filter","q","filterQueryLists","singles","filtered","indexOf","res","Predicate","isComplex","processOperator","condition","predicates","apply","and","args","_i","arguments","combinePredicates","combine","or","ornot","andnot","fromJson","json","len","fromJSONData","pred","validate","record","ret","isAnd","split","undefined","getObject","toJson","p","preds","consts","GroupGuid","DataUtil","getValue","inst","input","substr","notEndsWith","startsWith","notStartsWith","wildCard","pattern","asteriskSplit","optionalSplit","join","charAt","test","like","lastIndexOf","substring","fnAscending","fnDescending","x","y","localeCompare","extractFields","obj","newObj","setValue","jsonArray","newData","aggregates","level","groupDs","isLazyLoad","jsonData","_loop_1","items","this_1","count","indx","childLevels","grouped","groupedArray","records","_loop_2","val","this_2","getVal","tempObj","_loop_3","aggs","buildHierarchy","source","lookup","pKey","grp","result","fKeyData","getFieldList","prefix","copyObj","keys_1","prop","nameSpace","lowerCaseNameSpace","upperCaseNameSpace","toUpperCase","splits","casing","fromObj","sort","dataSource","_this","ignoreDiacritics","map","diacritics","ignoreDiacriticsForArrays","valueArray","item","merge","left","right","current","shift","array","index","callAdaptorFunction","adaptor","fnName","param1","param2","getAddParams","adp","dm","req","reqParams","isPlainObject","constructor","isCors","xhr","window","getGuid","rand","crypto","arr","Uint8Array","getRandomValues","Math","random","isNull","getItemFromComparer","keyVal","castRequired","requiresCompleteRecord","tmp","forEach","data","processData","prepareQuery","sampledata","requiresCounts","returnValue","JSON","stringify","parse","parseJson","predicateList","concat","getPredicate","sorted","mainPred","childPred","cpre","_a","serverTimezoneOffset","timeZoneHandling","Error","stack","sum","ds","isNaN","average","min","max","truecount","falsecount","operatorSymbols","odBiOperator","odUniOperator","odv4UniOperator","actual","expected","notequal","lessthan","greaterthan","lessthanorequal","greaterthanorequal","contains","doesnotcontain","isnotnull","isnull","startswith","doesnotstartwith","isempty","isnotempty","wildcard","endswith","doesnotendwith","processSymbols","in","expectedArray","some","notin","every","jsonText","iterateAndReviveArray","iterateAndReviveJson","jsonReviver","keys_2","ms","exec","offSet","dateParse","toTimeZone","parseInt","isUTC","secondsMs","getUTCMilliseconds","utcFormat","hrs","mins","setHours","getHours","getMinutes","addSelfOffset","isJson","isGuid","replacer","jsonReplacer","arrayReplacer","keys_3","d","toJSON","date","jsonDateReplacer","getTimezoneOffset","toUTC","offset","utc","unix","toLocalTime","datefn","timeZone","differenceString","localtimefn","num","norm","floor","abs","getFullYear","getMonth","getDate","getSeconds","__extends","setPrototypeOf","__proto__","__","create","Adaptor","options","requestType","pvt","processResponse","_super","JsonAdaptor","processQuery","countFlg","keyCount","agg","isGroupByFormat","unshift","lazyLoadData","lazyLoadGroup","getAggregate","onDemandGroupInfo","field_1","onSortBy","onPage","formGroupResult","onWhere","aggQuery","batchRequest","changes","deletedRecordsLen","deletedRecords","addedRecords","insert","changedRecords","update","remove","onAggregates","onSearch","isLazyLoadGroupSort","fnCompare","onGroup","size","onRange","onTake","onSkip","onSelect","position","splice","keyField","UrlAdaptor","hierarchyFilters","getQueryRequest","url","request","groups","filters","searches","getFiltersFrom","getModuleName","getRequestQuery","pvtData","contentType","convertToQueryString","request1","selects","headers","handleTimeZone","enableCache","requests","action","isExpand","formRemoteGroupedData","getAggregateResult","childLevel","getGroupedRecords","hasRecords","childGroupedRecords","original","batchUrl","crudUrl","removeUrl","dataType","changed","added","deleted","table","beforeSend","settings","insertUrl","keyColumn","updateUrl","predicats","pData","aggregateData","isServerGrouping","groupQuery","ODataAdaptor","props","accept","multipartAccept","batch","changeSet","batchPre","contentId","batchContent","changeSetContent","batchChangeSetContentType","updateType","onPredicate","requiresCast","guid","getField","encodeURIComponent","splittedStringValue","splittedValue","onComplexPredicate","onEachWhere","onEachSearch","onEachSort","reverse","onCount","set","rootUrl","dataUrls","resourceTableName","dataCopy","results","emptyAndBatch","processBatchResponse","versionCheck","fetchRequest","version","requiresFormat","keys_4","localTimeReplacer","convertObj","localTime","compareAndRemove","initialGuid","cid","cSet","generateInsertRequest","generateUpdateRequest","generateDeleteRequest","stat","generateBodyContent","org","change","o","method","cIdx","jsonObj","exVal","changeGuid","valueOf","ODataV4Adaptor","isDate","onExpand","selected","expanded","exArr","sel","exp","close_1","combineVal","expandQueryIndex","idx","ex","onDistinct","distinctFields","dataUrl","WebApiAdaptor","location","host","state","Count","Items","WebMethodAdaptor","param","RemoteSaveAdaptor","updateKey","CustomDataAdaptor","getData","addRecord","updateRecord","deleteRecord","batchUpdate","GraphQLAdaptor","opt","schema","response","getVariables","getQuery","datamanager","urlQuery","str","vars","variables","resData","inserted","generateCrudData","bData","crudData","parsed","getMutation","CacheAdaptor","timeStamp","isCrudAction","isInsertAction","cacheAdaptor","guidId","localStorage","setItem","setInterval","getItem","forDel","currentTime","requestTime","removeItem","generateKey","currentFilter","newQuery","cachedItems","crossDomain","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","then","__generator","body","f","t","g","_","label","sent","trys","ops","verb","Symbol","iterator","n","v","op","TypeError","pop","DataManager","persistQuery","isInitialLoad","isEnableCache","offline","enablePersistence","id","ignoreOnPersist","timeTillExpiration","cachingPageSize","enableCaching","jsonp","defaultQuery","addEventListener","setPersistData","bind","isDataAvailable","ready","getPersistedData","persistedData","persistData","setPersistQuery","persistedQuery","keyword","allPredicates","predicateObj","nestedPredicates","nestedPredicate","setDefaultQuery","deffered","Deferred","isCustomDataAdaptor","makeRequest","getDeferedArgs","nextTick","promise","previousCacheQuery","setImmediate","setTimeout","extendRequest","fnSuccess","fnFail","cache","onSuccess","onFailure","isSelector","process","virtualSelectRecords","fnQueryChild","selector","subDeffer","childArgs","parent","subUrl","childReq","subData","isGraphQLAdaptor","fetchReqOption","afterReponseRequest","virtualRecords","catch","dataManagerFailure","fetch_1","useMiddleware","send","all","pResult","cResult","reponse","applyPostRequestMiddlewares","applyPreRequestMiddlewares","saveChanges","dofetchRequest","deff_1","fetch_2","cacheQuery","successFunc","failureFunc","cacheData","fetchDeffered","fetchFunc","fetch_3","clearPersistence","removeEventListener","highlightSearch","element","innerText","charCodeAt","ignoreRegex","findTextNode","childNodes","nodeType","textContent","trim","nodeValue","innerHTML","revertHighlightSearch","content","contentElement","querySelectorAll","parent_1","parentNode","text","document","createTextNode","replaceChild","__assign","assign","s","VirtualScroll","sentinelInfo","check","rect","info","top","containerElementRect","entered","listItemHeight","virtualItemCount","axis","bottom","isDestroyed","on","observe","setGeneratedData","dataProcessAsync","setCurrentViewDataAsync","bindScrollEvent","off","component","scrollArgs","scrollListener","callback","popupContentElement","getBoundingClientRect","add","popupScrollHandler","touchModule","scroll","virtualScrollHandler","isMouseScrollAction","isPreventScrollAction","getPageQuery","virtualStartIndex","virtualEndIndex","allowFiltering","qStartIndex","recentlyGeneratedData","loopIteration","endIndex","listData","virtualItemStartIndex","generatedDataObject","slicedData","generateAndExecuteQueryAsync","virtualItemEndIndex","isQueryGenerated","removeSkipAndTakeEvents","tempCustomFilter","isCustomFilter","totalData","totalItemCount","queryString","typedString","resetList","event","currentData","isResetListCalled","isListUpdated","viewPortInfo","mode","enableSelectionOrder","targetElement","startIndex","updateVirtualReOrderList","itemCount","oldUlElement","list","querySelector","removeChild","getForQuery","appendUncheckList","setCurrentView","reOrderList","skipvalue","totalItemsCount","alreadyAddedData","hideSelectedItem","allowCustomValue","virtualCustomData","virtualCustomSelectData","renderItems","updatevirtualizationList","checkMaxSelection","getSkeletonCount","skeletonCount","virtualTrackElement","getElementsByClassName","style","GetVirtualTrackHeight","popupWrapper","virualElement","createElement","className","styles","appendChild","UpdateSkeleton","liCollections","virtualContentElement","getTransformValues","groupBy","scrollStop","keyCode","isScrollChanged","currentFocuedListElement","currentSelectElem","getElementByValue","getAttribute","addListFocus","generateQueryAndSetQueryIndexAsync","isPopupOpen","isStartIndexInitialised","queryStartIndex","queryEndIndex","vEndIndex","isRequesting","isOpenPopup","selectedValueInfo","virtualScrollRefreshAsync","isTyped","filterInput","dataCount","keyboardEvent","handleVirtualKeyboardActions","pageCount","customFilterQuery","isVirtualTrackHeight","preventSetCurrentData","sentinel","pStartIndex","previousStartIndex","getInfoFromView","isUpwardScrolling","isKeyBoardAction","isScrollActionTriggered","isPreventKeyAction","currentPageNumber","virtualListInfo","isVirtualScrolling","getPageCount","popupObj","updateSelectionList","getItems","previousInfo","isscrollAction","infoType","offsets","previousEndIndex","vHeight","height","rowHeight","exactTopIndex","infoViewIndices","exactEndIndex","pageSizeBy4","sIndex","round","eIndex","ceil","idxAddedToExactTop","scrollPreStartIndex","delay","prevTop","debounced100","debounced50","target","scrollTop","scrollLeft","pstartIndex","scrollOffsetargs","transform","debounceFunction","focusElement","activeElement","destroy","__decorate","decorators","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","HScroll","preRender","browser","browserCheck","isDevice","customStep","ieCheck","initialize","uniqueId","display","enableRtl","classList","render","touchHandler","swipe","swipeHandler","scrollEle","scrollHandler","createOverlay","createNavIcon","setScrollState","scrollStep","offsetWidth","scrollDiv","setAttribute","ele","innerEle_1","children","ele_1","overflowX","scrollItems","getPersistData","addOnPersist","nav","overlay","elem","removeAttribute","disable","navEles","el","rightOverlayEle","CLS_OVERLAY","clsRight","rightEle","navItem","CLS_NAVRIGHTARROW","leftEle","insertBefore","firstChild","eventBinding","rightAttributes","attrs","clsLeft","leftAttributes","navEle","navLeftItem","CLS_NAVLEFTARROW","onKeyPress","keyTimer","keyTimeout","eleScrolling","onKeyUp","click","clearTimeout","tapHold","tabHoldHandler","tapHoldThreshold","repeatScroll","preventDefault","clickEventHandler","clearInterval","timeout","trgt","originalEvent","firstElementChild","scrollDis","isContinuous","rootEle","frameScrollRequest","distance","swipeEle","velocity","distanceX","animate","sin","cancelAnimationFrame","swipeDirection","requestAnimationFrame","scrollUpdating","scrollVal","scrollValue","scrollDirection","arrowDisabling","addDisable","removeDisable","arrowIcon","width","navLeftEle","navRightEle","leftOverlay","rightOverlay","scrollWidth","disEle","onPropertyChanged","newProp","oldProp","VScroll","scrollEventHandler","createOverlayElement","wheelEventHandler","offsetHeight","scrollCnt","scrollBar","overflow","navs","overlays","downOverlayEle","clsDown","downEle","CLS_NAVDOWNARROW","upEle","clsUp","navElement","navUpItem","CLS_NAVUPARROW","ev","deltaY","swipeElement","distanceY","addDisableCls","removeDisableCls","navUpEle","navDownEle","upOverlay","downOverlay","scrollHeight","addScrolling","container","scrollType","containerOffset","contentOffset","parentElem","parentElement","createScrollbar","maxWidth","maxHeight","destroyScroll","scrollObj","skipEle","menu","BreadcrumbOverflowMode","FOCUSED","HEADER","SELECTED","ITEM","HIDE","POPUP","FieldSettings","MenuItem","MenuAnimationSettings","MenuBase","navIdx","animation","isTapHold","tempItem","showSubMenuOn","isAnimationNone","isKBDAction","isMenu","ul","tagName","ejInst","clonedElement","cloneNode","refEle","nextElementSibling","ejInstance","wrapper","attributes","nodeName","wireEvents","renderComplete","getWrapper","template","enableScrolling","isReact","isAngular","enableTouchScroll","scrollList","touchStartY","touchStartFn","touches","clientY","touchMoveFn","touchEndY","touchDiff","atTop","atBottom","clientHeight","passive","touchOutsideHandler","closeMenu","cssClass","hamburgerMode","createHeaderContainer","defaultOption","showItemOnClick","createJsonFromElement","child","setProperties","removeChildElement","createItems","setBlankIconStyle","targetElems","menuHeaderClickHandler","isIos","cmenuHandler","delegateMoverHandler","moverHandler","delegateMouseDownHandler","mouseDownHandler","domKeyHandler","delegateClickHandler","clickHandler","wireKeyboardEvent","rippleFn","keyConfigs","downarrow","uparrow","enter","leftarrow","rightarrow","escape","home","tab","keyAction","keyBoardHandler","keyHandler","isMenuVisible","stopImmediatePropagation","leftEscKeyHandler","actionName","actionNeeded","removeLIStateByClass","upDownKeyHandler","rightEnterKeyHandler","cul","getUlByNavIdx","defaultIdx","childElementCount","fliIdx","fli","getLIByClass","getIdx","cli","isValidLI","focus","navIdxLen","popup","popups_1","eventArgs","keyType","openMenu","trigger","aEle","open","href","sli","currentTarget","isCMenu","pageX","changedTouches","pageY","canOpen","ulIndex","isIterated","item_1","items_1","wrapper_1","beforeCloseArgs","popups","getPopups","isClose","cnt","ul_1","liElem_1","getLI","parentItem","cancel","isFocused","observedCloseArgs","popupEle","closeArgs","trgtliId","closedLi","trgtLi","popupId","isOpen","minHeight","unWireKeyboardEvent","hide","isContextMenuClosed","toggleAnimation","showSubMenu","updateReactTemplate","trgtpopUp","submenus","afterCloseMenu","getIndex","isMenusClosed","isCmenuHover","which","sli_1","cliIdx","item_2","removeStateWrapper","portals","clearTemplate","renderReactTemplates","getMenuItemModel","getFields","separator","iconCss","li","lItem","elemId","uList","lastChild","ICONS","hdata","hli","isNestedOrVertical","generatePopup","calculateIndentSize","hoverDelay","triggerBeforeOpen","timer","zIndex","createEvent","initEvent","targetEvent","copyObject","srcElement","destination","liStyle","getComputedStyle","liIndent","textIndent","blankIconElem","menuIconElem","menuIconElemStyle","blankIconIndent","marginRight","actionOnScroll","relateTo","collision","X","Y","targetType","triggerOpen","spanElem","tempTitle","enableHtmlSanitizer","sanitize","title","spanTitle","spanIcon","openHamburgerMenu","closeHamburgerMenu","observedHamburgerCloseArgs","callFit","observedElement","menuType","observedOpenArgs","checkScrollOffset","refreshPosition","animationOptions","animationSettings","effect","duration","timingFunction","easing","show","setPosition","eventArgs_1","collide","offWidth","blankIconList","iconLi","icon","cssProp","padding","margin","iconCssProps","iconSize","fontSize","offsetEle","offsetLeft","offsetRight","toggleVisiblity","newTop","pageYOffset","documentElement","menuScrollElement","Number","xCollision","menuVScroll","cmenuWidth","getMenuWidth","cmenu","isRtl","caretIcon","isVisible","visibility","showIcon","hasField","listBaseOptions","moduleName","itemNavigable","itemCreating","curData","htmlAttributes","writable","isIE","role","tabindex","itemCreated","ariaLabel","span","templateID","createList","liTrgt","hdrWrapper","regex","isDifferentElem","isClosed","propName","menuWrapper","cliWrapper","isInstLI","cliWrapperId","setLISelected","scrollMenu","culIdx","navigator","platform","ctrlKey","isHeader","classname","getItemIndex","isUniqueId","isText","newItem","setItems","newItems","skipHdr","ulElem","updateItemsByNavIdx","updateItem","unWireEvents","ul_2","ul_3","getChangedItemIndex","insertAfter","lastElementChild","ul1","popStr","uls","targetSelctor","parent_2","keyboardModule","isMenuOpen","pUlHeight","pElement","animateElement","begin","progress","nIndex","isCallBack","currentField","enableItems","enable","skipItem","disabled","i_1","showItems","showHideItems","hideItems","ishide","validUl","removeItems","iitems","insertItems","isAfter","menuitem","parentUl","parentObj","parseFloat","scrollElem","removeAttributes","removeProperty","refreshing","getElementById","itemId","parentId","CLS_ITEMS","CLS_ITEM","CLS_POPUP","Item","Toolbar","resizeContext","resize","orientationChangeContext","orientationChange","moveLeft","moveRight","moveUp","moveDown","popupOpen","popupClose","btnItems","ej2_instances","unwireEvents","tempId","destroyItems","trgtEle","ctrlTem","popObj","activeEle","tbarAlign","tbarItemsCol","attrb","enableCollision","scrollModule","isVertical","isExtendedOpen","popupPriCount","allowKeyboard","keyModule","keyActionHandler","docKeyDown","updateTabIndex","tabIndex","dataTabIndex","unwireKeyboardEvent","popCheck","overflowMode","clickEvent","scrollEvent","clearProperty","tbarEle","tbarAlgEle","lefts","centers","rights","docEvent","popEle","tbarItems","destroyMode","tempEle","popupRefresh","elementFocus","fChild","activeEleSwitch","clstElement","tbrNavChk","keyHandling","clst","navChk","scrollChk","nodes","popAnimate","eleFocus","popupCheck","extendedPopup","focusFirstVisibleEle","focusLastVisibleEle","popFrstEle","activeEleRemove","tbarScrollChk","eleContains","closest","pos","sib","tbrItems","itemObj","isPopupElement","clsList","popupNav","popupClickHandler","observers","clickedArgs","CLS_RTL","offsetX","getToolbarPopupWidth","dataBind","getElementOffsetY","eleStyles","borderRightWidth","renderControl","refreshOverflow","ariaAttr","renderLayout","renderOverflowMode","itemPositioning","checkPopupRefresh","itemsAlign","itemEleDom","innerItem","innerPos","renderSubComponent","tbarItemAlign","align","showAlwaysInPopup","notify","changeOrientation","initScroll","innerItems","checkOverflow","itemWidthCal","marginTop","marginBottom","marginLeft","getScrollCntEle","trgClass","eleWidth","itemWidth","popNav","scrollNav","navEleWidth","toolbarAlign","priorityCheck","offsetWid","removePositioning","setOverflowAttributes","createPopupEle","eleItem","multiVar","extendVar","eleInlineItem","innerEle","innerNav","vertical","createPopupIcon","innerNavDom","checkPriority","createPopup","pushingPoppedEle","tbarObj","popupPri","eleHeight","sepHeight","poppedEle","nodeIndex","nodePri","tbResize","tbarElement","sepItem","extendEle","CLS_POPUPCLASS","popupInit","getPropertyValue","offsetY","close","appendTo","tbarPopupHandler","toolEle","popupElePos","offsetTop","popIcon","scrollY","innerHeight","overflowHeight","tbEleData","popupOffset","clientWidth","inEle","pre","eleOffset","popPriority","eleWid","sepCheck","itemPopCount","checkClass","rVal","cls","mrgn","compuStyle","fstEleCheck","tbarEleMrgn","eleWid_1","minWidth","sepEle","popedEle","CLS_POPUPDOWN","tbarPriRef","sepPri","des","elWid","wid","ig","ignoreCount","priEleCnt","eleSep","ignoreCheck","eleSepWidth","prevSep","previousElementSibling","isVer","dimension","popupEleWidth","popupEleRefresh","ignoreEleFetch","ignoreEle","ignoreInx","root","tbarWidth","tbarItemsWid","elWidth","btnText","btn","eleSplice","inlineStyles","sepBeforePri_1","refreshPositioning","tbarWid","popWid","itemEle","alignDiv","alignEle","leftAlign_1","ctrlTemplate","setAttr","attr","isEnable","elements","itemElement","getElementByIndex","addItems","extendedOpen","itemsDiv","itemsRerender","itemAgn","algIndex","removeItemByIndex","eleIdx","indexAgn","clearToolbarTemplate","btnItem","templateRender","templateProp","isComponent","itemType","eleObj","templateFn","regEx","tempStr","outerHTML","tempArray","isStringTemplate","getDataTabindex","buttonRendering","dom","iconPos","textStr","btnTxt","prefixIcon","suffixIcon","btnObj","iconPosition","tempDom","tooltipText","itemClick","showTextOn","sTxt","visible","curEle","previousEle","tabindexValue","multirowele","updateHideEleTabIndex","isHidden","isElement","eleIndex","nextEle","templateEle","registeredTemplate","registeredTemplates","registeredItem","rootNodes","closestItem","portalItem","containerInfo","tEle","changedProb","property","newProperty","refresh","popupPriCheck","booleanCheck","itemCol","hideItem","CLS_HEADER","CLS_HEADERCTN","CLS_CONTENT","CLS_CTENT","AccordionActionSettings","AccordionAnimationSettings","AccordionItem","Accordion","space","isVue","isDestroy","restoreContent","isNested","removeRippleEffect","nested","initializeHeaderTemplate","initializeItemTemplate","initExpand","expandedIndices","initItemExpand","wireFocusEvents","acrdItem_1","headerEle","clearEvents","focusIn","focusOut","eventName","templateParser","headerTemplate","headerTemplateFn","itemTemplate","itemTemplateFn","getHeaderTemplate","getItemTemplate","innerEles","header","toggleIconGenerate","tglIcon","hdrColIcon","expandMode","expandItem","innerDataSourceItem","renderInnerItem","acrdnCtnItem","acrdnItem","acrdnHdr","acrdnCtn","getIndexByItem","contentRendering","ariaAttrUpdate","afterContentRender","acrdActive","cntclkCheck","inlineEleAcrdn","nestContCheck","acrdcontainer","acrdnchild","acrdAniEle","acrdAniEle_1","sameContentCheck","sameHeader","acrdnCtn_1","expandState","collapse","eleMoveFocus","clstItem","headerEleGenerate","ctnEle","hdrEle","angularnativeCondiCheck","fetchElement","hdr","hdrIcnEle","hdrIcon","elementRef","nativeElement","parseddata","temString","eleVal","HTMLElement","templateProps","templateName","itemcnt","ctn","trgtItemEle","isExpanded","expandArgs","expandedItemsPush","expandProgress","expandAnimation","ef","icn","lastActiveItemId","getItemElements","itemCollection","expandedItemsPop","collapseProgress","collapseAnimation","trgtItEl","trgtHeight","itemHeight","remain","addItem","itemIndex","innerItemEle","expandedItemRefresh","clearAccordionTemplate","enableItem","eleHeader","itemExpand","expandedItem","ctnElePos","eleStr","setTemplate","toElement","acrdn","isRefresh","changedProp","k","oldVal","newVal","activeContent","ContextMenu","VMENU","Menu","tempItems","clearChanges","updateMenuItems","orientation","createMenuItems","pIdField","CLS_WRAP","CLS_TB_ITEMS","CLS_TB_ITEM","CLS_TB_POPUP","TabActionSettings","TabAnimationSettings","Header","TabItem","Tab","isInteracted","lastIndex","isAdd","isIconAlone","draggableItems","refreshActiveTabBorder","delete","tbObj","expTemplateContent","isTemplate","cntEle","btnCls","tbItems","tbItem","tbPop","prevItem","bdrLine","dragItem","cloneElement","draggingItems","prevIndex","isPopup","initRender","isSwiped","itemIndexArray","allowDragAndDrop","dragArea","css","setCssClass","updatePopAnimationConfig","CLS_ICONS","tabId","renderContainer","refreshActiveBorder","setOrientation","headerPlacement","renderHeader","renderContent","CLS_INDICATOR","scrCnt","scrCntClass","setContentHeight","selectedItem","setRTL","hdrPlace","tabItems","getTabHeader","addVerticalClass","hdrItems","tabItems_1","txt","cont","wrap","parseObject","clicked","setCloseButton","showCloseButton","toolbarHeader","createContentElement","loadOn","hdrItem","contents","extIndex","reRenderItems","bindSwipeEvents","maxId","isReplace","getMaxIndicesFromItems","txtWrapEle","tItems","spliceArray","tbId","hidden","tHtml","txtEmpty","headerTextCompile","tCont","wrapAttrs","tItem","spliceItemIndex","removeActiveClass","tabHeader","node","checkPopupOverflow","isOverflow","popupHandler","ripEle","actEleId","prevEle","trg","prevCtnAnimation","prev","previous","triggerPrevAnimation","oldCnt","animateObj","triggerAnimation","prevActiveEle","newCnt","getTrgContent","idNo","isPrevent","openEff","clsEff","setActiveBorder","keyPressed","trgParent","trgIndex","getEleIndex","selectTab","idList","getIndexFromEle","templateCompile","compileElement","templateFUN","getContent","callType","no","findEle","tbPos","place","activeTab","changeToolbarOrientation","focusItem","curActItem","headerPos","contentPos","loadContentInitMode","loadContentElement","heightAdjustMode","getHeight","cs","trgHdrEle","reorderActiveTab","bar","top_1","tbWidth","setActive","skipDataBind","allowServerDataBinding","serverDataBind","trg_1","enableAnimation","eleTrg","refreshItemVisibility","eventArg","previousItem","previousIndex","selectedIndex","selectedContent","selectingID","preventFocus","selectEventArgs","showPopup","config","tbPopObj","bindDraggable","initializeDrag","swipeMode","hoverHandler","spaceKeyDown","tabKeyModule","openPopup","shiftTab","removeTab","nestedTab","clstHead","actEle","nxtSib","nextSibling","scrBar","scrStart","scrEnd","eleStart","eleEnd","eleViewRange","closeButtonTitle","locale","getConstant","evalOnPropertyChangeItems","selectElement","properties","cntItem","textVal","clearTabTemplate","isHiddenEle","addTab","hideTab","enableTab","clearTemplates","dragObj","dragTarget","helper","dragStart","itemDragStart","drag","dropIndex","dropItem","dragIndex","dragArgs","draggedItem","droppedItem","isEqualNode","cursor","scrollRightNavEle","scrollLeftNavEle","hscrollBar","pointerEvents","scrollContentWidth","isSameNode","dragAction","droppedIndex","dragStop","itemDragStop","tabItemDragArgs","intDestroy","dragsIndex","popupContainer","lastEle","dragStopArgs","tabItemDropArgs","addArgs","addedItems","addingTabContent","tabAddingArgs","lastEleIndex","itemsCount","tabItems_2","textValue_1","removeArgs","removedItem","removedIndex","tabRemovingArgs","targetEleIndex","cntTrg","getSelectingTabIndex","tabItem","hasAttribute","selectedID","selectingItem","selectingIndex","selectingContent","selectArgs","tabItemId","sortedKeys_1","refreshActiveTab","detachContent","mainContents","txtString","conte","crElem","txtWrap","tConts","wrapAtt","wraper","ROOT","CLOSE","OPEN","RIGHT","LEFT","OVER","PUSH","CONTEXT","Sidebar","documentClickContext","documentclickHandler","setWidth","setTarget","addClass","setZindex","enableDock","setDock","firstRender","setMediaQuery","checkType","setType","setCloseOnDocumentClick","setEnableRTL","windowWidth","innerWidth","targetEle","sidebarEleCopy","getTargetElement","siblingElement","closeOnDocumentClick","setDimension","dockSize","classELement","checkMediaQuery","transitionEnd","triggerChange","destroyBackDrop","sibling","showBackdrop","defaultBackdropDiv","modal","closeArguments","model","observedcloseArgs","setAnimation","setTimeOut","elementWidth","openArguments","observedopenArgs","createBackDrop","changeArguments","getState","targetString","toggle","mediaQuery","matchMedia","matches","includes","enableGestureHandler","startX","setEnableGestures","enableGestures","mainContentEle","sidebarEle","isRendered","isServerRendered","insertAdjacentElement","ICONRIGHT","MENUCLASS","WRAPMODECLASS","SCROLLMODECLASS","CarouselSwipeMode","BreadcrumbItem","Breadcrumb","isPopupCreated","_maxItems","maxItems","initItems","initPvtProps","getEndIndex","popupUl","TABINDEX","activeItem","baseUri","uri","URL","origin","isSingleLevel","isIconRight","itemsLength","isLastItemInPopup_1","isActiveItem","isLastItem","j_1","wrapDiv","isItemCancelled_1","ol","firstOl","isCollasped","isDefaultOverflowMode_1","enableActiveItemNavigation","containsRightIcon","DOT","isEmptyUrl","keyDownHandler","beforeItemRenderChanges","separatorTemplate","itemClass","nextItem","lastPopupItemIdx","li_1","expandHandler","getMenuElement","calculateMaxItems","liElems","liWidth","menuEle","paddingLeft","currItem","isRightIcon","wrapElem","Node","TEXT_NODE","iconElem","iconElem_1","ICONCLASS","enableNavigation","anchor","documentClickHandler","itemClickArgs","renderPopup","POPUPCLASS","popupWireEvents","popupKeyDownHandler","delegateClickHanlder","classes","attribute","CLS_NAVIGATORS","CLS_HOVER","StepStatus","CarouselItem","Carousel","isSwipe","localeObj","nextSlide","of","pauseSlideTransition","playSlideTransition","previousSlide","slide","slideShow","renderSlides","renderNavigators","renderPlayButton","renderIndicators","applyAnimation","rtlElement","setActiveSlide","autoSlide","setHtmlAttributes","enableTouchSwipe","renderTouchActions","loop","autoSlideInterval","applySlideInterval","handleNavigatorsActions","partialVisible","Touch","Mouse","reRenderSlides","allowKeyboardInteraction","renderKeyboardActions","cloneCount","getNumOfItems","slideWidth","itemsContainer","getTranslateX","buttonsVisibility","resetTemplates","showPlayButton","playButtonTemplate","playButtonClickHandler","selectedData","reRenderIndicators","swipeStart","swiping","swipStop","swipeModehandlers","carouselClasses","slideContainer","autoPlay","numOfItems","renderSlide","slideItems","renderTemplates","setProperty","transitionProperty","isClone","templateId","navigators","renderNavigatorButton","buttonContainer","previousButtonTemplate","nextButtonTemplate","button","CLS_FLAT","navigatorClickHandler","playPauseWrap","CLS_PLAY_PAUSE","playButton","isLastSlide","buttonObj","isToggle","showIndicators","indicatorsType","indicatorClass","indicatorsTemplate","indicatorWrap","CLS_INDICATORS","indicatorBars","renderIndicatorTemplate","indicatorBar","CLS_INDICATOR_BAR","indicator","indicatorClickHandler","animationEffect","resetSlideInterval","autoSlideChange","activeSlide","activeIndex","dataset","itemInterval","interval","getSlideIndex","currentIndex","allSlides","activeIndicator","activeIndex_1","currentSlide","nextIndex","slideDirection","refreshIndicators","slideChangedEventArgs","transitionDuration","onTransitionEnd","slideIndicator","indicators","getNavigatorState","isPrevious","isPropertyChange","slideIndex","isSlideTransition","isSuspendSlideTransition","isButtonUpdate","prevButton","nextButton","onHoverActions","pauseOnHover","onFocusActions","destroyButtons","buttonCollections_1","instance","getTranslateValue","WebKitCSSMatrix","webkitTransform","m41","timeStampStart","now","prevPageX","initialTranslate","positionDiff","time","offsetDist","threshold","swipeNavigation","resizeHandler","playIcon","play","pause","pauseIcon","templates","AppBar","isSticky","setHeightMode","setColorMode","_b","colorMode","StepperOrientation","Step","NotStarted","StepLabelPosition","StepType","StepperBase","updateOrientaion","toLocaleLowerCase","renderProgressBar","progressStep","progressbar","beforeLabel","prepend","stepsContainer","progressBarPosition","setProgressPosition","isResize","stepItemContainer","stepItemEle","topPos","offsetParent","leftPost","Horizontal","ICONCSS","TEXTCSS","INPROGRESS","NOTSTARTED","FOCUS","COMPLETED","READONLY","LABELBEFORE","STEPICON","STEPINDICATOR","StepperAnimationSettings","Stepper","stepperItemElements","l10n","optional","tooltipOpen","navigationHandler","activeStep","updateStepperStatus","updatePosition","stepperItemList","updateStepType","readOnly","updateTemplateFunction","steps","initiateProgressBar","checkValidStep","updateAnimation","updateTooltip","beforeLabelWidth","textEleWidth","renderDefault","progressEle","stepType","stepTypeLower","labelContainer","clearLabelPosition","updateResize","updateStepFocus","navigateToStep","isKeyNavFocus","isFocus","isInitial","status_1","status","prevOnChange","isProtectedOnChange","InProgress","updateStatusClass","currentStep","isInprogress","stepItem","Completed","isHorizontal","labelPositionLower","labelPosition","stepperItemContainer","stepSpan","isItemLabel","isItemText","isIndicator","isIndicator_1","isValid","isRender","itemIcon","createTextLabelElement","checkValidState","updateLabelPosition","iconSpan","optionalSpan","setLocale","optionalContent","renderItemContent","wireItemsEvents","calculateProgressBarPosition","listItems","isLabelEle","spanEle","isBeforeLabel","iconOnly","textEle","labelWidth","iconEle","textEle_1","lastChildWidth","isLabel","updateCurrentLabel","labelPos","before","removeCss","isStepIndicator","iconEle_1","indicatorEle","textLabelIcon","validStep","validIconClass","labelEle","showTooltip","tooltipObj","windowCollision","opensOn","STEPPERTOOLTIP","linearModeHandler","openStepperTooltip","closeStepperTooltip","unWireItemsEvents","linear","linearModeValue","stepClickHandler","updateTooltipContent","tooltipPopupClass","tooltipTemplate","templateFunction","getTemplateFunction","content_1","clickEventArgs","previousStep","isrerender","removeItemContent","updateContent","isUpdated","previousStep_1","stepStatus","Itemslength","calculateProgressbarPos","prevOnChange_1","updateIndicatorStatus","updateStepInteractions","progressPos","selectedEle","totalLiWidth_1","activeLiWidth_1","spaceWidth","progressValue","removeItemElements","nextStep","reset","isDisabled","refreshProgressbar","updateElementClassArray","classArray","textContainer","keyboardModuleStepper","handleNavigation","isNextStep","isRTL","focusedEle","stepItems","isupdateFocus","renderStepperItems","isUpdate","isStepType","updateDynamicSteps","prevSteps","stepCounts","changedPropsCount","updateDynamicActiveStep","preActiveStep","updateDynamicCssClass","prevCssClass","Bottom","Default","DROPDOWNICON","SHOW_CHIP","SHOW_CLEAR","CHIP_INPUT","INPUTFOCUS","HIDEICON","CHECK","NODATA","SHOW_TEXT","Fields","TreeSettings","DropDownTree","filterTimer","isFilteredData","isFilterRestore","filterDelayTime","isClicked","onDocumentClick","isCheckAllCalled","isFromFilterChange","getLocaleName","inputFocus","isFirstRender","isInitialized","currentText","currentValue","oldValue","removeValue","selectedText","treeItems","dataValue","isNodeSelected","isDynamicChange","clearIconWidth","headerTemplateId","footerTemplateId","actionFailureTemplateId","noRecordsTemplateId","customTemplateId","altUp","altDown","ctrlDown","ctrlUp","ctrlEnter","ctrlHome","ctrlEnd","shiftDown","shiftUp","shiftEnter","shiftHome","shiftEnd","csDown","csUp","csEnter","csHome","csEnd","ctrlA","isTree","popupDiv","inputEle","inputObj","createInput","floatLabelType","buttons","showDropDownIcon","readonly","placeholder","enabled","inputWrapper","getDirective","createHiddenElement","createClearIcon","setElementWidth","updateDataAttribute","setHTMLAttributes","setAttributes","tree","destroyPopupOnHide","wireTreeEvents","renderTree","isRemoteData","allowMultiSelection","showCheckBox","createChip","wrapText","overFlowWrapper","OVERFLOW_VIEW","hiddenElement","setTreeValue","setTreeText","updateHiddenValue","setSelectedValue","updateView","firstUl","treeObj","setOldValue","hasTemplate","footerTemplate","actionFailureTemplate","noRecordsTemplate","customTemplate","valueTemplate","hideCheckAll","flag","checkAllEle","renderFilter","filterContainer","autocomplete","filterBarPlaceholder","filterObj","showClearButton","filterChangeHandler","filterKeyAction","focusedElement","observedArgs","hidePopup","blur","filterHandler","isChildObject","expandedNodes","treeData","getTreeData","filterFields","cloneFields","preventDefaultAction","treeDataType","selfReferencefilter","remoteDataFilter","getTreeFields","nestedFilter","filteredFields","remoteChildFilter","filteredChild","isChildFiltering","isMatchedNode","matchedChildren","filteredItems","matchedDataSource","nestedChildFilter","matchedData","parentValue","value_1","checkValue","tempChild","filterType","dropDownClick","mouseIn","onMouseLeave","overAllClear","clearAll","windowResize","formElement","resetValueHandler","treeAction","wireCheckAllWrapperEvents","checkAllParent","checkAllAction","showSelectAll","isClearButtonClick","showOverAllClear","relatedTarget","onFocusOut","isValue","chipWrapper","showOrHideValueTemplate","changeOnBlur","triggerChangeEvent","updateOverFlowView","ensurePlaceHolder","ddtCompareValues","isChipDelete","newValue","isValueChange","keyEventArgs","selectAll","resetValue","getAriaAttributes","overAllContainer","tempData","tempIndex","wrapperleng","remaining","downIconWidth","overflowCountTemplate","totalCountTemplate","remainContent","totalContent","remainElement","remainSize","updateChipAndValueTemplate","checkRemainingTemplate","updateDelimMode","delimiterChar","getOverflowVal","textArr","updateRemainTemplate","isChip","previousHtmlContent","previousData","wrapperLength","remainingItemsCount","currentHtmlContent","valueTemplateContainer","valueElements","getSelectedData","treeSettings","loadOnDemand","validationAttribute","chipCollection","getValidMode","checkWrapper","createSelectAllWrapper","selectAllSpan","touchClass","checkBoxElement","checkElement","changeState","ariaState","frameSpan","isReverseUpdate","uncheckAll","checkAll","setMultiSelect","unSelect","selectAllText","unSelectAllText","compiledString","htmlAttr","setEnable","cssText","setPlaceholder","invalidAttr","setValidValue","valArr","selectedNodes","updateMode","checkedNodes","updateSelectedValues","setValueTemplate","initializeValueTemplate","getValueTemplateElement","reactCallBack","templateElements","getNodeData","autoCheck","givenText","getNestedItems","objlen","dataId","getChildType","childData","mapper","nodeSelected","onNodeSelected","nodeChecked","onNodeChecked","nodeChecking","beforeCheck","nodeExpanded","onNodeExpanded","actionFailure","onActionFailure","nodeClicked","onNodeClicked","dataBound","OnDataBound","sortOrder","expandOn","nodeSelecting","onBeforeSelect","nodeTemplate","checkDisabledChildren","isCancelled","POPUP_CLASS","setHeaderTemplate","setFooterTemplate","updatePopupHeight","oldFocussedNode","removeFocus","updateFocus","checkSelectAll","oldFocusedElement","popupHeight","footer","border","borderTopWidth","borderBottomWidth","targetExitViewport","inputWidth","ddElement","popupWidth","isFilter","isFooter","isScroller","isDocumentClick","l10nUpdate","getTreeDataType","expandAll","restoreFilterSelection","newClass","oldClass","setEnabled","cloneChildField","hasChildren","imageUrl","selectable","tooltip","parentID","getTreeChildren","isChecked","childFields","getActualProperties","setFields","updateTemplate","updateValue","getEventArgs","checkData","selectData","nodeData","itemData","getNode","removeSelectedData","updateClearButton","chipClose","updateDropDownIconState","spinIcon","appendSpan","ensureClearIconPosition","setMultiSelectValue","newValues","selectedValues","selectedValue","nodeSelectedData","ddtValue","checkSelection","getChildNodeData","newChildItems","getChildMapperFields","childNodeData","muteOnChange","templateComplier","showChip","textValue","hiddenInputValue","setChipValues","setTagValues","chip","chipContent","CHIP_CLOSE","removeChip","tempArr","setSelectAllWrapper","updateOverflowWrapper","stopPropagation","clearCheckAll","selectAllItems","updateTreeSettings","updateCheckBoxState","checkBox","noRecord","templatestring","updateRecordTemplate","updateMultiSelection","updateOption","updateAllowFiltering","destroyFilter","updateFilterPlaceHolder","updateText","updateModelMode","overFlow","setReadonly","removeFloating","addFloating","_c","prop_1","clear","setRipple","chipsIcons_1","destroyPopup","ensureVisible","inputObject","ComboBox","wireEvent","preventBlur","onBlurHandler","inputElement","targetFocus","onInput","onFilterUp","onFilterDown","pasteHandler","bindCommonEvent","inputValue","customValue","setOldText","removeSelection","allowCustom","selectedLI","valueMuteChange","setHiddenValue","allowObjectBinding","changeData","getDataByValue","fields_1","isvalidTextField_1","isValidValue_1","dataItem","previousValue","isObjectInArray","detachChangeEvent","updateValues","isDisableItemValue","isDisabledItemByIndex","getIndexByValue","getValueByText","getElementByText","setSelection","doesItemExist","enableVirtualization","currentValue_1","virtualGroupDataSource","getItemData","updateIconState","clearButton","clearIconHide","searchLists","isFiltering","ulElement","setHoverList","preventAutoFill","incrementalSearch","getNgDirective","setSearchBox","onActionComplete","isSelectCustom","inlineSearch","getFocusElement","isDropDownClick","sortedData","typeOfData","typeof","updatingincrementalindex","isEndIndexValid","incrementalEndIndex","isIncrementalEndIndexZero","incrementalStartIndex","updateIncrementalInfo","updateIncrementalView","incrementalLiCollections","startIndex_1","endIndex_1","fixedHead","selectedLiOffsetTop","virtualListInfoStartIndex","virtualListHeight","selectedLiOffsetTopWithStartIndex","scrollTopOffset","removeFillSelection","autofill","checkCustomValue","showSpinner","spinnerElement","disableIcon","hideSpinner","setAutoFill","isHover","getTextByValue","currentFillValue","getFormattedValue","isSelected","updateSelectedItem","isAndroidAutoFill","setAutoFillSelection","isAndroid","currentPoints","getSelectionPoints","prevEnd","prevSelectPoints","curEnd","prevStart","curStart","isSelectFocusItem","isKeyNavigate","selection","setSelectionRange","unWireEvent","unBindCommonEvent","selectCurrentItem","isDisabledElement","onChangeEvent","onFocus","calculateWidth","previousValue_1","isObjectCustomValue","initial","updateCustomValueCallback","emptyObject","firstItem","setUpdateInitial","setReadOnly","renderList","comboProps","getPropObject","oldProperty","autoFill","isEscape","isEscapeKey","searchItem","renderHightSearch","AutoComplete","_this_1","isFiltered","searchList","filterQuery","mapping","suggestionCount","queryElements","queryTakeValue","querySkipValue","takeValue","getTakeValue","currentTakeValue","currentQueryTakeValue","isDataFetched","checkAndResetCache","beforePopupOpen","updateData","filterAction","isNoDataElement","minLength","virtualElement","getFilteringSkeletonCount","fixedHeaderElement","focusIndexItem","postBackAction","setScrollPosition","listOption","fieldsSettings","highlight","itemCreated_1","isEditTextBox","isPopupButton","showPopupButton","setInputValue","checkFields1_1","listLength_1","_this_2","refreshPopup","atcProps","isHighlight","CheckBoxSelection","activeLi","listSelection","setSelectAll","setDeviceSearchBox","getFocus","setReorder","getActiveList","checboxCreate","setPopupFullScreen","listCurrentOptions","enableGroupCheckBox","checkboxEle","filterParent","isDynamicDataChange","selectAllHeight","clearIconElement","filterInputObj","checkboxWrapper","validateCheckNode","checkWrap","isCheck","backIcon","isDeviceFullScreen","mobFilter","popupElement","clearText","keyUp","onKeyDown","searchBoxHeight","clickOnBackIcon","targetInputElement","refreshListItems","boundPreventListSelection","preventListSelection","setSearchBoxPosition","backIconElement","footerHeight","headerHeight","clearElement","scrollFocusStatus","updateValueState","tempValues","dispatchEvent","overAllWrapper","focused","activeLiCount","remLi","ulEle_1","virtualUlElement","focusAtFirstListItem","SelectionSettings","ToolbarSettings","ListBox","isValidKey","isBackSpace","isDataSourceUpdate","keyDownStatus","ListBox_1","filteringAction","originalElement","inputString","initLoad","isCustomFiltering","initialSelectedOptions","inputFormName","initWrapper","hiddenSelect","groupHdrs","selectionSettings","updateSelectionSettings","showCheckbox","l10nSelect","checkBoxSelectionModule","initDraggable","scope","beforeDragStart","triggerDragStart","triggerDrag","beforeDrop","beforeDragEnd","drop","dragEnd","placeHolder","sender","updateActionCompleteData","initToolbar","toolbarSettings","prevScope","toolElem","createButtons","updateToolBarState","tBListBox","moveTo","moveFrom","moveAllTo","moveAllFrom","required","setHeight","spinner","refreshClearIcon","KeyUp","listBoxClasses","clearIcon","searchEle","filterElem","txtLength","noRecElem","selectionStart","filterWireEvents","inputSearch","mainList","initToolbarAndStyles","setCheckboxPosition","setFiltering","selectionEnd","badge","extendedArgs","getDragArgs","dragSelected","dragEventArgs","allowDragAll","scrollParent","boundRect","listItem","stopTimer","setScrollDown","scrollPixel","isScrollDown","dragValue","droppedElement","getDataByValues","customDraggedItem","liColl","droppedData","selectedOptions","dropValue","listObj","getComponent","getArgs","sourceArgs","destArgs","sourceArgs1","targetListObj","toSortIdx_1","toIdx_1","getCurIdx","rIdx","jsonIdx","sIdx","jsonIdx_1","sIdx_1","fLiColl_1","currIdx_1","fListData_1","fSortData_1","srcIdx","jsonSrcIdx","sortIdx","destIdx","liCollElem_1","removeSelected","sourceElem","updateListItems","sortable","placeHolderElement","dragArgs1","liCollElem","destElem","append","elems","triggerBeforeItemRender","requiredModules","modules","member","findListElement","canDisable_1","selectItems","getSelectedItems","updateSelectedOptions","selElems","liElement","objValue","dupData","removeIdxes","removeLiIdxes","updateLiCollection","getElemByValue","moveUpDown","moveTop","moveBottom","targetId","tlistbox","getScopedListBox","moveData","toolbarAction","moveAllData","getDataList","getSortedList","sortData","tempLi","maximumSelectionLength","liEle","getElementsByTagName","dataValue1","dataValue2","updateMainList","ulList","mainCount","ulEleCount","listindex","valueindex","form","focusOutHandler","wireToolbarEvent","setFloatingHeader","formResetHandler","getToolElem","toolbarClickHandler","clearFilterIconElem","selectHandler","searchCount","liItems","filterBarClearIcon","isKey","currSelIdx","isSelect","selectedLi","metaKey","shiftKey","prevSelIdx","liDataValue_1","values","value1","selectedLis","getDataByElements","getDataByElems","formattedValue","limit","moveItemTo","moveItemFrom","moveAllItemTo","moveAllItemFrom","isUp","isTop","isBottom","localDataArgs","jsonToIdx","fListBox","tListBox","dataIdx","tListData","tSortData","fliCollections","dataLiIdx","tliCollections","eData_1","ulChildren_1","listItems_1","lData_1","sData_1","jData_1","listDataMap_1","rLiCollection_1","n1","n2","toColl","tJsonData","selectNextList","liIdx","childCnt","validIdx","getValidIndex","tempLiColl","flistboxarray","newFlistboxArray","childNode","disabledData_1","obj1","obj2","fromIdx","toIdx","cbox","getGrabbedItems","grabbItems","isDragEnd","code","selectedidx","sidx","eidx","char","String","fromCharCode","isWordCharacter","isWordAccentCharacter","eventArgsData_1","remoteFilterAction","preventDefActionFilter","dataUpdater","remoteCustomValue","updateSelectTag","clearSelection","dvalue_1","canFocus","liselect","getSelectTag","checkDisabledState","listObj_1","wrap_1","listWrap","checkboxPosition","liCollLen","l10nShow","enableRtlElements","rippleFun","l10nSel","Mention","suffixText","allowSpaces","mentionChar","showMentionChar","requireLeadingSpace","updateCssClass","initializeData","initRemoteRender","isListResetted","isCollided","lineBreak","isRTE","keyEventName","checkAndUpdateInternalComponent","isContentEditable","elementValue","hideWaitingSpinner","spinnerTemplate","spinnerTemplateElement","showWaitingSpinner","setSpinnerTemplate","isKeyAction","altKey","isNavigation","isTabAction","isRequested","getLastLetter","getTextRange","isUpDownKey","updateUpDownAction","focusEle","rangetextContent","isRteImage","getCurrentRange","startContainer","currentRange","mentionRegex","lastWordRange","previousChar","lastTwoLetters","Regex","charRegex","isMatchedText","startOffset","endOffset","deleteContents","initValue","didPopupOpenByTypingInitialChar","isMatched","ownerDocument","getSelection","getRangeAt","unWireListEvents","wireListEvents","setDataIndex","isActive","selectEventCallback","selectedElem","workingNodeContent","selectStartOffset","startPos","words","selectedElementID","closePopup","animModel","popupEle_1","coordinates_1","listHeight","rteRootElement","initializePopup","checkCollision","popupLeft_1","popupHeight_1","getTriggerCharPosition","getCoordinates","coordinates","resolveCollision","mostRecentTriggerCharPos","offsetValue","div","globalRange","computed","selectedNodePosition","createRange","setStart","setEnd","getClientRects","rectTop","rectLeft","iframes","iframe","contentDocument","iframeRect","doc","windowLeft","pageXOffset","clientLeft","windowTop","clientTop","span_1","textNodeWidth","borderLeftWidth","onMouseClick","onMouseOver","preventSelect","isSelection","removeHover","setSelectOptions","detachChanges","isSelectCancel","previousSelectedLI","scrollBottom","currentOffset","nextBottom","nextOffset","paddingTop","boxRange","selectLi","previousItemData","focusedItem","defineProperties","displayTemplate","updateMentionValue","setDisplayTemplate","endPos","textSuffix","mentionVal","commonAncestorContainer","normalize","frag","createDocumentFragment","lastNode","insertNode","cloneRange","setStartAfter","removeAllRanges","addRange","pointerType","event_1","CustomEvent","detail","myField","currentTriggerSnippet","showChar","displayTempElement","displayCompTemp","displayTemplateId","callBack","spinnerCompTemp","spinnerTemplateId","eve","preItems","detachMentionChanges","dataText","selectedItems","currentLi","setHover","hover","hoveredItem","positionX","positionY","disableItem","HTMLLIElement","disableListItem","parsedData","defaulthtmlkeys","delayUpdate","isColEName","ComponentBase","mountingState","attrKeys","cachedTimeOut","isAppendCalled","initRenderCalled","isReactForeceUpdate","isshouldComponentUpdateCalled","isCreated","componentDidMount","refreshChild","canDelayUpdate","renderReactComponent","componentDidUpdate","updateProperties","reactElement","shouldComponentUpdate","nextProps","silent","dProps","prevProps","statelessTemplates","propkey","isClassName","htmlattributes","compareValues","clsName","propsClsName","dpropsClsName","refreshProperties","processComplexTemplate","curObject","context","compTemplate","complexTemplate","PropVal","getDefaultAttributes","propKeys","ignoreProps","controlAttributes","propKeys_1","ref","reactUid","multiline","eventProp","successHandler","modelObserver","handler","onChange","syntheticEvent","nativeEvent","prevDetection","value2","tempVal","tempVal2","compareObjects","oldProps","newProps","lenSimilarity","diffArray","curObj","_j","changedProperties","checkInjectedModules","prevModule","getInjectedModules","curModule_1","getInjectedServices","mod","injectedModules","directivekeys","changedProps","directiveValue","validateChildren","skipRefresh","prevProperties","dKeys","compareOutput","_c1","allColumns","columns","propInstance","changedProps_1","componentWillUnmount","hasModule","offIntlEvents","appendReactElement","portal","forceUpdate","templateNames","tempPortal","propIndexCount","childCache","childs_1","toArray","ifield","childProps","getChildProps","propertyName","isDirective","subChild","matcher","subChild_1","accessProp","cacheVal","cachedValue","childs_2","isService","services","applyMixins","derivedClass","baseClass","getOwnPropertyNames","ComplexBase","stringCompiler","Inject","compile","templateElement","CSPTemplate","cEle","actTemplate","actData","rele","DropDownListComponent","statelessTemplateProps","immediateRender","isReactMock","ComboBoxComponent","AutoCompleteComponent","MultiSelectComponent","ListBoxComponent","DropDownTreeComponent","MentionComponent","demosLink","toc","platformMapper","MainHeader","React","Component","super","dropObj","filterData","dropName","dropId","dropField","onFilterVersion","onFilterCreated","ajax","Ajax","datas","VersionLists","SiteContainer","created","styled","withConfig","displayName","componentId","theme","brand","ButtonComponent","CheckBoxComponent","RadioButtonComponent","SwitchComponent","ChipDirective","ChipsDirective","ChipListComponent","FabComponent","SpeedDialItemDirective","SpeedDialItemsDirective","SpeedDialComponent","SmartPasteButtonComponent","DialogButtonDirective","ButtonsDirective","DialogComponent","TooltipComponent","AccordionItemDirective","AccordionItemsDirective","AccordionComponent","ItemDirective","ItemsDirective","ToolbarComponent","ContextMenuComponent","BreadcrumbItemDirective","BreadcrumbItemsDirective","BreadcrumbComponent","CarouselItemDirective","CarouselItemsDirective","CarouselComponent","TabItemDirective","TabItemsDirective","TabComponent","TreeViewComponent","SidebarComponent","MenuItemDirective","MenuItemsDirective","MenuComponent","AppBarComponent","StepDirective","StepsDirective","StepperComponent","ButtonModelPropDirective","ButtonModelPropsDirective","ToastComponent","MessageComponent","SkeletonComponent","tData","aData","tMapper","feedback","feedBackDownResponse","gitmap","require","routes","titles","searchData","feedDlgInit","rTocInit","searchFields","pathPrefix","breadCrumPath","isApi","isMobile","demosMapper","aspApiMapper","githubMapper","ignoreApiSelect","aspRegex","urlCheckRegex","noteCheckRegex","codeBlockRegex","isAspDocs","plat","uuid","today","isNotIE","Browser","LayoutTemplate","getRouteIndex","path","searchArray","feedBackDialog","emailCheckBox","leftSideBar","rightSideBar","onFilterReleaseNotes","timeOutDelay","cusPosition","toastData","subject","image","toastFlag","cardTemplateFn","toastObjEmailCreate","toastObjEmail","closetoast","toastObj","pageContext","isReleaseNotes","h2Tags","rtoc","searchStr","history","pushState","dropClass","dropHash","removeAlert","flag1","node1","temp1","mdCnt","rightToc","setNavContent","pIndex","getPathName","fSample","lSample","prevCont","prevLink","overviewBool","nextCont","nextLink","getMobileNavContent","pathName","pathname","expandedNode","accordionIndex","expandTreeData","comp","accData","accIndex","accor","tmData","tempExpanded","tChild","tmChild","expandAccordion","tocAccordion","renderBreadCrumb","breadCrumbData","bread","subDir","lastBread","breadCrumbElem","breadDirElem","onclick","detach","clearSelect","route","treeMapper","gcseSearch","tocActive","expanding","accClick","tabs","createInnerTab","selecting","tabSelecting","previewContent","spanElement","frameHeight","iframeHeight","renderTab","rightTocSelect","selectedToc","configureHamburger","configureRightSideBar","configureMobileSearch","dropEle","loadingIcon","releaseFilter","leftTocSearch","editPath","gitPath","docClick","hash","setHeaderClick","ScrollToc","removeOverlay","closeBtn","closeSearchResult","onscroll","onkeyup","scrollTo","apilnk","api","getUuid","getCookie","loadTimeOffset","estTimeOffset","jan","jul","timeUTC","timeEST","cookieName","cookieValue","setMonth","expires","toUTCString","cookie","createCookie","docOverlay","headTags","head","closeRightSideBar","toggleMobileSearch","mobileSearchIcon","bool","mobileRightToc","selectTree","selectAcrdn","activeElem","searchSelect","navToPath","rightTocHighlight","mdContent","selctedElem","hEle","checkVisibilty","headEle","pageTop","pageBottom","elementTop","elementBottom","scrollIntoView","feedBackUp","FeedBack","feedbackTest","UUID","Feedback","IsFeedbackProvided","$","Animation","scrollTopMove","resetFeedBackDown","chbxs","chbx","checked","tArea","feedBackDown","feedBackDownCancel","feedBackSubmit","validateFeedBack","myIp","ipAjax","ip","IPAddress","Email","Message","feedBackMessage","CanContact","log","countNumber","validationOk","chx","floatFocus","floatBlur","feedBackCheck","checkbox","noteSupport","mdString","matchNote","checkRegex","removeRegex","typeRegex","matchContent","typeName","note","breadCrumb","description","isRobots","headerTag","postNode","postBySlug","html","h1","newHeader","releaseClass","mdContentClass","metaRobot","Layout","Helmet","src","integrity","crossorigin","rel","data-queue","HeaderContainer","SiteHeader","LeftPane","BodyContainer","toast","newestOnTop","timeOut","onScroll","dangerouslySetInnerHTML","__html","nugetVersion","NavButtons","NavButton","onClick","RightToc","cx","cy","fill","strokeWidth","strokeMiterlimit","buttonModel","isPrimary","isModal","showCloseIcon","dialog","onBlur","class","cookies","refPath","navPath","navigate","TreeView","onhover","srcElem","isIcon","accItem","accIndElem","pathId","aPath","innerTabs","jsxFile","tbitems","file","copyCode","Tooltip","closeDelay","inTab","copyElem","textArea","execCommand","urlCheck","sitePadding","contentWidthLaptop","accentDark","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","noop","env","argv","versions","addListener","once","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","factory","nullptn","formatptn","colonptn","cursorptn","transformptn","animationptn","propertiesptn","elementptn","selectorptn","andptn","escapeptn","invalidptn","keyframeptn","plcholdrptn","readonlyptn","beforeptn","afterptn","tailptn","whiteptn","pseudoptn","writingptn","supportsptn","propertyptn","selfptn","pseudofmt","dimensionptn","imgsrcptn","webkit","moz","column","line","cascade","compress","semicolon","preserve","plugins","plugged","should","unkwn","keyed","nscopealt","nscope","depth","bracket","comment","parentheses","quote","first","second","tail","trail","peak","counter","atrule","pseudo","caret","invert","eof","eol","chars","out","flat","delimited","proxy","supports","vendor","l","isolate","selectors","third","declare","parents","at","stylis","ns","output","minify","use","plugin","hyphenate","msPattern","string","for","h","m","w","z","u","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","originalModule","webpackPolyfill","accent","lightGrey","darkGrey","ink","errorRed","codeEditBlue","codeEditGreen","MainLayout","getLocalTitle","favicon","siteTitle","ThemeProvider","objA","objB","compare","compareContext","keysA","keysB","bHasOwnProperty","valueA","valueB","_uppercasePattern","dropDownBaseClasses","rtl","noData","grouping","virtualList","DropDownBase","preventChange","isPreventChange","addedNewItem","isAddNewItemTemplate","isVirtualizationEnabled","isCustomDataUpdated","isAllowFiltering","virtualizedItemsCount","isCheckBoxSelection","remoteDataCount","isRemoteDataUpdated","isIncrementalRequest","virtualSelectAll","incrementalQueryString","incrementalPreQueryString","getInitialData","preventPopupOpen","virtualSelectAllState","CurrentEvent","isDynamicData","isPrimitiveData","checkValueCase","isTextByValue","dataSource_1","checkingAccent","checkIgnoreCase","getItemValue","checkNonIgnoreCase","itemValue","compareValue_1","textItem","typedText","templateCompiler","baseTemplate","checkTemplate","exception","tempaltecheck","noDataElement","liElem","Text","componentLocale","updateVirtualItemIndex","currentSkeletonCount","skeletonUpdated","retainSkeleton","listContainerHeight","actualCount","heightDimension","translateY","isSkeletonCountChange","isContainSkeleton","isContainVirtualList","totalSkeletonCount","skeleton","shape","setEnableRtl","bindEvent","jsonElement","setListData","renderItemsBySelect","isSelectGroupCheck","isGroupChecking","option","getJSONfromOption","optionGroup","updateFields","category","options_1","scrollTimer","itemTemplateId","valueTemplateId","groupTemplateId","isWhereExist_1","emptyDataRequest","isReOrder","groupTemplate","renderGroupTemplate","bindChildItems","updatePopupPosition","virtualSelectAllData","virtualSelectionAll","updateDataList","updatePopupState","updateRemoteData","remainingItems","updateListValues","raiseDataBound","objectToFind","findNode","listArr","dataBoundEventArgs","spliceData","listElements","templateListItem","createListItemFromArray","createListItemFromJson","postRender","listElement","updateVirtualizationProperties","filtering","isCheckbox","listEle","groupTemplateID","headerItems","groupcheck","groupValue","tempHeaders","createListItems","getSortedDataSource","groupDataSource","fieldValues","ariaAttributes","groupItemRole","setFixedHeader","isDownkey","computedHeight","getValidLi","computedMarginValue","marginValue","liHeight","topIndex","virtualListCount","isCount","updateGroupHeader","returnExactCount","updateGroupFixedHeader","isCheckBoxUpdate","incrementalUlElement","incrementalListData","updateListElements","createVirtualContent","itemcheck","renderContentTemplate","borderWidth","defaultView","firstLi","textField","getDataSource","addSorting","getIndexByValueFilter","evt","updateSelectElementData","updateSelection","updateDataSource","setZIndex","isEmptyData","rippleModel","wrapperElement","removeScrollEvent","newList","isListboxEmpty","selectedItemValue","itemText","itemCheck","addItemTemplate","updateAddItemList","listGroupItem","wrapperInitialize","tag","WRAPPER","getTextNode","childnode","createCheckBox","enableRipple","rippleSpan","isCenterRipple","labelSpan","disableHtmlEncode","rippleMouseHandler","setHiddenInput","IconPosition","FabPosition","cssClassName","Button","tempContent","setIconCss","controlStatus","btnClickHandler","FRAME","RIPPLE","containerAttr","CheckBox","isMouseClick","clickTriggered","validCheck","isInitialize","isInterAction","indeterminate","changeEventArgs","updateVueArrayModel","focusHandler","getLabel","initialCheckedValue","setDisabled","setText","keyUpHandler","labelMouseDownHandler","labelMouseLeaveHandler","labelMouseUpHandler","rippleElem","labelWrap","updateHtmlAttributeToWrapper","changeHandler","formElem","init","ATTRIBUTES","RadioButton","RadioButton_1","updateChange","radioGrp","getRadioGroup","angularValue","radioWrap","getSelectedValue","updateHtmlAttribute","formControlName","textLabel","rippleLabel","Switch","isDrag","isWireEvents","handle","beforeChangeEventArgs","initialSwitchCheckedValue","onLabel","offLabel","setLabel","switchInner","control","rippleHandler","mouseLeaveHandler","rippleTouchHandler","eventType","onText","offText","switchFocusHandler","switchMouseUp","aTouchY","yDiff","aTouchX","xDiff","clientX","bTouchX","bTouchY","delegateMouseUpHandler","delegateKeyUpHandler","classNames","chipSet","avatar","deleteIcon","multiSelection","singleSelection","active","iconWrapper","chipList","customIcon","chipDrag","dragAndDrop","dropRestricted","cloneChip","dragIndicator","ChipList","multiSelectedChip","ChipList_1","chipType","chips","setRtl","selectedChips","rippleFunction","dragCollection","enableDraggingChips","clonedChipElement","chipData","find","dragStartArgs","draggedItemData","dropTarget","draggingArgs","draggingIconEle","allowExternalDragging","allowExternalDrop","checkInstance","isInstanceMatched","updatedInstance","setIcons","currentInstance","outOfDragArea","isTargetInside","isDroppable","closestChip","closestDistance","Infinity","newIndex","getCurrentInstance","dragAreaCheck","droppedRect","allChips","rect_1","sqrt","pow","chipsDistance","getChipsDistance","cloneRect","scrollX","isString","isHtmlElement","dragAreaElement","firstChipClientRect","secondChipClientRect","firstChipLeft","secondChipRight","firstChipWidth","secondChipLeft","chipContainer","originalIndex","isInstanceChanged","indicatorRect","topOffset","leftOffset","rightOffset","chipRect","nextChipIndex","currentChipList","dropChip","instanceChanged","draggedChip","newChips","chipCreation","chipListArray","attributeArray","fieldsData","getFieldValues","attributesValue","chipArray","elementCreation","avatarIconCss","avatarText","leadingIconCss","enableDelete","chipEnabled","trailingIconCss","leadingIconUrl","trailingIconUrl","chipAvatarElement","chipIconElement","backgroundImage","chipTextElement","templateWrapper","templateContent","chipdeleteElement","chipIconsElement","chipElement","chipModel","chipsData","fieldData","selectionType","callFromProperty","chipNodes","chipValue","chipElements","selectionHandler","chipElements_1","chipCollection_1","deleteHandler","getSelectedChips","texts","Indexes","focusInHandler","del","chipDataArgs","chipData_1","deletedItemArgs","selectedItemArgs","clickedItemArgs","updateSelectedChips","chipListEle","chipCollIndex","chipCollValue","deletedChipData","removeMultipleAttributes","SpeedDialMode","LinearDirection","RadialDirection","SpeedDialAnimationEffect","Fab","initializeFab","checkTarget","setVisibility","isFixed","isRight","clearPosition","topPosition","bottomPosition","leftPosition","rightPosition","SDHIDDEN","FIXEDSD","HOVERSD","RADIALSD","LINEARSD","TEMPLATESD","SDPOPUP","SDUL","SDLI","SDACTIVELI","SDOVERFLOW","SDTOP","SDBOTTOM","SDRIGHT","SDLEFT","SDTOPLEFT","SDTOPRIGHT","SDHORZDIST","SpeedDialAnimationSettings","RadialSettings","SpeedDialItem","SpeedDial","isClock","isControl","focusedIndex","esc","validateDirection","fab","SPEEDDIAL","openIconCss","popupTemplate","bodyClickHandler","opensOnHover","wireFabHover","wireFabClick","wirePopupEvents","popupKeyboardModule","popupKeyActionHandler","documentKeyboardModule","popupClick","popupMouseLeaveHandle","fabClick","mouseOverHandle","mouseLeaveHandle","setPopupContent","setPositionProps","overlayEle","hidePopupEle","showPopupEle","appendTemplate","createUl","templateContainer","getTemplateString","stringContent","updatePopupTemplate","clearItems","updatePositionProperties","popupUlEle","SDLIICON","textSpan","triggerItemClick","clearHorizontalPosition","setRadialPosition","setHorizontalPosition","setLinearHorizontalPosition","focusLastElement","focusFirstElement","focusLeftRightElement","focusLinearElement","focusUpDownElement","setFocus","isLeftUp","focusPrevElement","focusNextElement","isLeft","isradialTop","isradialRight","preEle","setLinearPosition","setMaxSize","actualLinDirection","vertDist","elementOffSetHeight","isMiddle","setRight","setLeft","elementOffSetWidth","isCenter","horzDist","yoffset","xoffset","setCustomRadialPosition","viewportWidth","viewportHeight","targetEleWidth","setRadialCorner","getActualRange","availableAngle","endAngle","startAngle","perAngle","angle","radialSettings","isClockwise","checkAngleRange","switchVal","check0","checkAngle","isStart","clearOverflow","closeAnimation_1","eleArray_1","timeOutInterval_1","animateElement_1","curIndex","startHide","endHide","index_1","toggleOverlay","openAnimation_1","eleArray_2","timeOutInterval_2","animateElement_2","startShow","endShow","index_2","closeIconCss","removeOverlayEle","updatePopupItems","handleResize","unwireFabHover","unwireFabClick","unwirePopupEvents","fabProplist","fabModel","SmartPasteButton","smartPasteBtnClickHandler","formFields","clipboardContent","systemRole","getFormFields","getClipboardContent","allowedValues","toLocaleDateString","year","month","day","formatFields","messages","temperature","topP","maxTokens","frequencyPenalty","presencePenalty","stop","aiAssistHandler","setFormFields","fieldOutput","responseData","parts","HTMLInputElement","radioButton","findRadioButton","updateElementValue","radioButtons","radio","getElementDescription","exactMatch","partialMatch","triggerBeforeChange","bubbles","fromSmartComponents","triggerAfterChange","isEjsControl","responseValue","isResponseValue","HTMLSelectElement","optionText_1","uniqueCount","HTMLTextAreaElement","isFieldIgnore","isRadioButton","identifier","FieldDescription","fieldInfo","radioDescription","navigatorObj","customClipboard","clipboard","readText","insertRule","toSheet","block","delimiter","CONTAINER","MESSAGE","PROGRESS","CLOSEBTN","ToastPosition","ButtonModelProps","ToastAnimations","ToastAnimationSettings","Toast","toastCollection","needsID","refElement","isBlazorServer","screen","progressObj","intervalId","contentTemplate","toastTemplate","initRenderClass","collectionObj","templateChanges","toastContainer","getContainer","setPositioning","isToastModel","toastEle","setWidthHeight","setCSSClass","personalizeToast","templateRendering","setProgress","setAria","appendToTarget","showToast","hideAnimation","hideToast","clearContentTemplate","clearToastTemplate","fetchEle","sanitizeHelper","beforeSanitize","serializeValue","interactionType","destroyToast","prob","tempVar","tmpArray","clo","clearProgress","removeToastContainer","clearContainerPos","customPosition","toastBeforeClose","hideAnimate","toastClose","toastBeforeCloseArgs","setIcon","setTitle","setContent","actionButtons","closeIconTitle","hideEta","maxHideTime","timeOutId","extendedTimeout","toastHoverAction","delayedToastProgress","showProgressBar","progressBarEle","updateProgressBar","percentage","progressDirection","ICON","titleEle","msgContainer","contentEle","isContent","tempEle_1","appendMessageContainer","actionBtnContainer","actionBtn","btnDom","toastBeforeOpen","toastBeforeOpenArgs","displayToast","clickArgs","clickToClose","isCloseIcon","toastClickArgs","showAnimate","toastOpen","toastContainerElement","untilToastsModel","Severity","Variant","SkeletonType","ShimmerEffect","initialRender","innerContent","msgElement","setCloseIcon","setSeverity","setVariant","setVisible","iconElement","closeIcon","txtElement","severity","variant","oldCssClass","closeMessage","keyboardHandler","TEXTSHAPE","CIRCLESHAPE","SQUARESHAPE","RECTANGLESHAPE","WAVEEFFECT","PULSEEFFECT","FADEEFFECT","VISIBLENONE","Skeleton","updateDimension","updateShape","updateEffect","updateVisibility","shapeCss","shimmerEffect","siteTitleAlt","siteLogo","siteUrl","siteDescription","userLinks","iconClassName","copyright","themeColor","backgroundColor","popupRect","parentDocument","targetContainer","calculatePosition","currentElement","targetValues","posX","posY","setPosx","getElementHCenter","setPosy","getElementTop","getElementRight","getElementVCenter","getElementLeft","getElementBottom","getBodyScrollTop","getBodyScrollLeft","fit","viewPortElement","elemData","containerWidth","getTargetContainerWidth","getViewPortWidth","containerLeft","ContainerLeft","containerRight","ContainerRight","overLeft","overRight","containerHeight","getTargetContainerHeight","getViewPortHeight","containerTop","ContainerTop","containerBottom","ContainerBottom","overTop","overBottom","isCollide","elemOffset","elementRect","yAxis","topCollideCheck","xAxis","leftCollideCheck","topSide","rightSide","leftSide","bottomSide","flip","fixedParent","tEdge","TL","TR","BL","BR","eEdge","oldVisibility","edge","updateElementData","leftFlip","deepCheck","collideSide","topFlip","scaleX","scaleY","tranformElement","getTransformElement","transformStyle","matrix","DOMMatrix","zoom","bodyZoom","getZoomValue","setPopup","zoomValue","eStatus","getTargetContainerLeft","getTargetContainerTop","documentReact","PositionData","CLASSNAMES","Popup","wireScrollEvents","unwireScrollEvents","orientationOnChange","getRelateToElement","getScrollableParent","scrollRefresh","relateToElement","targetVisible","isElementOnViewport","targetInvisibleStatus","scrollElement","scrollParents","parent_3","isElementVisible","checkGetBoundingClientRect","win","windowView","outerWidth","outerHeight","elementView","parent_4","reposition","relateToElem","checkFixedParent","parentDisplay","getAnchorPosition","anchorEle","eleRect","anchorRect","anchorPos","fixedElement","tempAnchor","calculateRelativeBasedPosition","callFlip","viewPortRect","horz","vert","relativeElement","zIndexElement","getZindexPartial","showAnimation","parentStyle","eleStyle","overflowRegex","overflowY","parentZindex","childrenZindex","siblingsZindex","finalValue","currentZindexValue","selectedHandler","containerElement","resizeWestWidth","elementClass","RESTRICT_LEFT","dialogBorderResize","originalWidth","originalHeight","originalX","originalY","originalMouseX","originalMouseY","resizeStart","resizeEnd","previousWidth","setBorderResizeElm","calculateValues","borderBottom","getDOMElement","domElement","resizers","onMouseDown","onTouchStart","borderResizers","getEventType","onMouseMove","onMouseUp","touchMoveEvent","touchEndEvent","dialogResizeElement","resizeTowards","resizeSouth","resizeNorth","resizeWest","resizeEast","getClientRectValues","containerRectValues","documentHeight","calculateValue","currentpageY","targetRectValues","calculatedHeight","borderValue","topWithoutborder","targetTop","calculatedTop","boundaryRectValues","currentHeight","rectValues","documentWidth","calculatedWidth","left_1","removeResize","handlers","ButtonProps","AnimationSettings","DLG_TARGET","SCROLL_DISABLED","FULLSCREEN","Dialog","enableResize","setResize","isModelResize","getMinHeight","initializeValue","dlgClosedBy","headerContent","allowMaxHeight","preventVisibility","clonedEle","closeIconClickEventHandler","dlgOverlayClickEventHandler","overlayClickEventArgs","focusContent","checkPositionData","updatePersistData","isNumberValue","getEle","computedHeaderHeight","computedFooterHeight","footerEle","minimumHeight","onResizeStart","dialogObj","dlgContainer","setPopupPosition","getTargetContainer","onResizing","onResizeComplete","computedWidth","resizeHandles","directionValue","resizeBegin","resizing","resizeComplete","boundary","directions","createResize","wireWindowResizeEvent","unWireWindowResizeEvent","keyDown","ftrTemplateContent","focusableElements","buttonIndex_1","isTagName","isContentEdit","closeOnEscape","primaryButtonEle","isBlazorServerRender","setMaxHeight","setzIndex","calculatezIndex","setTargetContent","setHeader","renderCloseIcon","setButton","allowDragging","setAllowDragging","setIsModal","parentEle","resetResizeIcon","openEventArgs","dlgOverlay","unBindEvent","storeActiveElement","positionChange","setOverlayZindex","targetValue","dialogConHeight","resizeIcon","zIndexValue","isDragScroll","abort","bindEvents","dragElement","IsDragStop","buttonContent","buttonType","footerBtn","buttonClickHandler","isFlat","innerContentElement","templateValue","fromElements","dialogItem","createHeaderContent","closeIconBtnObj","DLG_CLOSE_ICON","oldCSSClass","getValidFocusNode","disableElement","getAutoFocusNode","validNode","elementMatch","webkitMatchesSelector","msGetRegionContent","userAgent","updateSanitizeContent","updateIsModal","unWireButtonEvents","dialogOpen","setPopupZindex","currentzIndex","windowResizeHandler","removeAllChildren","boundWindowResizeHandler","getDimension","isFullScreen","fullScreen","beforeOpenArgs","openAnimation","closedBy","closeAnimation","scrollingElement","getButtons","DialogUtility","createDialog","dialogObject","formOptions","isDraggable","formButtonModel","buttonPropModel","buttonProps","alert","alertDialogObj","dialogElement","alertButtonModel","okButton","setAlertButtonModel","confirm","confirmDialogObj","okButtonModel","cancelButtonModel","cancelButton","setConfirmButtonModel","mouseMoveEvent","mouseMoveTarget","isBodyContainer","formatPosition","tooltipPositionY","tooltipPositionX","renderArrow","setTipClass","tip","ARROW_TIP","tipClass","ARROW_TIP_OUTER","ARROW_TIP_INNER","tooltipEle","elePos","mouseTrail","getTooltipPosition","openPopupHandler","closePopupHandler","getScalingFactor","scalingFactors","elementsWithTransform","matrixValues","parentWithZoomStyle","offsetPos","calculateTooltipOffset","collisionPosition","calculateElementPosition","collisionLeft","collisionTop","collisionFlipFit","findTarget","needTemplateReposition","tooltipEventArgs","tooltipAfterCloseEventArgs","xScalingFactor","yScalingFactor","tipWidth","tipHeight","tooltipEleWidth","tooltipEleHeight","arrowEle","tipAdjust","tipHeightAdjust","tipWidthAdjust","tooltipEleRect","arrowEleRect","showTipPointer","updateTipPosition","selEle","removeList","adjustArrow","leftValue","topValue","tipPosExclude","tooltipWidth","tooltipHeight","arrowInnerELe","tipPointerPosition","POINTER_ADJUST","tooltipContent","enableHtmlParse","tempFunction","tipClose","touchStartEvent","onStickyClose","existingCloseIcon","addDescribedBy","describedby","removeDescribedBy","orgdescribedby","tapHoldHandler","autoCloseTimer","targetHover","touchEndHandler","targetClick","mouseEvent","hideTooltip","targetList_1","ctrlId","target_1","restoreElement","mouseMoveBeforeOpen","mouseMoveBeforeRemove","showTimer","hideTimer","openDelay","beforeRenderArgs","beforeRenderCallback","TOOLTIP_WRAP","tooltipBeforeRender","tooltipAfterRender","appendContainer","ctrlObj","beforeOpenCallback","wireMouseEvents","viewContainerRef","horizontal","affectedPos","checkCollideTarget","newpos","collidedPosition","elePosVertical","elePosHorizontal","getOffSetPosition","elePosition","arrowleft","positionString","newPos","offsetType","isTooltipOpen","tooltipHide","popupHide","unwireMouseEvents","tooltipHover","tooltipMouseOut","onMouseOut","enteredElement","checkForTooltipElement","tooltipElementMouseOut","eventPageX","eventPageY","colpos","touchEnd","triggerList_1","getTriggerList","windowResizeBound","keyDownBound","touchEndBound","scrollWheelBound","targetList","targetsList","targetList_2","triggerList_2","unwireFocusEvents","targetList_3","triggerList_3","currentTarget_1","globalTimeOut","spinTemplate","spinCSSClass","createSpinner","internalCreateElement","radius","makeElement","spinnerContainer","spinnerInnerContainer","inner_wrap","create_spinner_container","getTheme","defaultSize","calculateRadius","setTheme","createLabel","replaceContent","innerContainer","svg","uniqueID","random_generator","create_material_element","mat_calculate_attributes","createMaterialSpinner","createMaterial3Spinner","create_fabric_element","fb_calculate_attributes","createFabricSpinner","createFluentSpinner","createFluent2Spinner","svgBoot","createElementNS","bootCircle","CLS_SPINCIRCLE","defaultRadius","create_bootstrap_element","startArc","defineArcPoints","circleEle","boot_calculate_attributes","createBootstrapSpinner","createHighContrastSpinner","createBootstrap4Spinner","createBootstrap5Spinner","createTailwindSpinner","createTailwind3Spinner","innerCon","themeClass","svgFabric","fabricCirclePath","fabricCircleArc","svgMaterial","matCirclePath","animateMaterial","spinnerInfo","globalInfo","previousId","startTime","diameter","strokeSize","getStrokeSize","rotate","mat_animation","getDashOffset","updatePath","createCircle","easeAnimation","transformOrigin","drawArc","PI","timestamp","timecount","innerConainer","centerX","centerY","circle","defineCircle","endArc","defineArc","radians","cos","showHideSpinner","isHide","spinnerWrap","spinWrapCollection","inner","svgEle","isAnimate","globalObject","globalVariables","timeOutVar","startMatAnimate","series","increment","rotation","formSeries","toFixed","boot_animate","animateBootstrap","LABELTOP","LABELBOTTOM","createFloatLabel","searchWrapper","floatLinelement","floatLabelElement","encodePlaceholder","updateFloatLabelState","componentWrapper","placeholderText","placeholderElement","floatLine","setPlaceHolder","floatLabelFocus","floatLabelBlur","_typeof","classCallCheck","Constructor","createClass","descriptor","protoProps","staticProps","_extends","inherits","subClass","superClass","objectWithoutProperties","possibleConstructorReturn","self","ReferenceError","StyledComponentsError","_Error","_len2","interpolations","_key2","flatten","chunks","executionContext","reduce","ruleSet","chunk","styledComponentId","nextChunk","isValidElement","elementName","objToCss","prevKey","COMMENT_REGEX","stylisSplitter","global","keyframe","parsingRules","returnRulesPlugin","parsedRules","parseRulesPlugin","rule","stringifyRules","rules","flatCSS","splitByRules","isStyledComponent","getAlphabeticChar","generateAlphabeticName","interleave","strings","EMPTY_ARRAY","freeze","EMPTY_OBJECT","_len","_key","SC_ATTR","CONTEXT_KEY","IS_BROWSER","SC_COMPONENT_ID","extractComps","maybeCSS","existingComponents","matchIndex","_ref","nextComp","cssFromDOM","getNonce","addNameForId","names","resetIdNames","hasNameForId","stringifyNames","sheetForTag","sheet","styleSheets","ownerNode","safeInsertRule","cssRule","maxIndex","cssRules","err","makeTextMarker","addUpUntilIndex","sizes","totalUpToIndex","wrapAsHtmlTag","additionalAttrs","nonce","Boolean","wrapAsElement","_props","getIdsFromMarkersFactory","markers","makeServerTagInternal","namesArg","markersArg","insertMarker","cssForId","namesClone","cloneNames","markersClone","getIds","insertRules","removeRules","sealed","styleTag","toHTML","makeTag","tagEl","forceServer","getImportRuleTag","makeStyleTag","extractImport","usedImportRuleTag","insertIndex","injectedRules","importRules","cssRulesSize","mayHaveImport","removalIndex","lowerBound","deleteRule","deleteRules","makeSpeedyTag","SPLIT_REGEX","MAX_SIZE","_StyleSheetManager$ch","sheetRunningId","master","StyleSheet","importRuleTag","firstTag","tags","tagMap","deferred","rehydratedNames","ignoreRehydratedNames","capacity","clones","rehydrate","els","extracted","isStreamed","nodesSize","elNames","elNamesSize","extractedSize","rehydrationTag","immediateRehydration","cb","called","_extracted$i","makeRehydrationTag","ids","newTag","sealAllTags","lastEl","getTagForId","hasId","deferredInject","inject","toReactElements","StyleSheetManager","_Component","getChildContext","sheetInstance","componentWillMount","Children","only","childContextTypes","oneOfType","instanceOf","ServerStyleSheet","isRequired","masterSheet","closed","complete","collectStyles","getStyleTags","getStyleElement","interleaveWithNodeStream","readableStream","determineTheme","fallbackTheme","defaultProps","isDefaultTheme","escapeRegex","dashesAtEnds","getComponentName","isTag","ATTRIBUTE_REGEX","isCustomAttribute","_contextShape","_ThemeProvider$contex","CHANNEL","CHANNEL_NEXT","CONTEXT_CHANNEL_SHAPE","func","subscribe","unsubscribe","contextShape","_babelHelpers$extends","unsubscribeToOuterId","initialState","_this2","outerContext","outerTheme","broadcast","publish","nextState","listener","currentId","unsubID","_this3","subscriber","unsubscribeId","componentWillReceiveProps","passedTheme","contextTypes","STATIC_EXECUTION_CONTEXT","modifiedContextShape","identifiers","BaseStyledComponent","_temp","generatedClassName","unsubscribeFromContext","buildExecutionContext","acc","getPrototypeOf","hasInInheritanceChain","generateAndInjectStyles","_constructor","componentStyle","styleSheet","warnTooManyClasses","isStatic","styledContext","setState","nextTheme","_generatedClassName","prevState","innerRef","_constructor2","isTargetTag","baseProps","propsForElement","murmurhash","areStylesCacheable","isHMREnabled","hot","domElements","replaceWhitespace","ComponentStyle","nameGenerator","generateRuleHash","isStaticRules","lastClassName","generateName","_ComponentStyle","constructWithOptions","componentConstructor","_constructWithOptions","StyledComponent","createStyledComponent","_options$isClass","isClass","_options$displayName","generateDisplayName","_options$componentId","_displayName","parentComponentId","nr","generateId","_options$ParentCompon","ParentComponent","extendingRules","_ParentComponent","withComponent","previousComponentId","optionsToCopy","newComponentId","newOptions","rulesFromOptions","newRules","extend","_StyledComponent","_keyframes","_injectGlobal","styledComponent","_styled","_interopDefault","React__default","shallowEqual","_defineProperty","canUseDOM","reducePropsToState","handleStateChangeOnClient","mapStateOnServer","WrappedComponent","mountedInstances","emitChange","SideEffect","peek","rewind","recordedState","_proto","getDisplayName","instances","uid","isBlazorPlatform","createInstance","classFunction","arrayParam","Function","unbind","Uint16Array","msCrypto","secret","combineArray","messageHandler","postMessage","isUndefined","isNullOrUndefined","deleteObject","containerObject","isObject","temrObj","tempProp","copied","deep","copy","isArrayChanged","blazorEventExtend","isBlazor","Event","getUniqueID","definedName","debounce","eventFunction","later","compareElementParent","formatUnit","getElement","evaluate","XPathResult","FIRST_ORDERED_NODE_TYPE","singleNodeValue","getInstance","defaultNumberingSystem","defaultNumberSymbols","latnNumberSystem","ParserBase","getMainObject","cName","getNumberingSystem","numberingSystems","reverseObject","getSymbolRegex","regexStr","getSymbolMatch","matchKeys_1","constructRegex","convertValueParts","getDefaultNumberingSystem","nSystem","getCurrentNumericOptions","numberSystem","needSymbols","blazorMode","cur","digits","numericPair","regExp","numberParseRegex","numericRegex","symbolNumberSystem","symbolMatch","getNumberMapper","isNumber","numberSymbols","timeSeparator","latnNumberSystem_1","nPair","nRegex","blazorCurrencyData","defaultCurrencyCode","blazorCultureFormats","IntlBase","negativeDataRegex","customRegex","latnParseRegex","fractionRegex","defaultCurrency","patternRegex","patternMatch","'","dateConverterMapper","islamicRegex","firstDayMapper","formatRegex","currencyFormatRegex","curWithoutNumberRegex","typeMapper","0","1","getResultantPattern","dateObject","isIslamic","blazorCulture","resPattern","iType","compareBlazorDateFormats","basicPatterns","dPattern","tPattern","getDependables","cldr","culture","calendartype","parserObject","blazorDefaultObject","defaultObject","numericObject","dateString","getSymbolPattern","numSystem","isAccount","ConvertDateToWeekFormat","convertMapper","tempString","formatOptions","curFormatMapper","getProperNumericSkeleton","patternMatcher","fractionDigits","getFormatData","needFraction","cSymbol","fractionOnly","nData","nlead","nend","changeCurrencySymbol","groupPattern","fraction","fmatch","minimumFraction","maximumFraction","sym","getCurrencySymbol","currencyCode","altSymbol","ignoreCurrency","customNumberFormat","dOptions","numObject","cOptions","minimumFractionDigits","maximumFractionDigits","integerPart","spaceCapture","spaceGrouping","useGrouping","fractionPart","minimumIntegerDigits","isCurrencyPercent","isCustomFormat","currencySymbol","isCurrency","percentSymbol","symbolPattern","numberMapper","groupSeparator","groupData","getGroupingDetails","symbol","part","loc","processSymbol","fractionDigitsPattern","minDigits","maxDigits","diff","minimumIntegerPattern","integer","groupingPattern","dateParseRegex","monthIndex","3","4","5","days","C","N","E","customFormat","formatSplit","minusSymbol","getDateSeparator","dateObj","getActualDateTimeFormat","isExcelFormat","dependable","calendar","actualPattern","tLength","timeZonePattern","numMapper","timezone","hourFormat","gmtZeroFormat","getTimeZoneValue","gmtFormat","getActualNumberFormat","isExcel","minFrac","parseOptions","custom","numrericObject","curMatch","curCode","currency","hasNegativePattern","cPattern","getWeekData","firstDay","iCulture","replaceBlazorCurrency","aCurrency","rCurrency","iCurrency","pData_1","getWeekOfYear","firstDayOfWeek","weeknum","newYear","getDay","daynum","nday","headerRegex","async","emitError","httpRequest","XMLHttpRequest","onreadystatechange","stateChange","onLoad","onload","onProgress","onprogress","onAbort","onabort","onError","onerror","onUploadProgress","upload","setRequestHeader","failureHandler","reason","responseText","readyState","statusText","getResponseHeader","responseHeaders","getAllResponseHeaders","Fetch","contentTypes","Request","triggerEvent","fetchResponse","fetch","ok","responseType","returnVal","REGX_MOBILE","REGX_IE","REGX_IE11","REGX_IOS","REGX_IOS7","REGX_ANDROID","REGX_WINDOWS","REGX_VERSION","REGX_BROWSER","OPERA","EDGE","CHROME","PANTHOMEJS","SAFARI","WEBKIT","MSIE","MOZILLA","browserDetails","extractBrowserDetail","browserInfo","clientInfo","language","getEvent","events","isPointer","isTouch","move","getTouchStartEvent","getTouchEndEvent","getTouchMoveEvent","getTouchCancelEvent","isSafari","regX","maxTouchPoints","Capacitor","getPlatform","uA","isMSPointer","isWebView","cordova","PhoneGap","phonegap","forge","touchCancelEvent","EventHandler","addOrGetEventData","__eventList","bindTo","intDebounce","debounceListener","eventData","copyData","parseValue","eventData_1","SVG_REG","getClassList","classList_1","curClass","removeClass","classList_2","classArr","isEval","docFrag","executeScript","NodeList","script","iKey","needsVDOM","querySelectId","splitId","setId","setStyleAttribute","addClasses","removeClasses","msMatchesSelector","proxyToRaw","Observer","ranArray","boundedEvents","cntxt","notExist","isHandlerPresent","indexLocation","argument","errorHandler","blazorCallback","curObject_1","objs","isTrigger","obj_1","dateReviver","eventsArr","curContext","detectFunction","randomId","boundedEvents_1","Base","isComplexArraySetter","oldProperties","bulkChanges","ignoreCollectionWatch","finalUpdate","childChangedProperties","addInstance","callChildDataBind","newChanges","oldChanges","updateModel","moduleClass","curKey","defaultValue","getObjectArray","isSetter","isFactory","curType","propertyGetter","propertySetter","complexGetter","complexSetter","complexArrayGetter","defCollection","ignore","controlParent","extendFunc","complexArrayDefinedCallback","complexArraySetter","oldValueCollection","newValCollection","dFunc","keyString","getParentKey","newValueParse","getArrayModel","ejsAction","isControlParent","arrayFunction","modelObject","Property","propertyDescriptor","addPropertyCollection","Complex","Collection","eventDescriptor","finalContext","getParentContext","curText","NotifyPropertyChanges","classConstructor","propertyType","propList","complexProps","colProps","propNames","complexPropNames","colPropNames","eventNames","ease","easeIn","easeOut","easeInOut","elasticInOut","elasticIn","elasticOut","Animation_1","getModel","elements_1","element_1","delayAnimation","animationId","frameId","animationMode","GlobalAnimationMode","Disable","timerId","prevTimeStamp","startAnimation","avg","rippleEffect","rippleOptions","rippleFlag","getRippleModel","isRippleEnabled","rippleUpHandler","rippleLeaveHandler","rippleElement","removeRipple","rippleElements","opacity","HijriParser","ModuleLoader","loadedModules","moduleList","reqLength","clearUnusedModule","modl","moduleList_1","modName","isModuleLoaded","moduleObject","memberName","getMemberName","isProperty","loadedModule","clean","getNonInjectedModules","usedModules","arg","removableModule_1","ChildProperty","isParentArray","updateTimeOut","changeTime_1","restrictServerDataBind","isSaveChanges","parentKey","complexKeys","isFinal","valueLength","dateCorrection","getHijriDate","gDate","tMonth","tYear","yPrefix","julilanOffset","julianNumber","tempMonth","modifiedJulianDate","cyc","iy","im","tempDay","iln","ii","hYear","hmonth","hDate","toGregorian","julianDate","gDay","gMonth","gYear","abbreviateRegexGlobal","weekdayKey","timeSetter","H","datePartMatcher","DateFormat","dateFormat","dateSeperator","patternMatch_1","weekday","designator","eText","era","intDateFormatter","dObject","getCurrentDateValue","matches_1","length_1","curval","curvalstr","processNumber","curstr","curlength","desig","dec","retu","pattern_1","checkTwodigitNumber","tVal","curPattern","ishour","errorText","NumberFormat","numberFormatter","fOptions","symbols","isPercent","groupOne","checkValueRange","maximumSignificantDigits","minimumSignificantDigits","mval","mfrac","lfrac","isFinite","intNumberFormatter","primary","secondary","val1","val2","checkbothExist","isFraction","decide","dint","str1","str2","checkRange","zeroData","fValue","processSignificantDigits","processFraction","processMinimumIntegers","decimalPart","toExponential","customPivotFormat","groupNumbers","toPrecision","level1","sep","decimalSymbol","level2","lead","decimal","setNumberFormat","latnRegex","minute","hour","milliseconds","DateParser","dateParser","numOptions","hourOnly","regexString","evalposition","gmtCorrection","zCorrectTemp","isgmtTraversed","nRegx","numbers","canUpdate","charKey","weekData","weekObject","monthData","hour12","periodValur","tzone","hpattern","parseTimeZoneRegx","parserRegex","parsedDateParts","internalDateParse","dobj","tDate","ystrig","is2DigitYear","getDateObject","setMilliseconds","setFullYear","tKeys_1","tValue","setDate","pDate","lDate","lastDay","tzValue","setMinutes","retOptions","props_1","matchString","internalNumberParser","tmatch","getZoneValue","tZone","cRegex","splitStr","ival","parseRegex","groupRegex","NumberParser","numberParser","symbolpattern","symbolRegex","infinity","getParsedNumber","isNegative","tempValue","NaN","exponent","convertMaxFracDigits","decimalSplitValue","onIntlChange","rightToLeft","cldrData","defaultCulture","Internationalization","cultureName","getDateFormat","getCulture","getNumberFormat","getDateParser","getNumberParser","formatNumber","formatDate","parseDate","parseNumber","getDatePattern","getNumberPattern","getFirstDayOfWeek","getNumericObject","symbPattern","accountURL","bypassKey","LicenseValidator","licKey","isValidated","isLicensed","errors","noLicense","trailExpired","versionMismatched","platformMismatched","invalidKey","minVersion","manager","getKey","npxManager","convertToChar","validateMsg","validateURL","getInfoFromKey","result_1","invalidPlatform","lastValue","expiryDate","expDate","currDate","licenseContent","errorDiv","getDecryptedData","atob","pkey","decryptedStr","resultArray","isNpxKey","licKeySplit","licKeySplit_1","lKey","decodeStr","buffr","decryptedKey","cArr","cArr_1","lastPageID","componentCount","lastHistoryLen","isvalid","isBannerAdded","versionBasedStatePersistence","isReactHybrid","moduleLoader","localObserver","detachUnloadEvent","injectModules","accessMount","mount","getRootElement","actualElement","getLocalData","eleId","ej2StatePersistenceVersion","attachUnloadEvent","handleUnload","mergePersistData","ignoredComponents","schedule","diagram","PdfViewer","grid","richtexteditor","treegrid","gantt","chart","accumulationchart","modulesRequired","componentName","bannerTemplate","errorBackground","createLicenseOverlay","event_2","isVDOM","triggerStateChange","currentContext","calls","isHistoryChanged","pageID","persistObj","iterateJsonProperties","ignoreList","defaultPosition","isDraggedObject","isDragged","Position","Draggable","dragLimit","Draggable_1","getDefaultPosition","diffX","prevLeft","dragProcessStarted","eleTop","tapHoldTimer","externalInitialize","diffY","parentScrollX","parentScrollY","droppables","toggleEvents","isUnWire","enableTapHold","mobileInitialize","removeTapholdTimer","tempScrollHeight","tempScrollWidth","getScrollableValues","curTarget","currentStateTarget","isDragStarted","abortSelectors","intCoord","initialPosition","relativeXPosition","relativeYPosition","intDragStart","isPreventSelect","isChangeTouch","intCordinate","styleProp","intClosest","isReplaceDragEle","currentStateCheck","calculateParentPosition","getMousePosition","getHelperElement","dragTargetElement","helperElement","parentClientRect","getProperTargetElement","bindDragEvents","setDragArea","enableTailMode","enableScrollHandler","posValue","getProcessedPositionValue","dragElePosition","getDragPosition","intDrag","intDragStop","setGlobalDroppables","elementInViewport","queryPositionInfo","docHeight","getDocumentWidthHeight","docWidth","checkTargetElement","hoverObject","triggerOutFunction","dragData","intOver","tLeft","tTop","pagex","pagey","dLeft","dTop","enableAutoScroll","skipDistanceCheck","helperWidth","helperHeight","draEleTop","draEleLeft","iTop","iLeft","isDialogEle","tempDraEleTop","isPreventScroll","getPathElements","getScrollParent","getScrollPosition","hasScroll","nodeEl","nodeEle","docScrollTop","helperClientHeight","elementLeft","elementsFromPoint","intOut","docBody","docEle","dragStopCalled","intDrop","eleWidthBound","eleHeightBound","elementArea","tborder","tpadding","lowerKey","prevStyle","elementFromPoint","oldEle","isdragscroll","dragEle","isOffsetParent","isVerticalScroll","cursorAt","currentTargetElement","draggable","draggedElement","dropIns","getDropInstance","eleInst","eleInst_1","Droppable","mouseOver","area","isDropArea","canDrop","coord","KeyboardEvents","keyPressHandler","isAltKey","isCtrlKey","isShiftKey","curkeyCode","configCollection_1","rconfig","rKeyObj","KeyboardEvents_1","getKeyConfigData","configCache","keyData","getKeyCode","L10n","controlName","localeStrings","intLocale","intGetControlConstant","currentLocale","load","localeObject","SwipeSettings","swipeRegex","touchAction","tapCount","startEvent","point","updateChangeTouches","isTouchMoved","movedDirection","startPoint","lastMovedPoint","startEventData","hScrollLocked","vScrollLocked","tStampStart","timeOutTapHold","tapHoldEvent","moveEvent","endEvent","cancelEvent","movedPoint","eScrollArgs","calcScrollPoints","startEvents","startY","getVelocity","timeOutTap","swipeFn","tap","tapThreshold","modeclear","endPoint","calcPoints","swipeArgs","tDistance","swipeSettings","swipeThresholdDistance","eSwipeArgs","defaultArgs","canTrigger","scrollBool","isScrollable","moved","checkSwipe","modeClear","lastTapTime","eTapArgs","pnt","newX","newY","newT","xDist","yDist","LINES","QUOTES","IF_STMT","ELSEIF_STMT","ELSE_STMT","FOR_STMT","IF_OR_FOR","CALL_FUNCTION","NOT_NUMBER","WORD","DBL_QUOTED_STR","WORDIF","ARR_OBJ","SINGLE_SLASH","DOUBLE_SLASH","WORDFUNC","WINDOWFUNC","ignorePrefix","evalExpResult","varCOunt","localKeys","singleSpace","insideBraces","outputString","matchStr","rlStr","addNameSpace","strs","HandleSpecialCharArrObj","rlStr_1","mtc","fnStr","fNameSpace","ftArray","SlashReplace","NameSpaceForspecialChar","evalExp","addNS","nameSpaceNew","quotes","NameSpaceArrObj","HAS_ROW","HAS_SVG","blazorTemplates","getRandomId","templateString","compiler","engineObj","blazorId","setTemplateEngine","classObj","getTemplateEngine","initializeCSPTemplate","boundFunc","Engine","removeTags","removeAttrs","jsEvents","SanitizeHtmlHelper","wrapElement","removeXssTags","removeJsEvents","removeXssAttrs","tempEleValue","removeElement","localName","__esModule","ATTRIBUTE_NAMES","BODY","HTML","TITLE","TAG_NAMES","BASE","HEAD","LINK","META","NOSCRIPT","SCRIPT","STYLE","REACT_TAG_MAP","VALID_TAG_NAMES","TAG_PROPERTIES","CHARSET","CSS_TEXT","HREF","HTTPEQUIV","INNER_HTML","ITEM_PROP","NAME","PROPERTY","REL","SRC","accesskey","charset","contenteditable","contextmenu","itemprop","HELMET_PROPS","DEFAULT_TITLE","DEFER","ENCODE_SPECIAL_CHARACTERS","ON_CHANGE_CLIENT_STATE","TITLE_TEMPLATE","HTML_TAG_MAP","SELF_CLOSING_TAGS","HELMET_ATTRIBUTE","REACT_STATICS","getDefaultProps","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","getOwnPropertySymbols","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","handleClientStateChange","convertReactPropstoHtmlAttributes","_react2","_interopRequireDefault","_objectAssign2","_HelmetConstants","default","clock","encodeSpecialCharacters","encode","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","tagAttrs","getBaseTagFromPropsList","primaryAttributes","innermostBaseTag","lowerCaseAttributeKey","getTagsFromPropsList","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","tagUnion","rafPolyfill","cafPolyfill","webkitRequestAnimationFrame","mozRequestAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","msg","_helmetCallback","commitTagChanges","newState","baseTag","bodyAttributes","linkTags","metaTags","noscriptTags","onChangeClientState","scriptTags","styleTags","titleAttributes","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","elementTag","helmetAttributeString","helmetAttributes","attributesToRemove","attributeKeys","indexToSave","headElement","tagNodes","indexToDelete","newElement","existingTag","generateElementAttributesAsString","convertElementAttributestoReactProps","initProps","getMethodsForTag","toComponent","_initProps","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","generateTagsAsReactComponent","attributeHtml","tagContent","isSelfClosing","generateTagsAsString","initAttributes","defer","_ref$title","base","link","meta","noscript","hasChild","collapsible","anchorWrap","navigable","dataField","compileTemplate","ListBase","defaultMappedFields","urlAttributes","imageAttributes","defaultAriaAttributes","listRole","itemRole","wrapperRole","defaultListBaseOptions","expandCollapse","listClass","processSubChild","expandIconClass","expandIconPosition","createListFromArray","componentInstance","generateUL","curOpt","getModuleClass","generateSingleLevelLI","generateLI","checkboxElement","anchorElement","typeofData","curItem","alt","imageElemnt","createListFromJson","elementArray","elementAttributes","getAllAttributes","subDS","subLi","innerElements","grpLI","elementID","anchorTag","isFullNavigation","anchorWrapper","uID","compiledElement","innerDiv","getSiblingLI","siblingLI","liIndex","curFields","cusQuery","grpItem","newtext","_id","jsonAr","childs","hasChildNodes","attributes_1","liCollection","currentID","headerItems_1","headerData","generateIcon","effectsConfig","effectsRTLConfig","listIcon","listItemText","groupListItem","view","headerText","headerTemplateText","backButton","checklist","checkboxIcon","checkboxRight","checkboxLeft","listviewCheckbox","itemCheckList","virtualElementContainer","ListView","previousSelectedItems","hiddenItems","enabledItems","disabledItems","setHTMLAttribute","setSize","listBaseOption","virtualizationModule","reRenderUiVirtualization","reRender","curDSLevel","headerTitle","contentContainer","setCheckbox","previousScrollTop","curViewDS","getSubDS","resetCurrentList","isWindow","enableElement","isEnabled","showBack","showHeader","innerHeaderEle","hedBackButton","headerTemplateEle","LISTVIEW_HEADERTEMPLATE_ID","switchView","fromView","toView","fPos_1","overflow_1","anim","aniObj","curUL","renderCheckbox","initialization","animateOptions","currentLiElements","isNestedList","selectedId","LISTVIEW_TEMPLATE_ID","LISTVIEW_GROUPTEMPLATE_ID","fieldData_1","frameElement_1","findIndex","checkInternally","checkBoxPosition","virtualCheckBox","checkItem","toggleCheckBase","getLiFromObjOrElement","setSelectedItemData","updateSelectedId","uncheckItem","checkAllItems","toggleAllCheckBase","uncheckAllItems","checkIcon","checkedItem","refreshItemHeight","handleCheckboxState","isCheckedBefore","isFocusedBefore","isSetCheckboxLI","textAreaFocus","closestElement","back","setCheckboxLI","selectEventData","removeSelect","setSelectLI","curLi","setHoverLI","leaveHandler","homeKeyHandler","onArrowKeyDown","arrowKeyHandler","elementHeight","firstItemBounds","heightDiff","groupItemBounds","siblingTop","siblingHeight","uiFirstIndex","onUIScrolled","topHeight","headerBounds","enterKeyHandler","spaceKeyHandler","cbElement","swipeActionHandler","focusout","onListScroll","focusedLI_1","hoverLI","selectedLI_1","renderSubList","lastLi","levelKeys","localData","levelKeys_1","curDSJSON","findItemFromDS","curDS","getElementUID","resultJSON","setViewDataSource","fieldValue","isInAnimation","renderRemoteLists","listViewComponent","triggerActionFailure","setLocalData","isOffline","renderIntoDom","liElements","updateDOMItemCount","lists","isNgTemplate","createUIItem","uiVirtualization","classAr","pID","toUL","fromUL","selectItem","unselectItem","selectMultipleItems","getParentId","isCompleted","liTextCollection","liDataCollection","dataParent","findItem","setItemState","showItem","showHideItem","addItemInternally","addItemAtIndex","targetUL","addItemIntoDom","addItemInNestedList","newDataSource","targetItemData","itemQueue","targetItemId","targetChildDS","isAlreadyRenderedUL","targetLi","targetDS","targetRefreshedElement","currentItem","addListItem","curItemDS","listDataSource","removeItemFromList","data_1","groupLi","validateNestedView","foundData","findParent","dsIndex","parentLi","liID","removeMultipleItems","currentScrollTop","Virtualization","elementDifference","listViewInstance","templateRef","isVueFunctionTemplate","wireScrollEvent","firstIndex","uiLastIndex","firstDs","expectedDomItemCount","ValidateItemCount","listDiff","domItemCount","otherDs","topElement","bottomElement","totalHeight","topElementHeight","bottomElementHeight","uiIndicesInitialization","onVirtualScroll","updateUl","onVirtualUiScroll","dataSourceLength","uiIndices","activeIndices","disabledItemIndices","getscrollerHeight","startingHeight","scrollPosition","onLongScroll","onNormalScroll","isScrollingDown","updateUI","updateUiContent","curViewDs","checkListWrapper","changeElementAttributes","hiddenItemIndices","checklistElement","findDSAndIndexFromId","dataCollection","textCollection","curViewDS_1","indices","curViewDS_2","indexArray","resutJSON","isChecked_1","removeUiItem","addUiItem","changeUiIndices","liItem","previousSibling","ind","createAndInjectNewItem","templateData","div_1","commonTemplate","onNgChange","virtualThis","resultElement","Sortable","getHelper","getSortableElement","isValidTarget","onDrag","inst_1","newInst","getSortableInstance","removePlaceHolder","oldIdx","getPlaceHolder","newIdx","isPlaceHolderPresent","updateItemClass","onDragStart","cancelDrag","onDragStop","prevIdx","curIdx","handled","dropInst","curIdx_1","curIdx_2","scopeName","beforeDropArgs","Sortable_1","initializeDraggable","dragWrapper","dragPlaceholder","grabbedElement","placeHolderPresent","cltY","targetIndexes","to","targetElements","insertElement_1","containerAttributes","Input","isBindClearAction","bindInitialEvent","checkInputValue","getParentNode","bindFocusEventHandler","blurHandler","bindBlurEventHandler","inputHandler","bindInputEventHandler","__eventHandlers","inputParent","grandParent","_focusFn","_blurFn","wireFloatingEvents","unwireFloatingEvents","createFloatingInput","createInputContainer","customTag","encodePlaceHolder","inputWrap","updateLabelState","inputFloatHandler","validateLabel","inputEventHandler","blurFloatHandler","blurEventHandler","unWireFloatLabelEvents","checkFloatLabelType","wireClearBtnEvents","clickHandlerEvent","inputHandlerEvent","focusHandlerEvent","blurHandlerEvent","tagClass","_isElementVisible","floatTextContent","isReadonly","inputContainer","disabledAttrs","considerWrapper","addAttributes","setClearButton","isClear","createClearButton","createSpanElement","labelSpanElement","_internalRipple","isRipple","argsButton","_onMouseDownRipple","_onMouseUpRipple","createIconEle","iconClass","prependSpan","innerWrapper","validateInputType","getInputValidClassList","inputClassName","bindClearAction","setPropertyValue","focusHandler_1","blurHandler_1","inputHandler_1","unbindInitialEvent","unWireClearBtnEvents","isPrependIcon","floatText","addIcon","icons","internalCreate","result_2","updateHTMLAttributesToElement","updateHTMLAttributesToWrapper","updatedClassValues","setStyle","isBlank","SPINICON","INTREGEXP","wrapperAttributes","selectionTimeOut","NumericTextBox","numericOptions","isPrevFocused","decimalSeparator","intRegExp","isCalled","angularTagName","formEle","attributeName","localeText","incrementTitle","decrementTitle","isValidState","inputStyle","inputName","cultureInfo","initCultureInfo","initCultureFunc","prevValue","updateHTMLAttrToElement","checkAttributes","inputEleValue","validateMinMax","validateStep","updatePlaceholder","createWrapper","showSpinButton","spinBtnCreation","changeValue","strictMode","trimValue","decimals","roundNumber","hiddenInput","elementPrevValue","isDynamic","setNumber","minValue","maxValue","stepValue","updatedCssClassValue","getNumericValidClassList","updateHTMLAttrToWrapper","pro","numericClassName","updatedClassValue","numericStyle","spinDown","spinUp","wireSpinBtnEvents","MAX_VALUE","operation","isInteract","performAction","raiseChangeEvent","checkErrorClass","bindClearEvent","resetHandler","setElementValue","keyupEvent","resetFormHandler","setSpinButton","mouseDownOnSpinner","mouseUpOnSpinner","touchMoveOnSpinner","unwireSpinBtnEvents","parsedInput","isInteraction","beforeUpdate","preventHandler","iOS","currentPos","prevPos","valArray","ignoreKeyCode","prevVal","cursorPosChanged","validateDecimalOnType","numerictextboxObj","parsedValue","localChange","updatedValue","correctRounding","floatExp","floatValue","floatStep","valueCount","stepCount","roundValue","precision","divide","updateCurrency","propVal","numberOfDecimals","getNumberOfDecimals","modifyText","validateState","serverDecimalSeparator","EXPREGEXP","valueString","result1","result2","currentChar","isAlterNumPadDecimalChar","fractionRule","mouseWheel","delta","rawEvent","wheelDelta","focusEventArgs","formatValue_1","blurEventArgs","focusEvent","getElementData","mouseUpClick","touchEvent","floatLabelTypeUpdate","decrement","attrArray","getText","updateSpinButton","propValue","regularExpressions","createMask","mask","splitMask","splitInnerMask","pushIntoRegExpCollec","chkSpace","customRegExpCollec","hiddenMask","promptChar","escapeMaskValue","promptMask","customCharacters","escapeNumber","applyMask","setMaskValue","maskInputKeyDownHandler","maskInputKeyPressHandler","maskInputKeyUpHandler","maskInputHandler","maskInputFocusHandler","maskInputBlurHandler","maskInputPasteHandler","maskInputCutHandler","maskInputDropHandler","maskInputMouseDownHandler","maskInputMouseUpHandler","redoCollec","triggerMaskChangeEvent","initInputValue","unstrippedValue","strippedValue","maskValues","checkMask","maskValue","_callPasteHandler","regExpCollec","maskedRegExp","modelValue","toAllowForward","toAllowBackward","maskedValue","triggerFocus","backSelectionStart","labelElement","sIndex_1","eIndex_1","oldValue_1","maskKeyPress","validateValue","preValue_1","sIndex_2","undoCollec","removeMaskInputValues","addedValues","preEleVal","startValue","collec","mobileRemoveFunction","autoFillMaskInputValues","isRemove","oldEventVal","isDeleted","initStartIndex","initEndIndex","curMask","deleteEndIndex","multipleDel","preValue","prompt_1","isIosInvalid","removeMaskError","val_1","isSpace","preventUnsupportedValues","temp_1","mobileSwipeCheck","mobileValidation","eventOldVal","allowText","prevSupport","isEqualVal","keyValue","customValArr","applySupportedValues","addMaskErrorClass","changeToLowerUpperCase","ctrl","chkSupport","curVal","caseCount","ErrorOption","wrapperAttr","MaskedTextBox","maskOptions","checkHtmlAttributes","resetMaskedTextBox","setMaskPlaceholder","getValidClassList","maskClassName","maskStyle","setVal","dynamicPlaceholder","updatedCssClassValues","strippedValue_1","strippedVal","getMaskedValue","TicksData","ColorRangeData","LimitData","TooltipData","Slider","horDir","verDir","transition","rangeBar","transitionOnMaterialTooltip","scaleTransform","customAriaText","isDragComplete","initialTooltip","isElementFocused","tickElementCollection","tooltipFormatInfo","ticksFormatInfo","formChecker","isForm","formResetValue","internationalization","ticks","formatString","formatInfo","formatValue","makeRoundNumber","elementVal","sliderContainer","tooltipElement","showOn","sliderTrack","getThemeInitialization","setHandler","createRangeBar","limits","createLimitBar","setOrientClass","showButtons","setButtons","rangeValueUpdate","previousVal","checkHandleValue","previousChanged","setLimitBar","placement","renderScale","renderTooltip","isMaterial","isMaterial3","isBootstrap","isBootstrap4","isTailwind","isTailwind3","isBootstrap5","isFluent","isFluent2","isBootstrap5Dot3","isMaterialTooltip","firstElementClassName","limitBarFirst","limitBarSecond","firstHandle","secondHandle","setAriaAttributes","customValues","createSecondHandle","createFirstHandle","materialHandle","wireFirstHandleEvt","handleFocus","handleOver","handleLeave","wireSecondHandleEvt","handleStart","handlePos1","getHandle","tooltipToggle","closeTooltip","handleFocusOut","focusSliderElement","sliderBarClick","sliderBarMove","sliderBarUp","preDir","setBarColor","tooltipValue","setTooltipContent","addTooltipClass","setAriaAttrValue","setPreviousVal","formatContent","ariaContent","handle1","handleVal1","handle2","handleVal2","oldCss","newCss","getTooltipTransformProperties","previousTooltipClass","tooltipPlacement","tooltipBeforeOpen","setTooltipTransform","tooltipCollision","tooltipOffsetValue","materialTooltipEventCallBack","wireMaterialTooltipEvent","tooltipPositionCalculation","transformProperties","translate","openMaterialTooltip","refreshTooltip","tooltipContentElement","closeMaterialTooltip","tooltipTarget","checkTooltipPosition","tooltipClass","tooltipCollidedPosition","beforeOpen","beforeCollision","beforeClose","tooltipBeforeClose","initializeTooltipProps","tooltipShowOn","firstBtn","secondBtn","buttonTitle","enabledRTL","buttonFocusOut","repeatButton","hVal","handleValueUpdate","getLimitCorrectedValues","changeHandleValue","repeatHandlerMouse","buttonClick","repeatInterval","materialChange","focusHandle","repeatHandlerUp","changeEvent","customTickCounter","bigNum","tickCount","orien","smallStep","showSmallTicks","largeStep","islargeTick","tickWidth","reminder","largestep","repeat","createTick","formatTicksValue","decimalPoints","ticksAlignment","ticksWrapper","tickElements","scaleAlignment","tickText","tickElement","tickValuePosition","otherChild","other","ariaValueText","isTickFormatted","valuenow","activeHandle","getLimitValueAndPosition","minStart","minEnd","maxStart","maxEnd","buttonUp","openTooltip","setRangeBar","handlePos2","checkValidValueAndPos","checkHandlePosition","setLimitBarPositions","fromMinPostion","fromMaxpostion","toMinPostion","toMaxpostion","fromPosition","toPosition","limitBar","preHandlePos1","setHandlePosition","validateRangeValue","setRangeValue","modifyZindex","updateRangeValue","preHandlePos2","values_1","tempStartEnd","startHandleFixed","endHandleFixed","xyToPosition","stepValueCalculation","percentStep","addition","positionToValue","handlepos","handleVal","eventX","eventY","checkRepeatedValue","handleValueAdjust","handleValue","assignValue","handleNumber","minDiff","dragRangeBarMove","xPostion","yPostion","rangeBarDragged","secondPartRemain","firstPartRemain","valueAndPostion","dragRangeBarUp","wireButtonEvt","sliderFocusOut","rangeBarMousedown","elementClick","onresize","changeSliderType","updateConfig","changeRtl","limitsPropertyChange","setMinMaxValue","setTooltip","trackPosition","trackClassName","colorRange","startingPosition","endPosition","trackContainer","color","EMAIL","DATE_ISO","DIGITS","PHONE","CREDITCARD","FormValidator","validated","errorRules","allowSubmit","infoElement","selectQuery","localyMessage","defaultMessages","email","dateIso","creditcard","maxLength","rangeLength","tel","equalTo","localeFunc","afterLocalization","inputElements","createHTML5Rules","FormValidator_1","addRules","validateRules","rules_1","name_1","clearForm","getInputElement","errorClass","validClass","elements_2","getErrorElement","hideMessage","defRules","acceptedTypes","allRule","defRules_1","defRule","annotationRule","ruleCon","ruleName","rulesList","ruleFirstName","ruleSecondName","minvalue","maxvalue","customMessage","annotationMessage","getErrorMessage","isCheckable","submitHandler","hiddenType","validateHiddenType","vhPos","hPos","rules_2","errorMessage","errorRule","removeErrorRules","showMessage","createErrorElement","errorElement","optionalValidationStatus","refer","currentRule","checkValidator","ruleValue","formats","errorOption","errorContainer","containerId","customPlacement","checkRequired","inputType","globalize","dateOptions","dateValue","uNum","compareTo","Label","FILE","STATUS","REMOVE_ICON","DELETE_ICON","ABORT_ICON","RETRY_ICON","PROGRESS_WRAPPER","PROGRESSBAR","UPLOAD_SUCCESS","UPLOAD_FAILED","PAUSE_UPLOAD","FilesProp","ButtonsProps","AsyncSettings","Uploader","initialAttr","multiple","uploadedFilesData","base64String","allTypes","pausedData","uploadMetaData","btnTabIndex","disableKeyboardNavigation","actionCompleteCount","selectedFiles","uploaderName","fileStreams","newFileRef","isFirstFileOnSelection","dragCounter","fileList","filesData","uploaderOptions","setExtensions","allowedExtensions","setControlStatus","setMultipleSelection","reRenderFileList","browse","renderButtonTemplates","unBindDropEvents","updateDropArea","checkHTMLAttributes","renderPreLoadFiles","updateDirectoryAttributes","setLocalizedTexts","preLocaleObj","browseButton","localizedTexts","uploadWrapper","updateFileList","getKeyValue","autoUpload","uploadButton","listParent","internalCreateFileList","removeActionButtons","renderActionButtons","checkActionButtonStatus","Browse","Clear","Upload","invalidFileName","dropFilesHint","invalidMaxFileSize","invalidMinFileSize","invalidFileType","uploadFailedMessage","uploadSuccessMessage","removedSuccessMessage","removedFailedMessage","inProgress","readyToUploadMessage","pauseUpload","resume","retry","fileUploadCancel","invalidFileSelection","totalFiles","formRendered","isPureReactComponent","browserName","directoryUpload","renderBrowseButton","initializeUpload","isPreloadFiles","wireActionButtonEvents","serverActionButtonsEventBind","unwireActionButtonEvents","uploadButtonClick","clearButtonClick","uploadText","dropAreaWrapper","setDropArea","files","clearData","files_1","fileData","rawFile","validationMessages","minSize","maxSize","statusCode","allowUpload","showFileList","sequentialUpload","dropTextArea","dropArea","dropZoneElement","enableDropText","createDropTextHint","bindDropEvents","fileDropArea","uploadStyle","newAttr","createAttribute","setAttributeNode","checkAutoUpload","sequenceUpload","isFileListCreated","updatedOldCssClass","browseButtonClick","onSelectFiles","resetForm","metaData","getCurrentMetaData","abortUpload","resumeUpload","chunkUpload","removeFiles","fileInfo","targetMetaData","dropElement","dragHover","onDragLeave","onPasteFile","onDragEnter","dropEffect","dataTransfer","clipboardData","pasteFile","getAsFile","kind","renderSelectedFiles","getSelectedFiles","allFiles","getFilesData","nameElements","selectedElement","formUpload","isFormUpload","getFilesInArray","spinnerTarget","uploadSequential","checkActionComplete","progressBarElements","removeFilesData","getLiElement","removeUploadedFile","removeDirectly","asyncSettings","formData","FormData","currentRequest","removingEventCallback","removeCompleted","removeFailed","postRawFile","updateFormData","customFormData","customData","updateCustomheader","getResponse","updateStatus","rootElement","statusElement","getFilesFromFolder","filesEntries","checkDirectoryUpload","webkitGetAsEntry","isFile","files_2","fileObj","fullPath","isDirectory","traverseFileTree","directoryReader","createReader","readFileFromDirectory","readEntries","entries","pushFilesEntries","_loop_4","targetFiles","sortFilesList","sortFileList","getBase64","fileReader","FileReader","readAsDataURL","directory","paste","isModified","modifiedFilesData","progressInterval","isCanceled","updateInitialFileDetails","sanitizeFile","sanitizeFileName","currentFileName","isUTF8","hasHTMLString","encodedFileName","checkExtension","_internalRenderSelect","fileDetails","getFileType","webkitRelativePath","validatedFileSize","fileSource","dataFiles","updateSortedFileList","raiseActionComplete","allowFormUpload","saveUrl","singleUpload","previousListClone","oldList","createParentUL","checkGenericExtension","genericType","fileExtension","validExtensions","dropFiles","extensions_1","extension","checkFileType","fileSize","minSizeError","maxSizeError","minFileSize","maxFileSize","isPreLoadFile","isPreload","createCustomfileList","fileData_1","uploadTemplateFn","liTempCompiler","eventsArgs","formFileList","statusMessage","fileContainer","fileData_2","fileNameEle","getFileNameOnly","fileTypeEle","fileType","rtlContainer","truncateName","formValidateFileInfo","setListToFileInfo","infoEle","bytesToSize","getFileSize","createFormInput","mergeFileInfo","addInvalidClass","typeValidationMessage","fileData_3","fileData_4","fileNames","fileData_5","statusForFormUpload","fileData_6","formCustomFileList","createFileList","fileData_7","textElement","preventActionComplete","getSlicedName","nameElement","fileData_8","setInitialAttributes","filterfileList","filterFiles","updateLiStatus","createProgressBar","progressbarWrapper","progressBar","progressbarInnerWrapper","progressbarText","updateProgressbar","loaded","total","changeProgressValue","uploadInProgress","customUI","cancelUploadingFile","updateProgressBarClasses","ajax_1","removecanceledFile","renderFailureState","removeProgressbar","pauseButton","reloadcanceledFile","uploadComplete","raiseSuccessEvent","uploadFailed","withCredentials","spinnerEle","getSelectedFileStatus","matchFiles","matchFilesIndex","selectFileIndex","selectedFileData","fileDataIndex","progressAnimation","animateProgressBar","extensions","uploadTemplate","isMutiple","fileIndex","chunkSize","chunkIndex","blob","retryCount","sendRequest","totalChunk","chunkUploadComplete","chunkUploadInProgress","currentChunkIndex","uploadingEventCallback","chunkUploadFailed","eventCancelByArgs","removeIcon","checkChunkUpload","requestResponse","updateMetaData","sendNextRequest","name_2","removeChunkFile","removeChunkProgressBar","chunkCount","retryRequest","retryAfterDelay","file_1","failureMessage","checkPausePlayAction","retryUpload","fromcanceledStage","retryElement","progressVal","totalChunks","abortIcon","bytes","sortedFilesData","sortedFileNames_1","name_3","attributes_2","uploadFiles_1","customFormDatas","uploadFiles","serverReadFileBase64","totalCount","reader","uploadFileCount","getFileRead","fileCount","uploadFilesRequest","chunkEnabled","name_4","spliceFiles","beforeEventArgs","isLiRemoved","removingFiles_1","validUrl","_loop_5","fileUploadedIndex","removeFiles_1","fileDataFiles","pauseUploading","getFiles","resumeFiles","retryFailedFiles","cancelingFiles","cancelUpload","showHideUploadSpinner","DropDownMenuAnimationSettings","DropDownButton","openPopUp","createPopupOnClick","len_1","getULElement","dropDown","popupContent","splitButton","isColorPicker","appendItems","hasIcon","compiledTemplate_1","compiletemplate","createAnchor","beforeDisabled","getPopUpElement","blankIcon","paddingRight","appendArrowSpan","setActiveElem","prevElem","popupUnWireEvents","dropDownButton","dropDownBtn","delegateMousedownHandler","mousedownHandler","closeActionEvents","focusoutHandler","keyEventHandler","triggerSelect","liTarget","popupElem","animatePopup","wrapperWidth","popupLeft","openArgs","btnWidth","preventScroll","arrowSpan","TAGNAME","SplitButton","createPrimaryButton","createSecondaryButton","secondaryBtnObj","btnModel","primaryBtnObj","btnElem","dropDownBtnModel","callBackPromise","primaryBtnClickHandler","btnKeyBoardHandler","altdownarrow","ChatMessageRole","CONTENTCLS","SpinSettings","ProgressButton","percent","isPaused","startProgress","progressTime","progressComplete","finishProgress","spinSettings","enableProgress","createProgress","setSpinPosition","getSpinner","getProgress","startAnimate","startContAnimate","prevTime","prevPercent","prevProgressTime","timeDiff","stepTime","timeDiffBuffer_1","currentDuration","eIsVertical","successCallback","perc","pPerc","prgTim","pPrgTim","timDif","pTim","timeDiffBuffer","hideSpin","setSpinnerSize","setIconSpan","isSpinning","APPLY","CTRLBTN","CTRLSWITCH","HIDEHEX","HIDERGBA","HIDEVALUE","HSVAREA","INPUTWRAPPER","MODESWITCH","NOCOLOR","OPACITY","PREVIEW","SHOWVALUE","SELECT","TILE","presets","ColorPicker","recentColors","Apply","Cancel","ModeSwitcher","RecentColors","inline","createWidget","createSplitBtn","enableOpacity","noColor","slicedValue","initialInputValue","tileRipple","ctrlBtnRipple","createPalette","firstPaletteFocus","createPicker","getDragHandler","isRgb","createCtrlBtn","toggleDisabled","refreshPopupPos","splitBtn","onOpen","MouseEvent","cancelable","hex","rgba","convertToRgbString","hexToRgb","preview","getPopupEle","popupInst","getPopupInst","bindCallBackEvent","observeOpenArgs","onPopupClose","destroyOtherComp","presetColors","paletteGroup","appendElement","appendPalette","modeSwitcher","setNoColor","showRecentColors","renderRecentColor","rgb","hsv","rgbToHsv","recentClrWpr","recentColorWrapper","recentClrSpan","colors","row","tile","roundedColor","palette","presetName","addTileSelection","noColorEle","insertPos","hsvContainer","dragHandler","setHsvContainerBg","setHandlerPosition","createSlider","createDragTooltip","getHsvContainer","hsvToRgb","hsvArea","sliderPreviewWrapper","createPreview","sliderWrapper","slider","hueSlider","hueChange","createOpacitySlider","opacitySlider","opacityChange","opacityBgTrack","updateOpacitySliderBg","opacityEle","background","convertToOtherFormat","pValue","rgbToHex","cValue","updateOpacityInput","updatePreview","opacityTextBoxInst","previewContainer","colorValue","isPicker","createNumericInput","numericInput","appendValueSwitchBtn","hexInput","appendOpacityValue","valueSwitchBtn","formatSwitchHandler","btnWrapper","controlBtnWrapper","appendModeSwitchBtn","getTooltipInst","setTooltipOffset","convertToHsvString","updateHsv","updateInput","removeTileSelection","convertRgbToNumberArray","pickerKeyDown","ctrlBtn","ctrlBtnKeyDown","handlerDown","addCtrlSwitchEvent","previewHandler","paletteClickHandler","paletteKeyDown","ctrlSwitchBtn","handlerDragPosition","setHsv","handlerMove","handlerEnd","switchToPalette","ctrlBtnClick","refreshImageEditorPopupPos","noColorTile","switchToPicker","grpEle","tiles","prevSelectedEle","tilePosition","keySelectionChanges","newEle","emptyCount","inputValueChange","numericElemColl","tooltipInst","bigInt","changeModeSwitcherProp","ctrlSwitchWrapper","changeShowBtnProps","ctrlBtnWrapper","changeValueProp","setInputEleProps","changeDisabledProp","changeCssClassProps","changeRtlProps","changePaletteProps","changeOpacityProps","count_1","TextBox","isHiddenInput","inputPreviousValue","textboxOptions","textboxWrapper","respectiveElement","textarea","apiAttributes","attrs_1","autoCompleteTxt","initialValue","setInitialValue","keydownHandler","animationHandler","textboxObj","interaction","resetInputHandler","AUTO_WIDTH","TextArea","textareaOptions","textareaWrapper","resizeMode","getCurrentResizeClass","rows","cols","currentWidth","setWrapperWidth","textareaObj","CaretPositionHelper","createStyledDiv","htmlContent","scrollbarWidth","createCaretMarker","escapeHtml","getCaretPosition","textBeforeCaret","textAfterCaret","adjustScrollToCaretPosition","caretPosition","lineHeight","getTextAreaPosition","computedStyle","elemStyle","insertCharacter","SmartTextArea","smartTextArea","after","showSuggestionOnPopup","suggestionState","suggestionDisplay","shouldShowInlineSuggestions","handleKeyUp","handleKeyDown","removeExistingOrPendingSuggestion","inlineSuggestions","isShowing","currentSuggestion","typingDebounceTimeout","handleTypingPaused","requestSuggestionAsync","pendingSuggestionAbort","createSuggestionPrompt","textBefore","textAfter","stringBuilder","userPhrases","UserPhrases","userPhrases_1","System","User","Assistant","userRole","stopSequences","requestDetails","suggestionData","chatConfig","insertSuggestion","AbortController","textAreaValue","cursorPosition","aiSuggestionHandler","validateSuggestion","suggestion","indexOfAny","LabelPosition","PrecisionType","InlineSuggestion","owner","latestSuggestionText","suggestionStartPos","suggestionEndPos","virtualCaret","originalValueProperty","getOriginalValueProperty","suggestionText","valueIncludingSuggestion","ContextSuggestion","showing","suggestionElement","handleSuggestionClicked","suggestionPrefixElement","suggestionTextElement","font","getPrefixText","paddingBottom","lines","VirtualCaret","caretDiv","textAreaPosition","caretStyle","caretColor","SignatureBase","minDistance","isSignatureEmpty","backgroundLoaded","isResponsive","signPointsColl","signRatioPointsColl","canRedraw","dotnetRef","clearArray","canvasContext","getContext","canvas","signatureValue","loadPersistedSignature","setHTMLProperties","updateSnapCollection","pointColl","isReadOnly","mouseMoveHandler","mouseUpHandler","fillStyle","strokeColor","tempCanvas","tempContext","backgroundRepeat","saveWithBackground","setBackgroundImage","beginStroke","updateStrokeWithThrottle","updateStroke","endDraw","invokeMethodAsync","snapColl","incStep","fileName","observableSaveArgs","save","undo","redo","scale","pointSize","minStrokeWidth","maxStrokeWidth","arcDraw","closePath","restoreImg_1","Image","clearRect","drawImage","internalRefresh","createPoint","addPoint","storedArgs","pointX","pointY","controlPoint1","controlPoint2","points","lastPoint","isLastPointTooClose","distanceTo","calculateCurveControlPoints","startDraw","pointVelocityCalc","lastVelocity","newWidth","curveDraw","lastWidth","canDrawCurve","strokeDraw","startWidth","endWidth","t1","t2","t3","u1","u2","u3","widthValue","bezierLength","bezierLengthCalc","drawSteps","beginPath","arc","p1","p2","p3","dx1","dy1","dx2","dy2","m1","m2","l1","l2","cm","tx","ty","pointx1","pointy1","pointx2","pointy2","pointx3","pointy3","bezierPointCalc","startpoint","cp1","cp2","endpoint","isRead","enableOrDisable","isDisable","canvasNew","canvasContextNew","toDataURL","imageSrc","imageObj","crossOrigin","globalCompositeOperation","saveBackground","setBackgroundColor","canvasEle","strokeStyle","strokeRect","lastImage","getBlob","bstr","u8arr","Blob","download","blobUrl","createObjectURL","undoImg_1","redoImg_1","empty","isEmpty","canUndo","canRedo","draw","fontFamily","textAlign","textBaseline","fillText","signature","bitmapImage","createImageBitmap","savebg","proxy_1","imageObj_1","toSVG","toJPEG","dataURL","resetSnap","restoreObj","img","setAttributeNS","svgDataUrl","btoa","saveAsBlob","getSignature","fillRect","propertyChanged","Signature","Rating","itemElements","isTouchSelected","updateMinValue","displayLabel","renderItemList","updateReset","updateDisabled","ratingItemList","updateResetButton","allowReset","resetElement","touchMoveHandler","currValue","updateCurrentValue","closeRatingTooltip","openRatingTooltip","emptyTemplateFunction","emptyTemplate","fullTemplateFunction","fullTemplate","ratingItemContainer","spanItem","ratingValue","getRatingValue","updateItemValue","Full","enableSingleSelection","Half","Quarter","updateItemContent","isChange","ratingSpan","showLabel","spanLabel","updateLabel","labelTemplate","resetClicked","updateValueChange","ratingObj","calculateCurrentValue","keyboardModuleRating","isIncrease","Right","OtpInputType","OtpInputStyle","TextTransform","OtpInput","inputs","separatorElements","shouldFireFocus","shouldFireBlur","isFocusInCalled","isFocusOutCalled","handleWheelEvent","renderInputs","renderSeparator","addPlaceHolder","updateVariantClass","updateAriaLabel","ariaLabels","setElementAttributes","autoFocus","hiddenInputEle","autoComplete","createOtpInput","valueContainer","getDefaultValue","valueAtIndex","INPUTFIELD","maxlength","inputmode","separatorElement","updateSeparatorValue","placeholderValue","updateInputType","inputMode","extractedValue","textTransform","getTransformedText","transformingText","Lowercase","Uppercase","handleInputChange","currentInputElement","nextInputElement","triggerInputEvent","triggerValuechanged","handleKeyAction","previousInputElement","handleSelection","handleBlur","handlePaste","pastedValues","pastedValueIndex","updateValueProperty","inputEventArgs","updateInputValue","stringifiedValue","previousStringValue","addCss","cssClasses","variantClass","stylingMode","validClasses","customAriaLabel","defaultLabel","updateDisabledState","setInputMode","inputModeValue","handleLengthChange","focusIndex","Outlined","None","SpeechToTextState","ButtonSettings","TooltipSettings","SpeechToText","fullTranscript","isUserInteracted","hasStarted","renderSpeechToText","initializeSpeechRecognition","listeningState","handleStateChange","initializeLocale","abortedError","audioCaptureError","defaultError","networkError","noSpeechError","notAllowedError","serviceNotAllowedError","unsupportedBrowserError","startAriaLabel","stopAriaLabel","startTooltipText","stopTooltipText","buttonSettings","buttonInst","updateButtonCssClass","addHtmlAttributes","micOn","stopContent","tooltipSettings","Listening","startSpeechRecognition","Inactive","Stopped","stopSpeechRecognition","removeHtmlAttributes","handleButtonClick","triggerUnSupportedError","windowInst","SpeechRecognition","webkitSpeechRecognition","recognition","continuous","lang","interimResults","allowInterimResults","onstart","transcript","handleStartRecognition","onend","handleStopRecognition","onresult","resultIndex","interimTranscript","isInterimResult","stopIconCss","triggerUnSupportedStart","buttonSettingsChanges","oldModel","newModel","destroyAndNullify","startListening","stopListening","_createClass","_propTypes2","_reactSideEffect2","_reactFastCompare2","_HelmetUtils","_objectWithoutProperties","_classCallCheck","_possibleConstructorReturn","_class","HelmetSideEffects","HelmetExport","_React$Component","HelmetWrapper","_inherits","mapNestedChildrenToProps","nestedChildren","flattenArrayTypeChildren","_extends2","arrayTypeChildren","newChildProps","mapObjectTypeChildren","_ref2","_extends3","_extends4","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_extends5","warnOnInvalidChildren","mapChildrenToProps","_child$props","object","arrayOf","defaultTitle","titleTemplate","mappedState","renderStatic","prevString","tempQueryString","prevElementId","elementId","queryStringUpdated","isVirtual","strLength","indexUpdated","Search","inputVal","searchType","queryStr","itemsData","filterValue","checkField_1","fieldValue_1","state_1","resetIncrementalSearchValues"],"mappings":"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CV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IA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,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO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","file":"component---src-templates-layout-js-angular.js","sourcesContent":["'use strict';\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\nvar hasElementType = typeof Element !== 'undefined';\nfunction equal(a, b) {\n // fast-deep-equal index.js 2.0.1\n if (a === b) return true;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = isArray(a),\n arrB = isArray(b),\n i,\n length,\n key;\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;) if (!equal(a[i], b[i])) return false;\n return true;\n }\n if (arrA != arrB) return false;\n var dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA != dateB) return false;\n if (dateA && dateB) return a.getTime() == b.getTime();\n var regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA != regexpB) return false;\n if (regexpA && regexpB) return a.toString() == b.toString();\n var keys = keyList(a);\n length = keys.length;\n if (length !== keyList(b).length) return false;\n for (i = length; i-- !== 0;) if (!hasProp.call(b, keys[i])) return false;\n // end fast-deep-equal\n\n // start react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element && b instanceof Element) return a === b;\n\n // custom handling for React\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner.\n // _owner contains circular references\n // and is not needed when comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of a react element\n continue;\n } else {\n // all other properties should be traversed as usual\n if (!equal(a[key], b[key])) return false;\n }\n }\n // end react-fast-compare\n\n // fast-deep-equal index.js 2.0.1\n return true;\n }\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function exportedEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (error.message && error.message.match(/stack|recursion/i) || error.number === -2146828260) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};","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}();\nimport { merge, extend, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Query, Predicate } from './query';\nvar consts = {\n GroupGuid: '{271bbba0-1ee7}'\n};\n/**\n * Adaptors are specific data source type aware interfaces that are used by DataManager to communicate with DataSource.\n * This is the base adaptor class that other adaptors can extend.\n *\n * @hidden\n */\nvar Adaptor = /** @class */function () {\n /**\n * Constructor for Adaptor class\n *\n * @param {DataOptions} ds?\n * @param ds\n * @hidden\n * @returns aggregates\n */\n function Adaptor(ds) {\n // common options for all the adaptors\n this.options = {\n from: 'table',\n requestType: 'json',\n sortBy: 'sorted',\n select: 'select',\n skip: 'skip',\n group: 'group',\n take: 'take',\n search: 'search',\n count: 'requiresCounts',\n where: 'where',\n aggregates: 'aggregates',\n expand: 'expand'\n };\n /**\n * Specifies the type of adaptor.\n *\n * @default Adaptor\n */\n this.type = Adaptor;\n this.dataSource = ds;\n this.pvt = {};\n }\n /**\n * Returns the data from the query processing.\n *\n * @param {Object} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param ds\n * @param query\n * @param xhr\n * @returns Object\n */\n Adaptor.prototype.processResponse = function (data, ds, query, xhr) {\n return data;\n };\n return Adaptor;\n}();\nexport { Adaptor };\n/**\n * JsonAdaptor is used to process JSON data. It contains methods to process the given JSON data based on the queries.\n *\n * @hidden\n */\nvar JsonAdaptor = /** @class */function (_super) {\n __extends(JsonAdaptor, _super);\n function JsonAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the JSON data based on the provided queries.\n *\n * @param {DataManager} dataManager\n * @param {Query} query\n * @returns Object\n */\n JsonAdaptor.prototype.processQuery = function (dataManager, query) {\n var result = dataManager.dataSource.json.slice(0);\n var count = result.length;\n var countFlg = true;\n var ret;\n var key;\n var lazyLoad = {};\n var keyCount = 0;\n var group = [];\n var sort = [];\n var page;\n for (var i = 0; i < query.lazyLoad.length; i++) {\n keyCount++;\n lazyLoad[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n var agg = {};\n var isGroupByFormat = false;\n if (query.lazyLoad.length) {\n for (var i = 0; i < query.queries.length; i++) {\n key = query.queries[i];\n if (key.fn === 'onGroup' && !isNullOrUndefined(key.e.format)) {\n isGroupByFormat = true;\n break;\n }\n }\n }\n for (var i = 0; i < query.queries.length; i++) {\n key = query.queries[i];\n if ((key.fn === 'onPage' || key.fn === 'onGroup' || key.fn === 'onSortBy' && !isGroupByFormat) && query.lazyLoad.length) {\n if (key.fn === 'onGroup') {\n group.push(key.e);\n }\n if (key.fn === 'onPage') {\n page = key.e;\n }\n if (key.fn === 'onSortBy') {\n sort.unshift(key.e);\n }\n continue;\n }\n ret = this[key.fn].call(this, result, key.e, query);\n if (key.fn === 'onAggregates') {\n agg[key.e.field + ' - ' + key.e.type] = ret;\n } else {\n result = ret !== undefined ? ret : result;\n }\n if (key.fn === 'onPage' || key.fn === 'onSkip' || key.fn === 'onTake' || key.fn === 'onRange') {\n countFlg = false;\n }\n if (countFlg) {\n count = result.length;\n }\n }\n if (keyCount) {\n var args = {\n query: query,\n lazyLoad: lazyLoad,\n result: result,\n group: group,\n page: page,\n sort: sort\n };\n var lazyLoadData = this.lazyLoadGroup(args);\n result = lazyLoadData.result;\n count = lazyLoadData.count;\n }\n if (query.isCountRequired) {\n result = {\n result: result,\n count: count,\n aggregates: agg\n };\n }\n return result;\n };\n /**\n * Perform lazy load grouping in JSON array based on the given query and lazy load details.\n *\n * @param {LazyLoadGroupArgs} args\n */\n JsonAdaptor.prototype.lazyLoadGroup = function (args) {\n var count = 0;\n var agg = this.getAggregate(args.query);\n var result = args.result;\n if (!isNullOrUndefined(args.lazyLoad.onDemandGroupInfo)) {\n var req = args.lazyLoad.onDemandGroupInfo;\n for (var i = req.where.length - 1; i >= 0; i--) {\n result = this.onWhere(result, req.where[i]);\n }\n if (args.group.length !== req.level) {\n var field = args.group[req.level].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[req.level].comparer, true);\n if (args.sort.length) {\n result = this.onSortBy(result, args.sort[parseInt(req.level.toString(), 10)], args.query, true);\n }\n } else {\n for (var i = args.sort.length - 1; i >= req.level; i--) {\n result = this.onSortBy(result, args.sort[parseInt(i.toString(), 10)], args.query, false);\n }\n }\n count = result.length;\n var data = result;\n result = result.slice(req.skip);\n result = result.slice(0, req.take);\n if (args.group.length !== req.level) {\n this.formGroupResult(result, data);\n }\n } else {\n var field_1 = args.group[0].fieldName;\n result = DataUtil.group(result, field_1, agg, null, null, args.group[0].comparer, true);\n count = result.length;\n var data = result;\n if (args.sort.length) {\n var sort = args.sort.length > 1 ? args.sort.filter(function (x) {\n return x.fieldName === field_1;\n })[0] : args.sort[0];\n result = this.onSortBy(result, sort, args.query, true);\n }\n if (args.page) {\n result = this.onPage(result, args.page, args.query);\n }\n this.formGroupResult(result, data);\n }\n return {\n result: result,\n count: count\n };\n };\n JsonAdaptor.prototype.formGroupResult = function (result, data) {\n if (result.length && data.length) {\n var uid = 'GroupGuid';\n var childLevel = 'childLevels';\n var level = 'level';\n var records = 'records';\n result[uid] = data[uid];\n result[childLevel] = data[childLevel];\n result[level] = data[level];\n result[records] = data[records];\n }\n return result;\n };\n /**\n * Separate the aggregate query from the given queries\n *\n * @param {Query} query\n */\n JsonAdaptor.prototype.getAggregate = function (query) {\n var aggQuery = Query.filterQueries(query.queries, 'onAggregates');\n var agg = [];\n if (aggQuery.length) {\n var tmp = void 0;\n for (var i = 0; i < aggQuery.length; i++) {\n tmp = aggQuery[i].e;\n agg.push({\n type: tmp.type,\n field: DataUtil.getValue(tmp.field, query)\n });\n }\n }\n return agg;\n };\n /**\n * Performs batch update in the JSON array which add, remove and update records.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n JsonAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var i;\n var deletedRecordsLen = changes.deletedRecords.length;\n for (i = 0; i < changes.addedRecords.length; i++) {\n this.insert(dm, changes.addedRecords[i]);\n }\n for (i = 0; i < changes.changedRecords.length; i++) {\n this.update(dm, e.key, changes.changedRecords[i]);\n }\n for (i = 0; i < deletedRecordsLen; i++) {\n this.remove(dm, e.key, changes.deletedRecords[i]);\n }\n return changes;\n };\n /**\n * Performs filter operation with the given data and where query.\n *\n * @param {Object[]} ds\n * @param {{validate:Function}} e\n * @param e.validate\n */\n JsonAdaptor.prototype.onWhere = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.filter(function (obj) {\n if (e) {\n return e.validate(obj);\n }\n });\n };\n /**\n * Returns aggregate function based on the aggregate type.\n *\n * @param {Object[]} ds\n * @param e\n * @param {string} } type\n * @param e.field\n * @param e.type\n */\n JsonAdaptor.prototype.onAggregates = function (ds, e) {\n var fn = DataUtil.aggregates[e.type];\n if (!ds || !fn || ds.length === 0) {\n return null;\n }\n return fn(ds, e.field);\n };\n /**\n * Performs search operation based on the given query.\n *\n * @param {Object[]} ds\n * @param {QueryOptions} e\n */\n JsonAdaptor.prototype.onSearch = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n if (e.fieldNames.length === 0) {\n DataUtil.getFieldList(ds[0], e.fieldNames);\n }\n return ds.filter(function (obj) {\n for (var j = 0; j < e.fieldNames.length; j++) {\n if (e.comparer.call(obj, DataUtil.getObject(e.fieldNames[j], obj), e.searchKey, e.ignoreCase, e.ignoreAccent)) {\n return true;\n }\n }\n return false;\n });\n };\n /**\n * Sort the data with given direction and field.\n *\n * @param {Object[]} ds\n * @param e\n * @param {Object} b\n * @param e.comparer\n * @param e.fieldName\n * @param query\n * @param isLazyLoadGroupSort\n */\n JsonAdaptor.prototype.onSortBy = function (ds, e, query, isLazyLoadGroupSort) {\n if (!ds || !ds.length) {\n return ds;\n }\n var fnCompare;\n var field = DataUtil.getValue(e.fieldName, query);\n if (!field) {\n return ds.sort(e.comparer);\n }\n if (field instanceof Array) {\n field = field.slice(0);\n for (var i = field.length - 1; i >= 0; i--) {\n if (!field[i]) {\n continue;\n }\n fnCompare = e.comparer;\n if (DataUtil.endsWith(field[i], ' desc')) {\n fnCompare = DataUtil.fnSort('descending');\n field[i] = field[i].replace(' desc', '');\n }\n ds = DataUtil.sort(ds, field[i], fnCompare);\n }\n return ds;\n }\n return DataUtil.sort(ds, isLazyLoadGroupSort ? 'key' : field, e.comparer);\n };\n /**\n * Group the data based on the given query.\n *\n * @param {Object[]} ds\n * @param {QueryOptions} e\n * @param {Query} query\n */\n JsonAdaptor.prototype.onGroup = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var agg = this.getAggregate(query);\n return DataUtil.group(ds, DataUtil.getValue(e.fieldName, query), agg, null, null, e.comparer);\n };\n /**\n * Retrieves records based on the given page index and size.\n *\n * @param {Object[]} ds\n * @param e\n * @param {number} } pageIndex\n * @param e.pageSize\n * @param {Query} query\n * @param e.pageIndex\n */\n JsonAdaptor.prototype.onPage = function (ds, e, query) {\n var size = DataUtil.getValue(e.pageSize, query);\n var start = (DataUtil.getValue(e.pageIndex, query) - 1) * size;\n var end = start + size;\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(start, end);\n };\n /**\n * Retrieves records based on the given start and end index from query.\n *\n * @param {Object[]} ds\n * @param e\n * @param {number} } end\n * @param e.start\n * @param e.end\n */\n JsonAdaptor.prototype.onRange = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.start), DataUtil.getValue(e.end));\n };\n /**\n * Picks the given count of records from the top of the datasource.\n *\n * @param {Object[]} ds\n * @param {{nos:number}} e\n * @param e.nos\n */\n JsonAdaptor.prototype.onTake = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(0, DataUtil.getValue(e.nos));\n };\n /**\n * Skips the given count of records from the data source.\n *\n * @param {Object[]} ds\n * @param {{nos:number}} e\n * @param e.nos\n */\n JsonAdaptor.prototype.onSkip = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.nos));\n };\n /**\n * Selects specified columns from the data source.\n *\n * @param {Object[]} ds\n * @param {{fieldNames:string}} e\n * @param e.fieldNames\n */\n JsonAdaptor.prototype.onSelect = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return DataUtil.select(ds, DataUtil.getValue(e.fieldNames));\n };\n /**\n * Inserts new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param tableName\n * @param query\n * @param {number} position\n */\n JsonAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n if (isNullOrUndefined(position)) {\n return dm.dataSource.json.push(data);\n } else {\n return dm.dataSource.json.splice(position, 0, data);\n }\n };\n /**\n * Remove the data from the dataSource based on the key field value.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @returns null\n */\n JsonAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n if (typeof value === 'object' && !(value instanceof Date)) {\n value = DataUtil.getObject(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (DataUtil.getObject(keyField, ds[i]) === value) {\n break;\n }\n }\n return i !== ds.length ? ds.splice(i, 1) : null;\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @returns null\n */\n JsonAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n var key;\n if (!isNullOrUndefined(keyField)) {\n key = getValue(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (!isNullOrUndefined(keyField) && getValue(keyField, ds[i]) === key) {\n break;\n }\n }\n return i < ds.length ? merge(ds[i], value) : null;\n };\n return JsonAdaptor;\n}(Adaptor);\nexport { JsonAdaptor };\n/**\n * URL Adaptor of DataManager can be used when you are required to use remote service to retrieve data.\n * It interacts with server-side for all DataManager Queries and CRUD operations.\n *\n * @hidden\n */\nvar UrlAdaptor = /** @class */function (_super) {\n __extends(UrlAdaptor, _super);\n function UrlAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the query to generate request body.\n *\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @param hierarchyFilters\n * @returns p\n */\n // tslint:disable-next-line:max-func-body-length\n UrlAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var params = query.params;\n var url = dm.dataSource.url;\n var temp;\n var skip;\n var take = null;\n var options = this.options;\n var request = {\n sorts: [],\n groups: [],\n filters: [],\n searches: [],\n aggregates: []\n };\n // calc Paging & Range\n if ('onPage' in singles) {\n temp = singles.onPage;\n skip = DataUtil.getValue(temp.pageIndex, query);\n take = DataUtil.getValue(temp.pageSize, query);\n skip = (skip - 1) * take;\n } else if ('onRange' in singles) {\n temp = singles.onRange;\n skip = temp.start;\n take = temp.end - temp.start;\n }\n // Sorting\n for (var i = 0; i < queries.sorts.length; i++) {\n temp = DataUtil.getValue(queries.sorts[i].e.fieldName, query);\n request.sorts.push(DataUtil.callAdaptorFunction(this, 'onEachSort', {\n name: temp,\n direction: queries.sorts[i].e.direction\n }, query));\n }\n // hierarchy\n if (hierarchyFilters) {\n temp = this.getFiltersFrom(hierarchyFilters, query);\n if (temp) {\n request.filters.push(DataUtil.callAdaptorFunction(this, 'onEachWhere', temp.toJson(), query));\n }\n }\n // Filters\n for (var i = 0; i < queries.filters.length; i++) {\n var res = DataUtil.callAdaptorFunction(this, 'onEachWhere', queries.filters[i].e.toJson(), query);\n if (this.getModuleName && this.getModuleName() === 'ODataV4Adaptor' && !isNullOrUndefined(queries.filters[i].e.key) && queries.filters.length > 1) {\n res = '(' + res + ')';\n }\n request.filters.push(res);\n var keys_3 = typeof request.filters[i] === 'object' ? Object.keys(request.filters[i]) : [];\n for (var _i = 0, keys_1 = keys_3; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (DataUtil.isNull(request[prop])) {\n delete request[prop];\n }\n }\n }\n // Searches\n for (var i = 0; i < queries.searches.length; i++) {\n temp = queries.searches[i].e;\n request.searches.push(DataUtil.callAdaptorFunction(this, 'onEachSearch', {\n fields: temp.fieldNames,\n operator: temp.operator,\n key: temp.searchKey,\n ignoreCase: temp.ignoreCase,\n ignoreAccent: temp.ignoreAccent\n }, query));\n }\n // Grouping\n for (var i = 0; i < queries.groups.length; i++) {\n request.groups.push(DataUtil.getValue(queries.groups[i].e.fieldName, query));\n }\n // aggregates\n for (var i = 0; i < queries.aggregates.length; i++) {\n temp = queries.aggregates[i].e;\n request.aggregates.push({\n type: temp.type,\n field: DataUtil.getValue(temp.field, query)\n });\n }\n var req = {};\n this.getRequestQuery(options, query, singles, request, req);\n // Params\n DataUtil.callAdaptorFunction(this, 'addParams', {\n dm: dm,\n query: query,\n params: params,\n reqParams: req\n });\n if (query.lazyLoad.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n req[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n }\n // cleanup\n var keys = Object.keys(req);\n for (var _a = 0, keys_2 = keys; _a < keys_2.length; _a++) {\n var prop = keys_2[_a];\n if (DataUtil.isNull(req[prop]) || req[prop] === '' || req[prop].length === 0) {\n delete req[prop];\n }\n }\n if (!(options.skip in req && options.take in req) && take !== null) {\n req[options.skip] = DataUtil.callAdaptorFunction(this, 'onSkip', skip, query);\n req[options.take] = DataUtil.callAdaptorFunction(this, 'onTake', take, query);\n }\n var p = this.pvt;\n this.pvt = {};\n if (this.options.requestType === 'json') {\n return {\n data: JSON.stringify(req, DataUtil.parse.jsonDateReplacer),\n url: url,\n pvtData: p,\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n }\n temp = this.convertToQueryString(req, query, dm);\n temp = (dm.dataSource.url.indexOf('?') !== -1 ? '&' : '/') + temp;\n return {\n type: 'GET',\n url: temp.length ? url.replace(/\\/*$/, temp) : url,\n pvtData: p\n };\n };\n UrlAdaptor.prototype.getRequestQuery = function (options, query, singles, request, request1) {\n var param = 'param';\n var req = request1;\n req[options.from] = query.fromTable;\n if (options.apply && query.distincts.length) {\n req[options.apply] = 'onDistinct' in this ? DataUtil.callAdaptorFunction(this, 'onDistinct', query.distincts) : '';\n }\n if (!query.distincts.length && options.expand) {\n req[options.expand] = 'onExpand' in this && 'onSelect' in singles ? DataUtil.callAdaptorFunction(this, 'onExpand', {\n selects: DataUtil.getValue(singles.onSelect.fieldNames, query),\n expands: query.expands\n }, query) : query.expands;\n }\n req[options.select] = 'onSelect' in singles && !query.distincts.length ? DataUtil.callAdaptorFunction(this, 'onSelect', DataUtil.getValue(singles.onSelect.fieldNames, query), query) : '';\n req[options.count] = query.isCountRequired ? DataUtil.callAdaptorFunction(this, 'onCount', query.isCountRequired, query) : '';\n req[options.search] = request.searches.length ? DataUtil.callAdaptorFunction(this, 'onSearch', request.searches, query) : '';\n req[options.skip] = 'onSkip' in singles ? DataUtil.callAdaptorFunction(this, 'onSkip', DataUtil.getValue(singles.onSkip.nos, query), query) : '';\n req[options.take] = 'onTake' in singles ? DataUtil.callAdaptorFunction(this, 'onTake', DataUtil.getValue(singles.onTake.nos, query), query) : '';\n req[options.where] = request.filters.length || request.searches.length ? DataUtil.callAdaptorFunction(this, 'onWhere', request.filters, query) : '';\n req[options.sortBy] = request.sorts.length ? DataUtil.callAdaptorFunction(this, 'onSortBy', request.sorts, query) : '';\n req[options.group] = request.groups.length ? DataUtil.callAdaptorFunction(this, 'onGroup', request.groups, query) : '';\n req[options.aggregates] = request.aggregates.length ? DataUtil.callAdaptorFunction(this, 'onAggregates', request.aggregates, query) : '';\n req[param] = [];\n };\n /**\n * Convert the object from processQuery to string which can be added query string.\n *\n * @param {Object} req\n * @param request\n * @param {Query} query\n * @param {DataManager} dm\n */\n UrlAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n return '';\n // this needs to be overridden\n };\n /**\n * Return the data from the data manager processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Object} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n */\n UrlAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (xhr && xhr.headers.get('Content-Type') && xhr.headers.get('Content-Type').indexOf('application/json') !== -1) {\n var handleTimeZone = DataUtil.timeZoneHandling;\n if (ds && !ds.timeZoneHandling) {\n DataUtil.timeZoneHandling = false;\n }\n if (!ds.enableCache) {\n data = DataUtil.parse.parseJson(data);\n }\n DataUtil.timeZoneHandling = handleTimeZone;\n }\n var requests = request;\n var pvt = requests.pvtData || {};\n var groupDs = data ? data.groupDs : [];\n if (xhr && xhr.headers.get('Content-Type') && xhr.headers.get('Content-Type').indexOf('xml') !== -1) {\n return query.isCountRequired ? {\n result: [],\n count: 0\n } : [];\n }\n var d = JSON.parse(requests.data);\n if (d && d.action === 'batch' && data && data.addedRecords && !isNullOrUndefined(changes)) {\n changes.addedRecords = data.addedRecords;\n return changes;\n }\n if (data && data.d) {\n data = data.d;\n }\n var args = {};\n if (data && 'count' in data) {\n args.count = data.count;\n }\n args.result = data && data.result ? data.result : data;\n var isExpand = false;\n if (Array.isArray(data.result) && data.result.length) {\n var key = 'key';\n var val = 'value';\n var level = 'level';\n if (!isNullOrUndefined(data.result[0][key])) {\n args.result = this.formRemoteGroupedData(args.result, 1, pvt.groups.length - 1);\n }\n if (query && query.lazyLoad.length && pvt.groups.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n if (query.lazyLoad[i][key] === 'onDemandGroupInfo') {\n var value = query.lazyLoad[i][val][level];\n if (pvt.groups.length === value) {\n isExpand = true;\n }\n }\n }\n }\n }\n if (!isExpand) {\n this.getAggregateResult(pvt, data, args, groupDs, query);\n }\n return DataUtil.isNull(args.count) ? args.result : {\n result: args.result,\n count: args.count,\n aggregates: args.aggregates\n };\n };\n UrlAdaptor.prototype.formRemoteGroupedData = function (data, level, childLevel) {\n for (var i = 0; i < data.length; i++) {\n if (data[i].items.length && Object.keys(data[i].items[0]).indexOf('key') > -1) {\n this.formRemoteGroupedData(data[i].items, level + 1, childLevel - 1);\n }\n }\n var uid = 'GroupGuid';\n var childLvl = 'childLevels';\n var lvl = 'level';\n var records = 'records';\n data[uid] = consts[uid];\n data[lvl] = level;\n data[childLvl] = childLevel;\n data[records] = data[0].items.length ? this.getGroupedRecords(data, !isNullOrUndefined(data[0].items[records])) : [];\n return data;\n };\n UrlAdaptor.prototype.getGroupedRecords = function (data, hasRecords) {\n var childGroupedRecords = [];\n var records = 'records';\n for (var i = 0; i < data.length; i++) {\n if (!hasRecords) {\n for (var j = 0; j < data[i].items.length; j++) {\n childGroupedRecords.push(data[i].items[j]);\n }\n } else {\n childGroupedRecords = childGroupedRecords.concat(data[i].items[records]);\n }\n }\n return childGroupedRecords;\n };\n /**\n * Add the group query to the adaptor`s option.\n *\n * @param {Object[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return e;\n };\n /**\n * Add the aggregate query to the adaptor`s option.\n *\n * @param {Aggregates[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n * @param query\n * @param original\n */\n UrlAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var url;\n var key;\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.removeUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e[url],\n key: e[key]\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {Request} request\n * @param {Fetch} settings?\n * @returns void\n */\n UrlAdaptor.prototype.beforeSend = function (dm, request, settings) {\n // need to extend this method\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.insert = function (dm, data, tableName, query) {\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number|string} value\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.remove = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: value,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.update = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: value,\n action: 'update',\n keyColumn: keyField,\n key: DataUtil.getObject(keyField, value),\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * To generate the predicate based on the filtered query.\n *\n * @param {Object[]|string[]|number[]} data\n * @param {Query} query\n * @hidden\n */\n UrlAdaptor.prototype.getFiltersFrom = function (data, query) {\n var key = query.fKey;\n var value;\n var prop = key;\n var pKey = query.key;\n var predicats = [];\n if (typeof data[0] !== 'object') {\n prop = null;\n }\n for (var i = 0; i < data.length; i++) {\n if (typeof data[0] === 'object') {\n value = DataUtil.getObject(pKey || prop, data[i]);\n } else {\n value = data[i];\n }\n predicats.push(new Predicate(key, 'equal', value));\n }\n return Predicate.or(predicats);\n };\n UrlAdaptor.prototype.getAggregateResult = function (pvt, data, args, groupDs, query) {\n var pData = data;\n if (data && data.result) {\n pData = data.result;\n }\n if (pvt && pvt.aggregates && pvt.aggregates.length) {\n var agg = pvt.aggregates;\n var fn = void 0;\n var aggregateData = pData;\n var res = {};\n if (data.aggregate) {\n aggregateData = data.aggregate;\n }\n for (var i = 0; i < agg.length; i++) {\n fn = DataUtil.aggregates[agg[i].type];\n if (fn) {\n res[agg[i].field + ' - ' + agg[i].type] = fn(aggregateData, agg[i].field);\n }\n }\n args.aggregates = res;\n }\n var key = 'key';\n var isServerGrouping = Array.isArray(data.result) && data.result.length && !isNullOrUndefined(data.result[0][key]);\n if (pvt && pvt.groups && pvt.groups.length && !isServerGrouping) {\n var groups = pvt.groups;\n for (var i = 0; i < groups.length; i++) {\n var level = null;\n if (!isNullOrUndefined(groupDs)) {\n groupDs = DataUtil.group(groupDs, groups[i]);\n }\n var groupQuery = Query.filterQueries(query.queries, 'onGroup')[i].e;\n pData = DataUtil.group(pData, groups[i], pvt.aggregates, level, groupDs, groupQuery.comparer);\n }\n args.result = pData;\n }\n return args;\n };\n UrlAdaptor.prototype.getQueryRequest = function (query) {\n var req = {\n sorts: [],\n groups: [],\n filters: [],\n searches: [],\n aggregates: []\n };\n req.sorts = Query.filterQueries(query.queries, 'onSortBy');\n req.groups = Query.filterQueries(query.queries, 'onGroup');\n req.filters = Query.filterQueries(query.queries, 'onWhere');\n req.searches = Query.filterQueries(query.queries, 'onSearch');\n req.aggregates = Query.filterQueries(query.queries, 'onAggregates');\n return req;\n };\n UrlAdaptor.prototype.addParams = function (options) {\n var req = options.reqParams;\n if (options.params.length) {\n req.params = {};\n }\n for (var _i = 0, _a = options.params; _i < _a.length; _i++) {\n var tmp = _a[_i];\n if (req[tmp.key]) {\n throw new Error('Query() - addParams: Custom Param is conflicting other request arguments');\n }\n req[tmp.key] = tmp.value;\n if (tmp.fn) {\n req[tmp.key] = tmp.fn.call(options.query, tmp.key, options.query, options.dm);\n }\n req.params[tmp.key] = req[tmp.key];\n }\n };\n return UrlAdaptor;\n}(Adaptor);\nexport { UrlAdaptor };\n/**\n * OData Adaptor that is extended from URL Adaptor, is used for consuming data through OData Service.\n *\n * @hidden\n */\nvar ODataAdaptor = /** @class */function (_super) {\n __extends(ODataAdaptor, _super);\n function ODataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json;odata=light;q=1,application/json;odata=verbose;q=0.5',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$inlinecount',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PUT'\n });\n extend(_this.options, props || {});\n return _this;\n }\n ODataAdaptor.prototype.getModuleName = function () {\n return 'ODataAdaptor';\n };\n /**\n * Generate request string based on the filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var operator;\n var guid;\n var val = predicate.value;\n var type = typeof val;\n var field = predicate.field ? ODataAdaptor.getField(predicate.field) : null;\n if (val instanceof Date) {\n val = 'datetime\\'' + DataUtil.parse.replacer(val) + '\\'';\n }\n if (type === 'string') {\n val = val.replace(/'/g, '\\'\\'');\n if (predicate.ignoreCase) {\n val = val.toLowerCase();\n }\n if (predicate.operator !== 'like') {\n val = encodeURIComponent(val);\n }\n if (predicate.operator !== 'wildcard' && predicate.operator !== 'like') {\n val = '\\'' + val + '\\'';\n }\n if (requiresCast) {\n field = 'cast(' + field + ', \\'Edm.String\\')';\n }\n if (DataUtil.parse.isGuid(val)) {\n guid = 'guid';\n }\n if (predicate.ignoreCase) {\n if (!guid) {\n field = 'tolower(' + field + ')';\n }\n val = val.toLowerCase();\n }\n }\n if (predicate.operator === 'isempty' || predicate.operator === 'isnull' || predicate.operator === 'isnotempty' || predicate.operator === 'isnotnull') {\n operator = predicate.operator.indexOf('isnot') !== -1 ? DataUtil.odBiOperator['notequal'] : DataUtil.odBiOperator['equal'];\n val = predicate.operator === 'isnull' || predicate.operator === 'isnotnull' ? null : '\\'\\'';\n } else {\n operator = DataUtil.odBiOperator[predicate.operator];\n }\n if (operator) {\n returnValue += field;\n returnValue += operator;\n if (guid) {\n returnValue += guid;\n }\n return returnValue + val;\n }\n if (!isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor') {\n operator = DataUtil.odv4UniOperator[predicate.operator];\n } else {\n operator = DataUtil.odUniOperator[predicate.operator];\n }\n if (operator === 'like') {\n val = val;\n if (val.indexOf('%') !== -1) {\n if (val.charAt(0) === '%' && val.lastIndexOf('%') < 2) {\n val = val.substring(1, val.length);\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ? DataUtil.odv4UniOperator['startswith'] : DataUtil.odUniOperator['startswith'];\n } else if (val.charAt(val.length - 1) === '%' && val.indexOf('%') > val.length - 3) {\n val = val.substring(0, val.length - 1);\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ? DataUtil.odv4UniOperator['endswith'] : DataUtil.odUniOperator['endswith'];\n } else if (val.lastIndexOf('%') !== val.indexOf('%') && val.lastIndexOf('%') > val.indexOf('%') + 1) {\n val = val.substring(val.indexOf('%') + 1, val.lastIndexOf('%'));\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ? DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n } else {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ? DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n }\n }\n val = encodeURIComponent(val);\n val = '\\'' + val + '\\'';\n } else if (operator === 'wildcard') {\n val = val;\n if (val.indexOf('*') !== -1) {\n var splittedStringValue = val.split('*');\n var splittedValue = void 0;\n var count = 0;\n if (val.indexOf('*') !== 0 && splittedStringValue[0].indexOf('%3f') === -1 && splittedStringValue[0].indexOf('?') === -1) {\n splittedValue = splittedStringValue[0];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ? DataUtil.odv4UniOperator['startswith'] : DataUtil.odUniOperator['startswith'];\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n if (val.lastIndexOf('*') !== val.length - 1 && splittedStringValue[splittedStringValue.length - 1].indexOf('%3f') === -1 && splittedStringValue[splittedStringValue.length - 1].indexOf('?') === -1) {\n splittedValue = splittedStringValue[splittedStringValue.length - 1];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ? DataUtil.odv4UniOperator['endswith'] : DataUtil.odUniOperator['endswith'];\n if (count > 0) {\n returnValue += ' and ';\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n if (splittedStringValue.length > 2) {\n for (var i = 1; i < splittedStringValue.length - 1; i++) {\n if (splittedStringValue[i].indexOf('%3f') === -1 && splittedStringValue[i].indexOf('?') === -1) {\n splittedValue = splittedStringValue[i];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ? DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (count > 0) {\n returnValue += ' and ';\n }\n if (operator === 'substringof' || operator === 'not substringof') {\n var temp = splittedValue;\n splittedValue = field;\n field = temp;\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n }\n }\n if (count === 0) {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ? DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (val.indexOf('?') !== -1 || val.indexOf('%3f') !== -1) {\n val = val.indexOf('?') !== -1 ? val.split('?').join('') : val.split('%3f').join('');\n }\n val = '\\'' + val + '\\'';\n } else {\n operator = 'wildcard';\n }\n } else {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ? DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (val.indexOf('?') !== -1 || val.indexOf('%3f') !== -1) {\n val = val.indexOf('?') !== -1 ? val.split('?').join('') : val.split('%3f').join('');\n }\n val = '\\'' + val + '\\'';\n }\n }\n if (operator === 'substringof' || operator === 'not substringof') {\n var temp = val;\n val = field;\n field = temp;\n }\n if (operator !== 'wildcard') {\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += val + ')';\n }\n return returnValue;\n };\n ODataAdaptor.prototype.addParams = function (options) {\n _super.prototype.addParams.call(this, options);\n delete options.reqParams.params;\n };\n /**\n * Generate request string based on the multiple filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onComplexPredicate = function (predicate, query, requiresCast) {\n var res = [];\n for (var i = 0; i < predicate.predicates.length; i++) {\n res.push('(' + this.onEachWhere(predicate.predicates[i], query, requiresCast) + ')');\n }\n return res.join(' ' + predicate.condition + ' ');\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n *\n * @param {Predicate} filter\n * @param {boolean} requiresCast?\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onEachWhere = function (filter, query, requiresCast) {\n return filter.isComplex ? this.onComplexPredicate(filter, query, requiresCast) : this.onPredicate(filter, query, requiresCast);\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n *\n * @param {string[]} filters\n */\n ODataAdaptor.prototype.onWhere = function (filters) {\n if (this.pvt.search) {\n filters.push(this.onEachWhere(this.pvt.search, null, true));\n }\n return filters.join(' and ');\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n *\n * @param e\n * @param {string} operator\n * @param {string} key\n * @param {boolean} } ignoreCase\n * @param e.fields\n * @param e.operator\n * @param e.key\n * @param e.ignoreCase\n */\n ODataAdaptor.prototype.onEachSearch = function (e) {\n if (e.fields && e.fields.length === 0) {\n DataUtil.throwError('Query() - Search : oData search requires list of field names to search');\n }\n var filter = this.pvt.search || [];\n for (var i = 0; i < e.fields.length; i++) {\n filter.push(new Predicate(e.fields[i], e.operator, e.key, e.ignoreCase));\n }\n this.pvt.search = filter;\n };\n /**\n * Generate query string based on the search criteria from query.\n *\n * @param {Object} e\n */\n ODataAdaptor.prototype.onSearch = function (e) {\n this.pvt.search = Predicate.or(this.pvt.search);\n return '';\n };\n /**\n * Generate query string based on multiple sort criteria from query.\n *\n * @param {QueryOptions} e\n */\n ODataAdaptor.prototype.onEachSort = function (e) {\n var res = [];\n if (e.name instanceof Array) {\n for (var i = 0; i < e.name.length; i++) {\n res.push(ODataAdaptor.getField(e.name[i]) + (e.direction === 'descending' ? ' desc' : ''));\n }\n } else {\n res.push(ODataAdaptor.getField(e.name) + (e.direction === 'descending' ? ' desc' : ''));\n }\n return res.join(',');\n };\n /**\n * Returns sort query string.\n *\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSortBy = function (e) {\n return e.reverse().join(',');\n };\n /**\n * Adds the group query to the adaptor option.\n *\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return [];\n };\n /**\n * Returns the select query string.\n *\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSelect = function (e) {\n for (var i = 0; i < e.length; i++) {\n e[i] = ODataAdaptor.getField(e[i]);\n }\n return e.join(',');\n };\n /**\n * Add the aggregate query to the adaptor option.\n *\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n return '';\n };\n /**\n * Returns the query string which requests total count from the data source.\n *\n * @param {boolean} e\n * @returns string\n */\n ODataAdaptor.prototype.onCount = function (e) {\n return e === true ? 'allpages' : '';\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {Request} request\n * @param {Fetch} settings?\n * @param settings\n */\n ODataAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (DataUtil.endsWith(settings.url, this.options.batch) && settings.type.toLowerCase() === 'post') {\n request.headers.set('Accept', this.options.multipartAccept);\n request.headers.set('DataServiceVersion', '2.0');\n //request.overrideMimeType('text/plain; charset=x-user-defined');\n } else {\n request.headers.set('Accept', this.options.accept);\n }\n request.headers.set('DataServiceVersion', '2.0');\n request.headers.set('MaxDataServiceVersion', '2.0');\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Fetch} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n ODataAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaCheck = 'odata.metadata';\n if (request && request.type === 'GET' && !this.rootUrl && data[metaCheck]) {\n var dataUrls = data[metaCheck].split('/$metadata#');\n this.rootUrl = dataUrls[0];\n this.resourceTableName = dataUrls[1];\n }\n var pvtData = 'pvtData';\n if (!isNullOrUndefined(data.d)) {\n var dataCopy = query && query.isCountRequired ? data.d.results : data.d;\n var metaData = '__metadata';\n if (!isNullOrUndefined(dataCopy)) {\n for (var i = 0; i < dataCopy.length; i++) {\n if (!isNullOrUndefined(dataCopy[i][metaData])) {\n delete dataCopy[i][metaData];\n }\n }\n }\n }\n var pvt = request && request[pvtData];\n var emptyAndBatch = this.processBatchResponse(data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var versionCheck = xhr && request.fetchRequest.headers.get('DataServiceVersion');\n var count = null;\n var version = versionCheck && parseInt(versionCheck, 10) || 2;\n if (query && query.isCountRequired) {\n var oDataCount = '__count';\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n if (data.d) {\n data = data.d;\n }\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n }\n if (version === 3 && data.value) {\n data = data.value;\n }\n if (data.d) {\n data = data.d;\n }\n if (version < 3 && data.results) {\n data = data.results;\n }\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : {\n result: args.result,\n count: args.count,\n aggregates: args.aggregates\n };\n };\n /**\n * Converts the request object to query string.\n *\n * @param {Object} req\n * @param request\n * @param {Query} query\n * @param {DataManager} dm\n * @returns tableName\n */\n ODataAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n var res = [];\n var table = 'table';\n var tableName = request[table] || '';\n var format = '$format';\n delete request[table];\n if (dm.dataSource.requiresFormat) {\n request[format] = 'json';\n }\n var keys = Object.keys(request);\n for (var _i = 0, keys_4 = keys; _i < keys_4.length; _i++) {\n var prop = keys_4[_i];\n res.push(prop + '=' + request[prop]);\n }\n res = res.join('&');\n if (dm.dataSource.url && dm.dataSource.url.indexOf('?') !== -1 && !tableName) {\n return res;\n }\n return res.length ? tableName + '?' + res : tableName || '';\n };\n ODataAdaptor.prototype.localTimeReplacer = function (key, convertObj) {\n for (var _i = 0, _a = !isNullOrUndefined(convertObj) ? Object.keys(convertObj) : []; _i < _a.length; _i++) {\n var prop = _a[_i];\n if (convertObj[prop] instanceof Date) {\n convertObj[prop] = DataUtil.dateParse.toLocalTime(convertObj[prop]);\n }\n }\n return convertObj;\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n ODataAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n url: (dm.dataSource.insertUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : ''),\n data: JSON.stringify(data, this.options.localTime ? this.localTimeReplacer : null)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n * @param tableName\n */\n ODataAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var url;\n if (typeof value === 'string' && !DataUtil.parse.isGuid(value)) {\n url = \"('\" + value + \"')\";\n } else {\n url = \"(\" + value + \")\";\n }\n return {\n type: 'DELETE',\n url: (dm.dataSource.removeUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url\n };\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @param query\n * @param original\n * @returns this\n */\n ODataAdaptor.prototype.update = function (dm, keyField, value, tableName, query, original) {\n if (this.options.updateType === 'PATCH' && !isNullOrUndefined(original)) {\n value = this.compareAndRemove(value, original, keyField);\n }\n var url;\n if (typeof value[keyField] === 'string' && !DataUtil.parse.isGuid(value[keyField])) {\n url = \"('\" + value[keyField] + \"')\";\n } else {\n url = \"(\" + value[keyField] + \")\";\n }\n return {\n type: this.options.updateType,\n url: (dm.dataSource.updateUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url,\n data: JSON.stringify(value, this.options.localTime ? this.localTimeReplacer : null),\n accept: this.options.accept\n };\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @param query\n * @param original\n * @returns {Object}\n */\n ODataAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = dm.dataSource.batchUrl || this.rootUrl ? (dm.dataSource.batchUrl || this.rootUrl) + '/' + this.options.batch : (dm.dataSource.batchUrl || dm.dataSource.url).replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var args = {\n url: e.url,\n key: e.key,\n cid: 1,\n cSet: DataUtil.getGuid(this.options.changeSet)\n };\n var req = '--' + initialGuid + '\\n';\n req += 'Content-Type: multipart/mixed; boundary=' + args.cSet.replace('--', '') + '\\n';\n this.pvt.changeSet = 0;\n req += this.generateInsertRequest(changes.addedRecords, args, dm);\n req += this.generateUpdateRequest(changes.changedRecords, args, dm, original ? original.changedRecords : []);\n req += this.generateDeleteRequest(changes.deletedRecords, args, dm);\n req += args.cSet + '--\\n';\n req += '--' + initialGuid + '--';\n return {\n type: 'POST',\n url: url,\n dataType: 'json',\n contentType: 'multipart/mixed; charset=UTF-8;boundary=' + initialGuid,\n data: req\n };\n };\n /**\n * Generate the string content from the removed records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n * @returns this\n */\n ODataAdaptor.prototype.generateDeleteRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '(' + url + ')';\n } else if (url instanceof Date) {\n var dateTime = data[i][key];\n return '(' + dateTime.toJSON() + ')';\n } else {\n return \"('\" + url + \"')\";\n }\n },\n 'data': function (data, i) {\n return '';\n }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req + '\\n';\n };\n /**\n * Generate the string content from the inserted records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n */\n ODataAdaptor.prototype.generateInsertRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) {\n return '';\n },\n 'data': function (data, i) {\n return JSON.stringify(data[i]) + '\\n\\n';\n }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n /**\n * Generate the string content from the updated records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n * @param org\n */\n ODataAdaptor.prototype.generateUpdateRequest = function (arr, e, dm, org) {\n var _this = this;\n if (!arr) {\n return '';\n }\n var req = '';\n arr.forEach(function (change) {\n return change = _this.compareAndRemove(change, org.filter(function (o) {\n return DataUtil.getObject(e.key, o) === DataUtil.getObject(e.key, change);\n })[0], e.key);\n });\n var stat = {\n 'method': this.options.updateType + ' ',\n 'url': function (data, i, key) {\n if (typeof data[i][key] === 'number' || DataUtil.parse.isGuid(data[i][key])) {\n return '(' + data[i][key] + ')';\n } else if (data[i][key] instanceof Date) {\n var date = data[i][key];\n return '(' + date.toJSON() + ')';\n } else {\n return \"('\" + data[i][key] + \"')\";\n }\n },\n 'data': function (data, i) {\n return JSON.stringify(data[i]) + '\\n\\n';\n }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n ODataAdaptor.getField = function (prop) {\n return prop.replace(/\\./g, '/');\n };\n ODataAdaptor.prototype.generateBodyContent = function (arr, e, stat, dm) {\n var req = '';\n for (var i = 0; i < arr.length; i++) {\n req += '\\n' + e.cSet + '\\n';\n req += this.options.changeSetContent + '\\n\\n';\n req += stat.method;\n if (stat.method === 'POST ') {\n req += (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n } else if (stat.method === 'PUT ' || stat.method === 'PATCH ') {\n req += (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n } else if (stat.method === 'DELETE ') {\n req += (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n req += 'Accept: ' + this.options.accept + '\\n';\n req += 'Content-Id: ' + this.pvt.changeSet++ + '\\n';\n req += this.options.batchChangeSetContentType + '\\n';\n if (!isNullOrUndefined(arr[i]['@odata.etag'])) {\n req += 'If-Match: ' + arr[i]['@odata.etag'] + '\\n\\n';\n delete arr[i]['@odata.etag'];\n } else {\n req += '\\n';\n }\n req += stat.data(arr, i);\n }\n return req;\n };\n ODataAdaptor.prototype.processBatchResponse = function (data, query, xhr, request, changes) {\n if (xhr && xhr.headers.get('Content-Type') && xhr.headers.get('Content-Type').indexOf('xml') !== -1) {\n return query.isCountRequired ? {\n result: [],\n count: 0\n } : [];\n }\n if (request && this.options.batch && DataUtil.endsWith(request.url, this.options.batch) && request.type.toLowerCase() === 'post') {\n var guid = xhr.headers.get('Content-Type');\n var cIdx = void 0;\n var jsonObj = void 0;\n var d = data + '';\n guid = guid.substring(guid.indexOf('=batchresponse') + 1);\n d = d.split(guid);\n if (d.length < 2) {\n return {};\n }\n d = d[1];\n var exVal = /(?:\\bContent-Type.+boundary=)(changesetresponse.+)/i.exec(d);\n if (exVal) {\n d.replace(exVal[0], '');\n }\n var changeGuid = exVal ? exVal[1] : '';\n d = d.split(changeGuid);\n for (var i = d.length; i > -1; i--) {\n if (!/\\bContent-ID:/i.test(d[i]) || !/\\bHTTP.+201/.test(d[i])) {\n continue;\n }\n cIdx = parseInt(/\\bContent-ID: (\\d+)/i.exec(d[i])[1], 10);\n if (changes.addedRecords[cIdx]) {\n jsonObj = DataUtil.parse.parseJson(/^\\{.+\\}/m.exec(d[i])[0]);\n extend({}, changes.addedRecords[cIdx], this.processResponse(jsonObj));\n }\n }\n return changes;\n }\n return null;\n };\n ODataAdaptor.prototype.compareAndRemove = function (data, original, key) {\n var _this = this;\n if (isNullOrUndefined(original)) {\n return data;\n }\n Object.keys(data).forEach(function (prop) {\n if (prop !== key && prop !== '@odata.etag') {\n if (DataUtil.isPlainObject(data[prop])) {\n _this.compareAndRemove(data[prop], original[prop]);\n var final = Object.keys(data[prop]).filter(function (data) {\n return data !== '@odata.etag';\n });\n if (final.length === 0) {\n delete data[prop];\n }\n } else if (data[prop] === original[prop]) {\n delete data[prop];\n } else if (data[prop] && original[prop] && data[prop].valueOf() === original[prop].valueOf()) {\n delete data[prop];\n }\n }\n });\n return data;\n };\n return ODataAdaptor;\n}(UrlAdaptor);\nexport { ODataAdaptor };\n/**\n * The OData v4 is an improved version of OData protocols.\n * The DataManager uses the ODataV4Adaptor to consume OData v4 services.\n *\n * @hidden\n */\nvar ODataV4Adaptor = /** @class */function (_super) {\n __extends(ODataV4Adaptor, _super);\n function ODataV4Adaptor(props) {\n var _this = _super.call(this, props) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json, text/javascript, */*; q=0.01',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$count',\n search: '$search',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PATCH',\n localTime: false,\n apply: '$apply'\n });\n extend(_this.options, props || {});\n return _this;\n }\n /**\n * @hidden\n */\n ODataV4Adaptor.prototype.getModuleName = function () {\n return 'ODataV4Adaptor';\n };\n /**\n * Returns the query string which requests total count from the data source.\n *\n * @param {boolean} e\n * @returns string\n */\n ODataV4Adaptor.prototype.onCount = function (e) {\n return e === true ? 'true' : '';\n };\n /**\n * Generate request string based on the filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataV4Adaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var val = predicate.value;\n var isDate = val instanceof Date;\n if (query instanceof Query) {\n var queries = this.getQueryRequest(query);\n for (var i = 0; i < queries.filters.length; i++) {\n if (queries.filters[i].e.key === predicate.value) {\n requiresCast = true;\n }\n }\n }\n returnValue = _super.prototype.onPredicate.call(this, predicate, query, requiresCast);\n if (isDate) {\n returnValue = returnValue.replace(/datetime'(.*)'$/, '$1');\n }\n if (DataUtil.parse.isGuid(val)) {\n returnValue = returnValue.replace('guid', '').replace(/'/g, '');\n }\n return returnValue;\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n *\n * @param e\n * @param {string} operator\n * @param {string} key\n * @param {boolean} } ignoreCase\n * @param e.fields\n * @param e.operator\n * @param e.key\n * @param e.ignoreCase\n */\n ODataV4Adaptor.prototype.onEachSearch = function (e) {\n var search = this.pvt.searches || [];\n search.push(e.key);\n this.pvt.searches = search;\n };\n /**\n * Generate query string based on the search criteria from query.\n *\n * @param {Object} e\n */\n ODataV4Adaptor.prototype.onSearch = function (e) {\n return this.pvt.searches.join(' OR ');\n };\n /**\n * Returns the expand query string.\n *\n * @param {string} e\n * @param e.selects\n * @param e.expands\n */\n ODataV4Adaptor.prototype.onExpand = function (e) {\n var _this = this;\n var selected = {};\n var expanded = {};\n var expands = e.expands.slice();\n var exArr = [];\n var selects = e.selects.filter(function (item) {\n return item.indexOf('.') > -1;\n });\n selects.forEach(function (select) {\n var splits = select.split('.');\n if (!(splits[0] in selected)) {\n selected[splits[0]] = [];\n }\n if (splits.length === 2) {\n if (selected[splits[0]].length && Object.keys(selected).indexOf(splits[0]) !== -1) {\n if (selected[splits[0]][0].indexOf('$expand') !== -1 && selected[splits[0]][0].indexOf(';$select=') === -1) {\n selected[splits[0]][0] = selected[splits[0]][0] + ';' + '$select=' + splits[1];\n } else {\n selected[splits[0]][0] = selected[splits[0]][0] + ',' + splits[1];\n }\n } else {\n selected[splits[0]].push('$select=' + splits[1]);\n }\n } else {\n var sel = '$select=' + splits[splits.length - 1];\n var exp = '';\n var close_1 = '';\n for (var i = 1; i < splits.length - 1; i++) {\n exp = exp + '$expand=' + splits[i] + '(';\n close_1 = close_1 + ')';\n }\n var combineVal = exp + sel + close_1;\n if (selected[splits[0]].length && Object.keys(selected).indexOf(splits[0]) !== -1 && _this.expandQueryIndex(selected[splits[0]], true)) {\n var idx = _this.expandQueryIndex(selected[splits[0]]);\n selected[splits[0]][idx] = selected[splits[0]][idx] + combineVal.replace('$expand=', ',');\n } else {\n selected[splits[0]].push(combineVal);\n }\n }\n });\n //Auto expand from select query\n Object.keys(selected).forEach(function (expand) {\n if (expands.indexOf(expand) === -1) {\n expands.push(expand);\n }\n });\n expands.forEach(function (expand) {\n expanded[expand] = expand in selected ? expand + \"(\" + selected[expand].join(';') + \")\" : expand;\n });\n Object.keys(expanded).forEach(function (ex) {\n return exArr.push(expanded[ex]);\n });\n return exArr.join(',');\n };\n ODataV4Adaptor.prototype.expandQueryIndex = function (query, isExpand) {\n for (var i = 0; i < query.length; i++) {\n if (query[i].indexOf('$expand') !== -1) {\n return isExpand ? true : i;\n }\n }\n return isExpand ? false : 0;\n };\n /**\n * Returns the groupby query string.\n *\n * @param {string} e\n * @param distinctFields\n */\n ODataV4Adaptor.prototype.onDistinct = function (distinctFields) {\n var fields = distinctFields.map(function (field) {\n return ODataAdaptor.getField(field);\n }).join(',');\n return \"groupby((\" + fields + \"))\";\n };\n /**\n * Returns the select query string.\n *\n * @param {string[]} e\n */\n ODataV4Adaptor.prototype.onSelect = function (e) {\n return _super.prototype.onSelect.call(this, e.filter(function (item) {\n return item.indexOf('.') === -1;\n }));\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {Request} request\n * @param {Fetch} settings\n * @returns void\n */\n ODataV4Adaptor.prototype.beforeSend = function (dm, request, settings) {\n if (settings.type === 'POST' || settings.type === 'PUT' || settings.type === 'PATCH') {\n request.headers.set('Prefer', 'return=representation');\n }\n request.headers.set('Accept', this.options.accept);\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Fetch} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n ODataV4Adaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaName = '@odata.context';\n var metaV4Name = '@context';\n if (request && request.type === 'GET' && !this.rootUrl && (data[metaName] || data[metaV4Name])) {\n var dataUrl = data[metaName] ? data[metaName].split('/$metadata#') : data[metaV4Name].split('/$metadata#');\n this.rootUrl = dataUrl[0];\n this.resourceTableName = dataUrl[1];\n }\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var emptyAndBatch = _super.prototype.processBatchResponse.call(this, data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var count = null;\n var dataCount = '@odata.count';\n var dataV4Count = '@count';\n if (query && query.isCountRequired) {\n if (dataCount in data) {\n count = data[dataCount];\n } else if (dataV4Count in data) {\n count = data[dataV4Count];\n }\n }\n data = !isNullOrUndefined(data.value) ? data.value : data;\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : {\n result: args.result,\n count: count,\n aggregates: args.aggregates\n };\n };\n return ODataV4Adaptor;\n}(ODataAdaptor);\nexport { ODataV4Adaptor };\n/**\n * The Web API is a programmatic interface to define the request and response messages system that is mostly exposed in JSON or XML.\n * The DataManager uses the WebApiAdaptor to consume Web API.\n * Since this adaptor is targeted to interact with Web API created using OData endpoint, it is extended from ODataAdaptor\n *\n * @hidden\n */\nvar WebApiAdaptor = /** @class */function (_super) {\n __extends(WebApiAdaptor, _super);\n function WebApiAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n WebApiAdaptor.prototype.getModuleName = function () {\n return 'WebApiAdaptor';\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n type: 'POST',\n url: dm.dataSource.url,\n data: JSON.stringify(data)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n return {\n type: 'DELETE',\n url: dm.dataSource.url + '/' + value,\n data: JSON.stringify(value)\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n return {\n type: 'PUT',\n url: dm.dataSource.url,\n data: JSON.stringify(value)\n };\n };\n WebApiAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var _this = this;\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var req = [];\n var _loop_1 = function (i, x) {\n changes.addedRecords.forEach(function (j, d) {\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) {\n return '';\n },\n 'data': function (data, i) {\n return JSON.stringify(data[i]) + '\\n\\n';\n }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('POST ' + '/api/' + (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url) + stat.url(changes.addedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //insertion\n for (var i = 0, x = changes.addedRecords.length; i < x; i++) {\n _loop_1(i, x);\n }\n var _loop_2 = function (i, x) {\n changes.changedRecords.forEach(function (j, d) {\n var stat = {\n 'method': _this.options.updateType + ' ',\n 'url': function (data, i, key) {\n return '';\n },\n 'data': function (data, i) {\n return JSON.stringify(data[i]) + '\\n\\n';\n }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('PUT ' + '/api/' + (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url) + stat.url(changes.changedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //updation\n for (var i = 0, x = changes.changedRecords.length; i < x; i++) {\n _loop_2(i, x);\n }\n var _loop_3 = function (i, x) {\n changes.deletedRecords.forEach(function (j, d) {\n var state = {\n 'mtd': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '/' + url;\n } else if (url instanceof Date) {\n var datTime = data[i][key];\n return '/' + datTime.toJSON();\n } else {\n return \"/'\" + url + \"'\";\n }\n },\n 'data': function (data, i) {\n return '';\n }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('DELETE ' + '/api/' + (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url) + state.url(changes.deletedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //deletion\n for (var i = 0, x = changes.deletedRecords.length; i < x; i++) {\n _loop_3(i, x);\n }\n req.push('--' + initialGuid + '--', '');\n return {\n type: 'POST',\n url: url,\n contentType: 'multipart/mixed; boundary=' + initialGuid,\n data: req.join('\\r\\n')\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {Request} request\n * @param {Fetch} settings\n * @returns void\n */\n WebApiAdaptor.prototype.beforeSend = function (dm, request, settings) {\n request.headers.set('Accept', 'application/json, text/javascript, */*; q=0.01');\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Fetch} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n WebApiAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var count = null;\n var args = {};\n if (request && request.type.toLowerCase() !== 'post') {\n var versionCheck = xhr && request.fetchRequest.headers.get('DataServiceVersion');\n var version = versionCheck && parseInt(versionCheck, 10) || 2;\n if (query && query.isCountRequired) {\n if (!DataUtil.isNull(data.Count)) {\n count = data.Count;\n }\n }\n if (version < 3 && data.Items) {\n data = data.Items;\n }\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n }\n args.result = args.result || data;\n return DataUtil.isNull(count) ? args.result : {\n result: args.result,\n count: args.count,\n aggregates: args.aggregates\n };\n };\n return WebApiAdaptor;\n}(ODataAdaptor);\nexport { WebApiAdaptor };\n/**\n * WebMethodAdaptor can be used by DataManager to interact with web method.\n *\n * @hidden\n */\nvar WebMethodAdaptor = /** @class */function (_super) {\n __extends(WebMethodAdaptor, _super);\n function WebMethodAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Prepare the request body based on the query.\n * The query information can be accessed at the WebMethod using variable named `value`.\n *\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @param hierarchyFilters\n * @returns application\n */\n WebMethodAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var obj = new UrlAdaptor().processQuery(dm, query, hierarchyFilters);\n var getData = 'data';\n var data = DataUtil.parse.parseJson(obj[getData]);\n var result = {};\n var value = 'value';\n if (data.param) {\n for (var i = 0; i < data.param.length; i++) {\n var param = data.param[i];\n var key = Object.keys(param)[0];\n result[key] = param[key];\n }\n }\n result[value] = data;\n var pvtData = 'pvtData';\n var url = 'url';\n return {\n data: JSON.stringify(result, DataUtil.parse.jsonDateReplacer),\n url: obj[url],\n pvtData: obj[pvtData],\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n };\n return WebMethodAdaptor;\n}(UrlAdaptor);\nexport { WebMethodAdaptor };\n/**\n * RemoteSaveAdaptor, extended from JsonAdaptor and it is used for binding local data and performs all DataManager queries in client-side.\n * It interacts with server-side only for CRUD operations.\n *\n * @hidden\n */\nvar RemoteSaveAdaptor = /** @class */function (_super) {\n __extends(RemoteSaveAdaptor, _super);\n /**\n * @hidden\n */\n function RemoteSaveAdaptor() {\n return _super.call(this) || this;\n }\n RemoteSaveAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n this.pvt.position = position;\n this.updateType = 'add';\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.remove = function (dm, keyField, val, tableName, query) {\n _super.prototype.remove.call(this, dm, keyField, val);\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: val,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.update = function (dm, keyField, val, tableName, query) {\n this.updateType = 'update';\n this.updateKey = keyField;\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: val,\n action: 'update',\n keyColumn: keyField,\n key: val[keyField],\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes, e) {\n var i;\n var newData = request ? JSON.parse(request.data) : data;\n data = newData.action === 'batch' ? DataUtil.parse.parseJson(data) : data;\n if (this.updateType === 'add') {\n _super.prototype.insert.call(this, ds, data, null, null, this.pvt.position);\n }\n if (this.updateType === 'update') {\n _super.prototype.update.call(this, ds, this.updateKey, data);\n }\n this.updateType = undefined;\n if (data.added) {\n for (i = 0; i < data.added.length; i++) {\n _super.prototype.insert.call(this, ds, data.added[i]);\n }\n }\n if (data.changed) {\n for (i = 0; i < data.changed.length; i++) {\n _super.prototype.update.call(this, ds, e.key, data.changed[i]);\n }\n }\n if (data.deleted) {\n for (i = 0; i < data.deleted.length; i++) {\n _super.prototype.remove.call(this, ds, e.key, data.deleted[i]);\n }\n }\n return data;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * Also perform the changes in the locally cached data to sync with the remote data.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @param query\n * @param original\n */\n RemoteSaveAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e.url,\n key: e.key\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.addParams = function (options) {\n var urlParams = new UrlAdaptor();\n urlParams.addParams(options);\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {Request} request\n * @param {Fetch} settings?\n * @returns void\n */\n RemoteSaveAdaptor.prototype.beforeSend = function (dm, request, settings) {\n // need to extend this method\n };\n return RemoteSaveAdaptor;\n}(JsonAdaptor);\nexport { RemoteSaveAdaptor };\n/**\n * Fetch Adaptor that is extended from URL Adaptor, is used for handle data operations with user defined functions.\n *\n * @hidden\n */\nvar CustomDataAdaptor = /** @class */function (_super) {\n __extends(CustomDataAdaptor, _super);\n function CustomDataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n getData: function () {},\n addRecord: function () {},\n updateRecord: function () {},\n deleteRecord: function () {},\n batchUpdate: function () {}\n });\n extend(_this.options, props || {});\n return _this;\n }\n CustomDataAdaptor.prototype.getModuleName = function () {\n return 'CustomDataAdaptor';\n };\n return CustomDataAdaptor;\n}(UrlAdaptor);\nexport { CustomDataAdaptor };\n/**\n * The GraphqlAdaptor that is extended from URL Adaptor, is used for retrieving data from the Graphql server.\n * It interacts with the Graphql server with all the DataManager Queries and performs CRUD operations.\n *\n * @hidden\n */\nvar GraphQLAdaptor = /** @class */function (_super) {\n __extends(GraphQLAdaptor, _super);\n function GraphQLAdaptor(options) {\n var _this = _super.call(this) || this;\n _this.opt = options;\n _this.schema = _this.opt.response;\n _this.query = _this.opt.query;\n /* eslint-disable @typescript-eslint/no-empty-function */\n // tslint:disable-next-line:no-empty\n _this.getVariables = _this.opt.getVariables ? _this.opt.getVariables : function () {};\n /* eslint-enable @typescript-eslint/no-empty-function */\n _this.getQuery = function () {\n return _this.query;\n };\n return _this;\n }\n GraphQLAdaptor.prototype.getModuleName = function () {\n return 'GraphQLAdaptor';\n };\n /**\n * Process the JSON data based on the provided queries.\n *\n * @param {DataManager} dm\n * @param {Query} query?\n * @param datamanager\n * @param query\n */\n GraphQLAdaptor.prototype.processQuery = function (datamanager, query) {\n var urlQuery = _super.prototype.processQuery.apply(this, arguments);\n var dm = JSON.parse(urlQuery.data);\n // constructing GraphQL parameters\n var keys = ['skip', 'take', 'sorted', 'table', 'select', 'where', 'search', 'requiresCounts', 'aggregates', 'params'];\n var temp = {};\n var str = 'searchwhereparams';\n keys.filter(function (e) {\n temp[e] = str.indexOf(e) > -1 ? JSON.stringify(dm[e]) : dm[e];\n });\n var vars = this.getVariables() || {};\n // tslint:disable-next-line:no-string-literal\n vars['datamanager'] = temp;\n var data = JSON.stringify({\n query: this.getQuery(),\n variables: vars\n });\n urlQuery.data = data;\n return urlQuery;\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n *\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Object} request?\n * @param resData\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @returns DataResult\n */\n GraphQLAdaptor.prototype.processResponse = function (resData, ds, query, xhr, request) {\n var res = resData;\n var count;\n var aggregates;\n var result = getValue(this.schema.result, res.data);\n if (this.schema.count) {\n count = getValue(this.schema.count, res.data);\n }\n if (this.schema.aggregates) {\n aggregates = getValue(this.schema.aggregates, res.data);\n aggregates = !isNullOrUndefined(aggregates) ? DataUtil.parse.parseJson(aggregates) : aggregates;\n }\n var pvt = request.pvtData || {};\n var args = {\n result: result,\n aggregates: aggregates\n };\n var data = args;\n if (pvt && pvt.groups && pvt.groups.length) {\n this.getAggregateResult(pvt, data, args, null, query);\n }\n return !isNullOrUndefined(count) ? {\n result: args.result,\n count: count,\n aggregates: aggregates\n } : args.result;\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n */\n GraphQLAdaptor.prototype.insert = function () {\n var inserted = _super.prototype.insert.apply(this, arguments);\n return this.generateCrudData(inserted, 'insert');\n };\n /**\n * Prepare and returns request body which is used to update a new record in the table.\n */\n GraphQLAdaptor.prototype.update = function () {\n var inserted = _super.prototype.update.apply(this, arguments);\n return this.generateCrudData(inserted, 'update');\n };\n /**\n * Prepare and returns request body which is used to remove a new record in the table.\n */\n GraphQLAdaptor.prototype.remove = function () {\n var inserted = _super.prototype.remove.apply(this, arguments);\n return this.generateCrudData(inserted, 'remove');\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n * @param e.key\n * @param {Query} query\n * @param {Object} original\n */\n GraphQLAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var batch = _super.prototype.batchRequest.apply(this, arguments);\n // tslint:disable-next-line:typedef\n var bData = JSON.parse(batch.data);\n bData.key = e.key;\n batch.data = JSON.stringify(bData);\n return this.generateCrudData(batch, 'batch');\n };\n GraphQLAdaptor.prototype.generateCrudData = function (crudData, action) {\n var parsed = JSON.parse(crudData.data);\n crudData.data = JSON.stringify({\n query: this.opt.getMutation(action),\n variables: parsed\n });\n return crudData;\n };\n return GraphQLAdaptor;\n}(UrlAdaptor);\nexport { GraphQLAdaptor };\n/**\n * Cache Adaptor is used to cache the data of the visited pages. It prevents new requests for the previously visited pages.\n * You can configure cache page size and duration of caching by using cachingPageSize and timeTillExpiration properties of the DataManager\n *\n * @hidden\n */\nvar CacheAdaptor = /** @class */function (_super) {\n __extends(CacheAdaptor, _super);\n /**\n * Constructor for CacheAdaptor class.\n *\n * @param {CacheAdaptor} adaptor?\n * @param {number} timeStamp?\n * @param {number} pageSize?\n * @param adaptor\n * @param timeStamp\n * @param pageSize\n * @hidden\n */\n function CacheAdaptor(adaptor, timeStamp, pageSize) {\n var _this = _super.call(this) || this;\n _this.isCrudAction = false;\n _this.isInsertAction = false;\n if (!isNullOrUndefined(adaptor)) {\n _this.cacheAdaptor = adaptor;\n }\n _this.pageSize = pageSize;\n _this.guidId = DataUtil.getGuid('cacheAdaptor');\n var obj = {\n keys: [],\n results: []\n };\n window.localStorage.setItem(_this.guidId, JSON.stringify(obj));\n var guid = _this.guidId;\n if (!isNullOrUndefined(timeStamp)) {\n setInterval(function () {\n var data = DataUtil.parse.parseJson(window.localStorage.getItem(guid));\n var forDel = [];\n for (var i = 0; i < data.results.length; i++) {\n var currentTime = +new Date();\n var requestTime = +new Date(data.results[i].timeStamp);\n data.results[i].timeStamp = currentTime - requestTime;\n if (currentTime - requestTime > timeStamp) {\n forDel.push(i);\n }\n }\n for (var i = 0; i < forDel.length; i++) {\n data.results.splice(forDel[i], 1);\n data.keys.splice(forDel[i], 1);\n }\n window.localStorage.removeItem(guid);\n window.localStorage.setItem(guid, JSON.stringify(data));\n }, timeStamp);\n }\n return _this;\n }\n /**\n * It will generate the key based on the URL when we send a request to server.\n *\n * @param {string} url\n * @param {Query} query?\n * @param query\n * @hidden\n */\n CacheAdaptor.prototype.generateKey = function (url, query) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var key = url;\n var page = 'onPage';\n if (page in singles) {\n key += singles[page].pageIndex;\n }\n queries.sorts.forEach(function (obj) {\n key += obj.e.direction + obj.e.fieldName;\n });\n queries.groups.forEach(function (obj) {\n key += obj.e.fieldName;\n });\n queries.searches.forEach(function (obj) {\n key += obj.e.searchKey;\n });\n for (var filter = 0; filter < queries.filters.length; filter++) {\n var currentFilter = queries.filters[filter];\n if (currentFilter.e.isComplex) {\n var newQuery = query.clone();\n newQuery.queries = [];\n for (var i = 0; i < currentFilter.e.predicates.length; i++) {\n newQuery.queries.push({\n fn: 'onWhere',\n e: currentFilter.e.predicates[i],\n filter: query.queries.filter\n });\n }\n key += currentFilter.e.condition + this.generateKey(url, newQuery);\n } else {\n key += currentFilter.e.field + currentFilter.e.operator + currentFilter.e.value;\n }\n }\n return key;\n };\n /**\n * Process the query to generate request body.\n * If the data is already cached, it will return the cached data.\n *\n * @param {DataManager} dm\n * @param {Query} query?\n * @param {Object[]} hierarchyFilters?\n * @param query\n * @param hierarchyFilters\n */\n CacheAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var key = this.generateKey(dm.dataSource.url, query);\n var cachedItems = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var data = cachedItems ? cachedItems.results[cachedItems.keys.indexOf(key)] : null;\n if (data != null && !this.isCrudAction && !this.isInsertAction) {\n return data;\n }\n this.isCrudAction = null;\n this.isInsertAction = null;\n /* eslint-disable prefer-spread */\n return this.cacheAdaptor.processQuery.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n /* eslint-enable prefer-spread */\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n *\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Fetch} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n */\n CacheAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (this.isInsertAction || request && this.cacheAdaptor.options.batch && DataUtil.endsWith(request.url, this.cacheAdaptor.options.batch) && request.type.toLowerCase() === 'post') {\n return this.cacheAdaptor.processResponse(data, ds, query, xhr, request, changes);\n }\n /* eslint-disable prefer-spread */\n data = this.cacheAdaptor.processResponse.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n /* eslint-enable prefer-spread */\n var key = query ? this.generateKey(ds.dataSource.url, query) : ds.dataSource.url;\n var obj = {};\n obj = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var index = obj.keys.indexOf(key);\n if (index !== -1) {\n obj.results.splice(index, 1);\n obj.keys.splice(index, 1);\n }\n obj.results[obj.keys.push(key) - 1] = {\n keys: key,\n result: data.result,\n timeStamp: new Date(),\n count: data.count\n };\n while (obj.results.length > this.pageSize) {\n obj.results.splice(0, 1);\n obj.keys.splice(0, 1);\n }\n window.localStorage.setItem(this.guidId, JSON.stringify(obj));\n return data;\n };\n /**\n * Method will trigger before send the request to server side. Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {Request} request\n * @param {Fetch} settings?\n * @param settings\n */\n CacheAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (!isNullOrUndefined(this.cacheAdaptor.options.batch) && DataUtil.endsWith(settings.url, this.cacheAdaptor.options.batch) && settings.type.toLowerCase() === 'post') {\n request.headers.set('Accept', this.cacheAdaptor.options.multipartAccept);\n }\n if (!dm.dataSource.crossDomain) {\n request.headers.set('Accept', this.cacheAdaptor.options.accept);\n }\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n */\n CacheAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.update(dm, keyField, value, tableName);\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n CacheAdaptor.prototype.insert = function (dm, data, tableName) {\n this.isInsertAction = true;\n return this.cacheAdaptor.insert(dm, data, tableName);\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n */\n CacheAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.remove(dm, keyField, value, tableName);\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n CacheAdaptor.prototype.batchRequest = function (dm, changes, e) {\n return this.cacheAdaptor.batchRequest(dm, changes, e);\n };\n return CacheAdaptor;\n}(UrlAdaptor);\nexport { CacheAdaptor };","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { DataUtil } from './util';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Query class is used to build query which is used by the DataManager to communicate with datasource.\n */\nvar Query = /** @class */function () {\n /**\n * Constructor for Query class.\n *\n * @param {string|string[]} from?\n * @param from\n * @hidden\n */\n function Query(from) {\n /** @hidden */\n this.subQuery = null;\n /** @hidden */\n this.isChild = false;\n /** @hidden */\n this.distincts = [];\n this.queries = [];\n this.key = '';\n this.fKey = '';\n if (typeof from === 'string') {\n this.fromTable = from;\n } else if (from && from instanceof Array) {\n this.lookups = from;\n }\n this.expands = [];\n this.sortedColumns = [];\n this.groupedColumns = [];\n this.subQuery = null;\n this.isChild = false;\n this.params = [];\n this.lazyLoad = [];\n return this;\n }\n Object.defineProperty(Query.prototype, \"moduleName\", {\n /** @hidden */\n get: function () {\n return 'query';\n },\n enumerable: true,\n configurable: true\n });\n ;\n /**\n * Sets the primary key.\n *\n * @param {string} field - Defines the column field.\n */\n Query.prototype.setKey = function (field) {\n this.key = field;\n return this;\n };\n /**\n * Sets default DataManager to execute query.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.using = function (dataManager) {\n this.dataManager = dataManager;\n return this;\n };\n /**\n * Executes query with the given DataManager.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n * @param {Function} done - Defines the success callback.\n * @param {Function} fail - Defines the failure callback.\n * @param {Function} always - Defines the callback which will be invoked on either success or failure.\n *\n * <pre>\n * let dataManager: DataManager = new DataManager([{ ID: '10' }, { ID: '2' }, { ID: '1' }, { ID: '20' }]);\n * let query: Query = new Query();\n * query.sortBy('ID', (x: string, y: string): number => { return parseInt(x, 10) - parseInt(y, 10) });\n * let promise: Promise< Object > = query.execute(dataManager);\n * promise.then((e: { result: Object }) => { });\n * </pre>\n */\n Query.prototype.execute = function (dataManager, done, fail, always) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeQuery(this, done, fail, always);\n }\n return DataUtil.throwError('Query - execute() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Executes query with the local datasource.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.executeLocal = function (dataManager) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeLocal(this);\n }\n return DataUtil.throwError('Query - executeLocal() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Creates deep copy of the Query object.\n */\n Query.prototype.clone = function () {\n var cloned = new Query();\n cloned.queries = this.queries.slice(0);\n cloned.key = this.key;\n cloned.isChild = this.isChild;\n cloned.dataManager = this.dataManager;\n cloned.fromTable = this.fromTable;\n cloned.params = this.params.slice(0);\n cloned.expands = this.expands.slice(0);\n cloned.sortedColumns = this.sortedColumns.slice(0);\n cloned.groupedColumns = this.groupedColumns.slice(0);\n cloned.subQuerySelector = this.subQuerySelector;\n cloned.subQuery = this.subQuery;\n cloned.fKey = this.fKey;\n cloned.isCountRequired = this.isCountRequired;\n cloned.distincts = this.distincts.slice(0);\n cloned.lazyLoad = this.lazyLoad.slice(0);\n return cloned;\n };\n /**\n * Specifies the name of table to retrieve data in query execution.\n *\n * @param {string} tableName - Defines the table name.\n */\n Query.prototype.from = function (tableName) {\n this.fromTable = tableName;\n return this;\n };\n /**\n * Adds additional parameter which will be sent along with the request which will be generated while DataManager execute.\n *\n * @param {string} key - Defines the key of additional parameter.\n * @param {Function|string} value - Defines the value for the key.\n */\n Query.prototype.addParams = function (key, value) {\n if (typeof value === 'function') {\n this.params.push({\n key: key,\n fn: value\n });\n } else {\n this.params.push({\n key: key,\n value: value\n });\n }\n return this;\n };\n /**\n * @param fields\n * @hidden\n */\n Query.prototype.distinct = function (fields) {\n if (typeof fields === 'string') {\n this.distincts = [].slice.call([fields], 0);\n } else {\n this.distincts = fields.slice(0);\n }\n return this;\n };\n /**\n * Expands the related table.\n *\n * @param {string|Object[]} tables\n */\n Query.prototype.expand = function (tables) {\n if (typeof tables === 'string') {\n this.expands = [].slice.call([tables], 0);\n } else {\n this.expands = tables.slice(0);\n }\n return this;\n };\n /**\n * Filter data with given filter criteria.\n *\n * @param {string|Predicate} fieldName - Defines the column field or Predicate.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string|number|boolean} value - Defines the values to match with data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreAccent\n * @param matchCase\n */\n Query.prototype.where = function (fieldName, operator, value, ignoreCase, ignoreAccent, matchCase) {\n operator = operator ? operator.toLowerCase() : null;\n var predicate = null;\n if (typeof fieldName === 'string') {\n predicate = new Predicate(fieldName, operator, value, ignoreCase, ignoreAccent, matchCase);\n } else if (fieldName instanceof Predicate) {\n predicate = fieldName;\n }\n this.queries.push({\n fn: 'onWhere',\n e: predicate\n });\n return this;\n };\n /**\n * Search data with given search criteria.\n *\n * @param {string|number|boolean} searchKey - Defines the search key.\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n * @param {string} operator - Defines the operator how to search data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreAccent\n */\n Query.prototype.search = function (searchKey, fieldNames, operator, ignoreCase, ignoreAccent) {\n if (typeof fieldNames === 'string') {\n fieldNames = [fieldNames];\n }\n if (!operator || operator === 'none') {\n operator = 'contains';\n }\n var comparer = DataUtil.fnOperators[operator];\n this.queries.push({\n fn: 'onSearch',\n e: {\n fieldNames: fieldNames,\n operator: operator,\n searchKey: searchKey,\n ignoreCase: ignoreCase,\n ignoreAccent: ignoreAccent,\n comparer: comparer\n }\n });\n return this;\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n *\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n * @param isFromGroup\n */\n Query.prototype.sortBy = function (fieldName, comparer, isFromGroup) {\n return this.sortByForeignKey(fieldName, comparer, isFromGroup);\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n *\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n * @param isFromGroup\n * @param {string} direction - Defines the sort direction .\n */\n Query.prototype.sortByForeignKey = function (fieldName, comparer, isFromGroup, direction) {\n var order = !isNullOrUndefined(direction) ? direction : 'ascending';\n var sorts;\n var temp;\n if (typeof fieldName === 'string' && DataUtil.endsWith(fieldName.toLowerCase(), ' desc')) {\n fieldName = fieldName.replace(/ desc$/i, '');\n comparer = 'descending';\n }\n if (!comparer || typeof comparer === 'string') {\n order = comparer ? comparer.toLowerCase() : 'ascending';\n comparer = DataUtil.fnSort(comparer);\n }\n if (isFromGroup) {\n sorts = Query.filterQueries(this.queries, 'onSortBy');\n for (var i = 0; i < sorts.length; i++) {\n temp = sorts[i].e.fieldName;\n if (typeof temp === 'string') {\n if (temp === fieldName) {\n return this;\n }\n } else if (temp instanceof Array) {\n for (var j = 0; j < temp.length; j++) {\n if (temp[j] === fieldName || fieldName.toLowerCase() === temp[j] + ' desc') {\n return this;\n }\n }\n }\n }\n }\n this.queries.push({\n fn: 'onSortBy',\n e: {\n fieldName: fieldName,\n comparer: comparer,\n direction: order\n }\n });\n return this;\n };\n /**\n * Sorts data in descending order.\n *\n * @param {string} fieldName - Defines the column field.\n */\n Query.prototype.sortByDesc = function (fieldName) {\n return this.sortBy(fieldName, 'descending');\n };\n /**\n * Groups data with the given field name.\n *\n * @param {string} fieldName - Defines the column field.\n * @param fn\n * @param format\n */\n Query.prototype.group = function (fieldName, fn, format) {\n this.sortBy(fieldName, null, true);\n this.queries.push({\n fn: 'onGroup',\n e: {\n fieldName: fieldName,\n comparer: fn ? fn : null,\n format: format ? format : null\n }\n });\n return this;\n };\n /**\n * Gets data based on the given page index and size.\n *\n * @param {number} pageIndex - Defines the current page index.\n * @param {number} pageSize - Defines the no of records per page.\n */\n Query.prototype.page = function (pageIndex, pageSize) {\n this.queries.push({\n fn: 'onPage',\n e: {\n pageIndex: pageIndex,\n pageSize: pageSize\n }\n });\n return this;\n };\n /**\n * Gets data based on the given start and end index.\n *\n * @param {number} start - Defines the start index of the datasource.\n * @param {number} end - Defines the end index of the datasource.\n */\n Query.prototype.range = function (start, end) {\n this.queries.push({\n fn: 'onRange',\n e: {\n start: start,\n end: end\n }\n });\n return this;\n };\n /**\n * Gets data from the top of the data source based on given number of records count.\n *\n * @param {number} nos - Defines the no of records to retrieve from datasource.\n */\n Query.prototype.take = function (nos) {\n this.queries.push({\n fn: 'onTake',\n e: {\n nos: nos\n }\n });\n return this;\n };\n /**\n * Skips data with given number of records count from the top of the data source.\n *\n * @param {number} nos - Defines the no of records skip in the datasource.\n */\n Query.prototype.skip = function (nos) {\n this.queries.push({\n fn: 'onSkip',\n e: {\n nos: nos\n }\n });\n return this;\n };\n /**\n * Selects specified columns from the data source.\n *\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n */\n Query.prototype.select = function (fieldNames) {\n if (typeof fieldNames === 'string') {\n fieldNames = [].slice.call([fieldNames], 0);\n }\n this.queries.push({\n fn: 'onSelect',\n e: {\n fieldNames: fieldNames\n }\n });\n return this;\n };\n /**\n * Gets the records in hierarchical relationship from two tables. It requires the foreign key to relate two tables.\n *\n * @param {Query} query - Defines the query to relate two tables.\n * @param {Function} selectorFn - Defines the custom function to select records.\n */\n Query.prototype.hierarchy = function (query, selectorFn) {\n this.subQuerySelector = selectorFn;\n this.subQuery = query;\n return this;\n };\n /**\n * Sets the foreign key which is used to get data from the related table.\n *\n * @param {string} key - Defines the foreign key.\n */\n Query.prototype.foreignKey = function (key) {\n this.fKey = key;\n return this;\n };\n /**\n * It is used to get total number of records in the DataManager execution result.\n */\n Query.prototype.requiresCount = function () {\n this.isCountRequired = true;\n return this;\n };\n //type - sum, avg, min, max\n /**\n * Aggregate the data with given type and field name.\n *\n * @param {string} type - Defines the aggregate type.\n * @param {string} field - Defines the column field to aggregate.\n */\n Query.prototype.aggregate = function (type, field) {\n this.queries.push({\n fn: 'onAggregates',\n e: {\n field: field,\n type: type\n }\n });\n return this;\n };\n /**\n * Pass array of filterColumn query for performing filter operation.\n *\n * @param {QueryOptions[]} queries\n * @param {string} name\n * @hidden\n */\n Query.filterQueries = function (queries, name) {\n return queries.filter(function (q) {\n return q.fn === name;\n });\n };\n /**\n * To get the list of queries which is already filtered in current data source.\n *\n * @param {Object[]} queries\n * @param {string[]} singles\n * @hidden\n */\n Query.filterQueryLists = function (queries, singles) {\n var filtered = queries.filter(function (q) {\n return singles.indexOf(q.fn) !== -1;\n });\n var res = {};\n for (var i = 0; i < filtered.length; i++) {\n if (!res[filtered[i].fn]) {\n res[filtered[i].fn] = filtered[i].e;\n }\n }\n return res;\n };\n return Query;\n}();\nexport { Query };\n/**\n * Predicate class is used to generate complex filter criteria.\n * This will be used by DataManager to perform multiple filtering operation.\n */\nvar Predicate = /** @class */function () {\n /**\n * Constructor for Predicate class.\n *\n * @param {string|Predicate} field\n * @param {string} operator\n * @param {string | number | Date | boolean | Predicate | Predicate[] | (string | number | boolean | Date)[] | null} value\n * @param {boolean=false} ignoreCase\n * @param ignoreAccent\n * @param {boolean} matchCase\n * @hidden\n */\n function Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase) {\n if (ignoreCase === void 0) {\n ignoreCase = false;\n }\n /** @hidden */\n this.ignoreAccent = false;\n /** @hidden */\n this.isComplex = false;\n if (typeof field === 'string') {\n this.field = field;\n this.operator = operator.toLowerCase();\n this.value = value;\n this.matchCase = matchCase;\n this.ignoreCase = ignoreCase;\n this.ignoreAccent = ignoreAccent;\n this.isComplex = false;\n this.comparer = DataUtil.fnOperators.processOperator(this.operator);\n } else if (field instanceof Predicate && value instanceof Predicate || value instanceof Array) {\n this.isComplex = true;\n this.condition = operator.toLowerCase();\n this.predicates = [field];\n this.matchCase = field.matchCase;\n this.ignoreCase = field.ignoreCase;\n this.ignoreAccent = field.ignoreAccent;\n if (value instanceof Array) {\n [].push.apply(this.predicates, value);\n } else {\n this.predicates.push(value);\n }\n }\n return this;\n }\n /**\n * Adds n-number of new predicates on existing predicate with “and†condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.and = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'and');\n };\n /**\n * Adds new predicate on existing predicate with “and†condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.and = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'and', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “or†condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.or = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'or');\n };\n /**\n * Adds new predicate on existing predicate with “or†condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.or = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'or', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “and not†condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.ornot = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'or not');\n };\n /**\n * Adds new predicate on existing predicate with “and not†condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.ornot = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'ornot', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “and not†condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.andnot = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'and not');\n };\n /**\n * Adds new predicate on existing predicate with “and not†condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.andnot = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'andnot', ignoreCase, ignoreAccent);\n };\n /**\n * Converts plain JavaScript object to Predicate object.\n *\n * @param {Predicate[]|Predicate} json - Defines single or collection of Predicate.\n */\n Predicate.fromJson = function (json) {\n if (json instanceof Array) {\n var res = [];\n for (var i = 0, len = json.length; i < len; i++) {\n res.push(this.fromJSONData(json[i]));\n }\n return res;\n }\n var pred = json;\n return this.fromJSONData(pred);\n };\n /**\n * Validate the record based on the predicates.\n *\n * @param {Object} record - Defines the datasource record.\n */\n Predicate.prototype.validate = function (record) {\n var predicate = this.predicates ? this.predicates : [];\n var ret;\n var isAnd;\n if (!this.isComplex && this.comparer) {\n if (this.condition && this.condition.indexOf('not') !== -1) {\n this.condition = this.condition.split('not')[0] === '' ? undefined : this.condition.split('not')[0];\n return !this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n } else {\n return this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (this.condition && this.condition.indexOf('not') !== -1) {\n isAnd = this.condition.indexOf('and') !== -1;\n } else {\n isAnd = this.condition === 'and';\n }\n for (var i = 0; i < predicate.length; i++) {\n if (i > 0 && this.condition && this.condition.indexOf('not') !== -1) {\n predicate[i].condition = predicate[i].condition ? predicate[i].condition + 'not' : 'not';\n }\n ret = predicate[i].validate(record);\n if (isAnd) {\n if (!ret) {\n return false;\n }\n } else {\n if (ret) {\n return true;\n }\n }\n }\n return isAnd;\n };\n /**\n * Converts predicates to plain JavaScript.\n * This method is uses Json stringify when serializing Predicate object.\n */\n Predicate.prototype.toJson = function () {\n var predicates;\n var p;\n if (this.isComplex) {\n predicates = [];\n p = this.predicates;\n for (var i = 0; i < p.length; i++) {\n predicates.push(p[i].toJson());\n }\n }\n return {\n isComplex: this.isComplex,\n field: this.field,\n operator: this.operator,\n value: this.value,\n ignoreCase: this.ignoreCase,\n ignoreAccent: this.ignoreAccent,\n condition: this.condition,\n predicates: predicates,\n matchCase: this.matchCase\n };\n };\n Predicate.combinePredicates = function (predicates, operator) {\n if (predicates.length === 1) {\n if (!(predicates[0] instanceof Array)) {\n return predicates[0];\n }\n predicates = predicates[0];\n }\n return new Predicate(predicates[0], operator, predicates.slice(1));\n };\n Predicate.combine = function (pred, field, operator, value, condition, ignoreCase, ignoreAccent) {\n if (field instanceof Predicate) {\n return Predicate[condition](pred, field);\n }\n if (typeof field === 'string') {\n return Predicate[condition](pred, new Predicate(field, operator, value, ignoreCase, ignoreAccent));\n }\n return DataUtil.throwError('Predicate - ' + condition + ' : invalid arguments');\n };\n Predicate.fromJSONData = function (json) {\n var preds = json.predicates || [];\n var len = preds.length;\n var predicates = [];\n var result;\n for (var i = 0; i < len; i++) {\n predicates.push(this.fromJSONData(preds[i]));\n }\n if (!json.isComplex) {\n result = new Predicate(json.field, json.operator, json.value, json.ignoreCase, json.ignoreAccent);\n } else {\n result = new Predicate(predicates[0], json.condition, predicates.slice(1));\n }\n return result;\n };\n return Predicate;\n}();\nexport { Predicate };","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from './manager';\nimport { Query, Predicate } from './query';\nvar consts = {\n GroupGuid: '{271bbba0-1ee7}'\n};\n/**\n * Data manager common utility methods.\n *\n * @hidden\n */\nvar DataUtil = /** @class */function () {\n function DataUtil() {}\n /**\n * Returns the value by invoking the provided parameter function.\n * If the paramater is not of type function then it will be returned as it is.\n *\n * @param {Function|string|string[]|number} value\n * @param {Object} inst?\n * @param inst\n * @hidden\n */\n DataUtil.getValue = function (value, inst) {\n if (typeof value === 'function') {\n return value.call(inst || {});\n }\n return value;\n };\n /**\n * Returns true if the input string ends with given string.\n *\n * @param {string} input\n * @param {string} substr\n */\n DataUtil.endsWith = function (input, substr) {\n return input.slice && input.slice(-substr.length) === substr;\n };\n /**\n * Returns true if the input string not ends with given string.\n *\n * @param {string} input\n * @param {string} substr\n */\n DataUtil.notEndsWith = function (input, substr) {\n return input.slice && input.slice(-substr.length) !== substr;\n };\n /**\n * Returns true if the input string starts with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param start\n */\n DataUtil.startsWith = function (input, start) {\n return input.slice(0, start.length) === start;\n };\n /**\n * Returns true if the input string not starts with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param start\n */\n DataUtil.notStartsWith = function (input, start) {\n return input.slice(0, start.length) !== start;\n };\n /**\n * Returns true if the input string pattern(wildcard) matches with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param pattern\n */\n DataUtil.wildCard = function (input, pattern) {\n var asteriskSplit;\n var optionalSplit;\n // special character allowed search\n if (pattern.indexOf('[') !== -1) {\n pattern = pattern.split('[').join('[[]');\n }\n if (pattern.indexOf('(') !== -1) {\n pattern = pattern.split('(').join('[(]');\n }\n if (pattern.indexOf(')') !== -1) {\n pattern = pattern.split(')').join('[)]');\n }\n if (pattern.indexOf('\\\\') !== -1) {\n pattern = pattern.split('\\\\').join('[\\\\\\\\]');\n }\n if (pattern.indexOf('*') !== -1) {\n if (pattern.charAt(0) !== '*') {\n pattern = '^' + pattern;\n }\n if (pattern.charAt(pattern.length - 1) !== '*') {\n pattern = pattern + '$';\n }\n asteriskSplit = pattern.split('*');\n for (var i = 0; i < asteriskSplit.length; i++) {\n if (asteriskSplit[i].indexOf('.') === -1) {\n asteriskSplit[i] = asteriskSplit[i] + '.*';\n } else {\n asteriskSplit[i] = asteriskSplit[i] + '*';\n }\n }\n pattern = asteriskSplit.join('');\n }\n if (pattern.indexOf('%3f') !== -1 || pattern.indexOf('?') !== -1) {\n optionalSplit = pattern.indexOf('%3f') !== -1 ? pattern.split('%3f') : pattern.split('?');\n pattern = optionalSplit.join('.');\n }\n // eslint-disable-next-line security/detect-non-literal-regexp\n var regexPattern = new RegExp(pattern, 'g');\n return regexPattern.test(input);\n };\n /**\n * Returns true if the input string pattern(like) matches with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param pattern\n */\n DataUtil.like = function (input, pattern) {\n if (pattern.indexOf('%') !== -1) {\n if (pattern.charAt(0) === '%' && pattern.lastIndexOf('%') < 2) {\n pattern = pattern.substring(1, pattern.length);\n return DataUtil.startsWith(DataUtil.toLowerCase(input), DataUtil.toLowerCase(pattern));\n } else if (pattern.charAt(pattern.length - 1) === '%' && pattern.indexOf('%') > pattern.length - 3) {\n pattern = pattern.substring(0, pattern.length - 1);\n return DataUtil.endsWith(DataUtil.toLowerCase(input), DataUtil.toLowerCase(pattern));\n } else if (pattern.lastIndexOf('%') !== pattern.indexOf('%') && pattern.lastIndexOf('%') > pattern.indexOf('%') + 1) {\n pattern = pattern.substring(pattern.indexOf('%') + 1, pattern.lastIndexOf('%'));\n return input.indexOf(pattern) !== -1;\n } else {\n return input.indexOf(pattern) !== -1;\n }\n } else {\n return false;\n }\n };\n /**\n * To return the sorting function based on the string.\n *\n * @param {string} order\n * @hidden\n */\n DataUtil.fnSort = function (order) {\n order = order ? DataUtil.toLowerCase(order) : 'ascending';\n if (order === 'ascending') {\n return this.fnAscending;\n }\n return this.fnDescending;\n };\n /**\n * Comparer function which is used to sort the data in ascending order.\n *\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnAscending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return 0;\n }\n if (y === null || y === undefined) {\n return -1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y);\n }\n if (x === null || x === undefined) {\n return 1;\n }\n return x - y;\n };\n /**\n * Comparer function which is used to sort the data in descending order.\n *\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnDescending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return 0;\n }\n if (y === null || y === undefined) {\n return 1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y) * -1;\n }\n if (x === null || x === undefined) {\n return -1;\n }\n return y - x;\n };\n DataUtil.extractFields = function (obj, fields) {\n var newObj = {};\n for (var i = 0; i < fields.length; i++) {\n newObj = this.setValue(fields[i], this.getObject(fields[i], obj), newObj);\n }\n return newObj;\n };\n /**\n * Select objects by given fields from jsonArray.\n *\n * @param {Object[]} jsonArray\n * @param {string[]} fields\n */\n DataUtil.select = function (jsonArray, fields) {\n var newData = [];\n for (var i = 0; i < jsonArray.length; i++) {\n newData.push(this.extractFields(jsonArray[i], fields));\n }\n return newData;\n };\n /**\n * Group the input data based on the field name.\n * It also performs aggregation of the grouped records based on the aggregates paramater.\n *\n * @param {Object[]} jsonArray\n * @param {string} field?\n * @param {Object[]} agg?\n * @param {number} level?\n * @param {Object[]} groupDs?\n * @param field\n * @param aggregates\n * @param level\n * @param groupDs\n * @param format\n * @param isLazyLoad\n */\n DataUtil.group = function (jsonArray, field, aggregates, level, groupDs, format, isLazyLoad) {\n level = level || 1;\n var jsonData = jsonArray;\n var guid = 'GroupGuid';\n if (jsonData.GroupGuid === consts[guid]) {\n var _loop_1 = function (j) {\n if (!isNullOrUndefined(groupDs)) {\n var indx = -1;\n var temp = groupDs.filter(function (e) {\n return e.key === jsonData[j].key;\n });\n indx = groupDs.indexOf(temp[0]);\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, groupDs[indx].items, format, isLazyLoad);\n jsonData[j].count = groupDs[indx].count;\n } else {\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, null, format, isLazyLoad);\n jsonData[j].count = jsonData[j].items.length;\n }\n };\n var this_1 = this;\n for (var j = 0; j < jsonData.length; j++) {\n _loop_1(j);\n }\n jsonData.childLevels += 1;\n return jsonData;\n }\n var grouped = {};\n var groupedArray = [];\n groupedArray.GroupGuid = consts[guid];\n groupedArray.level = level;\n groupedArray.childLevels = 0;\n groupedArray.records = jsonData;\n var _loop_2 = function (i) {\n var val = this_2.getVal(jsonData, i, field);\n if (!isNullOrUndefined(format)) {\n val = format(val, field);\n }\n if (!grouped[val]) {\n grouped[val] = {\n key: val,\n count: 0,\n items: [],\n aggregates: {},\n field: field\n };\n groupedArray.push(grouped[val]);\n if (!isNullOrUndefined(groupDs)) {\n var tempObj = groupDs.filter(function (e) {\n return e.key === grouped[val].key;\n });\n grouped[val].count = tempObj[0].count;\n }\n }\n grouped[val].count = !isNullOrUndefined(groupDs) ? grouped[val].count : grouped[val].count += 1;\n if (!isLazyLoad || isLazyLoad && aggregates.length) {\n grouped[val].items.push(jsonData[i]);\n }\n };\n var this_2 = this;\n for (var i = 0; i < jsonData.length; i++) {\n _loop_2(i);\n }\n if (aggregates && aggregates.length) {\n var _loop_3 = function (i) {\n var res = {};\n var fn = void 0;\n var aggs = aggregates;\n for (var j = 0; j < aggregates.length; j++) {\n fn = DataUtil.aggregates[aggregates[j].type];\n if (!isNullOrUndefined(groupDs)) {\n var temp = groupDs.filter(function (e) {\n return e.key === groupedArray[i].key;\n });\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(temp[0].items, aggs[j].field);\n }\n } else {\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(groupedArray[i].items, aggs[j].field);\n }\n }\n }\n groupedArray[i].aggregates = res;\n };\n for (var i = 0; i < groupedArray.length; i++) {\n _loop_3(i);\n }\n }\n if (isLazyLoad && groupedArray.length && aggregates.length) {\n for (var i = 0; i < groupedArray.length; i++) {\n groupedArray[i].items = [];\n }\n }\n return jsonData.length && groupedArray || jsonData;\n };\n /**\n * It is used to categorize the multiple items based on a specific field in jsonArray.\n * The hierarchical queries are commonly required when you use foreign key binding.\n *\n * @param {string} fKey\n * @param {string} from\n * @param {Object[]} source\n * @param {Group} lookup?\n * @param {string} pKey?\n * @param lookup\n * @param pKey\n * @hidden\n */\n DataUtil.buildHierarchy = function (fKey, from, source, lookup, pKey) {\n var i;\n var grp = {};\n var temp;\n if (lookup.result) {\n lookup = lookup.result;\n }\n if (lookup.GroupGuid) {\n this.throwError('DataManager: Do not have support Grouping in hierarchy');\n }\n for (i = 0; i < lookup.length; i++) {\n var fKeyData = this.getObject(fKey, lookup[i]);\n temp = grp[fKeyData] || (grp[fKeyData] = []);\n temp.push(lookup[i]);\n }\n for (i = 0; i < source.length; i++) {\n var fKeyData = this.getObject(pKey || fKey, source[i]);\n source[i][from] = grp[fKeyData];\n }\n };\n /**\n * The method used to get the field names which started with specified characters.\n *\n * @param {Object} obj\n * @param {string[]} fields?\n * @param {string} prefix?\n * @param fields\n * @param prefix\n * @hidden\n */\n DataUtil.getFieldList = function (obj, fields, prefix) {\n if (prefix === undefined) {\n prefix = '';\n }\n if (fields === undefined || fields === null) {\n return this.getFieldList(obj, [], prefix);\n }\n var copyObj = obj;\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (typeof copyObj[prop] === 'object' && !(copyObj[prop] instanceof Array)) {\n this.getFieldList(copyObj[prop], fields, prefix + prop + '.');\n } else {\n fields.push(prefix + prop);\n }\n }\n return fields;\n };\n /**\n * Gets the value of the property in the given object.\n * The complex object can be accessed by providing the field names concatenated with dot(.).\n *\n * @param {string} nameSpace - The name of the property to be accessed.\n * @param {Object} from - Defines the source object.\n */\n DataUtil.getObject = function (nameSpace, from) {\n if (!nameSpace) {\n return from;\n }\n if (!from) {\n return undefined;\n }\n if (nameSpace.indexOf('.') === -1) {\n if (!isNullOrUndefined(from[nameSpace])) {\n return from[nameSpace];\n } else {\n var lowerCaseNameSpace = nameSpace.charAt(0).toLowerCase() + nameSpace.slice(1);\n var upperCaseNameSpace = nameSpace.charAt(0).toUpperCase() + nameSpace.slice(1);\n if (!isNullOrUndefined(from[lowerCaseNameSpace])) {\n return from[lowerCaseNameSpace];\n } else if (!isNullOrUndefined(from[upperCaseNameSpace])) {\n return from[upperCaseNameSpace];\n } else {\n return null;\n }\n }\n }\n var value = from;\n var splits = nameSpace.split('.');\n for (var i = 0; i < splits.length; i++) {\n if (value == null) {\n break;\n }\n value = value[splits[i]];\n if (value === undefined) {\n var casing = splits[i].charAt(0).toUpperCase() + splits[i].slice(1);\n value = from[casing] || from[casing.charAt(0).toLowerCase() + casing.slice(1)] || null;\n }\n from = value;\n }\n return value;\n };\n /**\n * To set value for the nameSpace in desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object.\n * @param {Object} value - Value that you need to set.\n * @param {Object} obj - Object to get the inner object value.\n * @return { [key: string]: Object; } | Object\n * @hidden\n */\n DataUtil.setValue = function (nameSpace, value, obj) {\n var keys = nameSpace.toString().split('.');\n var start = obj || {};\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[i];\n if (i + 1 === length) {\n fromObj[key] = value === undefined ? undefined : value;\n } else if (isNullOrUndefined(fromObj[key])) {\n fromObj[key] = {};\n }\n fromObj = fromObj[key];\n }\n return start;\n };\n /**\n * Sort the given data based on the field and comparer.\n *\n * @param {Object[]} dataSource - Defines the input data.\n * @param {string} field - Defines the field to be sorted.\n * @param {Function} comparer - Defines the comparer function used to sort the records.\n */\n DataUtil.sort = function (dataSource, field, comparer) {\n var _this = this;\n if (dataSource.length <= 1) {\n return dataSource;\n }\n return dataSource.slice().sort(function (a, b) {\n return comparer(_this.getVal([a], 0, field), _this.getVal([b], 0, field), a, b);\n });\n };\n DataUtil.ignoreDiacritics = function (value) {\n if (typeof value !== 'string') {\n return value;\n }\n var result = value.split('');\n var newValue = result.map(function (temp) {\n return temp in DataUtil.diacritics ? DataUtil.diacritics[temp] : temp;\n });\n return newValue.join('');\n };\n DataUtil.ignoreDiacriticsForArrays = function (valueArray) {\n if (!Array.isArray(valueArray)) {\n return [];\n }\n return valueArray.map(function (item) {\n return DataUtil.ignoreDiacritics(item);\n });\n };\n DataUtil.merge = function (left, right, fieldName, comparer) {\n var result = [];\n var current;\n while (left.length > 0 || right.length > 0) {\n if (left.length > 0 && right.length > 0) {\n if (comparer) {\n current = comparer(this.getVal(left, 0, fieldName), this.getVal(right, 0, fieldName), left[0], right[0]) <= 0 ? left : right;\n } else {\n current = left[0][fieldName] < left[0][fieldName] ? left : right;\n }\n } else {\n current = left.length > 0 ? left : right;\n }\n result.push(current.shift());\n }\n return result;\n };\n DataUtil.getVal = function (array, index, field) {\n return field ? this.getObject(field, array[index]) : array[index];\n };\n DataUtil.toLowerCase = function (val) {\n if (isNullOrUndefined(val)) return '';\n if (typeof val === 'string') return val.toLowerCase();\n if (val instanceof Date) return val.toString().toLowerCase();\n return val.toString();\n };\n /**\n * To perform the filter operation with specified adaptor and returns the result.\n *\n * @param {Object} adaptor\n * @param {string} fnName\n * @param {Object} param1?\n * @param {Object} param2?\n * @param param1\n * @param param2\n * @hidden\n */\n DataUtil.callAdaptorFunction = function (adaptor, fnName, param1, param2) {\n if (fnName in adaptor) {\n var res = adaptor[fnName](param1, param2);\n if (!isNullOrUndefined(res)) {\n param1 = res;\n }\n }\n return param1;\n };\n DataUtil.getAddParams = function (adp, dm, query) {\n var req = {};\n DataUtil.callAdaptorFunction(adp, 'addParams', {\n dm: dm,\n query: query,\n params: query ? query.params : [],\n reqParams: req\n });\n return req;\n };\n /**\n * Checks wheather the given input is a plain object or not.\n *\n * @param {Object|Object[]} obj\n */\n DataUtil.isPlainObject = function (obj) {\n return !!obj && obj.constructor === Object;\n };\n /**\n * Returns true when the browser cross origin request.\n */\n DataUtil.isCors = function () {\n var xhr = null;\n var request = 'XMLHttpRequest';\n try {\n xhr = new window[request]();\n } catch (e) {\n // No exception handling\n }\n return !!xhr && 'withCredentials' in xhr;\n };\n /**\n * Generate random GUID value which will be prefixed with the given value.\n *\n * @param {string} prefix\n */\n DataUtil.getGuid = function (prefix) {\n var hexs = '0123456789abcdef';\n var rand;\n return (prefix || '') + '00000000-0000-4000-0000-000000000000'.replace(/0/g, function (val, i) {\n if ('crypto' in window && 'getRandomValues' in crypto) {\n var arr = new Uint8Array(1);\n window.crypto.getRandomValues(arr);\n rand = arr[0] % 16 | 0;\n } else {\n rand = Math.random() * 16 | 0;\n }\n return hexs[i === 19 ? rand & 0x3 | 0x8 : rand];\n });\n };\n /**\n * Checks wheather the given value is null or not.\n *\n * @param {string|Object} val\n * @returns boolean\n */\n DataUtil.isNull = function (val) {\n return val === undefined || val === null;\n };\n /**\n * To get the required items from collection of objects.\n *\n * @param {Object[]} array\n * @param {string} field\n * @param {Function} comparer\n * @returns Object\n * @hidden\n */\n DataUtil.getItemFromComparer = function (array, field, comparer) {\n var keyVal;\n var current;\n var key;\n var i = 0;\n var castRequired = typeof DataUtil.getVal(array, 0, field) === 'string';\n if (array.length) {\n while (isNullOrUndefined(keyVal) && i < array.length) {\n keyVal = DataUtil.getVal(array, i, field);\n key = array[i++];\n }\n }\n for (; i < array.length; i++) {\n current = DataUtil.getVal(array, i, field);\n if (isNullOrUndefined(current)) {\n continue;\n }\n if (castRequired) {\n keyVal = +keyVal;\n current = +current;\n }\n if (comparer(keyVal, current) > 0) {\n keyVal = current;\n key = array[i];\n }\n }\n return key;\n };\n /**\n * To get distinct values of Array or Array of Objects.\n *\n * @param {Object[]} json\n * @param {string} field\n * @param fieldName\n * @param {boolean} requiresCompleteRecord\n * @returns Object[]\n * * distinct array of objects is return when requiresCompleteRecord set as true.\n * @hidden\n */\n DataUtil.distinct = function (json, fieldName, requiresCompleteRecord) {\n requiresCompleteRecord = isNullOrUndefined(requiresCompleteRecord) ? false : requiresCompleteRecord;\n var result = [];\n var val;\n var tmp = {};\n json.forEach(function (data, index) {\n val = typeof json[index] === 'object' ? DataUtil.getVal(json, index, fieldName) : json[index];\n if (!(val in tmp)) {\n result.push(!requiresCompleteRecord ? val : json[index]);\n tmp[val] = 1;\n }\n });\n return result;\n };\n /**\n * Process the given records based on the datamanager string.\n *\n * @param {string} datamanager\n * @param dm\n * @param {Object[]} records\n */\n DataUtil.processData = function (dm, records) {\n var query = this.prepareQuery(dm);\n var sampledata = new DataManager(records);\n if (dm.requiresCounts) {\n query.requiresCount();\n }\n /* eslint-disable @typescript-eslint/no-explicit-any */\n // tslint:disable-next-line:no-any\n var result = sampledata.executeLocal(query);\n /* eslint-enable @typescript-eslint/no-explicit-any */\n var returnValue = {\n result: dm.requiresCounts ? result.result : result,\n count: result.count,\n aggregates: JSON.stringify(result.aggregates)\n };\n return dm.requiresCounts ? returnValue : result;\n };\n DataUtil.prepareQuery = function (dm) {\n var _this = this;\n var query = new Query();\n if (dm.select) {\n query.select(dm.select);\n }\n if (dm.where) {\n var where = DataUtil.parse.parseJson(dm.where);\n where.filter(function (pred) {\n if (isNullOrUndefined(pred.condition)) {\n query.where(pred.field, pred.operator, pred.value, pred.ignoreCase, pred.ignoreAccent);\n } else {\n var predicateList = [];\n if (pred.field) {\n predicateList.push(new Predicate(pred.field, pred.operator, pred.value, pred.ignoreCase, pred.ignoreAccent));\n } else {\n predicateList = predicateList.concat(_this.getPredicate(pred.predicates));\n }\n if (pred.condition === 'or') {\n query.where(Predicate.or(predicateList));\n } else if (pred.condition === 'and') {\n query.where(Predicate.and(predicateList));\n }\n }\n });\n }\n if (dm.search) {\n var search = DataUtil.parse.parseJson(dm.search);\n // tslint:disable-next-line:no-string-literal\n search.filter(function (e) {\n return query.search(e.key, e.fields, e['operator'],\n // tslint:disable-next-line:no-string-literal\n e['ignoreCase'], e['ignoreAccent']);\n });\n }\n if (dm.aggregates) {\n dm.aggregates.filter(function (e) {\n return query.aggregate(e.type, e.field);\n });\n }\n if (dm.sorted) {\n dm.sorted.filter(function (e) {\n return query.sortBy(e.name, e.direction);\n });\n }\n if (dm.skip) {\n query.skip(dm.skip);\n }\n if (dm.take) {\n query.take(dm.take);\n }\n if (dm.group) {\n dm.group.filter(function (grp) {\n return query.group(grp);\n });\n }\n return query;\n };\n DataUtil.getPredicate = function (pred) {\n var mainPred = [];\n for (var i = 0; i < pred.length; i++) {\n var e = pred[i];\n if (e.field) {\n mainPred.push(new Predicate(e.field, e.operator, e.value, e.ignoreCase, e.ignoreAccent));\n } else {\n var childPred = [];\n // tslint:disable-next-line:typedef\n var cpre = this.getPredicate(e.predicates);\n for (var _i = 0, _a = Object.keys(cpre); _i < _a.length; _i++) {\n var prop = _a[_i];\n childPred.push(cpre[prop]);\n }\n mainPred.push(e.condition === 'or' ? Predicate.or(childPred) : Predicate.and(childPred));\n }\n }\n return mainPred;\n };\n /**\n * Specifies the value which will be used to adjust the date value to server timezone.\n *\n * @default null\n */\n DataUtil.serverTimezoneOffset = null;\n /**\n * Species whether are not to be parsed with serverTimezoneOffset value.\n *\n * @hidden\n */\n DataUtil.timeZoneHandling = true;\n /**\n * Throw error with the given string as message.\n *\n * @param {string} er\n * @param error\n */\n DataUtil.throwError = function (error) {\n try {\n throw new Error(error);\n } catch (e) {\n // eslint-disable-next-line no-throw-literal\n throw e.message + '\\n' + e.stack;\n }\n };\n DataUtil.aggregates = {\n /**\n * Calculate sum of the given field in the data.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n sum: function (ds, field) {\n var result = 0;\n var val;\n var castRequired = typeof DataUtil.getVal(ds, 0, field) !== 'number';\n for (var i = 0; i < ds.length; i++) {\n val = DataUtil.getVal(ds, i, field);\n if (!isNaN(val) && val !== null) {\n if (castRequired) {\n val = +val;\n }\n result += val;\n }\n }\n return result;\n },\n /**\n * Calculate average value of the given field in the data.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n average: function (ds, field) {\n return DataUtil.aggregates.sum(ds, field) / ds.length;\n },\n /**\n * Returns the min value of the data based on the field.\n *\n * @param {Object[]} ds\n * @param {string|Function} field\n */\n min: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnAscending));\n },\n /**\n * Returns the max value of the data based on the field.\n *\n * @param {Object[]} ds\n * @param {string} field\n * @returns number\n */\n max: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnDescending));\n },\n /**\n * Returns the total number of true value present in the data based on the given boolean field name.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n truecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', true, true)).length;\n },\n /**\n * Returns the total number of false value present in the data based on the given boolean field name.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n falsecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', false, true)).length;\n },\n /**\n * Returns the length of the given data.\n *\n * @param {Object[]} ds\n * @param {string} field?\n * @param field\n * @returns number\n */\n count: function (ds, field) {\n return ds.length;\n }\n };\n /**\n * Specifies the Object with filter operators.\n */\n DataUtil.operatorSymbols = {\n '<': 'lessthan',\n '>': 'greaterthan',\n '<=': 'lessthanorequal',\n '>=': 'greaterthanorequal',\n '==': 'equal',\n '!=': 'notequal',\n '*=': 'contains',\n '$=': 'endswith',\n '^=': 'startswith'\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * * It will be used for date/number type filter query.\n */\n DataUtil.odBiOperator = {\n '<': ' lt ',\n '>': ' gt ',\n '<=': ' le ',\n '>=': ' ge ',\n '==': ' eq ',\n '!=': ' ne ',\n 'lessthan': ' lt ',\n 'lessthanorequal': ' le ',\n 'greaterthan': ' gt ',\n 'greaterthanorequal': ' ge ',\n 'equal': ' eq ',\n 'notequal': ' ne '\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odUniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'substringof',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'substringof',\n 'doesnotendwith': 'not endswith',\n 'doesnotstartwith': 'not startswith',\n 'doesnotcontain': 'not substringof',\n 'wildcard': 'wildcard',\n 'like': 'like'\n };\n /**\n * Specifies the Object with filter operators which will be used for ODataV4 filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odv4UniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'contains',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'contains',\n 'doesnotendwith': 'not endswith',\n 'doesnotstartwith': 'not startswith',\n 'doesnotcontain': 'not contains',\n 'wildcard': 'wildcard',\n 'like': 'like'\n };\n DataUtil.diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03C9': '\\u03C9',\n '\\u03C2': '\\u03C3'\n };\n DataUtil.fnOperators = {\n /**\n * Returns true when the actual input is equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param {boolean} ignoreAccent?\n * @param ignoreCase\n * @param ignoreAccent\n */\n equal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) === DataUtil.toLowerCase(expected);\n }\n return actual === expected;\n },\n /**\n * Returns true when the actual input is not equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n notequal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n return !DataUtil.fnOperators.equal(actual, expected, ignoreCase);\n },\n /**\n * Returns true when the actual input is less than to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n lessthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) < DataUtil.toLowerCase(expected);\n }\n if (isNullOrUndefined(actual)) {\n actual = undefined;\n }\n return actual < expected;\n },\n /**\n * Returns true when the actual input is greater than to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n greaterthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) > DataUtil.toLowerCase(expected);\n }\n return actual > expected;\n },\n /**\n * Returns true when the actual input is less than or equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n lessthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) <= DataUtil.toLowerCase(expected);\n }\n if (isNullOrUndefined(actual)) {\n actual = undefined;\n }\n return actual <= expected;\n },\n /**\n * Returns true when the actual input is greater than or equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n greaterthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) >= DataUtil.toLowerCase(expected);\n }\n if (isNullOrUndefined(actual)) {\n actual = undefined;\n }\n return actual >= expected;\n },\n /**\n * Returns true when the actual input contains the given string.\n *\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n contains: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) && DataUtil.toLowerCase(actual).indexOf(DataUtil.toLowerCase(expected)) !== -1;\n }\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) && actual.toString().indexOf(expected) !== -1;\n },\n /**\n * Returns true when the actual input not contains the given string.\n *\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n */\n doesnotcontain: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) && DataUtil.toLowerCase(actual).indexOf(DataUtil.toLowerCase(expected)) === -1;\n }\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) && actual.toString().indexOf(expected) === -1;\n },\n /**\n * Returns true when the given input value is not null.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnotnull: function (actual) {\n return actual !== null && actual !== undefined;\n },\n /**\n * Returns true when the given input value is null.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnull: function (actual) {\n return actual === null || actual === undefined;\n },\n /**\n * Returns true when the actual input starts with the given string\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n startswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.startsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.startsWith(actual, expected);\n },\n /**\n * Returns true when the actual input not starts with the given string\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n doesnotstartwith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.notStartsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.notStartsWith(actual, expected);\n },\n /**\n * Returns true when the actual input like with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n like: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.like(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.like(actual, expected);\n },\n /**\n * Returns true when the given input value is empty.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isempty: function (actual) {\n return actual === undefined || actual === '';\n },\n /**\n * Returns true when the given input value is not empty.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnotempty: function (actual) {\n return actual !== undefined && actual !== '';\n },\n /**\n * Returns true when the actual input pattern(wildcard) matches with the given string.\n *\n * @param {string|Date} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n wildcard: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return (actual || typeof actual === 'boolean') && expected && typeof actual !== 'object' && DataUtil.wildCard(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return (actual || typeof actual === 'boolean') && expected && DataUtil.wildCard(actual, expected);\n },\n /**\n * Returns true when the actual input ends with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n endswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.endsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.endsWith(actual, expected);\n },\n /**\n * Returns true when the actual input not ends with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n doesnotendwith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.notEndsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.notEndsWith(actual, expected);\n },\n /**\n * It will return the filter operator based on the filter symbol.\n *\n * @param {string} operator\n * @hidden\n */\n processSymbols: function (operator) {\n var fnName = DataUtil.operatorSymbols[operator];\n if (fnName) {\n var fn = DataUtil.fnOperators[fnName];\n return fn;\n }\n return DataUtil.throwError('Query - Process Operator : Invalid operator');\n },\n /**\n * It will return the valid filter operator based on the specified operators.\n *\n * @param {string} operator\n * @hidden\n */\n processOperator: function (operator) {\n var fn = DataUtil.fnOperators[operator];\n if (fn) {\n return fn;\n }\n return DataUtil.fnOperators.processSymbols(operator);\n },\n /**\n * Checks if the specified value exists in the given array, with optional case and accent insensitivity.\n *\n * @param {string | number} actual - The value to check.\n * @param {Array<string | number>} expectedArray - The array to search within.\n * @param {boolean} [ignoreCase] - Whether to perform a case-insensitive comparison.\n * @param {boolean} [ignoreAccent] - Whether to ignore accents/diacritics.\n * @returns {boolean} `true` if the value is found, otherwise `false`.\n */\n in: function (actual, expectedArray, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expectedArray = DataUtil.ignoreDiacriticsForArrays(expectedArray);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && expectedArray && expectedArray.length > 0 && expectedArray.map(function (item) {\n return DataUtil.toLowerCase(item);\n }).indexOf(DataUtil.toLowerCase(actual)) > -1;\n }\n if (actual instanceof Date) {\n return !isNullOrUndefined(actual) && expectedArray && expectedArray.length > 0 && Array.isArray(expectedArray) && expectedArray.some(function (item) {\n return item instanceof Date && item.getTime() === actual.getTime();\n });\n }\n return !isNullOrUndefined(actual) && expectedArray && expectedArray.length > 0 && expectedArray.indexOf(actual) > -1;\n },\n /**\n * Checks if the specified value is not present in the given array, with optional case and accent insensitivity.\n *\n * @param {string | number} actual - The value to check.\n * @param {Array<string | number>} expectedArray - The array to search within.\n * @param {boolean} [ignoreCase] - Whether to perform a case-insensitive comparison.\n * @param {boolean} [ignoreAccent] - Whether to ignore accents/diacritics.\n * @returns {boolean} `true` if the value is not found, otherwise `false`.\n */\n notin: function (actual, expectedArray, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expectedArray = DataUtil.ignoreDiacriticsForArrays(expectedArray);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && expectedArray && expectedArray.length > 0 && expectedArray.map(function (item) {\n return DataUtil.toLowerCase(item);\n }).indexOf(DataUtil.toLowerCase(actual)) === -1;\n }\n if (actual instanceof Date) {\n return !isNullOrUndefined(actual) && expectedArray && expectedArray.length > 0 && Array.isArray(expectedArray) && expectedArray.every(function (item) {\n return !(item instanceof Date) || item.getTime() !== actual.getTime();\n });\n }\n return !isNullOrUndefined(actual) && expectedArray && expectedArray.length > 0 && expectedArray.indexOf(actual) === -1;\n }\n };\n /**\n * To perform the parse operation on JSON data, like convert to string from JSON or convert to JSON from string.\n */\n DataUtil.parse = {\n /**\n * Parse the given string to the plain JavaScript object.\n *\n * @param {string|Object|Object[]} jsonText\n */\n parseJson: function (jsonText) {\n if (typeof jsonText === 'string' && (/^[\\s]*\\[|^[\\s]*\\{(.)+:/g.test(jsonText) || jsonText.indexOf('\"') === -1)) {\n jsonText = JSON.parse(jsonText, DataUtil.parse.jsonReviver);\n } else if (jsonText instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(jsonText);\n } else if (typeof jsonText === 'object' && jsonText !== null) {\n DataUtil.parse.iterateAndReviveJson(jsonText);\n }\n return jsonText;\n },\n /**\n * It will perform on array of values.\n *\n * @param {string[]|Object[]} array\n * @hidden\n */\n iterateAndReviveArray: function (array) {\n for (var i = 0; i < array.length; i++) {\n if (typeof array[i] === 'object' && array[i] !== null) {\n DataUtil.parse.iterateAndReviveJson(array[i]);\n // eslint-disable-next-line no-useless-escape\n } else if (typeof array[i] === 'string' && (!/^[\\s]*\\[|^[\\s]*\\{(.)+:|\\\"/g.test(array[i]) || array[i].toString().indexOf('\"') === -1)) {\n array[i] = DataUtil.parse.jsonReviver('', array[i]);\n } else {\n array[i] = DataUtil.parse.parseJson(array[i]);\n }\n }\n },\n /**\n * It will perform on JSON values\n *\n * @param {JSON} json\n * @hidden\n */\n iterateAndReviveJson: function (json) {\n var value;\n var keys = Object.keys(json);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var prop = keys_2[_i];\n if (DataUtil.startsWith(prop, '__')) {\n continue;\n }\n value = json[prop];\n if (typeof value === 'object') {\n if (value instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(value);\n } else if (value) {\n DataUtil.parse.iterateAndReviveJson(value);\n }\n } else {\n json[prop] = DataUtil.parse.jsonReviver(json[prop], value);\n }\n }\n },\n /**\n * It will perform on JSON values\n *\n * @param {string} field\n * @param {string|Date} value\n * @hidden\n */\n jsonReviver: function (field, value) {\n if (typeof value === 'string') {\n // eslint-disable-next-line security/detect-unsafe-regex\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n var offSet = DataUtil.timeZoneHandling ? DataUtil.serverTimezoneOffset : null;\n if (ms) {\n return DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), offSet, true);\n // eslint-disable-next-line no-useless-escape, security/detect-unsafe-regex\n } else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var isUTC = value.indexOf('Z') > -1 || value.indexOf('z') > -1;\n var arr = value.split(/[^0-9.]/);\n if (isUTC) {\n if (arr[5].indexOf('.') > -1) {\n var secondsMs = arr[5].split('.');\n arr[5] = secondsMs[0];\n arr[6] = new Date(value).getUTCMilliseconds().toString();\n } else {\n arr[6] = '00';\n }\n value = DataUtil.dateParse.toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5] ? arr[5] : '00', 10), parseInt(arr[6], 10)), DataUtil.serverTimezoneOffset, false);\n } else {\n var utcFormat = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5] ? arr[5] : '00', 10));\n var hrs = parseInt(arr[6], 10);\n var mins = parseInt(arr[7], 10);\n if (isNaN(hrs) && isNaN(mins)) {\n return utcFormat;\n }\n if (value.indexOf('+') > -1) {\n utcFormat.setHours(utcFormat.getHours() - hrs, utcFormat.getMinutes() - mins);\n } else {\n utcFormat.setHours(utcFormat.getHours() + hrs, utcFormat.getMinutes() + mins);\n }\n value = DataUtil.dateParse.toTimeZone(utcFormat, DataUtil.serverTimezoneOffset, false);\n }\n if (DataUtil.serverTimezoneOffset == null) {\n value = DataUtil.dateParse.addSelfOffset(value);\n }\n }\n }\n return value;\n },\n /**\n * Check wheather the given value is JSON or not.\n *\n * @param {Object[]} jsonData\n */\n isJson: function (jsonData) {\n if (typeof jsonData[0] === 'string') {\n return jsonData;\n }\n return DataUtil.parse.parseJson(jsonData);\n },\n /**\n * Checks wheather the given value is GUID or not.\n *\n * @param {string} value\n */\n isGuid: function (value) {\n // eslint-disable-next-line security/detect-unsafe-regex\n var regex = /[A-Fa-f0-9]{8}(?:-[A-Fa-f0-9]{4}){3}-[A-Fa-f0-9]{12}/i;\n var match = regex.exec(value);\n return match != null;\n },\n /**\n * The method used to replace the value based on the type.\n *\n * @param {Object} value\n * @param {boolean} stringify\n * @hidden\n */\n replacer: function (value, stringify) {\n if (DataUtil.isPlainObject(value)) {\n return DataUtil.parse.jsonReplacer(value, stringify);\n }\n if (value instanceof Array) {\n return DataUtil.parse.arrayReplacer(value);\n }\n if (value instanceof Date) {\n return DataUtil.parse.jsonReplacer({\n val: value\n }, stringify).val;\n }\n return value;\n },\n /**\n * It will replace the JSON value.\n *\n * @param {string} key\n * @param {Object} val\n * @param stringify\n * @hidden\n */\n jsonReplacer: function (val, stringify) {\n var value;\n var keys = Object.keys(val);\n for (var _i = 0, keys_3 = keys; _i < keys_3.length; _i++) {\n var prop = keys_3[_i];\n value = val[prop];\n if (!(value instanceof Date)) {\n continue;\n }\n var d = value;\n if (DataUtil.serverTimezoneOffset == null) {\n val[prop] = DataUtil.dateParse.toTimeZone(d, null).toJSON();\n } else {\n d = new Date(+d + DataUtil.serverTimezoneOffset * 3600000);\n val[prop] = DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(d), null).toJSON();\n }\n }\n return val;\n },\n /**\n * It will replace the Array of value.\n *\n * @param {string} key\n * @param {Object[]} val\n * @hidden\n */\n arrayReplacer: function (val) {\n for (var i = 0; i < val.length; i++) {\n if (DataUtil.isPlainObject(val[i])) {\n val[i] = DataUtil.parse.jsonReplacer(val[i]);\n } else if (val[i] instanceof Date) {\n val[i] = DataUtil.parse.jsonReplacer({\n date: val[i]\n }).date;\n }\n }\n return val;\n },\n /**\n * It will replace the Date object with respective to UTC format value.\n *\n * @param {string} key\n * @param {any} value\n * @hidden\n */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n /* tslint:disable-next-line:no-any */\n jsonDateReplacer: function (key, value) {\n /* eslint-enable @typescript-eslint/no-explicit-any */\n if (key === 'value' && value) {\n if (typeof value === 'string') {\n // eslint-disable-next-line security/detect-unsafe-regex\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n if (ms) {\n value = DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), null, true);\n // eslint-disable-next-line no-useless-escape, security/detect-unsafe-regex\n } else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var arr = value.split(/[^0-9]/);\n value = DataUtil.dateParse.toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10)), null, true);\n }\n }\n if (value instanceof Date) {\n value = DataUtil.dateParse.addSelfOffset(value);\n if (DataUtil.serverTimezoneOffset === null) {\n return DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(value), null).toJSON();\n } else {\n value = DataUtil.dateParse.toTimeZone(value, value.getTimezoneOffset() / 60 - DataUtil.serverTimezoneOffset, false);\n return value.toJSON();\n }\n }\n }\n return value;\n }\n };\n /**\n * @hidden\n */\n DataUtil.dateParse = {\n addSelfOffset: function (input) {\n return new Date(+input - input.getTimezoneOffset() * 60000);\n },\n toUTC: function (input) {\n return new Date(+input + input.getTimezoneOffset() * 60000);\n },\n toTimeZone: function (input, offset, utc) {\n if (offset === null) {\n return input;\n }\n var unix = utc ? DataUtil.dateParse.toUTC(input) : input;\n return new Date(+unix - offset * 3600000);\n },\n toLocalTime: function (input) {\n var datefn = input;\n var timeZone = -datefn.getTimezoneOffset();\n var differenceString = timeZone >= 0 ? '+' : '-';\n var localtimefn = function (num) {\n var norm = Math.floor(Math.abs(num));\n return (norm < 10 ? '0' : '') + norm;\n };\n var val = datefn.getFullYear() + '-' + localtimefn(datefn.getMonth() + 1) + '-' + localtimefn(datefn.getDate()) + 'T' + localtimefn(datefn.getHours()) + ':' + localtimefn(datefn.getMinutes()) + ':' + localtimefn(datefn.getSeconds()) + differenceString + localtimefn(timeZone / 60) + ':' + localtimefn(timeZone % 60);\n return val;\n }\n };\n return DataUtil;\n}();\nexport { DataUtil };","var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : new P(function (resolve) {\n resolve(result.value);\n }).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { Fetch } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Predicate, Query } from './query';\nimport { ODataAdaptor, JsonAdaptor, CacheAdaptor, RemoteSaveAdaptor, CustomDataAdaptor } from './adaptors';\n/**\n * DataManager is used to manage and manipulate relational data.\n */\nvar DataManager = /** @class */function () {\n /**\n * Constructor for DataManager class\n *\n * @param {DataOptions|JSON[]} dataSource?\n * @param {Query} query?\n * @param {AdaptorOptions|string} adaptor?\n * @param dataSource\n * @param query\n * @param adaptor\n * @hidden\n */\n function DataManager(dataSource, query, adaptor) {\n var _this = this;\n /** @hidden */\n this.dateParse = true;\n /** @hidden */\n this.timeZoneHandling = true;\n this.persistQuery = {};\n this.isInitialLoad = false;\n this.requests = [];\n this.isEnableCache = false;\n this.isInitialLoad = true;\n this.isEnableCache = false;\n if (!dataSource && !this.dataSource) {\n dataSource = [];\n }\n adaptor = adaptor || dataSource.adaptor;\n if (dataSource && dataSource.timeZoneHandling === false) {\n this.timeZoneHandling = dataSource.timeZoneHandling;\n }\n var data;\n if (dataSource instanceof Array) {\n data = {\n json: dataSource,\n offline: true\n };\n } else if (typeof dataSource === 'object') {\n if (!dataSource.json) {\n dataSource.json = [];\n }\n if (!dataSource.enablePersistence) {\n dataSource.enablePersistence = false;\n }\n if (!dataSource.id) {\n dataSource.id = '';\n }\n if (!dataSource.ignoreOnPersist) {\n dataSource.ignoreOnPersist = [];\n }\n data = {\n url: dataSource.url,\n insertUrl: dataSource.insertUrl,\n removeUrl: dataSource.removeUrl,\n updateUrl: dataSource.updateUrl,\n crudUrl: dataSource.crudUrl,\n batchUrl: dataSource.batchUrl,\n json: dataSource.json,\n headers: dataSource.headers,\n accept: dataSource.accept,\n data: dataSource.data,\n enableCache: dataSource.enableCache,\n timeTillExpiration: dataSource.timeTillExpiration,\n cachingPageSize: dataSource.cachingPageSize,\n enableCaching: dataSource.enableCaching,\n requestType: dataSource.requestType,\n key: dataSource.key,\n crossDomain: dataSource.crossDomain,\n jsonp: dataSource.jsonp,\n dataType: dataSource.dataType,\n offline: dataSource.offline !== undefined ? dataSource.offline : dataSource.adaptor instanceof RemoteSaveAdaptor || dataSource.adaptor instanceof CustomDataAdaptor ? false : dataSource.url ? false : true,\n requiresFormat: dataSource.requiresFormat,\n enablePersistence: dataSource.enablePersistence,\n id: dataSource.id,\n ignoreOnPersist: dataSource.ignoreOnPersist\n };\n } else {\n DataUtil.throwError('DataManager: Invalid arguments');\n }\n if (data.requiresFormat === undefined && !DataUtil.isCors()) {\n data.requiresFormat = isNullOrUndefined(data.crossDomain) ? true : data.crossDomain;\n }\n if (data.dataType === undefined) {\n data.dataType = 'json';\n }\n this.isEnableCache = data.enableCache;\n this.dataSource = data;\n this.defaultQuery = query;\n if (this.dataSource.enablePersistence && this.dataSource.id) {\n window.addEventListener('unload', this.setPersistData.bind(this));\n }\n if (data.url && data.offline && !data.json.length) {\n this.isDataAvailable = false;\n this.adaptor = adaptor || new ODataAdaptor();\n this.dataSource.offline = false;\n this.ready = this.executeQuery(query || new Query());\n this.ready.then(function (e) {\n _this.dataSource.offline = true;\n _this.isDataAvailable = true;\n data.json = e.result;\n _this.adaptor = new JsonAdaptor();\n });\n } else {\n this.adaptor = data.offline ? new JsonAdaptor() : new ODataAdaptor();\n }\n if (!data.jsonp && this.adaptor instanceof ODataAdaptor) {\n data.jsonp = 'callback';\n }\n this.adaptor = adaptor || this.adaptor;\n if (this.isEnableCache) {\n this.guidId = DataUtil.getGuid('cacheAdaptor');\n var obj = {\n keys: [],\n results: []\n };\n window.localStorage.setItem(this.guidId, JSON.stringify(obj));\n }\n if (data.enableCaching) {\n this.adaptor = new CacheAdaptor(this.adaptor, data.timeTillExpiration, data.cachingPageSize);\n }\n return this;\n }\n Object.defineProperty(DataManager.prototype, \"moduleName\", {\n /** @hidden */\n get: function () {\n return 'datamanager';\n },\n enumerable: true,\n configurable: true\n });\n ;\n /**\n * Get the queries maintained in the persisted state.\n * @param {string} id - The identifier of the persisted query to retrieve.\n * @returns {object} The persisted data object.\n */\n DataManager.prototype.getPersistedData = function (id) {\n var persistedData = localStorage.getItem(id || this.dataSource.id);\n return JSON.parse(persistedData);\n };\n /**\n * Set the queries to be maintained in the persisted state.\n * @param {Event} e - The event parameter that triggers the setPersistData method.\n * @param {string} id - The identifier of the persisted query to set.\n * @param {object} persistData - The data to be persisted.\n * @returns {void} .\n */\n DataManager.prototype.setPersistData = function (e, id, persistData) {\n localStorage.setItem(id || this.dataSource.id, JSON.stringify(persistData || this.persistQuery));\n };\n DataManager.prototype.setPersistQuery = function (query) {\n var _this = this;\n var persistedQuery = this.getPersistedData();\n if (this.isInitialLoad && persistedQuery && Object.keys(persistedQuery).length) {\n this.persistQuery = persistedQuery;\n this.persistQuery.queries = this.persistQuery.queries.filter(function (query) {\n if (_this.dataSource.ignoreOnPersist && _this.dataSource.ignoreOnPersist.length) {\n if (query.fn && _this.dataSource.ignoreOnPersist.some(function (keyword) {\n return query.fn === keyword;\n })) {\n return false; // Exclude the matching query\n }\n }\n if (query.fn === 'onWhere') {\n var e = query.e;\n if (e && e.isComplex && e.predicates instanceof Array) {\n var allPredicates = e.predicates.map(function (predicateObj) {\n if (predicateObj.predicates && predicateObj.predicates instanceof Array) {\n // Process nested predicate array\n var nestedPredicates = predicateObj.predicates.map(function (nestedPredicate) {\n var field = nestedPredicate.field,\n operator = nestedPredicate.operator,\n value = nestedPredicate.value,\n ignoreCase = nestedPredicate.ignoreCase,\n ignoreAccent = nestedPredicate.ignoreAccent,\n matchCase = nestedPredicate.matchCase;\n return new Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase);\n });\n return predicateObj.condition === 'and' ? Predicate.and(nestedPredicates) : Predicate.or(nestedPredicates);\n } else {\n // Process individual predicate\n var field = predicateObj.field,\n operator = predicateObj.operator,\n value = predicateObj.value,\n ignoreCase = predicateObj.ignoreCase,\n ignoreAccent = predicateObj.ignoreAccent,\n matchCase = predicateObj.matchCase;\n return new Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase);\n }\n });\n query.e = new Predicate(allPredicates[0], e.condition, allPredicates.slice(1));\n }\n }\n return true; // Keep all other queries\n });\n var newQuery = extend(new Query(), this.persistQuery);\n this.isInitialLoad = false;\n return newQuery;\n } else {\n this.persistQuery = query;\n this.isInitialLoad = false;\n return query;\n }\n };\n /**\n * Overrides DataManager's default query with given query.\n *\n * @param {Query} query - Defines the new default query.\n */\n DataManager.prototype.setDefaultQuery = function (query) {\n this.defaultQuery = query;\n return this;\n };\n /**\n * Executes the given query with local data source.\n *\n * @param {Query} query - Defines the query to retrieve data.\n */\n DataManager.prototype.executeLocal = function (query) {\n if (!this.defaultQuery && !(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeLocal() : A query is required to execute');\n }\n if (!this.dataSource.json) {\n DataUtil.throwError('DataManager - executeLocal() : Json data is required to execute');\n }\n if (this.dataSource.enablePersistence && this.dataSource.id) {\n query = this.setPersistQuery(query);\n }\n query = query || this.defaultQuery;\n var result = this.adaptor.processQuery(this, query);\n if (query.subQuery) {\n var from = query.subQuery.fromTable;\n var lookup = query.subQuery.lookups;\n var res = query.isCountRequired ? result.result : result;\n if (lookup && lookup instanceof Array) {\n DataUtil.buildHierarchy(query.subQuery.fKey, from, res, lookup, query.subQuery.key);\n }\n for (var j = 0; j < res.length; j++) {\n if (res[j][from] instanceof Array) {\n res[j] = extend({}, {}, res[j]);\n res[j][from] = this.adaptor.processResponse(query.subQuery.using(new DataManager(res[j][from].slice(0))).executeLocal(), this, query);\n }\n }\n }\n return this.adaptor.processResponse(result, this, query);\n };\n /**\n * Executes the given query with either local or remote data source.\n * It will be executed as asynchronously and returns Promise object which will be resolved or rejected after action completed.\n *\n * @param {Query|Function} query - Defines the query to retrieve data.\n * @param {Function} done - Defines the callback function and triggers when the Promise is resolved.\n * @param {Function} fail - Defines the callback function and triggers when the Promise is rejected.\n * @param {Function} always - Defines the callback function and triggers when the Promise is resolved or rejected.\n */\n DataManager.prototype.executeQuery = function (query, done, fail, always) {\n var _this = this;\n var makeRequest = 'makeRequest';\n if (this.dataSource.enablePersistence && this.dataSource.id) {\n query = this.setPersistQuery(query);\n }\n if (typeof query === 'function') {\n always = fail;\n fail = done;\n done = query;\n query = null;\n }\n if (!query) {\n query = this.defaultQuery;\n }\n if (!(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeQuery() : A query is required to execute');\n }\n var deffered = new Deferred();\n var args = {\n query: query\n };\n if (!this.dataSource.offline && this.dataSource.url !== undefined && this.dataSource.url !== '' || !isNullOrUndefined(this.adaptor[makeRequest]) || this.isCustomDataAdaptor(this.adaptor)) {\n var result = this.isEnableCache ? this.processQuery(query) : this.adaptor.processQuery(this, query);\n if (!isNullOrUndefined(this.adaptor[makeRequest])) {\n this.adaptor[makeRequest](result, deffered, args, query);\n } else if (!isNullOrUndefined(result.url) || this.isCustomDataAdaptor(this.adaptor)) {\n this.requests = [];\n this.makeRequest(result, deffered, args, query);\n } else {\n args = DataManager.getDeferedArgs(query, result, args);\n deffered.resolve(args);\n }\n } else {\n DataManager.nextTick(function () {\n var res = _this.executeLocal(query);\n args = DataManager.getDeferedArgs(query, res, args);\n deffered.resolve(args);\n });\n }\n if (done || fail) {\n deffered.promise.then(done, fail);\n }\n if (always) {\n deffered.promise.then(always, always);\n }\n return deffered.promise;\n };\n DataManager.prototype.getQueryRequest = function (query) {\n var req = {\n sorts: [],\n groups: [],\n filters: [],\n searches: [],\n aggregates: []\n };\n req.sorts = Query.filterQueries(query.queries, 'onSortBy');\n req.groups = Query.filterQueries(query.queries, 'onGroup');\n req.filters = Query.filterQueries(query.queries, 'onWhere');\n req.searches = Query.filterQueries(query.queries, 'onSearch');\n req.aggregates = Query.filterQueries(query.queries, 'onAggregates');\n return req;\n };\n DataManager.prototype.generateKey = function (url, query) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var key = url;\n var page = 'onPage';\n queries.sorts.forEach(function (obj) {\n key += obj.e.direction + obj.e.fieldName;\n });\n queries.groups.forEach(function (obj) {\n key += obj.e.fieldName;\n });\n queries.searches.forEach(function (obj) {\n key += obj.e.searchKey;\n });\n for (var filter = 0; filter < queries.filters.length; filter++) {\n var currentFilter = queries.filters[filter];\n if (currentFilter.e.isComplex) {\n var newQuery = query.clone();\n newQuery.queries = [];\n for (var i = 0; i < currentFilter.e.predicates.length; i++) {\n newQuery.queries.push({\n fn: 'onWhere',\n e: currentFilter.e.predicates[i],\n filter: query.queries.filter\n });\n }\n key += currentFilter.e.condition + this.generateKey(url, newQuery);\n } else {\n key += currentFilter.e.field + currentFilter.e.operator + currentFilter.e.value;\n }\n }\n if (!isNullOrUndefined(this.previousCacheQuery) && this.previousCacheQuery !== key) {\n var obj = {\n keys: [],\n results: []\n };\n window.localStorage.setItem(this.guidId, JSON.stringify(obj));\n }\n this.previousCacheQuery = key;\n if (page in singles) {\n key += singles[page].pageIndex;\n }\n return key;\n };\n DataManager.prototype.processQuery = function (query) {\n var key = this.generateKey(this.dataSource.url, query);\n var cachedItems = JSON.parse(window.localStorage.getItem(this.guidId));\n var data = cachedItems ? cachedItems.results[cachedItems.keys.indexOf(key)] : null;\n if (data != null) {\n return DataUtil.parse.parseJson(data);\n }\n return this.adaptor.processQuery(this, query);\n };\n DataManager.getDeferedArgs = function (query, result, args) {\n if (query.isCountRequired) {\n args.result = result.result;\n args.count = result.count;\n args.aggregates = result.aggregates;\n } else {\n args.result = result;\n }\n return args;\n };\n DataManager.nextTick = function (fn) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n // tslint:disable-next-line:no-any\n (window.setImmediate || window.setTimeout)(fn, 0);\n /* eslint-enable @typescript-eslint/no-explicit-any */\n };\n DataManager.prototype.extendRequest = function (url, fnSuccess, fnFail) {\n return extend({}, {\n type: 'GET',\n dataType: this.dataSource.dataType,\n crossDomain: this.dataSource.crossDomain,\n jsonp: this.dataSource.jsonp,\n cache: true,\n processData: false,\n onSuccess: fnSuccess,\n onFailure: fnFail\n }, url);\n };\n // tslint:disable-next-line:max-func-body-length\n DataManager.prototype.makeRequest = function (url, deffered, args, query) {\n var _this = this;\n var isSelector = !!query.subQuerySelector;\n var fnFail = function (e) {\n args.error = e;\n deffered.reject(args);\n };\n var process = function (data, count, xhr, request, actual, aggregates, virtualSelectRecords) {\n args.xhr = xhr;\n args.count = count ? parseInt(count.toString(), 10) : 0;\n args.result = data;\n args.request = request;\n args.aggregates = aggregates;\n args.actual = actual;\n args.virtualSelectRecords = virtualSelectRecords;\n deffered.resolve(args);\n };\n var fnQueryChild = function (data, selector) {\n var subDeffer = new Deferred();\n var childArgs = {\n parent: args\n };\n query.subQuery.isChild = true;\n var subUrl = _this.adaptor.processQuery(_this, query.subQuery, data ? _this.adaptor.processResponse(data) : selector);\n var childReq = _this.makeRequest(subUrl, subDeffer, childArgs, query.subQuery);\n if (!isSelector) {\n subDeffer.then(function (subData) {\n if (data) {\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, data, subData, query.subQuery.key);\n process(data, subData.count, subData.xhr);\n }\n }, fnFail);\n }\n return childReq;\n };\n var fnSuccess = function (data, request) {\n if (_this.isGraphQLAdaptor(_this.adaptor)) {\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n return fnFail(data['errors'], request);\n }\n }\n if (_this.isCustomDataAdaptor(_this.adaptor)) {\n request = extend({}, _this.fetchReqOption, request);\n }\n if (request.contentType.indexOf('xml') === -1 && _this.dateParse && !_this.isEnableCache) {\n data = DataUtil.parse.parseJson(data);\n }\n var result;\n var promise = _this.afterReponseRequest(data);\n promise.then(function (data) {\n result = _this.adaptor.processResponse(data, _this, query, request.fetchRequest, request);\n if (_this.isEnableCache) {\n /* eslint-enable prefer-spread */\n var key = query ? _this.generateKey(_this.dataSource.url, query) : _this.dataSource.url;\n var obj = {};\n obj = JSON.parse(window.localStorage.getItem(_this.guidId));\n var index = obj.keys.indexOf(key);\n if (index !== -1) {\n obj.results.splice(index, 1);\n obj.keys.splice(index, 1);\n }\n obj.results[obj.keys.push(key) - 1] = {\n keys: key,\n result: result.result,\n timeStamp: new Date(),\n count: result.count\n };\n window.localStorage.setItem(_this.guidId, JSON.stringify(obj));\n }\n if (request.contentType.indexOf('xml') === -1 && _this.dateParse && _this.isEnableCache) {\n result = DataUtil.parse.parseJson(result);\n }\n var count = 0;\n var aggregates = null;\n var virtualSelectRecords = 'virtualSelectRecords';\n var virtualRecords = data[virtualSelectRecords];\n if (query.isCountRequired) {\n count = result.count;\n aggregates = result.aggregates;\n result = result.result;\n }\n if (!query.subQuery) {\n process(result, count, request.fetchRequest, request.type, data, aggregates, virtualRecords);\n return;\n }\n if (!isSelector) {\n fnQueryChild(result, request);\n }\n ;\n }).catch(function (e) {\n return _this.dataManagerFailure(e, deffered, args);\n });\n };\n var req = this.extendRequest(url, fnSuccess, fnFail);\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var promise = this.useMiddleware(req);\n var fetch_1;\n promise.then(function (response) {\n fetch_1 = new Fetch(req);\n fetch_1.beforeSend = function () {\n _this.beforeSend(fetch_1.fetchRequest, fetch_1, response);\n };\n req = fetch_1.send();\n req.catch(function (e) {\n return true;\n });\n _this.requests.push(fetch_1);\n }).catch(function (e) {\n return _this.dataManagerFailure(e, deffered, args);\n });\n } else {\n this.fetchReqOption = req;\n var request = req;\n this.adaptor.options.getData({\n data: request.data,\n onSuccess: request.onSuccess,\n onFailure: request.onFailure\n });\n }\n if (isSelector) {\n var promise = void 0;\n var res = query.subQuerySelector.call(this, {\n query: query.subQuery,\n parent: query\n });\n if (res && res.length) {\n promise = Promise.all([req, fnQueryChild(null, res)]);\n promise.then(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = args[0];\n var pResult = _this.adaptor.processResponse(result[0], _this, query, _this.requests[0].fetchRequest, _this.requests[0]);\n var count = 0;\n if (query.isCountRequired) {\n count = pResult.count;\n pResult = pResult.result;\n }\n var cResult = _this.adaptor.processResponse(result[1], _this, query.subQuery, _this.requests[1].fetchRequest, _this.requests[1]);\n count = 0;\n if (query.subQuery.isCountRequired) {\n count = cResult.count;\n cResult = cResult.result;\n }\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, pResult, cResult, query.subQuery.key);\n isSelector = false;\n process(pResult, count, _this.requests[0].fetchRequest);\n });\n } else {\n isSelector = false;\n }\n }\n return req;\n };\n /**\n * @param {Error} e - specifies the string\n * @param {Deferred} deffered - specifies the deffered\n * @param {RequestOptions} args - specifies the RequestOptions\n * @hidden\n */\n DataManager.prototype.dataManagerFailure = function (e, deffered, args) {\n args.error = e;\n deffered.reject(args);\n };\n DataManager.prototype.afterReponseRequest = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var reponse, deffered;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4 /*yield*/, this.applyPostRequestMiddlewares(data)];\n case 1:\n reponse = _a.sent();\n deffered = new Deferred();\n deffered.resolve(reponse);\n return [2 /*return*/, deffered.promise];\n }\n });\n });\n };\n /**\n * Processes the middleware stack after receiving the response.\n * @param {Response} response - The response object.\n * @returns {Response} - The potentially modified response.\n */\n DataManager.prototype.applyPostRequestMiddlewares = function (response) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, response];\n });\n });\n };\n /**\n * Registers a new middleware in the DataManager.\n * @param {Middleware} middleware - The middleware instance to register.\n * @returns {void}\n */\n DataManager.prototype.useMiddleware = function (request) {\n return __awaiter(this, void 0, void 0, function () {\n var reponse, deffered;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4 /*yield*/, this.applyPreRequestMiddlewares(request)];\n case 1:\n reponse = _a.sent();\n deffered = new Deferred();\n deffered.resolve(reponse);\n return [2 /*return*/, deffered.promise];\n }\n });\n });\n };\n /**\n * Processes the middleware stack before sending the request.\n * @param {Request} request - The request object.\n * @returns {Request} - The potentially modified request.\n */\n DataManager.prototype.applyPreRequestMiddlewares = function (request) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, request];\n });\n });\n };\n DataManager.prototype.beforeSend = function (request, settings, response) {\n this.adaptor.beforeSend(this, request, settings);\n var headers = [];\n if (this.dataSource.headers) {\n headers = headers.concat(this.dataSource.headers);\n }\n var props;\n if (response && response.headers) {\n headers = headers.concat(response.headers);\n }\n for (var i = 0; headers && i < headers.length; i++) {\n props = [];\n var keys = Object.keys(headers[i]);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n props.push(prop);\n request.headers.set(prop, headers[i][prop]);\n }\n }\n };\n /**\n * Save bulk changes to the given table name.\n * User can add a new record, edit an existing record, and delete a record at the same time.\n * If the datasource from remote, then updated in a single post.\n *\n * @param {Object} changes - Defines the CrudOptions.\n * @param {string} key - Defines the column field.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n * @param original\n */\n DataManager.prototype.saveChanges = function (changes, key, tableName, query, original) {\n var _this = this;\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var args = {\n url: tableName,\n key: key || this.dataSource.key\n };\n var req = this.adaptor.batchRequest(this, changes, args, query || new Query(), original);\n var dofetchRequest = 'dofetchRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[dofetchRequest])) {\n return this.adaptor[dofetchRequest](req);\n } else if (!this.isCustomDataAdaptor(this.adaptor)) {\n var deff_1 = new Deferred();\n var fetch_2 = new Fetch(req);\n fetch_2.beforeSend = function () {\n _this.beforeSend(fetch_2.fetchRequest, fetch_2);\n };\n fetch_2.onSuccess = function (data, request) {\n if (_this.isGraphQLAdaptor(_this.adaptor)) {\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n fetch_2.onFailure(JSON.stringify(data['errors']));\n }\n }\n deff_1.resolve(_this.adaptor.processResponse(data, _this, null, request.fetchRequest, request, changes, args));\n };\n fetch_2.onFailure = function (e) {\n deff_1.reject([{\n error: e\n }]);\n };\n fetch_2.send().catch(function (e) {\n return true;\n }); // to handle the failure requests.\n return deff_1.promise;\n } else {\n return this.dofetchRequest(req, this.adaptor.options.batchUpdate, changes);\n }\n };\n /**\n * Inserts new record in the given table.\n *\n * @param {Object} data - Defines the data to insert.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n * @param position\n */\n DataManager.prototype.insert = function (data, tableName, query, position) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var req = this.adaptor.insert(this, data, tableName, query, position);\n var dofetchRequest = 'dofetchRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[dofetchRequest])) {\n return this.adaptor[dofetchRequest](req);\n } else {\n return this.dofetchRequest(req, this.adaptor.options.addRecord);\n }\n };\n /**\n * Removes data from the table with the given key.\n *\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.remove = function (keyField, value, tableName, query) {\n if (typeof value === 'object') {\n value = DataUtil.getObject(keyField, value);\n }\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.remove(this, keyField, value, tableName, query);\n var dofetchRequest = 'dofetchRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[dofetchRequest])) {\n return this.adaptor[dofetchRequest](res);\n } else {\n var remove = this.adaptor.options.deleteRecord;\n return this.dofetchRequest(res, remove);\n }\n };\n /**\n * Updates existing record in the given table.\n *\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n * @param original\n */\n DataManager.prototype.update = function (keyField, value, tableName, query, original) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n if (this.isEnableCache) {\n this.cacheQuery = this.generateKey(this.dataSource.url, query);\n }\n var res = this.adaptor.update(this, keyField, value, tableName, query, original);\n var dofetchRequest = 'dofetchRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[dofetchRequest])) {\n return this.adaptor[dofetchRequest](res);\n } else {\n var update = this.adaptor.options.updateRecord;\n return this.dofetchRequest(res, update);\n }\n };\n DataManager.prototype.isCustomDataAdaptor = function (dataSource) {\n return this.adaptor.getModuleName && this.adaptor.getModuleName() === 'CustomDataAdaptor';\n };\n DataManager.prototype.isGraphQLAdaptor = function (dataSource) {\n return this.adaptor.getModuleName && this.adaptor.getModuleName() === 'GraphQLAdaptor';\n };\n DataManager.prototype.successFunc = function (record, request, changes) {\n if (this.isGraphQLAdaptor(this.adaptor)) {\n var data = typeof record === 'object' ? record : JSON.parse(record);\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n this.failureFunc(JSON.stringify(data['errors']));\n }\n }\n if (this.isCustomDataAdaptor(this.adaptor)) {\n request = extend({}, this.fetchReqOption, request);\n }\n try {\n DataUtil.parse.parseJson(record);\n } catch (e) {\n record = [];\n }\n if (this.isEnableCache) {\n var requests = JSON.parse(request.data);\n if (requests.action === 'insert' || requests.action === 'remove') {\n var obj = {\n keys: [],\n results: []\n };\n window.localStorage.setItem(this.guidId, JSON.stringify(obj));\n } else if (requests.action === 'update') {\n var cachedItems = JSON.parse(window.localStorage.getItem(this.guidId));\n var data = cachedItems ? cachedItems.results[cachedItems.keys.indexOf(this.cacheQuery)] : null;\n if (data && data.result) {\n var cacheData = data.result;\n for (var i = 0; i < cacheData.length; i++) {\n if (cacheData[i][requests.keyColumn] === requests.key) {\n cacheData[i] = requests.value;\n window.localStorage.setItem(this.guidId, JSON.stringify(cachedItems));\n break;\n }\n }\n }\n }\n }\n record = this.adaptor.processResponse(DataUtil.parse.parseJson(record), this, null, request.fetchRequest, request, changes);\n this.fetchDeffered.resolve(record);\n };\n DataManager.prototype.failureFunc = function (e) {\n if (this.isEnableCache) {\n this.cacheQuery = '';\n }\n this.fetchDeffered.reject([{\n error: e\n }]);\n };\n DataManager.prototype.dofetchRequest = function (res, fetchFunc, changes) {\n var _this = this;\n res = extend({}, {\n type: 'POST',\n contentType: 'application/json; charset=utf-8',\n processData: false\n }, res);\n this.fetchDeffered = new Deferred();\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var fetch_3 = new Fetch(res);\n fetch_3.beforeSend = function () {\n _this.beforeSend(fetch_3.fetchRequest, fetch_3);\n };\n fetch_3.onSuccess = this.successFunc.bind(this);\n fetch_3.onFailure = this.failureFunc.bind(this);\n fetch_3.send().catch(function (e) {\n return true;\n }); // to handle the failure requests.\n } else {\n this.fetchReqOption = res;\n fetchFunc.call(this, {\n data: res.data,\n onSuccess: this.successFunc.bind(this),\n onFailure: this.failureFunc.bind(this),\n changes: changes\n });\n }\n return this.fetchDeffered.promise;\n };\n DataManager.prototype.clearPersistence = function () {\n window.removeEventListener('unload', this.setPersistData.bind(this));\n this.dataSource.enablePersistence = false;\n this.persistQuery = {};\n window.localStorage.setItem(this.dataSource.id, '[]');\n };\n return DataManager;\n}();\nexport { DataManager };\n/**\n * Deferred is used to handle asynchronous operation.\n */\nvar Deferred = /** @class */function () {\n function Deferred() {\n var _this = this;\n /**\n * Promise is an object that represents a value that may not be available yet, but will be resolved at some point in the future.\n */\n this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n /**\n * Defines the callback function triggers when the Deferred object is resolved.\n */\n this.then = this.promise.then.bind(this.promise);\n /**\n * Defines the callback function triggers when the Deferred object is rejected.\n */\n this.catch = this.promise.catch.bind(this.promise);\n }\n return Deferred;\n}();\nexport { Deferred };","/**\n * Function helps to find which highlightSearch is to call based on your data.\n *\n * @param {HTMLElement} element - Specifies an li element.\n * @param {string} query - Specifies the string to be highlighted.\n * @param {boolean} ignoreCase - Specifies the ignoreCase option.\n * @param {HightLightType} type - Specifies the type of highlight.\n * @returns {void}\n */\nexport function highlightSearch(element, query, ignoreCase, type) {\n var isHtmlElement = /<[^>]*>/g.test(element.innerText);\n if (isHtmlElement) {\n element.innerText = element.innerText.replace(/[\\u00A0-\\u9999<>&]/g, function (match) {\n return \"&#\" + match.charCodeAt(0) + \";\";\n });\n }\n if (query === '') {\n return;\n } else {\n var ignoreRegex = ignoreCase ? 'gim' : 'gm';\n // eslint-disable-next-line\n query = /^[a-zA-Z0-9- ]*$/.test(query) ? query : query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n var replaceQuery = type === 'StartsWith' ? '^(' + query + ')' : type === 'EndsWith' ? '(' + query + ')$' : '(' + query + ')';\n // eslint-disable-next-line security/detect-non-literal-regexp\n findTextNode(element, new RegExp(replaceQuery, ignoreRegex));\n }\n}\n/* eslint-enable jsdoc/require-param, valid-jsdoc */\n/**\n *\n * @param {HTMLElement} element - Specifies the element.\n * @param {RegExp} pattern - Specifies the regex to match the searched text.\n * @returns {void}\n */\nfunction findTextNode(element, pattern) {\n for (var index = 0; element.childNodes && index < element.childNodes.length; index++) {\n if (element.childNodes[index].nodeType === 3 && element.childNodes[index].textContent.trim() !== '') {\n var value = element.childNodes[index].nodeValue.trim().replace(pattern, '<span class=\"e-highlight\">$1</span>');\n element.childNodes[index].nodeValue = '';\n element.innerHTML = element.innerHTML.trim() + value;\n break;\n } else {\n findTextNode(element.childNodes[index], pattern);\n }\n }\n}\n/**\n * Function helps to remove highlighted element based on your data.\n *\n * @param {HTMLElement} content - Specifies an content element.\n * @returns {void}\n */\nexport function revertHighlightSearch(content) {\n var contentElement = content.querySelectorAll('.e-highlight');\n for (var i = contentElement.length - 1; i >= 0; i--) {\n var parent_1 = contentElement[i].parentNode;\n var text = document.createTextNode(contentElement[i].textContent);\n parent_1.replaceChild(text, contentElement[i]);\n }\n}","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};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-hscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_HSCROLLCON = 'e-hscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVRIGHTARROW = 'e-nav-right-arrow';\nvar CLS_NAVLEFTARROW = 'e-nav-left-arrow';\nvar CLS_HSCROLLNAV = 'e-scroll-nav';\nvar CLS_HSCROLLNAVRIGHT = 'e-scroll-right-nav';\nvar CLS_HSCROLLNAVLEFT = 'e-scroll-left-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_RIGHTOVERLAY = 'e-scroll-right-overlay';\nvar CLS_LEFTOVERLAY = 'e-scroll-left-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * HScroll module is introduces horizontal scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs horizontal scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n * <div id=\"scroll\"/>\n * <script>\n * var scrollObj = new HScroll();\n * scrollObj.appendTo(\"#scroll\");\n * </script>\n * ```\n */\nvar HScroll = /** @class */function (_super) {\n __extends(HScroll, _super);\n /**\n * Initializes a new instance of the HScroll class.\n *\n * @param {HScrollModel} options - Specifies HScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which horizontal scrolling applies.\n */\n function HScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var element = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (element.id === '') {\n element.id = getUniqueID('hscroll');\n this.uniqueId = true;\n }\n element.style.display = 'block';\n if (this.enableRtl) {\n element.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the horizontal scroll rendering\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, {\n scroll: this.touchHandler.bind(this),\n swipe: this.swipeHandler.bind(this)\n });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n } else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlay(this.element);\n }\n this.setScrollState();\n };\n HScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetWidth;\n this.customStep = false;\n } else {\n this.customStep = true;\n }\n };\n HScroll.prototype.initialize = function () {\n var scrollEle = this.createElement('div', {\n className: CLS_HSCROLLCON\n });\n var scrollDiv = this.createElement('div', {\n className: CLS_HSCROLLBAR\n });\n scrollDiv.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollEle.appendChild(ele_1);\n }\n scrollDiv.appendChild(scrollEle);\n ele.appendChild(scrollDiv);\n scrollDiv.style.overflowX = 'hidden';\n this.scrollEle = scrollDiv;\n this.scrollItems = scrollEle;\n };\n HScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n HScroll.prototype.getModuleName = function () {\n return 'hScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n HScroll.prototype.destroy = function () {\n var ele = this.element;\n ele.style.display = '';\n ele.classList.remove(CLS_ROOT);\n ele.classList.remove(CLS_DEVICE);\n ele.classList.remove(CLS_RTL);\n var nav = selectAll('.e-' + ele.id + '_nav.' + CLS_HSCROLLNAV, ele);\n var overlay = selectAll('.' + CLS_OVERLAY, ele);\n [].slice.call(overlay).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n ele.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (nav.length > 0) {\n detach(nav[0]);\n if (!isNullOrUndefined(nav[1])) {\n detach(nav[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the HScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, HScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n HScroll.prototype.disable = function (value) {\n var navEles = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n } else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEles).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n HScroll.prototype.createOverlay = function (element) {\n var id = element.id.concat('_nav');\n var rightOverlayEle = this.createElement('div', {\n className: CLS_OVERLAY + ' ' + CLS_RIGHTOVERLAY\n });\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightEle = this.createElement('div', {\n id: id.concat('_right'),\n className: clsRight\n });\n var navItem = this.createElement('div', {\n className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons'\n });\n rightEle.appendChild(navItem);\n var leftEle = this.createElement('div', {\n className: CLS_OVERLAY + ' ' + CLS_LEFTOVERLAY\n });\n if (this.ieCheck) {\n rightEle.classList.add('e-ie-align');\n }\n element.appendChild(rightOverlayEle);\n element.appendChild(rightEle);\n element.insertBefore(leftEle, element.firstChild);\n this.eventBinding([rightEle]);\n };\n HScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightAttributes = {\n 'role': 'button',\n 'id': id.concat('_right'),\n 'aria-label': 'Scroll right'\n };\n var nav = this.createElement('div', {\n className: clsRight,\n attrs: rightAttributes\n });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = this.createElement('div', {\n className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons'\n });\n var clsLeft = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVLEFT);\n var leftAttributes = {\n 'role': 'button',\n 'id': id.concat('_left'),\n 'aria-label': 'Scroll left'\n };\n var navEle = this.createElement('div', {\n className: clsLeft + ' ' + CLS_DISABLE,\n attrs: leftAttributes\n });\n navEle.setAttribute('aria-disabled', 'true');\n var navLeftItem = this.createElement('div', {\n className: CLS_NAVLEFTARROW + ' ' + CLS_NAVARROW + ' e-icons'\n });\n navEle.appendChild(navLeftItem);\n nav.appendChild(navItem);\n element.appendChild(nav);\n element.insertBefore(navEle, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navEle.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navEle]);\n };\n HScroll.prototype.onKeyPress = function (e) {\n var _this = this;\n if (e.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, e.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n HScroll.prototype.onKeyUp = function (e) {\n if (e.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n } else {\n e.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n HScroll.prototype.eventBinding = function (ele) {\n var _this = this;\n [].slice.call(ele).forEach(function (el) {\n new Touch(el, {\n tapHold: _this.tabHoldHandler.bind(_this),\n tapHoldThreshold: 500\n });\n el.addEventListener('keydown', _this.onKeyPress.bind(_this));\n el.addEventListener('keyup', _this.onKeyUp.bind(_this));\n el.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n el.addEventListener('touchend', _this.repeatScroll.bind(_this));\n el.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(el, 'click', _this.clickEventHandler, _this);\n });\n };\n HScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n HScroll.prototype.tabHoldHandler = function (e) {\n var _this = this;\n var trgt = e.originalEvent.target;\n trgt = this.contains(trgt, CLS_HSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDis = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDis, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n HScroll.prototype.contains = function (ele, className) {\n return ele.classList.contains(className);\n };\n HScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var rootEle = this.element;\n var classList = trgt.classList;\n if (classList.contains(CLS_HSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (this.contains(rootEle, CLS_RTL) && this.browserCheck) {\n scrollDis = -scrollDis;\n }\n if (!this.contains(rootEle, CLS_RTL) || this.browserCheck || this.ieCheck) {\n if (classList.contains(CLS_NAVRIGHTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n } else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n } else {\n if (classList.contains(CLS_NAVLEFTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n } else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n };\n HScroll.prototype.clickEventHandler = function (e) {\n this.eleScrolling(this.scrollStep, e.target, false);\n };\n HScroll.prototype.swipeHandler = function (e) {\n var swipeEle = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceX / (e.velocity * 10);\n } else {\n distance = e.distanceX / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n } else {\n if (e.swipeDirection === 'Left') {\n swipeEle.scrollLeft += distance * step;\n } else if (e.swipeDirection === 'Right') {\n swipeEle.scrollLeft -= distance * step;\n }\n start -= 0.5;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollLeft += scrollVal;\n } else {\n this.scrollEle.scrollLeft -= scrollVal;\n }\n if (this.enableRtl && this.scrollEle.scrollLeft > 0) {\n this.scrollEle.scrollLeft = 0;\n }\n };\n HScroll.prototype.frameScrollRequest = function (scrollVal, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollVal, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollVal -= el.offsetWidth;\n });\n }\n var animate = function () {\n var scrollValue;\n var scrollStep;\n if (_this.contains(_this.element, CLS_RTL) && _this.browserCheck) {\n scrollValue = -scrollVal;\n scrollStep = -step;\n } else {\n scrollValue = scrollVal;\n scrollStep = step;\n }\n if (scrollValue < step) {\n window.cancelAnimationFrame(scrollStep);\n } else {\n _this.scrollUpdating(scrollStep, action);\n scrollVal -= scrollStep;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.touchHandler = function (e) {\n var ele = this.scrollEle;\n var distance = e.distanceX;\n if (this.ieCheck && this.contains(this.element, CLS_RTL)) {\n distance = -distance;\n }\n if (e.scrollDirection === 'Left') {\n ele.scrollLeft = ele.scrollLeft + distance;\n } else if (e.scrollDirection === 'Right') {\n ele.scrollLeft = ele.scrollLeft - distance;\n }\n };\n HScroll.prototype.arrowDisabling = function (addDisable, removeDisable) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisable) ? removeDisable : addDisable;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisable)) {\n classList(arrowIcon, [CLS_NAVRIGHTARROW], [CLS_NAVLEFTARROW]);\n } else {\n classList(arrowIcon, [CLS_NAVLEFTARROW], [CLS_NAVRIGHTARROW]);\n }\n } else if (addDisable && removeDisable) {\n addDisable.classList.add(CLS_DISABLE);\n addDisable.setAttribute('aria-disabled', 'true');\n addDisable.removeAttribute('tabindex');\n removeDisable.classList.remove(CLS_DISABLE);\n removeDisable.setAttribute('aria-disabled', 'false');\n removeDisable.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n HScroll.prototype.scrollHandler = function (e) {\n var target = e.target;\n var width = target.offsetWidth;\n var rootEle = this.element;\n var navLeftEle = this.element.querySelector('.' + CLS_HSCROLLNAVLEFT);\n var navRightEle = this.element.querySelector('.' + CLS_HSCROLLNAVRIGHT);\n var leftOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n var rightOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n var scrollLeft = target.scrollLeft;\n if (scrollLeft <= 0) {\n scrollLeft = -scrollLeft;\n }\n if (this.isDevice) {\n if (this.enableRtl && !(this.browserCheck || this.ieCheck)) {\n leftOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n rightOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n }\n if (scrollLeft < OVERLAY_MAXWID) {\n leftOverlay.style.width = scrollLeft + 'px';\n } else {\n leftOverlay.style.width = '40px';\n }\n if (target.scrollWidth - Math.ceil(width + scrollLeft) < OVERLAY_MAXWID) {\n rightOverlay.style.width = target.scrollWidth - Math.ceil(width + scrollLeft) + 'px';\n } else {\n rightOverlay.style.width = '40px';\n }\n }\n if (scrollLeft === 0) {\n this.arrowDisabling(navLeftEle, navRightEle);\n } else if (Math.ceil(width + scrollLeft + .1) >= target.scrollWidth) {\n this.arrowDisabling(navRightEle, navLeftEle);\n } else {\n var disEle = this.element.querySelector('.' + CLS_HSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {HScrollModel} newProp - It contains the new value of data.\n * @param {HScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n HScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.element.classList.add(CLS_RTL) : this.element.classList.remove(CLS_RTL);\n break;\n }\n }\n };\n __decorate([Property(null)], HScroll.prototype, \"scrollStep\", void 0);\n HScroll = __decorate([NotifyPropertyChanges], HScroll);\n return HScroll;\n}(Component);\nexport { HScroll };","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : new P(function (resolve) {\n resolve(result.value);\n }).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nimport { EventHandler, Browser, select, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { debounce, Touch } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nvar VirtualScroll = /** @class */function () {\n function VirtualScroll(parent) {\n var _this = this;\n this.sentinelInfo = {\n 'up': {\n check: function (rect, info) {\n var top = rect.top - _this.containerElementRect.top;\n info.entered = top >= 0;\n return top + _this.parent.listItemHeight * _this.parent.virtualItemCount / 2 >= 0;\n },\n axis: 'Y'\n },\n 'down': {\n check: function (rect, info) {\n var top = rect.bottom;\n info.entered = rect.bottom <= _this.containerElementRect.bottom;\n return top - _this.parent.listItemHeight * _this.parent.virtualItemCount / 2 <= _this.parent.listItemHeight * _this.parent.virtualItemCount / 2;\n },\n axis: 'Y'\n }\n };\n this.parent = parent;\n this.removeEventListener();\n this.addEventListener();\n }\n VirtualScroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('observe', this.observe, this);\n this.parent.on('setGeneratedData', this.setGeneratedData, this);\n this.parent.on('dataProcessAsync', this.dataProcessAsync, this);\n this.parent.on('setCurrentViewDataAsync', this.setCurrentViewDataAsync, this);\n this.parent.on('bindScrollEvent', this.bindScrollEvent, this);\n };\n VirtualScroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('observe', this.observe);\n this.parent.off('setGeneratedData', this.setGeneratedData);\n this.parent.off('dataProcessAsync', this.dataProcessAsync);\n this.parent.off('setCurrentViewDataAsync', this.setCurrentViewDataAsync);\n this.parent.off('bindScrollEvent', this.bindScrollEvent);\n };\n VirtualScroll.prototype.bindScrollEvent = function (component) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.component = component.component;\n this.observe(function (scrollArgs) {\n return _this.scrollListener(scrollArgs);\n });\n };\n VirtualScroll.prototype.observe = function (callback) {\n this.containerElementRect = this.parent.popupContentElement.getBoundingClientRect();\n EventHandler.add(this.parent.popupContentElement, 'wheel mousedown', this.popupScrollHandler, this);\n this.touchModule = new Touch(this.parent.popupContentElement, {\n scroll: this.popupScrollHandler.bind(this)\n });\n EventHandler.add(this.parent.popupContentElement, 'scroll', this.virtualScrollHandler(callback), this);\n };\n VirtualScroll.prototype.getModuleName = function () {\n return 'VirtualScroll';\n };\n VirtualScroll.prototype.popupScrollHandler = function () {\n this.parent.isMouseScrollAction = true;\n this.parent.isPreventScrollAction = false;\n };\n VirtualScroll.prototype.getPageQuery = function (query, virtualStartIndex, virtualEndIndex) {\n if (virtualEndIndex !== 0 && !this.parent.allowFiltering && this.component !== 'autocomplete') {\n query = query.skip(virtualStartIndex);\n }\n return query;\n };\n VirtualScroll.prototype.setGeneratedData = function (qStartIndex, recentlyGeneratedData) {\n var loopIteration = 0;\n var endIndex = this.parent.listData.length + this.parent.virtualItemStartIndex;\n for (var i = this.parent.virtualItemStartIndex; i < endIndex; i++) {\n var alreadyAddedData = this.parent.generatedDataObject[i];\n if (!alreadyAddedData) {\n if (recentlyGeneratedData !== null && this.parent.listData.slice(loopIteration, loopIteration + 1).length > 0) {\n var slicedData = this.parent.listData.slice(loopIteration, loopIteration + 1);\n if (slicedData.length > 0) {\n // Safely assign slicedData to this.parent.generatedDataObject[i]\n this.parent.generatedDataObject[i] = slicedData;\n }\n }\n }\n loopIteration++;\n }\n };\n VirtualScroll.prototype.generateAndExecuteQueryAsync = function (query, virtualItemStartIndex, virtualItemEndIndex, isQueryGenerated) {\n if (virtualItemStartIndex === void 0) {\n virtualItemStartIndex = 0;\n }\n if (virtualItemEndIndex === void 0) {\n virtualItemEndIndex = 0;\n }\n if (isQueryGenerated === void 0) {\n isQueryGenerated = false;\n }\n var dataSource = this.parent.dataSource;\n if (!isQueryGenerated) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!isNullOrUndefined(this.parent.query)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var newQuery = this.removeSkipAndTakeEvents(this.parent.query.clone());\n query = this.getPageQuery(newQuery, virtualItemStartIndex, virtualItemEndIndex);\n } else {\n query = this.getPageQuery(query, virtualItemStartIndex, virtualItemEndIndex);\n }\n }\n var tempCustomFilter = this.parent.isCustomFilter;\n if (this.component === 'combobox') {\n var totalData = 0;\n if (this.parent.dataSource instanceof DataManager) {\n totalData = this.parent.dataSource.dataSource.json.length;\n } else if (this.parent.dataSource && this.parent.dataSource.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n totalData = this.parent.dataSource.length;\n }\n if (totalData > 0) {\n this.parent.isCustomFilter = totalData === this.parent.totalItemCount && this.parent.queryString !== this.parent.typedString ? true : this.parent.isCustomFilter;\n }\n }\n this.parent.resetList(dataSource, this.parent.fields, query);\n this.parent.isCustomFilter = tempCustomFilter;\n };\n VirtualScroll.prototype.removeSkipAndTakeEvents = function (query) {\n query.queries = query.queries.filter(function (event) {\n return event.fn !== 'onSkip' && event.fn !== 'onTake';\n });\n return query;\n };\n VirtualScroll.prototype.setCurrentViewDataAsync = function (component) {\n // eslint-disable-next-line\n var currentData = [];\n var isResetListCalled = false;\n var isListUpdated = true;\n if (isNullOrUndefined(this.component)) {\n this.component = component.component;\n }\n var endIndex = this.parent.viewPortInfo.endIndex;\n if (this.component === 'multiselect' && this.parent.mode === 'CheckBox' && this.parent.value && Array.isArray(this.parent.value) && this.parent.value.length > 0 && this.parent.enableSelectionOrder && this.parent.targetElement().trim() === '') {\n if (this.parent.viewPortInfo.startIndex < this.parent.value.length) {\n endIndex = this.parent.viewPortInfo.endIndex - this.parent.value.length;\n if (this.parent.viewPortInfo.startIndex === 0) {\n this.parent.updateVirtualReOrderList(true);\n if (this.parent.value.length < this.parent.itemCount && this.parent.value.length !== this.parent.totalItemCount) {\n var oldUlElement = this.parent.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n if (oldUlElement) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(oldUlElement);\n }\n var query = this.parent.getForQuery(this.parent.value).clone();\n query = query.skip(0).take(this.parent.itemCount - (this.parent.value.length - this.parent.viewPortInfo.startIndex));\n this.parent.appendUncheckList = true;\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isListUpdated = false;\n this.parent.appendUncheckList = this.parent.dataSource instanceof DataManager ? this.parent.appendUncheckList : false;\n isListUpdated = false;\n } else {\n var oldUlElement = this.parent.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n if (oldUlElement) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(oldUlElement);\n }\n }\n isListUpdated = false;\n } else if (this.parent.viewPortInfo.startIndex !== 0) {\n this.parent.updateVirtualReOrderList(true);\n var oldUlElement = this.parent.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n if (oldUlElement) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(oldUlElement);\n }\n isListUpdated = false;\n }\n if (this.parent.viewPortInfo.startIndex !== 0 && this.parent.viewPortInfo.startIndex - this.parent.value.length !== this.parent.itemCount && this.parent.viewPortInfo.startIndex + this.parent.itemCount > this.parent.value.length) {\n var query = this.parent.getForQuery(this.parent.value).clone();\n query = query.skip(0).take(this.parent.itemCount - (this.parent.value.length - this.parent.viewPortInfo.startIndex));\n this.parent.appendUncheckList = true;\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isListUpdated = false;\n this.parent.appendUncheckList = this.parent.dataSource instanceof DataManager ? this.parent.appendUncheckList : false;\n }\n } else {\n var reOrderList = this.parent.list.querySelectorAll('.e-reorder')[0];\n if (this.parent.list.querySelector('.e-virtual-ddl-content') && reOrderList) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList);\n }\n var query = this.parent.getForQuery(this.parent.value).clone(); // Assuming query is of type any\n var skipvalue = this.parent.viewPortInfo.startIndex - this.parent.value.length >= 0 ? this.parent.viewPortInfo.startIndex - this.parent.value.length : 0;\n query = query.skip(skipvalue);\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isListUpdated = false;\n }\n this.parent.totalItemsCount();\n }\n if (isListUpdated) {\n for (var i = this.parent.viewPortInfo.startIndex; i < endIndex; i++) {\n var index = i;\n if (this.component === 'multiselect' && this.parent.mode === 'CheckBox') {\n var oldUlElement = this.parent.list.querySelector('.e-list-parent' + '.e-reorder');\n if (oldUlElement) {\n this.parent.list.querySelector('.e-virtual-ddl-content').removeChild(oldUlElement);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var alreadyAddedData = this.parent.generatedDataObject[index];\n if (this.component === 'multiselect' && this.parent.hideSelectedItem) {\n if (alreadyAddedData) {\n var value = getValue(this.parent.fields.value, alreadyAddedData[0]);\n if (this.parent.value && value !== null && Array.isArray(this.parent.value) && this.parent.value.length > 0 && this.parent.value.indexOf(value) < 0) {\n var query = this.parent.getForQuery(this.parent.value).clone();\n if (this.parent.viewPortInfo.endIndex === this.parent.totalItemCount + this.parent.value.length && this.parent.hideSelectedItem) {\n query = query.skip(this.parent.totalItemCount - this.parent.itemCount);\n } else {\n query = query.skip(this.parent.viewPortInfo.startIndex);\n }\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isResetListCalled = true;\n break;\n } else if (this.parent.value === null || this.parent.value && this.parent.value.length === 0) {\n currentData.push(alreadyAddedData[0]);\n }\n }\n if (index === endIndex - 1) {\n if (currentData.length !== this.parent.itemCount) {\n if (this.parent.hideSelectedItem) {\n var query = this.parent.value && this.parent.value.length > 0 ? this.parent.getForQuery(this.parent.value).clone() : new Query();\n if (this.parent.value && this.parent.viewPortInfo.endIndex === this.parent.totalItemCount + this.parent.value.length && this.parent.hideSelectedItem) {\n query = query.skip(this.parent.totalItemCount - this.parent.itemCount);\n } else {\n query = query.skip(this.parent.viewPortInfo.startIndex);\n }\n this.parent.setCurrentView = false;\n this.parent.resetList(this.parent.dataSource, this.parent.fields, query);\n isResetListCalled = true;\n }\n }\n }\n } else {\n if (alreadyAddedData) {\n currentData.push(alreadyAddedData[0]);\n }\n }\n this.parent.setCurrentView = false;\n }\n }\n if (!isResetListCalled && isListUpdated) {\n if (this.component === 'multiselect' && this.parent.allowCustomValue && this.parent.viewPortInfo.startIndex === 0 && this.parent.virtualCustomData) {\n currentData.splice(0, 0, this.parent.virtualCustomData);\n }\n var totalData = [];\n if (this.component === 'multiselect' && this.parent.allowCustomValue && this.parent.viewPortInfo.endIndex === this.parent.totalItemCount) {\n if (this.parent.virtualCustomSelectData && this.parent.virtualCustomSelectData.length > 0) {\n totalData = currentData.concat(this.parent.virtualCustomSelectData);\n currentData = totalData;\n }\n }\n this.parent.renderItems(currentData, this.parent.fields, this.component === 'multiselect' && this.parent.mode === 'CheckBox');\n }\n if (this.component === 'multiselect') {\n this.parent.updatevirtualizationList();\n this.parent.checkMaxSelection();\n }\n this.parent.getSkeletonCount();\n this.parent.skeletonCount = this.parent.totalItemCount !== 0 && this.parent.totalItemCount < this.parent.itemCount * 2 && (!(this.parent.dataSource instanceof DataManager) || this.parent.dataSource instanceof DataManager && this.parent.totalItemCount <= this.parent.itemCount) ? 0 : this.parent.skeletonCount;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualTrackElement = this.parent.list.getElementsByClassName('e-virtual-ddl')[0];\n if (virtualTrackElement) {\n virtualTrackElement.style = this.parent.GetVirtualTrackHeight();\n } else if (!virtualTrackElement && this.parent.skeletonCount > 0 && this.parent.popupWrapper) {\n var virualElement = this.parent.createElement('div', {\n id: this.parent.element.id + '_popup',\n className: 'e-virtual-ddl',\n styles: this.parent.GetVirtualTrackHeight()\n });\n this.parent.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n this.parent.UpdateSkeleton();\n this.parent.liCollections = this.parent.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualContentElement = this.parent.list.getElementsByClassName('e-virtual-ddl-content')[0];\n if (virtualContentElement) {\n virtualContentElement.style = this.parent.getTransformValues();\n }\n if (this.parent.fields.groupBy) {\n this.parent.scrollStop();\n }\n if (this.parent.keyCode === 40 && this.parent.isScrollChanged && this.parent.hideSelectedItem && !isNullOrUndefined(this.parent.currentFocuedListElement)) {\n var currentSelectElem = this.parent.getElementByValue(this.parent.currentFocuedListElement.getAttribute('data-value'));\n this.parent.addListFocus(currentSelectElem);\n this.parent.isScrollChanged = false;\n }\n };\n VirtualScroll.prototype.generateQueryAndSetQueryIndexAsync = function (query, isPopupOpen) {\n var isStartIndexInitialised = false;\n var queryStartIndex = 0;\n var queryEndIndex = 0;\n var vEndIndex = this.parent.viewPortInfo.endIndex;\n if (!isPopupOpen && vEndIndex !== 0) {\n for (var i = this.parent.viewPortInfo.startIndex; i <= vEndIndex; i++) {\n if (!(i in this.parent.generatedDataObject)) {\n if (!isStartIndexInitialised) {\n isStartIndexInitialised = true;\n queryStartIndex = queryEndIndex = i;\n } else {\n queryEndIndex = i === vEndIndex ? i : i + 1;\n }\n }\n }\n }\n if (isStartIndexInitialised && !(this.parent.totalItemCount === queryStartIndex && this.parent.totalItemCount === queryEndIndex)) {\n this.parent.virtualItemStartIndex = queryStartIndex;\n this.parent.virtualItemEndIndex = queryEndIndex;\n this.parent.setCurrentView = true;\n this.generateAndExecuteQueryAsync(query, queryStartIndex, queryEndIndex);\n if (this.component === 'multiselect' && this.parent.hideSelectedItem && this.parent.value && Array.isArray(this.parent.value) && this.parent.value.length > 0) {\n this.parent.totalItemsCount();\n }\n if (this.component === 'multiselect' && this.parent.virtualItemStartIndex === this.parent.virtualItemEndIndex) {\n this.parent.virtualItemStartIndex = this.parent.viewPortInfo.startIndex;\n this.parent.virtualItemEndIndex = this.parent.viewPortInfo.endIndex;\n }\n }\n if (!(this.parent.dataSource instanceof DataManager) || this.parent.dataSource instanceof DataManager && !this.parent.isRequesting) {\n this.setCurrentViewDataAsync();\n }\n };\n VirtualScroll.prototype.dataProcessAsync = function (isOpenPopup) {\n this.parent.selectedValueInfo = null;\n this.parent.virtualItemStartIndex = this.parent.viewPortInfo.startIndex;\n this.parent.virtualItemEndIndex = this.parent.viewPortInfo.endIndex;\n this.generateQueryAndSetQueryIndexAsync(new Query(), isOpenPopup);\n };\n VirtualScroll.prototype.virtualScrollRefreshAsync = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.parent.isCustomFilter = !(this.parent.isTyped || this.component === 'combobox' && this.parent.allowFiltering && this.parent.queryString !== this.parent.typedString || !isNullOrUndefined(this.parent.filterInput) && !isNullOrUndefined(this.parent.filterInput.value) && this.parent.filterInput.value !== '' && this.component !== 'combobox') && !(this.component === 'autocomplete' && this.parent.value != null) || this.parent.isCustomFilter;\n if (this.parent.allowFiltering || this.component === 'autocomplete') {\n if (!isNullOrUndefined(this.parent.typedString) && !(this.component === 'combobox' && !isNullOrUndefined(this.parent.typedString) && this.parent.allowFiltering)) {\n if (this.parent.viewPortInfo.endIndex >= this.parent.dataCount) {\n this.parent.viewPortInfo.endIndex = this.parent.dataCount;\n }\n if (this.parent.viewPortInfo.startIndex >= this.parent.dataCount) {\n this.parent.viewPortInfo.startIndex = this.parent.dataCount - this.parent.itemCount;\n }\n } else {\n this.parent.getSkeletonCount(true);\n if (this.component === 'combobox') {\n this.parent.skeletonCount = this.parent.totalItemCount !== 0 && this.parent.totalItemCount < this.parent.itemCount * 2 && (!(this.parent.dataSource instanceof DataManager) || this.parent.dataSource instanceof DataManager && this.parent.totalItemCount <= this.parent.itemCount) ? 0 : this.parent.skeletonCount;\n }\n }\n }\n return [4 /*yield*/, this.dataProcessAsync()];\n case 1:\n _a.sent();\n if (this.parent.keyboardEvent != null && (!(this.parent.dataSource instanceof DataManager) || this.parent.dataSource instanceof DataManager && !this.parent.isRequesting)) {\n this.parent.handleVirtualKeyboardActions(this.parent.keyboardEvent, this.parent.pageCount);\n }\n if (!this.parent.customFilterQuery) {\n this.parent.isCustomFilter = false;\n }\n return [2 /*return*/];\n }\n });\n });\n };\n VirtualScroll.prototype.scrollListener = function (scrollArgs) {\n var _this = this;\n if (!this.parent.isPreventScrollAction && !this.parent.isVirtualTrackHeight) {\n this.parent.preventSetCurrentData = false;\n var info = scrollArgs.sentinel;\n var pStartIndex = this.parent.previousStartIndex;\n this.parent.viewPortInfo = this.getInfoFromView(scrollArgs.direction, info, scrollArgs.offset, false);\n this.parent.isUpwardScrolling = false;\n if (this.parent.previousStartIndex !== pStartIndex && !this.parent.isKeyBoardAction) {\n this.parent.isScrollActionTriggered = false;\n this.parent.currentPageNumber = this.parent.viewPortInfo.currentPageNumber;\n this.parent.virtualListInfo = __assign({}, this.parent.viewPortInfo);\n this.parent.isPreventKeyAction = true;\n this.parent.isVirtualScrolling = true;\n setTimeout(function () {\n _this.parent.pageCount = _this.parent.getPageCount();\n _this.virtualScrollRefreshAsync().then(function () {\n if (_this.parent.popupObj) {\n _this.parent.list = _this.parent.popupObj.element.querySelector('.' + 'e-content') || select('.' + 'e-content');\n _this.parent.updateSelectionList();\n _this.parent.liCollections = _this.parent.getItems();\n }\n _this.parent.isKeyBoardAction = false;\n _this.parent.isVirtualScrolling = false;\n _this.parent.isPreventKeyAction = false;\n });\n }, 5);\n } else if (this.parent.isScrollActionTriggered) {\n this.parent.isPreventKeyAction = false;\n this.parent.isScrollActionTriggered = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.parent.getTransformValues();\n }\n this.parent.previousInfo = this.parent.viewPortInfo;\n }\n };\n VirtualScroll.prototype.getInfoFromView = function (direction, info, e, isscrollAction) {\n var infoType = {\n direction: direction,\n sentinelInfo: info,\n offsets: e,\n startIndex: this.parent.previousStartIndex,\n endIndex: this.parent.previousEndIndex\n };\n var vHeight = this.parent.popupContentElement ? this.parent.popupContentElement.getBoundingClientRect().height : 0;\n //Row Start and End Index calculation\n var rowHeight = this.parent.listItemHeight;\n var exactTopIndex = e.top / rowHeight;\n var infoViewIndices = vHeight / rowHeight;\n var exactEndIndex = exactTopIndex + infoViewIndices;\n var pageSizeBy4 = this.parent.virtualItemCount / 4;\n var totalItemCount = this.parent.totalItemCount;\n if (infoType.direction === 'down') {\n var sIndex = Math.round(exactEndIndex) - Math.round(pageSizeBy4);\n if (isNullOrUndefined(infoType.startIndex) || exactEndIndex > infoType.startIndex + Math.round(this.parent.virtualItemCount / 2 + pageSizeBy4) && infoType.endIndex !== totalItemCount) {\n infoType.startIndex = sIndex >= 0 ? Math.round(sIndex) : 0;\n infoType.startIndex = infoType.startIndex > exactTopIndex ? Math.floor(exactTopIndex) : infoType.startIndex;\n var eIndex = infoType.startIndex + this.parent.virtualItemCount;\n infoType.startIndex = eIndex < exactEndIndex ? Math.ceil(exactEndIndex) - this.parent.virtualItemCount : infoType.startIndex;\n infoType.endIndex = eIndex < totalItemCount ? eIndex : totalItemCount;\n infoType.startIndex = eIndex >= totalItemCount ? infoType.endIndex - this.parent.virtualItemCount > 0 ? infoType.endIndex - this.parent.virtualItemCount : 0 : infoType.startIndex;\n infoType.currentPageNumber = Math.ceil(infoType.endIndex / this.parent.virtualItemCount);\n }\n } else if (infoType.direction === 'up') {\n if (infoType.startIndex && infoType.endIndex || Math.ceil(exactTopIndex) > this.parent.previousStartIndex) {\n var loadAtIndex = Math.round((infoType.startIndex * rowHeight + pageSizeBy4 * rowHeight) / rowHeight);\n if (exactTopIndex < loadAtIndex || Math.ceil(exactTopIndex) > this.parent.previousStartIndex) {\n var idxAddedToExactTop = pageSizeBy4 > infoViewIndices ? pageSizeBy4 : infoViewIndices + infoViewIndices / 4;\n var eIndex = Math.round(exactTopIndex + idxAddedToExactTop);\n infoType.endIndex = eIndex < totalItemCount ? eIndex : totalItemCount;\n var sIndex = infoType.endIndex - this.parent.virtualItemCount;\n infoType.startIndex = sIndex > 0 ? sIndex : 0;\n infoType.endIndex = sIndex < 0 ? this.parent.virtualItemCount : infoType.endIndex;\n infoType.currentPageNumber = Math.ceil(infoType.startIndex / this.parent.virtualItemCount);\n }\n }\n }\n if (!isscrollAction) {\n this.parent.previousStartIndex = infoType.startIndex;\n this.parent.startIndex = infoType.startIndex;\n this.parent.previousEndIndex = infoType.endIndex;\n } else {\n this.parent.scrollPreStartIndex = infoType.startIndex;\n }\n return infoType;\n };\n VirtualScroll.prototype.virtualScrollHandler = function (callback) {\n var _this = this;\n var delay = Browser.info.name === 'chrome' ? 200 : 100;\n var prevTop = 0;\n var debounced100 = debounce(callback, delay);\n var debounced50 = debounce(callback, 50);\n return function (e) {\n var top = e.target.scrollTop;\n var left = e.target.scrollLeft;\n var direction = prevTop < top && !_this.parent.isUpwardScrolling ? 'down' : 'up';\n prevTop = top;\n var current = _this.sentinelInfo[direction];\n var pstartIndex = _this.parent.scrollPreStartIndex;\n var scrollOffsetargs = {\n top: top,\n left: left\n };\n if (_this.parent.list && _this.parent.list.querySelectorAll('.e-virtual-list').length > 0) {\n _this.getInfoFromView(direction, current, scrollOffsetargs, true);\n if (_this.parent.scrollPreStartIndex !== pstartIndex && !_this.parent.isPreventScrollAction) {\n _this.parent.isScrollActionTriggered = true;\n var virtualPoup = _this.parent.list.querySelector('.e-virtual-ddl-content');\n virtualPoup.style.transform = 'translate(0px,' + top + 'px)';\n }\n }\n var debounceFunction = debounced100;\n if (current.axis === 'X') {\n debounceFunction = debounced50;\n }\n debounceFunction({\n direction: direction,\n sentinel: current,\n offset: {\n top: top,\n left: left\n },\n focusElement: document.activeElement\n });\n };\n };\n VirtualScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return VirtualScroll;\n}();\nexport { VirtualScroll };","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};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID, removeClass } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach, createElement as buildTag } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-vscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_VSCROLLBAR = 'e-vscroll-bar';\nvar CLS_VSCROLLCON = 'e-vscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVUPARROW = 'e-nav-up-arrow';\nvar CLS_NAVDOWNARROW = 'e-nav-down-arrow';\nvar CLS_VSCROLLNAV = 'e-scroll-nav';\nvar CLS_VSCROLLNAVUP = 'e-scroll-up-nav';\nvar CLS_VSCROLLNAVDOWN = 'e-scroll-down-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_UPOVERLAY = 'e-scroll-up-overlay';\nvar CLS_DOWNOVERLAY = 'e-scroll-down-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * VScroll module is introduces vertical scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs vertical scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n * <div id=\"scroll\"/>\n * <script>\n * var scrollObj = new VScroll();\n * scrollObj.appendTo(\"#scroll\");\n * </script>\n * ```\n */\nvar VScroll = /** @class */function (_super) {\n __extends(VScroll, _super);\n /**\n * Initializes a new instance of the VScroll class.\n *\n * @param {VScrollModel} options - Specifies VScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which vertical scrolling applies.\n */\n function VScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var ele = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (ele.id === '') {\n ele.id = getUniqueID('vscroll');\n this.uniqueId = true;\n }\n ele.style.display = 'block';\n if (this.enableRtl) {\n ele.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the vertical scroll rendering\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, {\n scroll: this.touchHandler.bind(this),\n swipe: this.swipeHandler.bind(this)\n });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollEventHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n } else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlayElement(this.element);\n }\n this.setScrollState();\n EventHandler.add(this.element, 'wheel', this.wheelEventHandler, this);\n };\n VScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetHeight;\n this.customStep = false;\n } else {\n this.customStep = true;\n }\n };\n VScroll.prototype.initialize = function () {\n var scrollCnt = buildTag('div', {\n className: CLS_VSCROLLCON\n });\n var scrollBar = buildTag('div', {\n className: CLS_VSCROLLBAR\n });\n scrollBar.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollCnt.appendChild(ele_1);\n }\n scrollBar.appendChild(scrollCnt);\n ele.appendChild(scrollBar);\n scrollBar.style.overflow = 'hidden';\n this.scrollEle = scrollBar;\n this.scrollItems = scrollCnt;\n };\n VScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n VScroll.prototype.getModuleName = function () {\n return 'vScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n VScroll.prototype.destroy = function () {\n var el = this.element;\n el.style.display = '';\n removeClass([this.element], [CLS_ROOT, CLS_DEVICE, CLS_RTL]);\n var navs = selectAll('.e-' + el.id + '_nav.' + CLS_VSCROLLNAV, el);\n var overlays = selectAll('.' + CLS_OVERLAY, el);\n [].slice.call(overlays).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n el.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (navs.length > 0) {\n detach(navs[0]);\n if (!isNullOrUndefined(navs[1])) {\n detach(navs[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollEventHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the VScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, VScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n VScroll.prototype.disable = function (value) {\n var navEle = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n } else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEle).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n VScroll.prototype.createOverlayElement = function (element) {\n var id = element.id.concat('_nav');\n var downOverlayEle = buildTag('div', {\n className: CLS_OVERLAY + ' ' + CLS_DOWNOVERLAY\n });\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var downEle = buildTag('div', {\n id: id.concat('down'),\n className: clsDown\n });\n var navItem = buildTag('div', {\n className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons'\n });\n downEle.appendChild(navItem);\n var upEle = buildTag('div', {\n className: CLS_OVERLAY + ' ' + CLS_UPOVERLAY\n });\n if (this.ieCheck) {\n downEle.classList.add('e-ie-align');\n }\n element.appendChild(downOverlayEle);\n element.appendChild(downEle);\n element.insertBefore(upEle, element.firstChild);\n this.eventBinding([downEle]);\n };\n VScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var nav = buildTag('div', {\n id: id.concat('_down'),\n className: clsDown\n });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = buildTag('div', {\n className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons'\n });\n var clsUp = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVUP);\n var navElement = buildTag('div', {\n id: id.concat('_up'),\n className: clsUp + ' ' + CLS_DISABLE\n });\n navElement.setAttribute('aria-disabled', 'true');\n var navUpItem = buildTag('div', {\n className: CLS_NAVUPARROW + ' ' + CLS_NAVARROW + ' e-icons'\n });\n navElement.appendChild(navUpItem);\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n element.appendChild(nav);\n element.insertBefore(navElement, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navElement.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navElement]);\n };\n VScroll.prototype.onKeyPress = function (ev) {\n var _this = this;\n if (ev.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, ev.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n VScroll.prototype.onKeyUp = function (ev) {\n if (ev.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n } else {\n ev.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n VScroll.prototype.eventBinding = function (element) {\n var _this = this;\n [].slice.call(element).forEach(function (ele) {\n new Touch(ele, {\n tapHold: _this.tabHoldHandler.bind(_this),\n tapHoldThreshold: 500\n });\n ele.addEventListener('keydown', _this.onKeyPress.bind(_this));\n ele.addEventListener('keyup', _this.onKeyUp.bind(_this));\n ele.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n ele.addEventListener('touchend', _this.repeatScroll.bind(_this));\n ele.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(ele, 'click', _this.clickEventHandler, _this);\n });\n };\n VScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n VScroll.prototype.tabHoldHandler = function (ev) {\n var _this = this;\n var trgt = ev.originalEvent.target;\n trgt = this.contains(trgt, CLS_VSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDistance = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDistance, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n VScroll.prototype.contains = function (element, className) {\n return element.classList.contains(className);\n };\n VScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var classList = trgt.classList;\n if (classList.contains(CLS_VSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (classList.contains(CLS_NAVDOWNARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n } else if (classList.contains(CLS_NAVUPARROW)) {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n };\n VScroll.prototype.clickEventHandler = function (event) {\n this.eleScrolling(this.scrollStep, event.target, false);\n };\n VScroll.prototype.wheelEventHandler = function (e) {\n e.preventDefault();\n this.frameScrollRequest(this.scrollStep, e.deltaY > 0 ? 'add' : '', false);\n };\n VScroll.prototype.swipeHandler = function (e) {\n var swipeElement = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceY / (e.velocity * 10);\n } else {\n distance = e.distanceY / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n } else {\n if (e.swipeDirection === 'Up') {\n swipeElement.scrollTop += distance * step;\n } else if (e.swipeDirection === 'Down') {\n swipeElement.scrollTop -= distance * step;\n }\n start -= 0.02;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollTop += scrollVal;\n } else {\n this.scrollEle.scrollTop -= scrollVal;\n }\n };\n VScroll.prototype.frameScrollRequest = function (scrollValue, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollValue, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollValue -= el.offsetHeight;\n });\n }\n var animate = function () {\n if (scrollValue < step) {\n window.cancelAnimationFrame(step);\n } else {\n _this.scrollUpdating(step, action);\n scrollValue -= step;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.touchHandler = function (e) {\n var el = this.scrollEle;\n var distance = e.distanceY;\n if (e.scrollDirection === 'Up') {\n el.scrollTop = el.scrollTop + distance;\n } else if (e.scrollDirection === 'Down') {\n el.scrollTop = el.scrollTop - distance;\n }\n };\n VScroll.prototype.arrowDisabling = function (addDisableCls, removeDisableCls) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisableCls) ? removeDisableCls : addDisableCls;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisableCls)) {\n classList(arrowIcon, [CLS_NAVDOWNARROW], [CLS_NAVUPARROW]);\n } else {\n classList(arrowIcon, [CLS_NAVUPARROW], [CLS_NAVDOWNARROW]);\n }\n } else {\n addDisableCls.classList.add(CLS_DISABLE);\n addDisableCls.setAttribute('aria-disabled', 'true');\n addDisableCls.removeAttribute('tabindex');\n removeDisableCls.classList.remove(CLS_DISABLE);\n removeDisableCls.setAttribute('aria-disabled', 'false');\n removeDisableCls.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n VScroll.prototype.scrollEventHandler = function (e) {\n var target = e.target;\n var height = target.offsetHeight;\n var navUpEle = this.element.querySelector('.' + CLS_VSCROLLNAVUP);\n var navDownEle = this.element.querySelector('.' + CLS_VSCROLLNAVDOWN);\n var upOverlay = this.element.querySelector('.' + CLS_UPOVERLAY);\n var downOverlay = this.element.querySelector('.' + CLS_DOWNOVERLAY);\n var scrollTop = target.scrollTop;\n if (scrollTop <= 0) {\n scrollTop = -scrollTop;\n }\n if (this.isDevice) {\n if (scrollTop < OVERLAY_MAXWID) {\n upOverlay.style.height = scrollTop + 'px';\n } else {\n upOverlay.style.height = '40px';\n }\n if (target.scrollHeight - Math.ceil(height + scrollTop) < OVERLAY_MAXWID) {\n downOverlay.style.height = target.scrollHeight - Math.ceil(height + scrollTop) + 'px';\n } else {\n downOverlay.style.height = '40px';\n }\n }\n if (scrollTop === 0) {\n this.arrowDisabling(navUpEle, navDownEle);\n } else if (Math.ceil(height + scrollTop + .1) >= target.scrollHeight) {\n this.arrowDisabling(navDownEle, navUpEle);\n } else {\n var disEle = this.element.querySelector('.' + CLS_VSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {VScrollModel} newProp - It contains the new value of data.\n * @param {VScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n VScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(CLS_RTL);\n } else {\n this.element.classList.remove(CLS_RTL);\n }\n break;\n }\n }\n };\n __decorate([Property(null)], VScroll.prototype, \"scrollStep\", void 0);\n VScroll = __decorate([NotifyPropertyChanges], VScroll);\n return VScroll;\n}(Component);\nexport { VScroll };","import { select, detach } from '@syncfusion/ej2-base';\nimport { VScroll } from './v-scroll';\nimport { HScroll } from './h-scroll';\n/**\n * Used to add scroll in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nexport function addScrolling(createElement, container, content, scrollType, enableRtl, offset) {\n var containerOffset;\n var contentOffset;\n var parentElem = container.parentElement;\n if (scrollType === 'vscroll') {\n containerOffset = offset || container.getBoundingClientRect().height;\n contentOffset = content.getBoundingClientRect().height;\n } else {\n containerOffset = container.getBoundingClientRect().width;\n contentOffset = content.getBoundingClientRect().width;\n }\n if (containerOffset < contentOffset) {\n return createScrollbar(createElement, container, content, scrollType, enableRtl, offset);\n } else if (parentElem) {\n var width = parentElem.getBoundingClientRect().width;\n if (width < containerOffset && scrollType === 'hscroll') {\n contentOffset = width;\n container.style.maxWidth = width + 'px';\n return createScrollbar(createElement, container, content, scrollType, enableRtl, offset);\n }\n return content;\n } else {\n return content;\n }\n}\n/**\n * Used to create scroll bar in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nfunction createScrollbar(createElement, container, content, scrollType, enableRtl, offset) {\n var scrollEle = createElement('div', {\n className: 'e-menu-' + scrollType\n });\n container.appendChild(scrollEle);\n scrollEle.appendChild(content);\n if (offset) {\n scrollEle.style.overflow = 'hidden';\n scrollEle.style.height = offset + 'px';\n } else {\n scrollEle.style.maxHeight = container.style.maxHeight;\n container.style.overflow = 'hidden';\n }\n var scrollObj;\n if (scrollType === 'vscroll') {\n scrollObj = new VScroll({\n enableRtl: enableRtl\n }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetHeight / 2;\n } else {\n scrollObj = new HScroll({\n enableRtl: enableRtl\n }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetWidth;\n }\n return scrollEle;\n}\n/**\n * Used to destroy the scroll option.\n *\n * @param {VScroll | HScroll} scrollObj - Specifies the scroller object\n * @param {Element} element - Specifies the element\n * @param {HTMLElement} skipEle - Specifies the skip element\n * @returns {void}\n * @hidden\n */\nexport function destroyScroll(scrollObj, element, skipEle) {\n if (scrollObj) {\n var menu = select('.e-menu-parent', element);\n if (menu) {\n if (!skipEle || skipEle === menu) {\n scrollObj.destroy();\n element.parentElement.appendChild(menu);\n detach(element);\n }\n } else {\n scrollObj.destroy();\n detach(element);\n }\n }\n}","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};\nimport { Component, NotifyPropertyChanges, ChildProperty, Property, Collection, append, extend, Event, EventHandler, closest, addClass, removeClass, detach, remove, initializeCSPTemplate, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { Popup } from '@syncfusion/ej2-popups';\nvar ICONRIGHT = 'e-icon-right';\nvar ITEMTEXTCLASS = 'e-breadcrumb-text';\nvar ICONCLASS = 'e-breadcrumb-icon';\nvar MENUCLASS = 'e-breadcrumb-menu';\nvar ITEMCLASS = 'e-breadcrumb-item';\nvar POPUPCLASS = 'e-breadcrumb-popup';\nvar WRAPMODECLASS = 'e-breadcrumb-wrap-mode';\nvar SCROLLMODECLASS = 'e-breadcrumb-scroll-mode';\nvar TABINDEX = 'tabindex';\nvar DISABLEDCLASS = 'e-disabled';\nvar ARIADISABLED = 'aria-disabled';\nvar DOT = '.';\n/**\n * Defines the Breadcrumb overflow modes.\n */\nexport var BreadcrumbOverflowMode;\n(function (BreadcrumbOverflowMode) {\n /**\n * Hidden mode shows the maximum number of items possible in the container space and hides the remaining items.\n * Clicking on a previous item will make the hidden item visible.\n */\n BreadcrumbOverflowMode[\"Hidden\"] = \"Hidden\";\n /**\n * Collapsed mode shows the first and last Breadcrumb items and hides the remaining items with a collapsed icon.\n * When the collapsed icon is clicked, all items become visible and navigable.\n */\n BreadcrumbOverflowMode[\"Collapsed\"] = \"Collapsed\";\n /**\n * Menu mode shows the number of Breadcrumb items that can be accommodated within the container space and creates a submenu with the remaining items.\n */\n BreadcrumbOverflowMode[\"Menu\"] = \"Menu\";\n /**\n * Wrap mode wraps the items to multiple lines when the Breadcrumb’s width exceeds the container space.\n */\n BreadcrumbOverflowMode[\"Wrap\"] = \"Wrap\";\n /**\n * Scroll mode shows an HTML scroll bar when the Breadcrumb’s width exceeds the container space.\n */\n BreadcrumbOverflowMode[\"Scroll\"] = \"Scroll\";\n /**\n * None mode shows all the items in a single line.\n */\n BreadcrumbOverflowMode[\"None\"] = \"None\";\n})(BreadcrumbOverflowMode || (BreadcrumbOverflowMode = {}));\nvar BreadcrumbItem = /** @class */function (_super) {\n __extends(BreadcrumbItem, _super);\n function BreadcrumbItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('')], BreadcrumbItem.prototype, \"text\", void 0);\n __decorate([Property('')], BreadcrumbItem.prototype, \"id\", void 0);\n __decorate([Property('')], BreadcrumbItem.prototype, \"url\", void 0);\n __decorate([Property(null)], BreadcrumbItem.prototype, \"iconCss\", void 0);\n __decorate([Property(false)], BreadcrumbItem.prototype, \"disabled\", void 0);\n return BreadcrumbItem;\n}(ChildProperty);\nexport { BreadcrumbItem };\n/**\n * Breadcrumb is a graphical user interface that helps to identify or highlight the current location within a hierarchical structure of websites.\n * The aim is to make the user aware of their current position in a hierarchy of website links.\n * ```html\n * <nav id='breadcrumb'></nav>\n * ```\n * ```typescript\n * <script>\n * var breadcrumbObj = new Breadcrumb({ items: [{ text: 'Home', url: '/' }, { text: 'Index', url: './index.html }]});\n * breadcrumbObj.appendTo(\"#breadcrumb\");\n * </script>\n * ```\n */\nvar Breadcrumb = /** @class */function (_super) {\n __extends(Breadcrumb, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {BreadcrumbModel} options - Specifies the Breadcrumb model.\n * @param {string | HTMLElement} element - Specifies the element.\n */\n function Breadcrumb(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isPopupCreated = false;\n return _this;\n }\n /**\n * @private\n * @returns {void}\n */\n Breadcrumb.prototype.preRender = function () {\n // pre render code\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n Breadcrumb.prototype.render = function () {\n this.initialize();\n this.renderItems(this.items);\n this.wireEvents();\n };\n Breadcrumb.prototype.initialize = function () {\n this._maxItems = this.maxItems;\n if (isNullOrUndefined(this.element.getAttribute('aria-label'))) {\n this.element.setAttribute('aria-label', 'breadcrumb');\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n if (this.disabled) {\n this.element.classList.add(DISABLEDCLASS);\n this.element.setAttribute(ARIADISABLED, 'true');\n }\n if (this.overflowMode === 'Wrap') {\n this.element.classList.add(WRAPMODECLASS);\n } else if (this.overflowMode === 'Scroll') {\n this.element.classList.add(SCROLLMODECLASS);\n }\n this.initItems();\n this.initPvtProps();\n };\n Breadcrumb.prototype.initPvtProps = function () {\n if (this.overflowMode === 'Hidden' && this._maxItems > 0) {\n this.endIndex = this.getEndIndex();\n this.startIndex = this.endIndex + 1 - (this._maxItems - 1);\n }\n if (this.overflowMode === 'Menu') {\n if (this._maxItems >= 0) {\n this.startIndex = this._maxItems > 1 ? 1 : 0;\n this.endIndex = this.getEndIndex();\n this.popupUl = this.createElement('ul', {\n attrs: {\n TABINDEX: '0',\n 'role': 'menu'\n }\n });\n } else {\n this.startIndex = this.endIndex = null;\n }\n }\n };\n Breadcrumb.prototype.getEndIndex = function () {\n var _this = this;\n var endIndex;\n if (this.activeItem) {\n this.items.forEach(function (item, idx) {\n if (item.url === _this.activeItem || item.text === _this.activeItem) {\n endIndex = idx;\n }\n });\n } else {\n endIndex = this.items.length - 1;\n }\n return endIndex;\n };\n Breadcrumb.prototype.initItems = function () {\n if (!this.items.length) {\n var baseUri = void 0;\n var uri = void 0;\n var items = [];\n if (this.url) {\n var url = new URL(this.url, window.location.origin);\n baseUri = url.origin + '/';\n uri = url.href.split(baseUri)[1].split('/');\n } else {\n baseUri = window.location.origin + '/';\n uri = window.location.href.split(baseUri)[1].split('/');\n }\n items.push({\n iconCss: 'e-icons e-home',\n url: baseUri\n });\n for (var i = 0; i < uri.length; i++) {\n if (uri[i]) {\n items.push({\n text: uri[i],\n url: baseUri + uri[i]\n });\n baseUri += uri[i] + '/';\n }\n }\n this.setProperties({\n items: items\n }, true);\n }\n };\n Breadcrumb.prototype.renderItems = function (items) {\n var _this = this;\n var item;\n var isSingleLevel;\n var isIconRight = this.element.classList.contains(ICONRIGHT);\n var itemsLength = items.length;\n if (itemsLength) {\n var isActiveItem = void 0;\n var isLastItem = void 0;\n var isLastItemInPopup_1;\n var j_1 = 0;\n var wrapDiv = void 0;\n var len = itemsLength * 2 - 1;\n var isItemCancelled_1 = false;\n var ol = this.createElement('ol', {\n className: this.overflowMode === 'Wrap' ? 'e-breadcrumb-wrapped-ol' : ''\n });\n var firstOl = this.createElement('ol', {\n className: this.overflowMode === 'Wrap' ? 'e-breadcrumb-first-ol' : ''\n });\n var showIcon = this.hasField(items, 'iconCss');\n var isCollasped = this.overflowMode === 'Collapsed' && this._maxItems > 0 && itemsLength > this._maxItems && !this.isExpanded;\n var isDefaultOverflowMode_1 = this.overflowMode === 'Hidden' && this._maxItems > 0;\n if (this.overflowMode === 'Menu' && this.popupUl) {\n this.popupUl.innerHTML = '';\n }\n var listBaseOptions = {\n moduleName: this.getModuleName(),\n showIcon: showIcon,\n itemNavigable: true,\n itemCreated: function (args) {\n var isLastItem = args.curData.isLastItem;\n if (isLastItem && args.item.children.length && !_this.itemTemplate) {\n delete args.curData.isLastItem;\n if (!isLastItemInPopup_1 && !_this.enableActiveItemNavigation) {\n args.item.innerHTML = _this.createElement('span', {\n className: ITEMTEXTCLASS,\n innerHTML: args.item.children[0].innerHTML\n }).outerHTML;\n }\n }\n if (args.curData.iconCss && !args.curData.text && !_this.itemTemplate) {\n args.item.classList.add('e-icon-item');\n }\n if (isDefaultOverflowMode_1) {\n args.item.setAttribute('item-index', j_1.toString());\n }\n var eventArgs = {\n item: extend({}, args.curData.properties ? args.curData.properties : args.curData),\n element: args.item,\n cancel: false\n };\n _this.trigger('beforeItemRender', eventArgs);\n isItemCancelled_1 = eventArgs.cancel;\n var containsRightIcon = isIconRight || eventArgs.element.classList.contains(ICONRIGHT);\n if (containsRightIcon && args.curData.iconCss && !_this.itemTemplate) {\n args.item.querySelector('.e-anchor-wrap').appendChild(args.item.querySelector(DOT + ICONCLASS));\n }\n if (eventArgs.item.disabled) {\n args.item.setAttribute(ARIADISABLED, 'true');\n args.item.classList.add(DISABLEDCLASS);\n }\n if (eventArgs.item.id) {\n args.item.setAttribute('id', eventArgs.item.id);\n }\n if ((eventArgs.item.disabled || _this.disabled) && args.item.children.length && !_this.itemTemplate) {\n args.item.children[0].setAttribute(TABINDEX, '-1');\n }\n if (args.curData.isEmptyUrl) {\n args.item.children[0].removeAttribute('href');\n if ((!isLastItem || isLastItem && _this.enableActiveItemNavigation) && !(eventArgs.item.disabled || _this.disabled)) {\n args.item.children[0].setAttribute(TABINDEX, '0');\n EventHandler.add(args.item.children[0], 'keydown', _this.keyDownHandler, _this);\n }\n }\n args.item.removeAttribute('role');\n if (isLastItem) {\n args.item.setAttribute('data-active-item', '');\n }\n if (!_this.itemTemplate) {\n _this.beforeItemRenderChanges(args.curData, eventArgs.item, args.item, containsRightIcon);\n }\n }\n };\n for (var i = 0; i < len; i % 2 && j_1++, i++) {\n isActiveItem = this.activeItem && (this.activeItem === items[j_1].url || this.activeItem === items[j_1].text);\n if (isCollasped && i > 1 && i < len - 2) {\n continue;\n } else if (isDefaultOverflowMode_1 && (j_1 < this.startIndex || j_1 > this.endIndex) && (i % 2 ? j_1 !== this.startIndex - 1 : true) && j_1 !== 0) {\n continue;\n }\n if (i % 2) {\n // separator item\n wrapDiv = this.createElement('div', {\n className: 'e-breadcrumb-item-wrapper'\n });\n if (this.separatorTemplate && this.separatorTemplate === '/' || isNullOrUndefined(this.separatorTemplate)) {\n listBaseOptions.template = initializeCSPTemplate(function () {\n return '/';\n });\n } else {\n listBaseOptions.template = this.separatorTemplate;\n }\n listBaseOptions.itemClass = 'e-breadcrumb-separator';\n isSingleLevel = false;\n item = [{\n previousItem: items[j_1],\n nextItem: items[j_1 + 1]\n }];\n } else {\n // list item\n listBaseOptions.itemClass = '';\n if (this.itemTemplate) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n listBaseOptions.template = this.itemTemplate;\n isSingleLevel = false;\n } else {\n isSingleLevel = true;\n }\n item = [extend({}, items[j_1].properties ? items[j_1].properties : items[j_1])];\n if (!item[0].url && !this.itemTemplate) {\n item = [extend({}, item[0], {\n isEmptyUrl: true,\n url: '#'\n })];\n }\n isLastItem = (isDefaultOverflowMode_1 || this.overflowMode === 'Menu') && j_1 === this.endIndex;\n if ((i === len - 1 || isLastItem) && !this.itemTemplate || isActiveItem) {\n item[0].isLastItem = true;\n }\n }\n var parent_1 = ol;\n var lastPopupItemIdx = this.startIndex + this.endIndex - this._maxItems;\n if (this.overflowMode === 'Menu' && (j_1 >= this.startIndex && j_1 <= lastPopupItemIdx && (i % 2 ? !(j_1 === lastPopupItemIdx) : true) && this.endIndex >= this._maxItems && this._maxItems > 0 || this._maxItems === 0)) {\n if (i % 2) {\n continue;\n } else {\n parent_1 = this.popupUl;\n if (isLastItem) {\n isLastItemInPopup_1 = true;\n }\n }\n } else if (this.overflowMode === 'Wrap') {\n if (i === 0) {\n parent_1 = firstOl;\n } else {\n parent_1 = wrapDiv;\n }\n }\n var li = ListBase.createList(this.createElement, item, listBaseOptions, isSingleLevel, this).childNodes;\n if (!isItemCancelled_1) {\n append(li, parent_1);\n } else if (isDefaultOverflowMode_1 || isCollasped || this.overflowMode === 'Menu' || this.overflowMode === 'Wrap') {\n items.splice(j_1, 1);\n this.initPvtProps();\n return this.reRenderItems();\n } else if (i === len - 1 || isLastItem) {\n remove(parent_1.lastElementChild);\n }\n if (this.overflowMode === 'Wrap' && i !== 0 && i % 2 === 0) {\n ol.appendChild(wrapDiv);\n }\n if (isCollasped && i === 1) {\n var li_1 = this.createElement('li', {\n className: 'e-icons e-breadcrumb-collapsed',\n attrs: {\n TABINDEX: '0'\n }\n });\n EventHandler.add(li_1, 'keyup', this.expandHandler, this);\n ol.appendChild(li_1);\n }\n if (this.overflowMode === 'Menu' && this.startIndex === i && this.endIndex >= this._maxItems && this._maxItems >= 0) {\n var menu = this.getMenuElement();\n EventHandler.add(menu, 'keyup', this.keyDownHandler, this);\n ol.appendChild(menu);\n }\n if (isActiveItem || isLastItem) {\n break;\n }\n if (isItemCancelled_1) {\n i++;\n }\n }\n if (this.isReact) {\n this.renderReactTemplates();\n setTimeout(function () {\n _this.calculateMaxItems();\n }, 5);\n }\n if (this.overflowMode === 'Wrap') {\n this.element.appendChild(firstOl);\n }\n this.element.appendChild(ol);\n if (!this.isReact) {\n this.calculateMaxItems();\n }\n }\n };\n Breadcrumb.prototype.calculateMaxItems = function () {\n if (this.overflowMode === 'Hidden' || this.overflowMode === 'Collapsed' || this.overflowMode === 'Menu') {\n var maxItems = void 0;\n var width = this.element.offsetWidth;\n var liElems = [].slice.call(this.element.children[0].children).reverse();\n var liWidth = this.overflowMode === 'Menu' ? 0 : liElems[liElems.length - 1].offsetWidth + (liElems[liElems.length - 2] ? liElems[liElems.length - 2].offsetWidth : 0);\n if (this.overflowMode === 'Menu') {\n var menuEle = this.getMenuElement();\n this.element.appendChild(menuEle);\n liWidth += menuEle.offsetWidth;\n remove(menuEle);\n }\n for (var i = 0; i < liElems.length - 2; i++) {\n if (liWidth > width) {\n maxItems = Math.ceil((i - 1) / 2) + (this.overflowMode === 'Menu' && i <= 2 ? 0 : 1);\n if ((this.maxItems > maxItems && !(this.maxItems > -1 && maxItems === -1) || this.maxItems === -1) && this._maxItems !== maxItems) {\n this._maxItems = maxItems;\n this.initPvtProps();\n return this.reRenderItems();\n } else {\n break;\n }\n } else {\n if (this.overflowMode === 'Menu' && i === 2) {\n liWidth += liElems[liElems.length - 1].offsetWidth + liElems[liElems.length - 2].offsetWidth;\n if (liWidth > width) {\n this._maxItems = 1;\n this.initPvtProps();\n return this.reRenderItems();\n }\n }\n if (!(this.overflowMode === 'Menu' && liElems[i].classList.contains(MENUCLASS))) {\n liWidth += liElems[i].offsetWidth;\n }\n }\n }\n } else if ((this.overflowMode === 'Wrap' || this.overflowMode === 'Scroll') && this._maxItems > 0) {\n var width = 0;\n var liElems = this.element.querySelectorAll(DOT + ITEMCLASS);\n if (liElems.length > this._maxItems + this._maxItems - 1) {\n for (var i = this.overflowMode === 'Wrap' ? 1 : 0; i < this._maxItems + this._maxItems - 1; i++) {\n width += liElems[i].offsetWidth;\n }\n width = width + 5 + parseInt(getComputedStyle(this.element.children[0]).paddingLeft, 10) * 2;\n if (this.overflowMode === 'Wrap') {\n this.element.querySelector('.e-breadcrumb-wrapped-ol').style.width = width + 'px';\n } else {\n this.element.style.width = width + 'px';\n }\n }\n }\n };\n Breadcrumb.prototype.hasField = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][\"\" + field]) {\n return true;\n }\n }\n return false;\n };\n Breadcrumb.prototype.getMenuElement = function () {\n return this.createElement('li', {\n className: 'e-icons e-breadcrumb-menu',\n attrs: {\n TABINDEX: '0'\n }\n });\n };\n Breadcrumb.prototype.beforeItemRenderChanges = function (prevItem, currItem, elem, isRightIcon) {\n var wrapElem = elem.querySelector('.e-anchor-wrap');\n if (wrapElem) {\n wrapElem.parentElement.setAttribute('aria-label', 'home');\n }\n if (currItem.text !== prevItem.text && wrapElem) {\n wrapElem.childNodes.forEach(function (child) {\n if (child.nodeType === Node.TEXT_NODE) {\n child.textContent = currItem.text;\n }\n });\n }\n if (currItem.iconCss !== prevItem.iconCss && wrapElem) {\n // wrapElem - for checking it is item not a separator\n var iconElem = elem.querySelector(DOT + ICONCLASS);\n if (iconElem) {\n if (currItem.iconCss) {\n removeClass([iconElem], prevItem.iconCss.split(' '));\n addClass([iconElem], currItem.iconCss.split(' '));\n } else {\n remove(iconElem);\n }\n } else if (currItem.iconCss) {\n var iconElem_1 = this.createElement('span', {\n className: ICONCLASS + ' ' + currItem.iconCss\n });\n if (isRightIcon) {\n append([iconElem_1], wrapElem);\n } else {\n wrapElem.insertBefore(iconElem_1, wrapElem.childNodes[0]);\n }\n }\n }\n if (currItem.url !== prevItem.url && this.enableNavigation) {\n var anchor = elem.querySelector('a.' + ITEMTEXTCLASS);\n if (anchor) {\n if (currItem.url) {\n anchor.setAttribute('href', currItem.url);\n } else {\n anchor.removeAttribute('href');\n }\n }\n }\n };\n Breadcrumb.prototype.reRenderItems = function () {\n if (this.overflowMode === 'Menu' && this.popupObj && this.popupObj.element.classList.contains('e-popup-open') && this.popupObj.element.querySelector('.e-edit-template')) {\n this.popupObj.hide();\n this.popupObj.destroy();\n this.isPopupCreated = false;\n detach(this.popupObj.element);\n }\n this.element.innerHTML = '';\n this.renderItems(this.items);\n };\n Breadcrumb.prototype.clickHandler = function (e) {\n var li = closest(e.target, DOT + ITEMCLASS + ':not(.e-breadcrumb-separator)');\n if (!this.enableNavigation) {\n e.preventDefault();\n }\n if (li && (closest(e.target, DOT + ITEMTEXTCLASS) || this.itemTemplate)) {\n var idx = void 0;\n if (this.overflowMode === 'Wrap') {\n idx = [].slice.call(this.element.querySelectorAll(DOT + ITEMCLASS)).indexOf(li);\n } else {\n idx = [].slice.call(li.parentElement.children).indexOf(li);\n }\n if (this.overflowMode === 'Menu') {\n if (closest(e.target, DOT + POPUPCLASS)) {\n idx += this.startIndex;\n this.endIndex = idx;\n if (e.type === 'keydown') {\n this.documentClickHandler(e);\n }\n } else if (this.element.querySelector(DOT + MENUCLASS)) {\n if (idx > [].slice.call(this.element.children[0].children).indexOf(this.element.querySelector(DOT + MENUCLASS))) {\n idx += this.popupUl.childElementCount * 2 - 2;\n idx = Math.floor(idx / 2);\n this.endIndex = idx;\n } else {\n this.startIndex = this.endIndex = idx;\n }\n } else {\n idx = Math.floor(idx / 2);\n this.startIndex = this.endIndex = idx;\n }\n } else {\n idx = Math.floor(idx / 2);\n }\n if (this.overflowMode === 'Hidden' && this._maxItems > 0 && this.endIndex !== 0) {\n idx = parseInt(li.getAttribute('item-index'), 10);\n if (this.startIndex > 1) {\n this.startIndex -= this.endIndex - idx;\n }\n this.endIndex = idx;\n }\n var itemClickArgs = {\n element: li,\n item: this.items[idx],\n event: e,\n cancel: false\n };\n this.trigger('itemClick', itemClickArgs);\n if (itemClickArgs.cancel) {\n return;\n }\n if (this.items[idx]) {\n this.activeItem = this.items[idx].url || this.items[idx].text;\n }\n this.dataBind();\n }\n if (e.target.classList.contains('e-breadcrumb-collapsed')) {\n this.isExpanded = true;\n this.reRenderItems();\n }\n if (e.target.classList.contains(MENUCLASS) && !this.isPopupCreated) {\n this.renderPopup();\n }\n };\n Breadcrumb.prototype.renderPopup = function () {\n var _this = this;\n var wrapper = this.createElement('div', {\n className: POPUPCLASS + ' ' + this.cssClass + (this.enableRtl ? ' e-rtl' : '')\n });\n document.body.appendChild(wrapper);\n this.isPopupCreated = true;\n this.popupObj = new Popup(wrapper, {\n content: this.popupUl,\n relateTo: this.element.querySelector(DOT + MENUCLASS),\n enableRtl: this.enableRtl,\n position: {\n X: 'left',\n Y: 'bottom'\n },\n collision: {\n X: 'fit',\n Y: 'flip'\n },\n open: function () {\n if (_this.popupUl) {\n _this.popupUl.focus();\n }\n }\n });\n this.popupWireEvents();\n this.popupObj.show();\n };\n Breadcrumb.prototype.documentClickHandler = function (e) {\n if (this.overflowMode === 'Menu' && this.popupObj && this.popupObj.element.classList.contains('e-popup-open') && !closest(e.target, DOT + MENUCLASS) && !closest(e.target, DOT + 'e-edit-template')) {\n this.popupObj.hide();\n this.popupObj.destroy();\n this.isPopupCreated = false;\n detach(this.popupObj.element);\n }\n };\n Breadcrumb.prototype.resize = function () {\n this._maxItems = this.maxItems;\n this.initPvtProps();\n this.reRenderItems();\n };\n Breadcrumb.prototype.expandHandler = function (e) {\n if (e.key === 'Enter') {\n this.isExpanded = true;\n this.reRenderItems();\n }\n };\n Breadcrumb.prototype.keyDownHandler = function (e) {\n if (e.key === 'Enter') {\n this.clickHandler(e);\n }\n };\n Breadcrumb.prototype.popupKeyDownHandler = function (e) {\n if (e.key === 'Escape') {\n this.documentClickHandler(e);\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {BreadcrumbModel} newProp - Specifies the new properties.\n * @param {BreadcrumbModel} oldProp - Specifies the old properties.\n * @returns {void}\n */\n Breadcrumb.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n case 'enableActiveItemNavigation':\n this.reRenderItems();\n break;\n case 'activeItem':\n this._maxItems = this.maxItems;\n this.initPvtProps();\n this.reRenderItems();\n break;\n case 'overflowMode':\n case 'maxItems':\n this._maxItems = this.maxItems;\n this.initPvtProps();\n this.reRenderItems();\n if (oldProp.overflowMode === 'Wrap') {\n this.element.classList.remove(WRAPMODECLASS);\n } else if (newProp.overflowMode === 'Wrap') {\n this.element.classList.add(WRAPMODECLASS);\n }\n if (oldProp.overflowMode === 'Scroll') {\n this.element.classList.remove(SCROLLMODECLASS);\n } else if (newProp.overflowMode === 'Scroll') {\n this.element.classList.add(SCROLLMODECLASS);\n }\n break;\n case 'url':\n this.initItems();\n this.reRenderItems();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (oldProp.cssClass && oldProp.cssClass.indexOf(ICONRIGHT) > -1 && !(newProp.cssClass && newProp.cssClass.indexOf(ICONRIGHT) > -1) || !(oldProp.cssClass && oldProp.cssClass.indexOf(ICONRIGHT) > -1) && newProp.cssClass && newProp.cssClass.indexOf(ICONRIGHT) > -1) {\n this.reRenderItems();\n }\n break;\n case 'enableRtl':\n this.element.classList.toggle('e-rtl');\n break;\n case 'disabled':\n this.element.classList.toggle(DISABLEDCLASS);\n this.element.setAttribute(ARIADISABLED, newProp.disabled + '');\n break;\n }\n }\n };\n Breadcrumb.prototype.wireEvents = function () {\n this.delegateClickHanlder = this.documentClickHandler.bind(this);\n EventHandler.add(document, 'click', this.delegateClickHanlder, this);\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n window.addEventListener('resize', this.resize.bind(this));\n };\n Breadcrumb.prototype.popupWireEvents = function () {\n EventHandler.add(this.popupObj.element, 'click', this.clickHandler, this);\n EventHandler.add(this.popupObj.element, 'keydown', this.popupKeyDownHandler, this);\n };\n Breadcrumb.prototype.unWireEvents = function () {\n EventHandler.remove(document, 'click', this.delegateClickHanlder);\n EventHandler.remove(this.element, 'click', this.clickHandler);\n window.removeEventListener('resize', this.resize.bind(this));\n if (this.popupObj) {\n EventHandler.remove(this.popupObj.element, 'click', this.clickHandler);\n EventHandler.remove(this.popupObj.element, 'keydown', this.popupKeyDownHandler);\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Breadcrumb.prototype.getPersistData = function () {\n return this.addOnPersist(['activeItem']);\n };\n /**\n * Get module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n Breadcrumb.prototype.getModuleName = function () {\n return 'breadcrumb';\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Breadcrumb.prototype.destroy = function () {\n var _this = this;\n if (this.popupObj && this.popupObj.element.classList.contains('e-popup-open')) {\n this.popupObj.destroy();\n this.isPopupCreated = false;\n detach(this.popupObj.element);\n }\n var classes = [];\n var attributes = ['aria-label'];\n if (this.cssClass) {\n classes.concat(this.cssClass.split(' '));\n }\n if (this.enableRtl) {\n classes.push('e-rtl');\n }\n if (this.disabled) {\n classes.push(DISABLEDCLASS);\n attributes.push(ARIADISABLED);\n }\n if (this.overflowMode === 'Wrap') {\n classes.push(WRAPMODECLASS);\n } else if (this.overflowMode === 'Scroll') {\n classes.push(SCROLLMODECLASS);\n }\n this.unWireEvents();\n this.element.innerHTML = '';\n removeClass([this.element], classes);\n attributes.forEach(function (attribute) {\n _this.element.removeAttribute(attribute);\n });\n _super.prototype.destroy.call(this);\n };\n __decorate([Property('')], Breadcrumb.prototype, \"url\", void 0);\n __decorate([Collection([], BreadcrumbItem)], Breadcrumb.prototype, \"items\", void 0);\n __decorate([Property('')], Breadcrumb.prototype, \"activeItem\", void 0);\n __decorate([Property(-1)], Breadcrumb.prototype, \"maxItems\", void 0);\n __decorate([Property('Menu')], Breadcrumb.prototype, \"overflowMode\", void 0);\n __decorate([Property('')], Breadcrumb.prototype, \"cssClass\", void 0);\n __decorate([Property(null)], Breadcrumb.prototype, \"itemTemplate\", void 0);\n __decorate([Property('/')], Breadcrumb.prototype, \"separatorTemplate\", void 0);\n __decorate([Property(true)], Breadcrumb.prototype, \"enableNavigation\", void 0);\n __decorate([Property(false)], Breadcrumb.prototype, \"enableActiveItemNavigation\", void 0);\n __decorate([Property(false)], Breadcrumb.prototype, \"disabled\", void 0);\n __decorate([Property('')], Breadcrumb.prototype, \"locale\", void 0);\n __decorate([Event()], Breadcrumb.prototype, \"beforeItemRender\", void 0);\n __decorate([Event()], Breadcrumb.prototype, \"itemClick\", void 0);\n __decorate([Event()], Breadcrumb.prototype, \"created\", void 0);\n Breadcrumb = __decorate([NotifyPropertyChanges], Breadcrumb);\n return Breadcrumb;\n}(Component);\nexport { Breadcrumb };","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};\nimport { Component, Property, ChildProperty, NotifyPropertyChanges, isBlazor } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents, Touch } from '@syncfusion/ej2-base';\nimport { Animation } from '@syncfusion/ej2-base';\nimport { Browser, Collection, setValue, getValue, getUniqueID, getInstance, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { select, selectAll, closest, detach, append, rippleEffect, isVisible, Complex, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { getZindexPartial, calculatePosition, isCollide, fit, Popup } from '@syncfusion/ej2-popups';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getScrollableParent } from '@syncfusion/ej2-popups';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nimport { addScrolling, destroyScroll } from '../common/menu-scroll';\nvar ENTER = 'enter';\nvar ESCAPE = 'escape';\nvar FOCUSED = 'e-focused';\nvar HEADER = 'e-menu-header';\nvar SELECTED = 'e-selected';\nvar SEPARATOR = 'e-separator';\nvar UPARROW = 'uparrow';\nvar DOWNARROW = 'downarrow';\nvar LEFTARROW = 'leftarrow';\nvar RIGHTARROW = 'rightarrow';\nvar HOME = 'home';\nvar END = 'end';\nvar TAB = 'tab';\nvar CARET = 'e-caret';\nvar ITEM = 'e-menu-item';\nvar DISABLED = 'e-disabled';\nvar HIDE = 'e-menu-hide';\nvar ICONS = 'e-icons';\nvar RTL = 'e-rtl';\nvar POPUP = 'e-menu-popup';\nvar TEMPLATE_PROPERTY = 'Template';\n/**\n * Configures the field options of the Menu.\n */\nvar FieldSettings = /** @class */function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('id')], FieldSettings.prototype, \"itemId\", void 0);\n __decorate([Property('parentId')], FieldSettings.prototype, \"parentId\", void 0);\n __decorate([Property('text')], FieldSettings.prototype, \"text\", void 0);\n __decorate([Property('iconCss')], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([Property('url')], FieldSettings.prototype, \"url\", void 0);\n __decorate([Property('separator')], FieldSettings.prototype, \"separator\", void 0);\n __decorate([Property('items')], FieldSettings.prototype, \"children\", void 0);\n return FieldSettings;\n}(ChildProperty);\nexport { FieldSettings };\n/**\n * Specifies menu items.\n */\nvar MenuItem = /** @class */function (_super) {\n __extends(MenuItem, _super);\n function MenuItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property(null)], MenuItem.prototype, \"iconCss\", void 0);\n __decorate([Property('')], MenuItem.prototype, \"id\", void 0);\n __decorate([Property(false)], MenuItem.prototype, \"separator\", void 0);\n __decorate([Collection([], MenuItem)], MenuItem.prototype, \"items\", void 0);\n __decorate([Property('')], MenuItem.prototype, \"text\", void 0);\n __decorate([Property('')], MenuItem.prototype, \"url\", void 0);\n __decorate([Property()], MenuItem.prototype, \"htmlAttributes\", void 0);\n return MenuItem;\n}(ChildProperty);\nexport { MenuItem };\n/**\n * Animation configuration settings.\n */\nvar MenuAnimationSettings = /** @class */function (_super) {\n __extends(MenuAnimationSettings, _super);\n function MenuAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('SlideDown')], MenuAnimationSettings.prototype, \"effect\", void 0);\n __decorate([Property(400)], MenuAnimationSettings.prototype, \"duration\", void 0);\n __decorate([Property('ease')], MenuAnimationSettings.prototype, \"easing\", void 0);\n return MenuAnimationSettings;\n}(ChildProperty);\nexport { MenuAnimationSettings };\n/**\n * Base class for Menu and ContextMenu components.\n *\n * @private\n */\nvar MenuBase = /** @class */function (_super) {\n __extends(MenuBase, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {MenuBaseModel} options - Specifies the menu base model\n * @param {string | HTMLUListElement} element - Specifies the element\n */\n function MenuBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.navIdx = [];\n _this.animation = new Animation({});\n _this.isTapHold = false;\n _this.tempItem = [];\n _this.showSubMenuOn = 'Auto';\n _this.isAnimationNone = false;\n _this.isKBDAction = false;\n return _this;\n }\n /**\n * Initialized third party configuration settings.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.preRender = function () {\n if (!this.isMenu) {\n var ul = void 0;\n if (this.element.tagName === 'EJS-CONTEXTMENU') {\n ul = this.createElement('ul', {\n id: getUniqueID(this.getModuleName()),\n className: 'e-control e-lib e-' + this.getModuleName()\n });\n var ejInst = getValue('ej2_instances', this.element);\n removeClass([this.element], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.clonedElement = this.element;\n this.element = ul;\n setValue('ej2_instances', ejInst, this.element);\n } else {\n ul = this.createElement('ul', {\n id: getUniqueID(this.getModuleName())\n });\n append([].slice.call(this.element.cloneNode(true).children), ul);\n var refEle = this.element.nextElementSibling;\n if (refEle) {\n this.element.parentElement.insertBefore(ul, refEle);\n } else {\n this.element.parentElement.appendChild(ul);\n }\n this.clonedElement = ul;\n }\n this.clonedElement.style.display = 'none';\n }\n if (this.element.tagName === 'EJS-MENU') {\n var ele = this.element;\n var ejInstance = getValue('ej2_instances', ele);\n var ul = this.createElement('ul');\n var wrapper = this.createElement('EJS-MENU', {\n className: 'e-' + this.getModuleName() + '-wrapper'\n });\n for (var idx = 0, len = ele.attributes.length; idx < len; idx++) {\n ul.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = ul;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.clonedElement = wrapper;\n this.element = ele;\n if (!this.element.id) {\n this.element.id = getUniqueID(this.getModuleName());\n }\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderItems();\n this.wireEvents();\n this.renderComplete();\n var wrapper = this.getWrapper();\n // eslint-disable-next-line\n if (this.template && this.enableScrolling && (this.isReact || this.isAngular)) {\n requestAnimationFrame(function () {\n addScrolling(_this.createElement, wrapper, _this.element, 'hscroll', _this.enableRtl);\n });\n }\n };\n MenuBase.prototype.enableTouchScroll = function (scrollList) {\n var touchStartY = 0;\n this.touchStartFn = function (e) {\n touchStartY = e.touches[0].clientY;\n };\n this.touchMoveFn = function (e) {\n var touchEndY = e.touches[0].clientY;\n var touchDiff = touchStartY - touchEndY;\n var atTop = scrollList.scrollTop === 0;\n var atBottom = scrollList.scrollTop + scrollList.clientHeight === scrollList.scrollHeight;\n if (atTop && touchDiff < 0 || atBottom && touchDiff > 0) {\n e.preventDefault();\n }\n touchStartY = touchEndY;\n };\n scrollList.addEventListener('touchstart', this.touchStartFn, {\n passive: false\n });\n scrollList.addEventListener('touchmove', this.touchMoveFn, {\n passive: false\n });\n };\n MenuBase.prototype.touchOutsideHandler = function (e) {\n var target = e.target;\n if (!closest(target, '.e-' + this.getModuleName() + '-wrapper')) {\n this.closeMenu();\n }\n };\n MenuBase.prototype.initialize = function () {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n wrapper = this.createElement('div', {\n className: 'e-' + this.getModuleName() + '-wrapper'\n });\n if (this.isMenu) {\n this.element.parentElement.insertBefore(wrapper, this.element);\n } else {\n document.body.appendChild(wrapper);\n }\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n wrapper.appendChild(this.element);\n if (this.isMenu && this.hamburgerMode) {\n if (!this.target) {\n this.createHeaderContainer(wrapper);\n }\n }\n this.defaultOption = this.showItemOnClick;\n };\n MenuBase.prototype.renderItems = function () {\n if (!this.items.length) {\n var items = ListBase.createJsonFromElement(this.element, {\n fields: {\n child: 'items'\n }\n });\n this.setProperties({\n items: items\n }, true);\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n } else {\n this.element.innerHTML = '';\n }\n }\n var ul = this.createItems(this.items);\n append(Array.prototype.slice.call(ul.children), this.element);\n this.element.classList.add('e-menu-parent');\n if (this.isMenu) {\n if (!this.hamburgerMode && this.element.classList.contains('e-vertical')) {\n this.setBlankIconStyle(this.element);\n }\n if (this.enableScrolling) {\n var wrapper = this.getWrapper();\n if (this.element.classList.contains('e-vertical')) {\n addScrolling(this.createElement, wrapper, this.element, 'vscroll', this.enableRtl);\n } else {\n addScrolling(this.createElement, wrapper, this.element, 'hscroll', this.enableRtl);\n }\n }\n } else {\n this.element.parentElement.setAttribute('role', 'dialog');\n this.element.parentElement.setAttribute('aria-label', 'context menu');\n }\n };\n MenuBase.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n if (this.target) {\n var target = void 0;\n var targetElems = selectAll(this.target);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.add(target, 'click', this.menuHeaderClickHandler, this);\n } else {\n if (Browser.isIos) {\n new Touch(target, {\n tapHold: this.touchHandler.bind(this)\n });\n } else {\n EventHandler.add(target, 'contextmenu', this.cmenuHandler, this);\n }\n }\n }\n this.targetElement = target;\n if (!this.isMenu) {\n EventHandler.add(this.targetElement, 'scroll', this.scrollHandler, this);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollHandler, this);\n }\n }\n }\n if (!Browser.isDevice) {\n this.delegateMoverHandler = this.moverHandler.bind(this);\n this.delegateMouseDownHandler = this.mouseDownHandler.bind(this);\n EventHandler.add(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler, this);\n EventHandler.add(document, 'mousedown', this.delegateMouseDownHandler, this);\n EventHandler.add(document, 'keydown', this.domKeyHandler, this);\n if (!this.isMenu && !this.target) {\n EventHandler.add(document, 'scroll', this.scrollHandler, this);\n }\n }\n this.delegateClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.delegateClickHandler, this);\n this.wireKeyboardEvent(wrapper);\n this.rippleFn = rippleEffect(wrapper, {\n selector: '.' + ITEM\n });\n if (!this.isMenu && this.enableScrolling) {\n this.enableTouchScroll(wrapper);\n document.addEventListener('touchstart', this.touchOutsideHandler.bind(this), {\n passive: true\n });\n }\n };\n MenuBase.prototype.wireKeyboardEvent = function (element) {\n var keyConfigs = {\n downarrow: DOWNARROW,\n uparrow: UPARROW,\n enter: ENTER,\n leftarrow: LEFTARROW,\n rightarrow: RIGHTARROW,\n escape: ESCAPE\n };\n if (this.isMenu) {\n keyConfigs.home = HOME;\n keyConfigs.end = END;\n keyConfigs.tab = TAB;\n }\n new KeyboardEvents(element, {\n keyAction: this.keyBoardHandler.bind(this),\n keyConfigs: keyConfigs\n });\n };\n MenuBase.prototype.mouseDownHandler = function (e) {\n if (closest(e.target, '.e-' + this.getModuleName() + '-wrapper') !== this.getWrapper() && !closest(e.target, '.e-' + this.getModuleName() + '-popup')) {\n this.closeMenu(this.isMenu ? null : this.navIdx.length, e);\n }\n };\n MenuBase.prototype.keyHandler = function (e) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n if (e.target && (e.target.classList.contains('e-contextmenu') || e.target.classList.contains('e-menu-item'))) {\n e.preventDefault();\n }\n }\n };\n MenuBase.prototype.domKeyHandler = function (e) {\n if (e.keyCode === 27) {\n if (this.isMenuVisible()) {\n e.stopImmediatePropagation();\n }\n e.action = ESCAPE;\n this.leftEscKeyHandler(e);\n }\n };\n MenuBase.prototype.keyBoardHandler = function (e) {\n var actionName = '';\n var trgt = e.target;\n var actionNeeded = this.isMenu && !this.hamburgerMode && !this.element.classList.contains('e-vertical') && this.navIdx.length < 1;\n e.preventDefault();\n if (this.enableScrolling && e.keyCode === 13 && trgt.classList.contains('e-scroll-nav')) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [closest(trgt, '.e-' + this.getModuleName() + '-wrapper')]);\n }\n this.isKBDAction = true;\n if (actionNeeded) {\n switch (e.action) {\n case RIGHTARROW:\n actionName = RIGHTARROW;\n e.action = DOWNARROW;\n break;\n case LEFTARROW:\n actionName = LEFTARROW;\n e.action = UPARROW;\n break;\n case DOWNARROW:\n actionName = DOWNARROW;\n e.action = RIGHTARROW;\n break;\n case UPARROW:\n actionName = UPARROW;\n e.action = '';\n break;\n }\n } else if (this.enableRtl) {\n switch (e.action) {\n case LEFTARROW:\n actionNeeded = true;\n actionName = LEFTARROW;\n e.action = RIGHTARROW;\n break;\n case RIGHTARROW:\n actionNeeded = true;\n actionName = RIGHTARROW;\n e.action = LEFTARROW;\n break;\n }\n }\n switch (e.action) {\n case DOWNARROW:\n case UPARROW:\n case END:\n case HOME:\n case TAB:\n this.upDownKeyHandler(e);\n break;\n case RIGHTARROW:\n this.rightEnterKeyHandler(e);\n break;\n case LEFTARROW:\n this.leftEscKeyHandler(e);\n break;\n case ENTER:\n if (this.hamburgerMode && trgt.tagName === 'SPAN' && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n } else {\n this.rightEnterKeyHandler(e);\n }\n break;\n }\n if (this.isAnimationNone) {\n this.isKBDAction = false;\n }\n if (actionNeeded) {\n e.action = actionName;\n }\n };\n MenuBase.prototype.upDownKeyHandler = function (e) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = e.action === DOWNARROW || e.action === HOME || e.action === TAB ? 0 : cul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n if (e.action !== END && e.action !== HOME) {\n fliIdx = this.getIdx(cul, fli);\n }\n fli.classList.remove(FOCUSED);\n if (e.action !== END && e.action !== HOME) {\n if (e.action === DOWNARROW) {\n fliIdx++;\n } else {\n fliIdx--;\n }\n if (fliIdx === (e.action === DOWNARROW ? cul.childElementCount : -1)) {\n fliIdx = defaultIdx;\n }\n }\n }\n var cli = cul.children[fliIdx];\n fliIdx = this.isValidLI(cli, fliIdx, e.action);\n cul.children[fliIdx].classList.add(FOCUSED);\n cul.children[fliIdx].focus();\n };\n MenuBase.prototype.isValidLI = function (cli, index, action) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = action === DOWNARROW || action === HOME || action === TAB ? 0 : cul.childElementCount - 1;\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n if (action === DOWNARROW && index === cul.childElementCount - 1) {\n index = defaultIdx;\n } else if (action === UPARROW && index === 0) {\n index = defaultIdx;\n } else if (action === DOWNARROW || action === RIGHTARROW) {\n index++;\n } else if (action === 'tab' && cli.classList.contains(SEPARATOR)) {\n index++;\n } else {\n index--;\n }\n }\n cli = cul.children[index];\n if (cli && (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE))) {\n index = this.isValidLI(cli, index, action);\n }\n return index;\n };\n MenuBase.prototype.getUlByNavIdx = function (navIdxLen) {\n var _this = this;\n if (navIdxLen === void 0) {\n navIdxLen = this.navIdx.length;\n }\n if (this.isMenu) {\n var popup = [this.getWrapper()].concat([].slice.call(selectAll('.' + POPUP)))[navIdxLen];\n var popups_1 = [];\n var allPopup = selectAll('.' + POPUP);\n allPopup.forEach(function (elem) {\n if (_this.element.id === elem.id.split('-')[2] || elem.id.split('-')[2] + '-' + elem.id.split('-')[3]) {\n popups_1.push(elem);\n }\n });\n popup = [this.getWrapper()].concat([].slice.call(popups_1))[navIdxLen];\n return isNullOrUndefined(popup) ? null : select('.e-menu-parent', popup);\n } else {\n if (!document.body.contains(this.element) && navIdxLen === 0) {\n return null;\n }\n return this.getWrapper().children[navIdxLen];\n }\n };\n MenuBase.prototype.rightEnterKeyHandler = function (e) {\n var eventArgs;\n var cul = this.getUlByNavIdx();\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n var fliIdx = this.getIdx(cul, fli);\n var navIdx = this.navIdx.concat(fliIdx);\n var item = this.getItem(navIdx);\n if (item.items.length) {\n this.navIdx.push(fliIdx);\n this.keyType = 'right';\n this.action = e.action;\n this.openMenu(fli, item, -1, -1, e);\n } else {\n if (e.action === ENTER) {\n if (this.isMenu && this.navIdx.length === 0) {\n this.removeLIStateByClass([SELECTED], [this.getWrapper()]);\n } else {\n fli.classList.remove(FOCUSED);\n }\n fli.classList.add(SELECTED);\n eventArgs = {\n element: fli,\n item: item,\n event: e\n };\n this.trigger('select', eventArgs);\n var aEle = fli.querySelector('.e-menu-url');\n if (item.url && aEle) {\n switch (aEle.getAttribute('target')) {\n case '_blank':\n window.open(item.url, '_blank');\n break;\n case '_parent':\n window.parent.location.href = item.url;\n break;\n default:\n window.location.href = item.url;\n }\n }\n this.closeMenu(null, e);\n var sli = this.getLIByClass(this.getUlByNavIdx(), SELECTED);\n if (sli) {\n sli.classList.add(FOCUSED);\n sli.focus();\n }\n }\n }\n }\n };\n MenuBase.prototype.leftEscKeyHandler = function (e) {\n if (this.navIdx.length) {\n this.keyType = 'left';\n this.closeMenu(this.navIdx.length, e);\n } else {\n if (e.action === ESCAPE) {\n this.closeMenu(null, e);\n }\n }\n };\n MenuBase.prototype.scrollHandler = function (e) {\n this.closeMenu(null, e);\n };\n MenuBase.prototype.touchHandler = function (e) {\n this.isTapHold = true;\n this.cmenuHandler(e.originalEvent);\n };\n MenuBase.prototype.cmenuHandler = function (e) {\n e.preventDefault();\n this.currentTarget = e.target;\n this.isCMenu = true;\n this.pageX = e.changedTouches ? e.changedTouches[0].pageX + 1 : e.pageX + 1;\n this.pageY = e.changedTouches ? e.changedTouches[0].pageY + 1 : e.pageY + 1;\n this.closeMenu(null, e);\n if (this.isCMenu) {\n if (this.canOpen(e.target)) {\n this.openMenu(null, null, this.pageY, this.pageX, e);\n }\n this.isCMenu = false;\n }\n };\n // eslint:disable-next-line:max-func-body-length\n MenuBase.prototype.closeMenu = function (ulIndex, e, isIterated) {\n var _this = this;\n if (ulIndex === void 0) {\n ulIndex = 0;\n }\n if (e === void 0) {\n e = null;\n }\n if (this.isMenuVisible()) {\n var sli = void 0;\n var item_1;\n var wrapper_1 = this.getWrapper();\n var beforeCloseArgs = void 0;\n var items_1;\n var popups = this.getPopups();\n var isClose = false;\n var cnt = this.isMenu ? popups.length + 1 : wrapper_1.childElementCount;\n var ul_1 = this.isMenu && cnt !== 1 ? select('.e-ul', popups[cnt - 2]) : selectAll('.e-menu-parent', wrapper_1)[cnt - 1];\n if (this.isMenu && ul_1.classList.contains('e-menu')) {\n sli = this.getLIByClass(ul_1, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n isClose = true;\n }\n if (!isClose) {\n var liElem_1 = e && e.target && this.getLI(e.target);\n if (liElem_1) {\n this.cli = liElem_1;\n } else {\n this.cli = ul_1.children[0];\n }\n item_1 = this.navIdx.length ? this.getItem(this.navIdx) : null;\n items_1 = item_1 ? item_1.items : this.items;\n beforeCloseArgs = {\n element: ul_1,\n parentItem: item_1,\n items: items_1,\n event: e,\n cancel: false,\n isFocused: true\n };\n this.trigger('beforeClose', beforeCloseArgs, function (observedCloseArgs) {\n var popupEle;\n var closeArgs;\n var popupId = '';\n var popupObj;\n var isOpen = !observedCloseArgs.cancel;\n if (isOpen || _this.isCMenu) {\n if (_this.isMenu) {\n popupEle = closest(ul_1, '.' + POPUP);\n if (_this.hamburgerMode) {\n popupEle.parentElement.style.minHeight = '';\n closest(ul_1, '.e-menu-item').setAttribute('aria-expanded', 'false');\n }\n _this.unWireKeyboardEvent(popupEle);\n destroyScroll(getInstance(popupEle.children[0], VScroll), popupEle.children[0]);\n popupObj = getInstance(popupEle, Popup);\n popupObj.hide();\n popupId = popupEle.id;\n popupObj.destroy();\n detach(popupEle);\n } else {\n _this.isContextMenuClosed = false;\n _this.toggleAnimation(ul_1, false);\n }\n closeArgs = {\n element: ul_1,\n parentItem: item_1,\n items: items_1\n };\n _this.trigger('onClose', closeArgs);\n _this.navIdx.pop();\n if (_this.navIdx.length === 0 && e && e.type === 'keyup') {\n _this.showSubMenu = false;\n }\n if (!_this.isMenu) {\n EventHandler.remove(ul_1, 'keydown', _this.keyHandler);\n if (_this.keyType === 'right') {\n _this.keyType = '';\n }\n }\n }\n _this.updateReactTemplate();\n var trgtliId;\n var closedLi;\n var trgtLi;\n var trgtpopUp = _this.getWrapper() && _this.getUlByNavIdx();\n if (_this.isCMenu) {\n if (_this.canOpen(e.target)) {\n _this.openMenu(null, null, _this.pageY, _this.pageX, e);\n }\n _this.isCMenu = false;\n }\n if (_this.isMenu && trgtpopUp && popupId.length) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var regExp = RegExp;\n trgtliId = new regExp('(.*)-ej2menu-' + _this.element.id + '-popup').exec(popupId)[1];\n closedLi = trgtpopUp.querySelector('[id=\"' + trgtliId + '\"]');\n trgtLi = liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]');\n } else if (trgtpopUp) {\n closedLi = trgtpopUp.querySelector('.e-menu-item.e-selected');\n trgtLi = liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]');\n }\n var submenus = liElem_1 && liElem_1.querySelectorAll('.e-menu-item');\n if (isOpen && _this.hamburgerMode && ulIndex && !submenus.length) {\n _this.afterCloseMenu(e);\n } else if (isOpen && !_this.hamburgerMode && closedLi && !trgtLi && _this.keyType !== 'left' && (_this.navIdx.length || !_this.isMenu && _this.navIdx.length === 0)) {\n var ele = e && e.target.classList && (e.target.classList.contains('e-vscroll') || e.target.classList.contains('e-scroll-nav')) ? closest(e.target, '.e-menu-wrapper') : null;\n if (ele) {\n ele = ele.querySelector('.e-menu-item');\n if (_this.showItemOnClick || ele && _this.getIndex(ele.id, true).length <= _this.navIdx.length) {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e, true);\n }\n } else {\n if (!(e && e.target.classList && e.target.classList.contains('e-nav-arrow'))) {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e);\n }\n }\n } else if (isOpen && !isIterated && !ulIndex && (_this.hamburgerMode && _this.navIdx.length || _this.navIdx.length === 1 && liElem_1 && trgtpopUp !== liElem_1.parentElement)) {\n _this.closeMenu(null, e);\n } else if (isOpen && isNullOrUndefined(ulIndex) && _this.navIdx.length) {\n _this.closeMenu(null, e);\n } else if (isOpen && !_this.isMenu && !ulIndex && _this.navIdx.length === 0 && !_this.isMenusClosed && !_this.isCmenuHover) {\n _this.isMenusClosed = true;\n _this.closeMenu(0, e);\n } else if (isOpen && _this.isMenu && e && e.target && _this.navIdx.length !== 0 && closest(e.target, '.e-menu-parent.e-control')) {\n _this.closeMenu(0, e);\n } else if (isOpen && !_this.isMenu && selectAll('.e-menu-parent', wrapper_1)[ulIndex - 1] && e.which === 3) {\n _this.closeMenu(null, e);\n } else {\n if (isOpen && (_this.keyType === 'right' || _this.keyType === 'click')) {\n _this.afterCloseMenu(e);\n } else {\n var cul = _this.getUlByNavIdx();\n var sli_1 = _this.getLIByClass(cul, SELECTED);\n if (sli_1) {\n sli_1.setAttribute('aria-expanded', 'false');\n sli_1.classList.remove(SELECTED);\n if (observedCloseArgs.isFocused && liElem_1 || _this.keyType === 'left') {\n sli_1.classList.add(FOCUSED);\n if (!e.target || !e.target.classList.contains('e-edit-template')) {\n sli_1.focus();\n }\n }\n }\n if (!isOpen && _this.hamburgerMode && liElem_1 && liElem_1.getAttribute('aria-expanded') === 'false' && liElem_1.getAttribute('aria-haspopup') === 'true') {\n if (closest(liElem_1, '.e-menu-parent.e-control')) {\n _this.navIdx = [];\n } else {\n _this.navIdx.pop();\n }\n _this.navIdx.push(_this.cliIdx);\n var item_2 = _this.getItem(_this.navIdx);\n liElem_1.setAttribute('aria-expanded', 'true');\n _this.openMenu(liElem_1, item_2, -1, -1, e);\n }\n }\n if (_this.navIdx.length < 1) {\n if (_this.showSubMenuOn === 'Hover' || _this.showSubMenuOn === 'Click') {\n _this.showItemOnClick = _this.defaultOption;\n _this.showSubMenuOn = 'Auto';\n }\n }\n }\n _this.removeStateWrapper();\n });\n }\n }\n };\n MenuBase.prototype.updateReactTemplate = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && this.template && this.navIdx.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var portals = void 0;\n if (this.portals) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n portals = this.portals.splice(0, this.items.length);\n }\n this.clearTemplate(['template']);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.portals = portals;\n this.renderReactTemplates();\n }\n };\n MenuBase.prototype.getMenuItemModel = function (item, level) {\n if (isNullOrUndefined(item)) {\n return null;\n }\n if (isNullOrUndefined(level)) {\n level = 0;\n }\n var fields = this.getFields(level);\n return {\n text: item[fields.text],\n id: item[fields.id],\n items: item[fields.child],\n separator: item[fields.separator],\n iconCss: item[fields.iconCss],\n url: item[fields.url]\n };\n };\n MenuBase.prototype.getPopups = function () {\n var _this = this;\n var popups = [];\n [].slice.call(document.querySelectorAll('.' + POPUP)).forEach(function (elem) {\n if (!isNullOrUndefined(elem.querySelector('.' + ITEM)) && _this.getIndex(elem.querySelector('.' + ITEM).id, true).length) {\n popups.push(elem);\n }\n });\n return popups;\n };\n MenuBase.prototype.isMenuVisible = function () {\n return this.navIdx.length > 0 || this.element.classList.contains('e-contextmenu') && isVisible(this.element).valueOf();\n };\n MenuBase.prototype.canOpen = function (target) {\n var canOpen = true;\n if (this.filter) {\n canOpen = false;\n var filter = this.filter.split(' ');\n for (var i = 0, len = filter.length; i < len; i++) {\n if (closest(target, '.' + filter[i])) {\n canOpen = true;\n break;\n }\n }\n }\n return canOpen;\n };\n MenuBase.prototype.openMenu = function (li, item, top, left, e, target) {\n var _this = this;\n if (top === void 0) {\n top = 0;\n }\n if (left === void 0) {\n left = 0;\n }\n if (e === void 0) {\n e = null;\n }\n if (target === void 0) {\n target = this.targetElement;\n }\n var wrapper = this.getWrapper();\n this.lItem = li;\n var elemId = this.element.id !== '' ? this.element.id : 'menu';\n this.isMenusClosed = false;\n if (isNullOrUndefined(top)) {\n top = -1;\n }\n if (isNullOrUndefined(left)) {\n left = -1;\n }\n if (li) {\n this.uList = this.createItems(item[this.getField('children', this.navIdx.length - 1)]);\n if (!this.isMenu && Browser.isDevice) {\n wrapper.lastChild.style.display = 'none';\n var data = {\n text: item[this.getField('text')].toString(),\n iconCss: ICONS + ' e-previous'\n };\n if (this.template) {\n item.iconCss = (item.iconCss || '') + ICONS + ' e-previous';\n }\n var hdata = new MenuItem(this.items[0], 'items', this.template ? item : data, true);\n var hli = this.createItems([hdata]).children[0];\n hli.classList.add(HEADER);\n this.uList.insertBefore(hli, this.uList.children[0]);\n }\n if (this.isMenu) {\n this.popupWrapper = this.createElement('div', {\n className: 'e-' + this.getModuleName() + '-wrapper ' + POPUP,\n id: li.id + '-ej2menu-' + elemId + '-popup'\n });\n this.popupWrapper.setAttribute('role', 'navigation');\n this.popupWrapper.setAttribute('aria-label', item.text + '-menu-popup');\n if (this.hamburgerMode) {\n top = li.offsetHeight;\n li.appendChild(this.popupWrapper);\n } else {\n document.body.appendChild(this.popupWrapper);\n }\n this.isNestedOrVertical = this.element.classList.contains('e-vertical') || this.navIdx.length !== 1;\n this.popupObj = this.generatePopup(this.popupWrapper, this.uList, li, this.isNestedOrVertical);\n if (this.template) {\n this.renderReactTemplates();\n }\n if (this.hamburgerMode) {\n this.calculateIndentSize(this.uList, li);\n } else {\n if (this.cssClass) {\n addClass([this.popupWrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.popupObj.hide();\n }\n if (!this.hamburgerMode && !this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () {\n _this.triggerBeforeOpen(li, _this.uList, item, e, 0, 0, 'menu');\n }, this.hoverDelay);\n } else {\n this.triggerBeforeOpen(li, this.uList, item, e, 0, 0, 'menu');\n }\n } else {\n this.uList.style.zIndex = this.element.style.zIndex;\n wrapper.appendChild(this.uList);\n if (!this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () {\n _this.triggerBeforeOpen(li, _this.uList, item, e, top, left, 'none');\n }, this.hoverDelay);\n } else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n } else {\n this.uList = this.element;\n this.uList.style.zIndex = getZindexPartial(target ? target : this.element).toString();\n if (isNullOrUndefined(e)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ev = document.createEvent('MouseEvents');\n ev.initEvent('click', true, false);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetEvent = this.copyObject(ev, {});\n targetEvent.target = targetEvent.srcElement = target;\n targetEvent.currentTarget = target;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.triggerBeforeOpen(li, this.uList, item, targetEvent, top, left, 'none');\n } else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MenuBase.prototype.copyObject = function (source, destination) {\n // eslint-disable-next-line guard-for-in\n for (var prop in source) {\n destination[\"\" + prop] = source[\"\" + prop];\n }\n return destination;\n };\n MenuBase.prototype.calculateIndentSize = function (ul, li) {\n var liStyle = getComputedStyle(li);\n var liIndent = parseInt(liStyle.textIndent, 10);\n if (this.navIdx.length < 2 && !li.classList.contains('e-blankicon')) {\n liIndent *= 2;\n } else {\n liIndent += liIndent / 4;\n }\n ul.style.textIndent = liIndent + 'px';\n var blankIconElem = ul.querySelectorAll('.e-blankicon');\n if (blankIconElem && blankIconElem.length) {\n var menuIconElem = ul.querySelector('.e-menu-icon');\n var menuIconElemStyle = getComputedStyle(menuIconElem);\n var blankIconIndent = parseInt(menuIconElemStyle.marginRight, 10) + menuIconElem.offsetWidth + liIndent;\n for (var i = 0; i < blankIconElem.length; i++) {\n blankIconElem[i].style.textIndent = blankIconIndent + 'px';\n }\n }\n };\n MenuBase.prototype.generatePopup = function (popupWrapper, ul, li, isNestedOrVertical) {\n var _this = this;\n var popupObj = new Popup(popupWrapper, {\n actionOnScroll: this.hamburgerMode ? 'none' : 'reposition',\n relateTo: li,\n collision: this.hamburgerMode ? {\n X: 'none',\n Y: 'none'\n } : {\n X: isNestedOrVertical || this.enableRtl ? 'none' : 'flip',\n Y: 'fit'\n },\n position: isNestedOrVertical && !this.hamburgerMode ? {\n X: 'right',\n Y: 'top'\n } : {\n X: 'left',\n Y: 'bottom'\n },\n targetType: 'relative',\n enableRtl: this.enableRtl,\n content: ul,\n open: function () {\n var scrollEle = select('.e-menu-vscroll', popupObj.element);\n if (scrollEle) {\n scrollEle.style.height = 'inherit';\n scrollEle.style.maxHeight = '';\n }\n var ul = select('.e-ul', popupObj.element);\n popupObj.element.style.maxHeight = '';\n ul.focus();\n _this.triggerOpen(ul);\n }\n });\n return popupObj;\n };\n MenuBase.prototype.createHeaderContainer = function (wrapper) {\n wrapper = wrapper || this.getWrapper();\n var spanElem = this.createElement('span', {\n className: 'e-' + this.getModuleName() + '-header'\n });\n var tempTitle = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(this.title) : this.title;\n var spanTitle = this.createElement('span', {\n className: 'e-' + this.getModuleName() + '-title',\n innerHTML: tempTitle\n });\n var spanIcon = this.createElement('span', {\n className: 'e-icons e-' + this.getModuleName() + '-icon',\n attrs: {\n 'tabindex': '0'\n }\n });\n spanElem.appendChild(spanTitle);\n spanElem.appendChild(spanIcon);\n wrapper.insertBefore(spanElem, this.element);\n };\n MenuBase.prototype.openHamburgerMenu = function (e) {\n if (this.hamburgerMode) {\n this.triggerBeforeOpen(null, this.element, null, e, 0, 0, 'hamburger');\n }\n };\n MenuBase.prototype.closeHamburgerMenu = function (e) {\n var _this = this;\n var beforeCloseArgs = {\n element: this.element,\n parentItem: null,\n event: e,\n items: this.items,\n cancel: false\n };\n this.trigger('beforeClose', beforeCloseArgs, function (observedHamburgerCloseArgs) {\n if (!observedHamburgerCloseArgs.cancel) {\n _this.closeMenu(null, e);\n _this.element.classList.add('e-hide-menu');\n _this.trigger('onClose', {\n element: _this.element,\n parentItem: null,\n items: _this.items\n });\n }\n });\n };\n MenuBase.prototype.callFit = function (element, x, y, top, left) {\n return fit(element, null, {\n X: x,\n Y: y\n }, {\n top: top,\n left: left\n });\n };\n MenuBase.prototype.triggerBeforeOpen = function (li, ul, item, e, top, left, type) {\n var _this = this;\n var items = li ? item[this.getField('children', this.navIdx.length - 1)] : this.items;\n var eventArgs = {\n element: ul,\n items: items,\n parentItem: item,\n event: e,\n cancel: false,\n top: top,\n left: left,\n showSubMenuOn: 'Auto'\n };\n var menuType = type;\n var observedElement;\n this.trigger('beforeOpen', eventArgs, function (observedOpenArgs) {\n switch (menuType) {\n case 'menu':\n if (!_this.hamburgerMode) {\n if (observedOpenArgs.showSubMenuOn !== 'Auto') {\n _this.showItemOnClick = !_this.defaultOption;\n _this.showSubMenuOn = observedOpenArgs.showSubMenuOn;\n }\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n }\n _this.popupWrapper.style.display = 'block';\n if (!_this.hamburgerMode) {\n _this.popupWrapper.style.maxHeight = _this.popupWrapper.getBoundingClientRect().height + 'px';\n if (_this.enableScrolling) {\n addScrolling(_this.createElement, _this.popupWrapper, _this.uList, 'vscroll', _this.enableRtl);\n }\n _this.checkScrollOffset(e);\n }\n if (!_this.hamburgerMode && !_this.left && !_this.top) {\n _this.popupObj.refreshPosition(_this.lItem, true);\n _this.left = parseInt(_this.popupWrapper.style.left, 10);\n _this.top = parseInt(_this.popupWrapper.style.top, 10);\n if (_this.enableRtl) {\n _this.left = _this.isNestedOrVertical ? _this.left - _this.popupWrapper.offsetWidth - _this.lItem.parentElement.offsetWidth + 2 : _this.left - _this.popupWrapper.offsetWidth + _this.lItem.offsetWidth;\n }\n // eslint-disable-next-line\n if (_this.template && (_this.isReact || _this.isAngular)) {\n requestAnimationFrame(function () {\n _this.collision();\n _this.popupWrapper.style.display = '';\n });\n } else {\n _this.collision();\n _this.popupWrapper.style.display = '';\n }\n } else {\n _this.popupObj.collision = {\n X: 'none',\n Y: 'none'\n };\n _this.popupWrapper.style.display = '';\n }\n break;\n case 'none':\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n _this.isContextMenuClosed = true;\n observedElement = observedOpenArgs.element;\n if (_this.enableScrolling && _this.isCMenu && observedElement && observedElement.parentElement) {\n observedElement.style.height = observedElement.parentElement.style.height;\n }\n break;\n case 'hamburger':\n if (!observedOpenArgs.cancel) {\n _this.element.classList.remove('e-hide-menu');\n _this.triggerOpen(_this.element);\n }\n break;\n }\n if (menuType !== 'hamburger') {\n if (observedOpenArgs.cancel) {\n if (_this.isMenu) {\n _this.popupObj.destroy();\n detach(_this.popupWrapper);\n } else if (ul.className.indexOf('e-ul') > -1) {\n detach(ul);\n }\n _this.navIdx.pop();\n } else {\n if (_this.isMenu) {\n if (_this.hamburgerMode) {\n _this.popupWrapper.style.top = _this.top + 'px';\n _this.popupWrapper.style.left = 0 + 'px';\n _this.toggleAnimation(_this.popupWrapper);\n } else {\n _this.setBlankIconStyle(_this.popupWrapper);\n _this.wireKeyboardEvent(_this.popupWrapper);\n rippleEffect(_this.popupWrapper, {\n selector: '.' + ITEM\n });\n _this.popupWrapper.style.left = _this.left + 'px';\n _this.popupWrapper.style.top = _this.top + 'px';\n var animationOptions = _this.animationSettings.effect !== 'None' ? {\n name: _this.animationSettings.effect,\n duration: _this.animationSettings.duration,\n timingFunction: _this.animationSettings.easing\n } : null;\n _this.popupObj.show(animationOptions, _this.lItem);\n if (Browser.isDevice) {\n _this.popupWrapper.style.left = _this.left + 'px';\n }\n }\n } else {\n _this.setBlankIconStyle(_this.uList);\n _this.setPosition(_this.lItem, _this.uList, _this.top, _this.left);\n _this.toggleAnimation(_this.uList);\n }\n }\n }\n if (_this.keyType === 'right') {\n var cul = _this.getUlByNavIdx();\n li.classList.remove(FOCUSED);\n if (_this.isMenu && _this.navIdx.length === 1) {\n _this.removeLIStateByClass([SELECTED], [_this.getWrapper()]);\n }\n li.classList.add(SELECTED);\n if (_this.action === ENTER) {\n var eventArgs_1 = {\n element: li,\n item: item,\n event: e\n };\n _this.trigger('select', eventArgs_1);\n }\n li.focus();\n cul = _this.getUlByNavIdx();\n var index = _this.isValidLI(cul.children[0], 0, _this.action);\n cul.children[index].classList.add(FOCUSED);\n cul.children[index].focus();\n }\n });\n };\n MenuBase.prototype.collision = function () {\n var collide;\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if ((this.isNestedOrVertical || this.enableRtl) && (collide.indexOf('right') > -1 || collide.indexOf('left') > -1)) {\n this.popupObj.collision.X = 'none';\n var offWidth = closest(this.lItem, '.e-' + this.getModuleName() + '-wrapper').offsetWidth;\n this.left = this.enableRtl ? calculatePosition(this.lItem, this.isNestedOrVertical ? 'right' : 'left', 'top').left : this.left - this.popupWrapper.offsetWidth - offWidth + 2;\n }\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if (collide.indexOf('left') > -1 || collide.indexOf('right') > -1) {\n this.left = this.callFit(this.popupWrapper, true, false, this.top, this.left).left;\n }\n this.popupWrapper.style.left = this.left + 'px';\n };\n MenuBase.prototype.setBlankIconStyle = function (menu) {\n var blankIconList = [].slice.call(menu.getElementsByClassName('e-blankicon'));\n if (!blankIconList.length) {\n return;\n }\n var iconLi = menu.querySelector('.e-menu-item:not(.e-blankicon):not(.e-separator)');\n if (!iconLi) {\n return;\n }\n var icon = iconLi.querySelector('.e-menu-icon');\n if (!icon) {\n return;\n }\n var cssProp = this.enableRtl ? {\n padding: 'paddingRight',\n margin: 'marginLeft'\n } : {\n padding: 'paddingLeft',\n margin: 'marginRight'\n };\n var iconCssProps = getComputedStyle(icon);\n var iconSize = parseInt(iconCssProps.fontSize, 10);\n if (!!parseInt(iconCssProps.width, 10) && parseInt(iconCssProps.width, 10) > iconSize) {\n iconSize = parseInt(iconCssProps.width, 10);\n }\n // eslint:disable\n var size = iconSize + parseInt(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n iconCssProps[cssProp.margin], 10) + parseInt(getComputedStyle(iconLi)[cssProp.padding], 10) + \"px\";\n blankIconList.forEach(function (li) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n li.style[cssProp.padding] = size;\n });\n // eslint:enable\n };\n MenuBase.prototype.checkScrollOffset = function (e) {\n var wrapper = this.getWrapper();\n if (wrapper.children[0].classList.contains('e-menu-hscroll') && this.navIdx.length === 1) {\n var trgt = isNullOrUndefined(e) ? this.element : closest(e.target, '.' + ITEM);\n var offsetEle = select('.e-hscroll-bar', wrapper);\n if (offsetEle.scrollLeft > trgt.offsetLeft) {\n offsetEle.scrollLeft -= offsetEle.scrollLeft - trgt.offsetLeft;\n }\n var offsetLeft = offsetEle.scrollLeft + offsetEle.offsetWidth;\n var offsetRight = trgt.offsetLeft + trgt.offsetWidth;\n if (offsetLeft < offsetRight) {\n offsetEle.scrollLeft += offsetRight - offsetLeft;\n }\n }\n };\n MenuBase.prototype.setPosition = function (li, ul, top, left) {\n var px = 'px';\n this.toggleVisiblity(ul);\n if (ul === this.element || left > -1 && top > -1) {\n var collide = isCollide(ul, null, left, top);\n if (collide.indexOf('right') > -1) {\n left = left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n var offset = this.callFit(ul, false, true, top, left);\n top = offset.top - 20;\n if (top < 0) {\n var newTop = pageYOffset + document.documentElement.clientHeight - ul.getBoundingClientRect().height;\n if (newTop > -1) {\n top = newTop;\n }\n }\n }\n collide = isCollide(ul, null, left, top);\n if (collide.indexOf('left') > -1) {\n var offset = this.callFit(ul, true, false, top, left);\n left = offset.left;\n }\n } else {\n if (Browser.isDevice) {\n if (!this.isMenu && this.enableScrolling) {\n var menuScrollElement = document.querySelector('.e-menu-vscroll');\n top = Number(menuScrollElement.style.top.replace('px', ''));\n left = Number(menuScrollElement.style.left.replace('px', ''));\n } else {\n top = Number(this.element.style.top.replace(px, ''));\n left = Number(this.element.style.left.replace(px, ''));\n }\n } else {\n var x = this.enableRtl ? 'left' : 'right';\n var offset = calculatePosition(li, x, 'top');\n top = offset.top;\n left = offset.left;\n var collide = isCollide(ul, null, this.enableRtl ? left - ul.offsetWidth : left, top);\n var xCollision = collide.indexOf('left') > -1 || collide.indexOf('right') > -1;\n if (xCollision) {\n offset = calculatePosition(li, this.enableRtl ? 'right' : 'left', 'top');\n left = offset.left;\n }\n if (this.enableRtl || xCollision) {\n left = this.enableRtl && xCollision ? left : left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1 && (this.isMenu || !this.enableScrolling)) {\n offset = this.callFit(ul, false, true, top, left);\n top = offset.top;\n }\n }\n }\n this.toggleVisiblity(ul, false);\n if (this.isCMenu && this.enableScrolling && ul) {\n ul.style.height = '';\n }\n var wrapper = closest(this.element, '.e-' + this.getModuleName() + '-wrapper');\n if (!this.isMenu && this.enableScrolling && ul && wrapper && wrapper.offsetHeight > 0) {\n var menuVScroll = closest(ul, '.e-menu-vscroll');\n ul.style.display = 'block';\n if (menuVScroll) {\n destroyScroll(getInstance(menuVScroll, VScroll), menuVScroll);\n }\n var cmenuWidth = Math.ceil(this.getMenuWidth(ul, ul.offsetWidth, this.enableRtl));\n var cmenu = addScrolling(this.createElement, wrapper, ul, 'vscroll', this.enableRtl, wrapper.offsetHeight);\n Object.assign(cmenu.style, {\n top: top + \"px\",\n left: left + \"px\",\n width: cmenuWidth + \"px\",\n position: 'absolute',\n display: 'none'\n });\n } else {\n ul.style.top = top + px;\n ul.style.left = left + px;\n }\n };\n MenuBase.prototype.getMenuWidth = function (cmenu, width, isRtl) {\n var caretIcon = cmenu.getElementsByClassName(CARET)[0];\n if (caretIcon) {\n width += parseInt(getComputedStyle(caretIcon)[isRtl ? 'marginRight' : 'marginLeft'], 10);\n }\n return width < 120 ? 120 : width;\n };\n MenuBase.prototype.toggleVisiblity = function (ul, isVisible) {\n if (isVisible === void 0) {\n isVisible = true;\n }\n ul.style.visibility = isVisible ? 'hidden' : '';\n ul.style.display = isVisible ? 'block' : 'none';\n };\n MenuBase.prototype.createItems = function (items) {\n var _this = this;\n var level = this.navIdx ? this.navIdx.length : 0;\n var fields = this.getFields(level);\n var showIcon = this.hasField(items, this.getField('iconCss', level));\n var listBaseOptions = {\n showIcon: showIcon,\n moduleName: 'menu',\n fields: fields,\n template: this.template,\n itemNavigable: true,\n itemCreating: function (args) {\n if (!args.curData[args.fields[fields.id]]) {\n args.curData[args.fields[fields.id]] = getUniqueID('menuitem');\n }\n if (isNullOrUndefined(args.curData.htmlAttributes)) {\n Object.defineProperty(args.curData, 'htmlAttributes', {\n value: {},\n writable: true,\n enumerable: true,\n configurable: true\n });\n }\n if (Browser.isIE) {\n if (!args.curData.htmlAttributes.role) {\n args.curData.htmlAttributes.role = 'menuitem';\n }\n if (!args.curData.htmlAttributes.tabindex) {\n args.curData.htmlAttributes.tabindex = '-1';\n }\n } else {\n Object.assign(args.curData.htmlAttributes, {\n role: args.curData.htmlAttributes.role || 'menuitem',\n tabindex: args.curData.htmlAttributes.tabindex || '-1'\n });\n }\n if (_this.isMenu && !args.curData[_this.getField('separator', level)]) {\n if (!args.curData.htmlAttributes['aria-label']) {\n args.curData.htmlAttributes['aria-label'] = args.curData[args.fields.text] ? args.curData[args.fields.text] : args.curData[args.fields.id];\n }\n }\n if (args.curData[args.fields[fields.iconCss]] === '') {\n args.curData[args.fields[fields.iconCss]] = null;\n }\n },\n itemCreated: function (args) {\n if (args.curData[_this.getField('separator', level)]) {\n args.item.classList.add(SEPARATOR);\n if (!args.curData.htmlAttributes.role) {\n args.item.setAttribute('role', 'separator');\n }\n if (!args.curData.htmlAttributes.ariaLabel) {\n args.item.setAttribute('aria-label', 'separator');\n }\n }\n if (showIcon && !args.curData[args.fields.iconCss] && !args.curData[_this.getField('separator', level)]) {\n args.item.classList.add('e-blankicon');\n }\n if (args.curData[args.fields.child] && args.curData[args.fields.child].length) {\n var span = _this.createElement('span', {\n className: ICONS + ' ' + CARET\n });\n args.item.appendChild(span);\n args.item.setAttribute('aria-haspopup', 'true');\n args.item.setAttribute('aria-expanded', 'false');\n args.item.classList.add('e-menu-caret-icon');\n }\n if (_this.isMenu && _this.template) {\n args.item.setAttribute('id', args.curData[args.fields.id].toString());\n args.item.removeAttribute('data-uid');\n if (args.item.classList.contains('e-level-1')) {\n args.item.classList.remove('e-level-1');\n }\n if (args.item.classList.contains('e-has-child')) {\n args.item.classList.remove('e-has-child');\n }\n args.item.removeAttribute('aria-level');\n }\n var eventArgs = {\n item: args.curData,\n element: args.item\n };\n _this.trigger('beforeItemRender', eventArgs);\n }\n };\n this.setProperties({\n 'items': this.items\n }, true);\n if (this.isMenu) {\n listBaseOptions.templateID = this.element.id + TEMPLATE_PROPERTY;\n }\n var ul = ListBase.createList(this.createElement, items, listBaseOptions, !this.template, this);\n ul.setAttribute('tabindex', '0');\n if (this.isMenu) {\n ul.setAttribute('role', 'menu');\n } else {\n ul.setAttribute('role', 'menubar');\n }\n return ul;\n };\n MenuBase.prototype.moverHandler = function (e) {\n var trgt = e.target;\n this.liTrgt = trgt;\n if (!this.isMenu) {\n this.isCmenuHover = true;\n }\n var cli = this.getLI(trgt);\n var wrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : this.getWrapper();\n var hdrWrapper = this.getWrapper();\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var ulId;\n var isDifferentElem = false;\n if (!wrapper) {\n return;\n }\n if (wrapper.id !== '') {\n ulId = regex.exec(wrapper.id)[1];\n } else {\n ulId = wrapper.querySelector('ul').id;\n }\n if (ulId !== this.element.id) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [this.getWrapper()]);\n if (this.navIdx.length) {\n isDifferentElem = true;\n } else {\n return;\n }\n }\n if (cli && closest(cli, '.e-' + this.getModuleName() + '-wrapper') && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [wrapper].concat(this.getPopups()) : [wrapper]);\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [hdrWrapper].concat(this.getPopups()) : [hdrWrapper]);\n cli.classList.add(FOCUSED);\n if (!this.showItemOnClick) {\n this.clickHandler(e);\n }\n } else if (this.isMenu && this.showItemOnClick && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n }\n if (this.isMenu) {\n if (!this.showItemOnClick && trgt.parentElement !== wrapper && !closest(trgt, '.e-' + this.getModuleName() + '-popup') && (!cli || cli && !this.getIndex(cli.id, true).length) && this.showSubMenuOn !== 'Hover') {\n this.removeLIStateByClass([FOCUSED], [wrapper]);\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n } else if (isDifferentElem && !this.showItemOnClick) {\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n if (!this.isClosed) {\n this.removeStateWrapper();\n }\n this.isClosed = false;\n }\n if (!this.isMenu) {\n this.isCmenuHover = false;\n }\n };\n MenuBase.prototype.removeStateWrapper = function () {\n if (this.liTrgt) {\n var wrapper = closest(this.liTrgt, '.e-menu-vscroll');\n if (this.liTrgt.tagName === 'DIV' && wrapper) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [wrapper]);\n }\n }\n };\n MenuBase.prototype.removeLIStateByClass = function (classList, element) {\n var li;\n var _loop_1 = function (i) {\n classList.forEach(function (className) {\n li = select('.' + className, element[i]);\n if (li) {\n li.classList.remove(className);\n }\n });\n };\n for (var i = 0; i < element.length; i++) {\n _loop_1(i);\n }\n };\n MenuBase.prototype.getField = function (propName, level) {\n if (level === void 0) {\n level = 0;\n }\n var fieldName = this.fields[\"\" + propName];\n return typeof fieldName === 'string' ? fieldName : !fieldName[level] ? fieldName[fieldName.length - 1].toString() : fieldName[level].toString();\n };\n MenuBase.prototype.getFields = function (level) {\n if (level === void 0) {\n level = 0;\n }\n return {\n id: this.getField('itemId', level),\n iconCss: this.getField('iconCss', level),\n text: this.getField('text', level),\n url: this.getField('url', level),\n child: this.getField('children', level),\n separator: this.getField('separator', level)\n };\n };\n MenuBase.prototype.hasField = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][\"\" + field]) {\n return true;\n }\n }\n return false;\n };\n MenuBase.prototype.menuHeaderClickHandler = function (e) {\n var menuWrapper = closest(e.target, '.e-menu-wrapper');\n if (menuWrapper && menuWrapper.querySelector('ul.e-menu-parent').id !== this.element.id) {\n return;\n }\n if (this.element.className.indexOf('e-hide-menu') > -1) {\n this.openHamburgerMenu(e);\n } else {\n this.closeHamburgerMenu(e);\n }\n };\n MenuBase.prototype.clickHandler = function (e) {\n this.isTapHold = this.isTapHold ? false : this.isTapHold;\n var wrapper = this.getWrapper();\n var trgt = e.target;\n var cli = this.cli = this.getLI(trgt);\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var cliWrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : null;\n var isInstLI = cli && cliWrapper && (this.isMenu ? this.getIndex(cli.id, true).length > 0 : wrapper.firstElementChild.id === cliWrapper.firstElementChild.id);\n if (Browser.isDevice && this.isMenu) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n this.mouseDownHandler(e);\n }\n if (cli && cliWrapper && this.isMenu) {\n var cliWrapperId = cliWrapper.id ? regex.exec(cliWrapper.id)[1] : cliWrapper.querySelector('.e-menu-parent').id;\n if (this.element.id !== cliWrapperId) {\n return;\n }\n }\n if (isInstLI && e.type === 'click' && !cli.classList.contains(HEADER)) {\n this.setLISelected(cli);\n var navIdx = this.getIndex(cli.id, true);\n var item = this.getItem(navIdx);\n var eventArgs = {\n element: cli,\n item: item,\n event: e\n };\n this.trigger('select', eventArgs);\n }\n if (isInstLI && (e.type === 'mouseover' || Browser.isDevice || this.showItemOnClick)) {\n var ul = void 0;\n if (cli.classList.contains(HEADER)) {\n ul = wrapper.children[this.navIdx.length - 1];\n this.toggleAnimation(ul);\n var sli = this.getLIByClass(ul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n var scrollMenu = this.enableScrolling && !this.isMenu ? closest(cli.parentElement, '.e-menu-vscroll') : null;\n if (scrollMenu) {\n destroyScroll(getInstance(scrollMenu, VScroll), scrollMenu);\n }\n detach(cli.parentNode);\n this.navIdx.pop();\n } else {\n if (!cli.classList.contains(SEPARATOR)) {\n this.showSubMenu = true;\n var cul = cli.parentNode;\n if (isNullOrUndefined(cul)) {\n return;\n }\n this.cliIdx = this.getIdx(cul, cli);\n if (this.isMenu || !Browser.isDevice) {\n var culIdx = this.isMenu ? Array.prototype.indexOf.call([wrapper].concat(this.getPopups()), closest(cul, '.' + 'e-' + this.getModuleName() + '-wrapper')) : this.getIdx(wrapper, cul);\n if (this.navIdx[culIdx] === this.cliIdx) {\n this.showSubMenu = false;\n }\n if (culIdx !== this.navIdx.length && (e.type !== 'mouseover' || this.showSubMenu)) {\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n this.isClosed = true;\n this.keyType = 'click';\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n if (!this.isMenu) {\n this.isCmenuHover = true;\n }\n }\n this.closeMenu(culIdx + 1, e);\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n if (!this.isMenu) {\n this.isCmenuHover = false;\n }\n }\n }\n }\n if (!this.isClosed) {\n this.afterCloseMenu(e);\n }\n this.isClosed = false;\n }\n }\n } else {\n if (trgt.tagName === 'DIV' && closest(trgt, '.e-menu-vscroll') && (this.navIdx.length || !this.isMenu && this.enableScrolling && this.navIdx.length === 0)) {\n var popupEle = this.isMenu ? closest(trgt, '.' + POPUP) : closest(trgt, '.e-menu-vscroll');\n var cIdx = this.isMenu ? Array.prototype.indexOf.call(this.getPopups(), popupEle) + 1 : this.getIdx(wrapper, select('ul.e-menu-parent', popupEle));\n if (cIdx < this.navIdx.length) {\n this.closeMenu(cIdx + 1, e);\n if (popupEle) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [popupEle]);\n }\n }\n } else if (this.isMenu && this.hamburgerMode && trgt.tagName === 'SPAN' && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n } else {\n if (trgt.tagName !== 'UL' || (this.isMenu ? trgt.parentElement.classList.contains('e-menu-wrapper') && !this.getIndex(trgt.querySelector('.' + ITEM).id, true).length : trgt.parentElement !== wrapper)) {\n if (!cli) {\n this.removeLIStateByClass([SELECTED], [wrapper]);\n }\n if (!this.isAnimationNone && !cli || cli && !cli.querySelector('.' + CARET)) {\n if (navigator.platform.toUpperCase().indexOf('MAC') < 0 || navigator.platform.toUpperCase().indexOf('MAC') >= 0 && !e.ctrlKey) {\n this.closeMenu(null, e);\n }\n }\n }\n }\n }\n };\n MenuBase.prototype.afterCloseMenu = function (e) {\n if (isNullOrUndefined(e)) {\n return;\n }\n var isHeader;\n if (this.showSubMenu) {\n if (this.showItemOnClick && this.navIdx.length === 0) {\n isHeader = closest(e.target, '.e-menu-parent.e-control');\n } else {\n isHeader = closest(this.element, '.e-menu-parent.e-control');\n }\n var idx = this.navIdx.concat(this.cliIdx);\n var item = this.getItem(idx);\n if (item && item[this.getField('children', idx.length - 1)] && item[this.getField('children', idx.length - 1)].length) {\n if (e.type === 'mouseover' || Browser.isDevice && this.isMenu) {\n this.setLISelected(this.cli);\n }\n if (!this.hamburgerMode && isHeader || this.hamburgerMode && this.cli.getAttribute('aria-expanded') === 'false') {\n this.cli.setAttribute('aria-expanded', 'true');\n this.navIdx.push(this.cliIdx);\n this.openMenu(this.cli, item, null, null, e);\n }\n } else {\n if (e.type !== 'mouseover') {\n this.closeMenu(null, e);\n }\n }\n if (!isHeader) {\n var cul = this.getUlByNavIdx();\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.setAttribute('aria-expanded', 'false');\n sli.classList.remove(SELECTED);\n }\n }\n }\n this.keyType = '';\n };\n MenuBase.prototype.setLISelected = function (li) {\n var sli = this.getLIByClass(li.parentElement, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n if (!this.isMenu) {\n li.classList.remove(FOCUSED);\n }\n li.classList.add(SELECTED);\n };\n MenuBase.prototype.getLIByClass = function (ul, classname) {\n if (ul && ul.children) {\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains(classname)) {\n return ul.children[i];\n }\n }\n }\n return null;\n };\n /**\n * This method is used to get the index of the menu item in the Menu based on the argument.\n *\n * @param {MenuItem | string} item - item be passed to get the index | id to be passed to get the item index.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.getItemIndex = function (item, isUniqueId) {\n var idx;\n if (typeof item === 'string') {\n idx = item;\n } else {\n idx = item.id;\n }\n var isText = isUniqueId === false ? false : true;\n var navIdx = this.getIndex(idx, isText);\n return navIdx;\n };\n /**\n * This method is used to set the menu item in the Menu based on the argument.\n *\n * @param {MenuItem} item - item need to be updated.\n * @param {string} id - id / text to be passed to update the item.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.setItem = function (item, id, isUniqueId) {\n var idx;\n if (isUniqueId) {\n idx = id ? id : item.id;\n } else {\n idx = id ? id : item.text;\n }\n var navIdx = this.getIndex(idx, isUniqueId);\n var newItem = this.getItem(navIdx);\n Object.assign(newItem, item);\n };\n MenuBase.prototype.getItem = function (navIdx) {\n navIdx = navIdx.slice();\n var idx = navIdx.pop();\n var items = this.getItems(navIdx);\n return items[idx];\n };\n MenuBase.prototype.getItems = function (navIdx) {\n var items = this.items;\n for (var i = 0; i < navIdx.length; i++) {\n items = items[navIdx[i]][this.getField('children', i)];\n }\n return items;\n };\n MenuBase.prototype.setItems = function (newItems, navIdx) {\n var items = this.getItems(navIdx);\n items.splice(0, items.length);\n for (var i = 0; i < newItems.length; i++) {\n items.splice(i, 0, newItems[i]);\n }\n };\n MenuBase.prototype.getIdx = function (ul, li, skipHdr) {\n if (skipHdr === void 0) {\n skipHdr = true;\n }\n var ulElem = !this.isMenu && this.enableScrolling && select('.e-menu-vscroll', ul) ? selectAll('.e-menu-parent', ul) : Array.from(ul.children);\n var idx = Array.prototype.indexOf.call(ulElem, li);\n if (skipHdr && ul.children[0].classList.contains(HEADER)) {\n idx--;\n }\n return idx;\n };\n MenuBase.prototype.getLI = function (elem) {\n if (elem.tagName === 'LI' && elem.classList.contains('e-menu-item')) {\n return elem;\n }\n return closest(elem, 'li.e-menu-item');\n };\n MenuBase.prototype.updateItemsByNavIdx = function () {\n var items = this.items;\n var count = 0;\n for (var index = 0; index < this.navIdx.length; index++) {\n items = items[index].items;\n if (!items) {\n break;\n }\n count++;\n var ul = this.getUlByNavIdx(count);\n if (!ul) {\n break;\n }\n this.updateItem(ul, items);\n }\n };\n MenuBase.prototype.removeChildElement = function (elem) {\n while (elem.firstElementChild) {\n elem.removeChild(elem.firstElementChild);\n }\n return elem;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {MenuBaseModel} newProp - Specifies the new properties\n * @param {MenuBaseModel} oldProp - Specifies the old properties\n * @returns {void}\n */\n MenuBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var wrapper = this.getWrapper();\n var _loop_2 = function (prop) {\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (this_1.enableRtl) {\n wrapper.classList.add(RTL);\n } else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'showItemOnClick':\n this_1.unWireEvents();\n this_1.showItemOnClick = newProp.showItemOnClick;\n this_1.wireEvents();\n break;\n case 'enableScrolling':\n if (newProp.enableScrolling) {\n var ul_2;\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n } else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n this_1.getPopups().forEach(function (wrapper) {\n ul_2 = select('.e-ul', wrapper);\n addScrolling(_this.createElement, wrapper, ul_2, 'vscroll', _this.enableRtl);\n });\n } else {\n var ul_3 = wrapper.children[0];\n if (this_1.element.classList.contains('e-vertical') || !this_1.isMenu) {\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n } else {\n destroyScroll(getInstance(ul_3, HScroll), ul_3);\n }\n wrapper.style.overflow = '';\n wrapper.appendChild(this_1.element);\n this_1.getPopups().forEach(function (wrapper) {\n ul_3 = wrapper.children[0];\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n wrapper.style.overflow = '';\n });\n }\n break;\n case 'items':\n {\n var idx = void 0;\n var navIdx = void 0;\n var item = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this_1.isReact && this_1.template) {\n this_1.clearTemplate(['template']);\n }\n if (!Object.keys(oldProp.items).length) {\n this_1.updateItem(this_1.element, this_1.items);\n if (this_1.enableScrolling && this_1.element.parentElement.classList.contains('e-custom-scroll')) {\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n } else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n }\n if (!this_1.hamburgerMode) {\n for (var i = 1, count = wrapper.childElementCount; i < count; i++) {\n detach(wrapper.lastElementChild);\n }\n }\n this_1.navIdx = [];\n } else {\n var keys = Object.keys(newProp.items);\n for (var i = 0; i < keys.length; i++) {\n navIdx = this_1.getChangedItemIndex(newProp, [], Number(keys[i]));\n if (navIdx.length <= this_1.getWrapper().children.length) {\n idx = navIdx.pop();\n item = this_1.getItems(navIdx);\n this_1.insertAfter([item[idx]], item[idx].text);\n this_1.removeItem(item, navIdx, idx);\n this_1.setItems(item, navIdx);\n }\n navIdx.length = 0;\n }\n }\n break;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_2(prop);\n }\n };\n MenuBase.prototype.updateItem = function (ul, items) {\n if (isBlazor() && !this.isMenu) {\n ul = this.removeChildElement(ul);\n } else {\n if (this.enableScrolling) {\n var wrapper1 = this.getWrapper();\n var ul1 = wrapper1.children[0];\n if (this.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul1, VScroll), ul1);\n } else {\n destroyScroll(getInstance(ul1, HScroll), ul1);\n }\n }\n ul.innerHTML = '';\n }\n var lis = [].slice.call(this.createItems(items).children);\n lis.forEach(function (li) {\n ul.appendChild(li);\n });\n };\n MenuBase.prototype.getChangedItemIndex = function (newProp, index, idx) {\n index.push(idx);\n var key = Object.keys(newProp.items[idx]).pop();\n if (key === 'items') {\n var item = newProp.items[idx];\n var popStr = Object.keys(item.items).pop();\n if (popStr) {\n this.getChangedItemIndex(item, index, Number(popStr));\n }\n } else {\n if (key === 'isParentArray' && index.length > 1) {\n index.pop();\n }\n }\n return index;\n };\n MenuBase.prototype.removeItem = function (item, navIdx, idx) {\n item.splice(idx, 1);\n var uls = this.getWrapper().children;\n if (navIdx.length < uls.length) {\n if (this.enableScrolling && !uls[navIdx.length].classList.contains('e-menu-parent')) {\n var ul = uls[navIdx.length].querySelector('.e-menu-parent');\n detach(ul.children[idx]);\n } else {\n detach(uls[navIdx.length].children[idx]);\n }\n }\n };\n /**\n * Used to unwire the bind events.\n *\n * @private\n * @param {string} targetSelctor - Specifies the target selector\n * @returns {void}\n */\n MenuBase.prototype.unWireEvents = function (targetSelctor) {\n if (targetSelctor === void 0) {\n targetSelctor = this.target;\n }\n var wrapper = this.getWrapper();\n if (targetSelctor) {\n var target = void 0;\n var touchModule = void 0;\n var targetElems = selectAll(targetSelctor);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.remove(target, 'click', this.menuHeaderClickHandler);\n } else {\n if (Browser.isIos) {\n touchModule = getInstance(target, Touch);\n if (touchModule) {\n touchModule.destroy();\n }\n } else {\n EventHandler.remove(target, 'contextmenu', this.cmenuHandler);\n }\n }\n }\n if (!this.isMenu) {\n EventHandler.remove(this.targetElement, 'scroll', this.scrollHandler);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollHandler);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.remove(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler);\n EventHandler.remove(document, 'mousedown', this.delegateMouseDownHandler);\n EventHandler.remove(document, 'keydown', this.domKeyHandler);\n if (!this.isMenu && !this.target) {\n EventHandler.remove(document, 'scroll', this.scrollHandler);\n }\n }\n EventHandler.remove(document, 'click', this.delegateClickHandler);\n this.unWireKeyboardEvent(wrapper);\n this.rippleFn();\n if (!this.isMenu && this.enableScrolling) {\n wrapper.removeEventListener('touchstart', this.touchStartFn);\n wrapper.removeEventListener('touchmove', this.touchMoveFn);\n document.removeEventListener('touchstart', this.touchOutsideHandler);\n }\n };\n MenuBase.prototype.unWireKeyboardEvent = function (element) {\n var keyboardModule = getInstance(element, KeyboardEvents);\n if (keyboardModule) {\n keyboardModule.destroy();\n }\n };\n MenuBase.prototype.toggleAnimation = function (ul, isMenuOpen) {\n var _this = this;\n if (isMenuOpen === void 0) {\n isMenuOpen = true;\n }\n var pUlHeight;\n var pElement;\n var animateElement = this.enableScrolling && !this.isMenu && closest(ul, '.e-menu-vscroll') ? closest(ul, '.e-menu-vscroll') : ul;\n if (this.animationSettings.effect === 'None' || !isMenuOpen) {\n if (this.hamburgerMode && ul) {\n ul.style.top = '0px';\n }\n this.isAnimationNone = this.animationSettings.effect === 'None';\n this.end(ul, isMenuOpen);\n } else {\n this.animation.animate(animateElement, {\n name: this.animationSettings.effect,\n duration: this.animationSettings.duration,\n timingFunction: this.animationSettings.easing,\n begin: function (options) {\n if (_this.hamburgerMode) {\n pElement = options.element.parentElement;\n options.element.style.position = 'absolute';\n if (pElement) {\n pUlHeight = pElement.offsetHeight;\n }\n options.element.style.maxHeight = options.element.offsetHeight + 'px';\n if (pElement) {\n pElement.style.maxHeight = '';\n }\n } else {\n options.element.style.display = 'block';\n options.element.style.maxHeight = _this.isMenu ? options.element.getBoundingClientRect().height + 'px' : options.element.scrollHeight + 'px';\n }\n },\n progress: function (options) {\n if (_this.hamburgerMode && pElement) {\n pElement.style.minHeight = pUlHeight + options.element.offsetHeight + 'px';\n }\n },\n end: function (options) {\n if (_this.hamburgerMode) {\n options.element.style.position = '';\n options.element.style.maxHeight = '';\n if (pElement) {\n pElement.style.minHeight = '';\n }\n options.element.style.top = 0 + 'px';\n options.element.children[0].focus();\n _this.triggerOpen(options.element.children[0]);\n } else {\n _this.end(options.element, isMenuOpen);\n }\n _this.isKBDAction = false;\n }\n });\n }\n };\n MenuBase.prototype.triggerOpen = function (ul) {\n var item = this.navIdx.length ? this.getItem(this.navIdx) : null;\n var eventArgs = {\n element: ul,\n parentItem: item,\n items: item ? item.items : this.items\n };\n this.trigger('onOpen', eventArgs);\n if (!this.isMenu) {\n EventHandler.add(ul, 'keydown', this.keyHandler, this);\n }\n };\n MenuBase.prototype.end = function (ul, isMenuOpen) {\n if (isMenuOpen && this.isContextMenuClosed) {\n if (this.isMenu || !Browser.isDevice || !this.isMenu && this.isAnimationNone && Browser.isDevice) {\n ul.style.display = 'block';\n }\n ul.style.maxHeight = '';\n var scrollMenu = this.enableScrolling && !this.isMenu ? closest(ul, '.e-menu-vscroll') : null;\n if (scrollMenu) {\n scrollMenu.style.display = 'block';\n }\n this.triggerOpen(ul);\n if (ul.querySelector('.' + FOCUSED) && this.isKBDAction) {\n ul.querySelector('.' + FOCUSED).focus();\n } else {\n var ele = this.getWrapper().children[this.getIdx(this.getWrapper(), ul) - 1];\n if (this.currentTarget) {\n if (!(this.currentTarget.classList.contains('e-numerictextbox') || this.currentTarget.classList.contains('e-textbox') || this.currentTarget.tagName === 'INPUT')) {\n if (ele && this.isKBDAction) {\n ele.querySelector('.' + SELECTED).focus();\n } else {\n this.element.focus();\n }\n }\n } else {\n if (ele && this.isKBDAction) {\n ele.querySelector('.' + SELECTED).focus();\n } else {\n this.element.focus();\n }\n }\n }\n } else {\n var scrollMenu = this.enableScrolling && !this.isMenu ? closest(ul, '.e-menu-vscroll') : null;\n if (scrollMenu) {\n destroyScroll(getInstance(scrollMenu, VScroll), scrollMenu);\n }\n if (ul === this.element) {\n var fli = this.getLIByClass(this.element, FOCUSED);\n if (fli) {\n fli.classList.remove(FOCUSED);\n }\n var sli = this.getLIByClass(this.element, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n ul.style.display = 'none';\n this.isAnimationNone = false;\n } else {\n detach(ul);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n MenuBase.prototype.getPersistData = function () {\n return '';\n };\n /**\n * Get wrapper element.\n *\n * @returns {Element} - Wrapper element\n * @private\n */\n MenuBase.prototype.getWrapper = function () {\n return closest(this.element, '.e-' + this.getModuleName() + '-wrapper');\n };\n MenuBase.prototype.getIndex = function (data, isUniqueId, items, nIndex, isCallBack, level) {\n if (items === void 0) {\n items = this.items;\n }\n if (nIndex === void 0) {\n nIndex = [];\n }\n if (isCallBack === void 0) {\n isCallBack = false;\n }\n if (level === void 0) {\n level = 0;\n }\n var item;\n level = isCallBack ? level + 1 : 0;\n for (var i = 0, len = items.length; i < len; i++) {\n item = items[i];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentField = isUniqueId ? item[this.getField('itemId', level)] : item[this.getField('text', level)];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var itemId = item.htmlAttributes && 'id' in item.htmlAttributes ? item.htmlAttributes.id : currentField;\n if (itemId === data) {\n nIndex.push(i);\n break;\n } else if (item[this.getField('children', level)] && item[this.getField('children', level)].length) {\n nIndex = this.getIndex(data, isUniqueId, item[this.getField('children', level)], nIndex, true, level);\n if (nIndex[nIndex.length - 1] === -1) {\n if (i !== len - 1) {\n nIndex.pop();\n }\n } else {\n nIndex.unshift(i);\n break;\n }\n } else {\n if (i === len - 1) {\n nIndex.push(-1);\n }\n }\n }\n return !isCallBack && nIndex[0] === -1 ? [] : nIndex;\n };\n /**\n * This method is used to enable or disable the menu items in the Menu based on the items and enable argument.\n *\n * @param {string[]} items - Text items that needs to be enabled/disabled.\n * @param {boolean} enable - Set `true`/`false` to enable/disable the list items.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.enableItems = function (items, enable, isUniqueId) {\n if (enable === void 0) {\n enable = true;\n }\n var ul;\n var idx;\n var navIdx;\n var disabled = DISABLED;\n var skipItem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n if (this.navIdx.length) {\n if (navIdx.length !== 1) {\n skipItem = false;\n for (var i_1 = 0, len = navIdx.length - 1; i_1 < len; i_1++) {\n if (navIdx[i_1] !== this.navIdx[i_1]) {\n skipItem = true;\n break;\n }\n }\n if (skipItem) {\n continue;\n }\n }\n } else {\n if (navIdx.length !== 1) {\n continue;\n }\n }\n idx = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul && !isNullOrUndefined(idx)) {\n if (enable) {\n if (this.isMenu) {\n ul.children[idx].classList.remove(disabled);\n ul.children[idx].removeAttribute('aria-disabled');\n } else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.remove(disabled);\n } else if (this.enableScrolling && !ul.classList.contains('e-menu-parent')) {\n var mainUl = ul.querySelector('.e-menu-parent');\n mainUl.children[idx].classList.remove(disabled);\n } else {\n ul.children[idx].classList.remove(disabled);\n }\n }\n } else {\n if (this.isMenu) {\n ul.children[idx].classList.add(disabled);\n ul.children[idx].setAttribute('aria-disabled', 'true');\n } else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.add(disabled);\n } else {\n if (this.enableScrolling && !ul.classList.contains('e-menu-parent')) {\n var mainUl = ul.querySelector('.e-menu-parent');\n mainUl.children[idx].classList.add(disabled);\n } else {\n ul.children[idx].classList.add(disabled);\n }\n }\n }\n }\n }\n }\n };\n /**\n * This method is used to show the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be shown.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.showItems = function (items, isUniqueId) {\n this.showHideItems(items, false, isUniqueId);\n };\n /**\n * This method is used to hide the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be hidden.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.hideItems = function (items, isUniqueId) {\n this.showHideItems(items, true, isUniqueId);\n };\n MenuBase.prototype.showHideItems = function (items, ishide, isUniqueId) {\n var ul;\n var index;\n var navIdx;\n var item;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n index = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n item = this.getItems(navIdx);\n if (ul) {\n if (this.enableScrolling && !ul.classList.contains('e-menu-parent')) {\n ul = ul.querySelector('.e-menu-parent');\n }\n var validUl = isUniqueId ? ul.children[index].id : item[index].text.toString();\n if (ishide && validUl === items[i]) {\n ul.children[index].classList.add(HIDE);\n } else if (!ishide && validUl === items[i]) {\n ul.children[index].classList.remove(HIDE);\n }\n }\n }\n };\n /**\n * It is used to remove the menu items from the Menu based on the items text.\n *\n * @param {string[]} items Text items that needs to be removed.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.removeItems = function (items, isUniqueId) {\n var idx;\n var navIdx;\n var iitems;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n if (!isNullOrUndefined(idx)) {\n this.removeItem(iitems, navIdx, idx);\n }\n }\n };\n /**\n * It is used to insert the menu items after the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item after that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertAfter = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId);\n };\n /**\n * It is used to insert the menu items before the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item before that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertBefore = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId, false);\n };\n MenuBase.prototype.insertItems = function (items, text, isUniqueId, isAfter) {\n if (isAfter === void 0) {\n isAfter = true;\n }\n var li;\n var idx;\n var navIdx;\n var iitems;\n var menuitem;\n var parentUl;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(text, isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n menuitem = new MenuItem(iitems[0], 'items', items[i], true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n menuitem.parentObj = iitems[0].parentObj;\n iitems.splice(isAfter ? idx + 1 : idx, 0, menuitem);\n var uls = this.isMenu ? [this.getWrapper()].concat(this.getPopups()) : [].slice.call(this.getWrapper().children);\n if (!isNullOrUndefined(idx) && navIdx.length < uls.length) {\n idx = isAfter ? idx + 1 : idx;\n li = this.createItems(iitems).children[idx];\n var ul = parentUl = this.isMenu ? select('.e-menu-parent', uls[navIdx.length]) : uls[navIdx.length];\n if (this.enableScrolling && !ul.classList.contains('e-menu-parent')) {\n ul = ul.querySelector('.e-menu-parent');\n }\n ul.insertBefore(li, ul.children[idx]);\n if (i === items.length - 1 && !this.isMenu && ul.style.display === 'block') {\n if (this.enableScrolling) {\n this.setPosition(null, ul, parseFloat(parentUl.style.top), parseFloat(parentUl.style.left));\n var scrollElem = closest(ul, '.e-vscroll');\n if (scrollElem) {\n scrollElem.style.display = 'block';\n }\n } else {\n this.setPosition(null, ul, parseFloat(ul.style.top), parseFloat(ul.style.left));\n ul.style.display = 'block';\n }\n }\n }\n }\n };\n MenuBase.prototype.removeAttributes = function () {\n var _this = this;\n ['top', 'left', 'display', 'z-index'].forEach(function (key) {\n _this.element.style.removeProperty(key);\n });\n ['role', 'tabindex', 'class', 'style'].forEach(function (key) {\n if (key === 'class' && _this.element.classList.contains('e-menu-parent')) {\n _this.element.classList.remove('e-menu-parent');\n }\n if (['class', 'style'].indexOf(key) === -1 || !_this.element.getAttribute(key)) {\n _this.element.removeAttribute(key);\n }\n if (_this.isMenu && key === 'class' && _this.element.classList.contains('e-vertical')) {\n _this.element.classList.remove('e-vertical');\n }\n });\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n MenuBase.prototype.destroy = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n this.unWireEvents();\n if (!this.isMenu) {\n this.clonedElement.style.display = '';\n if (this.clonedElement.tagName === 'EJS-CONTEXTMENU') {\n addClass([this.clonedElement], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.element = this.clonedElement;\n } else {\n if (this.refreshing && this.clonedElement.childElementCount && this.clonedElement.children[0].tagName === 'LI') {\n this.setProperties({\n 'items': []\n }, true);\n }\n if (document.getElementById(this.clonedElement.id)) {\n var refEle = this.clonedElement.nextElementSibling;\n if (refEle && refEle !== wrapper) {\n this.clonedElement.parentElement.insertBefore(this.element, refEle);\n } else {\n this.clonedElement.parentElement.appendChild(this.element);\n }\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n } else {\n this.element.innerHTML = '';\n }\n append([].slice.call(this.clonedElement.children), this.element);\n detach(this.clonedElement);\n this.removeAttributes();\n }\n }\n this.clonedElement = null;\n } else {\n this.closeMenu();\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n } else {\n this.element.innerHTML = '';\n }\n this.removeAttributes();\n wrapper.parentNode.insertBefore(this.element, wrapper);\n this.clonedElement = null;\n }\n detach(wrapper);\n _super.prototype.destroy.call(this);\n if (this.template) {\n this.clearTemplate(['template']);\n }\n }\n this.rippleFn = null;\n };\n __decorate([Event()], MenuBase.prototype, \"beforeItemRender\", void 0);\n __decorate([Event()], MenuBase.prototype, \"beforeOpen\", void 0);\n __decorate([Event()], MenuBase.prototype, \"onOpen\", void 0);\n __decorate([Event()], MenuBase.prototype, \"beforeClose\", void 0);\n __decorate([Event()], MenuBase.prototype, \"onClose\", void 0);\n __decorate([Event()], MenuBase.prototype, \"select\", void 0);\n __decorate([Event()], MenuBase.prototype, \"created\", void 0);\n __decorate([Property('')], MenuBase.prototype, \"cssClass\", void 0);\n __decorate([Property(0)], MenuBase.prototype, \"hoverDelay\", void 0);\n __decorate([Property(false)], MenuBase.prototype, \"showItemOnClick\", void 0);\n __decorate([Property('')], MenuBase.prototype, \"target\", void 0);\n __decorate([Property('')], MenuBase.prototype, \"filter\", void 0);\n __decorate([Property(null)], MenuBase.prototype, \"template\", void 0);\n __decorate([Property(false)], MenuBase.prototype, \"enableScrolling\", void 0);\n __decorate([Property(true)], MenuBase.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([Complex({\n itemId: 'id',\n text: 'text',\n parentId: 'parentId',\n iconCss: 'iconCss',\n url: 'url',\n separator: 'separator',\n children: 'items'\n }, FieldSettings)], MenuBase.prototype, \"fields\", void 0);\n __decorate([Collection([], MenuItem)], MenuBase.prototype, \"items\", void 0);\n __decorate([Complex({\n duration: 400,\n easing: 'ease',\n effect: 'SlideDown'\n }, MenuAnimationSettings)], MenuBase.prototype, \"animationSettings\", void 0);\n MenuBase = __decorate([NotifyPropertyChanges], MenuBase);\n return MenuBase;\n}(Component);\nexport { MenuBase };","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 @typescript-eslint/no-explicit-any */\nimport { Component, EventHandler, Property, Event } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, isVisible, closest, attributes, detach, classList, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { selectAll, setStyleAttribute as setStyle, select } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, getUniqueID, formatUnit, Collection, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, Browser, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_ITEMS = 'e-toolbar-items';\nvar CLS_ITEM = 'e-toolbar-item';\nvar CLS_RTL = 'e-rtl';\nvar CLS_SEPARATOR = 'e-separator';\nvar CLS_POPUPICON = 'e-popup-up-icon';\nvar CLS_POPUPDOWN = 'e-popup-down-icon';\nvar CLS_POPUPOPEN = 'e-popup-open';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_POPUPTEXT = 'e-toolbar-text';\nvar CLS_TBARTEXT = 'e-popup-text';\nvar CLS_TBAROVERFLOW = 'e-overflow-show';\nvar CLS_POPOVERFLOW = 'e-overflow-hide';\nvar CLS_TBARBTN = 'e-tbar-btn';\nvar CLS_TBARNAV = 'e-hor-nav';\nvar CLS_TBARSCRLNAV = 'e-scroll-nav';\nvar CLS_TBARRIGHT = 'e-toolbar-right';\nvar CLS_TBARLEFT = 'e-toolbar-left';\nvar CLS_TBARCENTER = 'e-toolbar-center';\nvar CLS_TBARPOS = 'e-tbar-pos';\nvar CLS_HSCROLLCNT = 'e-hscroll-content';\nvar CLS_VSCROLLCNT = 'e-vscroll-content';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_POPUPNAV = 'e-hor-nav';\nvar CLS_POPUPCLASS = 'e-toolbar-pop';\nvar CLS_POPUP = 'e-toolbar-popup';\nvar CLS_TBARBTNTEXT = 'e-tbar-btn-text';\nvar CLS_TBARNAVACT = 'e-nav-active';\nvar CLS_TBARIGNORE = 'e-ignore';\nvar CLS_POPPRI = 'e-popup-alone';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_MULTIROW = 'e-toolbar-multirow';\nvar CLS_MULTIROWPOS = 'e-multirow-pos';\nvar CLS_MULTIROW_SEPARATOR = 'e-multirow-separator';\nvar CLS_EXTENDABLE_SEPARATOR = 'e-extended-separator';\nvar CLS_EXTEANDABLE_TOOLBAR = 'e-extended-toolbar';\nvar CLS_EXTENDABLECLASS = 'e-toolbar-extended';\nvar CLS_EXTENDPOPUP = 'e-expended-nav';\nvar CLS_EXTENDEDPOPOPEN = 'e-tbar-extended';\n/**\n * An item object that is used to configure Toolbar commands.\n */\nvar Item = /** @class */function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('')], Item.prototype, \"id\", void 0);\n __decorate([Property('')], Item.prototype, \"text\", void 0);\n __decorate([Property('auto')], Item.prototype, \"width\", void 0);\n __decorate([Property('')], Item.prototype, \"cssClass\", void 0);\n __decorate([Property(false)], Item.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([Property(false)], Item.prototype, \"disabled\", void 0);\n __decorate([Property('')], Item.prototype, \"prefixIcon\", void 0);\n __decorate([Property('')], Item.prototype, \"suffixIcon\", void 0);\n __decorate([Property(true)], Item.prototype, \"visible\", void 0);\n __decorate([Property('None')], Item.prototype, \"overflow\", void 0);\n __decorate([Property('')], Item.prototype, \"template\", void 0);\n __decorate([Property('Button')], Item.prototype, \"type\", void 0);\n __decorate([Property('Both')], Item.prototype, \"showTextOn\", void 0);\n __decorate([Property(null)], Item.prototype, \"htmlAttributes\", void 0);\n __decorate([Property('')], Item.prototype, \"tooltipText\", void 0);\n __decorate([Property('Left')], Item.prototype, \"align\", void 0);\n __decorate([Event()], Item.prototype, \"click\", void 0);\n __decorate([Property(-1)], Item.prototype, \"tabIndex\", void 0);\n return Item;\n}(ChildProperty);\nexport { Item };\n/**\n * The Toolbar control contains a group of commands that are aligned horizontally.\n * ```html\n * <div id=\"toolbar\"/>\n * <script>\n * var toolbarObj = new Toolbar();\n * toolbarObj.appendTo(\"#toolbar\");\n * </script>\n * ```\n */\nvar Toolbar = /** @class */function (_super) {\n __extends(Toolbar, _super);\n /**\n * Initializes a new instance of the Toolbar class.\n *\n * @param {ToolbarModel} options - Specifies Toolbar model properties as options.\n * @param { string | HTMLElement} element - Specifies the element that is rendered as a Toolbar.\n */\n function Toolbar(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.resizeContext = _this.resize.bind(_this);\n _this.orientationChangeContext = _this.orientationChange.bind(_this);\n /**\n * Contains the keyboard configuration of the Toolbar.\n */\n _this.keyConfigs = {\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n popupOpen: 'enter',\n popupClose: 'escape',\n tab: 'tab',\n home: 'home',\n end: 'end'\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}.\n */\n Toolbar.prototype.destroy = function () {\n var _this = this;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n var btnItems = this.element.querySelectorAll('.e-control.e-btn');\n [].slice.call(btnItems).forEach(function (el) {\n if (!isNOU(el) && !isNOU(el.ej2_instances) && !isNOU(el.ej2_instances[0]) && !el.ej2_instances[0].isDestroyed) {\n el.ej2_instances[0].destroy();\n }\n });\n this.unwireEvents();\n this.tempId.forEach(function (ele) {\n if (!isNOU(_this.element.querySelector(ele))) {\n document.body.appendChild(_this.element.querySelector(ele)).style.display = 'none';\n }\n });\n this.destroyItems();\n while (this.element.lastElementChild) {\n this.element.removeChild(this.element.lastElementChild);\n }\n if (this.trgtEle) {\n this.element.appendChild(this.ctrlTem);\n this.trgtEle = null;\n this.ctrlTem = null;\n }\n if (this.popObj) {\n this.popObj.destroy();\n detach(this.popObj.element);\n }\n if (this.activeEle) {\n this.activeEle = null;\n }\n this.popObj = null;\n this.tbarAlign = null;\n this.tbarItemsCol = [];\n this.remove(this.element, 'e-toolpop');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(' '));\n }\n this.element.removeAttribute('style');\n ['aria-disabled', 'aria-orientation', 'role'].forEach(function (attrb) {\n return _this.element.removeAttribute(attrb);\n });\n _super.prototype.destroy.call(this);\n };\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.preRender = function () {\n var eventArgs = {\n enableCollision: this.enableCollision,\n scrollStep: this.scrollStep\n };\n this.trigger('beforeCreate', eventArgs);\n this.enableCollision = eventArgs.enableCollision;\n this.scrollStep = eventArgs.scrollStep;\n this.scrollModule = null;\n this.popObj = null;\n this.tempId = [];\n this.tbarItemsCol = this.items;\n this.isVertical = this.element.classList.contains(CLS_VERTICAL) ? true : false;\n this.isExtendedOpen = false;\n this.popupPriCount = 0;\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL);\n }\n };\n Toolbar.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n window.addEventListener('resize', this.resizeContext);\n window.addEventListener('orientationchange', this.orientationChangeContext);\n if (this.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n };\n Toolbar.prototype.wireKeyboardEvent = function () {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs\n });\n EventHandler.add(this.element, 'keydown', this.docKeyDown, this);\n this.updateTabIndex('0');\n };\n Toolbar.prototype.updateTabIndex = function (tabIndex) {\n var ele = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n if (!isNOU(ele) && !isNOU(ele.firstElementChild)) {\n var dataTabIndex = ele.firstElementChild.getAttribute('data-tabindex');\n if (dataTabIndex && dataTabIndex === '-1' && ele.firstElementChild.tagName !== 'INPUT') {\n ele.firstElementChild.setAttribute('tabindex', tabIndex);\n }\n }\n };\n Toolbar.prototype.unwireKeyboardEvent = function () {\n if (this.keyModule) {\n EventHandler.remove(this.element, 'keydown', this.docKeyDown);\n this.keyModule.destroy();\n this.keyModule = null;\n }\n };\n Toolbar.prototype.docKeyDown = function (e) {\n if (e.target.tagName === 'INPUT') {\n return;\n }\n var popCheck = !isNOU(this.popObj) && isVisible(this.popObj.element) && this.overflowMode !== 'Extended';\n if (e.keyCode === 9 && e.target.classList.contains('e-hor-nav') === true && popCheck) {\n this.popObj.hide({\n name: 'FadeOut',\n duration: 100\n });\n }\n var keyCheck = e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 35 || e.keyCode === 36;\n if (keyCheck) {\n e.preventDefault();\n }\n };\n Toolbar.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n this.destroyScroll();\n this.unwireKeyboardEvent();\n window.removeEventListener('resize', this.resizeContext);\n window.removeEventListener('orientationchange', this.orientationChangeContext);\n document.removeEventListener('scroll', this.clickEvent);\n document.removeEventListener('click', this.scrollEvent);\n this.scrollEvent = null;\n this.clickEvent = null;\n };\n Toolbar.prototype.clearProperty = function () {\n this.tbarEle = [];\n this.tbarAlgEle = {\n lefts: [],\n centers: [],\n rights: []\n };\n };\n Toolbar.prototype.docEvent = function (e) {\n var popEle = closest(e.target, '.e-popup');\n if (this.popObj && isVisible(this.popObj.element) && !popEle && this.overflowMode === 'Popup') {\n this.popObj.hide({\n name: 'FadeOut',\n duration: 100\n });\n }\n };\n Toolbar.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n if (this.tbarAlign) {\n this.add(this.scrollModule.element, CLS_TBARPOS);\n }\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Toolbar.prototype.destroyItems = function () {\n if (this.element) {\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach(function (el) {\n detach(el);\n });\n }\n if (this.tbarAlign) {\n var tbarItems = this.element.querySelector('.' + CLS_ITEMS);\n [].slice.call(tbarItems.children).forEach(function (el) {\n detach(el);\n });\n this.tbarAlign = false;\n this.remove(tbarItems, CLS_TBARPOS);\n }\n this.clearProperty();\n };\n Toolbar.prototype.destroyMode = function () {\n if (this.scrollModule) {\n this.remove(this.scrollModule.element, CLS_RTL);\n this.destroyScroll();\n }\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n this.remove(this.element, CLS_EXTEANDABLE_TOOLBAR);\n var tempEle = this.element.querySelector('.e-toolbar-multirow');\n if (tempEle) {\n this.remove(tempEle, CLS_MULTIROW);\n }\n if (this.popObj) {\n this.popupRefresh(this.popObj.element, true);\n }\n };\n Toolbar.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Toolbar.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n Toolbar.prototype.elementFocus = function (ele) {\n var fChild = ele.firstElementChild;\n if (fChild) {\n fChild.focus();\n this.activeEleSwitch(ele);\n } else {\n ele.focus();\n }\n };\n Toolbar.prototype.clstElement = function (tbrNavChk, trgt) {\n var clst;\n if (tbrNavChk && this.popObj && isVisible(this.popObj.element)) {\n clst = this.popObj.element.querySelector('.' + CLS_ITEM);\n } else if (this.element === trgt || tbrNavChk) {\n clst = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n } else {\n clst = closest(trgt, '.' + CLS_ITEM);\n }\n return clst;\n };\n Toolbar.prototype.keyHandling = function (clst, e, trgt, navChk, scrollChk) {\n var popObj = this.popObj;\n var rootEle = this.element;\n var popAnimate = {\n name: 'FadeOut',\n duration: 100\n };\n var value = e.action === 'moveUp' ? 'previous' : 'next';\n var ele;\n var nodes;\n switch (e.action) {\n case 'moveRight':\n if (this.isVertical) {\n return;\n }\n if (rootEle === trgt) {\n this.elementFocus(clst);\n } else if (!navChk) {\n this.eleFocus(clst, 'next');\n }\n break;\n case 'moveLeft':\n if (this.isVertical) {\n return;\n }\n if (!navChk) {\n this.eleFocus(clst, 'previous');\n }\n break;\n case 'home':\n case 'end':\n if (clst) {\n var popupCheck = closest(clst, '.e-popup');\n var extendedPopup = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && extendedPopup && extendedPopup.classList.contains('e-popup-open')) {\n popupCheck = e.action === 'end' ? extendedPopup : null;\n }\n if (popupCheck) {\n if (isVisible(this.popObj.element)) {\n nodes = [].slice.call(popupCheck.children);\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n } else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n } else {\n nodes = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')');\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n } else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n if (ele) {\n this.elementFocus(ele);\n }\n }\n break;\n case 'moveUp':\n case 'moveDown':\n if (!this.isVertical) {\n if (popObj && closest(trgt, '.e-popup')) {\n var popEle = popObj.element;\n var popFrstEle = popEle.firstElementChild;\n if (value === 'previous' && popFrstEle === clst) {\n popEle.lastElementChild.firstChild.focus();\n } else if (value === 'next' && popEle.lastElementChild === clst) {\n popFrstEle.firstChild.focus();\n } else {\n this.eleFocus(clst, value);\n }\n } else if (e.action === 'moveDown' && popObj && isVisible(popObj.element)) {\n this.elementFocus(clst);\n }\n } else {\n if (e.action === 'moveUp') {\n this.eleFocus(clst, 'previous');\n } else {\n this.eleFocus(clst, 'next');\n }\n }\n break;\n case 'tab':\n if (!scrollChk && !navChk) {\n var ele_1 = clst.firstElementChild;\n if (rootEle === trgt) {\n if (this.activeEle) {\n this.activeEle.focus();\n } else {\n this.activeEleRemove(ele_1);\n ele_1.focus();\n }\n }\n }\n break;\n case 'popupClose':\n if (popObj && this.overflowMode !== 'Extended') {\n popObj.hide(popAnimate);\n }\n break;\n case 'popupOpen':\n if (!navChk) {\n return;\n }\n if (popObj && !isVisible(popObj.element)) {\n popObj.element.style.top = rootEle.offsetHeight + 'px';\n popObj.show({\n name: 'FadeIn',\n duration: 100\n });\n } else {\n popObj.hide(popAnimate);\n }\n break;\n }\n };\n Toolbar.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n if (trgt.tagName === 'INPUT' || trgt.tagName === 'TEXTAREA' || this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n e.preventDefault();\n var tbrNavChk = trgt.classList.contains(CLS_TBARNAV);\n var tbarScrollChk = trgt.classList.contains(CLS_TBARSCRLNAV);\n var clst = this.clstElement(tbrNavChk, trgt);\n if (clst || tbarScrollChk) {\n this.keyHandling(clst, e, trgt, tbrNavChk, tbarScrollChk);\n }\n };\n /**\n * Specifies the value to disable/enable the Toolbar component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Toolbar will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Toolbar.prototype.disable = function (value) {\n var rootEle = this.element;\n if (value) {\n rootEle.classList.add(CLS_DISABLE);\n } else {\n rootEle.classList.remove(CLS_DISABLE);\n }\n if (this.activeEle) {\n this.activeEle.setAttribute('tabindex', this.activeEle.getAttribute('data-tabindex'));\n }\n if (this.scrollModule) {\n this.scrollModule.disable(value);\n }\n if (this.popObj) {\n if (isVisible(this.popObj.element) && this.overflowMode !== 'Extended') {\n this.popObj.hide();\n }\n rootEle.querySelector('#' + rootEle.id + '_nav').setAttribute('tabindex', !value ? '0' : '-1');\n }\n };\n Toolbar.prototype.eleContains = function (el) {\n return el.classList.contains(CLS_SEPARATOR) || el.classList.contains(CLS_DISABLE) || el.getAttribute('disabled') || el.classList.contains(CLS_HIDDEN) || !isVisible(el) || !el.classList.contains(CLS_ITEM);\n };\n Toolbar.prototype.focusFirstVisibleEle = function (nodes) {\n var element;\n var index = 0;\n while (index < nodes.length) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE)) {\n return ele;\n }\n index++;\n }\n return element;\n };\n Toolbar.prototype.focusLastVisibleEle = function (nodes) {\n var element;\n var index = nodes.length - 1;\n while (index >= 0) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE)) {\n return ele;\n }\n index--;\n }\n return element;\n };\n Toolbar.prototype.eleFocus = function (closest, pos) {\n var sib = Object(closest)[pos + 'ElementSibling'];\n if (sib) {\n var skipEle = this.eleContains(sib);\n if (skipEle) {\n this.eleFocus(sib, pos);\n return;\n }\n this.elementFocus(sib);\n } else if (this.tbarAlign) {\n var elem = Object(closest.parentElement)[pos + 'ElementSibling'];\n if (!isNOU(elem) && elem.children.length === 0) {\n elem = Object(elem)[pos + 'ElementSibling'];\n }\n if (!isNOU(elem) && elem.children.length > 0) {\n if (pos === 'next') {\n var el = elem.querySelector('.' + CLS_ITEM);\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n } else {\n el.firstElementChild.focus();\n this.activeEleSwitch(el);\n }\n } else {\n var el = elem.lastElementChild;\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n } else {\n this.elementFocus(el);\n }\n }\n }\n } else if (!isNOU(closest)) {\n var tbrItems = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')' + ':not(.' + CLS_DISABLE + ')' + ':not(.' + CLS_HIDDEN + ')');\n if (pos === 'next' && tbrItems) {\n this.elementFocus(tbrItems[0]);\n } else if (pos === 'previous' && tbrItems) {\n this.elementFocus(tbrItems[tbrItems.length - 1]);\n }\n }\n };\n Toolbar.prototype.clickHandler = function (e) {\n var _this = this;\n var trgt = e.target;\n var ele = this.element;\n var isPopupElement = !isNOU(closest(trgt, '.' + CLS_POPUPCLASS));\n var clsList = trgt.classList;\n var popupNav = closest(trgt, '.' + CLS_TBARNAV);\n if (!popupNav) {\n popupNav = trgt;\n }\n if (!ele.children[0].classList.contains('e-hscroll') && !ele.children[0].classList.contains('e-vscroll') && clsList.contains(CLS_TBARNAV)) {\n clsList = trgt.querySelector('.e-icons').classList;\n }\n if (clsList.contains(CLS_POPUPICON) || clsList.contains(CLS_POPUPDOWN)) {\n this.popupClickHandler(ele, popupNav, CLS_RTL);\n }\n var itemObj;\n var clst = closest(e.target, '.' + CLS_ITEM);\n if ((isNOU(clst) || clst.classList.contains(CLS_DISABLE)) && !popupNav.classList.contains(CLS_TBARNAV)) {\n return;\n }\n if (clst) {\n var tempItem = this.items[this.tbarEle.indexOf(clst)];\n itemObj = tempItem;\n }\n var eventArgs = {\n originalEvent: e,\n item: itemObj\n };\n var isClickBinded = itemObj && !isNOU(itemObj.click) && typeof itemObj.click == 'object' ? !isNOU(itemObj.click.observers) && itemObj.click.observers.length > 0 : !isNOU(itemObj) && !isNOU(itemObj.click);\n if (isClickBinded) {\n this.trigger('items[' + this.tbarEle.indexOf(clst) + '].click', eventArgs);\n }\n if (!eventArgs.cancel) {\n this.trigger('clicked', eventArgs, function (clickedArgs) {\n if (!isNOU(_this.popObj) && isPopupElement && !clickedArgs.cancel && _this.overflowMode === 'Popup' && clickedArgs.item && clickedArgs.item.type !== 'Input') {\n _this.popObj.hide({\n name: 'FadeOut',\n duration: 100\n });\n }\n });\n }\n };\n Toolbar.prototype.popupClickHandler = function (ele, popupNav, CLS_RTL) {\n var popObj = this.popObj;\n if (isVisible(popObj.element)) {\n popupNav.classList.remove(CLS_TBARNAVACT);\n popObj.hide({\n name: 'FadeOut',\n duration: 100\n });\n } else {\n if (ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = true;\n popObj.position = {\n X: 'left',\n Y: 'top'\n };\n }\n if (popObj.offsetX === 0 && !ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = false;\n popObj.position = {\n X: 'right',\n Y: 'top'\n };\n }\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '0px';\n popObj.width = this.getToolbarPopupWidth(this.element);\n }\n popObj.dataBind();\n popObj.refreshPosition();\n popObj.element.style.top = this.getElementOffsetY() + 'px';\n popupNav.classList.add(CLS_TBARNAVACT);\n popObj.show({\n name: 'FadeIn',\n duration: 100\n });\n }\n };\n Toolbar.prototype.getToolbarPopupWidth = function (ele) {\n var eleStyles = window.getComputedStyle(ele);\n return parseFloat(eleStyles.width) + parseFloat(eleStyles.borderRightWidth) * 2;\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.clickEvent = this.docEvent.bind(this);\n this.scrollEvent = this.docEvent.bind(this);\n this.renderComplete();\n if (this.isReact && this.portals && this.portals.length > 0) {\n this.renderReactTemplates(function () {\n _this.refreshOverflow();\n });\n }\n };\n Toolbar.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n if (Browser.info.name !== 'msie' || this.height !== 'auto' || this.overflowMode === 'MultiRow') {\n setStyle(this.element, {\n 'height': height\n });\n }\n setStyle(this.element, {\n 'width': width\n });\n var ariaAttr = {\n 'role': 'toolbar',\n 'aria-disabled': 'false',\n 'aria-orientation': !this.isVertical ? 'horizontal' : 'vertical'\n };\n attributes(this.element, ariaAttr);\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Toolbar.prototype.renderControl = function () {\n var ele = this.element;\n this.trgtEle = ele.children.length > 0 ? ele.querySelector('div') : null;\n this.tbarAlgEle = {\n lefts: [],\n centers: [],\n rights: []\n };\n this.renderItems();\n this.renderLayout();\n };\n Toolbar.prototype.renderLayout = function () {\n this.renderOverflowMode();\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.popObj.element.childElementCount > 1 && this.checkPopupRefresh(this.element, this.popObj.element)) {\n this.popupRefresh(this.popObj.element, false);\n }\n this.separator();\n };\n Toolbar.prototype.itemsAlign = function (items, itemEleDom) {\n var innerItem;\n var innerPos;\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n for (var i = 0; i < items.length; i++) {\n innerItem = this.renderSubComponent(items[parseInt(i.toString(), 10)], i);\n if (this.tbarEle.indexOf(innerItem) === -1) {\n this.tbarEle.push(innerItem);\n }\n if (!this.tbarAlign) {\n this.tbarItemAlign(items[parseInt(i.toString(), 10)], itemEleDom, i);\n }\n innerPos = itemEleDom.querySelector('.e-toolbar-' + items[parseInt(i.toString(), 10)].align.toLowerCase());\n if (innerPos) {\n if (!(items[parseInt(i.toString(), 10)].showAlwaysInPopup && items[parseInt(i.toString(), 10)].overflow !== 'Show')) {\n this.tbarAlgEle[(items[parseInt(i.toString(), 10)].align + 's').toLowerCase()].push(innerItem);\n }\n innerPos.appendChild(innerItem);\n } else {\n itemEleDom.appendChild(innerItem);\n }\n }\n if (this.isReact) {\n var portals = 'portals';\n this.notify('render-react-toolbar-template', this[\"\" + portals]);\n this.renderReactTemplates();\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.changeOrientation = function () {\n var ele = this.element;\n if (this.isVertical) {\n ele.classList.remove(CLS_VERTICAL);\n this.isVertical = false;\n if (this.height === 'auto' || this.height === '100%') {\n ele.style.height = this.height;\n }\n ele.setAttribute('aria-orientation', 'horizontal');\n } else {\n ele.classList.add(CLS_VERTICAL);\n this.isVertical = true;\n ele.setAttribute('aria-orientation', 'vertical');\n setStyle(this.element, {\n 'height': formatUnit(this.height),\n 'width': formatUnit(this.width)\n });\n }\n this.destroyMode();\n this.refreshOverflow();\n };\n Toolbar.prototype.initScroll = function (element, innerItems) {\n if (!this.scrollModule && this.checkOverflow(element, innerItems[0])) {\n if (this.tbarAlign) {\n this.element.querySelector('.' + CLS_ITEMS + ' .' + CLS_TBARCENTER).removeAttribute('style');\n }\n if (this.isVertical) {\n this.scrollModule = new VScroll({\n scrollStep: this.scrollStep,\n enableRtl: this.enableRtl\n }, innerItems[0]);\n } else {\n this.scrollModule = new HScroll({\n scrollStep: this.scrollStep,\n enableRtl: this.enableRtl\n }, innerItems[0]);\n }\n if (this.cssClass) {\n addClass([innerItems[0]], this.cssClass.split(' '));\n }\n var scrollEle = this.scrollModule.element.querySelector('.' + CLS_HSCROLLBAR + ', .' + 'e-vscroll-bar');\n if (scrollEle) {\n scrollEle.removeAttribute('tabindex');\n }\n this.remove(this.scrollModule.element, CLS_TBARPOS);\n setStyle(this.element, {\n overflow: 'hidden'\n });\n }\n };\n Toolbar.prototype.itemWidthCal = function (items) {\n var _this = this;\n var width = 0;\n var style;\n [].slice.call(selectAll('.' + CLS_ITEM, items)).forEach(function (el) {\n if (isVisible(el)) {\n style = window.getComputedStyle(el);\n width += _this.isVertical ? el.offsetHeight : el.offsetWidth;\n width += parseFloat(_this.isVertical ? style.marginTop : style.marginRight);\n width += parseFloat(_this.isVertical ? style.marginBottom : style.marginLeft);\n }\n });\n return width;\n };\n Toolbar.prototype.getScrollCntEle = function (innerItem) {\n var trgClass = this.isVertical ? '.e-vscroll-content' : '.e-hscroll-content';\n return innerItem.querySelector(trgClass);\n };\n Toolbar.prototype.checkOverflow = function (element, innerItem) {\n if (isNOU(element) || isNOU(innerItem) || !isVisible(element)) {\n return false;\n }\n var eleWidth = this.isVertical ? element.offsetHeight : element.offsetWidth;\n var itemWidth = this.isVertical ? innerItem.offsetHeight : innerItem.offsetWidth;\n if (this.tbarAlign || this.scrollModule || eleWidth === itemWidth) {\n itemWidth = this.itemWidthCal(this.scrollModule ? this.getScrollCntEle(innerItem) : innerItem);\n }\n var popNav = element.querySelector('.' + CLS_TBARNAV);\n var scrollNav = element.querySelector('.' + CLS_TBARSCRLNAV);\n var navEleWidth = 0;\n if (popNav) {\n navEleWidth = this.isVertical ? popNav.offsetHeight : popNav.offsetWidth;\n } else if (scrollNav) {\n navEleWidth = this.isVertical ? scrollNav.offsetHeight * 2 : scrollNav.offsetWidth * 2;\n }\n if (eleWidth >= itemWidth && scrollNav) {\n return false;\n } else if (itemWidth > eleWidth - navEleWidth) {\n return true;\n } else {\n return false;\n }\n };\n /**\n * Refresh the whole Toolbar component without re-rendering.\n * - It is used to manually refresh the Toolbar overflow modes such as scrollable, popup, multi row, and extended.\n * - It will refresh the Toolbar component after loading items dynamically.\n *\n * @returns {void}.\n */\n Toolbar.prototype.refreshOverflow = function () {\n this.resize();\n };\n Toolbar.prototype.toolbarAlign = function (innerItems) {\n if (this.tbarAlign) {\n this.add(innerItems, CLS_TBARPOS);\n this.itemPositioning();\n }\n };\n Toolbar.prototype.renderOverflowMode = function () {\n var ele = this.element;\n var innerItems = ele.querySelector('.' + CLS_ITEMS);\n var priorityCheck = this.popupPriCount > 0;\n if (ele && ele.children.length > 0) {\n this.offsetWid = ele.offsetWidth;\n this.remove(this.element, 'e-toolpop');\n if (Browser.info.name === 'msie' && this.height === 'auto') {\n ele.style.height = '';\n }\n switch (this.overflowMode) {\n case 'Scrollable':\n if (isNOU(this.scrollModule)) {\n this.initScroll(ele, [].slice.call(ele.getElementsByClassName(CLS_ITEMS)));\n }\n break;\n case 'Popup':\n this.add(this.element, 'e-toolpop');\n if (this.tbarAlign) {\n this.removePositioning();\n }\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n break;\n case 'MultiRow':\n this.add(innerItems, CLS_MULTIROW);\n if (this.checkOverflow(ele, innerItems) && this.tbarAlign) {\n this.removePositioning();\n this.add(innerItems, CLS_MULTIROWPOS);\n }\n if (ele.style.overflow === 'hidden') {\n ele.style.overflow = '';\n }\n if (Browser.info.name === 'msie' || ele.style.height !== 'auto') {\n ele.style.height = 'auto';\n }\n break;\n case 'Extended':\n this.add(this.element, CLS_EXTEANDABLE_TOOLBAR);\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n }\n }\n };\n Toolbar.prototype.setOverflowAttributes = function (ele) {\n this.createPopupEle(ele, [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, ele)));\n var ariaAttr = {\n 'tabindex': '0',\n 'role': 'button',\n 'aria-haspopup': 'true',\n 'aria-label': 'overflow'\n };\n attributes(this.element.querySelector('.' + CLS_TBARNAV), ariaAttr);\n };\n Toolbar.prototype.separator = function () {\n var element = this.element;\n var eleItem = [].slice.call(element.querySelectorAll('.' + CLS_SEPARATOR));\n var multiVar = element.querySelector('.' + CLS_MULTIROW_SEPARATOR);\n var extendVar = element.querySelector('.' + CLS_EXTENDABLE_SEPARATOR);\n var eleInlineItem = this.overflowMode === 'MultiRow' ? multiVar : extendVar;\n if (eleInlineItem !== null) {\n if (this.overflowMode === 'MultiRow') {\n eleInlineItem.classList.remove(CLS_MULTIROW_SEPARATOR);\n } else if (this.overflowMode === 'Extended') {\n eleInlineItem.classList.remove(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n for (var i = 0; i <= eleItem.length - 1; i++) {\n if (eleItem[parseInt(i.toString(), 10)].offsetLeft < 30 && eleItem[parseInt(i.toString(), 10)].offsetLeft !== 0) {\n if (this.overflowMode === 'MultiRow') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_MULTIROW_SEPARATOR);\n } else if (this.overflowMode === 'Extended') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n }\n };\n Toolbar.prototype.createPopupEle = function (ele, innerEle) {\n var innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var vertical = this.isVertical;\n if (!innerNav) {\n this.createPopupIcon(ele);\n }\n innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var innerNavDom = vertical ? innerNav.offsetHeight : innerNav.offsetWidth;\n var eleWidth = (vertical ? ele.offsetHeight : ele.offsetWidth) - innerNavDom;\n this.element.classList.remove('e-rtl');\n setStyle(this.element, {\n direction: 'initial'\n });\n this.checkPriority(ele, innerEle, eleWidth, true);\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n this.element.style.removeProperty('direction');\n this.createPopup();\n };\n Toolbar.prototype.pushingPoppedEle = function (tbarObj, popupPri, ele, eleHeight, sepHeight) {\n var element = tbarObj.element;\n var poppedEle = [].slice.call(selectAll('.' + CLS_POPUP, element.querySelector('.' + CLS_ITEMS)));\n var nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n var nodeIndex = 0;\n var nodePri = 0;\n poppedEle.forEach(function (el, index) {\n nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n if (el.classList.contains(CLS_TBAROVERFLOW) && nodes.length > 0) {\n if (tbarObj.tbResize && nodes.length > index) {\n ele.insertBefore(el, nodes[parseInt(index.toString(), 10)]);\n ++nodePri;\n } else {\n ele.insertBefore(el, ele.children[nodes.length]);\n ++nodePri;\n }\n } else if (el.classList.contains(CLS_TBAROVERFLOW)) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n } else if (tbarObj.tbResize && el.classList.contains(CLS_POPOVERFLOW) && ele.children.length > 0 && nodes.length === 0) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n } else if (el.classList.contains(CLS_POPOVERFLOW)) {\n popupPri.push(el);\n } else if (tbarObj.tbResize) {\n ele.insertBefore(el, ele.childNodes[nodeIndex + nodePri]);\n ++nodeIndex;\n } else {\n ele.appendChild(el);\n }\n if (el.classList.contains(CLS_SEPARATOR)) {\n setStyle(el, {\n display: '',\n height: sepHeight + 'px'\n });\n } else {\n setStyle(el, {\n display: '',\n height: eleHeight + 'px'\n });\n }\n });\n popupPri.forEach(function (el) {\n ele.appendChild(el);\n });\n var tbarEle = selectAll('.' + CLS_ITEM, element.querySelector('.' + CLS_ITEMS));\n for (var i = tbarEle.length - 1; i >= 0; i--) {\n var tbarElement = tbarEle[parseInt(i.toString(), 10)];\n if (tbarElement.classList.contains(CLS_SEPARATOR) && this.overflowMode !== 'Extended') {\n setStyle(tbarElement, {\n display: 'none'\n });\n } else {\n break;\n }\n }\n };\n Toolbar.prototype.createPopup = function () {\n var element = this.element;\n var sepHeight;\n var sepItem;\n if (this.overflowMode === 'Extended') {\n sepItem = element.querySelector('.' + CLS_SEPARATOR);\n sepHeight = element.style.height === 'auto' || element.style.height === '' ? null : sepItem && sepItem.offsetHeight;\n }\n var eleItem = element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_POPUP + ')');\n var eleHeight = element.style.height === 'auto' || element.style.height === '' ? null : eleItem && eleItem.offsetHeight;\n var ele;\n var popupPri = [];\n if (select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element)) {\n ele = select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element);\n } else {\n var extendEle = this.createElement('div', {\n id: element.id + '_popup',\n className: CLS_POPUPCLASS + ' ' + CLS_EXTENDABLECLASS\n });\n var popupEle = this.createElement('div', {\n id: element.id + '_popup',\n className: CLS_POPUPCLASS\n });\n ele = this.overflowMode === 'Extended' ? extendEle : popupEle;\n }\n this.pushingPoppedEle(this, popupPri, ele, eleHeight, sepHeight);\n this.popupInit(element, ele);\n };\n Toolbar.prototype.getElementOffsetY = function () {\n return this.overflowMode === 'Extended' && window.getComputedStyle(this.element).getPropertyValue('box-sizing') === 'border-box' ? this.element.clientHeight : this.element.offsetHeight;\n };\n Toolbar.prototype.popupInit = function (element, ele) {\n if (!this.popObj) {\n element.appendChild(ele);\n if (this.cssClass) {\n addClass([ele], this.cssClass.split(' '));\n }\n setStyle(this.element, {\n overflow: ''\n });\n var popup = new Popup(null, {\n relateTo: this.element,\n offsetY: this.isVertical ? 0 : this.getElementOffsetY(),\n enableRtl: this.enableRtl,\n open: this.popupOpen.bind(this),\n close: this.popupClose.bind(this),\n collision: {\n Y: this.enableCollision ? 'flip' : 'none'\n },\n position: this.enableRtl ? {\n X: 'left',\n Y: 'top'\n } : {\n X: 'right',\n Y: 'top'\n }\n });\n if (this.overflowMode === 'Extended') {\n popup.width = this.getToolbarPopupWidth(this.element);\n popup.offsetX = 0;\n }\n popup.appendTo(ele);\n document.addEventListener('scroll', this.clickEvent);\n document.addEventListener('click', this.scrollEvent);\n if (this.overflowMode !== 'Extended') {\n popup.element.style.maxHeight = popup.element.offsetHeight + 'px';\n }\n if (this.isVertical) {\n popup.element.style.visibility = 'hidden';\n }\n if (this.isExtendedOpen) {\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popupNav.firstElementChild, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.element.querySelector('.' + CLS_EXTENDABLECLASS).classList.add(CLS_POPUPOPEN);\n } else {\n popup.hide();\n }\n this.popObj = popup;\n } else if (this.overflowMode !== 'Extended') {\n var popupEle = this.popObj.element;\n setStyle(popupEle, {\n maxHeight: '',\n display: 'block'\n });\n setStyle(popupEle, {\n maxHeight: popupEle.offsetHeight + 'px',\n display: ''\n });\n }\n };\n Toolbar.prototype.tbarPopupHandler = function (isOpen) {\n if (this.overflowMode === 'Extended') {\n if (isOpen) {\n this.add(this.element, CLS_EXTENDEDPOPOPEN);\n } else {\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupOpen = function (e) {\n var popObj = this.popObj;\n if (!this.isVertical) {\n popObj.offsetY = this.getElementOffsetY();\n popObj.dataBind();\n }\n var popupEle = this.popObj.element;\n var toolEle = this.popObj.element.parentElement;\n var popupNav = toolEle.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'true');\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '';\n } else {\n setStyle(popObj.element, {\n height: 'auto',\n maxHeight: ''\n });\n popObj.element.style.maxHeight = popObj.element.offsetHeight + 'px';\n }\n var popupElePos = popupEle.offsetTop + popupEle.offsetHeight + calculatePosition(toolEle).top;\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.tbarPopupHandler(true);\n var scrollVal = isNOU(window.scrollY) ? 0 : window.scrollY;\n if (!this.isVertical && window.innerHeight + scrollVal < popupElePos && this.element.offsetTop < popupEle.offsetHeight) {\n var overflowHeight = popupEle.offsetHeight - (popupElePos - window.innerHeight - scrollVal + 5);\n popObj.height = overflowHeight + 'px';\n for (var i = 0; i <= popupEle.childElementCount; i++) {\n var ele = popupEle.children[parseInt(i.toString(), 10)];\n if (ele.offsetTop + ele.offsetHeight > overflowHeight) {\n overflowHeight = ele.offsetTop;\n break;\n }\n }\n if (this.overflowMode !== 'Extended') {\n setStyle(popObj.element, {\n maxHeight: overflowHeight + 'px'\n });\n }\n } else if (this.isVertical && this.overflowMode !== 'Extended') {\n var tbEleData = this.element.getBoundingClientRect();\n setStyle(popObj.element, {\n maxHeight: tbEleData.top + this.element.offsetHeight + 'px',\n bottom: 0,\n visibility: ''\n });\n }\n if (popObj) {\n var popupOffset = popupEle.getBoundingClientRect();\n if (popupOffset.right > document.documentElement.clientWidth && popupOffset.width > toolEle.getBoundingClientRect().width) {\n popObj.collision = {\n Y: 'none'\n };\n popObj.dataBind();\n }\n popObj.refreshPosition();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupClose = function (e) {\n var element = this.element;\n var popupNav = element.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'false');\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.remove(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPDOWN], [CLS_POPUPICON]);\n this.tbarPopupHandler(false);\n };\n Toolbar.prototype.checkPriority = function (ele, inEle, eleWidth, pre) {\n var popPriority = this.popupPriCount > 0;\n var len = inEle.length;\n var eleWid = eleWidth;\n var eleOffset;\n var checkoffset;\n var sepCheck = 0;\n var itemCount = 0;\n var itemPopCount = 0;\n var checkClass = function (ele, val) {\n var rVal = false;\n val.forEach(function (cls) {\n if (ele.classList.contains(cls)) {\n rVal = true;\n }\n });\n return rVal;\n };\n for (var i = len - 1; i >= 0; i--) {\n var mrgn = void 0;\n var compuStyle = window.getComputedStyle(inEle[parseInt(i.toString(), 10)]);\n if (this.isVertical) {\n mrgn = parseFloat(compuStyle.marginTop);\n mrgn += parseFloat(compuStyle.marginBottom);\n } else {\n mrgn = parseFloat(compuStyle.marginRight);\n mrgn += parseFloat(compuStyle.marginLeft);\n }\n var fstEleCheck = inEle[parseInt(i.toString(), 10)] === this.tbarEle[0];\n if (fstEleCheck) {\n this.tbarEleMrgn = mrgn;\n }\n eleOffset = this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight : inEle[parseInt(i.toString(), 10)].offsetWidth;\n var eleWid_1 = fstEleCheck ? eleOffset + mrgn : eleOffset;\n if (checkClass(inEle[parseInt(i.toString(), 10)], [CLS_POPPRI]) && popPriority) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], {\n display: 'none',\n minHeight: eleWid_1 + 'px'\n });\n } else {\n setStyle(inEle[parseInt(i.toString(), 10)], {\n display: 'none',\n minWidth: eleWid_1 + 'px'\n });\n }\n itemPopCount++;\n }\n if (this.isVertical) {\n checkoffset = inEle[parseInt(i.toString(), 10)].offsetTop + inEle[parseInt(i.toString(), 10)].offsetHeight + mrgn > eleWidth;\n } else {\n checkoffset = inEle[parseInt(i.toString(), 10)].offsetLeft + inEle[parseInt(i.toString(), 10)].offsetWidth + mrgn > eleWidth;\n }\n if (checkoffset) {\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_SEPARATOR)) {\n if (this.overflowMode === 'Extended') {\n var sepEle = inEle[parseInt(i.toString(), 10)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n itemPopCount++;\n }\n itemCount++;\n } else if (this.overflowMode === 'Popup') {\n if (sepCheck > 0 && itemCount === itemPopCount) {\n var sepEle = inEle[i + itemCount + (sepCheck - 1)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n setStyle(sepEle, {\n display: 'none'\n });\n }\n }\n sepCheck++;\n itemCount = 0;\n itemPopCount = 0;\n }\n } else {\n itemCount++;\n }\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_TBAROVERFLOW) && pre) {\n eleWidth -= (this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight : inEle[parseInt(i.toString(), 10)].offsetWidth) + mrgn;\n } else if (!checkClass(inEle[parseInt(i.toString(), 10)], [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], {\n display: 'none',\n minHeight: eleWid_1 + 'px'\n });\n } else {\n setStyle(inEle[parseInt(i.toString(), 10)], {\n display: 'none',\n minWidth: eleWid_1 + 'px'\n });\n }\n itemPopCount++;\n } else {\n eleWidth -= (this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight : inEle[parseInt(i.toString(), 10)].offsetWidth) + mrgn;\n }\n }\n }\n if (pre) {\n var popedEle = selectAll('.' + CLS_ITEM + ':not(.' + CLS_POPUP + ')', this.element);\n this.checkPriority(ele, popedEle, eleWid, false);\n }\n };\n Toolbar.prototype.createPopupIcon = function (element) {\n var id = element.id.concat('_nav');\n var className = 'e-' + element.id.concat('_nav ' + CLS_POPUPNAV);\n className = this.overflowMode === 'Extended' ? className + ' ' + CLS_EXTENDPOPUP : className;\n var nav = this.createElement('div', {\n id: id,\n className: className\n });\n if (Browser.info.name === 'msie' || Browser.info.name === 'edge') {\n nav.classList.add('e-ie-align');\n }\n var navItem = this.createElement('div', {\n className: CLS_POPUPDOWN + ' e-icons'\n });\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n nav.setAttribute('role', 'button');\n element.appendChild(nav);\n };\n // eslint-disable-next-line max-len\n Toolbar.prototype.tbarPriRef = function (inEle, indx, sepPri, el, des, elWid, wid, ig, eleStyles) {\n var ignoreCount = ig;\n var popEle = this.popObj.element;\n var query = '.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_TBAROVERFLOW + ')';\n var priEleCnt = selectAll('.' + CLS_POPUP + ':not(.' + CLS_TBAROVERFLOW + ')', popEle).length;\n var checkClass = function (ele, val) {\n return ele.classList.contains(val);\n };\n if (selectAll(query, inEle).length === 0) {\n var eleSep = inEle.children[indx - (indx - sepPri) - 1];\n var ignoreCheck = !isNOU(eleSep) && checkClass(eleSep, CLS_TBARIGNORE);\n if (!isNOU(eleSep) && checkClass(eleSep, CLS_SEPARATOR) && !isVisible(eleSep) || ignoreCheck) {\n eleSep.style.display = 'unset';\n var eleSepWidth = eleSep.offsetWidth + parseFloat(window.getComputedStyle(eleSep).marginRight) * 2;\n var prevSep = eleSep.previousElementSibling;\n if (elWid + eleSepWidth < wid || des) {\n inEle.insertBefore(el, inEle.children[indx + ignoreCount - (indx - sepPri)]);\n if (!isNOU(prevSep)) {\n prevSep.style.display = '';\n }\n } else {\n setStyle(el, eleStyles);\n if (prevSep.classList.contains(CLS_SEPARATOR)) {\n prevSep.style.display = 'none';\n }\n }\n eleSep.style.display = '';\n } else {\n inEle.insertBefore(el, inEle.children[indx + ignoreCount - (indx - sepPri)]);\n }\n } else {\n inEle.insertBefore(el, inEle.children[indx + ignoreCount - priEleCnt]);\n }\n };\n Toolbar.prototype.popupRefresh = function (popupEle, destroy) {\n var _this = this;\n var ele = this.element;\n var isVer = this.isVertical;\n var innerEle = ele.querySelector('.' + CLS_ITEMS);\n var popNav = ele.querySelector('.' + CLS_TBARNAV);\n if (isNOU(popNav)) {\n return;\n }\n innerEle.removeAttribute('style');\n popupEle.style.display = 'block';\n var dimension;\n if (isVer) {\n dimension = ele.offsetHeight - (popNav.offsetHeight + innerEle.offsetHeight);\n } else {\n dimension = ele.offsetWidth - (popNav.offsetWidth + innerEle.offsetWidth);\n }\n var popupEleWidth = 0;\n [].slice.call(popupEle.children).forEach(function (el) {\n popupEleWidth += _this.popupEleWidth(el);\n setStyle(el, {\n 'position': ''\n });\n });\n if (dimension + (isVer ? popNav.offsetHeight : popNav.offsetWidth) > popupEleWidth && this.popupPriCount === 0) {\n destroy = true;\n }\n this.popupEleRefresh(dimension, popupEle, destroy);\n popupEle.style.display = '';\n if (popupEle.children.length === 0 && popNav && this.popObj) {\n detach(popNav);\n popNav = null;\n this.popObj.destroy();\n detach(this.popObj.element);\n this.popObj = null;\n }\n };\n Toolbar.prototype.ignoreEleFetch = function (index, innerEle) {\n var ignoreEle = [].slice.call(innerEle.querySelectorAll('.' + CLS_TBARIGNORE));\n var ignoreInx = [];\n var count = 0;\n if (ignoreEle.length > 0) {\n ignoreEle.forEach(function (ele) {\n ignoreInx.push([].slice.call(innerEle.children).indexOf(ele));\n });\n } else {\n return 0;\n }\n ignoreInx.forEach(function (val) {\n if (val <= index) {\n count++;\n }\n });\n return count;\n };\n Toolbar.prototype.checkPopupRefresh = function (root, popEle) {\n popEle.style.display = 'block';\n var elWid = this.popupEleWidth(popEle.firstElementChild);\n popEle.firstElementChild.style.removeProperty('Position');\n var tbarWidth = root.offsetWidth - root.querySelector('.' + CLS_TBARNAV).offsetWidth;\n var tbarItemsWid = root.querySelector('.' + CLS_ITEMS).offsetWidth;\n popEle.style.removeProperty('display');\n if (tbarWidth > elWid + tbarItemsWid) {\n return true;\n }\n return false;\n };\n Toolbar.prototype.popupEleWidth = function (el) {\n el.style.position = 'absolute';\n var elWidth = this.isVertical ? el.offsetHeight : el.offsetWidth;\n var btnText = el.querySelector('.' + CLS_TBARBTNTEXT);\n if (el.classList.contains('e-tbtn-align') || el.classList.contains(CLS_TBARTEXT)) {\n var btn = el.children[0];\n if (!isNOU(btnText) && el.classList.contains(CLS_TBARTEXT)) {\n btnText.style.display = 'none';\n } else if (!isNOU(btnText) && el.classList.contains(CLS_POPUPTEXT)) {\n btnText.style.display = 'block';\n }\n btn.style.minWidth = '0%';\n elWidth = parseFloat(!this.isVertical ? el.style.minWidth : el.style.minHeight);\n btn.style.minWidth = '';\n btn.style.minHeight = '';\n if (!isNOU(btnText)) {\n btnText.style.display = '';\n }\n }\n return elWidth;\n };\n Toolbar.prototype.popupEleRefresh = function (width, popupEle, destroy) {\n var popPriority = this.popupPriCount > 0;\n var eleSplice = this.tbarEle;\n var priEleCnt;\n var index;\n var innerEle = this.element.querySelector('.' + CLS_ITEMS);\n var ignoreCount = 0;\n var _loop_1 = function (el) {\n if (el.classList.contains(CLS_POPPRI) && popPriority && !destroy) {\n return \"continue\";\n }\n var elWidth = this_1.popupEleWidth(el);\n if (el === this_1.tbarEle[0]) {\n elWidth += this_1.tbarEleMrgn;\n }\n el.style.position = '';\n if (elWidth < width || destroy) {\n var inlineStyles = {\n minWidth: el.style.minWidth,\n height: el.style.height,\n minHeight: el.style.minHeight\n };\n setStyle(el, {\n minWidth: '',\n height: '',\n minHeight: ''\n });\n if (!el.classList.contains(CLS_POPOVERFLOW)) {\n el.classList.remove(CLS_POPUP);\n }\n index = this_1.tbarEle.indexOf(el);\n if (this_1.tbarAlign) {\n var pos = this_1.items[parseInt(index.toString(), 10)].align;\n index = this_1.tbarAlgEle[(pos + 's').toLowerCase()].indexOf(el);\n eleSplice = this_1.tbarAlgEle[(pos + 's').toLowerCase()];\n innerEle = this_1.element.querySelector('.' + CLS_ITEMS + ' .' + 'e-toolbar-' + pos.toLowerCase());\n }\n var sepBeforePri_1 = 0;\n if (this_1.overflowMode !== 'Extended') {\n eleSplice.slice(0, index).forEach(function (el) {\n if (el.classList.contains(CLS_TBAROVERFLOW) || el.classList.contains(CLS_SEPARATOR)) {\n if (el.classList.contains(CLS_SEPARATOR)) {\n el.style.display = '';\n width -= el.offsetWidth;\n }\n sepBeforePri_1++;\n }\n });\n }\n ignoreCount = this_1.ignoreEleFetch(index, innerEle);\n if (el.classList.contains(CLS_TBAROVERFLOW)) {\n this_1.tbarPriRef(innerEle, index, sepBeforePri_1, el, destroy, elWidth, width, ignoreCount, inlineStyles);\n width -= el.offsetWidth;\n } else if (index === 0) {\n innerEle.insertBefore(el, innerEle.firstChild);\n width -= el.offsetWidth;\n } else {\n priEleCnt = selectAll('.' + CLS_TBAROVERFLOW, this_1.popObj.element).length;\n innerEle.insertBefore(el, innerEle.children[index + ignoreCount - priEleCnt]);\n width -= el.offsetWidth;\n }\n el.style.height = '';\n } else {\n return \"break\";\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = [].slice.call(popupEle.children); _i < _a.length; _i++) {\n var el = _a[_i];\n var state_1 = _loop_1(el);\n if (state_1 === \"break\") break;\n }\n var checkOverflow = this.checkOverflow(this.element, this.element.getElementsByClassName(CLS_ITEMS)[0]);\n if (checkOverflow && !destroy) {\n this.renderOverflowMode();\n }\n };\n Toolbar.prototype.removePositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n this.remove(item, CLS_TBARPOS);\n var innerItem = [].slice.call(item.childNodes);\n innerItem[1].removeAttribute('style');\n innerItem[2].removeAttribute('style');\n };\n Toolbar.prototype.refreshPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n this.add(item, CLS_TBARPOS);\n this.itemPositioning();\n };\n Toolbar.prototype.itemPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n var margin;\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n var innerItem;\n if (this.scrollModule) {\n var trgClass = this.isVertical ? CLS_VSCROLLCNT : CLS_HSCROLLCNT;\n innerItem = [].slice.call(item.querySelector('.' + trgClass).children);\n } else {\n innerItem = [].slice.call(item.childNodes);\n }\n if (this.isVertical) {\n margin = innerItem[0].offsetHeight + innerItem[2].offsetHeight;\n } else {\n margin = innerItem[0].offsetWidth + innerItem[2].offsetWidth;\n }\n var tbarWid = this.isVertical ? this.element.offsetHeight : this.element.offsetWidth;\n if (popupNav) {\n tbarWid -= this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth;\n var popWid = (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth) + 'px';\n innerItem[2].removeAttribute('style');\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[2].style.top = popWid;\n } else {\n innerItem[2].style.bottom = popWid;\n }\n } else {\n if (this.enableRtl) {\n innerItem[2].style.left = popWid;\n } else {\n innerItem[2].style.right = popWid;\n }\n }\n }\n if (tbarWid <= margin) {\n return;\n }\n var value = (tbarWid - margin - (!this.isVertical ? innerItem[1].offsetWidth : innerItem[1].offsetHeight)) / 2;\n innerItem[1].removeAttribute('style');\n var mrgn = (!this.isVertical ? innerItem[0].offsetWidth : innerItem[0].offsetHeight) + value + 'px';\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[1].style.marginBottom = mrgn;\n } else {\n innerItem[1].style.marginTop = mrgn;\n }\n } else {\n if (this.enableRtl) {\n innerItem[1].style.marginRight = mrgn;\n } else {\n innerItem[1].style.marginLeft = mrgn;\n }\n }\n };\n Toolbar.prototype.tbarItemAlign = function (item, itemEle, pos) {\n var _this = this;\n if (item.showAlwaysInPopup && item.overflow !== 'Show') {\n return;\n }\n var alignDiv = [];\n alignDiv.push(this.createElement('div', {\n className: CLS_TBARLEFT,\n attrs: {\n role: 'group'\n }\n }));\n alignDiv.push(this.createElement('div', {\n className: CLS_TBARCENTER,\n attrs: {\n role: 'group'\n }\n }));\n alignDiv.push(this.createElement('div', {\n className: CLS_TBARRIGHT,\n attrs: {\n role: 'group'\n }\n }));\n if (pos === 0 && item.align !== 'Left') {\n alignDiv.forEach(function (ele) {\n itemEle.appendChild(ele);\n });\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n } else if (item.align !== 'Left') {\n var alignEle = itemEle.childNodes;\n var leftAlign_1 = alignDiv[0];\n [].slice.call(alignEle).forEach(function (el) {\n _this.tbarAlgEle.lefts.push(el);\n leftAlign_1.appendChild(el);\n });\n itemEle.appendChild(leftAlign_1);\n itemEle.appendChild(alignDiv[1]);\n itemEle.appendChild(alignDiv[2]);\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n };\n Toolbar.prototype.ctrlTemplate = function () {\n var _this = this;\n this.ctrlTem = this.trgtEle.cloneNode(true);\n this.add(this.trgtEle, CLS_ITEMS);\n this.tbarEle = [];\n var innerEle = [].slice.call(this.trgtEle.children);\n innerEle.forEach(function (ele) {\n if (ele.tagName === 'DIV') {\n _this.tbarEle.push(ele);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n _this.add(ele, CLS_ITEM);\n }\n });\n };\n Toolbar.prototype.renderItems = function () {\n var ele = this.element;\n var items = this.items;\n if (this.trgtEle != null) {\n this.ctrlTemplate();\n } else if (ele && items.length > 0) {\n var itemEleDom = void 0;\n if (ele && ele.children.length > 0) {\n itemEleDom = ele.querySelector('.' + CLS_ITEMS);\n }\n if (!itemEleDom) {\n itemEleDom = this.createElement('div', {\n className: CLS_ITEMS\n });\n }\n this.itemsAlign(items, itemEleDom);\n ele.appendChild(itemEleDom);\n }\n };\n Toolbar.prototype.setAttr = function (attr, element) {\n var key = Object.keys(attr);\n var keyVal;\n for (var i = 0; i < key.length; i++) {\n keyVal = key[parseInt(i.toString(), 10)];\n if (keyVal === 'class') {\n this.add(element, attr[\"\" + keyVal]);\n } else {\n element.setAttribute(keyVal, attr[\"\" + keyVal]);\n }\n }\n };\n /**\n * Enables or disables the specified Toolbar item.\n *\n * @param {number|HTMLElement|NodeList} items - DOM element or an array of items to be enabled or disabled.\n * @param {boolean} isEnable - Boolean value that determines whether the command should be enabled or disabled.\n * By default, `isEnable` is set to true.\n * @returns {void}.\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n var elements = items;\n var len = elements.length;\n var ele;\n if (isNOU(isEnable)) {\n isEnable = true;\n }\n var enable = function (isEnable, ele) {\n if (isEnable) {\n ele.classList.remove(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n } else {\n ele.classList.add(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'true');\n }\n }\n };\n if (!isNOU(len) && len >= 1) {\n for (var a = 0, element = [].slice.call(elements); a < len; a++) {\n var itemElement = element[parseInt(a.toString(), 10)];\n if (typeof itemElement === 'number') {\n ele = this.getElementByIndex(itemElement);\n if (isNOU(ele)) {\n return;\n } else {\n elements[parseInt(a.toString(), 10)] = ele;\n }\n } else {\n ele = itemElement;\n }\n enable(isEnable, ele);\n }\n if (isEnable) {\n removeClass(elements, CLS_DISABLE);\n } else {\n addClass(elements, CLS_DISABLE);\n }\n } else {\n if (typeof elements === 'number') {\n ele = this.getElementByIndex(elements);\n if (isNOU(ele)) {\n return;\n }\n } else {\n ele = items;\n }\n enable(isEnable, ele);\n }\n };\n Toolbar.prototype.getElementByIndex = function (index) {\n if (this.tbarEle[parseInt(index.toString(), 10)]) {\n return this.tbarEle[parseInt(index.toString(), 10)];\n }\n return null;\n };\n /**\n * Adds new items to the Toolbar that accepts an array as Toolbar items.\n *\n * @param {ItemModel[]} items - DOM element or an array of items to be added to the Toolbar.\n * @param {number} index - Number value that determines where the command is to be added. By default, index is 0.\n * @returns {void}.\n */\n Toolbar.prototype.addItems = function (items, index) {\n var innerItems;\n this.extendedOpen();\n var itemsDiv = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(itemsDiv)) {\n this.itemsRerender(items);\n return;\n }\n var innerEle;\n var itemAgn = 'Left';\n if (isNOU(index)) {\n index = 0;\n }\n items.forEach(function (e) {\n if (!isNOU(e.align) && e.align !== 'Left' && itemAgn === 'Left') {\n itemAgn = e.align;\n }\n });\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n if (isNOU(item.type)) {\n item.type = 'Button';\n }\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n item.align = itemAgn;\n innerEle = this.renderSubComponent(item, index);\n if (this.tbarEle.length >= index && innerItems.length >= 0) {\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var algIndex = item.align[0] === 'L' ? 0 : item.align[0] === 'C' ? 1 : 2;\n var ele = void 0;\n if (!this.tbarAlign && itemAgn !== 'Left') {\n this.tbarItemAlign(item, itemsDiv, 1);\n this.tbarAlign = true;\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.appendChild(innerEle);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].push(innerEle);\n this.refreshPositioning();\n } else if (this.tbarAlign) {\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.insertBefore(innerEle, ele.children[parseInt(index.toString(), 10)]);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].splice(index, 0, innerEle);\n this.refreshPositioning();\n } else if (innerItems.length === 0) {\n innerItems = selectAll('.' + CLS_ITEMS, this.element);\n innerItems[0].appendChild(innerEle);\n } else {\n innerItems[0].parentNode.insertBefore(innerEle, innerItems[parseInt(index.toString(), 10)]);\n }\n this.items.splice(index, 0, item);\n if (item.template) {\n this.tbarEle.splice(this.tbarEle.length - 1, 1);\n }\n this.tbarEle.splice(index, 0, innerEle);\n index++;\n this.offsetWid = itemsDiv.offsetWidth;\n }\n }\n itemsDiv.style.width = '';\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Removes the items from the Toolbar. Acceptable arguments are index of item/HTMLElement/node list.\n *\n * @param {number|HTMLElement|NodeList|HTMLElement[]} args\n * Index or DOM element or an Array of item which is to be removed from the Toolbar.\n * @returns {void}.\n */\n Toolbar.prototype.removeItems = function (args) {\n var elements = args;\n var index;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (typeof elements === 'number') {\n index = parseInt(args.toString(), 10);\n this.removeItemByIndex(index, innerItems);\n } else {\n if (elements && elements.length > 1) {\n for (var _i = 0, _a = [].slice.call(elements); _i < _a.length; _i++) {\n var ele = _a[_i];\n index = this.tbarEle.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n }\n } else {\n var ele = elements && elements.length && elements.length === 1 ? elements[0] : args;\n index = innerItems.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n }\n }\n this.resize();\n };\n Toolbar.prototype.removeItemByIndex = function (index, innerItems) {\n if (this.tbarEle[parseInt(index.toString(), 10)] && innerItems[parseInt(index.toString(), 10)]) {\n var eleIdx = this.tbarEle.indexOf(innerItems[parseInt(index.toString(), 10)]);\n if (this.tbarAlign) {\n var indexAgn = this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].indexOf(this.tbarEle[parseInt(eleIdx.toString(), 10)]);\n this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].splice(parseInt(indexAgn.toString(), 10), 1);\n }\n if (this.isReact) {\n this.clearToolbarTemplate(innerItems[parseInt(index.toString(), 10)]);\n }\n var btnItem = innerItems[parseInt(index.toString(), 10)].querySelector('.e-control.e-btn');\n if (!isNOU(btnItem) && !isNOU(btnItem.ej2_instances[0]) && !btnItem.ej2_instances[0].isDestroyed) {\n btnItem.ej2_instances[0].destroy();\n }\n detach(innerItems[parseInt(index.toString(), 10)]);\n this.items.splice(eleIdx, 1);\n this.tbarEle.splice(eleIdx, 1);\n }\n };\n Toolbar.prototype.templateRender = function (templateProp, innerEle, item, index) {\n var itemType = item.type;\n var eleObj = templateProp;\n var isComponent;\n if (typeof templateProp === 'object') {\n isComponent = typeof eleObj.appendTo === 'function';\n }\n if (typeof templateProp === 'string' || !isComponent) {\n var templateFn = void 0;\n var val = templateProp;\n var regEx = new RegExp(/<(?=.*? .*?\\/ ?>|br|hr|input|!--|wbr)[a-z]+.*?>|<([a-z]+).*?<\\/\\1>/i);\n val = typeof templateProp === 'string' ? templateProp.trim() : templateProp;\n try {\n if (typeof templateProp === 'object' && !isNOU(templateProp.tagName)) {\n innerEle.appendChild(templateProp);\n } else if (typeof templateProp === 'string' && regEx.test(val)) {\n innerEle.innerHTML = val;\n } else if (document.querySelectorAll(val).length) {\n var ele = document.querySelector(val);\n var tempStr = ele.outerHTML.trim();\n innerEle.appendChild(ele);\n ele.style.display = '';\n if (!isNOU(tempStr)) {\n this.tempId.push(val);\n }\n } else {\n templateFn = templateCompiler(val);\n }\n } catch (e) {\n templateFn = templateCompiler(val);\n }\n var tempArray = void 0;\n if (!isNOU(templateFn)) {\n var toolbarTemplateID = this.element.id + index + '_template';\n tempArray = templateFn({}, this, 'template', toolbarTemplateID, this.isStringTemplate, undefined, undefined, this.root);\n }\n if (!isNOU(tempArray) && tempArray.length > 0) {\n [].slice.call(tempArray).forEach(function (ele) {\n if (!isNOU(ele.tagName)) {\n ele.style.display = '';\n }\n innerEle.appendChild(ele);\n });\n }\n } else if (itemType === 'Input') {\n var ele = this.createElement('input');\n if (item.id) {\n ele.id = item.id;\n } else {\n ele.id = getUniqueID('tbr-ipt');\n }\n innerEle.appendChild(ele);\n eleObj.appendTo(ele);\n }\n this.add(innerEle, CLS_TEMPLATE);\n var firstChild = innerEle.firstElementChild;\n if (!isNOU(firstChild)) {\n firstChild.setAttribute('tabindex', isNOU(firstChild.getAttribute('tabIndex')) ? '-1' : this.getDataTabindex(firstChild));\n firstChild.setAttribute('data-tabindex', isNOU(firstChild.getAttribute('tabIndex')) ? '-1' : this.getDataTabindex(firstChild));\n }\n this.tbarEle.push(innerEle);\n };\n Toolbar.prototype.buttonRendering = function (item, innerEle) {\n var dom = this.createElement('button', {\n className: CLS_TBARBTN\n });\n dom.setAttribute('type', 'button');\n var textStr = item.text;\n var iconCss;\n var iconPos;\n if (item.id) {\n dom.id = item.id;\n } else {\n dom.id = getUniqueID('e-tbr-btn');\n }\n var btnTxt = this.createElement('span', {\n className: 'e-tbar-btn-text'\n });\n if (textStr) {\n btnTxt.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(textStr) : textStr;\n dom.appendChild(btnTxt);\n dom.classList.add('e-tbtn-txt');\n } else {\n this.add(innerEle, 'e-tbtn-align');\n }\n if (item.prefixIcon || item.suffixIcon) {\n if (item.prefixIcon && item.suffixIcon || item.prefixIcon) {\n iconCss = item.prefixIcon + ' e-icons';\n iconPos = 'Left';\n } else {\n iconCss = item.suffixIcon + ' e-icons';\n iconPos = 'Right';\n }\n }\n var btnObj = new Button({\n iconCss: iconCss,\n iconPosition: iconPos\n });\n btnObj.createElement = this.createElement;\n btnObj.appendTo(dom);\n if (item.width) {\n setStyle(dom, {\n 'width': formatUnit(item.width)\n });\n }\n return dom;\n };\n Toolbar.prototype.renderSubComponent = function (item, index) {\n var dom;\n var innerEle = this.createElement('div', {\n className: CLS_ITEM\n });\n var tempDom = this.createElement('div', {\n innerHTML: this.enableHtmlSanitizer && !isNOU(item.tooltipText) ? SanitizeHtmlHelper.sanitize(item.tooltipText) : item.tooltipText\n });\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n if (item.htmlAttributes) {\n this.setAttr(item.htmlAttributes, innerEle);\n }\n if (item.tooltipText) {\n innerEle.setAttribute('title', tempDom.textContent);\n }\n if (item.cssClass) {\n innerEle.className = innerEle.className + ' ' + item.cssClass;\n }\n if (item.template) {\n this.templateRender(item.template, innerEle, item, index);\n } else {\n switch (item.type) {\n case 'Button':\n dom = this.buttonRendering(item, innerEle);\n dom.setAttribute('tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('data-tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('aria-label', item.text || item.tooltipText);\n dom.setAttribute('aria-disabled', 'false');\n innerEle.appendChild(dom);\n innerEle.addEventListener('click', this.itemClick.bind(this));\n break;\n case 'Separator':\n this.add(innerEle, CLS_SEPARATOR);\n break;\n }\n }\n if (item.showTextOn) {\n var sTxt = item.showTextOn;\n if (sTxt === 'Toolbar') {\n this.add(innerEle, CLS_POPUPTEXT);\n this.add(innerEle, 'e-tbtn-align');\n } else if (sTxt === 'Overflow') {\n this.add(innerEle, CLS_TBARTEXT);\n }\n }\n if (item.overflow) {\n var overflow = item.overflow;\n if (overflow === 'Show') {\n this.add(innerEle, CLS_TBAROVERFLOW);\n } else if (overflow === 'Hide') {\n if (!innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPOVERFLOW);\n }\n }\n }\n if (item.overflow !== 'Show' && item.showAlwaysInPopup && !innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPPRI);\n this.popupPriCount++;\n }\n if (item.disabled) {\n this.add(innerEle, CLS_DISABLE);\n }\n if (item.visible === false) {\n this.add(innerEle, CLS_HIDDEN);\n }\n return innerEle;\n };\n Toolbar.prototype.getDataTabindex = function (ele) {\n return isNOU(ele.getAttribute('data-tabindex')) ? '-1' : ele.getAttribute('data-tabindex');\n };\n Toolbar.prototype.itemClick = function (e) {\n this.activeEleSwitch(e.currentTarget);\n };\n Toolbar.prototype.activeEleSwitch = function (ele) {\n this.activeEleRemove(ele.firstElementChild);\n this.activeEle.focus();\n };\n Toolbar.prototype.activeEleRemove = function (curEle) {\n var previousEle = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n if (!isNOU(this.activeEle)) {\n this.activeEle.setAttribute('tabindex', this.getDataTabindex(this.activeEle));\n if (previousEle) {\n previousEle.removeAttribute('tabindex');\n }\n previousEle = this.activeEle;\n }\n this.activeEle = curEle;\n if (this.getDataTabindex(this.activeEle) === '-1') {\n if (isNOU(this.trgtEle) && !curEle.parentElement.classList.contains(CLS_TEMPLATE)) {\n if (!isNOU(this.element.querySelector('.e-hor-nav')) && this.element.querySelector('.e-hor-nav').classList.contains('e-nav-active')) {\n this.updateTabIndex('0');\n var tabindexValue = this.getDataTabindex(previousEle) === '-1' ? '0' : this.getDataTabindex(previousEle);\n previousEle.setAttribute('tabindex', tabindexValue);\n } else {\n this.updateTabIndex('-1');\n }\n curEle.removeAttribute('tabindex');\n } else {\n var tabIndex = parseInt(this.getDataTabindex(this.activeEle), 10) + 1;\n this.activeEle.setAttribute('tabindex', tabIndex.toString());\n }\n }\n };\n Toolbar.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - Returns the module name as string.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.itemsRerender = function (newProp) {\n this.items = this.tbarItemsCol;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n this.destroyMode();\n this.destroyItems();\n this.items = newProp;\n this.tbarItemsCol = this.items;\n this.renderItems();\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Toolbar.prototype.resize = function () {\n var ele = this.element;\n this.tbResize = true;\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.overflowMode === 'Popup') {\n this.popObj.hide();\n }\n var checkOverflow = this.checkOverflow(ele, ele.getElementsByClassName(CLS_ITEMS)[0]);\n if (!checkOverflow) {\n this.destroyScroll();\n var multirowele = ele.querySelector('.' + CLS_ITEMS);\n if (!isNOU(multirowele)) {\n this.remove(multirowele, CLS_MULTIROWPOS);\n if (this.tbarAlign) {\n this.add(multirowele, CLS_TBARPOS);\n }\n }\n }\n if (checkOverflow && this.scrollModule && this.offsetWid === ele.offsetWidth) {\n return;\n }\n if (this.offsetWid > ele.offsetWidth || checkOverflow) {\n this.renderOverflowMode();\n }\n if (this.popObj) {\n if (this.overflowMode === 'Extended') {\n this.popObj.width = this.getToolbarPopupWidth(this.element);\n }\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.popupRefresh(this.popObj.element, false);\n if (this.tbarAlign) {\n this.refreshPositioning();\n }\n }\n if (this.element.querySelector('.' + CLS_HSCROLLBAR)) {\n this.scrollStep = this.element.querySelector('.' + CLS_HSCROLLBAR).offsetWidth;\n }\n this.offsetWid = ele.offsetWidth;\n this.tbResize = false;\n this.separator();\n };\n Toolbar.prototype.orientationChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.resize();\n }, 500);\n };\n Toolbar.prototype.extendedOpen = function () {\n var sib = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && sib) {\n this.isExtendedOpen = sib.classList.contains(CLS_POPUPOPEN);\n }\n };\n Toolbar.prototype.updateHideEleTabIndex = function (ele, isHidden, isElement, eleIndex, innerItems) {\n if (isElement) {\n eleIndex = innerItems.indexOf(ele);\n }\n var nextEle = innerItems[++eleIndex];\n while (nextEle) {\n var skipEle = this.eleContains(nextEle);\n if (!skipEle) {\n var dataTabIndex = nextEle.firstElementChild.getAttribute('data-tabindex');\n if (isHidden && dataTabIndex === '-1') {\n nextEle.firstElementChild.setAttribute('tabindex', '0');\n } else if (dataTabIndex !== nextEle.firstElementChild.getAttribute('tabindex')) {\n nextEle.firstElementChild.setAttribute('tabindex', dataTabIndex);\n }\n break;\n }\n nextEle = innerItems[++eleIndex];\n }\n };\n Toolbar.prototype.clearToolbarTemplate = function (templateEle) {\n if (this.registeredTemplate && this.registeredTemplate[\"\" + 'template']) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[\"\" + 'template'].length; index++) {\n var registeredItem = registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], [registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)]]);\n break;\n }\n }\n } else if (this.portals && this.portals.length > 0) {\n var portals = this.portals;\n for (var index = 0; index < portals.length; index++) {\n var portalItem = portals[parseInt(index.toString(), 10)];\n var closestItem = closest(portalItem.containerInfo, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], index);\n break;\n }\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {ToolbarModel} newProp - It contains new value of the data.\n * @param {ToolbarModel} oldProp - It contains old value of the data.\n * @returns {void}\n * @private\n */\n Toolbar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var tEle = this.element;\n this.extendedOpen();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProb = Object.keys(newProp.items);\n for (var i = 0; i < changedProb.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[parseInt(i.toString(), 10)], 10);\n var property = Object.keys(newProp.items[parseInt(index.toString(), 10)])[0];\n var newProperty = Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property];\n if (this.tbarAlign || property === 'align') {\n this.refresh();\n this.trigger('created');\n break;\n }\n var popupPriCheck = property === 'showAlwaysInPopup' && !newProperty;\n var booleanCheck = property === 'overflow' && this.popupPriCount !== 0;\n if (popupPriCheck || this.items[parseInt(index.toString(), 10)].showAlwaysInPopup && booleanCheck) {\n --this.popupPriCount;\n }\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var itemCol = [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, tEle));\n if (this.isReact && this.items[parseInt(index.toString(), 10)].template) {\n this.clearToolbarTemplate(itemCol[parseInt(index.toString(), 10)]);\n }\n detach(itemCol[parseInt(index.toString(), 10)]);\n this.tbarEle.splice(index, 1);\n this.addItems([this.items[parseInt(index.toString(), 10)]], index);\n this.items.splice(index, 1);\n if (this.items[parseInt(index.toString(), 10)].template) {\n this.tbarEle.splice(this.items.length, 1);\n }\n }\n } else {\n this.itemsRerender(newProp.items);\n }\n break;\n case 'width':\n setStyle(tEle, {\n 'width': formatUnit(newProp.width)\n });\n this.refreshOverflow();\n break;\n case 'height':\n setStyle(this.element, {\n 'height': formatUnit(newProp.height)\n });\n break;\n case 'overflowMode':\n this.destroyMode();\n this.renderOverflowMode();\n if (this.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n this.refreshOverflow();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.add(tEle, CLS_RTL);\n } else {\n this.remove(tEle, CLS_RTL);\n }\n if (!isNOU(this.scrollModule)) {\n if (newProp.enableRtl) {\n this.add(this.scrollModule.element, CLS_RTL);\n } else {\n this.remove(this.scrollModule.element, CLS_RTL);\n }\n }\n if (!isNOU(this.popObj)) {\n if (newProp.enableRtl) {\n this.add(this.popObj.element, CLS_RTL);\n } else {\n this.remove(this.popObj.element, CLS_RTL);\n }\n }\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n break;\n case 'scrollStep':\n if (this.scrollModule) {\n this.scrollModule.scrollStep = this.scrollStep;\n }\n break;\n case 'enableCollision':\n if (this.popObj) {\n this.popObj.collision = {\n Y: this.enableCollision ? 'flip' : 'none'\n };\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.split(' '));\n }\n break;\n case 'allowKeyboard':\n this.unwireKeyboardEvent();\n if (newProp.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n break;\n }\n }\n };\n /**\n * Shows or hides the Toolbar item that is in the specified index.\n *\n * @param {number | HTMLElement} index - Index value of target item or DOM element of items to be hidden or shown.\n * @param {boolean} value - Based on this Boolean value, item will be hide (true) or show (false). By default, value is false.\n * @returns {void}.\n */\n Toolbar.prototype.hideItem = function (index, value) {\n var isElement = typeof index === 'object' ? true : false;\n var eleIndex = index;\n var ele;\n if (!isElement && isNOU(eleIndex)) {\n return;\n }\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n ele = index;\n } else if (this.tbarEle[parseInt(eleIndex.toString(), 10)]) {\n var innerItems_1 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n ele = innerItems_1[parseInt(eleIndex.toString(), 10)];\n }\n if (ele) {\n if (value) {\n ele.classList.add(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n if (isNOU(ele.firstElementChild.getAttribute('tabindex')) || ele.firstElementChild.getAttribute('tabindex') !== '-1') {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n } else {\n ele.classList.remove(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n this.refreshOverflow();\n }\n };\n __decorate([Collection([], Item)], Toolbar.prototype, \"items\", void 0);\n __decorate([Property('auto')], Toolbar.prototype, \"width\", void 0);\n __decorate([Property('auto')], Toolbar.prototype, \"height\", void 0);\n __decorate([Property('')], Toolbar.prototype, \"cssClass\", void 0);\n __decorate([Property('Scrollable')], Toolbar.prototype, \"overflowMode\", void 0);\n __decorate([Property()], Toolbar.prototype, \"scrollStep\", void 0);\n __decorate([Property(true)], Toolbar.prototype, \"enableCollision\", void 0);\n __decorate([Property(true)], Toolbar.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([Property(true)], Toolbar.prototype, \"allowKeyboard\", void 0);\n __decorate([Event()], Toolbar.prototype, \"clicked\", void 0);\n __decorate([Event()], Toolbar.prototype, \"created\", void 0);\n __decorate([Event()], Toolbar.prototype, \"destroyed\", void 0);\n __decorate([Event()], Toolbar.prototype, \"beforeCreate\", void 0);\n Toolbar = __decorate([NotifyPropertyChanges], Toolbar);\n return Toolbar;\n}(Component);\nexport { Toolbar };","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 @typescript-eslint/no-explicit-any */\nimport { Component, EventHandler, Property, Event, KeyboardEvents, rippleEffect, animationMode } from '@syncfusion/ej2-base';\nimport { getUniqueID, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { isVisible, closest, attributes, detach, select, addClass, removeClass, append } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, Collection, Animation } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, Complex } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, formatUnit, selectAll, SanitizeHtmlHelper, isRippleEnabled } from '@syncfusion/ej2-base';\nvar CLS_ACRDN_ROOT = 'e-acrdn-root';\nvar CLS_ROOT = 'e-accordion';\nvar CLS_ITEM = 'e-acrdn-item';\nvar CLS_ITEMFOCUS = 'e-item-focus';\nvar CLS_ITEMHIDE = 'e-hide';\nvar CLS_HEADER = 'e-acrdn-header';\nvar CLS_HEADERICN = 'e-acrdn-header-icon';\nvar CLS_HEADERCTN = 'e-acrdn-header-content';\nvar CLS_CONTENT = 'e-acrdn-panel';\nvar CLS_CTENT = 'e-acrdn-content';\nvar CLS_TOOGLEICN = 'e-toggle-icon';\nvar CLS_COLLAPSEICN = 'e-tgl-collapse-icon e-icons';\nvar CLS_EXPANDICN = 'e-expand-icon';\nvar CLS_RTL = 'e-rtl';\nvar CLS_CTNHIDE = 'e-content-hide';\nvar CLS_SLCT = 'e-select';\nvar CLS_SLCTED = 'e-selected';\nvar CLS_ACTIVE = 'e-active';\nvar CLS_ANIMATE = 'e-animate';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_TOGANIMATE = 'e-toggle-animation';\nvar CLS_NEST = 'e-nested';\nvar CLS_EXPANDSTATE = 'e-expand-state';\nvar CLS_CONTAINER = 'e-accordion-container';\n/**\n * Objects used for configuring the Accordion expanding item action properties.\n */\nvar AccordionActionSettings = /** @class */function (_super) {\n __extends(AccordionActionSettings, _super);\n function AccordionActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('SlideDown')], AccordionActionSettings.prototype, \"effect\", void 0);\n __decorate([Property(400)], AccordionActionSettings.prototype, \"duration\", void 0);\n __decorate([Property('linear')], AccordionActionSettings.prototype, \"easing\", void 0);\n return AccordionActionSettings;\n}(ChildProperty);\nexport { AccordionActionSettings };\n/**\n * Objects used for configuring the Accordion animation properties.\n */\nvar AccordionAnimationSettings = /** @class */function (_super) {\n __extends(AccordionAnimationSettings, _super);\n function AccordionAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Complex({\n effect: 'SlideUp',\n duration: 400,\n easing: 'linear'\n }, AccordionActionSettings)], AccordionAnimationSettings.prototype, \"collapse\", void 0);\n __decorate([Complex({\n effect: 'SlideDown',\n duration: 400,\n easing: 'linear'\n }, AccordionActionSettings)], AccordionAnimationSettings.prototype, \"expand\", void 0);\n return AccordionAnimationSettings;\n}(ChildProperty);\nexport { AccordionAnimationSettings };\n/**\n * An item object that is used to configure Accordion items.\n */\nvar AccordionItem = /** @class */function (_super) {\n __extends(AccordionItem, _super);\n function AccordionItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property(null)], AccordionItem.prototype, \"content\", void 0);\n __decorate([Property(null)], AccordionItem.prototype, \"header\", void 0);\n __decorate([Property(null)], AccordionItem.prototype, \"cssClass\", void 0);\n __decorate([Property(null)], AccordionItem.prototype, \"iconCss\", void 0);\n __decorate([Property(false)], AccordionItem.prototype, \"expanded\", void 0);\n __decorate([Property(true)], AccordionItem.prototype, \"visible\", void 0);\n __decorate([Property(false)], AccordionItem.prototype, \"disabled\", void 0);\n __decorate([Property()], AccordionItem.prototype, \"id\", void 0);\n return AccordionItem;\n}(ChildProperty);\nexport { AccordionItem };\n/**\n * The Accordion is a vertically collapsible content panel that displays one or more panels at a time within the available space.\n * ```html\n * <div id='accordion'/>\n * <script>\n * var accordionObj = new Accordion();\n * accordionObj.appendTo('#accordion');\n * </script>\n * ```\n */\nvar Accordion = /** @class */function (_super) {\n __extends(Accordion, _super);\n /**\n * Initializes a new instance of the Accordion class.\n *\n * @param {AccordionModel} options - Specifies Accordion model properties as options.\n * @param {string | HTMLElement} element - Specifies the element that is rendered as an Accordion.\n */\n function Accordion(options, element) {\n var _this = _super.call(this, options, element) || this;\n /**\n * Contains the keyboard configuration of the Accordion.\n */\n _this.keyConfigs = {\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n enter: 'enter',\n space: 'space',\n home: 'home',\n end: 'end'\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n Accordion.prototype.destroy = function () {\n if (this.isReact || this.isAngular || this.isVue) {\n this.clearTemplate();\n }\n var ele = this.element;\n _super.prototype.destroy.call(this);\n this.unWireEvents();\n this.isDestroy = true;\n this.restoreContent(null);\n [].slice.call(ele.children).forEach(function (el) {\n ele.removeChild(el);\n });\n if (this.trgtEle) {\n this.trgtEle = null;\n while (this.ctrlTem.firstElementChild) {\n ele.appendChild(this.ctrlTem.firstElementChild);\n }\n this.ctrlTem = null;\n }\n ele.classList.remove(CLS_ACRDN_ROOT);\n ele.removeAttribute('style');\n this.element.removeAttribute('data-ripple');\n if (!this.isNested && isRippleEnabled) {\n this.removeRippleEffect();\n }\n };\n Accordion.prototype.preRender = function () {\n var nested = closest(this.element, '.' + CLS_CONTENT);\n this.isNested = false;\n this.templateEle = [];\n if (!this.isDestroy) {\n this.isDestroy = false;\n }\n if (nested && nested.firstElementChild && nested.firstElementChild.firstElementChild) {\n if (nested.firstElementChild.firstElementChild.classList.contains(CLS_ROOT)) {\n nested.classList.add(CLS_NEST);\n this.isNested = true;\n }\n } else {\n this.element.classList.add(CLS_ACRDN_ROOT);\n }\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL);\n }\n };\n Accordion.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Accordion.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n /**\n * To initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Accordion.prototype.render = function () {\n this.initializeHeaderTemplate();\n this.initializeItemTemplate();\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.renderComplete();\n };\n Accordion.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n setStyle(this.element, {\n 'width': width,\n 'height': height\n });\n if (isNOU(this.initExpand)) {\n this.initExpand = [];\n }\n if (!isNOU(this.expandedIndices) && this.expandedIndices.length > 0) {\n this.initExpand = this.expandedIndices;\n }\n };\n Accordion.prototype.renderControl = function () {\n this.trgtEle = this.element.children.length > 0 ? select('div', this.element) : null;\n this.renderItems();\n this.initItemExpand();\n };\n Accordion.prototype.wireFocusEvents = function () {\n var acrdItem = [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM));\n for (var _i = 0, acrdItem_1 = acrdItem; _i < acrdItem_1.length; _i++) {\n var item = acrdItem_1[_i];\n var headerEle = item.querySelector('.' + CLS_HEADER);\n if (item.childElementCount > 0 && headerEle) {\n EventHandler.clearEvents(headerEle);\n EventHandler.add(headerEle, 'focus', this.focusIn, this);\n EventHandler.add(headerEle, 'blur', this.focusOut, this);\n }\n }\n };\n Accordion.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n if (!isNOU(this.keyModule)) {\n this.keyModule.destroy();\n }\n };\n Accordion.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n if (!this.isNested && !this.isDestroy) {\n this.removeRippleEffect = rippleEffect(this.element, {\n selector: '.' + CLS_HEADER\n });\n }\n if (!this.isNested) {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n }\n };\n Accordion.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return templateCompiler(document.querySelector(template).innerHTML.trim());\n } else {\n return templateCompiler(template);\n }\n } catch (error) {\n return templateCompiler(template);\n }\n }\n return undefined;\n };\n Accordion.prototype.initializeHeaderTemplate = function () {\n if (this.headerTemplate) {\n this.headerTemplateFn = this.templateParser(this.headerTemplate);\n }\n };\n Accordion.prototype.initializeItemTemplate = function () {\n if (this.itemTemplate) {\n this.itemTemplateFn = this.templateParser(this.itemTemplate);\n }\n };\n Accordion.prototype.getHeaderTemplate = function () {\n return this.headerTemplateFn;\n };\n Accordion.prototype.getItemTemplate = function () {\n return this.itemTemplateFn;\n };\n Accordion.prototype.focusIn = function (e) {\n e.target.parentElement.classList.add(CLS_ITEMFOCUS);\n };\n Accordion.prototype.focusOut = function (e) {\n e.target.parentElement.classList.remove(CLS_ITEMFOCUS);\n };\n Accordion.prototype.ctrlTemplate = function () {\n this.ctrlTem = this.element.cloneNode(true);\n var innerEles;\n var rootEle = select('.' + CLS_CONTAINER, this.element);\n if (rootEle) {\n innerEles = rootEle.children;\n } else {\n innerEles = this.element.children;\n }\n var items = [];\n [].slice.call(innerEles).forEach(function (el) {\n items.push({\n header: el.childElementCount > 0 && el.children[0] ? el.children[0] : '',\n content: el.childElementCount > 1 && el.children[1] ? el.children[1] : ''\n });\n el.parentNode.removeChild(el);\n });\n if (rootEle) {\n this.element.removeChild(rootEle);\n }\n this.setProperties({\n items: items\n }, true);\n };\n Accordion.prototype.toggleIconGenerate = function () {\n var tglIcon = this.createElement('div', {\n className: CLS_TOOGLEICN\n });\n var hdrColIcon = this.createElement('span', {\n className: CLS_COLLAPSEICN\n });\n tglIcon.appendChild(hdrColIcon);\n return tglIcon;\n };\n Accordion.prototype.initItemExpand = function () {\n var len = this.initExpand.length;\n if (len === 0) {\n return;\n }\n if (this.expandMode === 'Single') {\n this.expandItem(true, this.initExpand[len - 1]);\n } else {\n for (var i = 0; i < len; i++) {\n this.expandItem(true, this.initExpand[parseInt(i.toString(), 10)]);\n }\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.renderItems = function () {\n var _this = this;\n var ele = this.element;\n var innerItem;\n var innerDataSourceItem;\n if (!isNOU(this.trgtEle)) {\n this.ctrlTemplate();\n }\n if (!isNOU(this.dataSource) && this.dataSource.length > 0) {\n this.dataSource.forEach(function (item, index) {\n innerDataSourceItem = _this.renderInnerItem(item, index);\n ele.appendChild(innerDataSourceItem);\n if (innerDataSourceItem.childElementCount > 0) {\n EventHandler.add(innerDataSourceItem.querySelector('.' + CLS_HEADER), 'focus', _this.focusIn, _this);\n EventHandler.add(innerDataSourceItem.querySelector('.' + CLS_HEADER), 'blur', _this.focusOut, _this);\n }\n });\n } else {\n var items = this.items;\n if (ele && items.length > 0) {\n items.forEach(function (item, index) {\n innerItem = _this.renderInnerItem(item, index);\n ele.appendChild(innerItem);\n if (innerItem.childElementCount > 0) {\n EventHandler.add(innerItem.querySelector('.' + CLS_HEADER), 'focus', _this.focusIn, _this);\n EventHandler.add(innerItem.querySelector('.' + CLS_HEADER), 'blur', _this.focusOut, _this);\n }\n });\n }\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.clickHandler = function (e) {\n var trgt = e.target;\n var items = this.getItems();\n var eventArgs = {};\n var tglIcon;\n var acrdEle = closest(trgt, '.' + CLS_ROOT);\n if (acrdEle !== this.element) {\n return;\n }\n trgt.classList.add('e-target');\n var acrdnItem = closest(trgt, '.' + CLS_ITEM);\n var acrdnHdr = closest(trgt, '.' + CLS_HEADER);\n var acrdnCtn = closest(trgt, '.' + CLS_CONTENT);\n if (acrdnItem && (isNOU(acrdnHdr) || isNOU(acrdnCtn))) {\n acrdnHdr = acrdnItem.children[0];\n acrdnCtn = acrdnItem.children[1];\n }\n if (acrdnHdr) {\n tglIcon = select('.' + CLS_TOOGLEICN, acrdnHdr);\n }\n var acrdnCtnItem;\n if (acrdnHdr) {\n acrdnCtnItem = closest(acrdnHdr, '.' + CLS_ITEM);\n } else if (acrdnCtn) {\n acrdnCtnItem = closest(acrdnCtn, '.' + CLS_ITEM);\n }\n var index = this.getIndexByItem(acrdnItem);\n if (acrdnCtnItem) {\n eventArgs.item = items[this.getIndexByItem(acrdnCtnItem)];\n }\n eventArgs.originalEvent = e;\n var ctnCheck = !isNOU(tglIcon) && acrdnItem.childElementCount <= 1;\n if (ctnCheck && (isNOU(acrdnCtn) || !isNOU(select('.' + CLS_HEADER + ' .' + CLS_TOOGLEICN, acrdnCtnItem)))) {\n acrdnItem.appendChild(this.contentRendering(index));\n this.ariaAttrUpdate(acrdnItem);\n this.afterContentRender(trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem);\n } else {\n this.afterContentRender(trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.afterContentRender = function (trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem) {\n var _this = this;\n var acrdActive = [];\n this.trigger('clicked', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n return;\n }\n var cntclkCheck = acrdnCtn && !isNOU(select('.e-target', acrdnCtn));\n var inlineAcrdnSel = '.' + CLS_CONTENT + ' .' + CLS_ROOT;\n var inlineEleAcrdn = acrdnCtn && !isNOU(select('.' + CLS_ROOT, acrdnCtn)) && isNOU(closest(trgt, inlineAcrdnSel));\n var nestContCheck = acrdnCtn && isNOU(select('.' + CLS_ROOT, acrdnCtn)) || !(closest(trgt, '.' + CLS_ROOT) === _this.element);\n cntclkCheck = cntclkCheck && (inlineEleAcrdn || nestContCheck);\n trgt.classList.remove('e-target');\n if (trgt.classList.contains(CLS_CONTENT) || trgt.classList.contains(CLS_CTENT) || cntclkCheck) {\n return;\n }\n var acrdcontainer = _this.element.querySelector('.' + CLS_CONTAINER);\n var acrdnchild = acrdcontainer ? acrdcontainer.children : _this.element.children;\n [].slice.call(acrdnchild).forEach(function (el) {\n if (el.classList.contains(CLS_ACTIVE)) {\n acrdActive.push(el);\n }\n });\n var acrdAniEle = [].slice.call(_this.element.querySelectorAll('.' + CLS_ITEM + ' [' + CLS_ANIMATE + ']'));\n if (acrdAniEle.length > 0) {\n for (var _i = 0, acrdAniEle_1 = acrdAniEle; _i < acrdAniEle_1.length; _i++) {\n var el = acrdAniEle_1[_i];\n acrdActive.push(el.parentElement);\n }\n }\n var sameContentCheck = acrdActive.indexOf(acrdnCtnItem) !== -1 && acrdnCtn.getAttribute('e-animate') === 'true';\n var sameHeader = false;\n if (!isNOU(acrdnItem) && !isNOU(acrdnHdr)) {\n var acrdnCtn_1 = select('.' + CLS_CONTENT, acrdnItem);\n var acrdnRoot = closest(acrdnItem, '.' + CLS_ACRDN_ROOT);\n var expandState = acrdnRoot.querySelector('.' + CLS_EXPANDSTATE);\n if (isNOU(acrdnCtn_1)) {\n return;\n }\n sameHeader = expandState === acrdnItem;\n if (isVisible(acrdnCtn_1) && (!sameContentCheck || acrdnCtnItem.classList.contains(CLS_SLCTED))) {\n _this.collapse(acrdnCtn_1);\n } else {\n if (acrdActive.length > 0 && _this.expandMode === 'Single' && !sameContentCheck) {\n acrdActive.forEach(function (el) {\n _this.collapse(select('.' + CLS_CONTENT, el));\n el.classList.remove(CLS_EXPANDSTATE);\n });\n }\n _this.expand(acrdnCtn_1);\n }\n if (!isNOU(expandState) && !sameHeader) {\n expandState.classList.remove(CLS_EXPANDSTATE);\n }\n }\n });\n };\n Accordion.prototype.eleMoveFocus = function (action, root, trgt) {\n var clst;\n var clstItem = closest(trgt, '.' + CLS_ITEM);\n if (trgt === root) {\n clst = (action === 'moveUp' ? trgt.lastElementChild : trgt).querySelector('.' + CLS_HEADER);\n } else if (trgt.classList.contains(CLS_HEADER)) {\n clstItem = action === 'moveUp' ? clstItem.previousElementSibling : clstItem.nextElementSibling;\n if (clstItem) {\n clst = select('.' + CLS_HEADER, clstItem);\n }\n }\n if (clst) {\n clst.focus();\n }\n };\n Accordion.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n var header = closest(e.target, CLS_HEADER);\n if (isNOU(header) && !trgt.classList.contains(CLS_ROOT) && !trgt.classList.contains(CLS_HEADER)) {\n return;\n }\n var clst;\n var root = this.element;\n var content;\n switch (e.action) {\n case 'moveUp':\n this.eleMoveFocus(e.action, root, trgt);\n break;\n case 'moveDown':\n this.eleMoveFocus(e.action, root, trgt);\n break;\n case 'space':\n case 'enter':\n content = trgt.nextElementSibling;\n if (!isNOU(content) && content.classList.contains(CLS_CONTENT)) {\n if (content.getAttribute('e-animate') !== 'true') {\n trgt.click();\n }\n } else {\n trgt.click();\n }\n e.preventDefault();\n break;\n case 'home':\n case 'end':\n clst = e.action === 'home' ? root.firstElementChild.children[0] : root.lastElementChild.children[0];\n clst.focus();\n e.preventDefault();\n break;\n }\n };\n Accordion.prototype.headerEleGenerate = function () {\n var header = this.createElement('div', {\n className: CLS_HEADER,\n id: getUniqueID('acrdn_header')\n });\n var ariaAttr = {\n 'tabindex': '0',\n 'role': 'button',\n 'aria-disabled': 'false',\n 'aria-expanded': 'false'\n };\n attributes(header, ariaAttr);\n return header;\n };\n Accordion.prototype.renderInnerItem = function (item, index) {\n var innerEle = this.createElement('div', {\n className: CLS_ITEM,\n id: item.id || getUniqueID('acrdn_item')\n });\n if (this.headerTemplate) {\n var ctnEle = this.headerEleGenerate();\n var hdrEle = this.createElement('div', {\n className: CLS_HEADERCTN\n });\n ctnEle.appendChild(hdrEle);\n append(this.getHeaderTemplate()(item, this, 'headerTemplate', this.element.id + '_headerTemplate', false), hdrEle);\n innerEle.appendChild(ctnEle);\n ctnEle.appendChild(this.toggleIconGenerate());\n this.add(innerEle, CLS_SLCT);\n return innerEle;\n }\n if (item.header && this.angularnativeCondiCheck(item, 'header')) {\n var header = item.header;\n if (this.enableHtmlSanitizer && typeof item.header === 'string') {\n header = SanitizeHtmlHelper.sanitize(item.header);\n }\n var ctnEle = this.headerEleGenerate();\n var hdrEle = this.createElement('div', {\n className: CLS_HEADERCTN\n });\n ctnEle.appendChild(hdrEle);\n ctnEle.appendChild(this.fetchElement(hdrEle, header, index));\n innerEle.appendChild(ctnEle);\n }\n var hdr = select('.' + CLS_HEADER, innerEle);\n if (item.expanded && !isNOU(index) && !this.enablePersistence) {\n if (this.initExpand.indexOf(index) === -1) {\n this.initExpand.push(index);\n }\n }\n if (item.cssClass) {\n addClass([innerEle], item.cssClass.split(' '));\n }\n if (item.disabled) {\n addClass([innerEle], CLS_DISABLE);\n }\n if (item.visible === false) {\n addClass([innerEle], CLS_ITEMHIDE);\n }\n if (item.iconCss) {\n var hdrIcnEle = this.createElement('div', {\n className: CLS_HEADERICN\n });\n var icon = this.createElement('span', {\n className: item.iconCss + ' e-icons'\n });\n hdrIcnEle.appendChild(icon);\n if (isNOU(hdr)) {\n hdr = this.headerEleGenerate();\n hdr.appendChild(hdrIcnEle);\n innerEle.appendChild(hdr);\n } else {\n hdr.insertBefore(hdrIcnEle, hdr.childNodes[0]);\n }\n }\n if (item.content && this.angularnativeCondiCheck(item, 'content')) {\n var hdrIcon = this.toggleIconGenerate();\n if (isNOU(hdr)) {\n hdr = this.headerEleGenerate();\n innerEle.appendChild(hdr);\n }\n hdr.appendChild(hdrIcon);\n this.add(innerEle, CLS_SLCT);\n }\n return innerEle;\n };\n Accordion.prototype.angularnativeCondiCheck = function (item, prop) {\n var property = prop === 'content' ? item.content : item.header;\n var content = property;\n if (this.isAngular && !isNOU(content.elementRef)) {\n var data = content.elementRef.nativeElement.data;\n if (isNOU(data) || data === '' || data.indexOf('bindings=') === -1) {\n return true;\n }\n var parseddata = JSON.parse(content.elementRef.nativeElement.data.replace('bindings=', ''));\n if (!isNOU(parseddata) && parseddata['ng-reflect-ng-if'] === 'false') {\n return false;\n } else {\n return true;\n }\n } else {\n return true;\n }\n };\n Accordion.prototype.fetchElement = function (ele, value, index) {\n var templateFn;\n var temString;\n try {\n if (document.querySelectorAll(value).length && value !== 'Button') {\n var eleVal = document.querySelector(value);\n temString = eleVal.outerHTML.trim();\n ele.appendChild(eleVal);\n eleVal.style.display = '';\n } else {\n templateFn = templateCompiler(value);\n }\n } catch (e) {\n if (typeof value === 'string') {\n ele.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(value) : value;\n } else if (value instanceof HTMLElement) {\n ele.appendChild(value);\n if (this.trgtEle) {\n ele.firstElementChild.style.display = '';\n }\n } else {\n templateFn = templateCompiler(value);\n }\n }\n var tempArray;\n if (!isNOU(templateFn)) {\n if (this.isReact) {\n this.renderReactTemplates();\n }\n var templateProps = void 0;\n var templateName = void 0;\n if (ele.classList.contains(CLS_HEADERCTN)) {\n templateProps = this.element.id + index + '_header';\n templateName = 'header';\n } else if (ele.classList.contains(CLS_CTENT)) {\n templateProps = this.element.id + index + '_content';\n templateName = 'content';\n }\n tempArray = templateFn({}, this, templateName, templateProps, this.isStringTemplate);\n }\n if (!isNOU(tempArray) && tempArray.length > 0 && !(isNOU(tempArray[0].tagName) && tempArray.length === 1)) {\n [].slice.call(tempArray).forEach(function (el) {\n if (!isNOU(el.tagName)) {\n el.style.display = '';\n }\n ele.appendChild(el);\n });\n } else if (ele.childElementCount === 0) {\n ele.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(value) : value;\n }\n if (!isNOU(temString)) {\n if (this.templateEle.indexOf(value) === -1) {\n this.templateEle.push(value);\n }\n }\n return ele;\n };\n Accordion.prototype.ariaAttrUpdate = function (itemEle) {\n var header = select('.' + CLS_HEADER, itemEle);\n var content = select('.' + CLS_CONTENT, itemEle);\n header.setAttribute('aria-controls', content.id);\n content.setAttribute('aria-labelledby', header.id);\n content.setAttribute('role', 'region');\n };\n Accordion.prototype.contentRendering = function (index) {\n var itemcnt = this.createElement('div', {\n className: CLS_CONTENT + ' ' + CLS_CTNHIDE,\n id: getUniqueID('acrdn_panel')\n });\n attributes(itemcnt, {\n 'aria-hidden': 'true'\n });\n var ctn = this.createElement('div', {\n className: CLS_CTENT\n });\n if (!isNOU(this.dataSource) && this.dataSource.length > 0) {\n if (this.isReact) {\n this.renderReactTemplates();\n }\n append(this.getItemTemplate()(this.dataSource[parseInt(index.toString(), 10)], this, 'itemTemplate', this.element.id + '_itemTemplate', false), ctn);\n itemcnt.appendChild(ctn);\n } else {\n var content = this.items[parseInt(index.toString(), 10)].content;\n if (this.enableHtmlSanitizer && typeof content === 'string') {\n content = SanitizeHtmlHelper.sanitize(content);\n }\n itemcnt.appendChild(this.fetchElement(ctn, content, index));\n }\n return itemcnt;\n };\n Accordion.prototype.expand = function (trgt) {\n var _this = this;\n var items = this.getItems();\n var trgtItemEle = closest(trgt, '.' + CLS_ITEM);\n if (isNOU(trgt) || isVisible(trgt) && trgt.getAttribute('e-animate') !== 'true' || trgtItemEle.classList.contains(CLS_DISABLE)) {\n return;\n }\n var acrdnRoot = closest(trgtItemEle, '.' + CLS_ACRDN_ROOT);\n var expandState = acrdnRoot.querySelector('.' + CLS_EXPANDSTATE);\n var animation = {\n name: this.animation.expand.effect,\n duration: this.animation.expand.duration,\n timingFunction: this.animation.expand.easing\n };\n var icon = select('.' + CLS_TOOGLEICN, trgtItemEle).firstElementChild;\n var eventArgs = {\n element: trgtItemEle,\n item: items[this.getIndexByItem(trgtItemEle)],\n index: this.getIndexByItem(trgtItemEle),\n content: trgtItemEle.querySelector('.' + CLS_CONTENT),\n isExpanded: true\n };\n this.trigger('expanding', eventArgs, function (expandArgs) {\n if (!expandArgs.cancel) {\n icon.classList.add(CLS_TOGANIMATE);\n _this.expandedItemsPush(trgtItemEle);\n if (!isNOU(expandState)) {\n expandState.classList.remove(CLS_EXPANDSTATE);\n }\n trgtItemEle.classList.add(CLS_EXPANDSTATE);\n if (animation.name === 'None' && animationMode !== 'Enable' || animationMode === 'Disable') {\n _this.expandProgress('begin', icon, trgt, trgtItemEle, expandArgs);\n _this.expandProgress('end', icon, trgt, trgtItemEle, expandArgs);\n } else {\n _this.expandAnimation(animation.name, icon, trgt, trgtItemEle, animation, expandArgs);\n }\n }\n });\n };\n Accordion.prototype.expandAnimation = function (ef, icn, trgt, trgtItemEle, animate, args) {\n var _this = this;\n if (ef === 'None' && animationMode === 'Enable') {\n ef = 'SlideDown';\n animate.name = 'SlideDown';\n }\n var height;\n this.lastActiveItemId = trgtItemEle.id;\n if (ef === 'SlideDown') {\n animate.begin = function () {\n _this.expandProgress('begin', icn, trgt, trgtItemEle, args);\n trgt.style.position = 'absolute';\n height = trgtItemEle.offsetHeight;\n trgt.style.maxHeight = trgt.offsetHeight + 'px';\n trgtItemEle.style.maxHeight = '';\n };\n animate.progress = function () {\n trgtItemEle.style.minHeight = height + trgt.offsetHeight + 'px';\n };\n animate.end = function () {\n setStyle(trgt, {\n 'position': '',\n 'maxHeight': ''\n });\n trgtItemEle.style.minHeight = '';\n _this.expandProgress('end', icn, trgt, trgtItemEle, args);\n };\n } else {\n animate.begin = function () {\n _this.expandProgress('begin', icn, trgt, trgtItemEle, args);\n };\n animate.end = function () {\n _this.expandProgress('end', icn, trgt, trgtItemEle, args);\n };\n }\n new Animation(animate).animate(trgt);\n };\n Accordion.prototype.expandProgress = function (progress, icon, trgt, trgtItemEle, eventArgs) {\n this.remove(trgt, CLS_CTNHIDE);\n this.add(trgtItemEle, CLS_SLCTED);\n this.add(icon, CLS_EXPANDICN);\n if (progress === 'end') {\n this.add(trgtItemEle, CLS_ACTIVE);\n trgt.setAttribute('aria-hidden', 'false');\n attributes(trgt.previousElementSibling, {\n 'aria-expanded': 'true'\n });\n icon.classList.remove(CLS_TOGANIMATE);\n this.trigger('expanded', eventArgs);\n }\n };\n Accordion.prototype.expandedItemsPush = function (item) {\n var index = this.getIndexByItem(item);\n if (this.expandedIndices.indexOf(index) === -1) {\n var temp = [].slice.call(this.expandedIndices);\n temp.push(index);\n this.setProperties({\n expandedIndices: temp\n }, true);\n }\n };\n Accordion.prototype.getIndexByItem = function (item) {\n var itemEle = this.getItemElements();\n return [].slice.call(itemEle).indexOf(item);\n };\n Accordion.prototype.getItemElements = function () {\n var itemEle = [];\n var itemCollection = this.element.children;\n [].slice.call(itemCollection).forEach(function (el) {\n if (el.classList.contains(CLS_ITEM)) {\n itemEle.push(el);\n }\n });\n return itemEle;\n };\n Accordion.prototype.expandedItemsPop = function (item) {\n var index = this.getIndexByItem(item);\n var temp = [].slice.call(this.expandedIndices);\n temp.splice(temp.indexOf(index), 1);\n this.setProperties({\n expandedIndices: temp\n }, true);\n };\n Accordion.prototype.collapse = function (trgt) {\n var _this = this;\n if (isNOU(trgt)) {\n return;\n }\n var items = this.getItems();\n var trgtItemEle = closest(trgt, '.' + CLS_ITEM);\n if (!isVisible(trgt) || trgtItemEle.classList.contains(CLS_DISABLE)) {\n return;\n }\n var animation = {\n name: this.animation.collapse.effect,\n duration: this.animation.collapse.duration,\n timingFunction: this.animation.collapse.easing\n };\n var icon = select('.' + CLS_TOOGLEICN, trgtItemEle).firstElementChild;\n var eventArgs = {\n element: trgtItemEle,\n item: items[this.getIndexByItem(trgtItemEle)],\n index: this.getIndexByItem(trgtItemEle),\n content: trgtItemEle.querySelector('.' + CLS_CONTENT),\n isExpanded: false\n };\n this.trigger('expanding', eventArgs, function (expandArgs) {\n if (!expandArgs.cancel) {\n _this.expandedItemsPop(trgtItemEle);\n trgtItemEle.classList.remove(CLS_EXPANDSTATE);\n icon.classList.add(CLS_TOGANIMATE);\n if (animation.name === 'None' && animationMode !== 'Enable' || animationMode === 'Disable') {\n _this.collapseProgress('begin', icon, trgt, trgtItemEle, expandArgs);\n _this.collapseProgress('end', icon, trgt, trgtItemEle, expandArgs);\n } else {\n _this.collapseAnimation(animation.name, trgt, trgtItemEle, icon, animation, expandArgs);\n }\n }\n });\n };\n Accordion.prototype.collapseAnimation = function (ef, trgt, trgtItEl, icn, animate, args) {\n var _this = this;\n if (ef === 'None' && animationMode === 'Enable') {\n ef = 'SlideUp';\n animate.name = 'SlideUp';\n }\n var height;\n var trgtHeight;\n var itemHeight;\n var remain;\n this.lastActiveItemId = trgtItEl.id;\n if (ef === 'SlideUp') {\n animate.begin = function () {\n itemHeight = trgtItEl.offsetHeight;\n trgtItEl.style.minHeight = itemHeight + 'px';\n trgt.style.position = 'absolute';\n height = trgtItEl.offsetHeight;\n trgtHeight = trgt.offsetHeight;\n trgt.style.maxHeight = trgtHeight + 'px';\n _this.collapseProgress('begin', icn, trgt, trgtItEl, args);\n };\n animate.progress = function () {\n remain = height - (trgtHeight - trgt.offsetHeight);\n if (remain < itemHeight) {\n trgtItEl.style.minHeight = remain + 'px';\n }\n };\n animate.end = function () {\n trgt.style.display = 'none';\n _this.collapseProgress('end', icn, trgt, trgtItEl, args);\n trgtItEl.style.minHeight = '';\n setStyle(trgt, {\n 'position': '',\n 'maxHeight': '',\n 'display': ''\n });\n };\n } else {\n animate.begin = function () {\n _this.collapseProgress('begin', icn, trgt, trgtItEl, args);\n };\n animate.end = function () {\n _this.collapseProgress('end', icn, trgt, trgtItEl, args);\n };\n }\n new Animation(animate).animate(trgt);\n };\n Accordion.prototype.collapseProgress = function (progress, icon, trgt, trgtItemEle, eventArgs) {\n this.remove(icon, CLS_EXPANDICN);\n this.remove(trgtItemEle, CLS_SLCTED);\n if (progress === 'end') {\n this.add(trgt, CLS_CTNHIDE);\n icon.classList.remove(CLS_TOGANIMATE);\n this.remove(trgtItemEle, CLS_ACTIVE);\n trgt.setAttribute('aria-hidden', 'true');\n attributes(trgt.previousElementSibling, {\n 'aria-expanded': 'false'\n });\n this.trigger('expanded', eventArgs);\n }\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Accordion.prototype.getModuleName = function () {\n return 'accordion';\n };\n Accordion.prototype.getItems = function () {\n var items;\n if (this.itemTemplate && this.headerTemplate) {\n items = this.dataSource;\n } else {\n items = this.items;\n }\n return items;\n };\n /**\n * Adds new item to the Accordion with the specified index of the Accordion.\n *\n * @param {AccordionItemModel | AccordionItemModel[] | Object | Object[]} item - Item array that is to be added to the Accordion.\n * @param {number} index - Number value that determines where the item should be added.\n * By default, item is added at the last index if the index is not specified.\n * @returns {void}\n */\n Accordion.prototype.addItem = function (item, index) {\n var _this = this;\n var ele = this.element;\n var itemEle = this.getItemElements();\n var items = this.getItems();\n if (isNOU(index)) {\n index = items.length;\n }\n if (ele.childElementCount >= index) {\n var addItems = item instanceof Array ? item : [item];\n addItems.forEach(function (addItem, i) {\n var itemIndex = index + i;\n items.splice(itemIndex, 0, addItem);\n var innerItemEle = _this.renderInnerItem(addItem, itemIndex);\n if (ele.childElementCount === itemIndex) {\n ele.appendChild(innerItemEle);\n } else {\n ele.insertBefore(innerItemEle, itemEle[parseInt(itemIndex.toString(), 10)]);\n }\n EventHandler.add(innerItemEle.querySelector('.' + CLS_HEADER), 'focus', _this.focusIn, _this);\n EventHandler.add(innerItemEle.querySelector('.' + CLS_HEADER), 'blur', _this.focusOut, _this);\n _this.expandedIndices = [];\n _this.expandedItemRefresh();\n if (addItem && addItem.expanded) {\n _this.expandItem(true, itemIndex);\n }\n });\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.expandedItemRefresh = function () {\n var _this = this;\n var itemEle = this.getItemElements();\n [].slice.call(itemEle).forEach(function (el) {\n if (el.classList.contains(CLS_SLCTED)) {\n _this.expandedItemsPush(el);\n }\n });\n };\n /**\n * Dynamically removes item from Accordion.\n *\n * @param {number} index - Number value that determines which item should be removed.\n * @returns {void}.\n */\n Accordion.prototype.removeItem = function (index) {\n if (this.isReact || this.isAngular) {\n var item = selectAll('.' + CLS_ITEM, this.element)[parseInt(index.toString(), 10)];\n var header = select('.' + CLS_HEADERCTN, item);\n var content = select('.' + CLS_CTENT, item);\n this.clearAccordionTemplate(header, this.dataSource.length > 0 ? 'headerTemplate' : 'header', CLS_HEADERCTN);\n this.clearAccordionTemplate(content, this.dataSource.length > 0 ? 'itemTemplate' : 'content', CLS_CTENT);\n }\n var itemEle = this.getItemElements();\n var ele = itemEle[parseInt(index.toString(), 10)];\n var items = this.getItems();\n if (isNOU(ele)) {\n return;\n }\n this.restoreContent(index);\n detach(ele);\n items.splice(index, 1);\n this.expandedIndices = [];\n this.expandedItemRefresh();\n };\n /**\n * Sets focus to the specified index item header in Accordion.\n *\n * @param {number} index - Number value that determines which item should be focused.\n * @returns {void}.\n */\n Accordion.prototype.select = function (index) {\n var itemEle = this.getItemElements();\n var ele = itemEle[parseInt(index.toString(), 10)];\n if (isNOU(ele) || isNOU(select('.' + CLS_HEADER, ele))) {\n return;\n }\n ele.children[0].focus();\n };\n /**\n * Shows or hides the specified item from Accordion.\n *\n * @param {number} index - Number value that determines which item should be hidden/shown.\n * @param {boolean} isHidden - Boolean value that determines the action either hide (true) or show (false). Default value is false.\n * If the `isHidden` value is false, the item is shown or else item it is hidden.\n * @returns {void}.\n */\n Accordion.prototype.hideItem = function (index, isHidden) {\n var itemEle = this.getItemElements();\n var ele = itemEle[parseInt(index.toString(), 10)];\n if (isNOU(ele)) {\n return;\n }\n if (isNOU(isHidden)) {\n isHidden = true;\n }\n if (isHidden) {\n this.add(ele, CLS_ITEMHIDE);\n } else {\n this.remove(ele, CLS_ITEMHIDE);\n }\n };\n /**\n * Enables/Disables the specified Accordion item.\n *\n * @param {number} index - Number value that determines which item should be enabled/disabled.\n * @param {boolean} isEnable - Boolean value that determines the action as enable (true) or disable (false).\n * If the `isEnable` value is true, the item is enabled or else it is disabled.\n * @returns {void}.\n */\n Accordion.prototype.enableItem = function (index, isEnable) {\n var itemEle = this.getItemElements();\n var ele = itemEle[parseInt(index.toString(), 10)];\n if (isNOU(ele)) {\n return;\n }\n var eleHeader = ele.firstElementChild;\n if (isEnable) {\n this.remove(ele, CLS_DISABLE);\n attributes(eleHeader, {\n 'tabindex': '0',\n 'aria-disabled': 'false'\n });\n eleHeader.focus();\n } else {\n if (ele.classList.contains(CLS_ACTIVE)) {\n this.expandItem(false, index);\n this.eleMoveFocus('movedown', this.element, eleHeader);\n }\n this.add(ele, CLS_DISABLE);\n eleHeader.setAttribute('aria-disabled', 'true');\n eleHeader.removeAttribute('tabindex');\n }\n };\n /**\n * Expands/Collapses the specified Accordion item.\n *\n * @param {boolean} isExpand - Boolean value that determines the action as expand or collapse.\n * @param {number} index - Number value that determines which item should be expanded/collapsed.`index` is optional parameter.\n * Without Specifying index, based on the `isExpand` value all Accordion item can be expanded or collapsed.\n * @returns {void}.\n */\n Accordion.prototype.expandItem = function (isExpand, index) {\n var _this = this;\n var itemEle = this.getItemElements();\n if (isNOU(index)) {\n if (this.expandMode === 'Single' && isExpand) {\n var ele = itemEle[itemEle.length - 1];\n this.itemExpand(isExpand, ele, this.getIndexByItem(ele));\n } else {\n var item = select('#' + this.lastActiveItemId, this.element);\n [].slice.call(itemEle).forEach(function (el) {\n _this.itemExpand(isExpand, el, _this.getIndexByItem(el));\n el.classList.remove(CLS_EXPANDSTATE);\n });\n var expandedItem = select('.' + CLS_EXPANDSTATE, this.element);\n if (expandedItem) {\n expandedItem.classList.remove(CLS_EXPANDSTATE);\n }\n if (item) {\n item.classList.add(CLS_EXPANDSTATE);\n }\n }\n } else {\n var ele = itemEle[parseInt(index.toString(), 10)];\n if (isNOU(ele) || !ele.classList.contains(CLS_SLCT) || ele.classList.contains(CLS_ACTIVE) && isExpand) {\n return;\n } else {\n if (this.expandMode === 'Single') {\n this.expandItem(false);\n }\n this.itemExpand(isExpand, ele, index);\n }\n }\n };\n Accordion.prototype.itemExpand = function (isExpand, ele, index) {\n var ctn = ele.children[1];\n if (ele.classList.contains(CLS_DISABLE)) {\n return;\n }\n if (isNOU(ctn) && isExpand) {\n ctn = this.contentRendering(index);\n ele.appendChild(ctn);\n this.ariaAttrUpdate(ele);\n this.expand(ctn);\n } else if (!isNOU(ctn)) {\n if (isExpand) {\n this.expand(ctn);\n } else {\n this.collapse(ctn);\n }\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.destroyItems = function () {\n this.restoreContent(null);\n if (this.isReact || this.isAngular || this.isVue) {\n this.clearTemplate();\n }\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach(function (el) {\n detach(el);\n });\n };\n Accordion.prototype.restoreContent = function (index) {\n var ctnElePos;\n if (isNOU(index)) {\n ctnElePos = this.element;\n } else {\n ctnElePos = this.element.querySelectorAll('.' + CLS_ITEM)[parseInt(index.toString(), 10)];\n }\n this.templateEle.forEach(function (eleStr) {\n if (!isNOU(ctnElePos.querySelector(eleStr))) {\n document.body.appendChild(ctnElePos.querySelector(eleStr)).style.display = 'none';\n }\n });\n };\n Accordion.prototype.updateItem = function (item, index) {\n if (!isNOU(item)) {\n var items = this.getItems();\n var itemObj = items[parseInt(index.toString(), 10)];\n items.splice(index, 1);\n this.restoreContent(index);\n var header = select('.' + CLS_HEADERCTN, item);\n var content = select('.' + CLS_CTENT, item);\n if (this.isReact || this.isAngular) {\n this.clearAccordionTemplate(header, 'header', CLS_HEADERCTN);\n this.clearAccordionTemplate(content, 'content', CLS_CTENT);\n }\n detach(item);\n this.addItem(itemObj, index);\n }\n };\n Accordion.prototype.setTemplate = function (template, toElement, index) {\n this.fetchElement(toElement, template, index);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.clearAccordionTemplate = function (templateEle, templateName, className) {\n if (this.registeredTemplate && this.registeredTemplate[\"\" + templateName]) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[\"\" + templateName].length; index++) {\n var registeredItem = registeredTemplates[\"\" + templateName][parseInt(index.toString(), 10)].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + className);\n if (!isNOU(closestItem) && closestItem === templateEle || isNOU(registeredItem.parentNode)) {\n this.clearTemplate([templateName], [registeredTemplates[\"\" + templateName][parseInt(index.toString(), 10)]]);\n break;\n }\n }\n } else if (this.portals && this.portals.length > 0) {\n var portals = this.portals;\n for (var index = 0; index < portals.length; index++) {\n var portalItem = portals[parseInt(index.toString(), 10)];\n var closestItem = closest(portalItem.containerInfo, '.' + className);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate([templateName], index);\n break;\n }\n }\n }\n };\n Accordion.prototype.getPersistData = function () {\n var keyEntity = ['expandedIndices'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {AccordionModel} newProp - It contains the new value of data.\n * @param {AccordionModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n Accordion.prototype.onPropertyChanged = function (newProp, oldProp) {\n var acrdn = this.element;\n var isRefresh = false;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProp = Object.keys(newProp.items);\n for (var j = 0; j < changedProp.length; j++) {\n var index = parseInt(Object.keys(newProp.items)[parseInt(j.toString(), 10)], 10);\n var property = Object.keys(newProp.items[parseInt(index.toString(), 10)]);\n for (var k = 0; k < property.length; k++) {\n var item = selectAll('.' + CLS_ITEM, this.element)[parseInt(index.toString(), 10)];\n var oldVal = Object(oldProp.items[parseInt(index.toString(), 10)])[\"\" + property[parseInt(k.toString(), 10)]];\n var newVal = Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property[parseInt(k.toString(), 10)]];\n var temp = property[parseInt(k.toString(), 10)];\n var content = select('.' + CLS_CTENT, item);\n if (temp === 'header' || temp === 'iconCss' || temp === 'expanded' || temp === 'content' && oldVal === '') {\n this.updateItem(item, index);\n }\n if (property[parseInt(k.toString(), 10)] === 'cssClass' && !isNOU(item)) {\n if (oldVal) {\n removeClass([item], oldVal.split(' '));\n }\n if (newVal) {\n addClass([item], newVal.split(' '));\n }\n }\n if (property[parseInt(k.toString(), 10)] === 'visible' && !isNOU(item)) {\n if (Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property[parseInt(k.toString(), 10)]] === false) {\n item.classList.add(CLS_ITEMHIDE);\n } else {\n item.classList.remove(CLS_ITEMHIDE);\n }\n }\n if (property[parseInt(k.toString(), 10)] === 'disabled' && !isNOU(item)) {\n this.enableItem(index, !newVal);\n }\n if (property.indexOf('header') < 0 && property[parseInt(k.toString(), 10)] === 'content' && !isNOU(item) && item.children.length === 2) {\n if (typeof newVal === 'function') {\n if (this.isAngular || this.isReact) {\n this.clearAccordionTemplate(content, property[parseInt(k.toString(), 10)], CLS_CTENT);\n }\n var activeContent = item.querySelector('.' + CLS_CTENT);\n activeContent.innerHTML = '';\n this.setTemplate(newVal, activeContent, index);\n } else {\n if (item.classList.contains(CLS_SLCTED)) {\n this.expandItem(false, index);\n }\n detach(item.querySelector('.' + CLS_CONTENT));\n }\n }\n }\n }\n } else {\n isRefresh = true;\n }\n break;\n case 'dataSource':\n case 'expandedIndices':\n if (this.expandedIndices === null) {\n this.expandedIndices = [];\n }\n isRefresh = true;\n break;\n case 'headerTemplate':\n this.initializeHeaderTemplate();\n isRefresh = true;\n break;\n case 'itemTemplate':\n this.initializeItemTemplate();\n isRefresh = true;\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.add(acrdn, CLS_RTL);\n } else {\n this.remove(acrdn, CLS_RTL);\n }\n break;\n case 'height':\n setStyle(this.element, {\n 'height': formatUnit(newProp.height)\n });\n break;\n case 'width':\n setStyle(this.element, {\n 'width': formatUnit(newProp.width)\n });\n break;\n case 'expandMode':\n if (newProp.expandMode === 'Single' && !isNOU(this.expandedIndices) && this.expandedIndices.length > 1) {\n this.expandItem(false);\n }\n break;\n }\n }\n if (isRefresh) {\n this.initExpand = [];\n if (!isNOU(this.expandedIndices) && this.expandedIndices.length > 0) {\n this.initExpand = this.expandedIndices;\n }\n this.destroyItems();\n this.renderItems();\n this.initItemExpand();\n }\n };\n __decorate([Collection([], AccordionItem)], Accordion.prototype, \"items\", void 0);\n __decorate([Property([])], Accordion.prototype, \"dataSource\", void 0);\n __decorate([Property()], Accordion.prototype, \"itemTemplate\", void 0);\n __decorate([Property()], Accordion.prototype, \"headerTemplate\", void 0);\n __decorate([Property('100%')], Accordion.prototype, \"width\", void 0);\n __decorate([Property('auto')], Accordion.prototype, \"height\", void 0);\n __decorate([Property([])], Accordion.prototype, \"expandedIndices\", void 0);\n __decorate([Property('Multiple')], Accordion.prototype, \"expandMode\", void 0);\n __decorate([Property(true)], Accordion.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([Complex({}, AccordionAnimationSettings)], Accordion.prototype, \"animation\", void 0);\n __decorate([Event()], Accordion.prototype, \"clicked\", void 0);\n __decorate([Event()], Accordion.prototype, \"expanding\", void 0);\n __decorate([Event()], Accordion.prototype, \"expanded\", void 0);\n __decorate([Event()], Accordion.prototype, \"created\", void 0);\n __decorate([Event()], Accordion.prototype, \"destroyed\", void 0);\n Accordion = __decorate([NotifyPropertyChanges], Accordion);\n return Accordion;\n}(Component);\nexport { Accordion };","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 @typescript-eslint/triple-slash-reference */\n/// <reference path='../common/menu-base-model.d.ts'/>\nimport { attributes, getUniqueID, Collection, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { getZindexPartial } from '@syncfusion/ej2-popups';\nimport { MenuBase, MenuItem } from '../common/menu-base';\n/**\n * The ContextMenu is a graphical user interface that appears on the user right click/touch hold operation.\n * ```html\n * <div id = 'target'></div>\n * <ul id = 'contextmenu'></ul>\n * ```\n * ```typescript\n * <script>\n * var contextMenuObj = new ContextMenu({items: [{ text: 'Cut' }, { text: 'Copy' },{ text: 'Paste' }], target: '#target'});\n * </script>\n * ```\n */\nvar ContextMenu = /** @class */function (_super) {\n __extends(ContextMenu, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {ContextMenuModel} options - Specifies the context menu model\n * @param {string} element - Specifies the element\n */\n function ContextMenu(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * For internal use only - prerender processing.\n *\n * @private\n * @returns {void}\n */\n ContextMenu.prototype.preRender = function () {\n this.isMenu = false;\n this.element.id = this.element.id || getUniqueID('ej2-contextmenu');\n _super.prototype.preRender.call(this);\n };\n ContextMenu.prototype.initialize = function () {\n this.template = this.itemTemplate ? this.itemTemplate : null;\n _super.prototype.initialize.call(this);\n attributes(this.element, {\n 'role': 'menubar',\n 'tabindex': '0'\n });\n this.element.style.zIndex = getZindexPartial(this.element).toString();\n };\n /**\n * This method is used to open the ContextMenu in specified position.\n *\n * @param {number} top - To specify ContextMenu vertical positioning.\n * @param {number} left - To specify ContextMenu horizontal positioning.\n * @param {HTMLElement} target - To calculate z-index for ContextMenu based upon the specified target.\n * @function open\n * @returns {void}\n */\n ContextMenu.prototype.open = function (top, left, target) {\n _super.prototype.openMenu.call(this, null, null, top, left, null, target);\n };\n /**\n * Closes the ContextMenu if it is opened.\n *\n * @function close\n * @returns {void}\n */\n ContextMenu.prototype.close = function () {\n _super.prototype.closeMenu.call(this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {ContextMenuModel} newProp - Specifies new properties\n * @param {ContextMenuModel} oldProp - Specifies old properties\n * @returns {void}\n */\n ContextMenu.prototype.onPropertyChanged = function (newProp, oldProp) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'filter':\n this.close();\n this.filter = newProp.filter;\n break;\n case 'target':\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n break;\n case 'itemTemplate':\n this.itemTemplate = newProp.itemTemplate;\n this.refresh();\n }\n }\n };\n /**\n * Get module name.\n *\n * @returns {string} - Module Name\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n __decorate([Property('')], ContextMenu.prototype, \"target\", void 0);\n __decorate([Property('')], ContextMenu.prototype, \"filter\", void 0);\n __decorate([Collection([], MenuItem)], ContextMenu.prototype, \"items\", void 0);\n __decorate([Property(null)], ContextMenu.prototype, \"itemTemplate\", void 0);\n __decorate([Property(false)], ContextMenu.prototype, \"enableScrolling\", void 0);\n ContextMenu = __decorate([NotifyPropertyChanges], ContextMenu);\n return ContextMenu;\n}(MenuBase);\nexport { ContextMenu };","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 @typescript-eslint/triple-slash-reference */\n/// <reference path='../common/menu-base-model.d.ts'/>\nimport { attributes, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { Browser, Complex, getUniqueID, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { MenuBase, FieldSettings } from '../common/menu-base';\nvar VMENU = 'e-vertical';\nvar SCROLLABLE = 'e-scrollable';\nvar HAMBURGER = 'e-hamburger';\n/**\n * The Menu is a graphical user interface that serve as navigation headers for your application or site.\n * ```html\n * <ul id = 'menu'></ul>\n * ```\n * ```typescript\n * <script>\n * var menuObj = new Menu({ items: [{ text: 'Home' }, { text: 'Contact Us' },{ text: 'Login' }]});\n * menuObj.appendTo(\"#menu\");\n * </script>\n * ```\n */\nvar Menu = /** @class */function (_super) {\n __extends(Menu, _super);\n /**\n * Constructor for creating the component.\n *\n * @private\n * @param {MenuModel} options - Specifies the menu model\n * @param {string} element - Specifies the element\n */\n function Menu(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.tempItems = [];\n return _this;\n }\n /**\n * Get module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n Menu.prototype.getModuleName = function () {\n return 'menu';\n };\n /**\n * For internal use only - prerender processing.\n *\n * @private\n * @returns {void}\n */\n Menu.prototype.preRender = function () {\n this.isMenu = true;\n this.element.id = this.element.id || getUniqueID('ej2-menu');\n if (this.template) {\n try {\n if (typeof this.template !== 'function' && document.querySelectorAll(this.template).length) {\n this.template = document.querySelector(this.template).innerHTML.trim();\n this.clearChanges();\n }\n } catch (e) {\n /* action on catch */\n }\n this.updateMenuItems(this.items);\n } else {\n this.updateMenuItems(this.items);\n }\n _super.prototype.preRender.call(this);\n };\n Menu.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n attributes(this.element, {\n 'role': 'menubar',\n 'tabindex': '0'\n });\n if (this.orientation === 'Vertical') {\n this.element.classList.add(VMENU);\n if (this.hamburgerMode && !this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.setAttribute('aria-orientation', 'vertical');\n } else {\n if (Browser.isDevice && !this.enableScrolling) {\n this.element.parentElement.classList.add(SCROLLABLE);\n }\n }\n if (this.hamburgerMode) {\n this.element.parentElement.classList.add(HAMBURGER);\n if (this.orientation === 'Horizontal') {\n this.element.classList.add('e-hide-menu');\n }\n }\n };\n Menu.prototype.updateMenuItems = function (items) {\n this.tempItems = items;\n this.items = [];\n this.tempItems.map(this.createMenuItems, this);\n this.setProperties({\n items: this.items\n }, true);\n this.tempItems = [];\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {MenuModel} newProp - Specifies the new properties.\n * @param {MenuModel} oldProp - Specifies the old properties.\n * @returns {void}\n */\n Menu.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'orientation':\n if (newProp.orientation === 'Vertical') {\n this.element.classList.add(VMENU);\n if (this.hamburgerMode) {\n if (!this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.remove('e-hide-menu');\n }\n this.element.setAttribute('aria-orientation', 'vertical');\n } else {\n this.element.classList.remove(VMENU);\n if (this.hamburgerMode) {\n if (!this.target) {\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n this.element.classList.add('e-hide-menu');\n }\n this.element.removeAttribute('aria-orientation');\n }\n break;\n case 'items':\n if (!Object.keys(oldProp.items).length) {\n this.updateMenuItems(newProp.items);\n }\n break;\n case 'hamburgerMode':\n if (!this.element.previousElementSibling) {\n _super.prototype.createHeaderContainer.call(this);\n }\n if (newProp.hamburgerMode) {\n this.element.parentElement.classList.add(HAMBURGER);\n [].slice.call(this.element.getElementsByClassName('e-blankicon')).forEach(function (li) {\n li.style[_this.enableRtl ? 'paddingRight' : 'paddingLeft'] = '';\n });\n } else {\n this.element.parentElement.classList.remove(HAMBURGER);\n if (this.orientation === 'Vertical') {\n this.setBlankIconStyle(this.element);\n }\n }\n if (this.orientation === 'Vertical') {\n if (!this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.remove('e-hide-menu');\n } else {\n if (this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n } else {\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n this.element.classList[newProp.hamburgerMode ? 'add' : 'remove']('e-hide-menu');\n }\n break;\n case 'title':\n if (this.hamburgerMode && this.element.previousElementSibling) {\n newProp.title = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(newProp.title) : newProp.title;\n this.element.previousElementSibling.querySelector('.e-menu-title').innerHTML = newProp.title;\n }\n break;\n case 'target':\n if (this.hamburgerMode) {\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n if (this.orientation === 'Horizontal') {\n if (!newProp.target) {\n if (!this.element.previousElementSibling) {\n _super.prototype.createHeaderContainer.call(this);\n }\n this.element.previousElementSibling.classList.remove(VMENU);\n } else {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.add('e-hide-menu');\n }\n }\n break;\n case 'template':\n this.template = newProp.template;\n this.refresh();\n break;\n }\n }\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n };\n Menu.prototype.createMenuItems = function (item) {\n var idx;\n var i;\n var items = this.items;\n var pIdField = this.getField('parentId');\n if (item[\"\" + pIdField]) {\n idx = this.getIndex(item[\"\" + pIdField].toString(), true);\n for (i = 0; i < idx.length; i++) {\n if (!items[idx[i]].items) {\n items[idx[i]].items = [];\n }\n items = items[idx[i]].items;\n }\n items.push(item);\n } else {\n this.items.push(item);\n }\n };\n /**\n * This method is used to open the Menu in hamburger mode.\n *\n * @function open\n * @returns {void}\n */\n Menu.prototype.open = function () {\n _super.prototype.openHamburgerMenu.call(this);\n };\n /**\n * Closes the Menu if it is opened in hamburger mode.\n *\n * @function close\n * @returns {void}\n */\n Menu.prototype.close = function () {\n _super.prototype.closeHamburgerMenu.call(this);\n };\n __decorate([Property('Horizontal')], Menu.prototype, \"orientation\", void 0);\n __decorate([Property('')], Menu.prototype, \"target\", void 0);\n __decorate([Property(null)], Menu.prototype, \"template\", void 0);\n __decorate([Property(false)], Menu.prototype, \"enableScrolling\", void 0);\n __decorate([Property(false)], Menu.prototype, \"hamburgerMode\", void 0);\n __decorate([Property('Menu')], Menu.prototype, \"title\", void 0);\n __decorate([Property(true)], Menu.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([Complex({\n itemId: 'id',\n text: 'text',\n parentId: 'parentId',\n iconCss: 'iconCss',\n url: 'url',\n separator: 'separator',\n children: 'items'\n }, FieldSettings)], Menu.prototype, \"fields\", void 0);\n Menu = __decorate([NotifyPropertyChanges], Menu);\n return Menu;\n}(MenuBase);\nexport { Menu };","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};\nimport { Component, Property, Event, closest, Collection, Complex, attributes, detach, isNullOrUndefined, animationMode } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, select, isVisible } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Browser, formatUnit, L10n } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, isNullOrUndefined as isNOU, selectAll, addClass, removeClass, remove } from '@syncfusion/ej2-base';\nimport { EventHandler, rippleEffect, Touch, compile, Animation } from '@syncfusion/ej2-base';\nimport { getRandomId, SanitizeHtmlHelper, Draggable } from '@syncfusion/ej2-base';\nimport { Toolbar } from '../toolbar/toolbar';\nvar CLS_TAB = 'e-tab';\nvar CLS_HEADER = 'e-tab-header';\nvar CLS_BLA_TEM = 'blazor-template';\nvar CLS_CONTENT = 'e-content';\nvar CLS_NEST = 'e-nested';\nvar CLS_ITEMS = 'e-items';\nvar CLS_ITEM = 'e-item';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_RTL = 'e-rtl';\nvar CLS_ACTIVE = 'e-active';\nvar CLS_DISABLE = 'e-disable';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_FOCUS = 'e-focused';\nvar CLS_ICONS = 'e-icons';\nvar CLS_ICON = 'e-icon';\nvar CLS_ICON_TAB = 'e-icon-tab';\nvar CLS_ICON_CLOSE = 'e-close-icon';\nvar CLS_CLOSE_SHOW = 'e-close-show';\nvar CLS_TEXT = 'e-tab-text';\nvar CLS_INDICATOR = 'e-indicator';\nvar CLS_WRAP = 'e-tab-wrap';\nvar CLS_TEXT_WRAP = 'e-text-wrap';\nvar CLS_TAB_ICON = 'e-tab-icon';\nvar CLS_TB_ITEMS = 'e-toolbar-items';\nvar CLS_TB_ITEM = 'e-toolbar-item';\nvar CLS_TB_POP = 'e-toolbar-pop';\nvar CLS_TB_POPUP = 'e-toolbar-popup';\nvar CLS_HOR_NAV = 'e-hor-nav';\nvar CLS_POPUP_OPEN = 'e-popup-open';\nvar CLS_POPUP_CLOSE = 'e-popup-close';\nvar CLS_PROGRESS = 'e-progress';\nvar CLS_IGNORE = 'e-ignore';\nvar CLS_OVERLAY = 'e-overlay';\nvar CLS_HSCRCNT = 'e-hscroll-content';\nvar CLS_VSCRCNT = 'e-vscroll-content';\nvar CLS_VTAB = 'e-vertical-tab';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_VLEFT = 'e-vertical-left';\nvar CLS_VRIGHT = 'e-vertical-right';\nvar CLS_HBOTTOM = 'e-horizontal-bottom';\nvar CLS_FILL = 'e-fill-mode';\nvar TABITEMPREFIX = 'tabitem_';\nvar CLS_REORDER_ACTIVE_ITEM = 'e-reorder-active-item';\n/**\n * Objects used for configuring the Tab selecting item action properties.\n */\nvar TabActionSettings = /** @class */function (_super) {\n __extends(TabActionSettings, _super);\n function TabActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('SlideLeftIn')], TabActionSettings.prototype, \"effect\", void 0);\n __decorate([Property(600)], TabActionSettings.prototype, \"duration\", void 0);\n __decorate([Property('ease')], TabActionSettings.prototype, \"easing\", void 0);\n return TabActionSettings;\n}(ChildProperty);\nexport { TabActionSettings };\n/**\n * Objects used for configuring the Tab animation properties.\n */\nvar TabAnimationSettings = /** @class */function (_super) {\n __extends(TabAnimationSettings, _super);\n function TabAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Complex({\n effect: 'SlideLeftIn',\n duration: 600,\n easing: 'ease'\n }, TabActionSettings)], TabAnimationSettings.prototype, \"previous\", void 0);\n __decorate([Complex({\n effect: 'SlideRightIn',\n duration: 600,\n easing: 'ease'\n }, TabActionSettings)], TabAnimationSettings.prototype, \"next\", void 0);\n return TabAnimationSettings;\n}(ChildProperty);\nexport { TabAnimationSettings };\n/**\n * Objects used for configuring the Tab item header properties.\n */\nvar Header = /** @class */function (_super) {\n __extends(Header, _super);\n function Header() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('')], Header.prototype, \"text\", void 0);\n __decorate([Property('')], Header.prototype, \"iconCss\", void 0);\n __decorate([Property('left')], Header.prototype, \"iconPosition\", void 0);\n return Header;\n}(ChildProperty);\nexport { Header };\n/**\n * An array of object that is used to configure the Tab.\n */\nvar TabItem = /** @class */function (_super) {\n __extends(TabItem, _super);\n function TabItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Complex({}, Header)], TabItem.prototype, \"header\", void 0);\n __decorate([Property(null)], TabItem.prototype, \"headerTemplate\", void 0);\n __decorate([Property('')], TabItem.prototype, \"content\", void 0);\n __decorate([Property('')], TabItem.prototype, \"cssClass\", void 0);\n __decorate([Property(false)], TabItem.prototype, \"disabled\", void 0);\n __decorate([Property(true)], TabItem.prototype, \"visible\", void 0);\n __decorate([Property()], TabItem.prototype, \"id\", void 0);\n __decorate([Property(-1)], TabItem.prototype, \"tabIndex\", void 0);\n return TabItem;\n}(ChildProperty);\nexport { TabItem };\n/**\n * Tab is a content panel to show multiple contents in a single space, one at a time.\n * Each Tab item has an associated content, that will be displayed based on the active Tab header item.\n * ```html\n * <div id=\"tab\"></div>\n * <script>\n * var tabObj = new Tab();\n * tab.appendTo(\"#tab\");\n * </script>\n * ```\n */\nvar Tab = /** @class */function (_super) {\n __extends(Tab, _super);\n /**\n * Initializes a new instance of the Tab class.\n *\n * @param {TabModel} options - Specifies Tab model properties as options.\n * @param {string | HTMLElement} element - Specifies the element that is rendered as a Tab.\n */\n function Tab(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.show = {};\n _this.hide = {};\n _this.maxHeight = 0;\n _this.title = 'Close';\n _this.isInteracted = false;\n _this.lastIndex = 0;\n _this.isAdd = false;\n _this.isIconAlone = false;\n _this.draggableItems = [];\n _this.resizeContext = _this.refreshActiveTabBorder.bind(_this);\n /**\n * Contains the keyboard configuration of the Tab.\n */\n _this.keyConfigs = {\n tab: 'tab',\n home: 'home',\n end: 'end',\n enter: 'enter',\n space: 'space',\n delete: 'delete',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow'\n };\n return _this;\n }\n /**\n * Removes the component from the DOM and detaches all its related event handlers, attributes and classes.\n *\n * @returns {void}\n */\n Tab.prototype.destroy = function () {\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n if (!isNOU(this.tbObj)) {\n this.tbObj.destroy();\n this.tbObj = null;\n }\n this.unWireEvents();\n this.element.removeAttribute('aria-disabled');\n this.expTemplateContent();\n if (!this.isTemplate) {\n while (this.element.firstElementChild) {\n remove(this.element.firstElementChild);\n }\n } else {\n var cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n this.element.classList.remove(CLS_TEMPLATE);\n if (!isNOU(cntEle)) {\n cntEle.innerHTML = this.cnt;\n }\n }\n if (this.btnCls) {\n this.btnCls = null;\n }\n this.hdrEle = null;\n this.cntEle = null;\n this.tbItems = null;\n this.tbItem = null;\n this.tbPop = null;\n this.prevItem = null;\n this.popEle = null;\n this.bdrLine = null;\n this.content = null;\n this.dragItem = null;\n this.cloneElement = null;\n this.draggingItems = [];\n if (this.draggableItems && this.draggableItems.length > 0) {\n for (var i = 0; i < this.draggableItems.length; i++) {\n this.draggableItems[i].destroy();\n this.draggableItems[i] = null;\n }\n this.draggableItems = [];\n }\n _super.prototype.destroy.call(this);\n this.trigger('destroyed');\n };\n /**\n * Refresh the tab component\n *\n * @returns {void}\n */\n Tab.prototype.refresh = function () {\n if (this.isReact) {\n this.clearTemplate();\n }\n _super.prototype.refresh.call(this);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Reorganizes and adjusts the Tab headers to fit the available width without re-rendering the entire Tab component.\n *\n * This method is useful for optimizing the layout when:\n * - A hidden tab item becomes visible.\n * - The number of tab items changes dynamically.\n *\n * @returns {void} This method does not return a value.\n */\n Tab.prototype.refreshOverflow = function () {\n if (!isNOU(this.tbObj)) {\n this.tbObj.refreshOverflow();\n }\n };\n /**\n * Initialize component\n *\n * @private\n * @returns {void}\n */\n Tab.prototype.preRender = function () {\n var nested = closest(this.element, '.' + CLS_CONTENT);\n this.prevIndex = 0;\n this.isNested = false;\n this.isPopup = false;\n this.initRender = true;\n this.isSwiped = false;\n this.itemIndexArray = [];\n this.templateEle = [];\n if (this.allowDragAndDrop) {\n this.dragArea = !isNOU(this.dragArea) ? this.dragArea : '#' + this.element.id + ' ' + ('.' + CLS_HEADER);\n }\n if (!isNOU(nested)) {\n nested.parentElement.classList.add(CLS_NEST);\n this.isNested = true;\n }\n var name = Browser.info.name;\n var css = name === 'msie' ? 'e-ie' : name === 'edge' ? 'e-edge' : name === 'safari' ? 'e-safari' : '';\n setStyle(this.element, {\n 'width': formatUnit(this.width),\n 'height': formatUnit(this.height)\n });\n this.setCssClass(this.element, this.cssClass, true);\n attributes(this.element, {\n 'aria-disabled': 'false'\n });\n this.setCssClass(this.element, css, true);\n this.updatePopAnimationConfig();\n };\n /**\n * Initialize the component rendering\n *\n * @private\n * @returns {void}\n */\n Tab.prototype.render = function () {\n var _this = this;\n this.btnCls = this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_ICON_CLOSE,\n attrs: {\n title: this.title\n }\n });\n this.tabId = this.element.id.length > 0 ? '-' + this.element.id : getRandomId();\n this.renderContainer();\n this.wireEvents();\n this.initRender = false;\n if (this.isReact && this.portals && this.portals.length > 0) {\n this.renderReactTemplates(function () {\n _this.refreshOverflow();\n _this.refreshActiveBorder();\n });\n }\n };\n Tab.prototype.renderContainer = function () {\n var ele = this.element;\n this.items.forEach(function (item, index) {\n if (isNOU(item.id) && !isNOU(item.setProperties)) {\n item.setProperties({\n id: TABITEMPREFIX + index.toString()\n }, true);\n }\n });\n if (this.items.length > 0 && ele.children.length === 0) {\n ele.appendChild(this.createElement('div', {\n className: CLS_CONTENT\n }));\n this.setOrientation(this.headerPlacement, this.createElement('div', {\n className: CLS_HEADER\n }));\n this.isTemplate = false;\n } else if (this.element.children.length > 0) {\n this.isTemplate = true;\n ele.classList.add(CLS_TEMPLATE);\n var header = ele.querySelector('.' + CLS_HEADER);\n if (header && this.headerPlacement === 'Bottom') {\n this.setOrientation(this.headerPlacement, header);\n }\n }\n if (!isNOU(select('.' + CLS_HEADER, this.element)) && !isNOU(select('.' + CLS_CONTENT, this.element))) {\n this.renderHeader();\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n if (!isNOU(this.tbItems)) {\n rippleEffect(this.tbItems, {\n selector: '.e-tab-wrap'\n });\n }\n this.renderContent();\n if (selectAll('.' + CLS_TB_ITEM, this.element).length > 0) {\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n this.bdrLine = this.createElement('div', {\n className: CLS_INDICATOR + ' ' + CLS_HIDDEN + ' ' + CLS_IGNORE\n });\n var scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!isNOU(scrCnt)) {\n scrCnt.insertBefore(this.bdrLine, scrCnt.firstChild);\n } else {\n this.tbItems.insertBefore(this.bdrLine, this.tbItems.firstChild);\n }\n this.setContentHeight(true);\n this.select(this.selectedItem);\n }\n this.setRTL(this.enableRtl);\n }\n };\n Tab.prototype.renderHeader = function () {\n var _this = this;\n var hdrPlace = this.headerPlacement;\n var tabItems = [];\n this.hdrEle = this.getTabHeader();\n this.addVerticalClass();\n if (!this.isTemplate) {\n tabItems = this.parseObject(this.items, 0);\n } else {\n if (this.element.children.length > 1 && this.element.children[1].classList.contains(CLS_HEADER)) {\n this.setProperties({\n headerPlacement: 'Bottom'\n }, true);\n }\n var count = this.hdrEle.children.length;\n var hdrItems = [];\n for (var i = 0; i < count; i++) {\n hdrItems.push(this.hdrEle.children.item(i));\n }\n if (count > 0) {\n var tabItems_1 = this.createElement('div', {\n className: CLS_ITEMS\n });\n this.hdrEle.appendChild(tabItems_1);\n hdrItems.forEach(function (item, index) {\n _this.lastIndex = index;\n var attr = {\n className: CLS_ITEM,\n id: CLS_ITEM + _this.tabId + '_' + index\n };\n var txt = _this.createElement('span', {\n className: CLS_TEXT,\n attrs: {\n 'role': 'presentation'\n }\n }).outerHTML;\n var cont = _this.createElement('div', {\n className: CLS_TEXT_WRAP,\n innerHTML: txt + _this.btnCls.outerHTML\n }).outerHTML;\n var wrap = _this.createElement('div', {\n className: CLS_WRAP,\n innerHTML: cont,\n attrs: {\n role: 'tab',\n tabIndex: '-1',\n 'aria-selected': 'false',\n 'aria-controls': CLS_CONTENT + _this.tabId + '_' + index,\n 'aria-disabled': 'false'\n }\n });\n wrap.querySelector('.' + CLS_TEXT).appendChild(item);\n tabItems_1.appendChild(_this.createElement('div', attr));\n selectAll('.' + CLS_ITEM, tabItems_1)[index].appendChild(wrap);\n });\n }\n }\n this.tbObj = new Toolbar({\n width: hdrPlace === 'Left' || hdrPlace === 'Right' ? 'auto' : '100%',\n height: hdrPlace === 'Left' || hdrPlace === 'Right' ? '100%' : 'auto',\n overflowMode: this.overflowMode,\n items: tabItems.length !== 0 ? tabItems : [],\n clicked: this.clickHandler.bind(this),\n scrollStep: this.scrollStep,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n cssClass: this.cssClass\n });\n this.tbObj.isStringTemplate = true;\n this.tbObj.createElement = this.createElement;\n this.tbObj.appendTo(this.hdrEle);\n attributes(this.hdrEle, {\n role: 'tablist'\n });\n if (!isNOU(this.element.getAttribute('aria-label'))) {\n this.hdrEle.setAttribute('aria-label', this.element.getAttribute('aria-label'));\n this.element.removeAttribute('aria-label');\n } else if (!isNOU(this.element.getAttribute('aria-labelledby'))) {\n this.hdrEle.setAttribute('aria-labelledby', this.element.getAttribute('aria-labelledby'));\n this.element.removeAttribute('aria-labelledby');\n }\n this.setCloseButton(this.showCloseButton);\n var toolbarHeader = this.tbObj.element.querySelector('.' + CLS_TB_ITEMS);\n if (!isNOU(toolbarHeader)) {\n if (isNOU(toolbarHeader.id) || toolbarHeader.id === '') {\n toolbarHeader.id = this.element.id + '_' + 'tab_header_items';\n }\n }\n };\n Tab.prototype.createContentElement = function (index) {\n var contentElement = this.createElement('div', {\n id: CLS_CONTENT + this.tabId + '_' + index,\n className: CLS_ITEM,\n attrs: {\n 'role': 'tabpanel',\n 'aria-labelledby': CLS_ITEM + this.tabId + '_' + index\n }\n });\n if (['Dynamic', 'Demand'].indexOf(this.loadOn) !== -1 || this.loadOn === 'Init' && index === this.selectedItem) {\n addClass([contentElement], CLS_ACTIVE);\n }\n return contentElement;\n };\n Tab.prototype.renderContent = function () {\n this.cntEle = select('.' + CLS_CONTENT, this.element);\n var hdrItem = selectAll('.' + CLS_TB_ITEM, this.element);\n if (this.isTemplate) {\n this.cnt = this.cntEle.children.length > 0 ? this.cntEle.innerHTML : '';\n var contents = this.cntEle.children;\n for (var i = 0; i < hdrItem.length; i++) {\n if (contents.length - 1 >= i) {\n addClass([contents.item(i)], CLS_ITEM);\n attributes(contents.item(i), {\n 'role': 'tabpanel',\n 'aria-labelledby': CLS_ITEM + this.tabId + '_' + i\n });\n contents.item(i).id = CLS_CONTENT + this.tabId + '_' + i;\n }\n }\n } else {\n if (selectAll('.' + CLS_TB_ITEM, this.element).length > 0) {\n if (this.loadOn === 'Init') {\n for (var i = 0; i < this.itemIndexArray.length; i++) {\n if (this.itemIndexArray[i]) {\n this.cntEle.appendChild(this.createContentElement(Number(this.extIndex(this.itemIndexArray[i]))));\n }\n }\n } else if (this.loadOn === 'Dynamic') {\n this.cntEle.appendChild(this.createContentElement(this.selectedItem > 0 ? this.selectedItem : Number(this.extIndex(this.itemIndexArray[0]))));\n }\n }\n }\n };\n Tab.prototype.reRenderItems = function () {\n this.renderContainer();\n if (!isNOU(this.cntEle)) {\n this.bindSwipeEvents();\n }\n };\n Tab.prototype.parseObject = function (items, index) {\n var _this = this;\n var tbItems = Array.prototype.slice.call(selectAll('.e-tab-header .' + CLS_TB_ITEM, this.element));\n var maxId = this.lastIndex;\n if (!this.isReplace && tbItems.length > 0) {\n maxId = this.getMaxIndicesFromItems(tbItems);\n }\n var tItems = [];\n var txtWrapEle;\n var spliceArray = [];\n var i = 0;\n items.forEach(function (item, i) {\n var pos = isNOU(item.header) || isNOU(item.header.iconPosition) ? '' : item.header.iconPosition;\n var css = isNOU(item.header) || isNOU(item.header.iconCss) ? '' : item.header.iconCss;\n if (isNOU(item.headerTemplate) && (isNOU(item.header) || isNOU(item.header.text) || item.header.text.length === 0 && css === '')) {\n spliceArray.push(i);\n return;\n }\n var txt = item.headerTemplate || item.header.text;\n if (typeof txt === 'string' && _this.enableHtmlSanitizer) {\n txt = SanitizeHtmlHelper.sanitize(txt);\n }\n var itemIndex;\n if (_this.isReplace && !isNOU(_this.tbId) && _this.tbId !== '') {\n itemIndex = parseInt(_this.tbId.substring(_this.tbId.lastIndexOf('_') + 1), 10);\n _this.tbId = '';\n } else {\n itemIndex = index + i;\n }\n _this.lastIndex = tbItems.length === 0 ? i : _this.isReplace ? itemIndex : maxId + 1 + i;\n var disabled = item.disabled ? ' ' + CLS_DISABLE + ' ' + CLS_OVERLAY : '';\n var hidden = item.visible === false ? ' ' + CLS_HIDDEN : '';\n txtWrapEle = _this.createElement('div', {\n className: CLS_TEXT,\n attrs: {\n 'role': 'presentation'\n }\n });\n var tHtml = txt instanceof Object ? txt.outerHTML : txt;\n var txtEmpty = !isNOU(tHtml) && tHtml !== '';\n if (!isNOU(txt.tagName)) {\n txtWrapEle.appendChild(txt);\n } else {\n _this.headerTextCompile(txtWrapEle, txt, i);\n }\n var tEle;\n var icon = _this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n var tCont = _this.createElement('div', {\n className: CLS_TEXT_WRAP\n });\n tCont.appendChild(txtWrapEle);\n if (txt !== '' && txt !== undefined && css !== '') {\n if (pos === 'left' || pos === 'top') {\n tCont.insertBefore(icon, tCont.firstElementChild);\n } else {\n tCont.appendChild(icon);\n }\n tEle = txtWrapEle;\n _this.isIconAlone = false;\n } else {\n tEle = css === '' ? txtWrapEle : icon;\n if (tEle === icon) {\n detach(txtWrapEle);\n tCont.appendChild(icon);\n _this.isIconAlone = true;\n }\n }\n var tabIndex = isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString();\n var wrapAttrs = item.disabled ? {\n role: 'tab',\n 'aria-disabled': 'true'\n } : {\n tabIndex: tabIndex,\n 'data-tabindex': tabIndex,\n role: 'tab',\n 'aria-selected': 'false',\n 'aria-disabled': 'false'\n };\n tCont.appendChild(_this.btnCls.cloneNode(true));\n var wrap = _this.createElement('div', {\n className: CLS_WRAP,\n attrs: wrapAttrs\n });\n wrap.appendChild(tCont);\n if (_this.itemIndexArray instanceof Array) {\n _this.itemIndexArray.splice(index + i, 0, CLS_ITEM + _this.tabId + '_' + _this.lastIndex);\n }\n var attrObj = {\n id: CLS_ITEM + _this.tabId + '_' + _this.lastIndex,\n 'data-id': item.id\n };\n var tItem = {\n htmlAttributes: attrObj,\n template: wrap\n };\n tItem.cssClass = (item.cssClass !== undefined ? item.cssClass : ' ') + ' ' + disabled + ' ' + hidden + ' ' + (css !== '' ? 'e-i' + pos : '') + ' ' + (!txtEmpty ? CLS_ICON : '');\n if (pos === 'top' || pos === 'bottom') {\n _this.element.classList.add('e-vertical-icon');\n }\n tItems.push(tItem);\n i++;\n });\n if (!this.isAdd) {\n spliceArray.forEach(function (spliceItemIndex) {\n _this.items.splice(spliceItemIndex, 1);\n });\n }\n if (this.isIconAlone) {\n this.element.classList.add(CLS_ICON_TAB);\n } else {\n this.element.classList.remove(CLS_ICON_TAB);\n }\n return tItems;\n };\n Tab.prototype.removeActiveClass = function () {\n var tabHeader = this.getTabHeader();\n if (tabHeader) {\n var tabItems = selectAll('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE, tabHeader);\n [].slice.call(tabItems).forEach(function (node) {\n return node.classList.remove(CLS_ACTIVE);\n });\n [].slice.call(tabItems).forEach(function (node) {\n return node.firstElementChild.setAttribute('aria-selected', 'false');\n });\n }\n };\n Tab.prototype.checkPopupOverflow = function (ele) {\n this.tbPop = select('.' + CLS_TB_POP, this.element);\n var popIcon = select('.e-hor-nav', this.element);\n var tbrItems = select('.' + CLS_TB_ITEMS, this.element);\n var lastChild = tbrItems.lastChild;\n var isOverflow = false;\n if (!this.isVertical() && (this.enableRtl && popIcon.offsetLeft + popIcon.offsetWidth > tbrItems.offsetLeft || !this.enableRtl && popIcon.offsetLeft < tbrItems.offsetWidth)) {\n isOverflow = true;\n } else if (this.isVertical() && popIcon.offsetTop < lastChild.offsetTop + lastChild.offsetHeight) {\n isOverflow = true;\n }\n if (isOverflow) {\n ele.classList.add(CLS_TB_POPUP);\n this.tbPop.insertBefore(ele, selectAll('.' + CLS_TB_POPUP, this.tbPop)[0]);\n }\n return true;\n };\n Tab.prototype.popupHandler = function (target) {\n var ripEle = target.querySelector('.e-ripple-element');\n if (!isNOU(ripEle)) {\n ripEle.outerHTML = '';\n target.querySelector('.' + CLS_WRAP).classList.remove('e-ripple');\n }\n this.tbItem = selectAll('.' + CLS_TB_ITEMS + ' .' + CLS_TB_ITEM, this.hdrEle);\n var lastChild = this.tbItem[this.tbItem.length - 1];\n if (this.tbItem.length !== 0) {\n target.classList.remove(CLS_TB_POPUP);\n target.removeAttribute('style');\n this.tbItems.appendChild(target);\n this.actEleId = target.id;\n if (this.checkPopupOverflow(lastChild)) {\n var prevEle = this.tbItems.lastChild.previousElementSibling;\n this.checkPopupOverflow(prevEle);\n }\n this.isPopup = true;\n }\n return selectAll('.' + CLS_TB_ITEM, this.tbItems).length - 1;\n };\n Tab.prototype.setCloseButton = function (val) {\n var trg = select('.' + CLS_HEADER, this.element);\n if (val === true) {\n trg.classList.add(CLS_CLOSE_SHOW);\n } else {\n trg.classList.remove(CLS_CLOSE_SHOW);\n }\n this.refreshOverflow();\n this.refreshActiveTabBorder();\n };\n Tab.prototype.prevCtnAnimation = function (prev, current) {\n var animation;\n var checkRTL = this.enableRtl || this.element.classList.contains(CLS_RTL);\n if (this.isPopup || prev <= current) {\n if (this.animation.previous.effect === 'SlideLeftIn') {\n animation = {\n name: 'SlideLeftOut',\n duration: this.animation.previous.duration,\n timingFunction: this.animation.previous.easing\n };\n } else {\n animation = null;\n }\n } else {\n if (this.animation.next.effect === 'SlideRightIn') {\n animation = {\n name: 'SlideRightOut',\n duration: this.animation.next.duration,\n timingFunction: this.animation.next.easing\n };\n } else {\n animation = null;\n }\n }\n return animation;\n };\n Tab.prototype.triggerPrevAnimation = function (oldCnt, prevIndex) {\n var _this = this;\n var animateObj = this.prevCtnAnimation(prevIndex, this.selectedItem);\n if (!isNOU(animateObj)) {\n animateObj.begin = function () {\n setStyle(oldCnt, {\n 'position': 'absolute'\n });\n oldCnt.classList.add(CLS_PROGRESS);\n oldCnt.classList.add('e-view');\n };\n animateObj.end = function () {\n oldCnt.style.display = 'none';\n oldCnt.classList.remove(CLS_ACTIVE);\n oldCnt.classList.remove(CLS_PROGRESS);\n oldCnt.classList.remove('e-view');\n setStyle(oldCnt, {\n 'display': '',\n 'position': ''\n });\n if (oldCnt.childNodes.length === 0 && !_this.isTemplate) {\n detach(oldCnt);\n }\n };\n new Animation(animateObj).animate(oldCnt);\n } else {\n oldCnt.classList.remove(CLS_ACTIVE);\n }\n };\n Tab.prototype.triggerAnimation = function (id, value) {\n var _this = this;\n var prevIndex = this.prevIndex;\n var oldCnt;\n var itemCollection = [].slice.call(this.element.querySelector('.' + CLS_CONTENT).children);\n itemCollection.forEach(function (item) {\n if (item.id === _this.prevActiveEle) {\n oldCnt = item;\n }\n });\n var prevEle = this.tbItem[prevIndex];\n var newCnt = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNOU(oldCnt) && !isNOU(prevEle)) {\n var idNo = this.extIndex(prevEle.id);\n oldCnt = this.getTrgContent(this.cntEle, idNo);\n }\n if (!isNOU(newCnt)) {\n this.prevActiveEle = newCnt.id;\n }\n var isPrevent = isNOU(this.animation) || isNOU(this.animation.next.effect) || isNOU(this.animation.previous.effect) || this.animation.previous.effect === 'None' || this.animation.next.effect === 'None';\n if (this.initRender || value === false || isPrevent) {\n if (oldCnt && oldCnt !== newCnt) {\n oldCnt.classList.remove(CLS_ACTIVE);\n }\n return;\n }\n var cnt = select('.' + CLS_CONTENT, this.element);\n var animateObj;\n if (this.prevIndex > this.selectedItem && !this.isPopup) {\n var openEff = this.animation.previous.effect;\n animateObj = {\n name: openEff === 'None' ? '' : openEff !== 'SlideLeftIn' ? openEff : 'SlideLeftIn',\n duration: this.animation.previous.duration === 0 && animationMode === 'Enable' ? 600 : this.animation.previous.duration,\n timingFunction: this.animation.previous.easing\n };\n } else if (this.isPopup || this.prevIndex < this.selectedItem || this.prevIndex === this.selectedItem) {\n var clsEff = this.animation.next.effect;\n animateObj = {\n name: clsEff === 'None' ? '' : clsEff !== 'SlideRightIn' ? clsEff : 'SlideRightIn',\n duration: this.animation.next.duration === 0 && animationMode === 'Enable' ? 600 : this.animation.next.duration,\n timingFunction: this.animation.next.easing\n };\n }\n animateObj.progress = function () {\n cnt.classList.add(CLS_PROGRESS);\n _this.setActiveBorder();\n };\n animateObj.end = function () {\n cnt.classList.remove(CLS_PROGRESS);\n newCnt.classList.add(CLS_ACTIVE);\n };\n if (!this.initRender && !isNOU(oldCnt)) {\n this.triggerPrevAnimation(oldCnt, prevIndex);\n }\n this.isPopup = false;\n if (animateObj.name === '') {\n newCnt.classList.add(CLS_ACTIVE);\n } else {\n new Animation(animateObj).animate(newCnt);\n }\n };\n Tab.prototype.keyPressed = function (trg) {\n var trgParent = closest(trg, '.' + CLS_HEADER + ' .' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (!isNOU(this.popEle) && trg.classList.contains('e-hor-nav')) {\n this.popEle.classList.contains(CLS_POPUP_OPEN) ? this.popObj.hide(this.hide) : this.popObj.show(this.show);\n } else if (trg.classList.contains('e-scroll-nav')) {\n trg.click();\n } else {\n if (!isNOU(trgParent) && trgParent.classList.contains(CLS_ACTIVE) === false) {\n this.selectTab(trgIndex, null, true);\n if (!isNOU(this.popEle)) {\n this.popObj.hide(this.hide);\n }\n }\n }\n };\n Tab.prototype.getTabHeader = function () {\n if (isNOU(this.element)) {\n return undefined;\n }\n var headers = [].slice.call(this.element.children).filter(function (e) {\n return e.classList.contains(CLS_HEADER);\n });\n if (headers.length > 0) {\n return headers[0];\n } else {\n var wrap = [].slice.call(this.element.children).filter(function (e) {\n return !e.classList.contains(CLS_BLA_TEM);\n })[0];\n if (!wrap) {\n return undefined;\n }\n return [].slice.call(wrap.children).filter(function (e) {\n return e.classList.contains(CLS_HEADER);\n })[0];\n }\n };\n Tab.prototype.getEleIndex = function (item) {\n return Array.prototype.indexOf.call(selectAll('.' + CLS_TB_ITEM, this.getTabHeader()), item);\n };\n Tab.prototype.extIndex = function (id) {\n return id.replace(CLS_ITEM + this.tabId + '_', '');\n };\n Tab.prototype.getMaxIndicesFromItems = function (tbItems) {\n var _this = this;\n var idList = [];\n tbItems.forEach(function (item) {\n idList.push(_this.getIndexFromEle(item.id));\n });\n return Math.max.apply(Math, idList);\n };\n Tab.prototype.expTemplateContent = function () {\n var _this = this;\n this.templateEle.forEach(function (eleStr) {\n if (!isNOU(_this.element.querySelector(eleStr))) {\n document.body.appendChild(_this.element.querySelector(eleStr)).style.display = 'none';\n }\n });\n };\n Tab.prototype.templateCompile = function (ele, cnt, index) {\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content', index);\n if (tempEle.childNodes.length !== 0) {\n ele.appendChild(tempEle);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Tab.prototype.compileElement = function (ele, val, prop, index) {\n var templateFn;\n if (typeof val === 'string') {\n val = val.trim();\n if (this.isVue) {\n templateFn = compile(this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(val) : val);\n } else {\n ele.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(val) : val;\n }\n } else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNOU(templateFn)) {\n templateFUN = templateFn({}, this, prop);\n }\n if (!isNOU(templateFn) && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Tab.prototype.headerTextCompile = function (element, text, index) {\n this.compileElement(element, text, 'headerTemplate', index);\n };\n Tab.prototype.getContent = function (ele, cnt, callType, index) {\n var eleStr;\n cnt = isNOU(cnt) ? '' : cnt;\n if (typeof cnt === 'string' || isNOU(cnt.innerHTML)) {\n if (typeof cnt === 'string' && this.enableHtmlSanitizer) {\n cnt = SanitizeHtmlHelper.sanitize(cnt);\n }\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n var eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n if (callType === 'clone') {\n ele.appendChild(eleVal.cloneNode(true));\n } else {\n ele.appendChild(eleVal);\n eleVal.style.display = '';\n }\n } else {\n this.templateCompile(ele, cnt, index);\n }\n } else {\n this.templateCompile(ele, cnt, index);\n }\n } else {\n ele.appendChild(cnt);\n }\n if (!isNOU(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n };\n Tab.prototype.getTrgContent = function (cntEle, no) {\n var ele;\n if (this.element.classList.contains(CLS_NEST)) {\n ele = select('.' + CLS_NEST + '> .' + CLS_CONTENT + ' > #' + CLS_CONTENT + this.tabId + '_' + no, this.element);\n } else {\n ele = this.findEle(cntEle.children, CLS_CONTENT + this.tabId + '_' + no);\n }\n return ele;\n };\n Tab.prototype.findEle = function (items, key) {\n var ele;\n for (var i = 0; i < items.length; i++) {\n if (items[i].id === key) {\n ele = items[i];\n break;\n }\n }\n return ele;\n };\n Tab.prototype.isVertical = function () {\n var isVertical = this.headerPlacement === 'Left' || this.headerPlacement === 'Right' ? true : false;\n this.scrCntClass = isVertical ? CLS_VSCRCNT : CLS_HSCRCNT;\n return isVertical;\n };\n Tab.prototype.addVerticalClass = function () {\n if (this.isVertical()) {\n var tbPos = this.headerPlacement === 'Left' ? CLS_VLEFT : CLS_VRIGHT;\n addClass([this.hdrEle], [CLS_VERTICAL, tbPos]);\n if (!this.element.classList.contains(CLS_NEST)) {\n addClass([this.element], [CLS_VTAB, tbPos]);\n } else {\n addClass([this.hdrEle], [CLS_VTAB, tbPos]);\n }\n }\n if (this.headerPlacement === 'Bottom') {\n addClass([this.hdrEle], [CLS_HBOTTOM]);\n }\n };\n Tab.prototype.updatePopAnimationConfig = function () {\n this.show = {\n name: this.isVertical() ? 'FadeIn' : 'SlideDown',\n duration: 100\n };\n this.hide = {\n name: this.isVertical() ? 'FadeOut' : 'SlideUp',\n duration: 100\n };\n };\n Tab.prototype.changeOrientation = function (place) {\n this.setOrientation(place, this.hdrEle);\n var activeTab = this.hdrEle.querySelector('.' + CLS_ACTIVE);\n var isVertical = this.hdrEle.classList.contains(CLS_VERTICAL) ? true : false;\n removeClass([this.element], [CLS_VTAB]);\n removeClass([this.hdrEle], [CLS_VERTICAL, CLS_VLEFT, CLS_VRIGHT]);\n if (isVertical !== this.isVertical()) {\n this.changeToolbarOrientation();\n if (!isNOU(activeTab) && activeTab.classList.contains(CLS_TB_POPUP)) {\n this.popupHandler(activeTab);\n }\n }\n this.addVerticalClass();\n this.setActiveBorder();\n this.focusItem();\n };\n Tab.prototype.focusItem = function () {\n var curActItem = select(' #' + CLS_ITEM + this.tabId + '_' + this.selectedItem, this.hdrEle);\n if (!isNOU(curActItem)) {\n curActItem.firstElementChild.focus();\n }\n };\n Tab.prototype.changeToolbarOrientation = function () {\n this.tbObj.setProperties({\n height: this.isVertical() ? '100%' : 'auto',\n width: this.isVertical() ? 'auto' : '100%'\n }, true);\n this.tbObj.changeOrientation();\n this.updatePopAnimationConfig();\n };\n Tab.prototype.setOrientation = function (place, ele) {\n var headerPos = Array.prototype.indexOf.call(this.element.children, ele);\n var contentPos = Array.prototype.indexOf.call(this.element.children, this.element.querySelector('.' + CLS_CONTENT));\n if (place === 'Bottom' && contentPos > headerPos) {\n this.element.appendChild(ele);\n } else {\n removeClass([ele], [CLS_HBOTTOM]);\n this.element.insertBefore(ele, select('.' + CLS_CONTENT, this.element));\n }\n };\n Tab.prototype.setCssClass = function (ele, cls, val) {\n if (cls === '' || isNOU(cls)) {\n return;\n }\n var list = cls.split(' ');\n for (var i = 0; i < list.length; i++) {\n if (val) {\n ele.classList.add(list[i]);\n } else {\n ele.classList.remove(list[i]);\n }\n }\n };\n Tab.prototype.loadContentInitMode = function (ele) {\n if (!ele) {\n return;\n }\n if (this.loadOn === 'Init') {\n for (var i = 0; i < this.items.length; i++) {\n if (this.cntEle.children.item(i)) {\n this.getContent(this.cntEle.children.item(i), this.items[i].content, 'render', i);\n }\n }\n }\n };\n Tab.prototype.loadContentElement = function () {\n if (!this.isTemplate) {\n var ele = this.cntEle.children.item(0);\n this.loadContentInitMode(ele);\n }\n };\n Tab.prototype.setContentHeight = function (val) {\n if (this.element.classList.contains(CLS_FILL)) {\n removeClass([this.element], [CLS_FILL]);\n }\n if (isNOU(this.cntEle)) {\n return;\n }\n var hdrEle = this.getTabHeader();\n if (this.heightAdjustMode === 'None') {\n this.loadContentElement();\n if (this.height === 'auto') {\n return;\n } else {\n if (!this.isVertical()) {\n setStyle(this.cntEle, {\n 'height': this.element.clientHeight - hdrEle.offsetHeight + 'px'\n });\n }\n }\n } else if (this.heightAdjustMode === 'Fill') {\n addClass([this.element], [CLS_FILL]);\n setStyle(this.element, {\n 'height': '100%'\n });\n this.loadContentElement();\n this.cntEle.style.height = 'calc(100% - ' + this.hdrEle.offsetHeight + 'px)';\n } else if (this.heightAdjustMode === 'Auto') {\n if (this.isTemplate === true) {\n var cnt = selectAll('.' + CLS_CONTENT + ' > .' + CLS_ITEM, this.element);\n for (var i = 0; i < cnt.length; i++) {\n cnt[i].style.display = 'block';\n cnt[i].style.visibility = 'visible';\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(cnt[i]));\n cnt[i].style.removeProperty('display');\n cnt[i].style.removeProperty('visibility');\n }\n } else {\n this.cntEle = select('.' + CLS_CONTENT, this.element);\n if (val === true && this.loadOn === 'Demand') {\n this.cntEle.appendChild(this.createContentElement(Number(this.extIndex(this.itemIndexArray[0]))));\n }\n var ele = this.cntEle.children.item(0);\n for (var i = 0; i < this.items.length; i++) {\n this.getContent(ele, this.items[i].content, 'clone', i);\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(ele));\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild);\n }\n }\n if (this.isReact || this.isAngular || this.isVue) {\n this.clearTemplate(['content']);\n }\n this.templateEle = [];\n if (this.loadOn === 'Demand') {\n this.getContent(ele, this.items[0].content, 'render', 0);\n }\n this.loadContentInitMode(ele);\n if (this.prevIndex !== this.selectedItem) {\n ele.classList.remove(CLS_ACTIVE);\n }\n }\n setStyle(this.cntEle, {\n 'height': this.maxHeight + 'px'\n });\n } else {\n this.loadContentElement();\n setStyle(this.cntEle, {\n 'height': 'auto'\n });\n }\n };\n Tab.prototype.getHeight = function (ele) {\n var cs = window.getComputedStyle(ele);\n return ele.offsetHeight + parseFloat(cs.getPropertyValue('padding-top')) + parseFloat(cs.getPropertyValue('padding-bottom')) + parseFloat(cs.getPropertyValue('margin-top')) + parseFloat(cs.getPropertyValue('margin-bottom'));\n };\n Tab.prototype.setActiveBorder = function () {\n var trgHdrEle = this.getTabHeader();\n var trg = select('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE, trgHdrEle);\n if (isNOU(trg)) {\n return;\n }\n if (!this.reorderActiveTab) {\n if (trg.classList.contains(CLS_TB_POPUP) && !this.bdrLine.classList.contains(CLS_HIDDEN)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n if (trgHdrEle && !trgHdrEle.classList.contains(CLS_REORDER_ACTIVE_ITEM)) {\n trgHdrEle.classList.add(CLS_REORDER_ACTIVE_ITEM);\n }\n } else if (trgHdrEle) {\n trgHdrEle.classList.remove(CLS_REORDER_ACTIVE_ITEM);\n }\n var root = closest(trg, '.' + CLS_TAB);\n if (this.element !== root) {\n return;\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, trgHdrEle);\n var bar = select('.' + CLS_INDICATOR, trgHdrEle);\n var scrollCnt = select('.' + CLS_TB_ITEMS + ' .' + this.scrCntClass, trgHdrEle);\n if (this.isVertical()) {\n setStyle(bar, {\n 'left': '',\n 'right': ''\n });\n var tbHeight = isNOU(scrollCnt) ? this.tbItems.offsetHeight : scrollCnt.offsetHeight;\n if (tbHeight !== 0) {\n setStyle(bar, {\n 'top': trg.offsetTop + 'px',\n 'height': trg.offsetHeight + 'px'\n });\n } else {\n setStyle(bar, {\n 'top': 0,\n 'height': 0\n });\n }\n } else {\n if (this.overflowMode === 'MultiRow') {\n var top_1 = this.headerPlacement === 'Bottom' ? trg.offsetTop : trg.offsetHeight + trg.offsetTop;\n setStyle(bar, {\n 'top': top_1 + 'px',\n 'height': ''\n });\n } else {\n setStyle(bar, {\n 'top': '',\n 'height': ''\n });\n }\n var tbWidth = isNOU(scrollCnt) ? this.tbItems.offsetWidth : scrollCnt.offsetWidth;\n if (tbWidth !== 0) {\n setStyle(bar, {\n 'left': trg.offsetLeft + 'px',\n 'right': tbWidth - (trg.offsetLeft + trg.offsetWidth) + 'px'\n });\n } else {\n setStyle(bar, {\n 'left': 'auto',\n 'right': 'auto'\n });\n }\n }\n if (!isNOU(this.bdrLine) && !trg.classList.contains(CLS_TB_POPUP)) {\n this.bdrLine.classList.remove(CLS_HIDDEN);\n }\n };\n Tab.prototype.setActive = function (value, skipDataBind, isInteracted) {\n if (skipDataBind === void 0) {\n skipDataBind = false;\n }\n if (isInteracted === void 0) {\n isInteracted = false;\n }\n this.tbItem = selectAll('.' + CLS_TB_ITEM, this.getTabHeader());\n var trg = this.tbItem[value];\n if (value < 0 || isNaN(value) || this.tbItem.length === 0 || !isNOU(trg) && trg.classList.contains(CLS_DISABLE)) {\n return;\n }\n if (value >= 0 && !skipDataBind) {\n this.allowServerDataBinding = false;\n this.setProperties({\n selectedItem: value\n }, true);\n this.allowServerDataBinding = true;\n if (!this.initRender) {\n this.serverDataBind();\n }\n }\n if (trg.classList.contains(CLS_ACTIVE)) {\n this.setActiveBorder();\n return;\n }\n if (!this.isTemplate) {\n attributes(trg.firstElementChild, {\n 'aria-controls': CLS_CONTENT + this.tabId + '_' + this.extIndex(trg.id)\n });\n }\n var id = trg.id;\n this.removeActiveClass();\n trg.classList.add(CLS_ACTIVE);\n trg.firstElementChild.setAttribute('aria-selected', 'true');\n var no = Number(this.extIndex(id));\n if (isNOU(this.prevActiveEle)) {\n this.prevActiveEle = CLS_CONTENT + this.tabId + '_' + no;\n }\n if (this.isTemplate) {\n if (select('.' + CLS_CONTENT, this.element).children.length > 0) {\n var trg_1 = this.findEle(select('.' + CLS_CONTENT, this.element).children, CLS_CONTENT + this.tabId + '_' + no);\n if (!isNOU(trg_1)) {\n trg_1.classList.add(CLS_ACTIVE);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n } else {\n this.cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n while (this.loadOn === 'Dynamic' && this.cntEle.firstElementChild) {\n this.cntEle.removeChild(this.cntEle.firstElementChild);\n }\n var item = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNOU(item)) {\n this.cntEle.appendChild(this.createElement('div', {\n id: CLS_CONTENT + this.tabId + '_' + this.extIndex(id),\n className: CLS_ITEM + ' ' + CLS_ACTIVE,\n attrs: {\n role: 'tabpanel',\n 'aria-labelledby': CLS_ITEM + this.tabId + '_' + this.extIndex(id)\n }\n }));\n var eleTrg = this.getTrgContent(this.cntEle, this.extIndex(id));\n var itemIndex = Array.prototype.indexOf.call(this.itemIndexArray, id);\n this.getContent(eleTrg, this.items[itemIndex].content, 'render', itemIndex);\n } else {\n item.classList.add(CLS_ACTIVE);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n this.setActiveBorder();\n this.refreshItemVisibility(trg);\n if (!this.initRender && !skipDataBind) {\n var eventArg = {\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: trg,\n selectedIndex: value,\n selectedContent: select('#' + CLS_CONTENT + this.tabId + '_' + this.selectingID, this.content),\n isSwiped: this.isSwiped,\n isInteracted: isInteracted,\n preventFocus: false\n };\n this.trigger('selected', eventArg, function (selectEventArgs) {\n if (!selectEventArgs.preventFocus) {\n trg.firstElementChild.focus();\n }\n });\n }\n };\n Tab.prototype.setItems = function (items) {\n this.isReplace = true;\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.tbObj.items = this.parseObject(items, 0);\n this.tbObj.dataBind();\n this.isReplace = false;\n };\n Tab.prototype.setRTL = function (value) {\n this.tbObj.enableRtl = value;\n this.tbObj.dataBind();\n this.setCssClass(this.element, CLS_RTL, value);\n this.refreshActiveBorder();\n };\n Tab.prototype.refreshActiveBorder = function () {\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n this.setActiveBorder();\n };\n Tab.prototype.showPopup = function (config) {\n var tbPop = select('.e-popup.e-toolbar-pop', this.hdrEle);\n if (tbPop && tbPop.classList.contains('e-popup-close')) {\n var tbPopObj = tbPop && tbPop.ej2_instances[0];\n tbPopObj.position.X = this.headerPlacement === 'Left' || this.element.classList.contains(CLS_RTL) ? 'left' : 'right';\n tbPopObj.dataBind();\n tbPopObj.show(config);\n }\n };\n Tab.prototype.bindDraggable = function () {\n var _this = this;\n if (this.allowDragAndDrop) {\n var tabHeader = this.element.querySelector('.' + CLS_HEADER);\n if (tabHeader) {\n var items = Array.prototype.slice.call(tabHeader.querySelectorAll('.' + CLS_TB_ITEM));\n items.forEach(function (element) {\n _this.initializeDrag(element);\n });\n }\n }\n };\n Tab.prototype.bindSwipeEvents = function () {\n if (this.swipeMode !== 'None') {\n this.touchModule = new Touch(this.cntEle, {\n swipe: this.swipeHandler.bind(this)\n });\n }\n };\n Tab.prototype.wireEvents = function () {\n this.bindDraggable();\n window.addEventListener('resize', this.resizeContext);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'keydown', this.spaceKeyDown, this);\n if (!isNOU(this.cntEle)) {\n this.bindSwipeEvents();\n }\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyHandler.bind(this),\n keyConfigs: this.keyConfigs\n });\n this.tabKeyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyHandler.bind(this),\n keyConfigs: {\n openPopup: 'shift+f10',\n tab: 'tab',\n shiftTab: 'shift+tab'\n },\n eventName: 'keydown'\n });\n };\n Tab.prototype.unWireEvents = function () {\n if (!isNOU(this.keyModule)) {\n this.keyModule.destroy();\n }\n if (!isNOU(this.tabKeyModule)) {\n this.tabKeyModule.destroy();\n }\n if (!isNOU(this.cntEle) && !isNOU(this.touchModule)) {\n this.touchModule.destroy();\n this.touchModule = null;\n }\n window.removeEventListener('resize', this.resizeContext);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'keydown', this.spaceKeyDown);\n this.element.classList.remove(CLS_RTL);\n this.element.classList.remove(CLS_FOCUS);\n };\n Tab.prototype.clickHandler = function (args) {\n this.element.classList.remove(CLS_FOCUS);\n var trg = args.originalEvent.target;\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (trg.classList.contains(CLS_ICON_CLOSE)) {\n this.removeTab(trgIndex);\n } else if (this.isVertical() && closest(trg, '.' + CLS_HOR_NAV)) {\n this.showPopup(this.show);\n } else {\n this.isPopup = false;\n if (!isNOU(trgParent) && trgIndex !== this.selectedItem) {\n this.selectTab(trgIndex, args.originalEvent, true);\n }\n }\n };\n Tab.prototype.swipeHandler = function (e) {\n if (e.velocity < 3 && isNullOrUndefined(e.originalEvent.changedTouches) || this.swipeMode === 'Touch' && (e.originalEvent.type === 'mouseup' || e.originalEvent.type === 'mouseleave') || this.swipeMode === 'Mouse' && e.originalEvent.type === 'touchend' || this.swipeMode === 'None') {\n return;\n }\n if (this.isNested) {\n this.element.setAttribute('data-swipe', 'true');\n }\n var nestedTab = this.element.querySelector('[data-swipe=\"true\"]');\n if (nestedTab) {\n nestedTab.removeAttribute('data-swipe');\n return;\n }\n this.isSwiped = true;\n if (e.swipeDirection === 'Right' && this.selectedItem !== 0) {\n for (var k = this.selectedItem - 1; k >= 0; k--) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.selectTab(k, null, true);\n break;\n }\n }\n } else if (e.swipeDirection === 'Left' && this.selectedItem !== selectAll('.' + CLS_TB_ITEM, this.element).length - 1) {\n for (var i = this.selectedItem + 1; i < this.tbItem.length; i++) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN)) {\n this.selectTab(i, null, true);\n break;\n }\n }\n }\n this.isSwiped = false;\n };\n Tab.prototype.spaceKeyDown = function (e) {\n if (e.keyCode === 32 && e.which === 32 || e.keyCode === 35 && e.which === 35) {\n var clstHead = closest(e.target, '.' + CLS_HEADER);\n if (!isNOU(clstHead)) {\n e.preventDefault();\n }\n }\n };\n Tab.prototype.keyHandler = function (e) {\n if (this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n this.element.classList.add(CLS_FOCUS);\n var trg = e.target;\n var tabHeader = this.getTabHeader();\n var actEle = select('.' + CLS_ACTIVE, tabHeader);\n this.popEle = select('.' + CLS_TB_POP, tabHeader);\n if (!isNOU(this.popEle)) {\n this.popObj = this.popEle.ej2_instances[0];\n }\n var item = closest(document.activeElement, '.' + CLS_TB_ITEM);\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n switch (e.action) {\n case 'space':\n case 'enter':\n if (trg.parentElement.classList.contains(CLS_DISABLE)) {\n return;\n }\n if (e.action === 'enter' && trg.classList.contains('e-hor-nav')) {\n this.showPopup(this.show);\n break;\n }\n this.keyPressed(trg);\n break;\n case 'tab':\n case 'shiftTab':\n if (trg.classList.contains(CLS_WRAP) && closest(trg, '.' + CLS_TB_ITEM).classList.contains(CLS_ACTIVE) === false) {\n trg.setAttribute('tabindex', trg.getAttribute('data-tabindex'));\n }\n if (this.popObj && isVisible(this.popObj.element)) {\n this.popObj.hide(this.hide);\n }\n if (!isNOU(actEle) && actEle.children.item(0).getAttribute('tabindex') === '-1') {\n actEle.children.item(0).setAttribute('tabindex', '0');\n }\n break;\n case 'moveLeft':\n case 'moveRight':\n if (!isNOU(item)) {\n this.refreshItemVisibility(item);\n }\n break;\n case 'openPopup':\n e.preventDefault();\n if (!isNOU(this.popEle) && this.popEle.classList.contains(CLS_POPUP_CLOSE)) {\n this.popObj.show(this.show);\n }\n break;\n case 'delete':\n if (this.showCloseButton === true && !isNOU(trgParent)) {\n var nxtSib = trgParent.nextSibling;\n if (!isNOU(nxtSib) && nxtSib.classList.contains(CLS_TB_ITEM)) {\n nxtSib.firstElementChild.focus();\n }\n this.removeTab(this.getEleIndex(trgParent));\n }\n this.setActiveBorder();\n break;\n }\n };\n Tab.prototype.refreshItemVisibility = function (target) {\n var scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!this.isVertical() && !isNOU(scrCnt)) {\n var scrBar = select('.e-hscroll-bar', this.tbItems);\n var scrStart = scrBar.scrollLeft;\n var scrEnd = scrStart + scrBar.offsetWidth;\n var eleStart = target.offsetLeft;\n var eleWidth = target.offsetWidth;\n var eleEnd = target.offsetLeft + target.offsetWidth;\n if (scrStart < eleStart && scrEnd < eleEnd) {\n var eleViewRange = scrEnd - eleStart;\n scrBar.scrollLeft = scrStart + (eleWidth - eleViewRange);\n } else {\n if (scrStart > eleStart && scrEnd > eleEnd) {\n var eleViewRange = eleEnd - scrStart;\n scrBar.scrollLeft = scrStart - (eleWidth - eleViewRange);\n }\n }\n } else {\n return;\n }\n };\n Tab.prototype.getIndexFromEle = function (id) {\n return parseInt(id.substring(id.lastIndexOf('_') + 1), 10);\n };\n Tab.prototype.hoverHandler = function (e) {\n var trg = e.target;\n if (!isNOU(trg.classList) && trg.classList.contains(CLS_ICON_CLOSE)) {\n trg.setAttribute('title', new L10n('tab', {\n closeButtonTitle: this.title\n }, this.locale).getConstant('closeButtonTitle'));\n }\n };\n Tab.prototype.evalOnPropertyChangeItems = function (newProp, oldProp) {\n var _this = this;\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProp = Object.keys(newProp.items);\n for (var i = 0; i < changedProp.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[i], 10);\n var properties = Object.keys(newProp.items[index]);\n for (var j = 0; j < properties.length; j++) {\n var oldVal = Object(oldProp.items[index])[properties[j]];\n var newVal = Object(newProp.items[index])[properties[j]];\n var hdr = this.element.querySelectorAll('.' + CLS_TB_ITEM)[index];\n var itemIndex = void 0;\n if (hdr && !isNOU(hdr.id) && hdr.id !== '') {\n itemIndex = this.getIndexFromEle(hdr.id);\n } else {\n itemIndex = index;\n }\n var hdrItem = select('.' + CLS_TB_ITEMS + ' #' + CLS_ITEM + this.tabId + '_' + itemIndex, this.element);\n var cntItem = select('.' + CLS_CONTENT + ' #' + CLS_CONTENT + this.tabId + '_' + itemIndex, this.element);\n if (properties[j] === 'header' || properties[j] === 'headerTemplate') {\n var icon = isNOU(this.items[index].header) || isNOU(this.items[index].header.iconCss) ? '' : this.items[index].header.iconCss;\n var textVal = this.items[index].headerTemplate || this.items[index].header.text;\n if (properties[j] === 'headerTemplate') {\n this.clearTabTemplate(hdrItem, properties[j], CLS_TB_ITEM);\n }\n if (textVal === '' && icon === '') {\n this.removeTab(index);\n } else {\n this.tbId = hdr.id;\n var arr = [];\n arr.push(this.items[index]);\n this.items.splice(index, 1);\n this.itemIndexArray.splice(index, 1);\n this.tbObj.items.splice(index, 1);\n var isHiddenEle = hdrItem.classList.contains(CLS_HIDDEN);\n detach(hdrItem);\n this.isReplace = true;\n this.addTab(arr, index);\n if (isHiddenEle) {\n this.hideTab(index);\n }\n this.isReplace = false;\n }\n }\n if (properties[j] === 'content' && !isNOU(cntItem)) {\n var strVal = typeof newVal === 'string' || isNOU(newVal.innerHTML);\n if (strVal && (newVal[0] === '.' || newVal[0] === '#') && newVal.length) {\n var eleVal = document.querySelector(newVal);\n cntItem.appendChild(eleVal);\n eleVal.style.display = '';\n } else if (newVal === '' && oldVal[0] === '#') {\n document.body.appendChild(this.element.querySelector(oldVal)).style.display = 'none';\n cntItem.innerHTML = newVal;\n } else if (this.isAngular || this.isReact) {\n this.clearTabTemplate(cntItem, properties[j], CLS_ITEM);\n cntItem.innerHTML = '';\n this.templateCompile(cntItem, newVal, index);\n } else if (typeof newVal !== 'function') {\n cntItem.innerHTML = newVal;\n }\n }\n if (properties[j] === 'cssClass') {\n if (!isNOU(hdrItem)) {\n hdrItem.classList.remove(oldVal);\n hdrItem.classList.add(newVal);\n }\n if (!isNOU(cntItem)) {\n cntItem.classList.remove(oldVal);\n cntItem.classList.add(newVal);\n }\n }\n if (properties[j] === 'disabled') {\n this.enableTab(index, newVal === true ? false : true);\n }\n if (properties[j] === 'visible') {\n this.hideTab(index, newVal === true ? false : true);\n }\n }\n }\n if (this.isReact && this.portals && this.portals.length > 0) {\n this.renderReactTemplates(function () {\n _this.refreshActiveTabBorder();\n });\n }\n } else {\n this.lastIndex = 0;\n if (isNOU(this.tbObj)) {\n this.reRenderItems();\n } else {\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n this.setItems(newProp.items);\n if (this.templateEle.length > 0) {\n this.expTemplateContent();\n }\n this.templateEle = [];\n var selectElement = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n while (selectElement.firstElementChild) {\n detach(selectElement.firstElementChild);\n }\n this.select(this.selectedItem);\n this.draggableItems = [];\n this.bindDraggable();\n }\n }\n };\n Tab.prototype.clearTabTemplate = function (templateEle, templateName, className) {\n if (!this.clearTemplates) {\n return;\n }\n if (this.registeredTemplate && this.registeredTemplate[templateName]) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[templateName].length; index++) {\n var registeredItem = registeredTemplates[templateName][index].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + className);\n if (!isNullOrUndefined(closestItem) && closestItem === templateEle) {\n this.clearTemplate([templateName], [registeredTemplates[templateName][index]]);\n break;\n }\n }\n } else if (this.portals && this.portals.length > 0) {\n var portals = this.portals;\n for (var index = 0; index < portals.length; index++) {\n var portalItem = portals[index];\n var closestItem = closest(portalItem.containerInfo, '.' + className);\n if (!isNullOrUndefined(closestItem) && closestItem === templateEle) {\n this.clearTemplate([templateName], index);\n break;\n }\n }\n }\n };\n Tab.prototype.initializeDrag = function (target) {\n var _this = this;\n var dragObj = new Draggable(target, {\n dragArea: this.dragArea,\n dragTarget: '.' + CLS_TB_ITEM,\n clone: true,\n helper: this.helper.bind(this),\n dragStart: this.itemDragStart.bind(this),\n drag: function (e) {\n var dragIndex = _this.getEleIndex(_this.dragItem);\n var dropIndex;\n var dropItem;\n var dragArgs = {\n draggedItem: _this.dragItem,\n event: e.event,\n target: e.target,\n droppedItem: e.target.closest('.' + CLS_TB_ITEM),\n clonedElement: _this.cloneElement,\n index: dragIndex\n };\n if (!isNOU(e.target.closest('.' + CLS_TAB)) && !e.target.closest('.' + CLS_TAB).isEqualNode(_this.element) && _this.dragArea !== '.' + CLS_HEADER) {\n _this.trigger('dragging', dragArgs);\n } else {\n if (!e.target.closest(_this.dragArea) && _this.overflowMode !== 'Popup') {\n document.body.style.cursor = 'not-allowed';\n addClass([_this.cloneElement], CLS_HIDDEN);\n if (_this.dragItem.classList.contains(CLS_HIDDEN)) {\n removeClass([_this.dragItem], CLS_HIDDEN);\n }\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'visible';\n } else {\n document.body.style.cursor = '';\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'hidden';\n if (_this.cloneElement.classList.contains(CLS_HIDDEN)) {\n removeClass([_this.cloneElement], CLS_HIDDEN);\n }\n }\n if (_this.overflowMode === 'Scrollable' && !isNOU(_this.element.querySelector('.e-hscroll'))) {\n var scrollRightNavEle = _this.element.querySelector('.e-scroll-right-nav');\n var scrollLeftNavEle = _this.element.querySelector('.e-scroll-left-nav');\n var hscrollBar = _this.element.querySelector('.e-hscroll-bar');\n if (!isNOU(scrollRightNavEle) && Math.abs(scrollRightNavEle.offsetWidth / 2 + scrollRightNavEle.offsetLeft) > _this.cloneElement.offsetLeft + _this.cloneElement.offsetWidth) {\n hscrollBar.scrollLeft -= 10;\n }\n if (!isNOU(scrollLeftNavEle) && Math.abs(scrollLeftNavEle.offsetLeft + scrollLeftNavEle.offsetWidth - _this.cloneElement.offsetLeft) > scrollLeftNavEle.offsetWidth / 2) {\n hscrollBar.scrollLeft += 10;\n }\n }\n _this.cloneElement.style.pointerEvents = 'none';\n dropItem = closest(e.target, '.' + CLS_TB_ITEM + '.e-draggable');\n var scrollContentWidth = 0;\n if (_this.overflowMode === 'Scrollable' && !isNOU(_this.element.querySelector('.e-hscroll'))) {\n scrollContentWidth = _this.element.querySelector('.e-hscroll-content').offsetWidth;\n }\n if (dropItem != null && !dropItem.isSameNode(_this.dragItem) && dropItem.closest('.' + CLS_TAB).isSameNode(_this.dragItem.closest('.' + CLS_TAB))) {\n dropIndex = _this.getEleIndex(dropItem);\n if (dropIndex < dragIndex && Math.abs(dropItem.offsetLeft + dropItem.offsetWidth - _this.cloneElement.offsetLeft) > dropItem.offsetWidth / 2) {\n _this.dragAction(dropItem, dragIndex, dropIndex);\n }\n if (dropIndex > dragIndex && Math.abs(dropItem.offsetWidth / 2) + dropItem.offsetLeft - scrollContentWidth < _this.cloneElement.offsetLeft + _this.cloneElement.offsetWidth) {\n _this.dragAction(dropItem, dragIndex, dropIndex);\n }\n }\n _this.droppedIndex = _this.getEleIndex(_this.dragItem);\n _this.trigger('dragging', dragArgs);\n }\n },\n dragStop: this.itemDragStop.bind(this)\n });\n this.draggableItems.push(dragObj);\n };\n Tab.prototype.helper = function (e) {\n this.cloneElement = this.createElement('div');\n if (e.element) {\n this.cloneElement = e.element.cloneNode(true);\n addClass([this.cloneElement], 'e-tab-clone-element');\n if (this.element.querySelector('.' + CLS_HEADER).classList.contains(CLS_CLOSE_SHOW)) {\n addClass([this.cloneElement], CLS_CLOSE_SHOW);\n }\n removeClass([this.cloneElement.querySelector('.' + CLS_WRAP)], 'e-ripple');\n if (!isNOU(this.cloneElement.querySelector('.e-ripple-element'))) {\n remove(this.cloneElement.querySelector('.e-ripple-element'));\n }\n document.body.appendChild(this.cloneElement);\n }\n return this.cloneElement;\n };\n Tab.prototype.itemDragStart = function (e) {\n var _this = this;\n this.draggingItems = this.items.map(function (x) {\n return x;\n });\n this.dragItem = e.element;\n var dragArgs = {\n draggedItem: e.element,\n event: e.event,\n target: e.target,\n droppedItem: null,\n index: this.getEleIndex(this.dragItem),\n clonedElement: this.cloneElement,\n cancel: false\n };\n this.trigger('onDragStart', dragArgs, function (tabItemDragArgs) {\n if (tabItemDragArgs.cancel) {\n var dragObj = e.element.ej2_instances[0];\n if (!isNullOrUndefined(dragObj)) {\n dragObj.intDestroy(e.event);\n }\n detach(_this.cloneElement);\n } else {\n _this.removeActiveClass();\n addClass([_this.tbItems.querySelector('.' + CLS_INDICATOR)], CLS_HIDDEN);\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'hidden';\n }\n });\n };\n Tab.prototype.dragAction = function (dropItem, dragsIndex, dropIndex) {\n if (this.items.length > 0) {\n var item = this.draggingItems[dragsIndex];\n this.draggingItems.splice(dragsIndex, 1);\n this.draggingItems.splice(dropIndex, 0, item);\n }\n if (this.overflowMode === 'MultiRow') {\n dropItem.parentNode.insertBefore(this.dragItem, dropItem.nextElementSibling);\n }\n if (dragsIndex > dropIndex) {\n if (!this.dragItem.parentElement.isSameNode(dropItem.parentElement)) {\n if (this.overflowMode === 'Extended') {\n if (dropItem.isSameNode(dropItem.parentElement.lastChild)) {\n var popupContainer = this.dragItem.parentNode;\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n popupContainer.insertBefore(dropItem.parentElement.lastChild, popupContainer.childNodes[0]);\n } else {\n this.dragItem.parentNode.insertBefore(dropItem.parentElement.lastChild, this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n } else {\n var lastEle = dropItem.parentElement.lastChild;\n if (dropItem.isSameNode(lastEle)) {\n var popupContainer = this.dragItem.parentNode;\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n popupContainer.insertBefore(lastEle, popupContainer.childNodes[0]);\n } else {\n this.dragItem.parentNode.insertBefore(dropItem.parentElement.lastChild, this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n } else {\n this.dragItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n if (dragsIndex < dropIndex) {\n if (!this.dragItem.parentElement.isSameNode(dropItem.parentElement)) {\n if (this.overflowMode === 'Extended') {\n this.dragItem.parentElement.appendChild(dropItem.parentElement.firstElementChild);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem.nextSibling);\n } else {\n this.dragItem.parentNode.insertBefore(dropItem.parentElement.lastChild, this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n } else {\n this.dragItem.parentNode.insertBefore(this.dragItem, dropItem.nextElementSibling);\n }\n }\n };\n Tab.prototype.itemDragStop = function (e) {\n var _this = this;\n detach(this.cloneElement);\n this.cloneElement = null;\n this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'visible';\n document.body.style.cursor = '';\n var dragStopArgs = {\n draggedItem: this.dragItem,\n event: e.event,\n target: e.target,\n droppedItem: this.tbItem[this.droppedIndex],\n clonedElement: null,\n index: this.droppedIndex,\n cancel: false\n };\n this.trigger('dragged', dragStopArgs, function (tabItemDropArgs) {\n if (tabItemDropArgs.cancel) {\n _this.refresh();\n } else {\n if (_this.items.length > 0 && _this.draggingItems.length > 0) {\n _this.items = _this.draggingItems;\n _this.selectedItem = isNOU(_this.droppedIndex) ? _this.getEleIndex(_this.dragItem) : _this.droppedIndex;\n _this.refresh();\n } else {\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = '';\n removeClass([_this.tbItems.querySelector('.' + CLS_INDICATOR)], CLS_HIDDEN);\n _this.droppedIndex = isNOU(_this.droppedIndex) ? _this.getEleIndex(_this.dragItem) : _this.droppedIndex;\n _this.selectTab(_this.droppedIndex, null, true);\n }\n }\n });\n this.dragItem = null;\n this.droppedIndex = null;\n };\n /**\n * Enables or disables the specified Tab item. On passing value as `false`, the item will be disabled.\n *\n * @param {number} index - Index value of target Tab item.\n * @param {boolean} value - Boolean value that determines whether the command should be enabled or disabled.\n * By default, isEnable is true.\n * @returns {void}.\n */\n Tab.prototype.enableTab = function (index, value) {\n var tbItems = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(tbItems)) {\n return;\n }\n if (value === true) {\n tbItems.classList.remove(CLS_DISABLE, CLS_OVERLAY);\n tbItems.firstElementChild.setAttribute('tabindex', tbItems.firstElementChild.getAttribute('data-tabindex'));\n } else {\n tbItems.classList.add(CLS_DISABLE, CLS_OVERLAY);\n tbItems.firstElementChild.removeAttribute('tabindex');\n if (tbItems.classList.contains(CLS_ACTIVE)) {\n this.select(index + 1);\n }\n }\n if (!isNOU(this.items[index])) {\n this.items[index].disabled = !value;\n this.dataBind();\n }\n tbItems.firstElementChild.setAttribute('aria-disabled', value === true ? 'false' : 'true');\n };\n /**\n * Adds new items to the Tab that accepts an array as Tab items.\n *\n * @param {TabItemModel[]} items - An array of item that is added to the Tab.\n * @param {number} index - Number value that determines where the items to be added. By default, index is 0.\n * @returns {void}.\n */\n Tab.prototype.addTab = function (items, index) {\n var _this = this;\n var addArgs = {\n addedItems: items,\n cancel: false\n };\n if (!this.isReplace) {\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n item.disabled = item.disabled || false;\n item.visible = item.visible || true;\n }\n if (items && items.length !== 0 && this.element && this.element.classList.contains(CLS_HIDDEN)) {\n this.element.classList.remove(CLS_HIDDEN);\n }\n this.trigger('adding', addArgs, function (tabAddingArgs) {\n if (!tabAddingArgs.cancel) {\n _this.addingTabContent(items, index);\n }\n });\n } else {\n this.addingTabContent(items, index);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Tab.prototype.addingTabContent = function (items, index) {\n var _this = this;\n var lastEleIndex = 0;\n this.hdrEle = select('.' + CLS_HEADER, this.element);\n if (isNOU(this.hdrEle)) {\n this.items = items;\n this.reRenderItems();\n this.bindDraggable();\n } else {\n var tbItems = Array.from(selectAll('.e-tab-header .' + CLS_TB_ITEM, this.element));\n var itemsCount = tbItems.length;\n if (itemsCount !== 0) {\n lastEleIndex = this.getMaxIndicesFromItems(tbItems) + 1;\n }\n if (isNOU(index)) {\n index = itemsCount - 1;\n }\n if (itemsCount < index || index < 0 || isNaN(index)) {\n return;\n }\n if (itemsCount === 0 && !isNOU(this.hdrEle)) {\n this.hdrEle.style.display = '';\n }\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.isAdd = true;\n var tabItems_2 = this.parseObject(items, index);\n this.isAdd = false;\n var i_1 = 0;\n var textValue_1;\n items.forEach(function (item, place) {\n textValue_1 = item.headerTemplate || item.header.text;\n if (!(isNOU(item.headerTemplate || item.header) || isNOU(textValue_1) || textValue_1.length === 0 && !isNOU(item.header) && isNOU(item.header.iconCss))) {\n if (tabItems_2[place]) {\n if (isNOU(item.id)) {\n item.id = CLS_ITEM + _this.tabId + '_' + TABITEMPREFIX + (lastEleIndex + place).toString();\n }\n tabItems_2[place].htmlAttributes['data-id'] = item.id;\n }\n _this.items.splice(index + i_1, 0, item);\n i_1++;\n }\n if (!isNOU(item.header) && !isNOU(item.header.text) && (_this.isTemplate || _this.loadOn === 'Init')) {\n var no = lastEleIndex + place;\n var ele = _this.createElement('div', {\n id: CLS_CONTENT + _this.tabId + '_' + no,\n className: CLS_ITEM,\n attrs: {\n role: 'tabpanel',\n 'aria-labelledby': CLS_ITEM + '_' + no\n }\n });\n _this.cntEle.insertBefore(ele, _this.cntEle.children[index + place]);\n var eleTrg = _this.getTrgContent(_this.cntEle, no.toString());\n _this.getContent(eleTrg, item.content, 'render', index);\n }\n });\n this.tbObj.addItems(tabItems_2, index);\n if (!this.isReplace) {\n this.trigger('added', {\n addedItems: items\n });\n }\n if (this.selectedItem === index) {\n this.select(index);\n } else {\n this.setActiveBorder();\n this.tbItem = selectAll('.' + CLS_TB_ITEM, this.getTabHeader());\n }\n this.bindDraggable();\n }\n };\n /**\n * Removes the items in the Tab from the specified index.\n *\n * @param {number} index - Index of target item that is going to be removed.\n * @returns {void}.\n */\n Tab.prototype.removeTab = function (index) {\n var _this = this;\n var trg = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(trg)) {\n return;\n }\n var removeArgs = {\n removedItem: trg,\n removedIndex: index,\n cancel: false\n };\n this.trigger('removing', removeArgs, function (tabRemovingArgs) {\n if (!tabRemovingArgs.cancel) {\n var header = select('#' + CLS_ITEM + _this.tabId + '_' + _this.extIndex(trg.id), select('.' + CLS_TB_ITEMS, _this.element));\n if (!isNOU(header)) {\n _this.clearTabTemplate(header, 'headerTemplate', CLS_TB_ITEM);\n }\n _this.tbObj.removeItems(index);\n if (_this.allowDragAndDrop && index !== Array.prototype.indexOf.call(_this.itemIndexArray, trg.id)) {\n index = Array.prototype.indexOf.call(_this.itemIndexArray, trg.id);\n }\n var targetEleIndex = _this.itemIndexArray.indexOf(trg.id);\n _this.items.splice(targetEleIndex, 1);\n _this.itemIndexArray.splice(targetEleIndex, 1);\n _this.refreshActiveBorder();\n var cntTrg = select('#' + CLS_CONTENT + _this.tabId + '_' + _this.extIndex(trg.id), select('.' + CLS_CONTENT, _this.element));\n if (!isNOU(cntTrg)) {\n _this.clearTabTemplate(cntTrg, 'content', CLS_ITEM);\n detach(cntTrg);\n }\n _this.trigger('removed', tabRemovingArgs);\n if (_this.draggableItems && _this.draggableItems.length > 0) {\n _this.draggableItems[index].destroy();\n _this.draggableItems[index] = null;\n _this.draggableItems.splice(index, 1);\n }\n if (trg.classList.contains(CLS_ACTIVE)) {\n index = index > selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_TB_POPUP + ')', _this.element).length - 1 ? index - 1 : index;\n _this.enableAnimation = false;\n _this.tbItem = selectAll('.' + CLS_TB_ITEM, _this.getTabHeader());\n index = _this.getSelectingTabIndex(index);\n index = !isNaN(index) && index >= 0 && _this.tbItem.length > index ? index : 0;\n var tabItem = _this.tbItem[index];\n if (tabItem) {\n if (tabItem.classList.contains(CLS_HIDDEN)) {\n tabItem.classList.remove(CLS_HIDDEN);\n }\n var firstChild = tabItem.firstElementChild;\n if (firstChild && firstChild.hasAttribute('aria-hidden')) {\n firstChild.removeAttribute('aria-hidden');\n }\n }\n _this.selectedItem = index;\n _this.select(index);\n } else if (index !== _this.selectedItem) {\n if (index < _this.selectedItem) {\n index = _this.itemIndexArray.indexOf(_this.tbItem[_this.selectedItem].id);\n _this.setProperties({\n selectedItem: index > -1 ? index : _this.selectedItem\n }, true);\n _this.prevIndex = _this.selectedItem;\n }\n _this.tbItem = selectAll('.' + CLS_TB_ITEM, _this.getTabHeader());\n }\n if (selectAll('.' + CLS_TB_ITEM, _this.element).length === 0) {\n var cnt = select('.' + CLS_CONTENT, _this.element);\n detach(_this.hdrEle);\n detach(cnt);\n }\n _this.enableAnimation = true;\n }\n });\n };\n /**\n * Shows or hides the Tab that is in the specified index.\n *\n * @param {number} index - Index value of target item.\n * @param {boolean} value - Based on this Boolean value, item will be hide (true) or show (false). By default, value is true.\n * @returns {void}.\n */\n Tab.prototype.hideTab = function (index, value) {\n var items;\n var item = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(item)) {\n return;\n }\n if (isNOU(value)) {\n value = true;\n }\n this.bdrLine.classList.add(CLS_HIDDEN);\n if (value === true) {\n item.classList.add(CLS_HIDDEN);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN + ')', this.tbItems);\n if (items.length !== 0 && item.classList.contains(CLS_ACTIVE)) {\n if (index !== 0) {\n for (var i = index - 1; i >= 0; i--) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN)) {\n this.select(i);\n break;\n } else if (i === 0) {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n }\n } else {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n } else if (items.length === 0) {\n this.element.classList.add(CLS_HIDDEN);\n }\n } else {\n this.element.classList.remove(CLS_HIDDEN);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN + ')', this.tbItems);\n item.classList.remove(CLS_HIDDEN);\n if (items.length === 0) {\n this.select(index);\n }\n }\n this.setActiveBorder();\n if (!isNOU(this.items[index])) {\n this.items[index].visible = !value;\n this.dataBind();\n }\n if (!isNullOrUndefined(item.firstElementChild)) {\n item.firstElementChild.setAttribute('aria-hidden', '' + value);\n }\n if (this.overflowMode === 'Popup') {\n this.refreshOverflow();\n }\n };\n Tab.prototype.selectTab = function (args, event, isInteracted) {\n if (event === void 0) {\n event = null;\n }\n if (isInteracted === void 0) {\n isInteracted = false;\n }\n this.isInteracted = isInteracted;\n this.select(args, event);\n };\n /**\n * Specifies the index or HTMLElement to select an item from the Tab.\n *\n * @param {number | HTMLElement} args - Index or DOM element is used for selecting an item from the Tab.\n * @param {Event} event - An event which takes place in DOM.\n * @returns {void}\n */\n Tab.prototype.select = function (args, event) {\n var _this = this;\n var tabHeader = this.getTabHeader();\n this.tbItems = select('.' + CLS_TB_ITEMS, tabHeader);\n this.tbItem = selectAll('.' + CLS_TB_ITEM, tabHeader);\n this.content = select('.' + CLS_CONTENT, this.element);\n this.prevItem = this.tbItem[this.prevIndex];\n if (isNOU(this.selectedItem) || this.selectedItem < 0 || this.tbItem.length <= this.selectedItem || isNaN(this.selectedItem)) {\n this.selectedItem = 0;\n } else {\n this.selectedID = this.extIndex(this.tbItem[this.selectedItem].id);\n }\n var trg = this.tbItem[args];\n if (isNOU(trg)) {\n this.selectedID = '0';\n } else {\n this.selectingID = this.extIndex(trg.id);\n }\n if (!isNOU(this.prevItem) && !this.prevItem.classList.contains(CLS_DISABLE)) {\n this.prevItem.children.item(0).setAttribute('tabindex', this.prevItem.firstElementChild.getAttribute('tabindex'));\n }\n var eventArg = {\n event: event,\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: this.tbItem[this.selectedItem],\n selectedIndex: this.selectedItem,\n selectedContent: !isNOU(this.content) ? select('#' + CLS_CONTENT + this.tabId + '_' + this.selectedID, this.content) : null,\n selectingItem: trg,\n selectingIndex: args,\n selectingContent: !isNOU(this.content) ? select('#' + CLS_CONTENT + this.tabId + '_' + this.selectingID, this.content) : null,\n isSwiped: this.isSwiped,\n isInteracted: this.isInteracted,\n cancel: false\n };\n if (!this.initRender) {\n this.trigger('selecting', eventArg, function (selectArgs) {\n if (!selectArgs.cancel) {\n _this.selectingContent(args, _this.isInteracted);\n }\n });\n } else {\n this.selectingContent(args, this.isInteracted);\n }\n this.isInteracted = false;\n };\n Tab.prototype.getSelectingTabIndex = function (args) {\n if (!isNOU(this.tbItem[args]) && (this.tbItem[args].classList.contains(CLS_DISABLE) || this.tbItem[args].classList.contains(CLS_HIDDEN))) {\n for (var i = args + 1; i < this.items.length; i++) {\n if (this.items[i].disabled === false && this.items[i].visible === true) {\n args = i;\n break;\n } else {\n args = 0;\n }\n }\n }\n return args;\n };\n Tab.prototype.selectingContent = function (args, isInteracted) {\n if (typeof args === 'number') {\n args = this.getSelectingTabIndex(args);\n if (this.tbItem.length > args && args >= 0 && !isNaN(args)) {\n this.prevIndex = this.selectedItem;\n this.prevItem = this.tbItem[this.prevIndex];\n if (this.tbItem[args].classList.contains(CLS_TB_POPUP) && this.reorderActiveTab) {\n this.setActive(this.popupHandler(this.tbItem[args]), null, isInteracted);\n if (!isNOU(this.items) && this.items.length > 0 && this.allowDragAndDrop) {\n this.tbItem = selectAll('.' + CLS_TB_ITEMS + ' .' + CLS_TB_ITEM, this.hdrEle);\n var item = this.items[args];\n this.items.splice(args, 1);\n this.items.splice(this.tbItem.length - 1, 0, item);\n var itemId = this.itemIndexArray[args];\n this.itemIndexArray.splice(args, 1);\n this.itemIndexArray.splice(this.tbItem.length - 1, 0, itemId);\n }\n } else {\n this.setActive(args, null, isInteracted);\n }\n } else {\n this.setActive(0, null, isInteracted);\n }\n } else if (args instanceof HTMLElement) {\n this.setActive(this.getEleIndex(args), null, isInteracted);\n }\n };\n /**\n * Gets the item index from the Tab.\n *\n * @param {string} tabItemId - Item ID is used for getting index from the Tab.\n * @returns {number} - It returns item index.\n */\n Tab.prototype.getItemIndex = function (tabItemId) {\n var tabIndex;\n for (var i = 0; i < this.tbItem.length; i++) {\n var value = this.tbItem[i].getAttribute('data-id');\n if (tabItemId === value) {\n tabIndex = i;\n break;\n }\n }\n return tabIndex;\n };\n /**\n * Specifies the value to disable/enable the Tab component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Tab will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Tab.prototype.disable = function (value) {\n this.setCssClass(this.element, CLS_DISABLE, value);\n this.element.setAttribute('aria-disabled', '' + value);\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - It returns the persisted state.\n */\n Tab.prototype.getPersistData = function () {\n return this.addOnPersist(['selectedItem', 'actEleId']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Tab.prototype.getModuleName = function () {\n return 'tab';\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {TabModel} newProp - It contains the new value of data.\n * @param {TabModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n Tab.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var sortedKeys = Object.keys(newProp).sort(function (a, b) {\n if (a === 'items') return -1;\n if (b === 'items') return 1;\n return 0;\n });\n for (var _i = 0, sortedKeys_1 = sortedKeys; _i < sortedKeys_1.length; _i++) {\n var prop = sortedKeys_1[_i];\n switch (prop) {\n case 'width':\n setStyle(this.element, {\n width: formatUnit(newProp.width)\n });\n break;\n case 'height':\n setStyle(this.element, {\n height: formatUnit(newProp.height)\n });\n this.setContentHeight(false);\n break;\n case 'cssClass':\n var headerEle = this.element.querySelector('.' + CLS_HEADER);\n if (oldProp.cssClass !== '' && !isNullOrUndefined(oldProp.cssClass)) {\n this.setCssClass(this.element, oldProp.cssClass, false);\n this.setCssClass(this.element, newProp.cssClass, true);\n if (!isNullOrUndefined(headerEle)) {\n this.setCssClass(headerEle, oldProp.cssClass, false);\n this.setCssClass(headerEle, newProp.cssClass, true);\n }\n } else {\n this.setCssClass(this.element, newProp.cssClass, true);\n if (!isNullOrUndefined(headerEle)) {\n this.setCssClass(headerEle, newProp.cssClass, true);\n }\n }\n break;\n case 'items':\n this.evalOnPropertyChangeItems(newProp, oldProp);\n break;\n case 'showCloseButton':\n this.setCloseButton(newProp.showCloseButton);\n break;\n case 'reorderActiveTab':\n this.refreshActiveTabBorder();\n break;\n case 'selectedItem':\n this.selectedItem = oldProp.selectedItem;\n this.select(newProp.selectedItem);\n break;\n case 'headerPlacement':\n this.changeOrientation(newProp.headerPlacement);\n break;\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n case 'overflowMode':\n this.tbObj.overflowMode = newProp.overflowMode;\n this.tbObj.dataBind();\n this.refreshActiveTabBorder();\n break;\n case 'heightAdjustMode':\n this.setContentHeight(false);\n this.select(this.selectedItem);\n break;\n case 'scrollStep':\n if (this.tbObj) {\n this.tbObj.scrollStep = this.scrollStep;\n }\n break;\n case 'allowDragAndDrop':\n this.bindDraggable();\n break;\n case 'swipeMode':\n if (this.touchModule) {\n this.touchModule.destroy();\n this.touchModule = null;\n }\n this.bindSwipeEvents();\n break;\n case 'dragArea':\n if (this.allowDragAndDrop) {\n this.draggableItems.forEach(function (item) {\n item.dragArea = _this.dragArea;\n });\n this.refresh();\n }\n break;\n }\n }\n };\n /**\n * To refresh the active tab contents.\n *\n * @returns {void}\n */\n Tab.prototype.refreshActiveTab = function () {\n if (this.isReact && this.isTemplate) {\n this.clearTemplate();\n }\n if (!this.isTemplate) {\n if (this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE)) {\n detach(this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).children[0]);\n detach(this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).children[0]);\n var item = this.items[this.selectedItem];\n var pos = isNOU(item.header) || isNOU(item.header.iconPosition) ? '' : item.header.iconPosition;\n var css = isNOU(item.header) || isNOU(item.header.iconCss) ? '' : item.header.iconCss;\n var text = item.headerTemplate || item.header.text;\n var txtWrap = this.createElement('div', {\n className: CLS_TEXT,\n attrs: {\n 'role': 'presentation'\n }\n });\n if (!isNOU(text.tagName)) {\n txtWrap.appendChild(text);\n } else {\n this.headerTextCompile(txtWrap, text, this.selectedItem);\n }\n var tEle = void 0;\n var icon = this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n var tConts = this.createElement('div', {\n className: CLS_TEXT_WRAP\n });\n tConts.appendChild(txtWrap);\n if (text !== '' && text !== undefined && css !== '') {\n if (pos === 'left' || pos === 'top') {\n tConts.insertBefore(icon, tConts.firstElementChild);\n } else {\n tConts.appendChild(icon);\n }\n tEle = txtWrap;\n this.isIconAlone = false;\n } else {\n tEle = css === '' ? txtWrap : icon;\n if (tEle === icon) {\n detach(txtWrap);\n tConts.appendChild(icon);\n this.isIconAlone = true;\n }\n }\n var tabIndex = isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString();\n var wrapAtt = item.disabled ? {} : {\n tabIndex: tabIndex,\n 'data-tabindex': tabIndex,\n role: 'tab',\n 'aria-selected': 'true',\n 'aria-disabled': 'false'\n };\n tConts.appendChild(this.btnCls.cloneNode(true));\n var wraper = this.createElement('div', {\n className: CLS_WRAP,\n attrs: wrapAtt\n });\n wraper.appendChild(tConts);\n if (pos === 'top' || pos === 'bottom') {\n this.element.classList.add('e-vertical-icon');\n }\n this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).appendChild(wraper);\n var crElem = this.createElement('div');\n var cnt = item.content;\n var eleStr = void 0;\n if (typeof cnt === 'string' || isNOU(cnt.innerHTML)) {\n if (typeof cnt === 'string' && this.enableHtmlSanitizer) {\n cnt = SanitizeHtmlHelper.sanitize(cnt);\n }\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n var eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n crElem.appendChild(eleVal);\n eleVal.style.display = '';\n } else {\n this.compileElement(crElem, cnt, 'content', this.selectedItem);\n }\n } else {\n this.compileElement(crElem, cnt, 'content', this.selectedItem);\n }\n } else {\n crElem.appendChild(cnt);\n }\n if (!isNOU(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n this.element.querySelector('.' + CLS_ITEM + '.' + CLS_ACTIVE).appendChild(crElem);\n }\n } else {\n var tabItems = this.element.querySelector('.' + CLS_TB_ITEMS);\n var element = this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE);\n var index = this.getIndexFromEle(element.id);\n var header = element.innerText;\n var detachContent = this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).children[0];\n var mainContents = detachContent.innerHTML;\n detach(element);\n detach(detachContent);\n var attr = {\n className: CLS_TB_ITEM + ' ' + CLS_TEMPLATE + ' ' + CLS_ACTIVE,\n id: CLS_ITEM + this.tabId + '_' + index\n };\n var txtString = this.createElement('span', {\n className: CLS_TEXT,\n innerHTML: header,\n attrs: {\n 'role': 'presentation'\n }\n }).outerHTML;\n var conte = this.createElement('div', {\n className: CLS_TEXT_WRAP,\n innerHTML: txtString + this.btnCls.outerHTML\n }).outerHTML;\n var tabIndex = element.firstElementChild.getAttribute('data-tabindex');\n var wrap = this.createElement('div', {\n className: CLS_WRAP,\n innerHTML: conte,\n attrs: {\n tabIndex: tabIndex,\n 'data-tabindex': tabIndex,\n role: 'tab',\n 'aria-controls': CLS_CONTENT + this.tabId + '_' + index,\n 'aria-selected': 'true',\n 'aria-disabled': 'false'\n }\n });\n tabItems.insertBefore(this.createElement('div', attr), tabItems.children[index + 1]);\n this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).appendChild(wrap);\n var crElem = this.createElement('div', {\n innerHTML: mainContents\n });\n this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).appendChild(crElem);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * To refresh the active tab indicator.\n *\n * @returns {void}\n */\n Tab.prototype.refreshActiveTabBorder = function () {\n if (this.heightAdjustMode === 'None' && this.height !== 'auto' && this.cntEle && !this.isVertical()) {\n var hdrEle = this.getTabHeader();\n setStyle(this.cntEle, {\n 'height': this.element.clientHeight - hdrEle.offsetHeight + 'px'\n });\n }\n var activeEle = select('.' + CLS_TB_ITEM + '.' + CLS_TB_POPUP + '.' + CLS_ACTIVE, this.element);\n if (!isNOU(activeEle) && this.reorderActiveTab) {\n this.select(this.getEleIndex(activeEle));\n }\n this.refreshActiveBorder();\n };\n __decorate([Collection([], TabItem)], Tab.prototype, \"items\", void 0);\n __decorate([Property('100%')], Tab.prototype, \"width\", void 0);\n __decorate([Property('Both')], Tab.prototype, \"swipeMode\", void 0);\n __decorate([Property('auto')], Tab.prototype, \"height\", void 0);\n __decorate([Property('')], Tab.prototype, \"cssClass\", void 0);\n __decorate([Property(0)], Tab.prototype, \"selectedItem\", void 0);\n __decorate([Property('Top')], Tab.prototype, \"headerPlacement\", void 0);\n __decorate([Property('Content')], Tab.prototype, \"heightAdjustMode\", void 0);\n __decorate([Property('Scrollable')], Tab.prototype, \"overflowMode\", void 0);\n __decorate([Property('Demand')], Tab.prototype, \"loadOn\", void 0);\n __decorate([Property(false)], Tab.prototype, \"enablePersistence\", void 0);\n __decorate([Property(true)], Tab.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([Property(false)], Tab.prototype, \"showCloseButton\", void 0);\n __decorate([Property(true)], Tab.prototype, \"reorderActiveTab\", void 0);\n __decorate([Property()], Tab.prototype, \"scrollStep\", void 0);\n __decorate([Property()], Tab.prototype, \"dragArea\", void 0);\n __decorate([Property(false)], Tab.prototype, \"allowDragAndDrop\", void 0);\n __decorate([Property(true)], Tab.prototype, \"clearTemplates\", void 0);\n __decorate([Complex({}, TabAnimationSettings)], Tab.prototype, \"animation\", void 0);\n __decorate([Event()], Tab.prototype, \"created\", void 0);\n __decorate([Event()], Tab.prototype, \"adding\", void 0);\n __decorate([Event()], Tab.prototype, \"added\", void 0);\n __decorate([Event()], Tab.prototype, \"selecting\", void 0);\n __decorate([Event()], Tab.prototype, \"selected\", void 0);\n __decorate([Event()], Tab.prototype, \"removing\", void 0);\n __decorate([Event()], Tab.prototype, \"removed\", void 0);\n __decorate([Event()], Tab.prototype, \"onDragStart\", void 0);\n __decorate([Event()], Tab.prototype, \"dragging\", void 0);\n __decorate([Event()], Tab.prototype, \"dragged\", void 0);\n __decorate([Event()], Tab.prototype, \"destroyed\", void 0);\n Tab = __decorate([NotifyPropertyChanges], Tab);\n return Tab;\n}(Component);\nexport { Tab };","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};\nimport { Component, formatUnit, EventHandler, Event, isNullOrUndefined, closest, Browser } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, addClass, removeClass, Touch } from '@syncfusion/ej2-base';\nvar CONTROL = 'e-control';\nvar ROOT = 'e-sidebar';\nvar DOCKER = 'e-dock';\nvar CLOSE = 'e-close';\nvar OPEN = 'e-open';\nvar TRASITION = 'e-transition';\nvar DEFAULTBACKDROP = 'e-sidebar-overlay';\nvar RTL = 'e-rtl';\nvar RIGHT = 'e-right';\nvar LEFT = 'e-left';\nvar OVER = 'e-over';\nvar PUSH = 'e-push';\nvar SLIDE = 'e-slide';\nvar VISIBILITY = 'e-visibility';\nvar DISPLAY = 'e-sidebar-display';\nvar MAINCONTENTANIMATION = 'e-content-animation';\nvar DISABLEANIMATION = 'e-disable-animation';\nvar CONTEXT = 'e-sidebar-context';\nvar SIDEBARABSOLUTE = 'e-sidebar-absolute';\n/**\n * Sidebar is an expandable or collapsible\n * component that typically act as a side container to place the primary or secondary content alongside of the main content.\n * ```html\n * <aside id=\"sidebar\">\n * </aside>\n * ```\n * ```typescript\n * <script>\n * let sidebarObject: Sidebar = new Sidebar();\n * sidebarObject.appendTo(\"#sidebar\");\n * </script>\n * ```\n */\nvar Sidebar = /** @class */function (_super) {\n __extends(Sidebar, _super);\n function Sidebar(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.documentClickContext = _this.documentclickHandler.bind(_this);\n return _this;\n }\n Sidebar.prototype.preRender = function () {\n this.setWidth();\n };\n Sidebar.prototype.render = function () {\n this.initialize();\n this.wireEvents();\n this.renderComplete();\n };\n Sidebar.prototype.initialize = function () {\n this.setTarget();\n this.addClass();\n this.setZindex();\n if (this.enableDock) {\n this.setDock();\n }\n if (this.isOpen) {\n this.show();\n this.firstRender = true;\n } else {\n this.setMediaQuery();\n }\n this.checkType(true);\n this.setType(this.type);\n this.setCloseOnDocumentClick();\n this.setEnableRTL();\n if (Browser.isDevice) {\n this.windowWidth = window.innerWidth;\n }\n };\n Sidebar.prototype.setEnableRTL = function () {\n (this.enableRtl ? addClass : removeClass)([this.element], RTL);\n };\n Sidebar.prototype.setTarget = function () {\n this.targetEle = this.element.nextElementSibling;\n this.sidebarEleCopy = this.element.cloneNode(true);\n if (typeof this.target === 'string') {\n this.setProperties({\n target: document.querySelector(this.target)\n }, true);\n }\n if (this.target) {\n this.target.insertBefore(this.element, this.target.children[0]);\n addClass([this.element], SIDEBARABSOLUTE);\n addClass([this.target], CONTEXT);\n this.targetEle = this.getTargetElement();\n }\n };\n Sidebar.prototype.getTargetElement = function () {\n var siblingElement = this.element.nextElementSibling;\n while (!isNOU(siblingElement)) {\n if (!siblingElement.classList.contains(ROOT)) {\n break;\n }\n siblingElement = siblingElement.nextElementSibling;\n }\n return siblingElement;\n };\n Sidebar.prototype.setCloseOnDocumentClick = function () {\n if (this.closeOnDocumentClick) {\n document.addEventListener('mousedown', this.documentClickContext);\n document.addEventListener('touchstart', this.documentClickContext);\n } else {\n document.removeEventListener('mousedown', this.documentClickContext);\n document.removeEventListener('touchstart', this.documentClickContext);\n }\n };\n Sidebar.prototype.setWidth = function () {\n if (this.enableDock && this.position === 'Left') {\n setStyle(this.element, {\n 'width': this.setDimension(this.dockSize)\n });\n } else if (this.enableDock && this.position === 'Right') {\n setStyle(this.element, {\n 'width': this.setDimension(this.dockSize)\n });\n } else if (!this.enableDock) {\n setStyle(this.element, {\n 'width': this.setDimension(this.width)\n });\n }\n };\n Sidebar.prototype.setDimension = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n } else if (typeof width === 'string') {\n width = width.match(/px|%|em/) ? width : formatUnit(width);\n } else {\n width = '100%';\n }\n return width;\n };\n Sidebar.prototype.setZindex = function () {\n setStyle(this.element, {\n 'z-index': '' + this.zIndex\n });\n };\n Sidebar.prototype.addClass = function () {\n if (this.element.tagName === 'EJS-SIDEBAR') {\n addClass([this.element], DISPLAY);\n }\n var classELement = document.querySelector('.e-main-content');\n if (!isNullOrUndefined(classELement || this.targetEle)) {\n addClass([classELement || this.targetEle], [MAINCONTENTANIMATION]);\n }\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : null;\n if (!this.enableDock && this.type !== 'Auto') {\n addClass([this.element], [VISIBILITY]);\n }\n removeClass([this.element], [OPEN, CLOSE, RIGHT, LEFT, SLIDE, PUSH, OVER]);\n this.element.classList.add(ROOT);\n addClass([this.element], this.position === 'Right' ? RIGHT : LEFT);\n if (this.enableDock) {\n addClass([this.element], DOCKER);\n }\n if (!isNullOrUndefined(this.tabIndex)) {\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n if (this.type === 'Auto' && !Browser.isDevice && this.checkMediaQuery()) {\n this.show();\n } else if (!this.isOpen) {\n addClass([this.element], [CLOSE, DISABLEANIMATION]);\n }\n };\n Sidebar.prototype.checkType = function (val) {\n if (!(this.type === 'Push' || this.type === 'Over' || this.type === 'Slide')) {\n this.type = 'Auto';\n } else {\n if (!this.element.classList.contains(CLOSE) && !val) {\n this.hide();\n }\n }\n };\n Sidebar.prototype.transitionEnd = function (e) {\n this.setDock();\n if (!isNullOrUndefined(e) && !this.firstRender) {\n this.triggerChange();\n }\n this.firstRender = false;\n EventHandler.remove(this.element, 'transitionend', this.transitionEnd);\n };\n Sidebar.prototype.destroyBackDrop = function () {\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n if (this.target && this.showBackdrop && sibling && !isNullOrUndefined(this.defaultBackdropDiv)) {\n removeClass([this.defaultBackdropDiv], DEFAULTBACKDROP);\n } else if (this.showBackdrop && this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n };\n /**\n * Hide the Sidebar component, if it is in an open state.\n *\n * @param {Event} e - The event triggering the hide action.\n * @returns {void}\n *\n */\n Sidebar.prototype.hide = function (e) {\n var _this = this;\n var closeArguments = {\n model: this,\n element: this.element,\n cancel: false,\n isInteracted: !isNullOrUndefined(e),\n event: e || null\n };\n this.trigger('close', closeArguments, function (observedcloseArgs) {\n if (!observedcloseArgs.cancel) {\n if (_this.element.classList.contains(CLOSE)) {\n return;\n }\n if (_this.element.classList.contains(OPEN) && !_this.animate) {\n _this.triggerChange();\n }\n addClass([_this.element], CLOSE);\n removeClass([_this.element], OPEN);\n setStyle(_this.element, {\n 'width': formatUnit(_this.enableDock ? _this.dockSize : _this.width)\n });\n _this.setType(_this.type);\n var sibling = document.querySelector('.e-main-content') || _this.targetEle;\n if (!_this.enableDock && sibling) {\n sibling.style.transform = 'translateX(' + 0 + 'px)';\n sibling.style[_this.position === 'Left' ? 'marginLeft' : 'marginRight'] = '0px';\n }\n _this.destroyBackDrop();\n _this.setAnimation();\n if (_this.type === 'Slide') {\n document.body.classList.remove('e-sidebar-overflow');\n }\n _this.setProperties({\n isOpen: false\n }, true);\n if (_this.enableDock) {\n setTimeout(function () {\n return _this.setTimeOut();\n }, 50);\n }\n EventHandler.add(_this.element, 'transitionend', _this.transitionEnd, _this);\n }\n });\n };\n Sidebar.prototype.setTimeOut = function () {\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n var elementWidth = this.element.getBoundingClientRect().width;\n if (this.element.classList.contains(OPEN) && sibling && !(this.type === 'Over' && this.enableDock)) {\n if (this.position === 'Left') {\n sibling.style.marginLeft = this.setDimension(this.width === 'auto' ? elementWidth : this.width);\n } else {\n sibling.style.marginRight = this.setDimension(this.width === 'auto' ? elementWidth : this.width);\n }\n } else if (this.element.classList.contains(CLOSE) && sibling) {\n if (this.position === 'Left') {\n sibling.style.marginLeft = this.setDimension(this.dockSize === 'auto' ? elementWidth : this.dockSize);\n } else {\n sibling.style.marginRight = this.setDimension(this.dockSize === 'auto' ? elementWidth : this.dockSize);\n }\n }\n };\n /**\n * Shows the Sidebar component, if it is in closed state.\n *\n * @param {Event} e - The optional event triggering the show action.\n * @returns {void}\n */\n Sidebar.prototype.show = function (e) {\n var _this = this;\n var openArguments = {\n model: this,\n element: this.element,\n cancel: false,\n isInteracted: !isNullOrUndefined(e),\n event: e || null\n };\n this.trigger('open', openArguments, function (observedopenArgs) {\n if (!observedopenArgs.cancel) {\n removeClass([_this.element], [VISIBILITY, DISABLEANIMATION]);\n if (_this.element.classList.contains(OPEN)) {\n return;\n }\n if (_this.element.classList.contains(CLOSE) && !_this.animate) {\n _this.triggerChange();\n }\n addClass([_this.element], [OPEN, TRASITION]);\n setStyle(_this.element, {\n 'transform': ''\n });\n removeClass([_this.element], CLOSE);\n setStyle(_this.element, {\n 'width': formatUnit(_this.width)\n });\n _this.setType(_this.type);\n _this.createBackDrop();\n _this.setAnimation();\n if (_this.type === 'Slide') {\n document.body.classList.add('e-sidebar-overflow');\n }\n _this.setProperties({\n isOpen: true\n }, true);\n EventHandler.add(_this.element, 'transitionend', _this.transitionEnd, _this);\n }\n });\n };\n Sidebar.prototype.setAnimation = function () {\n if (this.animate) {\n removeClass([this.element], DISABLEANIMATION);\n } else {\n addClass([this.element], DISABLEANIMATION);\n }\n };\n Sidebar.prototype.triggerChange = function () {\n var changeArguments = {\n name: 'change',\n element: this.element\n };\n this.trigger('change', changeArguments);\n };\n Sidebar.prototype.setDock = function () {\n if (this.enableDock && this.position === 'Left' && !this.getState()) {\n setStyle(this.element, {\n 'transform': 'translateX(' + -100 + '%) translateX(' + this.setDimension(this.dockSize) + ')'\n });\n } else if (this.enableDock && this.position === 'Right' && !this.getState()) {\n setStyle(this.element, {\n 'transform': 'translateX(' + 100 + '%) translateX(' + '-' + this.setDimension(this.dockSize) + ')'\n });\n }\n if (this.element.classList.contains(CLOSE) && this.enableDock) {\n setStyle(this.element, {\n 'width': this.setDimension(this.dockSize)\n });\n }\n };\n Sidebar.prototype.createBackDrop = function () {\n if (this.target && this.showBackdrop && this.getState()) {\n var targetString = this.target;\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n this.defaultBackdropDiv = this.createElement('div');\n addClass([this.defaultBackdropDiv], DEFAULTBACKDROP);\n setStyle(this.defaultBackdropDiv, {\n height: targetString.style.height\n });\n sibling.appendChild(this.defaultBackdropDiv);\n } else if (this.showBackdrop && !this.modal && this.getState()) {\n this.modal = this.createElement('div');\n this.modal.className = DEFAULTBACKDROP;\n this.modal.style.display = 'block';\n document.body.appendChild(this.modal);\n }\n };\n Sidebar.prototype.getPersistData = function () {\n return this.addOnPersist(['type', 'position', 'isOpen']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returns module name.\n * @private\n *\n */\n Sidebar.prototype.getModuleName = function () {\n return 'sidebar';\n };\n /**\n * Shows or hides the Sidebar based on the current state.\n *\n * @returns {void}\n */\n Sidebar.prototype.toggle = function () {\n if (this.element.classList.contains(OPEN)) {\n this.hide();\n } else {\n this.show();\n }\n };\n Sidebar.prototype.getState = function () {\n return this.element.classList.contains(OPEN) ? true : false;\n };\n Sidebar.prototype.setMediaQuery = function () {\n if (this.mediaQuery) {\n var media = false;\n if (typeof this.mediaQuery === 'string') {\n media = window.matchMedia(this.mediaQuery).matches;\n } else {\n media = this.mediaQuery.matches;\n }\n if (media && this.windowWidth !== window.innerWidth) {\n this.show();\n } else if (this.getState() && this.windowWidth !== window.innerWidth) {\n this.hide();\n }\n }\n };\n Sidebar.prototype.checkMediaQuery = function () {\n if (isNullOrUndefined(this.mediaQuery)) {\n return true;\n }\n return typeof this.mediaQuery === 'string' ? window.matchMedia(this.mediaQuery).matches : this.mediaQuery.matches;\n };\n Sidebar.prototype.resize = function () {\n if (!isNullOrUndefined(this.width) && this.width !== 'auto' && typeof this.width === 'string' && !this.width.includes('px')) {\n this.setType(this.type);\n }\n if (this.type === 'Auto') {\n if (Browser.isDevice) {\n addClass([this.element], OVER);\n } else {\n addClass([this.element], PUSH);\n }\n }\n this.setMediaQuery();\n if (Browser.isDevice) {\n this.windowWidth = window.innerWidth;\n }\n };\n Sidebar.prototype.documentclickHandler = function (e) {\n if (closest(e.target, '.' + CONTROL + '' + '.' + ROOT)) {\n return;\n }\n this.hide(e);\n };\n Sidebar.prototype.enableGestureHandler = function (args) {\n if (!this.isOpen && this.position === 'Left' && args.swipeDirection === 'Right' && args.startX <= 20 && args.distanceX >= 50 && args.velocity >= 0.5) {\n this.show();\n } else if (this.isOpen && this.position === 'Left' && args.swipeDirection === 'Left') {\n this.hide(args.originalEvent);\n } else if (this.isOpen && this.position === 'Right' && args.swipeDirection === 'Right') {\n this.hide(args.originalEvent);\n } else if (!this.isOpen && this.position === 'Right' && args.swipeDirection === 'Left' && window.innerWidth - args.startX <= 20 && args.distanceX >= 50 && args.velocity >= 0.5) {\n this.show();\n }\n };\n Sidebar.prototype.setEnableGestures = function () {\n if (this.enableGestures) {\n this.mainContentEle = new Touch(document.body, {\n swipe: this.enableGestureHandler.bind(this)\n });\n this.sidebarEle = new Touch(this.element, {\n swipe: this.enableGestureHandler.bind(this)\n });\n } else {\n if (this.mainContentEle && this.sidebarEle) {\n this.mainContentEle.destroy();\n this.sidebarEle.destroy();\n }\n }\n };\n Sidebar.prototype.wireEvents = function () {\n this.setEnableGestures();\n EventHandler.add(window, 'resize', this.resize, this);\n };\n Sidebar.prototype.unWireEvents = function () {\n EventHandler.remove(window, 'resize', this.resize);\n EventHandler.remove(document, 'mousedown touchstart', this.documentclickHandler);\n if (this.mainContentEle) {\n this.mainContentEle.destroy();\n }\n if (this.sidebarEle) {\n this.sidebarEle.destroy();\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {SidebarModel} newProp - specifies newProp value.\n * @param {SidebarModel} oldProp - specifies oldProp value.\n * @returns {void}\n * @private\n *\n */\n Sidebar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n var isRendered = this.isServerRendered;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'isOpen':\n if (this.isOpen) {\n this.show();\n } else {\n this.hide();\n }\n break;\n case 'width':\n this.setWidth();\n if (!this.getState()) {\n this.setDock();\n }\n break;\n case 'animate':\n this.setAnimation();\n break;\n case 'type':\n this.checkType(false);\n removeClass([this.element], [VISIBILITY]);\n this.addClass();\n addClass([this.element], this.type === 'Auto' ? Browser.isDevice ? ['e-over'] : ['e-push'] : ['e-' + this.type.toLowerCase()]);\n break;\n case 'position':\n this.element.style.transform = '';\n this.setDock();\n if (sibling) {\n sibling.style[this.position === 'Left' ? 'marginRight' : 'marginLeft'] = '0px';\n }\n if (this.position === 'Right') {\n removeClass([this.element], LEFT);\n addClass([this.element], RIGHT);\n } else {\n removeClass([this.element], RIGHT);\n addClass([this.element], LEFT);\n }\n this.setType(this.type);\n break;\n case 'showBackdrop':\n if (this.showBackdrop) {\n this.createBackDrop();\n } else {\n if (this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n }\n break;\n case 'target':\n if (typeof this.target === 'string') {\n this.setProperties({\n target: document.querySelector(this.target)\n }, true);\n }\n if (isNullOrUndefined(this.target)) {\n removeClass([this.element], SIDEBARABSOLUTE);\n removeClass([oldProp.target], CONTEXT);\n setStyle(sibling, {\n 'margin-left': 0,\n 'margin-right': 0\n });\n document.body.insertAdjacentElement('afterbegin', this.element);\n }\n this.isServerRendered = false;\n _super.prototype.refresh.call(this);\n this.isServerRendered = isRendered;\n break;\n case 'closeOnDocumentClick':\n this.setCloseOnDocumentClick();\n break;\n case 'enableDock':\n if (!this.getState()) {\n this.setDock();\n }\n break;\n case 'zIndex':\n this.setZindex();\n break;\n case 'mediaQuery':\n this.setMediaQuery();\n break;\n case 'enableGestures':\n this.setEnableGestures();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n }\n }\n };\n Sidebar.prototype.setType = function (type) {\n var elementWidth = this.element.getBoundingClientRect().width;\n this.setZindex();\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n if (sibling) {\n sibling.style.transform = 'translateX(' + 0 + 'px)';\n if (!Browser.isDevice && this.type !== 'Auto' && !(this.type === 'Over' && this.enableDock)) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = '0px';\n }\n }\n var margin = this.position === 'Left' ? elementWidth + 'px' : elementWidth + 'px';\n var eleWidth = this.position === 'Left' ? elementWidth : -elementWidth;\n removeClass([this.element], [PUSH, OVER, SLIDE]);\n switch (type) {\n case 'Push':\n addClass([this.element], [PUSH]);\n if (sibling && (this.enableDock || this.element.classList.contains(OPEN))) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = margin;\n }\n break;\n case 'Slide':\n addClass([this.element], [SLIDE]);\n if (sibling && (this.enableDock || this.element.classList.contains(OPEN))) {\n sibling.style.transform = 'translateX(' + eleWidth + 'px)';\n }\n break;\n case 'Over':\n addClass([this.element], [OVER]);\n if (this.enableDock && (this.element.classList.contains(CLOSE) || this.isOpen)) {\n if (sibling) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = this.setDimension(this.dockSize);\n }\n }\n break;\n case 'Auto':\n addClass([this.element], [TRASITION]);\n if (Browser.isDevice) {\n if (sibling && this.enableDock && !this.getState()) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = margin;\n addClass([this.element], PUSH);\n } else {\n addClass([this.element], OVER);\n }\n } else {\n addClass([this.element], PUSH);\n if (sibling && (this.enableDock || this.element.classList.contains(OPEN))) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = margin;\n }\n }\n this.createBackDrop();\n }\n };\n /**\n * Removes the control from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @returns {void}\n *\n */\n Sidebar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.target) {\n removeClass([this.target], CONTEXT);\n }\n this.destroyBackDrop();\n if (this.element) {\n removeClass([this.element], [OPEN, CLOSE, PUSH, SLIDE, OVER, LEFT, RIGHT, TRASITION, DISABLEANIMATION]);\n removeClass([this.element], SIDEBARABSOLUTE);\n this.element.style.width = '';\n this.element.style.zIndex = '';\n this.element.style.transform = '';\n if (!isNullOrUndefined(this.sidebarEleCopy.getAttribute('tabindex'))) {\n this.element.setAttribute('tabindex', this.tabIndex);\n } else {\n this.element.removeAttribute('tabindex');\n }\n }\n this.windowWidth = null;\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n if (!isNullOrUndefined(sibling)) {\n sibling.style.margin = '';\n sibling.style.transform = '';\n }\n this.unWireEvents();\n };\n __decorate([Property('auto')], Sidebar.prototype, \"dockSize\", void 0);\n __decorate([Property(null)], Sidebar.prototype, \"mediaQuery\", void 0);\n __decorate([Property(false)], Sidebar.prototype, \"enableDock\", void 0);\n __decorate([Property('en-US')], Sidebar.prototype, \"locale\", void 0);\n __decorate([Property(false)], Sidebar.prototype, \"enablePersistence\", void 0);\n __decorate([Property(true)], Sidebar.prototype, \"enableGestures\", void 0);\n __decorate([Property(false)], Sidebar.prototype, \"isOpen\", void 0);\n __decorate([Property(false)], Sidebar.prototype, \"enableRtl\", void 0);\n __decorate([Property(true)], Sidebar.prototype, \"animate\", void 0);\n __decorate([Property('auto')], Sidebar.prototype, \"height\", void 0);\n __decorate([Property(false)], Sidebar.prototype, \"closeOnDocumentClick\", void 0);\n __decorate([Property('Left')], Sidebar.prototype, \"position\", void 0);\n __decorate([Property(null)], Sidebar.prototype, \"target\", void 0);\n __decorate([Property(false)], Sidebar.prototype, \"showBackdrop\", void 0);\n __decorate([Property('Auto')], Sidebar.prototype, \"type\", void 0);\n __decorate([Property('auto')], Sidebar.prototype, \"width\", void 0);\n __decorate([Property(1000)], Sidebar.prototype, \"zIndex\", void 0);\n __decorate([Event()], Sidebar.prototype, \"created\", void 0);\n __decorate([Event()], Sidebar.prototype, \"close\", void 0);\n __decorate([Event()], Sidebar.prototype, \"open\", void 0);\n __decorate([Event()], Sidebar.prototype, \"change\", void 0);\n __decorate([Event()], Sidebar.prototype, \"destroyed\", void 0);\n Sidebar = __decorate([NotifyPropertyChanges], Sidebar);\n return Sidebar;\n}(Component);\nexport { Sidebar };","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 @typescript-eslint/no-explicit-any */\nimport { Component, EventHandler, Collection, Property, Event, formatUnit, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { ChildProperty, addClass, removeClass, setStyleAttribute, attributes, getUniqueID, compile, getInstance, L10n } from '@syncfusion/ej2-base';\nimport { append, closest, isNullOrUndefined, remove, classList, Touch, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\n// Constant variables\nvar CLS_CAROUSEL = 'e-carousel';\nvar CLS_ACTIVE = 'e-active';\nvar CLS_RTL = 'e-rtl';\nvar CLS_PARTIAL = 'e-partial';\nvar CLS_SWIPE = 'e-swipe';\nvar CLS_SLIDE_CONTAINER = 'e-carousel-slide-container';\nvar CLS_ITEMS = 'e-carousel-items';\nvar CLS_CLONED = 'e-cloned';\nvar CLS_ITEM = 'e-carousel-item';\nvar CLS_PREVIOUS = 'e-previous';\nvar CLS_NEXT = 'e-next';\nvar CLS_PREV_ICON = 'e-previous-icon';\nvar CLS_NEXT_ICON = 'e-next-icon';\nvar CLS_NAVIGATORS = 'e-carousel-navigators';\nvar CLS_INDICATORS = 'e-carousel-indicators';\nvar CLS_INDICATOR_BARS = 'e-indicator-bars';\nvar CLS_INDICATOR_BAR = 'e-indicator-bar';\nvar CLS_INDICATOR = 'e-indicator';\nvar CLS_ICON = 'e-icons';\nvar CLS_PLAY_PAUSE = 'e-play-pause';\nvar CLS_PLAY_ICON = 'e-play-icon';\nvar CLS_PAUSE_ICON = 'e-pause-icon';\nvar CLS_PREV_BUTTON = 'e-previous-button';\nvar CLS_NEXT_BUTTON = 'e-next-button';\nvar CLS_PLAY_BUTTON = 'e-play-button';\nvar CLS_FLAT = 'e-flat';\nvar CLS_ROUND = 'e-round';\nvar CLS_HOVER_ARROWS = 'e-hover-arrows';\nvar CLS_HOVER = 'e-carousel-hover';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_SLIDE_ANIMATION = 'e-carousel-slide-animation';\nvar CLS_FADE_ANIMATION = 'e-carousel-fade-animation';\nvar CLS_CUSTOM_ANIMATION = 'e-carousel-custom-animation';\nvar CLS_ANIMATION_NONE = 'e-carousel-animation-none';\nvar CLS_PREV_SLIDE = 'e-prev';\nvar CLS_NEXT_SLIDE = 'e-next';\nvar CLS_TRANSITION_START = 'e-transition-start';\nvar CLS_TRANSITION_END = 'e-transition-end';\n/**\n * Specifies the action (touch & mouse) which enables the slide swiping action in carousel.\n * * Touch - Enables or disables the swiping action in touch interaction.\n * * Mouse - Enables or disables the swiping action in mouse interaction.\n *\n * @aspNumberEnum\n */\nexport var CarouselSwipeMode;\n(function (CarouselSwipeMode) {\n /** Enables or disables the swiping action in touch interaction. */\n CarouselSwipeMode[CarouselSwipeMode[\"Touch\"] = 1] = \"Touch\";\n /** Enables or disables the swiping action in mouse interaction. */\n CarouselSwipeMode[CarouselSwipeMode[\"Mouse\"] = 2] = \"Mouse\";\n})(CarouselSwipeMode || (CarouselSwipeMode = {}));\n/** Specifies the carousel individual item. */\nvar CarouselItem = /** @class */function (_super) {\n __extends(CarouselItem, _super);\n function CarouselItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property()], CarouselItem.prototype, \"cssClass\", void 0);\n __decorate([Property()], CarouselItem.prototype, \"interval\", void 0);\n __decorate([Property()], CarouselItem.prototype, \"template\", void 0);\n __decorate([Property()], CarouselItem.prototype, \"htmlAttributes\", void 0);\n return CarouselItem;\n}(ChildProperty);\nexport { CarouselItem };\nvar Carousel = /** @class */function (_super) {\n __extends(Carousel, _super);\n /**\n * Constructor for creating the Carousel widget\n *\n * @param {CarouselModel} options Accepts the carousel model properties to initiate the rendering\n * @param {string | HTMLElement} element Accepts the DOM element reference\n */\n function Carousel(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isSwipe = false;\n return _this;\n }\n Carousel.prototype.getModuleName = function () {\n return CLS_CAROUSEL.replace('e-', '');\n };\n Carousel.prototype.getPersistData = function () {\n return this.addOnPersist(['selectedIndex']);\n };\n Carousel.prototype.preRender = function () {\n this.keyConfigs = {\n home: 'home',\n end: 'end',\n space: 'space',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow'\n };\n var defaultLocale = {\n nextSlide: 'Next slide',\n of: 'of',\n pauseSlideTransition: 'Pause slide transition',\n playSlideTransition: 'Play slide transition',\n previousSlide: 'Previous slide',\n slide: 'Slide',\n slideShow: 'Slide show'\n };\n this.localeObj = new L10n(this.getModuleName(), defaultLocale, this.locale);\n };\n Carousel.prototype.render = function () {\n this.initialize();\n this.renderSlides();\n this.renderNavigators();\n this.renderPlayButton();\n this.renderIndicators();\n this.applyAnimation();\n this.wireEvents();\n };\n Carousel.prototype.onPropertyChanged = function (newProp, oldProp) {\n var target;\n var rtlElement;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'animationEffect':\n this.applyAnimation();\n break;\n case 'cssClass':\n classList(this.element, [newProp.cssClass], [oldProp.cssClass]);\n break;\n case 'selectedIndex':\n this.setActiveSlide(this.selectedIndex, oldProp.selectedIndex > this.selectedIndex ? 'Previous' : 'Next');\n this.autoSlide();\n break;\n case 'htmlAttributes':\n if (!isNullOrUndefined(this.htmlAttributes)) {\n this.setHtmlAttributes(this.htmlAttributes, this.element);\n }\n break;\n case 'enableTouchSwipe':\n if (!this.enableTouchSwipe && this.touchModule) {\n this.touchModule.destroy();\n }\n if (this.element.querySelector(\".\" + CLS_ITEMS)) {\n this.renderTouchActions();\n }\n break;\n case 'loop':\n if (this.loop && isNullOrUndefined(this.autoSlideInterval)) {\n this.applySlideInterval();\n }\n this.handleNavigatorsActions(this.selectedIndex);\n if (this.partialVisible || !(this.swipeMode === (~CarouselSwipeMode.Touch & ~CarouselSwipeMode.Mouse))) {\n this.reRenderSlides();\n }\n break;\n case 'allowKeyboardInteraction':\n if (this.keyModule) {\n this.keyModule.destroy();\n this.keyModule = null;\n }\n if (newProp.allowKeyboardInteraction) {\n this.renderKeyboardActions();\n }\n break;\n case 'enableRtl':\n rtlElement = [].slice.call(this.element.querySelectorAll(\".\" + CLS_PREV_BUTTON + \",\\n .\" + CLS_NEXT_BUTTON + \", .\" + CLS_PLAY_BUTTON));\n rtlElement.push(this.element);\n if (this.enableRtl) {\n addClass(rtlElement, CLS_RTL);\n } else {\n removeClass(rtlElement, CLS_RTL);\n }\n if (this.partialVisible || !(this.swipeMode === (~CarouselSwipeMode.Touch & ~CarouselSwipeMode.Mouse))) {\n var cloneCount = this.loop ? this.getNumOfItems() : 0;\n var slideWidth = this.itemsContainer.firstElementChild.clientWidth;\n this.itemsContainer.style.transform = this.getTranslateX(slideWidth, this.selectedIndex + cloneCount);\n }\n break;\n case 'buttonsVisibility':\n target = this.element.querySelector(\".\" + CLS_NAVIGATORS);\n if (target) {\n switch (this.buttonsVisibility) {\n case 'Hidden':\n this.resetTemplates(['previousButtonTemplate', 'nextButtonTemplate']);\n remove(target);\n break;\n case 'VisibleOnHover':\n addClass([].slice.call(target.childNodes), CLS_HOVER_ARROWS);\n break;\n case 'Visible':\n removeClass([].slice.call(target.childNodes), CLS_HOVER_ARROWS);\n break;\n }\n } else {\n this.renderNavigators();\n this.renderPlayButton();\n }\n break;\n case 'width':\n setStyleAttribute(this.element, {\n 'width': formatUnit(this.width)\n });\n break;\n case 'height':\n setStyleAttribute(this.element, {\n 'height': formatUnit(this.height)\n });\n break;\n case 'autoPlay':\n if (this.showPlayButton && isNullOrUndefined(this.playButtonTemplate)) {\n this.playButtonClickHandler(null, true);\n }\n this.autoSlide();\n break;\n case 'interval':\n this.autoSlide();\n break;\n case 'showIndicators':\n case 'indicatorsType':\n target = this.element.querySelector(\".\" + CLS_INDICATORS);\n if (target) {\n this.resetTemplates(['indicatorsTemplate']);\n remove(target);\n }\n this.renderIndicators();\n break;\n case 'showPlayButton':\n target = this.element.querySelector(\".\" + CLS_PLAY_PAUSE);\n if (!this.showPlayButton && target) {\n remove(target);\n this.resetTemplates(['playButtonTemplate']);\n }\n this.renderPlayButton();\n break;\n case 'items':\n case 'dataSource':\n {\n var selectedData = prop === 'dataSource' ? this.dataSource : this.items;\n if (!isNullOrUndefined(selectedData) && selectedData.length > 0 && this.selectedIndex >= selectedData.length) {\n this.setActiveSlide(selectedData.length - 1, 'Previous');\n this.autoSlide();\n }\n this.reRenderSlides();\n this.reRenderIndicators();\n break;\n }\n case 'partialVisible':\n if (this.partialVisible) {\n addClass([this.element], CLS_PARTIAL);\n } else {\n removeClass([this.element], CLS_PARTIAL);\n }\n this.reRenderSlides();\n break;\n case 'swipeMode':\n EventHandler.remove(this.element, 'mousedown touchstart', this.swipeStart);\n EventHandler.remove(this.element, 'mousemove touchmove', this.swiping);\n EventHandler.remove(this.element, 'mouseup touchend', this.swipStop);\n this.swipeModehandlers();\n this.reRenderSlides();\n break;\n }\n }\n };\n Carousel.prototype.reRenderSlides = function () {\n var target = this.element.querySelector(\".\" + CLS_ITEMS);\n if (target) {\n this.resetTemplates(['itemTemplate']);\n remove(target);\n }\n this.renderSlides();\n };\n Carousel.prototype.reRenderIndicators = function () {\n var target = this.element.querySelector(\".\" + CLS_INDICATORS);\n if (target) {\n this.resetTemplates(['indicatorsTemplate']);\n remove(target);\n }\n this.renderIndicators();\n };\n Carousel.prototype.initialize = function () {\n var carouselClasses = [];\n carouselClasses.push(CLS_CAROUSEL);\n if (this.cssClass) {\n carouselClasses.push(this.cssClass);\n }\n if (this.enableRtl) {\n carouselClasses.push(CLS_RTL);\n }\n if (this.partialVisible) {\n carouselClasses.push(CLS_PARTIAL);\n }\n if (!(this.swipeMode === (~CarouselSwipeMode.Touch & ~CarouselSwipeMode.Mouse))) {\n carouselClasses.push(CLS_SWIPE);\n }\n addClass([this.element], carouselClasses);\n setStyleAttribute(this.element, {\n 'width': formatUnit(this.width),\n 'height': formatUnit(this.height)\n });\n attributes(this.element, {\n 'role': 'group',\n 'aria-roledescription': 'carousel',\n 'aria-label': this.localeObj.getConstant('slideShow')\n });\n if (!isNullOrUndefined(this.htmlAttributes)) {\n this.setHtmlAttributes(this.htmlAttributes, this.element);\n }\n };\n Carousel.prototype.renderSlides = function () {\n var _this = this;\n var slideContainer = this.element.querySelector('.' + CLS_SLIDE_CONTAINER);\n if (!slideContainer) {\n slideContainer = this.createElement('div', {\n className: CLS_SLIDE_CONTAINER,\n attrs: {\n 'tabindex': '0',\n 'role': 'tabpanel'\n }\n });\n this.element.appendChild(slideContainer);\n }\n this.itemsContainer = this.createElement('div', {\n className: CLS_ITEMS,\n attrs: {\n 'aria-live': this.autoPlay ? 'off' : 'polite'\n }\n });\n slideContainer.appendChild(this.itemsContainer);\n var numOfItems = this.getNumOfItems();\n if (numOfItems > 0 && this.loop) {\n if (this.items.length > 0) {\n this.items.slice(-numOfItems).forEach(function (item, index) {\n _this.renderSlide(item, item.template, index, _this.itemsContainer, true);\n });\n } else if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0) {\n this.dataSource.slice(-numOfItems).forEach(function (item, index) {\n _this.renderSlide(item, _this.itemTemplate, index, _this.itemsContainer, true);\n });\n }\n }\n if (this.items.length > 0) {\n this.slideItems = this.items;\n this.items.forEach(function (item, index) {\n _this.renderSlide(item, item.template, index, _this.itemsContainer);\n });\n } else if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0) {\n this.slideItems = this.dataSource;\n this.dataSource.forEach(function (item, index) {\n _this.renderSlide(item, _this.itemTemplate, index, _this.itemsContainer);\n });\n }\n if (numOfItems > 0 && this.loop) {\n if (this.items.length > 0) {\n this.items.slice(0, numOfItems).forEach(function (item, index) {\n _this.renderSlide(item, item.template, index, _this.itemsContainer, true);\n });\n } else if (!isNullOrUndefined(this.dataSource) && this.dataSource.length > 0) {\n this.dataSource.slice(0, numOfItems).forEach(function (item, index) {\n _this.renderSlide(item, _this.itemTemplate, index, _this.itemsContainer, true);\n });\n }\n }\n this.renderTemplates();\n this.itemsContainer.style.setProperty('--carousel-items-count', \"\" + this.itemsContainer.children.length);\n var slideWidth = isNullOrUndefined(this.itemsContainer.firstElementChild) ? 0 : this.itemsContainer.firstElementChild.clientWidth;\n this.itemsContainer.style.transitionProperty = 'none';\n var cloneCount = this.loop ? numOfItems : 0;\n this.itemsContainer.style.transform = this.getTranslateX(slideWidth, this.selectedIndex + cloneCount);\n this.autoSlide();\n this.renderTouchActions();\n this.renderKeyboardActions();\n };\n Carousel.prototype.getTranslateX = function (slideWidth, count) {\n if (count === void 0) {\n count = 1;\n }\n return this.enableRtl ? \"translateX(\" + slideWidth * count + \"px)\" : \"translateX(\" + -slideWidth * count + \"px)\";\n };\n Carousel.prototype.renderSlide = function (item, itemTemplate, index, container, isClone) {\n if (isClone === void 0) {\n isClone = false;\n }\n var itemEle = this.createElement('div', {\n id: getUniqueID('carousel_item'),\n className: CLS_ITEM + \" \" + (item.cssClass ? item.cssClass : '') + \" \" + (this.selectedIndex === index && !isClone ? CLS_ACTIVE : ''),\n attrs: {\n 'aria-hidden': this.selectedIndex === index && !isClone ? 'false' : 'true',\n 'data-index': index.toString(),\n 'role': 'group',\n 'aria-roledescription': 'slide'\n }\n });\n if (isClone) {\n itemEle.classList.add(CLS_CLONED);\n }\n if (!(this.selectedIndex === index && !isClone)) {\n itemEle.setAttribute('inert', 'true');\n }\n if (!isNullOrUndefined(item.htmlAttributes)) {\n this.setHtmlAttributes(item.htmlAttributes, itemEle);\n }\n var templateId = this.element.id + '_template';\n var template = this.templateParser(itemTemplate)(item, this, 'itemTemplate', templateId, false);\n append(template, itemEle);\n container.appendChild(itemEle);\n };\n Carousel.prototype.renderNavigators = function () {\n if (this.buttonsVisibility === 'Hidden') {\n return;\n }\n var navigators = this.createElement('div', {\n className: CLS_NAVIGATORS\n });\n var itemsContainer = this.element.querySelector(\".\" + CLS_SLIDE_CONTAINER);\n itemsContainer.insertAdjacentElement('afterend', navigators);\n if (!isNullOrUndefined(this.slideItems) && this.slideItems.length > 1) {\n this.renderNavigatorButton('Previous');\n this.renderNavigatorButton('Next');\n }\n this.renderTemplates();\n };\n Carousel.prototype.renderNavigatorButton = function (direction) {\n var buttonContainer = this.createElement('div', {\n className: (direction === 'Previous' ? CLS_PREVIOUS : CLS_NEXT) + ' ' + (this.buttonsVisibility === 'VisibleOnHover' ? CLS_HOVER_ARROWS : '')\n });\n if (direction === 'Previous' && this.previousButtonTemplate) {\n addClass([buttonContainer], CLS_TEMPLATE);\n var templateId = this.element.id + '_previousButtonTemplate';\n var template = this.templateParser(this.previousButtonTemplate)({\n type: 'Previous'\n }, this, 'previousButtonTemplate', templateId, false);\n append(template, buttonContainer);\n } else if (direction === 'Next' && this.nextButtonTemplate) {\n addClass([buttonContainer], CLS_TEMPLATE);\n var templateId = this.element.id + '_nextButtonTemplate';\n var template = this.templateParser(this.nextButtonTemplate)({\n type: 'Next'\n }, this, 'nextButtonTemplate', templateId, false);\n append(template, buttonContainer);\n } else {\n var button = this.createElement('button', {\n attrs: {\n 'aria-label': this.localeObj.getConstant(direction === 'Previous' ? 'previousSlide' : 'nextSlide'),\n 'type': 'button'\n }\n });\n var buttonObj = new Button({\n cssClass: CLS_FLAT + ' ' + CLS_ROUND + ' ' + (direction === 'Previous' ? CLS_PREV_BUTTON : CLS_NEXT_BUTTON),\n iconCss: CLS_ICON + ' ' + (direction === 'Previous' ? CLS_PREV_ICON : CLS_NEXT_ICON),\n enableRtl: this.enableRtl,\n disabled: !this.loop && this.selectedIndex === (direction === 'Previous' ? 0 : this.slideItems.length - 1)\n });\n buttonObj.appendTo(button);\n buttonContainer.appendChild(button);\n }\n this.element.querySelector('.' + CLS_NAVIGATORS).appendChild(buttonContainer);\n EventHandler.add(buttonContainer, 'click', this.navigatorClickHandler, this);\n };\n Carousel.prototype.renderPlayButton = function () {\n if (isNullOrUndefined(this.slideItems) || this.buttonsVisibility === 'Hidden' || !this.showPlayButton || this.slideItems.length <= 1) {\n return;\n }\n var playPauseWrap = this.createElement('div', {\n className: CLS_PLAY_PAUSE + ' ' + (this.buttonsVisibility === 'VisibleOnHover' ? CLS_HOVER_ARROWS : '')\n });\n if (this.playButtonTemplate) {\n addClass([playPauseWrap], CLS_TEMPLATE);\n var templateId = this.element.id + '_playButtonTemplate';\n var template = this.templateParser(this.playButtonTemplate)({}, this, 'playButtonTemplate', templateId, false);\n append(template, playPauseWrap);\n } else {\n var playButton = this.createElement('button', {\n attrs: {\n 'aria-label': this.localeObj.getConstant(this.autoPlay ? 'pauseSlideTransition' : 'playSlideTransition'),\n 'type': 'button'\n }\n });\n var isLastSlide = this.selectedIndex === this.slideItems.length - 1 && !this.loop;\n var buttonObj = new Button({\n cssClass: CLS_FLAT + ' ' + CLS_ROUND + ' ' + CLS_PLAY_BUTTON,\n iconCss: CLS_ICON + ' ' + (this.autoPlay && !isLastSlide ? CLS_PAUSE_ICON : CLS_PLAY_ICON),\n isToggle: true,\n enableRtl: this.enableRtl\n });\n if (isLastSlide) {\n this.setProperties({\n autoPlay: false\n }, true);\n playButton.setAttribute('aria-label', this.localeObj.getConstant('playSlideTransition'));\n this.itemsContainer.setAttribute('aria-live', 'polite');\n }\n buttonObj.appendTo(playButton);\n playPauseWrap.appendChild(playButton);\n }\n var navigators = this.element.querySelector(\".\" + CLS_NAVIGATORS);\n navigators.insertBefore(playPauseWrap, navigators.lastElementChild);\n this.renderTemplates();\n EventHandler.add(playPauseWrap, 'click', this.playButtonClickHandler, this);\n };\n Carousel.prototype.renderIndicators = function () {\n var _this = this;\n if (!this.showIndicators || isNullOrUndefined(this.indicatorsType)) {\n return;\n }\n var indicatorClass = 'e-default';\n if (!this.indicatorsTemplate) {\n indicatorClass = \"e-\" + this.indicatorsType.toLowerCase();\n }\n var indicatorWrap = this.createElement('div', {\n className: CLS_INDICATORS + \" \" + indicatorClass\n });\n var indicatorBars = this.createElement('div', {\n className: CLS_INDICATOR_BARS\n });\n indicatorWrap.appendChild(indicatorBars);\n var progress;\n if (this.slideItems) {\n switch (this.indicatorsType) {\n case 'Fraction':\n if (this.indicatorsTemplate) {\n this.renderIndicatorTemplate(indicatorBars, this.selectedIndex + 1);\n } else {\n indicatorBars.innerText = this.selectedIndex + 1 + \" / \" + this.slideItems.length;\n }\n break;\n case 'Progress':\n if (this.indicatorsTemplate) {\n this.renderIndicatorTemplate(indicatorBars, this.selectedIndex + 1);\n } else {\n progress = this.createElement('div', {\n className: CLS_INDICATOR_BAR\n });\n progress.style.setProperty('--carousel-items-current', \"\" + (this.selectedIndex + 1));\n progress.style.setProperty('--carousel-items-count', \"\" + this.slideItems.length);\n indicatorBars.appendChild(progress);\n }\n break;\n case 'Default':\n case 'Dynamic':\n this.slideItems.forEach(function (item, index) {\n var indicatorBar = _this.createElement('div', {\n className: CLS_INDICATOR_BAR + ' ' + (_this.selectedIndex === index ? CLS_ACTIVE : _this.selectedIndex - 1 === index ? CLS_PREV_SLIDE : _this.selectedIndex + 1 === index ? CLS_NEXT_SLIDE : ''),\n attrs: {\n 'data-index': index.toString(),\n 'aria-current': _this.selectedIndex === index ? 'true' : 'false'\n }\n });\n indicatorBar.style.setProperty('--carousel-items-current', \"\" + _this.selectedIndex);\n if (_this.indicatorsTemplate) {\n _this.renderIndicatorTemplate(indicatorBar, index);\n } else if (_this.indicatorsType === 'Default') {\n var indicator = _this.createElement('button', {\n className: CLS_INDICATOR,\n attrs: {\n 'type': 'button',\n 'aria-label': _this.localeObj.getConstant('slide') + ' ' + (index + 1) + ' ' + _this.localeObj.getConstant('of') + ' ' + _this.slideItems.length\n }\n });\n indicatorBar.appendChild(indicator);\n indicator.appendChild(_this.createElement('div', {}));\n var buttonObj = new Button({\n cssClass: 'e-flat e-small'\n });\n buttonObj.appendTo(indicator);\n }\n indicatorBars.appendChild(indicatorBar);\n if (_this.indicatorsType === 'Default') {\n EventHandler.add(indicatorBar, 'click', _this.indicatorClickHandler, _this);\n }\n });\n break;\n }\n }\n this.element.appendChild(indicatorWrap);\n };\n Carousel.prototype.renderIndicatorTemplate = function (indicatorBar, index) {\n if (index === void 0) {\n index = 0;\n }\n addClass([indicatorBar], CLS_TEMPLATE);\n var templateId = this.element.id + '_indicatorsTemplate';\n var template = this.templateParser(this.indicatorsTemplate)({\n index: index,\n selectedIndex: this.selectedIndex\n }, this, 'indicatorsTemplate', templateId, false);\n append(template, indicatorBar);\n };\n Carousel.prototype.renderKeyboardActions = function () {\n if (!this.allowKeyboardInteraction) {\n return;\n }\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyHandler.bind(this),\n keyConfigs: this.keyConfigs\n });\n };\n Carousel.prototype.renderTouchActions = function () {\n if (!this.enableTouchSwipe) {\n return;\n }\n this.touchModule = new Touch(this.element, {\n swipe: this.swipeHandler.bind(this)\n });\n };\n Carousel.prototype.applyAnimation = function () {\n removeClass([this.element], [CLS_CUSTOM_ANIMATION, CLS_FADE_ANIMATION, CLS_SLIDE_ANIMATION, CLS_ANIMATION_NONE]);\n switch (this.animationEffect) {\n case 'Slide':\n addClass([this.element], CLS_SLIDE_ANIMATION);\n break;\n case 'Fade':\n addClass([this.element], CLS_FADE_ANIMATION);\n break;\n case 'None':\n addClass([this.element], CLS_ANIMATION_NONE);\n break;\n case 'Custom':\n addClass([this.element], CLS_CUSTOM_ANIMATION);\n break;\n }\n };\n Carousel.prototype.autoSlide = function () {\n if (isNullOrUndefined(this.slideItems) || this.slideItems.length <= 1) {\n return;\n }\n this.resetSlideInterval();\n this.applySlideInterval();\n };\n Carousel.prototype.autoSlideChange = function () {\n var activeSlide = this.element.querySelector(\".\" + CLS_ITEM + \".\" + CLS_ACTIVE) || this.element.querySelector(\".\" + CLS_INDICATORS + \" .\" + CLS_ACTIVE);\n if (isNullOrUndefined(activeSlide)) {\n return;\n }\n var activeIndex = parseInt(activeSlide.dataset.index, 10);\n if (!this.loop && activeIndex === this.slideItems.length - 1) {\n this.resetSlideInterval();\n } else {\n var index = (activeIndex + 1) % this.slideItems.length;\n if (!this.element.classList.contains(CLS_HOVER)) {\n this.setActiveSlide(index, 'Next');\n }\n this.autoSlide();\n }\n };\n Carousel.prototype.applySlideInterval = function () {\n var _this = this;\n if (!this.autoPlay || this.element.classList.contains(CLS_HOVER)) {\n return;\n }\n var itemInterval = this.interval;\n if (this.items.length > 0 && !isNullOrUndefined(this.items[this.selectedIndex || 0].interval)) {\n itemInterval = this.items[this.selectedIndex || 0].interval;\n }\n this.autoSlideInterval = setInterval(function () {\n return _this.autoSlideChange();\n }, itemInterval);\n };\n Carousel.prototype.resetSlideInterval = function () {\n clearInterval(this.autoSlideInterval);\n this.autoSlideInterval = null;\n };\n Carousel.prototype.getSlideIndex = function (direction) {\n var currentIndex = this.selectedIndex || 0;\n if (direction === 'Previous') {\n currentIndex--;\n if (currentIndex < 0) {\n currentIndex = this.slideItems.length - 1;\n }\n } else {\n currentIndex++;\n if (currentIndex === this.slideItems.length) {\n currentIndex = 0;\n }\n }\n return currentIndex;\n };\n Carousel.prototype.setActiveSlide = function (currentIndex, direction, isSwiped) {\n var _this = this;\n if (isSwiped === void 0) {\n isSwiped = false;\n }\n if (this.element.querySelectorAll(\".\" + CLS_ITEM + \".\" + CLS_PREV_SLIDE + \",.\" + CLS_ITEM + \".\" + CLS_NEXT_SLIDE).length > 0) {\n return;\n }\n currentIndex = isNullOrUndefined(currentIndex) ? 0 : currentIndex;\n var allSlides = [].slice.call(this.element.querySelectorAll(\".\" + CLS_ITEM + \":not(.e-cloned)\"));\n var activeSlide = this.element.querySelector(\".\" + CLS_ITEM + \".\" + CLS_ACTIVE);\n if (isNullOrUndefined(activeSlide) && this.showIndicators) {\n var activeIndicator = this.element.querySelector(\".\" + CLS_INDICATOR_BAR + \".\" + CLS_ACTIVE);\n var activeIndex_1 = parseInt(activeIndicator.dataset.index, 10);\n addClass([allSlides[parseInt(activeIndex_1.toString(), 10)]], CLS_ACTIVE);\n return;\n } else if (isNullOrUndefined(activeSlide)) {\n addClass([allSlides[parseInt(currentIndex.toString(), 10)]], CLS_ACTIVE);\n return;\n }\n var activeIndex = parseInt(activeSlide.dataset.index, 10);\n var currentSlide = allSlides[parseInt(currentIndex.toString(), 10)];\n var eventArgs = {\n currentIndex: activeIndex,\n nextIndex: currentIndex,\n currentSlide: activeSlide,\n nextSlide: currentSlide,\n slideDirection: direction,\n isSwiped: isSwiped,\n cancel: false\n };\n this.trigger('slideChanging', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.setProperties({\n selectedIndex: currentIndex\n }, true);\n attributes(args.currentSlide, {\n 'aria-hidden': 'true'\n });\n args.currentSlide.setAttribute('inert', 'true');\n attributes(args.nextSlide, {\n 'aria-hidden': 'false'\n });\n args.nextSlide.removeAttribute('inert');\n _this.refreshIndicators(activeIndex, currentIndex);\n _this.slideChangedEventArgs = {\n currentIndex: args.nextIndex,\n previousIndex: args.currentIndex,\n currentSlide: args.nextSlide,\n previousSlide: args.currentSlide,\n slideDirection: direction,\n isSwiped: isSwiped\n };\n var slideWidth = allSlides[parseInt(currentIndex.toString(), 10)].clientWidth;\n var numOfItems = _this.getNumOfItems();\n if (!_this.isSwipe) {\n _this.itemsContainer.style.transitionDuration = '0.6s';\n }\n _this.isSwipe = false;\n if (_this.animationEffect === 'Fade') {\n _this.itemsContainer.classList.add('e-fade-in-out');\n } else {\n _this.itemsContainer.style.transitionProperty = 'transform';\n }\n if (_this.loop) {\n if (_this.slideChangedEventArgs.currentIndex === 0 && _this.slideChangedEventArgs.slideDirection === 'Next') {\n _this.itemsContainer.style.transform = _this.getTranslateX(slideWidth, allSlides.length + numOfItems);\n } else if (_this.slideChangedEventArgs.currentIndex === _this.slideItems.length - 1 && _this.slideChangedEventArgs.slideDirection === 'Previous') {\n _this.itemsContainer.style.transform = _this.partialVisible ? _this.getTranslateX(slideWidth) : 'translateX(0px)';\n } else {\n _this.itemsContainer.style.transform = _this.getTranslateX(slideWidth, currentIndex + numOfItems);\n }\n } else {\n _this.itemsContainer.style.transform = _this.getTranslateX(slideWidth, currentIndex);\n }\n if (_this.animationEffect === 'Slide') {\n if (direction === 'Previous') {\n addClass([args.nextSlide], CLS_PREV_SLIDE);\n args.nextSlide.setAttribute('data-slide-height', args.nextSlide.offsetHeight.toString());\n addClass([args.currentSlide, args.nextSlide], CLS_TRANSITION_END);\n } else {\n addClass([args.nextSlide], CLS_NEXT_SLIDE);\n args.nextSlide.setAttribute('data-slide-height', args.nextSlide.offsetHeight.toString());\n addClass([args.currentSlide, args.nextSlide], CLS_TRANSITION_START);\n }\n } else if (_this.animationEffect === 'Fade') {\n removeClass([args.currentSlide], CLS_ACTIVE);\n addClass([args.nextSlide], CLS_ACTIVE);\n } else if (_this.animationEffect === 'Custom') {\n if (direction === 'Previous') {\n addClass([args.nextSlide], CLS_NEXT_SLIDE);\n addClass([args.currentSlide], CLS_PREV_SLIDE);\n } else {\n addClass([args.currentSlide], CLS_PREV_SLIDE);\n addClass([args.nextSlide], CLS_NEXT_SLIDE);\n }\n } else {\n _this.onTransitionEnd();\n }\n _this.handleNavigatorsActions(currentIndex);\n });\n };\n Carousel.prototype.onTransitionEnd = function () {\n var _this = this;\n removeClass(this.element.querySelectorAll(\".\" + CLS_ITEMS), 'e-fade-in-out');\n var numOfItems = this.getNumOfItems();\n if (this.slideChangedEventArgs) {\n this.itemsContainer.style.transitionProperty = 'none';\n if (this.loop && (this.slideChangedEventArgs.currentIndex === 0 && this.slideChangedEventArgs.slideDirection === 'Next' || this.slideChangedEventArgs.currentIndex === this.slideItems.length - 1 && this.slideChangedEventArgs.slideDirection === 'Previous')) {\n var slideWidth = this.slideChangedEventArgs.currentSlide.clientWidth;\n this.itemsContainer.style.transform = this.getTranslateX(slideWidth, this.slideChangedEventArgs.currentIndex + numOfItems);\n }\n addClass([this.slideChangedEventArgs.currentSlide], CLS_ACTIVE);\n removeClass([this.slideChangedEventArgs.previousSlide], CLS_ACTIVE);\n this.trigger('slideChanged', this.slideChangedEventArgs, function () {\n removeClass(_this.element.querySelectorAll(\".\" + CLS_ITEM), [CLS_PREV_SLIDE, CLS_NEXT_SLIDE, CLS_TRANSITION_START, CLS_TRANSITION_END]);\n _this.slideChangedEventArgs = null;\n });\n }\n };\n Carousel.prototype.refreshIndicators = function (activeIndex, currentIndex) {\n var _this = this;\n var slideIndicator = this.element.querySelector(\".\" + CLS_INDICATOR_BARS);\n if (isNullOrUndefined(slideIndicator)) {\n return;\n }\n var indicators = [].slice.call(slideIndicator.childNodes);\n switch (this.indicatorsType) {\n case 'Default':\n case 'Dynamic':\n attributes(indicators[parseInt(activeIndex.toString(), 10)], {\n 'aria-current': 'false'\n });\n attributes(indicators[parseInt(currentIndex.toString(), 10)], {\n 'aria-current': 'true'\n });\n removeClass(indicators, [CLS_ACTIVE, CLS_PREV_SLIDE, CLS_NEXT_SLIDE]);\n addClass([indicators[parseInt(currentIndex.toString(), 10)]], CLS_ACTIVE);\n if (indicators[currentIndex - 1]) {\n addClass([indicators[currentIndex - 1]], CLS_PREV_SLIDE);\n }\n if (indicators[currentIndex + 1]) {\n addClass([indicators[currentIndex + 1]], CLS_NEXT_SLIDE);\n }\n indicators.forEach(function (item) {\n return item.style.setProperty('--carousel-items-current', \"\" + _this.selectedIndex);\n });\n break;\n case 'Fraction':\n if (this.indicatorsTemplate) {\n if (slideIndicator.children.length > 0) {\n slideIndicator.removeChild(slideIndicator.firstElementChild);\n }\n this.renderIndicatorTemplate(slideIndicator, currentIndex + 1);\n } else {\n slideIndicator.innerText = this.selectedIndex + 1 + \" / \" + this.slideItems.length;\n }\n break;\n case 'Progress':\n if (this.indicatorsTemplate) {\n if (slideIndicator.children.length > 0) {\n slideIndicator.removeChild(slideIndicator.firstElementChild);\n }\n this.renderIndicatorTemplate(slideIndicator, currentIndex + 1);\n } else {\n slideIndicator.firstElementChild.style.setProperty('--carousel-items-current', \"\" + (this.selectedIndex + 1));\n }\n break;\n }\n };\n Carousel.prototype.setHtmlAttributes = function (attribute, element) {\n var keys = Object.keys(attribute);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (key === 'class') {\n addClass([element], attribute[\"\" + key]);\n } else {\n element.setAttribute(key, attribute[\"\" + key]);\n }\n }\n };\n Carousel.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n } else {\n return compile(template);\n }\n } catch (error) {\n return compile(template);\n }\n }\n return undefined;\n };\n Carousel.prototype.getNavigatorState = function (target, isPrevious) {\n var button = target.querySelector(\".\" + (isPrevious ? CLS_PREV_BUTTON : CLS_NEXT_BUTTON));\n if (button) {\n var buttonObj = getInstance(button, Button);\n return buttonObj.disabled;\n }\n return false;\n };\n Carousel.prototype.navigatorClickHandler = function (e) {\n var target = e.currentTarget;\n var isDisabled = this.getNavigatorState(target, target.classList.contains(CLS_PREVIOUS));\n if (isDisabled) {\n return;\n }\n var direction = target.classList.contains(CLS_PREVIOUS) ? 'Previous' : 'Next';\n this.setActiveSlide(this.getSlideIndex(direction), direction);\n this.autoSlide();\n };\n Carousel.prototype.indicatorClickHandler = function (e) {\n var target = closest(e.target, \".\" + CLS_INDICATOR_BAR);\n var index = parseInt(target.dataset.index, 10);\n if (this.selectedIndex !== index) {\n this.setActiveSlide(index, this.selectedIndex > index ? 'Previous' : 'Next');\n this.autoSlide();\n }\n };\n Carousel.prototype.playButtonClickHandler = function (e, isPropertyChange) {\n if (isPropertyChange === void 0) {\n isPropertyChange = false;\n }\n var playButton = this.element.querySelector(\".\" + CLS_PLAY_BUTTON);\n if (playButton) {\n var buttonObj = getInstance(playButton, Button);\n if (!isPropertyChange) {\n this.setProperties({\n autoPlay: !this.autoPlay\n }, true);\n }\n playButton.setAttribute('aria-label', this.localeObj.getConstant(this.autoPlay ? 'pauseSlideTransition' : 'playSlideTransition'));\n buttonObj.iconCss = CLS_ICON + ' ' + (this.autoPlay ? CLS_PAUSE_ICON : CLS_PLAY_ICON);\n buttonObj.dataBind();\n this.itemsContainer.setAttribute('aria-live', this.autoPlay ? 'off' : 'polite');\n if (this.autoPlay && !this.loop && this.selectedIndex === this.slideItems.length - 1) {\n this.setActiveSlide(0, 'Next');\n }\n this.autoSlide();\n }\n };\n Carousel.prototype.keyHandler = function (e) {\n if (!this.allowKeyboardInteraction) {\n return;\n }\n var direction;\n var slideIndex;\n var isSlideTransition = false;\n var target = e.target;\n e.preventDefault();\n switch (e.action) {\n case 'space':\n if (this.showIndicators && target.classList.contains(CLS_INDICATOR)) {\n target.click();\n } else if (target.classList.contains(CLS_CAROUSEL) || target.classList.contains(CLS_PLAY_BUTTON)) {\n this.playButtonClickHandler(e);\n } else if (target.classList.contains(CLS_NEXT_BUTTON)) {\n this.next();\n } else if (target.classList.contains(CLS_PREV_BUTTON)) {\n this.prev();\n }\n break;\n case 'end':\n slideIndex = this.slideItems.length - 1;\n direction = 'Next';\n isSlideTransition = true;\n break;\n case 'home':\n slideIndex = 0;\n direction = 'Previous';\n isSlideTransition = true;\n break;\n case 'moveUp':\n case 'moveLeft':\n case 'moveDown':\n case 'moveRight':\n if (this.showIndicators && isNullOrUndefined(this.indicatorsTemplate)) {\n this.element.focus();\n }\n direction = e.action === 'moveUp' || e.action === 'moveLeft' ? 'Previous' : 'Next';\n slideIndex = this.getSlideIndex(direction);\n isSlideTransition = !this.isSuspendSlideTransition(slideIndex, direction);\n break;\n }\n if (isSlideTransition) {\n this.setActiveSlide(slideIndex, direction);\n this.autoSlide();\n isSlideTransition = false;\n }\n };\n Carousel.prototype.swipeHandler = function (e) {\n if (this.element.classList.contains(CLS_HOVER) || isNullOrUndefined(this.slideItems) || this.slideItems.length <= 1) {\n return;\n }\n var direction = e.swipeDirection === 'Right' ? 'Previous' : 'Next';\n var slideIndex = this.getSlideIndex(direction);\n if (!this.isSuspendSlideTransition(slideIndex, direction)) {\n this.setActiveSlide(slideIndex, direction, true);\n this.autoSlide();\n }\n };\n Carousel.prototype.isSuspendSlideTransition = function (index, direction) {\n return !this.loop && (direction === 'Next' && index === 0 || direction === 'Previous' && index === this.slideItems.length - 1);\n };\n Carousel.prototype.handleNavigatorsActions = function (index) {\n if (this.buttonsVisibility === 'Hidden') {\n return;\n }\n if (this.showPlayButton) {\n var playButton = this.element.querySelector(\".\" + CLS_PLAY_BUTTON);\n var isLastSlide = this.selectedIndex === this.slideItems.length - 1 && !this.loop;\n var isButtonUpdate = isNullOrUndefined(this.playButtonTemplate) && playButton && isLastSlide;\n if (isNullOrUndefined(this.playButtonTemplate) && playButton && !isLastSlide) {\n isButtonUpdate = !playButton.classList.contains(CLS_ACTIVE);\n }\n if (isButtonUpdate) {\n this.setProperties({\n autoPlay: !isLastSlide\n }, true);\n playButton.setAttribute('aria-label', this.localeObj.getConstant(this.autoPlay ? 'pauseSlideTransition' : 'playSlideTransition'));\n this.itemsContainer.setAttribute('aria-live', this.autoPlay ? 'off' : 'polite');\n var buttonObj = getInstance(playButton, Button);\n buttonObj.iconCss = CLS_ICON + ' ' + (this.autoPlay ? CLS_PAUSE_ICON : CLS_PLAY_ICON);\n buttonObj.dataBind();\n }\n }\n var prevButton = this.element.querySelector(\".\" + CLS_PREV_BUTTON);\n if (prevButton && isNullOrUndefined(this.previousButtonTemplate)) {\n var buttonObj = getInstance(prevButton, Button);\n buttonObj.disabled = !this.loop && index === 0;\n buttonObj.dataBind();\n }\n var nextButton = this.element.querySelector(\".\" + CLS_NEXT_BUTTON);\n if (nextButton && isNullOrUndefined(this.nextButtonTemplate)) {\n var buttonObj = getInstance(nextButton, Button);\n buttonObj.disabled = !this.loop && index === this.slideItems.length - 1;\n buttonObj.dataBind();\n }\n };\n Carousel.prototype.onHoverActions = function (e) {\n var navigator = this.element.querySelector(\".\" + CLS_NAVIGATORS);\n switch (e.type) {\n case 'mouseenter':\n if (this.buttonsVisibility === 'VisibleOnHover' && navigator) {\n removeClass([].slice.call(navigator.childNodes), CLS_HOVER_ARROWS);\n }\n if (this.pauseOnHover) {\n addClass([this.element], CLS_HOVER);\n }\n break;\n case 'mouseleave':\n if (this.buttonsVisibility === 'VisibleOnHover' && navigator) {\n addClass([].slice.call(navigator.childNodes), CLS_HOVER_ARROWS);\n }\n removeClass([this.element], CLS_HOVER);\n if (this.isSwipe) {\n this.swipStop();\n }\n break;\n }\n this.autoSlide();\n };\n Carousel.prototype.onFocusActions = function (e) {\n switch (e.type) {\n case 'focusin':\n addClass([this.element], CLS_HOVER);\n break;\n case 'focusout':\n removeClass([this.element], CLS_HOVER);\n break;\n }\n this.autoSlide();\n };\n Carousel.prototype.destroyButtons = function () {\n var buttonCollections = [].slice.call(this.element.querySelectorAll('.e-control.e-btn'));\n for (var _i = 0, buttonCollections_1 = buttonCollections; _i < buttonCollections_1.length; _i++) {\n var button = buttonCollections_1[_i];\n var instance = getInstance(button, Button);\n if (instance) {\n instance.destroy();\n }\n }\n };\n Carousel.prototype.getNumOfItems = function () {\n return this.partialVisible ? 2 : 1;\n };\n Carousel.prototype.getTranslateValue = function (element) {\n var style = getComputedStyle(element);\n return window.WebKitCSSMatrix ? new WebKitCSSMatrix(style.webkitTransform).m41 : 0;\n };\n Carousel.prototype.swipeStart = function (e) {\n if (!this.timeStampStart) {\n this.timeStampStart = Date.now();\n }\n e.preventDefault();\n this.isSwipe = false;\n this.itemsContainer.classList.add('e-swipe-start');\n this.prevPageX = e.touches ? e.touches[0].pageX : e.pageX;\n this.initialTranslate = this.getTranslateValue(this.itemsContainer);\n };\n Carousel.prototype.swiping = function (e) {\n if (!this.itemsContainer.classList.contains('e-swipe-start')) {\n return;\n }\n this.isSwipe = true;\n e.preventDefault();\n var pageX = e.touches ? e.touches[0].pageX : e.pageX;\n var positionDiff = this.prevPageX - pageX;\n if (!this.loop && (this.enableRtl && (this.selectedIndex === 0 && positionDiff > 0 || this.selectedIndex === this.itemsContainer.childElementCount - 1 && positionDiff < 0) || !this.enableRtl && (this.selectedIndex === 0 && positionDiff < 0 || this.selectedIndex === this.itemsContainer.childElementCount - 1 && positionDiff > 0))) {\n return;\n }\n this.itemsContainer.style.transform = \"translateX(\" + (this.initialTranslate + (this.enableRtl ? positionDiff : -positionDiff)) + \"px)\";\n };\n Carousel.prototype.swipStop = function () {\n var time = Date.now() - this.timeStampStart;\n var distanceX = this.getTranslateValue(this.itemsContainer) - this.initialTranslate;\n distanceX = distanceX < 0 ? distanceX * -1 : distanceX;\n if (this.isSwipe) {\n var offsetDist = distanceX * (Browser.isDevice ? 6 : 1.66);\n this.itemsContainer.style.transitionDuration = (Browser.isDevice ? distanceX : offsetDist) / time / 10 + 's';\n }\n var slideWidth = this.itemsContainer.firstElementChild.clientWidth;\n var threshold = slideWidth / 2;\n this.itemsContainer.classList.remove('e-swipe-start');\n var value = this.getTranslateValue(this.itemsContainer);\n if (value - this.initialTranslate < -threshold) {\n this.swipeNavigation(!this.enableRtl);\n } else if (value - this.initialTranslate > threshold) {\n this.swipeNavigation(this.enableRtl);\n } else {\n this.itemsContainer.style.transform = \"translateX(\" + this.initialTranslate + \"px)\";\n if (this.animationEffect === 'Fade') {\n this.itemsContainer.classList.add('e-fade-in-out');\n }\n }\n };\n Carousel.prototype.swipeNavigation = function (isRtl) {\n if (isRtl) {\n this.next();\n } else {\n this.prev();\n }\n };\n Carousel.prototype.swipeModehandlers = function () {\n if ((this.swipeMode & CarouselSwipeMode.Touch) === CarouselSwipeMode.Touch) {\n EventHandler.add(this.itemsContainer, 'touchstart', this.swipeStart, this);\n EventHandler.add(this.itemsContainer, 'touchmove', this.swiping, this);\n EventHandler.add(this.itemsContainer, 'touchend', this.swipStop, this);\n }\n if ((this.swipeMode & CarouselSwipeMode.Mouse) === CarouselSwipeMode.Mouse) {\n EventHandler.add(this.itemsContainer, 'mousedown', this.swipeStart, this);\n EventHandler.add(this.itemsContainer, 'mousemove', this.swiping, this);\n EventHandler.add(this.itemsContainer, 'mouseup', this.swipStop, this);\n }\n if (this.swipeMode === 0 && (this.swipeMode & CarouselSwipeMode.Mouse & CarouselSwipeMode.Touch) === (CarouselSwipeMode.Mouse & CarouselSwipeMode.Touch)) {\n EventHandler.add(this.itemsContainer, 'mousedown touchstart', this.swipeStart, this);\n EventHandler.add(this.itemsContainer, 'mousemove touchmove', this.swiping, this);\n EventHandler.add(this.itemsContainer, 'mouseup touchend', this.swipStop, this);\n }\n };\n Carousel.prototype.resizeHandler = function () {\n if (this.itemsContainer && this.itemsContainer.firstElementChild) {\n var numOfItems = this.getNumOfItems();\n var slideWidth = this.itemsContainer.firstElementChild.clientWidth;\n if (this.loop) {\n this.itemsContainer.style.transform = this.getTranslateX(slideWidth, this.selectedIndex + numOfItems);\n } else {\n this.itemsContainer.style.transform = this.getTranslateX(slideWidth, this.selectedIndex);\n }\n }\n };\n Carousel.prototype.wireEvents = function () {\n if (this.animationEffect !== 'Custom' && this.enableTouchSwipe) {\n this.swipeModehandlers();\n }\n EventHandler.add(this.element, 'focusin focusout', this.onFocusActions, this);\n EventHandler.add(this.element, 'mouseenter mouseleave', this.onHoverActions, this);\n EventHandler.add(this.element.firstElementChild, 'animationend', this.onTransitionEnd, this);\n EventHandler.add(this.element.firstElementChild, 'transitionend', this.onTransitionEnd, this);\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n };\n Carousel.prototype.unWireEvents = function () {\n var _this = this;\n var indicators = [].slice.call(this.element.querySelectorAll(\".\" + CLS_INDICATOR_BAR));\n indicators.forEach(function (indicator) {\n EventHandler.remove(indicator, 'click', _this.indicatorClickHandler);\n });\n var navigators = [].slice.call(this.element.querySelectorAll(\".\" + CLS_PREVIOUS + \",.\" + CLS_NEXT));\n navigators.forEach(function (navigator) {\n EventHandler.remove(navigator, 'click', _this.navigatorClickHandler);\n });\n var playIcon = this.element.querySelector(\".\" + CLS_PLAY_PAUSE);\n if (playIcon) {\n EventHandler.remove(playIcon, 'click', this.playButtonClickHandler);\n }\n EventHandler.remove(this.element.firstElementChild, 'animationend', this.onTransitionEnd);\n EventHandler.remove(this.element.firstElementChild, 'transitionend', this.onTransitionEnd);\n EventHandler.clearEvents(this.element);\n EventHandler.clearEvents(this.itemsContainer);\n EventHandler.remove(window, 'resize', this.resizeHandler);\n };\n /**\n * Method to transit from the current slide to the previous slide.\n *\n * @returns {void}\n */\n Carousel.prototype.prev = function () {\n if (!this.loop && this.selectedIndex === 0) {\n return;\n }\n var index = this.selectedIndex === 0 ? this.slideItems.length - 1 : this.selectedIndex - 1;\n this.setActiveSlide(index, 'Previous');\n this.autoSlide();\n };\n /**\n * Method to transit from the current slide to the next slide.\n *\n * @returns {void}\n */\n Carousel.prototype.next = function () {\n if (!this.loop && this.selectedIndex === this.slideItems.length - 1) {\n return;\n }\n var index = this.selectedIndex === this.slideItems.length - 1 ? 0 : this.selectedIndex + 1;\n this.setActiveSlide(index, 'Next');\n this.autoSlide();\n };\n /**\n * Method to play the slides programmatically.\n *\n * @returns {void}\n */\n Carousel.prototype.play = function () {\n var playIcon = this.element.querySelector(\".\" + CLS_PLAY_ICON);\n if (this.showPlayButton && playIcon) {\n classList(playIcon, [CLS_PAUSE_ICON], [CLS_PLAY_ICON]);\n var playButton = this.element.querySelector(\".\" + CLS_PLAY_BUTTON);\n playButton.setAttribute('aria-label', this.localeObj.getConstant('pauseSlideTransition'));\n }\n this.setProperties({\n autoPlay: true\n }, true);\n this.itemsContainer.setAttribute('aria-live', 'off');\n this.applySlideInterval();\n };\n /**\n * Method to pause the slides programmatically.\n *\n * @returns {void}\n */\n Carousel.prototype.pause = function () {\n var pauseIcon = this.element.querySelector(\".\" + CLS_PAUSE_ICON);\n if (this.showPlayButton && pauseIcon) {\n var playButton = this.element.querySelector(\".\" + CLS_PLAY_BUTTON);\n playButton.setAttribute('aria-label', this.localeObj.getConstant('playSlideTransition'));\n classList(pauseIcon, [CLS_PLAY_ICON], [CLS_PAUSE_ICON]);\n }\n this.setProperties({\n autoPlay: false\n }, true);\n this.itemsContainer.setAttribute('aria-live', 'off');\n this.resetSlideInterval();\n };\n /**\n * Method to render react and angular templates\n *\n * @returns {void}\n * @private\n */\n Carousel.prototype.renderTemplates = function () {\n if (this.isAngular || this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Method to reset react and angular templates\n *\n * @param {string[]} templates Accepts the template ID\n * @returns {void}\n * @private\n */\n Carousel.prototype.resetTemplates = function (templates) {\n if (this.isAngular || this.isReact) {\n this.clearTemplate(templates);\n }\n };\n /**\n * Method for destroy the carousel component.\n *\n * @returns {void}\n */\n Carousel.prototype.destroy = function () {\n var _this = this;\n this.resetTemplates();\n if (this.touchModule) {\n this.touchModule.destroy();\n this.touchModule = null;\n }\n if (this.keyModule) {\n this.keyModule.destroy();\n this.keyModule = null;\n }\n this.resetSlideInterval();\n this.destroyButtons();\n this.unWireEvents();\n [].slice.call(this.element.children).forEach(function (ele) {\n _this.element.removeChild(ele);\n });\n removeClass([this.element], [CLS_CAROUSEL, this.cssClass, CLS_RTL, CLS_SWIPE]);\n ['role', 'style'].forEach(function (attr) {\n _this.element.removeAttribute(attr);\n });\n this.itemsContainer = null;\n _super.prototype.destroy.call(this);\n };\n __decorate([Collection([], CarouselItem)], Carousel.prototype, \"items\", void 0);\n __decorate([Property('Slide')], Carousel.prototype, \"animationEffect\", void 0);\n __decorate([Property()], Carousel.prototype, \"previousButtonTemplate\", void 0);\n __decorate([Property()], Carousel.prototype, \"nextButtonTemplate\", void 0);\n __decorate([Property()], Carousel.prototype, \"indicatorsTemplate\", void 0);\n __decorate([Property()], Carousel.prototype, \"playButtonTemplate\", void 0);\n __decorate([Property()], Carousel.prototype, \"cssClass\", void 0);\n __decorate([Property([])], Carousel.prototype, \"dataSource\", void 0);\n __decorate([Property()], Carousel.prototype, \"itemTemplate\", void 0);\n __decorate([Property(0)], Carousel.prototype, \"selectedIndex\", void 0);\n __decorate([Property('100%')], Carousel.prototype, \"width\", void 0);\n __decorate([Property('100%')], Carousel.prototype, \"height\", void 0);\n __decorate([Property(5000)], Carousel.prototype, \"interval\", void 0);\n __decorate([Property(true)], Carousel.prototype, \"autoPlay\", void 0);\n __decorate([Property(true)], Carousel.prototype, \"pauseOnHover\", void 0);\n __decorate([Property(true)], Carousel.prototype, \"loop\", void 0);\n __decorate([Property(false)], Carousel.prototype, \"showPlayButton\", void 0);\n __decorate([Property(true)], Carousel.prototype, \"enableTouchSwipe\", void 0);\n __decorate([Property(true)], Carousel.prototype, \"allowKeyboardInteraction\", void 0);\n __decorate([Property(true)], Carousel.prototype, \"showIndicators\", void 0);\n __decorate([Property('Default')], Carousel.prototype, \"indicatorsType\", void 0);\n __decorate([Property('Visible')], Carousel.prototype, \"buttonsVisibility\", void 0);\n __decorate([Property(false)], Carousel.prototype, \"partialVisible\", void 0);\n __decorate([Property(CarouselSwipeMode.Touch)], Carousel.prototype, \"swipeMode\", void 0);\n __decorate([Property()], Carousel.prototype, \"htmlAttributes\", void 0);\n __decorate([Event()], Carousel.prototype, \"slideChanging\", void 0);\n __decorate([Event()], Carousel.prototype, \"slideChanged\", void 0);\n Carousel = __decorate([NotifyPropertyChanges], Carousel);\n return Carousel;\n}(Component);\nexport { Carousel };","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};\nimport { Component, NotifyPropertyChanges, Property, ChildProperty, Collection, Event, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar PROGRESSVALUE = '--progress-value';\nvar PROGRESSPOS = '--progress-position';\nvar VERTICALSTEP = 'e-vertical';\nvar HORIZSTEP = 'e-horizontal';\nvar ITEMLIST = 'e-stepper-steps';\n/**\n * Defines the status of the step.\n */\nexport var StepStatus;\n(function (StepStatus) {\n /**\n * Shows the status of the step is not started.\n */\n StepStatus[\"NotStarted\"] = \"NotStarted\";\n /**\n * Shows the step is in progress.\n */\n StepStatus[\"InProgress\"] = \"InProgress\";\n /**\n * Shows the status of the step is completed.\n */\n StepStatus[\"Completed\"] = \"Completed\";\n})(StepStatus || (StepStatus = {}));\n/**\n * Specifies the steps of the Stepper.\n */\nvar Step = /** @class */function (_super) {\n __extends(Step, _super);\n function Step() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('')], Step.prototype, \"cssClass\", void 0);\n __decorate([Property(false)], Step.prototype, \"disabled\", void 0);\n __decorate([Property('')], Step.prototype, \"iconCss\", void 0);\n __decorate([Property(null)], Step.prototype, \"isValid\", void 0);\n __decorate([Property('')], Step.prototype, \"label\", void 0);\n __decorate([Property(false)], Step.prototype, \"optional\", void 0);\n __decorate([Property(StepStatus.NotStarted)], Step.prototype, \"status\", void 0);\n __decorate([Property('')], Step.prototype, \"text\", void 0);\n return Step;\n}(ChildProperty);\nexport { Step };\n/**\n * Defines the orientation type of the Stepper.\n */\nexport var StepperOrientation;\n(function (StepperOrientation) {\n /**\n * Steps are displayed horizontally.\n */\n StepperOrientation[\"Horizontal\"] = \"Horizontal\";\n /**\n * Steps are displayed vertically.\n */\n StepperOrientation[\"Vertical\"] = \"Vertical\";\n})(StepperOrientation || (StepperOrientation = {}));\n/**\n * StepperBase component act as base class to the stepper component.\n */\nvar StepperBase = /** @class */function (_super) {\n __extends(StepperBase, _super);\n /**\n * * Constructor for Base class\n *\n * @param {StepperBaseModel} options - Specifies the Base model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function StepperBase(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n StepperBase.prototype.preRender = function () {};\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {string} - It returns the current module name.\n */\n StepperBase.prototype.getModuleName = function () {\n return 'stepperBase';\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {string} - It returns the persisted data.\n */\n StepperBase.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n StepperBase.prototype.render = function () {};\n StepperBase.prototype.updateOrientaion = function (wrapper) {\n if (wrapper.classList.contains(HORIZSTEP) || wrapper.classList.contains(VERTICALSTEP)) {\n wrapper.classList.remove(HORIZSTEP, VERTICALSTEP);\n }\n if (!isNullOrUndefined(this.orientation)) {\n wrapper.classList.add('e-' + this.orientation.toLocaleLowerCase());\n }\n };\n StepperBase.prototype.renderProgressBar = function (wrapper) {\n this.progressStep = this.createElement('div', {\n className: 'e-stepper-progressbar'\n });\n this.progressbar = this.createElement('div', {\n className: 'e-progressbar-value'\n });\n var beforeLabel = wrapper.querySelector('li').querySelector('.e-step-label-container');\n this.progressStep.appendChild(this.progressbar);\n wrapper.prepend(this.progressStep);\n this.progressbar.style.setProperty(PROGRESSVALUE, 0 + '%');\n if (wrapper.classList.contains(VERTICALSTEP)) {\n if (wrapper.classList.contains('e-label-bottom') || wrapper.classList.contains('e-label-top')) {\n var stepsContainer = wrapper.querySelector('.' + ITEMLIST);\n this.progressStep.style.setProperty(PROGRESSPOS, stepsContainer.offsetWidth / 2 + 'px');\n } else {\n this.progressStep.style.setProperty(PROGRESSPOS, this.progressBarPosition / 2 - 1 + 'px');\n }\n }\n if (beforeLabel && beforeLabel.classList.contains('e-label-before')) {\n this.progressStep.style.setProperty(PROGRESSPOS, this.progressBarPosition - 1 + 5 + 'px');\n }\n if (wrapper.classList.contains(HORIZSTEP)) {\n this.setProgressPosition(wrapper);\n }\n };\n StepperBase.prototype.setProgressPosition = function (wrapper, isResize) {\n var stepItemContainer = wrapper.querySelector('.e-step-container');\n var stepItemEle = stepItemContainer.firstElementChild;\n if (isResize !== true) {\n var topPos = 0;\n if (wrapper.classList.contains('e-label-before')) {\n topPos = stepItemContainer.offsetParent.offsetHeight - stepItemEle.offsetHeight / 2 - 1;\n } else {\n topPos = stepItemEle.offsetHeight / 2;\n }\n this.progressStep.style.setProperty('--progress-top-position', topPos + 'px');\n }\n var lastEle = wrapper.querySelector('.' + ITEMLIST).lastChild.firstChild;\n if (wrapper.classList.contains('e-rtl')) {\n var leftPost = stepItemEle.offsetLeft + stepItemEle.offsetWidth - wrapper.querySelector('.' + ITEMLIST).offsetWidth;\n this.progressStep.style.setProperty('--progress-left-position', Math.abs(leftPost) + 'px');\n this.progressStep.style.setProperty('--progress-bar-width', Math.abs(lastEle.offsetLeft - stepItemEle.offsetLeft) + 'px');\n } else {\n this.progressStep.style.setProperty('--progress-left-position', stepItemEle.offsetLeft + 1 + 'px');\n this.progressStep.style.setProperty('--progress-bar-width', lastEle.offsetWidth + lastEle.offsetLeft - 2 - (stepItemEle.offsetLeft + 2) + 'px');\n }\n };\n /**\n * This method is abstract member of the Component<HTMLElement>.\n *\n * @param {StepperBaseModel} newProp - Specifies new properties\n * @param {StepperBaseModel} oldProp - Specifies old properties\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars\n StepperBase.prototype.onPropertyChanged = function (newProp, oldProp) {};\n __decorate([Collection([], Step)], StepperBase.prototype, \"steps\", void 0);\n __decorate([Property('')], StepperBase.prototype, \"cssClass\", void 0);\n __decorate([Property(false)], StepperBase.prototype, \"readOnly\", void 0);\n __decorate([Property(StepperOrientation.Horizontal)], StepperBase.prototype, \"orientation\", void 0);\n __decorate([Event()], StepperBase.prototype, \"created\", void 0);\n StepperBase = __decorate([NotifyPropertyChanges], StepperBase);\n return StepperBase;\n}(Component);\nexport { StepperBase };","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};\nimport { Component, NotifyPropertyChanges, Property, Event } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, isNullOrUndefined } from '@syncfusion/ej2-base';\n// Constant variables\nvar CLS_APPBAR = 'e-appbar';\nvar CLS_HORIZONTAL_BOTTOM = 'e-horizontal-bottom';\nvar CLS_STICKY = 'e-sticky';\nvar CLS_PROMINENT = 'e-prominent';\nvar CLS_DENSE = 'e-dense';\nvar CLS_RTL = 'e-rtl';\nvar CLS_LIGHT = 'e-light';\nvar CLS_DARK = 'e-dark';\nvar CLS_PRIMARY = 'e-primary';\nvar CLS_INHERIT = 'e-inherit';\n/**\n * The AppBar displays the information and actions related to the current application screen. It is used to show branding, screen titles, navigation, and actions.\n * Support to inherit colors from AppBar provided to <c>Button</c>, <c>DropDownButton</c>, <c>Menu</c> and <c>TextBox</c>.\n * Set <c>CssClass</c> property with <code>e-inherit</code> CSS class to inherit the background and color from AppBar.\n */\nvar AppBar = /** @class */function (_super) {\n __extends(AppBar, _super);\n /**\n * Constructor for creating the AppBar widget\n *\n * @param {AppBarModel} options Accepts the AppBar model properties to initiate the rendering\n * @param {string | HTMLElement} element Accepts the DOM element reference\n */\n function AppBar(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n AppBar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.element.classList.remove(CLS_APPBAR);\n this.element.removeAttribute('style');\n this.element.removeAttribute('role');\n };\n AppBar.prototype.getModuleName = function () {\n return 'appbar';\n };\n AppBar.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n AppBar.prototype.preRender = function () {\n // pre render code\n };\n AppBar.prototype.render = function () {\n this.element.classList.add(CLS_APPBAR);\n if (this.element.tagName !== 'HEADER') {\n this.element.setAttribute('role', 'banner');\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n if (this.position === 'Bottom') {\n this.element.classList.add(CLS_HORIZONTAL_BOTTOM);\n }\n if (this.isSticky) {\n this.element.classList.add(CLS_STICKY);\n }\n if (this.enableRtl) {\n this.element.classList.add(CLS_RTL);\n }\n this.setHeightMode();\n this.setColorMode();\n if (!isNullOrUndefined(this.htmlAttributes)) {\n this.setHtmlAttributes(this.htmlAttributes, this.element);\n }\n };\n AppBar.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'mode':\n removeClass([this.element], [CLS_DENSE, CLS_PROMINENT]);\n this.setHeightMode();\n break;\n case 'position':\n if (this.position === 'Bottom') {\n addClass([this.element], CLS_HORIZONTAL_BOTTOM);\n } else {\n removeClass([this.element], CLS_HORIZONTAL_BOTTOM);\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.split(' '));\n }\n break;\n case 'isSticky':\n if (this.isSticky) {\n addClass([this.element], CLS_STICKY);\n } else {\n removeClass([this.element], CLS_STICKY);\n }\n break;\n case 'htmlAttributes':\n if (!isNullOrUndefined(this.htmlAttributes)) {\n if (!isNullOrUndefined(oldProp.htmlAttributes)) {\n var keys = Object.keys(oldProp.htmlAttributes);\n for (var _b = 0, keys_1 = keys; _b < keys_1.length; _b++) {\n var key = keys_1[_b];\n if (key === 'class') {\n removeClass([this.element], oldProp.htmlAttributes[\"\" + key]);\n } else {\n this.element.removeAttribute(key);\n }\n }\n }\n this.setHtmlAttributes(newProp.htmlAttributes, this.element);\n }\n break;\n case 'colorMode':\n removeClass([this.element], [CLS_DARK, CLS_PRIMARY, CLS_INHERIT, CLS_LIGHT]);\n this.setColorMode();\n break;\n case 'enableRtl':\n if (this.enableRtl) {\n addClass([this.element], CLS_RTL);\n } else {\n removeClass([this.element], CLS_RTL);\n }\n break;\n }\n }\n };\n AppBar.prototype.setHtmlAttributes = function (attribute, element) {\n var keys = Object.keys(attribute);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n if (key === 'class') {\n addClass([element], attribute[\"\" + key]);\n } else {\n element.setAttribute(key, attribute[\"\" + key]);\n }\n }\n };\n AppBar.prototype.setHeightMode = function () {\n if (this.mode === 'Prominent') {\n this.element.classList.add(CLS_PROMINENT);\n } else if (this.mode === 'Dense') {\n this.element.classList.add(CLS_DENSE);\n }\n };\n AppBar.prototype.setColorMode = function () {\n switch (this.colorMode) {\n case 'Light':\n this.element.classList.add(CLS_LIGHT);\n break;\n case 'Dark':\n this.element.classList.add(CLS_DARK);\n break;\n case 'Primary':\n this.element.classList.add(CLS_PRIMARY);\n break;\n case 'Inherit':\n this.element.classList.add(CLS_INHERIT);\n break;\n }\n };\n __decorate([Property('Regular')], AppBar.prototype, \"mode\", void 0);\n __decorate([Property('Top')], AppBar.prototype, \"position\", void 0);\n __decorate([Property()], AppBar.prototype, \"cssClass\", void 0);\n __decorate([Property(false)], AppBar.prototype, \"isSticky\", void 0);\n __decorate([Property()], AppBar.prototype, \"htmlAttributes\", void 0);\n __decorate([Property('Light')], AppBar.prototype, \"colorMode\", void 0);\n __decorate([Event()], AppBar.prototype, \"created\", void 0);\n __decorate([Event()], AppBar.prototype, \"destroyed\", void 0);\n AppBar = __decorate([NotifyPropertyChanges], AppBar);\n return AppBar;\n}(Component);\nexport { AppBar };","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='../stepper-base/stepper-base-model.d.ts'/>\nimport { attributes, NotifyPropertyChanges, L10n, append, isNullOrUndefined, getUniqueID, Complex, KeyboardEvents, ChildProperty, Property, EventHandler, Event, addClass, remove, removeClass, initializeCSPTemplate, select, compile } from '@syncfusion/ej2-base';\nimport { StepperBase, StepStatus } from '../stepper-base/stepper-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nvar ITEMCONTAINER = 'e-step-container';\nvar ITEMLIST = 'e-stepper-steps';\nvar ICONCSS = 'e-indicator';\nvar TEXTCSS = 'e-step-text-container';\nvar STEPLABEL = 'e-step-label-container';\nvar OPTIONAL = 'e-step-label-optional';\nvar SELECTED = 'e-step-selected';\nvar INPROGRESS = 'e-step-inprogress';\nvar NOTSTARTED = 'e-step-notstarted';\nvar FOCUS = 'e-step-focus';\nvar COMPLETED = 'e-step-completed';\nvar DISABLED = 'e-step-disabled';\nvar READONLY = 'e-stepper-readonly';\nvar PROGRESSVALUE = '--progress-value';\nvar RTL = 'e-rtl';\nvar TEMPLATE = 'e-step-template';\nvar LABELAFTER = 'e-label-after';\nvar LABELBEFORE = 'e-label-before';\nvar VERTICALSTEP = 'e-vertical';\nvar HORIZSTEP = 'e-horizontal';\nvar STEPICON = 'e-step-item';\nvar STEPTEXT = 'e-step-text';\nvar TEXT = 'e-text';\nvar STEPSLABEL = 'e-step-label';\nvar LABEL = 'e-label';\nvar STEPINDICATOR = 'e-step-type-indicator';\nvar LABELINDICATOR = 'e-step-type-label';\nvar INDICATORICON = 'e-step-indicator';\nvar STEPPERTOOLTIP = 'e-stepper-tooltip';\nvar STEPPERIPROGRESSTIP = 'e-step-inprogress-tip';\nvar LINEARSTEP = 'e-linear';\nvar PREVSTEP = 'e-previous';\nvar NEXTSTEP = 'e-next';\n/**\n * Defines the step progress animation of the Stepper.\n */\nvar StepperAnimationSettings = /** @class */function (_super) {\n __extends(StepperAnimationSettings, _super);\n function StepperAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property(true)], StepperAnimationSettings.prototype, \"enable\", void 0);\n __decorate([Property(2000)], StepperAnimationSettings.prototype, \"duration\", void 0);\n __decorate([Property(0)], StepperAnimationSettings.prototype, \"delay\", void 0);\n return StepperAnimationSettings;\n}(ChildProperty);\nexport { StepperAnimationSettings };\n/**\n * Defines the label position in the Stepper.\n */\nexport var StepLabelPosition;\n(function (StepLabelPosition) {\n /**\n * Displays the label on top position regardless of the Stepper's orientation.\n */\n StepLabelPosition[\"Top\"] = \"Top\";\n /**\n * Displays the label on bottom position regardless of the Stepper's orientation.\n */\n StepLabelPosition[\"Bottom\"] = \"Bottom\";\n /**\n * Displays the label on left side regardless of the Stepper's orientation.\n */\n StepLabelPosition[\"Start\"] = \"Start\";\n /**\n * Displays the label on right side regardless of the Stepper's orientation.\n */\n StepLabelPosition[\"End\"] = \"End\";\n})(StepLabelPosition || (StepLabelPosition = {}));\n/**\n * Defines whether steps are display with only indicator, only labels or combination of both.\n */\nexport var StepType;\n(function (StepType) {\n /**\n * Steps are shown indicator with label defined.\n */\n StepType[\"Default\"] = \"Default\";\n /**\n * Steps are shown with only label.\n */\n StepType[\"Label\"] = \"Label\";\n /**\n * Steps are shown with only indicator.\n */\n StepType[\"Indicator\"] = \"Indicator\";\n})(StepType || (StepType = {}));\n/**\n * The Stepper component visualizes several steps and indicates the current progress by highlighting already completed steps.\n *\n * ```html\n * <nav id=\"stepper\"></nav>\n * ```\n * ```typescript\n * <script>\n * let stepperObj: Stepper = new Stepper({steps : [{}, {}, {}, {}, {}]});\n * stepperObj.appendTo('#stepper');\n * </script>\n * ```\n */\nvar Stepper = /** @class */function (_super) {\n __extends(Stepper, _super);\n /**\n * * Constructor for creating the Stepper component.\n *\n * @param {StepperModel} options - Specifies the Stepper model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Stepper(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.stepperItemElements = [];\n return _this;\n }\n Stepper.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n var localeText = {\n optional: 'Optional'\n };\n this.l10n = new L10n('stepper', localeText, this.locale);\n this.keyConfigs = {\n downarrow: 'downarrow',\n leftarrow: 'leftarrow',\n rightarrow: 'rightarrow',\n uparrow: 'uparrow',\n space: 'space',\n enter: 'enter',\n home: 'home',\n end: 'end',\n tab: 'tab',\n shiftTab: 'shift+tab',\n escape: 'escape'\n };\n this.tooltipOpen = false;\n };\n /**\n * To get component name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Stepper.prototype.getModuleName = function () {\n return 'stepper';\n };\n Stepper.prototype.render = function () {\n this.initialize();\n this.navigationHandler(this.activeStep, null, false);\n this.updateStepperStatus(true);\n };\n Stepper.prototype.initialize = function () {\n this.element.setAttribute('aria-label', this.element.id);\n this.updatePosition();\n this.stepperItemList = this.createElement('ol', {\n className: ITEMLIST\n });\n this.updateOrientaion(this.element);\n this.updateStepType();\n this.element.appendChild(this.stepperItemList);\n if (this.cssClass) {\n addClass([this.element], this.cssClass.trim().split(' '));\n }\n if (this.readOnly) {\n this.element.classList.add(READONLY);\n }\n if (this.enableRtl) {\n this.element.classList.add(RTL);\n }\n this.wireEvents();\n this.updateTemplateFunction();\n this.renderItems();\n if (this.steps.length > 0) {\n this.initiateProgressBar();\n this.checkValidStep();\n this.updateAnimation();\n this.updateTooltip();\n this.wireKeyboardEvent();\n }\n };\n Stepper.prototype.initiateProgressBar = function () {\n var _this = this;\n if (this.steps.length > 1) {\n if (this.isAngular && this.template) {\n setTimeout(function () {\n _this.renderProgressBar(_this.element);\n });\n } else {\n this.renderProgressBar(this.element);\n }\n }\n };\n Stepper.prototype.updatePosition = function () {\n this.progressBarPosition = this.beforeLabelWidth = this.textEleWidth = 0;\n };\n Stepper.prototype.renderDefault = function (index) {\n var step = this.steps[parseInt(index.toString(), 10)];\n return !step.iconCss && !step.text && !step.label;\n };\n Stepper.prototype.updateAnimation = function () {\n var progressEle = this.element.querySelector('.e-progressbar-value');\n if (this.animation.enable) {\n if (this.animation.duration >= 0) {\n if (progressEle) {\n progressEle.style.setProperty('--duration', this.animation.duration + 'ms');\n }\n }\n if (this.animation.delay >= 0) {\n if (progressEle) {\n progressEle.style.setProperty('--delay', this.animation.delay + 'ms');\n }\n }\n } else {\n if (progressEle) {\n progressEle.style.setProperty('--delay', 0 + 'ms');\n progressEle.style.setProperty('--duration', 0 + 'ms');\n }\n }\n };\n Stepper.prototype.updateStepType = function () {\n if (!isNullOrUndefined(this.stepType)) {\n var stepTypeLower = this.stepType.toLowerCase();\n var validStepTypes = ['indicator', 'label', 'default'];\n if (validStepTypes.indexOf(stepTypeLower) !== -1) {\n if (stepTypeLower !== 'default') {\n this.element.classList.add('e-step-type-' + stepTypeLower);\n }\n if ((stepTypeLower === 'indicator' || stepTypeLower === 'label') && this.labelContainer) {\n this.clearLabelPosition();\n }\n }\n }\n };\n Stepper.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.updateResize, this);\n EventHandler.add(window, 'click', this.updateStepFocus, this);\n };\n Stepper.prototype.unWireEvents = function () {\n EventHandler.remove(window, 'resize', this.updateResize);\n EventHandler.remove(window, 'click', this.updateStepFocus);\n };\n Stepper.prototype.updateResize = function () {\n if (this.stepperItemList && this.progressbar && this.element.classList.contains(HORIZSTEP)) {\n this.setProgressPosition(this.element, true);\n }\n this.navigateToStep(this.activeStep, null, null, false, false);\n };\n Stepper.prototype.updateStepFocus = function () {\n if (this.isKeyNavFocus) {\n this.isKeyNavFocus = false;\n var isFocus = this.element.querySelector('.' + FOCUS);\n if (isFocus) {\n isFocus.classList.remove(FOCUS);\n this.element.classList.remove('e-steps-focus');\n }\n }\n };\n Stepper.prototype.updateStepperStatus = function (isInitial) {\n for (var index = 0; index < this.steps.length; index++) {\n var item = this.steps[parseInt(index.toString(), 10)];\n var status_1 = item.status.toLowerCase();\n if (isInitial && this.activeStep === 0 && index === 0) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n item.status = StepStatus.InProgress;\n this.isProtectedOnChange = prevOnChange;\n }\n if (item && status_1 !== 'notstarted' && index === this.activeStep) {\n for (var i = 0; i < this.steps.length; i++) {\n var itemElement = this.stepperItemElements[parseInt(i.toString(), 10)];\n itemElement.classList.remove(SELECTED, INPROGRESS, COMPLETED, NOTSTARTED);\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n if (status_1 === 'completed') {\n this.updateStatusClass(i, index, itemElement);\n } else {\n this.updateStatusClass(i, index, itemElement, true);\n }\n this.isProtectedOnChange = prevOnChange;\n }\n } else if (item && status_1 !== 'notstarted' && index !== this.activeStep) {\n this.navigationHandler(this.activeStep, null, true);\n }\n }\n };\n Stepper.prototype.updateStatusClass = function (currentStep, index, ele, isInprogress) {\n var stepItem = this.steps[parseInt(currentStep.toString(), 10)];\n if (currentStep < index) {\n ele.classList.add(COMPLETED);\n stepItem.status = StepStatus.Completed;\n } else if (currentStep === index) {\n ele.classList.add(isInprogress ? INPROGRESS : COMPLETED, SELECTED);\n } else {\n ele.classList.add(NOTSTARTED);\n }\n };\n Stepper.prototype.renderItems = function () {\n var _this = this;\n var _a;\n var isHorizontal = this.element.classList.contains(HORIZSTEP);\n var isVertical = this.element.classList.contains(VERTICALSTEP);\n var labelPositionLower = !isNullOrUndefined(this.labelPosition) ? this.labelPosition.toLowerCase() : '';\n for (var index = 0; index < this.steps.length; index++) {\n this.stepperItemContainer = this.createElement('li', {\n className: ITEMCONTAINER\n });\n var stepSpan = this.createElement('span', {\n className: 'e-step'\n });\n var item = this.steps[parseInt(index.toString(), 10)];\n var isItemLabel = item.label ? true : false;\n var isItemText = item.text ? true : false;\n var isIndicator = this.element.classList.contains(STEPINDICATOR);\n this.stepperItemContainer.classList[index === 0 ? 'add' : 'remove'](SELECTED, INPROGRESS);\n this.stepperItemContainer.classList[index !== 0 ? 'add' : 'remove'](NOTSTARTED);\n if (isHorizontal) {\n this.stepperItemContainer.style.setProperty('--max-width', 100 / this.steps.length + '%');\n }\n if (this.renderDefault(index) && (isNullOrUndefined(this.template) || this.template === '')) {\n var isIndicator_1 = !this.element.classList.contains('e-step-type-default') && this.stepType.toLowerCase() === 'indicator';\n if (isIndicator_1) {\n stepSpan.classList.add('e-icons', INDICATORICON);\n }\n if (!isIndicator_1 && item.isValid == null) {\n stepSpan.classList.add('e-step-content');\n stepSpan.innerHTML = (index + 1).toString();\n }\n this.stepperItemContainer.appendChild(stepSpan);\n } else if (isNullOrUndefined(this.template) || this.template === '') {\n var isRender = true;\n if ((item.iconCss || !item.iconCss && isItemText && isItemLabel) && (!isItemText && !isItemLabel || !this.element.classList.contains(LABELINDICATOR))) {\n if (item.iconCss) {\n var itemIcon = item.iconCss.trim().split(' ');\n (_a = stepSpan.classList).add.apply(_a, [ICONCSS].concat(itemIcon));\n this.stepperItemContainer.classList.add(STEPICON);\n } else if (!item.iconCss && isItemText && isItemLabel) {\n stepSpan.classList.add(ICONCSS);\n stepSpan.innerHTML = item.text;\n this.stepperItemContainer.classList.add(STEPICON);\n }\n this.stepperItemContainer.appendChild(stepSpan);\n if ((isHorizontal && (labelPositionLower === 'start' || labelPositionLower === 'end') && isItemLabel || isVertical && (labelPositionLower === 'top' || labelPositionLower === 'bottom') && isItemLabel) && !isIndicator) {\n this.element.classList.add('e-label-' + labelPositionLower);\n this.createTextLabelElement(item.label);\n isRender = false;\n }\n }\n if (isItemText && (!item.iconCss || !isIndicator) && isRender && !(item.iconCss && isItemLabel)) {\n if (!item.iconCss && isIndicator || (!item.iconCss || this.element.classList.contains(LABELINDICATOR)) && !isItemLabel) {\n if (!item.iconCss && !isItemLabel) {\n this.element.classList.add('e-step-type-indicator');\n }\n this.checkValidState(item, stepSpan);\n isItemLabel = false;\n } else {\n if (!isItemLabel) {\n this.createTextLabelElement(item.text);\n }\n if (isItemLabel && this.element.classList.contains(LABELINDICATOR)) {\n var textSpan = this.createElement('span', {\n className: TEXT\n });\n textSpan.innerText = item.label;\n }\n isItemText = isItemLabel ? false : true;\n }\n }\n if (isItemLabel && isItemLabel && (!item.iconCss || !isIndicator) && isRender) {\n if (!item.iconCss && !isItemText && isIndicator) {\n this.checkValidState(item, stepSpan, true);\n } else if (!(this.element.classList.contains(LABELINDICATOR) && isItemText) || this.element.classList.contains(LABELINDICATOR) && isItemLabel) {\n this.createTextLabelElement(item.label, true);\n this.updateLabelPosition();\n if (!item.iconCss && !isItemText && !this.stepperItemContainer.classList.contains(STEPICON) || this.element.classList.contains(LABELINDICATOR)) {\n this.stepperItemContainer.classList.add('e-step-label-only');\n if (item.isValid !== null) {\n var iconSpan = this.createElement('span', {\n className: 'e-step-validation-icon e-icons'\n });\n this.labelContainer.appendChild(iconSpan);\n }\n }\n }\n }\n }\n if (item.optional) {\n var optionalSpan = this.createElement('span', {\n className: OPTIONAL\n });\n this.l10n.setLocale(this.locale);\n var optionalContent = this.l10n.getConstant('optional');\n optionalSpan.innerText = optionalContent;\n if (isItemLabel && this.labelContainer && (this.element.classList.contains(LABELAFTER) && !this.stepperItemContainer.classList.contains('e-step-label-only') || isHorizontal && this.element.classList.contains(LABELBEFORE) && !this.stepperItemContainer.classList.contains('e-step-label-only')) || isVertical && this.element.classList.contains(LABELBEFORE)) {\n this.labelContainer.appendChild(optionalSpan);\n } else {\n this.stepperItemContainer.appendChild(optionalSpan);\n }\n if (item.isValid !== null) {\n this.stepperItemContainer.classList.add(item.isValid ? 'e-step-valid' : 'e-step-error');\n }\n }\n if (item.cssClass) {\n addClass([this.stepperItemContainer], item.cssClass.trim().split(' '));\n }\n if (item.disabled) {\n this.stepperItemContainer.classList[item.disabled ? 'add' : 'remove'](DISABLED);\n attributes(this.stepperItemContainer, {\n 'tabindex': '-1',\n 'aria-disabled': 'true'\n });\n }\n if (item.isValid !== null) {\n if (item.isValid) {\n this.stepperItemContainer.classList.add('e-step-valid');\n } else {\n this.stepperItemContainer.classList.add('e-step-error');\n }\n }\n this.renderItemContent(index, false);\n if (this.stepperItemContainer.classList.contains(INPROGRESS)) {\n attributes(this.stepperItemContainer, {\n 'tabindex': '0',\n 'aria-current': 'true'\n });\n } else {\n attributes(this.stepperItemContainer, {\n 'tabindex': '-1'\n });\n }\n this.wireItemsEvents(this.stepperItemContainer, index);\n this.stepperItemElements.push(this.stepperItemContainer);\n var eventArgs = {\n element: this.stepperItemContainer,\n index: index\n };\n this.trigger('beforeStepRender', eventArgs, function (args) {\n _this.stepperItemList.appendChild(args.element);\n });\n if (isVertical) {\n if (this.isAngular && this.template) {\n setTimeout(function () {\n _this.calculateProgressBarPosition();\n });\n } else {\n this.calculateProgressBarPosition();\n }\n }\n }\n if (isVertical) {\n if (this.element.classList.contains(LABELBEFORE)) {\n var listItems = this.stepperItemList.querySelectorAll('.' + LABEL);\n for (var i = 0; i < listItems.length; i++) {\n var labelEle = listItems[parseInt(i.toString(), 10)];\n labelEle.style.setProperty('--label-width', this.beforeLabelWidth + 5 + 'px');\n }\n }\n }\n };\n Stepper.prototype.createTextLabelElement = function (content, isLabelEle) {\n if (isLabelEle === void 0) {\n isLabelEle = false;\n }\n var spanEle = this.createElement('span', {\n className: isLabelEle ? LABEL : TEXTCSS + \" \" + TEXT\n });\n spanEle.innerText = content;\n if (isLabelEle) {\n this.labelContainer = this.createElement('span', {\n className: STEPLABEL\n });\n this.labelContainer.appendChild(spanEle);\n } else {\n this.stepperItemContainer.appendChild(spanEle);\n }\n this.stepperItemContainer.classList.add(isLabelEle ? STEPSLABEL : STEPTEXT);\n };\n Stepper.prototype.calculateProgressBarPosition = function () {\n var isBeforeLabel = this.element.classList.contains(LABELBEFORE) ? true : false;\n var iconOnly = this.stepperItemContainer.classList.contains(STEPICON) && !this.stepperItemContainer.classList.contains(STEPTEXT) && !this.stepperItemContainer.classList.contains(STEPSLABEL);\n var textEle = this.stepperItemContainer.querySelector('.' + TEXTCSS);\n if (textEle) {\n this.textEleWidth = this.textEleWidth < textEle.offsetWidth ? textEle.offsetWidth : this.textEleWidth;\n }\n if (isBeforeLabel) {\n var labelWidth = this.stepperItemContainer.querySelector('.' + LABEL).offsetWidth + 15;\n this.beforeLabelWidth = Math.max(this.beforeLabelWidth, labelWidth);\n var iconEle = this.element.querySelector('ol').lastChild.querySelector('.' + ICONCSS);\n var textEle_1 = this.stepperItemContainer.querySelector('.' + TEXTCSS);\n if (iconEle || textEle_1) {\n var itemWidth = this.beforeLabelWidth + (this.stepperItemContainer.querySelector('.' + ICONCSS) || textEle_1).offsetWidth / 2;\n this.progressBarPosition = Math.max(this.progressBarPosition, itemWidth);\n } else {\n this.progressBarPosition = Math.max(this.progressBarPosition, this.beforeLabelWidth / 2);\n }\n } else {\n var lastChild = this.element.querySelector('ol').lastChild;\n var lastChildWidth = iconOnly ? this.stepperItemContainer.offsetWidth : lastChild.firstChild.offsetWidth;\n this.progressBarPosition = Math.max(this.progressBarPosition, lastChildWidth);\n }\n };\n Stepper.prototype.checkValidState = function (item, stepSpan, isLabel) {\n if (item.isValid == null) {\n stepSpan.classList.add('e-step-content');\n if (isLabel) {\n stepSpan.innerHTML = item.label;\n } else {\n stepSpan.innerHTML = item.label ? item.label : item.text;\n }\n this.stepperItemContainer.appendChild(stepSpan);\n } else {\n stepSpan.classList.add(ICONCSS);\n this.stepperItemContainer.appendChild(stepSpan);\n this.stepperItemContainer.classList.add(STEPICON);\n }\n };\n Stepper.prototype.updateCurrentLabel = function () {\n var labelPos = this.labelPosition.toLowerCase();\n var currentLabelPos = this.element.classList.contains(HORIZSTEP) ? labelPos === 'top' ? 'before' : labelPos === 'bottom' ? 'after' : labelPos : labelPos === 'start' ? 'before' : labelPos === 'end' ? 'after' : labelPos;\n return currentLabelPos;\n };\n Stepper.prototype.updateLabelPosition = function () {\n this.clearLabelPosition();\n this.labelContainer.classList.add('e-label-' + this.updateCurrentLabel());\n if (this.labelPosition.toLowerCase() === 'start' && this.orientation.toLowerCase() === 'vertical') {\n if (this.stepperItemContainer.firstChild) {\n this.stepperItemContainer.firstChild.before(this.labelContainer);\n } else {\n this.stepperItemContainer.appendChild(this.labelContainer);\n }\n } else {\n this.stepperItemContainer.appendChild(this.labelContainer);\n }\n this.element.classList.add('e-label-' + this.updateCurrentLabel());\n };\n Stepper.prototype.clearLabelPosition = function () {\n var removeCss = this.labelContainer.classList.value.match(/(e-label-[after|before]+)/g);\n if (removeCss) {\n removeClass([this.labelContainer], removeCss);\n removeClass([this.element], removeCss);\n }\n };\n Stepper.prototype.checkValidStep = function () {\n var isStepIndicator = this.element.classList.contains(STEPINDICATOR);\n var _loop_1 = function (index) {\n var item = this_1.steps[parseInt(index.toString(), 10)];\n var itemElement = this_1.stepperItemElements[parseInt(index.toString(), 10)];\n if (item.isValid !== null) {\n var indicatorEle = void 0;\n var iconEle_1;\n if (isStepIndicator && !item.iconCss) {\n indicatorEle = itemElement.querySelector('.' + ICONCSS);\n } else {\n iconEle_1 = itemElement.querySelector('.' + ICONCSS);\n }\n if (!indicatorEle && isStepIndicator && this_1.renderDefault(index)) {\n indicatorEle = itemElement.querySelector('.' + INDICATORICON);\n }\n var textLabelIcon = itemElement.querySelector('.e-step-validation-icon');\n var itemIcon = item.iconCss.trim().split(' ');\n var validStep = itemElement.classList.contains('e-step-valid');\n var validIconClass = validStep ? 'e-check' : 'e-circle-info';\n if (indicatorEle) {\n indicatorEle.classList.remove(INDICATORICON);\n if (indicatorEle.innerHTML !== '') {\n indicatorEle.innerHTML = '';\n }\n indicatorEle.classList.add('e-icons', validIconClass, ICONCSS);\n }\n if (this_1.renderDefault(index) && !isStepIndicator) {\n var stepSpan = itemElement.querySelector('.e-step');\n stepSpan.classList.add('e-icons', validIconClass, ICONCSS);\n }\n if (iconEle_1) {\n if (iconEle_1.innerHTML !== '') {\n iconEle_1.innerHTML = '';\n } else if (itemIcon.length > 0) {\n itemIcon.forEach(function (icon) {\n iconEle_1.classList.remove(icon);\n });\n }\n iconEle_1.classList.add('e-icons', validIconClass);\n }\n if (textLabelIcon) {\n textLabelIcon.classList.add(validStep ? 'e-circle-check' : 'e-circle-info');\n if (this_1.element.classList.contains(VERTICALSTEP)) {\n var labelEle = itemElement.querySelector('.' + LABEL);\n var textEle = itemElement.querySelector('.' + TEXT);\n var itemWidth = textEle ? textEle.offsetWidth + textEle.getBoundingClientRect().left : labelEle.offsetWidth + labelEle.getBoundingClientRect().left;\n var validationIcon = itemElement.querySelector('.e-step-validation-icon');\n validationIcon.style.setProperty('--icon-position', itemWidth + 20 + 'px');\n }\n }\n }\n };\n var this_1 = this;\n for (var index = 0; index < this.steps.length; index++) {\n _loop_1(index);\n }\n };\n Stepper.prototype.updateTooltip = function () {\n if (this.showTooltip) {\n this.tooltipObj = new Tooltip({\n target: '.e-step-container',\n windowCollision: true,\n opensOn: 'Custom',\n cssClass: this.cssClass ? STEPPERTOOLTIP + ' ' + this.cssClass : STEPPERTOOLTIP,\n position: 'TopCenter'\n });\n this.tooltipObj.appendTo(this.stepperItemList);\n } else {\n if (!isNullOrUndefined(this.tooltipObj)) {\n this.tooltipObj.destroy();\n this.tooltipObj = null;\n }\n }\n };\n Stepper.prototype.wireItemsEvents = function (itemElement, index) {\n EventHandler.add(itemElement, 'click', this.linearModeHandler.bind(this, itemElement, index), this);\n EventHandler.add(itemElement, 'mouseover', this.openStepperTooltip.bind(this, index), this);\n EventHandler.add(itemElement, 'mouseleave', this.closeStepperTooltip, this);\n };\n Stepper.prototype.unWireItemsEvents = function () {\n for (var index = 0; index < this.steps.length; index++) {\n var itemElement = this.stepperItemElements[parseInt(index.toString(), 10)];\n EventHandler.remove(itemElement, 'click', this.linearModeHandler.bind(this, itemElement, index));\n EventHandler.remove(itemElement, 'mouseover', this.openStepperTooltip.bind(this, index));\n EventHandler.remove(itemElement, 'mouseleave', this.closeStepperTooltip);\n }\n };\n Stepper.prototype.linearModeHandler = function (itemElement, index, e) {\n if (this.linear) {\n var linearModeValue = index - this.activeStep;\n if (Math.abs(linearModeValue) === 1) {\n this.stepClickHandler(index, e, itemElement);\n }\n } else {\n this.stepClickHandler(index, e, itemElement);\n }\n };\n Stepper.prototype.openStepperTooltip = function (index) {\n var currentStep = this.steps[parseInt(index.toString(), 10)];\n if (this.showTooltip && (currentStep.label || currentStep.text)) {\n if (!this.tooltipOpen) {\n this.updateTooltipContent(index);\n this.tooltipObj.open(this.stepperItemElements[parseInt(index.toString(), 10)]);\n if (this.stepType.toLocaleLowerCase() !== 'label' && (this.stepType.toLocaleLowerCase() === 'indicator' || currentStep.label !== '' && currentStep.iconCss !== '' || currentStep.label === null && currentStep.iconCss === '' && currentStep.text !== '')) {\n var tooltipPopupClass = currentStep.status.toLowerCase() === 'inprogress' ? STEPPERTOOLTIP + \" \" + STEPPERIPROGRESSTIP + \" \" + (this.cssClass ? this.cssClass : '') : STEPPERTOOLTIP + \" \" + (this.cssClass ? this.cssClass : '');\n this.tooltipObj.setProperties({\n cssClass: tooltipPopupClass.trim()\n });\n }\n this.tooltipOpen = true;\n }\n }\n };\n Stepper.prototype.closeStepperTooltip = function () {\n if (this.tooltipOpen) {\n this.tooltipObj.close();\n this.tooltipOpen = false;\n }\n };\n Stepper.prototype.updateTooltipContent = function (index) {\n if (this.showTooltip) {\n if (this.isReact) {\n this.clearTemplate(['stepperTooltipTemplate']);\n }\n var content = void 0;\n var currentStep = this.steps[parseInt(index.toString(), 10)];\n if (this.tooltipTemplate) {\n content = this.createElement('span', {\n className: 'e-stepper-tooltip-content'\n });\n var templateFunction = this.getTemplateFunction(this.tooltipTemplate);\n append(templateFunction({\n value: currentStep\n }, this, 'stepperTooltipTemplate', this.element.id + 'tooltipTemplate', this.isStringTemplate), content);\n this.tooltipObj.setProperties({\n content: content\n }, true);\n } else {\n var content_1 = currentStep.label ? currentStep.label : currentStep.text;\n this.tooltipObj.setProperties({\n content: initializeCSPTemplate(function () {\n return content_1;\n })\n }, true);\n }\n this.renderReactTemplates();\n }\n };\n Stepper.prototype.stepClickHandler = function (index, e, itemElement) {\n var clickEventArgs = {\n element: itemElement,\n event: e,\n previousStep: this.activeStep,\n activeStep: index\n };\n this.trigger('stepClick', clickEventArgs);\n this.navigateToStep(index, e, itemElement, true);\n };\n Stepper.prototype.updateTemplateFunction = function () {\n this.templateFunction = this.template ? this.getTemplateFunction(this.template) : null;\n };\n Stepper.prototype.renderItemContent = function (index, isrerender) {\n var listItems = this.stepperItemList.querySelectorAll('li');\n if (isrerender) {\n this.removeItemContent(listItems[parseInt(index.toString(), 10)]);\n }\n if (this.template) {\n if (isrerender) {\n listItems[parseInt(index.toString(), 10)].classList.add(TEMPLATE);\n } else {\n this.stepperItemContainer.classList.add(TEMPLATE);\n }\n var item = this.steps[parseInt(index.toString(), 10)];\n append(this.templateFunction({\n step: item,\n currentStep: index\n }, this, 'stepperTemplate', this.element.id + '_stepperTemplate', this.isStringTemplate), isrerender ? listItems[parseInt(index.toString(), 10)] : this.stepperItemContainer);\n }\n this.renderReactTemplates();\n };\n Stepper.prototype.removeItemContent = function (ele) {\n ele.classList.remove(TEMPLATE);\n var firstChild = ele.firstElementChild;\n for (var i = 0; i < ele.childElementCount; i++) {\n firstChild.remove();\n }\n };\n Stepper.prototype.updateContent = function () {\n if (this.isReact) {\n this.clearTemplate(['stepperTemplate']);\n }\n for (var i = 0; i < this.steps.length; i++) {\n this.renderItemContent(i, true);\n }\n };\n /**\n * Gets template content based on the template property value.\n *\n * @param {string | Function} template - Template property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\n Stepper.prototype.getTemplateFunction = function (template) {\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n } else {\n content = template;\n }\n } catch (e) {\n content = template;\n }\n return compile(content);\n } else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n };\n Stepper.prototype.navigateToStep = function (index, e, itemElement, isInteracted, isUpdated) {\n var _this = this;\n var eventArgs = {\n element: itemElement,\n event: e,\n isInteracted: isInteracted,\n previousStep: this.activeStep,\n activeStep: index,\n cancel: false\n };\n if (isUpdated !== false) {\n var previousStep_1 = this.activeStep;\n this.trigger('stepChanging', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.navigationHandler(index);\n var eventArgs = {\n element: itemElement,\n event: e,\n isInteracted: isInteracted,\n previousStep: previousStep_1,\n activeStep: _this.activeStep\n };\n _this.trigger('stepChanged', eventArgs);\n });\n } else {\n this.navigationHandler(index);\n }\n };\n Stepper.prototype.navigationHandler = function (index, stepStatus, isUpdated) {\n index = Math.min(index, this.steps.length - 1);\n var Itemslength = this.stepperItemElements.length;\n if (index >= 0 && index < Itemslength - 1) {\n index = this.stepperItemElements[parseInt(index.toString(), 10)].classList.contains(DISABLED) ? this.activeStep : index;\n }\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.activeStep = parseInt(index.toString(), 10);\n this.isProtectedOnChange = prevOnChange;\n for (var i = 0; i < this.steps.length; i++) {\n var itemElement = this.stepperItemElements[parseInt(i.toString(), 10)];\n var item = this.steps[parseInt(i.toString(), 10)];\n itemElement.classList.remove(SELECTED, INPROGRESS, COMPLETED, NOTSTARTED);\n if (i === this.activeStep) {\n itemElement.classList.add(SELECTED);\n }\n if (this.activeStep >= 0 && this.progressbar) {\n if (this.element.classList.contains(HORIZSTEP)) {\n this.calculateProgressbarPos();\n } else {\n this.progressbar.style.setProperty(PROGRESSVALUE, 100 / (this.steps.length - 1) * index + '%');\n }\n } else if (this.activeStep < 0 && this.progressbar) {\n this.progressbar.style.setProperty(PROGRESSVALUE, 0 + '%');\n }\n if (i === this.activeStep) {\n itemElement.classList.add(INPROGRESS);\n } else if (this.activeStep > 0 && i < this.activeStep) {\n itemElement.classList.add(COMPLETED);\n } else {\n itemElement.classList.add(NOTSTARTED);\n }\n if (itemElement.classList.contains(INPROGRESS)) {\n attributes(itemElement, {\n 'tabindex': '0',\n 'aria-current': 'true'\n });\n } else {\n attributes(itemElement, {\n 'tabindex': '-1',\n 'aria-current': 'false'\n });\n }\n var prevOnChange_1 = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n if (isUpdated !== false) {\n if (i < this.activeStep || this.steps.length - 1 === this.activeStep && item.status.toLowerCase() === 'completed') {\n item.status = StepStatus.Completed;\n } else if (i === this.activeStep) {\n item.status = StepStatus.InProgress;\n } else if (i > this.activeStep) {\n item.status = StepStatus.NotStarted;\n }\n if (stepStatus && this.activeStep === i) {\n item.status = stepStatus;\n }\n if (item.status.toLowerCase() === 'completed') {\n itemElement.classList.remove(SELECTED, INPROGRESS, NOTSTARTED);\n itemElement.classList.add(COMPLETED);\n }\n if (item.status.toLowerCase() === 'notstarted') {\n itemElement.classList.remove(SELECTED, INPROGRESS, COMPLETED);\n itemElement.classList.add(NOTSTARTED);\n }\n }\n this.isProtectedOnChange = prevOnChange_1;\n this.updateIndicatorStatus(i, itemElement);\n }\n this.updateStepInteractions();\n };\n Stepper.prototype.calculateProgressbarPos = function () {\n var _this = this;\n if ((this.element.classList.contains(LABELBEFORE) || this.element.classList.contains(LABELAFTER)) && !this.element.classList.contains(STEPINDICATOR) && this.stepperItemElements[parseInt(this.activeStep.toString(), 10)].classList.contains(STEPICON)) {\n var progressPos = this.element.querySelector('.e-stepper-progressbar');\n var selectedEle = this.stepperItemElements[parseInt(this.activeStep.toString(), 10)].firstChild;\n var value = this.activeStep === 0 ? 0 : (selectedEle.offsetLeft - progressPos.offsetLeft + selectedEle.offsetWidth / 2) / progressPos.offsetWidth * 100;\n if (this.element.classList.contains(RTL)) {\n value = (progressPos.getBoundingClientRect().right - selectedEle.getBoundingClientRect().right + selectedEle.offsetWidth / 2) / progressPos.offsetWidth * 100;\n this.progressbar.style.setProperty(PROGRESSVALUE, value + '%');\n } else {\n this.progressbar.style.setProperty(PROGRESSVALUE, value + '%');\n }\n } else {\n var totalLiWidth_1 = 0;\n var activeLiWidth_1 = 0;\n this.stepperItemElements.forEach(function (element, index) {\n var itemWidth = element.offsetWidth;\n totalLiWidth_1 += itemWidth;\n if (index <= _this.activeStep) {\n activeLiWidth_1 += index === _this.activeStep && index !== 0 ? itemWidth / 2 : itemWidth;\n }\n });\n var spaceWidth = (this.stepperItemList.offsetWidth - totalLiWidth_1) / (this.stepperItemElements.length - 1);\n var progressValue = (activeLiWidth_1 + spaceWidth * this.activeStep) / this.stepperItemList.offsetWidth * 100;\n this.progressbar.style.setProperty(PROGRESSVALUE, progressValue + '%');\n }\n };\n Stepper.prototype.updateIndicatorStatus = function (index, itemElement) {\n if (this.renderDefault(index) && this.element.classList.contains(STEPINDICATOR) && !itemElement.classList.contains('e-step-valid') && !itemElement.classList.contains('e-step-error')) {\n if (itemElement.classList.contains(COMPLETED)) {\n itemElement.firstChild.classList.remove('e-icons', 'e-step-indicator');\n itemElement.firstChild.classList.add(ICONCSS, 'e-icons', 'e-check');\n } else if (itemElement.classList.contains(INPROGRESS) || itemElement.classList.contains(NOTSTARTED)) {\n itemElement.firstChild.classList.remove(ICONCSS, 'e-icons', 'e-check');\n itemElement.firstChild.classList.add('e-icons', 'e-step-indicator');\n }\n }\n };\n Stepper.prototype.updateStepInteractions = function () {\n var _this = this;\n this.element.classList.toggle(LINEARSTEP, this.linear);\n this.stepperItemElements.forEach(function (step, index) {\n step.classList.toggle(PREVSTEP, index === _this.activeStep - 1);\n step.classList.toggle(NEXTSTEP, index === _this.activeStep + 1);\n });\n };\n Stepper.prototype.removeItemElements = function () {\n for (var i = 0; i < this.stepperItemElements.length; i++) {\n remove(this.stepperItemElements[parseInt(i.toString(), 10)]);\n }\n this.stepperItemElements = [];\n };\n /**\n * Move to next step from current step in Stepper.\n *\n * @returns {void}\n */\n Stepper.prototype.nextStep = function () {\n if (this.activeStep !== this.steps.length - 1) {\n this.navigateToStep(this.activeStep + 1, null, null, false);\n }\n };\n /**\n * Move to previous step from current step in Stepper.\n *\n * @returns {void}\n */\n Stepper.prototype.previousStep = function () {\n if (this.activeStep > 0) {\n this.navigateToStep(this.activeStep - 1, null, null, false);\n }\n };\n /**\n * Reset the state of the Stepper and move to the first step.\n *\n * @returns {void}\n */\n Stepper.prototype.reset = function () {\n if (this.activeStep === 0) {\n this.updateStepInteractions();\n } else {\n var isDisabled = this.stepperItemElements[0].classList.contains(DISABLED) ? true : false;\n this.navigateToStep(isDisabled ? -1 : 0, null, null, false);\n }\n };\n /**\n * Refreshes the position of the progress bar programmatically when the dimensions of the parent container are changed.\n *\n * @returns {void}\n */\n Stepper.prototype.refreshProgressbar = function () {\n if (this.stepperItemList && this.progressbar) {\n this.setProgressPosition(this.element);\n }\n this.navigateToStep(this.activeStep, null, null, false, false);\n };\n Stepper.prototype.updateElementClassArray = function () {\n var classArray = [RTL, READONLY, 'e-steps-focus', LABELAFTER, LABELBEFORE, 'e-label-top', 'e-label-bottom', 'e-label-start', 'e-label-end', STEPINDICATOR, LABELINDICATOR, VERTICALSTEP, HORIZSTEP, LINEARSTEP];\n removeClass([this.element], classArray);\n };\n /**\n * Destroy the stepper control.\n *\n * @returns {void}\n */\n Stepper.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.unWireEvents();\n this.unWireItemsEvents();\n // unwires the events and detach the li elements\n this.removeItemElements();\n this.clearTemplate();\n if (this.stepperItemList) {\n remove(this.stepperItemList);\n }\n this.stepperItemList = null;\n if (this.progressStep) {\n remove(this.progressStep);\n }\n this.progressStep = null;\n this.progressbar = null;\n this.progressBarPosition = null;\n this.stepperItemContainer = null;\n this.textContainer = null;\n this.labelContainer = null;\n this.updateElementClassArray();\n this.element.removeAttribute('aria-label');\n if (this.showTooltip) {\n this.tooltipObj.destroy();\n this.tooltipObj = null;\n }\n if (this.keyboardModuleStepper) {\n this.keyboardModuleStepper.destroy();\n }\n this.keyboardModuleStepper = null;\n };\n Stepper.prototype.wireKeyboardEvent = function () {\n this.keyboardModuleStepper = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n Stepper.prototype.keyActionHandler = function (e) {\n if (this.readOnly) {\n return;\n }\n switch (e.action) {\n case 'uparrow':\n case 'downarrow':\n case 'leftarrow':\n case 'rightarrow':\n case 'tab':\n case 'shiftTab':\n this.handleNavigation(this.enableRtl && this.element.classList.contains(HORIZSTEP) ? e.action === 'leftarrow' || e.action === 'tab' || e.action === 'uparrow' : e.action === 'rightarrow' || e.action === 'tab' || e.action === 'downarrow', e);\n break;\n case 'space':\n case 'enter':\n case 'escape':\n this.handleNavigation(null, e);\n break;\n case 'home':\n case 'end':\n this.handleNavigation(null, e, this.enableRtl);\n break;\n }\n };\n Stepper.prototype.handleNavigation = function (isNextStep, e, isRTL) {\n this.isKeyNavFocus = true;\n this.element.classList.add('e-steps-focus');\n var focusedEle = this.element.querySelector('.' + FOCUS);\n if (!focusedEle) {\n focusedEle = this.element.querySelector('.' + SELECTED);\n }\n var stepItems = Array.prototype.slice.call(this.stepperItemList.children);\n var index = stepItems.indexOf(focusedEle);\n if (e.action === 'tab' || e.action === 'shiftTab' || e.action === 'downarrow' || e.action === 'uparrow' || e.action === 'space' || e.action === 'home' || e.action === 'end') {\n if (e.action === 'tab' && index === stepItems.length - 1 || e.action === 'shiftTab' && index === 0) {\n if (focusedEle.classList.contains(FOCUS)) {\n this.updateStepFocus();\n return;\n }\n } else {\n e.preventDefault();\n }\n }\n if (e.action === 'escape') {\n stepItems[parseInt(index.toString(), 10)].classList.remove(FOCUS);\n this.element.classList.remove('e-steps-focus');\n }\n if (!(e.action === 'space' || e.action === 'enter')) {\n var prevIndex = index;\n index = isNextStep ? index + 1 : index - 1;\n while (index >= 0 && index < stepItems.length && stepItems[parseInt(index.toString(), 10)].classList.contains(DISABLED)) {\n index = isNextStep ? index + 1 : index - 1;\n }\n index = index < 0 ? 0 : index > stepItems.length - 1 ? stepItems.length - 1 : index;\n if (stepItems[parseInt(prevIndex.toString(), 10)].classList.contains(FOCUS)) {\n stepItems[parseInt(prevIndex.toString(), 10)].classList.remove(FOCUS);\n }\n if (e.action === 'home' || e.action === 'end') {\n if (e.action === 'home') {\n index = isRTL ? stepItems.length - 1 : 0;\n } else {\n index = isRTL ? 0 : stepItems.length - 1;\n }\n }\n if (index >= 0 && index < stepItems.length) {\n stepItems[parseInt(index.toString(), 10)].classList.add(FOCUS);\n }\n } else if (e.action === 'space' || e.action === 'enter') {\n var isupdateFocus = false;\n if (this.linear) {\n var linearModeValue = this.activeStep - index;\n if (Math.abs(linearModeValue) === 1) {\n this.navigateToStep(index, null, null, true);\n isupdateFocus = true;\n }\n } else {\n this.navigateToStep(index, null, null, true);\n isupdateFocus = true;\n }\n if (isupdateFocus) {\n this.updateStepFocus();\n this.stepperItemElements[index].focus();\n }\n }\n };\n Stepper.prototype.renderStepperItems = function (isUpdate, isStepType) {\n this.updateElementClassArray();\n this.removeItemElements();\n this.element.querySelector('.e-stepper-progressbar').remove();\n if (isUpdate) {\n this.updatePosition();\n }\n if (isStepType) {\n this.updateStepType();\n }\n if (this.readOnly && !this.element.classList.contains(READONLY)) {\n this.element.classList.add(READONLY);\n }\n if (this.enableRtl && !this.element.classList.contains(RTL)) {\n this.element.classList.add(RTL);\n }\n this.updateOrientaion(this.element);\n this.renderItems();\n this.renderProgressBar(this.element);\n this.checkValidStep();\n this.updateAnimation();\n this.navigateToStep(this.activeStep, null, this.stepperItemElements[this.activeStep], true);\n };\n Stepper.prototype.updateDynamicSteps = function (steps, prevSteps) {\n if (!(steps instanceof Array && prevSteps instanceof Array)) {\n var stepCounts = Object.keys(steps);\n for (var i = 0; i < stepCounts.length; i++) {\n var index = parseInt(Object.keys(steps)[i], 10);\n var changedPropsCount = Object.keys(steps[index]).length;\n for (var j = 0; j < changedPropsCount; j++) {\n var property = Object.keys(steps[index])[j];\n if (property === 'status') {\n if (this.activeStep === index) {\n this.navigationHandler(index, steps[index].status);\n } else {\n this.steps[index].status = prevSteps[index].status;\n }\n } else {\n this.removeItemElements();\n this.renderItems();\n this.updateStepperStatus();\n }\n if (property === 'label' && (this.steps[index].iconCss || this.steps[index].text) && this.stepType.toLowerCase() === 'default') {\n this.refreshProgressbar();\n }\n this.updateStepInteractions();\n this.checkValidStep();\n }\n }\n } else {\n this.renderStepperItems(true, true);\n }\n };\n Stepper.prototype.updateDynamicActiveStep = function (activeStep, preActiveStep) {\n this.activeStep = activeStep > this.steps.length - 1 || activeStep < -1 ? preActiveStep : this.activeStep;\n if (this.activeStep >= 0 && this.stepperItemElements[parseInt(this.activeStep.toString(), 10)].classList.contains(DISABLED)) {\n this.activeStep = preActiveStep;\n }\n if (this.linear) {\n var linearModeValue = preActiveStep - this.activeStep;\n if (Math.abs(linearModeValue) === 1) {\n this.navigateToStep(this.activeStep, null, null, true);\n }\n } else {\n this.navigateToStep(this.activeStep, null, this.stepperItemElements[this.activeStep], true);\n }\n };\n Stepper.prototype.updateDynamicCssClass = function (cssClass, prevCssClass) {\n if (prevCssClass) {\n removeClass([this.element], prevCssClass.trim().split(' '));\n }\n if (cssClass) {\n addClass([this.element], cssClass.trim().split(' '));\n }\n if (this.tooltipObj) {\n this.tooltipObj.setProperties({\n cssClass: this.cssClass ? STEPPERTOOLTIP + ' ' + this.cssClass : STEPPERTOOLTIP\n });\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {StepperModel} newProp - Specifies new properties\n * @param {StepperModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Stepper.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'steps':\n {\n this.updateDynamicSteps(newProp.steps, oldProp.steps);\n break;\n }\n case 'orientation':\n this.updateOrientaion(this.element);\n this.renderStepperItems(true);\n break;\n case 'activeStep':\n this.updateDynamicActiveStep(newProp.activeStep, oldProp.activeStep);\n break;\n case 'enableRtl':\n this.element.classList[this.enableRtl ? 'add' : 'remove'](RTL);\n break;\n case 'readOnly':\n this.element.classList[this.readOnly ? 'add' : 'remove'](READONLY);\n break;\n case 'cssClass':\n this.updateDynamicCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'labelPosition':\n this.renderStepperItems(true);\n break;\n case 'showTooltip':\n this.updateTooltip();\n break;\n case 'stepType':\n this.renderStepperItems(true, true);\n break;\n case 'template':\n this.updateTemplateFunction();\n this.updateContent();\n break;\n case 'animation':\n this.updateAnimation();\n break;\n case 'linear':\n this.updateStepInteractions();\n break;\n }\n }\n };\n __decorate([Property(0)], Stepper.prototype, \"activeStep\", void 0);\n __decorate([Complex({}, StepperAnimationSettings)], Stepper.prototype, \"animation\", void 0);\n __decorate([Property(false)], Stepper.prototype, \"linear\", void 0);\n __decorate([Property(false)], Stepper.prototype, \"showTooltip\", void 0);\n __decorate([Property('')], Stepper.prototype, \"template\", void 0);\n __decorate([Property('')], Stepper.prototype, \"tooltipTemplate\", void 0);\n __decorate([Property(StepLabelPosition.Bottom)], Stepper.prototype, \"labelPosition\", void 0);\n __decorate([Property(StepType.Default)], Stepper.prototype, \"stepType\", void 0);\n __decorate([Event()], Stepper.prototype, \"stepChanged\", void 0);\n __decorate([Event()], Stepper.prototype, \"stepChanging\", void 0);\n __decorate([Event()], Stepper.prototype, \"stepClick\", void 0);\n __decorate([Event()], Stepper.prototype, \"beforeStepRender\", void 0);\n Stepper = __decorate([NotifyPropertyChanges], Stepper);\n return Stepper;\n}(StepperBase);\nexport { Stepper };","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 @typescript-eslint/no-explicit-any */\nimport { Input, TextBox } from '@syncfusion/ej2-inputs';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { NotifyPropertyChanges, Property, Event, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Component, EventHandler, attributes, formatUnit, ChildProperty, remove, L10n, extend } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, detach, prepend, Complex, closest, setValue, getValue, compile, append } from '@syncfusion/ej2-base';\nimport { select, selectAll, isNullOrUndefined as isNOU, matches, Browser, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { TreeView } from '@syncfusion/ej2-navigations';\nvar RTL = 'e-rtl';\nvar DROPDOWNTREE = 'e-ddt';\nvar HIDDENELEMENT = 'e-ddt-hidden';\nvar DROPDOWNICON = 'e-input-group-icon e-ddt-icon e-icons';\nvar SHOW_CHIP = 'e-show-chip';\nvar SHOW_CLEAR = 'e-show-clear';\nvar SHOW_DD_ICON = 'e-show-dd-icon';\nvar CHIP_INPUT = 'e-chip-input';\nvar INPUTFOCUS = 'e-input-focus';\nvar INPUTGROUP = 'e-input-group';\nvar ICONANIMATION = 'e-icon-anim';\nvar CLOSEICON_CLASS = 'e-clear-icon e-icons';\nvar CHIP_WRAPPER = 'e-chips-wrapper';\nvar CHIP_COLLECTION = 'e-chips-collection';\nvar CHIP = 'e-chips';\nvar CHIP_CONTENT = 'e-chipcontent';\nvar CHIP_CLOSE = 'e-chips-close';\nvar HIDEICON = 'e-icon-hide';\nvar DDTHIDEICON = 'e-ddt-icon-hide';\nvar POPUP_CLASS = 'e-ddt e-popup';\nvar PARENTITEM = 'e-list-parent';\nvar CONTENT = 'e-popup-content';\nvar DROPDOWN = 'e-dropdown';\nvar DISABLED = 'e-disabled';\nvar ICONS = 'e-icons';\nvar CHECKALLPARENT = 'e-selectall-parent';\nvar CHECKALLHIDE = 'e-hide-selectall';\nvar BIGGER = 'e-bigger';\nvar SMALL = 'e-small';\nvar ALLTEXT = 'e-all-text';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECK = 'e-check';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar FILTERWRAP = 'e-filter-wrap';\nvar DDTICON = 'e-ddt-icon';\nvar FOOTER = 'e-ddt-footer';\nvar HEADER = 'e-ddt-header';\nvar NODATACONTAINER = 'e-ddt-nodata';\nvar NODATA = 'e-no-data';\nvar HEADERTEMPLATE = 'HeaderTemplate';\nvar FOOTERTEMPLATE = 'FooterTemplate';\nvar NORECORDSTEMPLATE = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE = 'ActionFailureTemplate';\nvar CUSTOMTEMPLATE = 'CustomTemplate';\nvar REMAIN_WRAPPER = 'e-remain';\nvar OVERFLOW_VIEW = 'e-overflow';\nvar SHOW_TEXT = 'e-show-text';\nvar TOTAL_COUNT_WRAPPER = 'e-total-count';\nvar REMAIN_COUNT = 'e-wrap-count';\nvar Fields = /** @class */function (_super) {\n __extends(Fields, _super);\n function Fields() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('child')], Fields.prototype, \"child\", void 0);\n __decorate([Property([])], Fields.prototype, \"dataSource\", void 0);\n __decorate([Property('expanded')], Fields.prototype, \"expanded\", void 0);\n __decorate([Property('hasChildren')], Fields.prototype, \"hasChildren\", void 0);\n __decorate([Property('htmlAttributes')], Fields.prototype, \"htmlAttributes\", void 0);\n __decorate([Property('iconCss')], Fields.prototype, \"iconCss\", void 0);\n __decorate([Property('imageUrl')], Fields.prototype, \"imageUrl\", void 0);\n __decorate([Property('parentValue')], Fields.prototype, \"parentValue\", void 0);\n __decorate([Property(null)], Fields.prototype, \"query\", void 0);\n __decorate([Property('selectable')], Fields.prototype, \"selectable\", void 0);\n __decorate([Property('selected')], Fields.prototype, \"selected\", void 0);\n __decorate([Property(null)], Fields.prototype, \"tableName\", void 0);\n __decorate([Property('text')], Fields.prototype, \"text\", void 0);\n __decorate([Property('tooltip')], Fields.prototype, \"tooltip\", void 0);\n __decorate([Property('value')], Fields.prototype, \"value\", void 0);\n return Fields;\n}(ChildProperty);\nexport { Fields };\nvar TreeSettings = /** @class */function (_super) {\n __extends(TreeSettings, _super);\n function TreeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property(false)], TreeSettings.prototype, \"autoCheck\", void 0);\n __decorate([Property(true)], TreeSettings.prototype, \"checkDisabledChildren\", void 0);\n __decorate([Property('Auto')], TreeSettings.prototype, \"expandOn\", void 0);\n __decorate([Property(false)], TreeSettings.prototype, \"loadOnDemand\", void 0);\n return TreeSettings;\n}(ChildProperty);\nexport { TreeSettings };\n/**\n * The Dropdown Tree control allows you to select single or multiple values from hierarchical data in a tree-like structure.\n * It has several out-of-the-box features, such as data binding, check boxes, templates, filter,\n * UI customization, accessibility, and preselected values.\n * ```html\n * <input type=\"text\" id=\"tree\"></input>\n * ```\n * ```typescript\n * let ddtObj: DropDownTree = new DropDownTree();\n * ddtObj.appendTo(\"#tree\");\n * ```\n */\nvar DropDownTree = /** @class */function (_super) {\n __extends(DropDownTree, _super);\n function DropDownTree(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.filterTimer = null;\n _this.isFilteredData = false;\n _this.isFilterRestore = false;\n _this.selectedData = [];\n _this.filterDelayTime = 300;\n _this.isClicked = false;\n _this.documentClickContext = _this.onDocumentClick.bind(_this);\n // Specifies if the checkAll method has been called\n _this.isCheckAllCalled = false;\n _this.isFromFilterChange = false;\n return _this;\n }\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string}\n * @hidden\n */\n DropDownTree.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n DropDownTree.prototype.getLocaleName = function () {\n return 'drop-down-tree';\n };\n /**\n * Initialize the event handler.\n *\n * @returns {void}\n * @private\n */\n DropDownTree.prototype.preRender = function () {\n this.inputFocus = false;\n this.isPopupOpen = false;\n this.isFirstRender = true;\n this.isInitialized = false;\n this.currentText = null;\n this.currentValue = null;\n this.oldValue = null;\n this.removeValue = false;\n this.selectedText = [];\n this.treeItems = [];\n this.dataValue = null;\n this.isNodeSelected = false;\n this.isDynamicChange = false;\n this.clearIconWidth = 0;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE;\n this.customTemplateId = \"\" + this.element.id + CUSTOMTEMPLATE;\n this.keyConfigs = {\n escape: 'escape',\n altUp: 'alt+uparrow',\n altDown: 'alt+downarrow',\n tab: 'tab',\n shiftTab: 'shift+tab',\n end: 'end',\n enter: 'enter',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlDown: 'ctrl+downarrow',\n ctrlUp: 'ctrl+uparrow',\n ctrlEnter: 'ctrl+enter',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftEnter: 'shift+enter',\n shiftHome: 'shift+home',\n shiftEnd: 'shift+end',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n csEnter: 'ctrl+shift+enter',\n csHome: 'ctrl+shift+home',\n csEnd: 'ctrl+shift+end',\n space: 'space',\n ctrlA: 'ctrl+A'\n };\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownTree.prototype.render = function () {\n var isTree = select('#' + this.element.id + '_tree', document);\n if (isTree) {\n var popupDiv = select('#' + this.element.id + '_options', document);\n detach(popupDiv ? popupDiv : isTree.parentElement);\n }\n if (this.element.tagName === 'INPUT') {\n this.inputEle = this.element;\n if (isNOU(this.inputEle.getAttribute('role'))) {\n this.inputEle.setAttribute('aria-expanded', 'false');\n this.inputEle.setAttribute('role', 'combobox');\n this.inputEle.setAttribute('aria-haspopup', 'tree');\n this.inputEle.setAttribute('aria-controls', this.element.id + '_options');\n }\n if (isNOU(this.inputEle.getAttribute('type'))) {\n this.inputEle.setAttribute('type', 'text');\n }\n } else {\n if (!isNOU(this.element.id)) {\n this.inputEle = this.createElement('input', {\n attrs: {\n role: 'textbox',\n type: 'text',\n id: this.element.id + '_textbox'\n }\n });\n } else {\n this.inputEle = this.createElement('input', {\n attrs: {\n role: 'textbox',\n type: 'text'\n }\n });\n }\n this.element.parentElement.insertBefore(this.inputEle, this.element);\n }\n this.inputObj = Input.createInput({\n element: this.inputEle,\n floatLabelType: this.floatLabelType,\n buttons: this.showDropDownIcon ? [DROPDOWNICON] : null,\n properties: {\n readonly: true,\n placeholder: this.placeholder,\n enabled: this.enabled,\n cssClass: this.cssClass,\n enableRtl: this.enableRtl\n }\n }, this.createElement);\n this.inputWrapper = this.inputObj.container;\n if (!this.inputWrapper.classList.contains(INPUTGROUP)) {\n this.inputWrapper.classList.add(INPUTGROUP);\n }\n if (this.showDropDownIcon) {\n this.inputWrapper.classList.add(SHOW_DD_ICON);\n }\n if (this.element.tagName === this.getDirective()) {\n this.element.appendChild(this.inputWrapper);\n }\n this.createHiddenElement();\n this.createClearIcon();\n this.inputWrapper.classList.add(DROPDOWNTREE);\n this.setElementWidth(this.width);\n this.updateDataAttribute();\n this.setHTMLAttributes();\n this.setAttributes();\n this.popupDiv = this.createElement('div', {\n className: CONTENT\n });\n this.popupDiv.classList.add(DROPDOWN);\n this.tree = this.createElement('div', {\n id: this.element.id + '_tree'\n });\n this.popupDiv.appendChild(this.tree);\n if (!this.destroyPopupOnHide) {\n document.body.appendChild(this.popupDiv);\n }\n this.wireTreeEvents();\n addClass([this.popupDiv], DDTHIDEICON);\n this.renderTree();\n this.isRemoteData = this.fields.dataSource instanceof DataManager;\n if (this.allowMultiSelection || this.showCheckBox) {\n if (this.mode !== 'Delimiter') {\n this.createChip();\n }\n if (!this.wrapText && this.mode !== 'Custom') {\n this.overFlowWrapper = this.createElement('span', {\n className: OVERFLOW_VIEW + ' ' + HIDEICON\n });\n this.inputWrapper.insertBefore(this.overFlowWrapper, this.hiddenElement);\n if (this.mode !== 'Box') {\n addClass([this.overFlowWrapper], SHOW_TEXT);\n }\n }\n }\n if (!this.isRemoteData) {\n this.setTreeValue();\n this.setTreeText();\n this.updateHiddenValue();\n this.setSelectedValue();\n if (!this.wrapText) {\n this.updateView();\n }\n }\n this.wireEvents();\n var firstUl = select('.' + PARENTITEM, this.treeObj.element);\n if (firstUl && firstUl.getAttribute('aria-multiselectable')) {\n firstUl.removeAttribute('aria-multiselectable');\n }\n this.setOldValue();\n if (!this.isRemoteData) {\n this.isInitialized = true;\n }\n this.hasTemplate = this.itemTemplate || this.headerTemplate || this.footerTemplate || this.actionFailureTemplate || this.noRecordsTemplate || this.customTemplate || this.valueTemplate;\n this.renderComplete();\n };\n DropDownTree.prototype.hideCheckAll = function (flag) {\n var checkAllEle = !isNOU(this.popupEle) ? this.popupEle.querySelector('.' + CHECKALLPARENT) : null;\n if (!isNOU(checkAllEle)) {\n if (flag && !checkAllEle.classList.contains(CHECKALLHIDE)) {\n addClass([checkAllEle], CHECKALLHIDE);\n } else if (!flag && checkAllEle.classList.contains(CHECKALLHIDE)) {\n removeClass([checkAllEle], CHECKALLHIDE);\n }\n }\n };\n DropDownTree.prototype.renderFilter = function () {\n this.filterContainer = this.createElement('div', {\n id: this.element.id + '_filter_wrap',\n className: FILTERWRAP\n });\n var filterInput = this.createElement('input', {\n id: this.element.id + '_filter',\n attrs: {\n autocomplete: 'off',\n 'aria-label': this.filterBarPlaceholder\n }\n });\n this.filterContainer.appendChild(filterInput);\n prepend([this.filterContainer], this.popupEle);\n this.filterObj = new TextBox({\n value: '',\n showClearButton: true,\n placeholder: this.filterBarPlaceholder,\n input: this.filterChangeHandler.bind(this)\n });\n this.filterObj.appendTo('#' + this.element.id + '_filter');\n this.keyboardModule = new KeyboardEvents(this.filterObj.element, {\n keyAction: this.filterKeyAction.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n DropDownTree.prototype.filterKeyAction = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n var focusedElement;\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'altUp':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'shiftTab':\n addClass([_this.inputWrapper], [INPUTFOCUS]);\n break;\n case 'moveDown':\n e.preventDefault();\n _this.filterObj.element.blur();\n focusedElement = _this.treeObj.element.querySelector('li');\n if (focusedElement) {\n focusedElement.focus();\n }\n break;\n }\n }\n });\n };\n DropDownTree.prototype.filterChangeHandler = function (args) {\n var _this = this;\n if (!isNOU(args.value)) {\n window.clearTimeout(this.filterTimer);\n this.filterTimer = window.setTimeout(function () {\n _this.filterHandler(args.value, args.event);\n }, this.filterDelayTime);\n }\n };\n DropDownTree.prototype.isChildObject = function () {\n if (typeof this.treeObj.fields.child === 'object') {\n return true;\n } else {\n return false;\n }\n };\n DropDownTree.prototype.filterHandler = function (value, event) {\n var _this = this;\n this.isFromFilterChange = true;\n if (!this.isFilteredData) {\n if (this.isRemoteData) {\n this.treeObj.expandedNodes = [];\n }\n this.treeData = this.treeObj.getTreeData();\n }\n var filterFields = this.cloneFields(this.fields);\n var args = {\n cancel: false,\n preventDefaultAction: false,\n event: event,\n text: value.trim(),\n fields: filterFields\n };\n this.trigger('filtering', args, function (args) {\n if (!args.cancel) {\n var flag = false;\n var fields = void 0;\n _this.isFilteredData = true;\n if (args.text === '') {\n _this.isFilteredData = false;\n _this.isFilterRestore = true;\n fields = _this.cloneFields(_this.fields);\n _this.treeObj.element.classList.remove('e-filtering');\n } else if (args.preventDefaultAction) {\n fields = args.fields;\n _this.treeObj.element.classList.add('e-filtering');\n } else {\n if (_this.treeDataType === 1) {\n fields = _this.selfReferencefilter(args.text, args.fields);\n } else {\n if (_this.fields.dataSource instanceof DataManager) {\n fields = _this.remoteDataFilter(args.text, args.fields);\n fields.child = _this.fields.child;\n _this.treeObj.fields = _this.getTreeFields(args.fields);\n _this.treeObj.dataBind();\n flag = true;\n } else {\n fields = _this.nestedFilter(args.text, args.fields);\n }\n }\n _this.treeObj.element.classList.add('e-filtering');\n }\n _this.hideCheckAll(_this.isFilteredData);\n if (flag) {\n return;\n }\n if (_this.isRemoteData) {\n if (_this.isChildObject()) {\n fields.child = _this.fields.child;\n } else {\n fields = args.fields;\n }\n }\n _this.treeObj.fields = _this.getTreeFields(fields);\n _this.treeObj.dataBind();\n if (_this.popupObj) {\n _this.popupObj.refreshPosition();\n }\n if (_this.hasTemplate && _this.portals && _this.treeObj.portals) {\n for (var i = 0; i < _this.treeObj.portals.length; i++) {\n if (_this.portals.indexOf(_this.treeObj.portals[i]) === -1) {\n _this.portals.push(_this.treeObj.portals[i]);\n }\n }\n if (_this.isReact) {\n _this.renderReactTemplates();\n }\n }\n }\n });\n };\n DropDownTree.prototype.remoteDataFilter = function (value, filteredFields) {\n var _this = this;\n filteredFields.dataSource = this.treeData.map(function (item) {\n return _this.remoteChildFilter(value, item);\n }).filter(function (filteredChild) {\n return !isNOU(filteredChild);\n });\n return filteredFields;\n };\n DropDownTree.prototype.remoteChildFilter = function (value, node, isChild, isChildFiltering) {\n var children = this.isChildObject() ? node['child'] : node[this.fields.child];\n if (isNOU(children)) {\n return this.isMatchedNode(value, node, isChild, isChildFiltering) ? node : null;\n }\n var matchedChildren = [];\n for (var i = 0; i < children.length; i++) {\n var filteredChild = this.remoteChildFilter(value, children[i], true, true);\n if (!isNOU(filteredChild)) {\n matchedChildren.push(filteredChild);\n }\n }\n var filteredItems = Object.assign({}, node);\n isChildFiltering = false;\n if (matchedChildren.length !== 0) {\n filteredItems.child = matchedChildren;\n } else {\n filteredItems.child = null;\n filteredItems = this.isMatchedNode(value, filteredItems) ? filteredItems : null;\n }\n return filteredItems;\n };\n DropDownTree.prototype.nestedFilter = function (value, filteredFields) {\n var matchedDataSource = [];\n for (var i = 0; i < this.treeData.length; i++) {\n var filteredChild = this.nestedChildFilter(value, this.treeData[parseInt(i.toString(), 10)]);\n if (!isNOU(filteredChild)) {\n matchedDataSource.push(filteredChild);\n }\n }\n filteredFields.dataSource = matchedDataSource;\n return filteredFields;\n };\n DropDownTree.prototype.nestedChildFilter = function (value, node) {\n var children = node[this.fields.child];\n if (isNOU(children)) {\n return this.isMatchedNode(value, node) ? node : null;\n } else {\n var matchedChildren = [];\n for (var i = 0; i < children.length; i++) {\n var filteredChild = this.nestedChildFilter(value, children[parseInt(i.toString(), 10)]);\n if (!isNOU(filteredChild)) {\n matchedChildren.push(filteredChild);\n }\n }\n var filteredItems = Object.assign({}, node);\n if (matchedChildren.length !== 0) {\n filteredItems[this.fields.child] = matchedChildren;\n return filteredItems;\n } else {\n filteredItems[this.fields.child] = null;\n return this.isMatchedNode(value, filteredItems) ? filteredItems : null;\n }\n }\n };\n DropDownTree.prototype.selfReferencefilter = function (value, filteredFields) {\n var matchedData = [];\n var matchedDataSource = [];\n for (var i = 0; i < this.treeData.length; i++) {\n if (this.isMatchedNode(value, this.treeData[i])) {\n matchedData.push(this.treeData[i]);\n }\n }\n for (var i = 0; i < matchedData.length; i++) {\n if (matchedDataSource.indexOf(matchedData[i]) === -1) {\n matchedDataSource.push(matchedData[i]);\n var parentId = matchedData[parseInt(i.toString(), 10)][this.fields.parentValue];\n while (!isNOU(parentId)) {\n var parent_1 = null;\n for (var j = 0; j < this.treeData.length; j++) {\n var value_1 = this.treeData[parseInt(j.toString(), 10)][this.fields.value];\n if (!isNOU(value_1) && value_1 === parentId) {\n parent_1 = this.treeData[j];\n break;\n }\n }\n if (!isNOU(parent_1) && matchedDataSource.indexOf(parent_1) === -1) {\n matchedDataSource.push(parent_1);\n parentId = parent_1[this.fields.parentValue];\n } else {\n break;\n }\n }\n }\n }\n filteredFields.dataSource = matchedDataSource;\n return filteredFields;\n };\n DropDownTree.prototype.isMatchedNode = function (value, node, isChild, isChildFiltering) {\n var checkValue;\n var isObjectValue = isChild && isChildFiltering && this.isChildObject();\n checkValue = isObjectValue ? node[this.fields.child.text] : node[this.fields.text];\n if (!checkValue && !isNOU(this.fields.child.text)) {\n var tempChild = this.fields.child;\n while (!node[tempChild.text]) {\n tempChild = tempChild.child;\n }\n checkValue = node[tempChild.text];\n }\n if (this.ignoreCase) {\n checkValue = checkValue.toLowerCase();\n value = value.toLowerCase();\n }\n if (this.ignoreAccent) {\n checkValue = DataUtil.ignoreDiacritics(checkValue);\n value = DataUtil.ignoreDiacritics(value);\n }\n if (this.filterType === 'StartsWith') {\n return checkValue.slice(0, value.length) === value;\n } else if (this.filterType === 'EndsWith') {\n return checkValue.slice(-value.length) === value;\n } else {\n return checkValue.indexOf(value) !== -1;\n }\n };\n /* To wire events for the dropdown tree */\n DropDownTree.prototype.wireEvents = function () {\n EventHandler.add(this.inputWrapper, 'mouseup', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper, 'blur', this.focusOut, this);\n EventHandler.add(this.inputWrapper, 'mousemove', this.mouseIn, this);\n EventHandler.add(this.inputWrapper, 'mouseout', this.onMouseLeave, this);\n EventHandler.add(this.overAllClear, 'mousedown', this.clearAll, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n this.keyboardModule = new KeyboardEvents(this.inputWrapper, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n DropDownTree.prototype.wireTreeEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.tree, {\n keyAction: this.treeAction.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n DropDownTree.prototype.wireCheckAllWrapperEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.checkAllParent, {\n keyAction: this.checkAllAction.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n /* To unwire events for the dropdown tree */\n DropDownTree.prototype.unWireEvents = function () {\n EventHandler.remove(this.inputWrapper, 'mouseup', this.dropDownClick);\n EventHandler.remove(this.inputWrapper, 'focus', this.focusIn);\n EventHandler.remove(this.inputWrapper, 'blur', this.focusOut);\n EventHandler.remove(this.inputWrapper, 'mousemove', this.mouseIn);\n EventHandler.remove(this.inputWrapper, 'mouseout', this.onMouseLeave);\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n EventHandler.remove(window, 'resize', this.windowResize);\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n this.keyboardModule.destroy();\n if (this.showSelectAll && this.checkAllParent) {\n EventHandler.remove(this.checkAllParent, 'mouseup', this.clickHandler);\n }\n document.removeEventListener('mousedown', this.documentClickContext);\n };\n /* Trigger when the dropdown is clicked */\n DropDownTree.prototype.dropDownClick = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isClearButtonClick) {\n this.isClearButtonClick = false;\n return;\n }\n if (this.isPopupOpen) {\n this.hidePopup();\n } else {\n this.focusIn(e);\n this.renderPopup();\n }\n this.showOverAllClear();\n };\n DropDownTree.prototype.mouseIn = function () {\n if (this.enabled || !this.readonly) {\n this.showOverAllClear();\n }\n };\n DropDownTree.prototype.onMouseLeave = function () {\n if (!this.inputFocus) {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n };\n DropDownTree.prototype.getDirective = function () {\n return 'EJS-DROPDOWNTREE';\n };\n DropDownTree.prototype.focusOut = function (e) {\n if (!this.enabled || this.readonly || !this.inputFocus) {\n return;\n }\n if ((Browser.isIE || Browser.info.name === 'edge') && e.target === this.inputWrapper) {\n return;\n }\n var target = e.relatedTarget;\n if (target !== this.inputEle && isNOU(target) && (e.target !== this.inputWrapper || !this.isPopupOpen)) {\n this.onFocusOut(e);\n }\n };\n DropDownTree.prototype.onFocusOut = function (event) {\n this.inputFocus = false;\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n if (this.isClearButtonClick) {\n this.isClearButtonClick = false;\n }\n if (this.showClearButton) {\n this.clearIconWidth = select('.e-clear-icon', this.inputWrapper).offsetWidth;\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n if (this.allowMultiSelection || this.showCheckBox) {\n var isValue = this.value ? this.value.length ? true : false : false;\n if (this.mode !== 'Delimiter' && this.mode !== 'Custom') {\n if (this.chipWrapper && this.mode === 'Default') {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n }\n if (isValue && this.mode !== 'Custom') {\n this.showOrHideValueTemplate(true);\n }\n if (!this.wrapText && isValue) {\n this.updateView();\n }\n }\n if (this.changeOnBlur) {\n this.triggerChangeEvent(event);\n }\n this.removeValue = false;\n this.setOldValue();\n this.trigger('blur');\n };\n DropDownTree.prototype.updateView = function () {\n if (!this.showCheckBox && !this.allowMultiSelection || this.mode === 'Custom' || this.inputFocus) {\n return;\n }\n if (this.mode !== 'Box') {\n addClass([this.inputWrapper, this.overFlowWrapper], SHOW_TEXT);\n } else {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n if (this.value && this.value.length !== 0) {\n if (this.inputWrapper.contains(this.chipWrapper)) {\n addClass([this.chipWrapper], HIDEICON);\n }\n addClass([this.inputEle], CHIP_INPUT);\n this.updateOverFlowView();\n }\n this.ensurePlaceHolder();\n };\n DropDownTree.prototype.triggerChangeEvent = function (event) {\n var isEqual = this.ddtCompareValues(this.oldValue, this.value);\n if ((!isEqual || this.isChipDelete) && !this.removeValue) {\n var eventArgs = {\n e: event,\n oldValue: this.oldValue,\n value: this.value,\n isInteracted: event ? true : false,\n element: this.element\n };\n this.trigger('change', eventArgs);\n this.setOldValue();\n }\n };\n DropDownTree.prototype.ddtCompareValues = function (oldValue, newValue) {\n if (oldValue === null || newValue === null) {\n var isValid = oldValue === null ? newValue === oldValue ? true : false : oldValue.length === 0 ? newValue === oldValue : false;\n return isValid;\n } else if (oldValue.length !== newValue.length) {\n return false;\n }\n for (var i = 0; i < oldValue.length; i++) {\n if (oldValue[i] !== newValue[i]) {\n return false;\n }\n }\n return true;\n };\n DropDownTree.prototype.focusIn = function (e) {\n if (!this.enabled || this.readonly || this.inputFocus) {\n return;\n }\n this.showOverAllClear();\n this.inputFocus = true;\n addClass([this.inputWrapper], [INPUTFOCUS]);\n if (this.allowMultiSelection || this.showCheckBox) {\n if (this.mode !== 'Delimiter' && this.inputFocus) {\n if (this.chipWrapper && this.value && this.value.length !== 0) {\n removeClass([this.chipWrapper], HIDEICON);\n addClass([this.inputEle], CHIP_INPUT);\n this.showOrHideValueTemplate(false, true);\n }\n addClass([this.inputWrapper], SHOW_CHIP);\n if (this.popupObj) {\n this.popupObj.refreshPosition();\n }\n }\n if (!this.wrapText && this.mode !== 'Custom') {\n if (this.inputWrapper.contains(this.overFlowWrapper)) {\n addClass([this.overFlowWrapper], HIDEICON);\n }\n if (this.mode === 'Delimiter') {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n this.showOrHideValueTemplate(true);\n } else {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n removeClass([this.inputWrapper], SHOW_TEXT);\n this.ensurePlaceHolder();\n }\n }\n var args = {\n isInteracted: e ? true : false,\n event: e\n };\n this.trigger('focus', args);\n };\n DropDownTree.prototype.treeAction = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n _this.inputWrapper.focus();\n e.preventDefault();\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'tab':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n if (!_this.showCheckBox) {\n _this.isValueChange = true;\n _this.keyEventArgs = e;\n }\n break;\n case 'space':\n _this.isValueChange = true;\n _this.keyEventArgs = e;\n break;\n case 'ctrlA':\n if (_this.allowMultiSelection) {\n _this.selectAll(true);\n }\n break;\n case 'moveRight':\n case 'moveLeft':\n case 'shiftDown':\n case 'moveDown':\n case 'ctrlDown':\n case 'csDown':\n case 'shiftUp':\n case 'moveUp':\n case 'ctrlUp':\n case 'csUp':\n case 'home':\n case 'shiftHome':\n case 'ctrlHome':\n case 'csHome':\n case 'end':\n case 'shiftEnd':\n case 'ctrlEnd':\n case 'csEnd':\n }\n } else {\n e.stopImmediatePropagation();\n }\n });\n };\n DropDownTree.prototype.keyActionHandler = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'shiftTab':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n if (_this.inputFocus) {\n _this.onFocusOut();\n }\n break;\n case 'altDown':\n if (!_this.isPopupOpen) {\n _this.showPopup();\n e.preventDefault();\n }\n break;\n case 'moveDown':\n if (_this.showSelectAll && _this.showCheckBox) {\n _this.checkAllParent.focus();\n }\n break;\n case 'tab':\n if (!_this.isPopupOpen && _this.inputFocus) {\n _this.onFocusOut();\n }\n break;\n }\n }\n });\n };\n DropDownTree.prototype.checkAllAction = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n var focusedElement;\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n _this.clickHandler(e);\n break;\n case 'moveDown':\n e.preventDefault();\n focusedElement = _this.treeObj.element.querySelector('li[tabindex=\"0\"]') || _this.treeObj.element.querySelector('li');\n focusedElement.focus();\n addClass([focusedElement], ['e-node-focus']);\n break;\n }\n }\n });\n };\n DropDownTree.prototype.windowResize = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({\n width: this.setWidth()\n });\n this.popupObj.refreshPosition();\n }\n };\n DropDownTree.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement && e.target === formElement) {\n this.isDynamicChange = true;\n this.setProperties({\n value: null\n }, true);\n this.resetValue(true);\n this.isDynamicChange = false;\n }\n };\n DropDownTree.prototype.getAriaAttributes = function () {\n return {};\n };\n DropDownTree.prototype.updateOverFlowView = function () {\n this.overFlowWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n removeClass([this.overFlowWrapper], HIDEICON);\n if (this.value && this.value.length) {\n var data = '';\n var overAllContainer = void 0;\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 this.overFlowWrapper.innerHTML = '';\n var l10nLocale = {\n overflowCountTemplate: '+${count} more..',\n totalCountTemplate: '${count} selected'\n };\n this.l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n var remainContent = this.l10n.getConstant('overflowCountTemplate');\n var totalContent = this.l10n.getConstant('totalCountTemplate');\n var remainElement = this.createElement('span', {\n className: REMAIN_WRAPPER\n });\n this.overFlowWrapper.appendChild(remainElement);\n remainElement.innerText = remainContent.replace('${count}', this.value.length.toString());\n var remainSize = remainElement.offsetWidth;\n remove(remainElement);\n if (this.showDropDownIcon) {\n downIconWidth = select('.' + DDTICON, this.inputWrapper).offsetWidth;\n }\n if (!isNOU(this.value)) {\n if (this.mode !== 'Box') {\n if (this.valueTemplate) {\n remaining = this.updateChipAndValueTemplate(false, downIconWidth, remainSize);\n this.checkRemainingTemplate(remaining, remainElement, remainContent, totalContent);\n this.updateDelimMode();\n return;\n }\n for (var index = 0; !isNOU(this.value[index]); index++) {\n data += index === 0 ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.overFlowWrapper.innerHTML;\n if (this.enableHtmlSanitizer) {\n this.overFlowWrapper.innerText = SanitizeHtmlHelper.sanitize(data);\n } else {\n this.overFlowWrapper.innerHTML = data;\n }\n wrapperleng = this.overFlowWrapper.offsetWidth;\n overAllContainer = this.inputWrapper.offsetWidth;\n if (wrapperleng + downIconWidth + this.clearIconWidth > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.overFlowWrapper.innerHTML = temp;\n remaining = this.value.length - index;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n while (wrapperleng + remainSize + downIconWidth + this.clearIconWidth >= overAllContainer && wrapperleng !== 0 && this.overFlowWrapper.innerHTML !== '') {\n var textArr = this.overFlowWrapper.innerHTML.split(this.delimiterChar);\n textArr.pop();\n this.overFlowWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining++;\n wrapperleng = this.overFlowWrapper.offsetWidth;\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 } else {\n remaining = this.updateChipAndValueTemplate(true, downIconWidth, remainSize);\n }\n }\n this.checkRemainingTemplate(remaining, remainElement, remainContent, totalContent);\n } else {\n this.overFlowWrapper.innerHTML = '';\n addClass([this.overFlowWrapper], HIDEICON);\n }\n this.updateDelimMode();\n };\n DropDownTree.prototype.checkRemainingTemplate = function (remaining, remainElement, remainContent, totalContent) {\n if (remaining > 0) {\n this.overFlowWrapper.appendChild(this.updateRemainTemplate(remainElement, remaining, remainContent, totalContent));\n }\n if (this.mode === 'Box' && !this.overFlowWrapper.classList.contains(TOTAL_COUNT_WRAPPER)) {\n addClass([remainElement], REMAIN_COUNT);\n }\n };\n DropDownTree.prototype.updateChipAndValueTemplate = function (isChip, downIconWidth, remainSize) {\n if (downIconWidth === void 0) {\n downIconWidth = 0;\n }\n var currentHtmlContent = '';\n var overAllContainer;\n var previousHtmlContent;\n var previousData;\n var index = 1;\n var wrapperLength;\n var remainingItemsCount;\n addClass([isChip ? this.chipWrapper : this.valueTemplateContainer], HIDEICON);\n var clonedElement = (isChip ? this.chipWrapper : this.valueTemplateContainer).cloneNode(true);\n var valueElements = isChip ? selectAll('.' + CHIP, clonedElement) : Array.prototype.slice.call(clonedElement.children);\n for (var i = 0; i < valueElements.length; i++) {\n previousHtmlContent = this.overFlowWrapper.innerHTML;\n this.overFlowWrapper.appendChild(valueElements[i]);\n currentHtmlContent = this.overFlowWrapper.innerHTML;\n wrapperLength = this.overFlowWrapper.offsetWidth;\n overAllContainer = this.inputWrapper.offsetWidth;\n if (wrapperLength + downIconWidth + this.clearIconWidth > overAllContainer) {\n if (previousData !== undefined && previousData !== '') {\n previousHtmlContent = previousData;\n i = index + 1;\n }\n this.overFlowWrapper.innerHTML = previousHtmlContent;\n remainingItemsCount = this.value.length - i;\n wrapperLength = this.overFlowWrapper.offsetWidth;\n while (wrapperLength + remainSize + downIconWidth + this.clearIconWidth >= overAllContainer && wrapperLength !== 0 && this.overFlowWrapper.innerHTML !== '') {\n this.overFlowWrapper.removeChild(this.overFlowWrapper.lastChild);\n remainingItemsCount++;\n wrapperLength = this.overFlowWrapper.offsetWidth;\n }\n break;\n } else if (wrapperLength + remainSize + downIconWidth + this.clearIconWidth <= overAllContainer) {\n previousData = currentHtmlContent;\n index = i;\n } else if (i === 0) {\n previousData = '';\n index = -1;\n }\n }\n return remainingItemsCount;\n };\n DropDownTree.prototype.updateRemainTemplate = function (remainElement, remaining, remainContent, totalContent) {\n if (this.overFlowWrapper.firstChild && this.overFlowWrapper.firstChild.nodeType === 3 && this.overFlowWrapper.firstChild.nodeValue === '') {\n this.overFlowWrapper.removeChild(this.overFlowWrapper.firstChild);\n }\n remainElement.innerHTML = '';\n remainElement.innerText = this.overFlowWrapper.firstChild && (this.overFlowWrapper.firstChild.nodeType === 3 || this.mode === 'Box' || this.valueTemplateContainer) ? remainContent.replace('${count}', remaining.toString()) : totalContent.replace('${count}', remaining.toString());\n if (this.overFlowWrapper.firstChild && (this.overFlowWrapper.firstChild.nodeType === 3 || this.mode === 'Box')) {\n removeClass([this.overFlowWrapper], TOTAL_COUNT_WRAPPER);\n } else {\n addClass([this.overFlowWrapper], TOTAL_COUNT_WRAPPER);\n removeClass([this.overFlowWrapper], REMAIN_COUNT);\n }\n return remainElement;\n };\n DropDownTree.prototype.getOverflowVal = function (index) {\n var selectedData = this.getSelectedData(this.value[parseInt(index.toString(), 10)]);\n return getValue(this.treeSettings.loadOnDemand ? this.fields.text : 'text', selectedData);\n };\n DropDownTree.prototype.updateDelimMode = function () {\n if (this.mode !== 'Box') {\n if (select('.' + REMAIN_WRAPPER, this.overFlowWrapper) && !this.overFlowWrapper.classList.contains(TOTAL_COUNT_WRAPPER)) {\n addClass([this.overFlowWrapper], REMAIN_COUNT);\n addClass([this.overFlowWrapper], SHOW_TEXT);\n } else {\n this.overFlowWrapper.classList.remove(REMAIN_COUNT);\n removeClass([this.overFlowWrapper], REMAIN_COUNT);\n }\n } else if (select('.' + REMAIN_WRAPPER, this.overFlowWrapper)) {\n this.overFlowWrapper.classList.remove(REMAIN_COUNT);\n }\n };\n DropDownTree.prototype.createHiddenElement = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n this.hiddenElement = this.createElement('select', {\n attrs: {\n 'aria-hidden': 'true',\n 'class': HIDDENELEMENT,\n 'tabindex': '-1',\n 'multiple': '',\n 'aria-label': this.getModuleName()\n }\n });\n } else {\n this.hiddenElement = this.createElement('select', {\n attrs: {\n 'aria-hidden': 'true',\n 'tabindex': '-1',\n 'class': HIDDENELEMENT,\n 'aria-label': this.getModuleName()\n }\n });\n }\n prepend([this.hiddenElement], this.inputWrapper);\n this.validationAttribute();\n };\n DropDownTree.prototype.createClearIcon = function () {\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS\n });\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n if (this.showClearButton) {\n this.inputWrapper.insertBefore(this.overAllClear, this.inputObj.buttons[0]);\n }\n };\n DropDownTree.prototype.validationAttribute = function () {\n var name = this.inputEle.getAttribute('name') ? this.inputEle.getAttribute('name') : this.inputEle.getAttribute('id');\n this.hiddenElement.setAttribute('name', name);\n this.inputEle.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n var attr = this.inputEle.getAttribute(attributes[i]);\n if (attr) {\n this.hiddenElement.setAttribute(attributes[i], attr);\n this.inputEle.removeAttribute(attributes[i]);\n }\n }\n };\n DropDownTree.prototype.createChip = function () {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.chipWrapper = this.createElement('span', {\n className: CHIP_WRAPPER\n });\n this.chipCollection = this.createElement('span', {\n className: CHIP_COLLECTION\n });\n this.chipWrapper.appendChild(this.chipCollection);\n this.inputWrapper.insertBefore(this.chipWrapper, this.hiddenElement);\n addClass([this.inputWrapper], SHOW_CHIP);\n var isValid = this.getValidMode();\n if (isValid && this.value !== null && this.value && this.value.length !== 0) {\n addClass([this.inputEle], CHIP_INPUT);\n } else if (this.value === null || this.value && this.value.length === 0 || this.checkWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n }\n }\n };\n DropDownTree.prototype.getValidMode = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n return this.mode === 'Box' ? true : this.mode === 'Default' && this.inputFocus ? true : false;\n } else {\n return false;\n }\n };\n DropDownTree.prototype.createSelectAllWrapper = function () {\n this.checkAllParent = this.createElement('div', {\n className: CHECKALLPARENT,\n attrs: {\n 'tabindex': '0'\n }\n });\n this.selectAllSpan = this.createElement('span', {\n className: ALLTEXT\n });\n this.selectAllSpan.textContent = '';\n var ele = closest(this.element, '.' + BIGGER);\n var touchClass = isNOU(ele) ? '' : SMALL;\n this.checkBoxElement = createCheckBox(this.createElement, true, {\n cssClass: touchClass\n });\n this.checkBoxElement.setAttribute('role', 'checkbox');\n this.checkAllParent.appendChild(this.checkBoxElement);\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n EventHandler.add(this.checkAllParent, 'mouseup', this.clickHandler, this);\n this.wireCheckAllWrapperEvents();\n };\n DropDownTree.prototype.clickHandler = function (e) {\n var target;\n if (e.currentTarget && e.currentTarget.classList.contains(CHECKALLPARENT)) {\n target = e.currentTarget.firstElementChild.lastElementChild;\n } else {\n target = e.target;\n }\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNOU(this.checkWrapper)) {\n this.isClicked = true;\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n this.changeState(this.checkWrapper, checkElement.classList.contains(CHECK) ? 'uncheck' : 'check', e);\n this.isClicked = false;\n }\n e.preventDefault();\n };\n DropDownTree.prototype.changeState = function (wrapper, state, e) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.add(CHECK);\n ariaState = 'true';\n if (!this.isReverseUpdate) {\n this.setOldValue();\n this.isCheckAllCalled = true;\n this.treeObj.checkAll();\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n }\n this.setLocale(true);\n } else if (state === 'uncheck' && frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(CHECK);\n ariaState = 'false';\n if (!this.isReverseUpdate) {\n this.treeObj.uncheckAll();\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n }\n this.setLocale(false);\n }\n this.setMultiSelect();\n this.ensurePlaceHolder();\n ariaState = state === 'check' ? 'true' : 'false';\n if (!isNOU(ariaState)) {\n wrapper.parentElement.setAttribute('aria-checked', ariaState);\n }\n };\n DropDownTree.prototype.setLocale = function (unSelect) {\n if (!this.selectAllSpan) {\n return;\n }\n if (this.selectAllText !== 'Select All' || this.unSelectAllText !== 'Unselect All') {\n var template = unSelect ? this.unSelectAllText : this.selectAllText;\n this.selectAllSpan.textContent = '';\n var compiledString = compile(template);\n var templateName = unSelect ? 'unSelectAllText' : 'selectAllText';\n for (var _i = 0, _a = compiledString({}, this, templateName, null, !this.isStringTemplate); _i < _a.length; _i++) {\n var item = _a[_i];\n this.selectAllSpan.textContent = item.textContent;\n }\n } else {\n this.selectAllSpan.textContent = unSelect ? this.unSelectAllText : this.selectAllText;\n }\n };\n DropDownTree.prototype.setAttributes = function () {\n this.inputEle.setAttribute('tabindex', '-1');\n this.inputEle.setAttribute('aria-label', this.getModuleName());\n var id = this.element.getAttribute('id');\n this.hiddenElement.id = id + '_hidden';\n this.inputWrapper.setAttribute('tabindex', this.inputWrapper.classList.contains('e-disabled') ? '-1' : '0');\n this.inputWrapper.setAttribute('aria-label', this.getModuleName());\n attributes(this.inputWrapper, this.getAriaAttributes());\n };\n DropDownTree.prototype.setHTMLAttributes = 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 if (htmlAttr === 'class') {\n this.inputWrapper.classList.add(this.htmlAttributes[\"\" + htmlAttr]);\n } else if (htmlAttr === 'disabled') {\n this.setProperties({\n enabled: false\n }, true);\n this.setEnable();\n } else if (htmlAttr === 'readonly') {\n this.setProperties({\n readonly: true\n }, true);\n this.dataBind();\n } else if (htmlAttr === 'style') {\n this.inputWrapper.style.cssText = this.htmlAttributes[\"\" + htmlAttr];\n } else {\n var defaultAttr = ['title', 'id', 'placeholder', 'aria-placeholder', 'role', 'autocorrect', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n } else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(this.htmlAttributes[\"\" + htmlAttr], this.inputEle);\n } else {\n this.inputEle.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n } else {\n this.inputEle.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n }\n }\n };\n DropDownTree.prototype.updateDataAttribute = function () {\n var value = this.htmlAttributes;\n var invalidAttr = ['class', 'style', 'id', 'type'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 && !(this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({\n htmlAttributes: attr\n }, true);\n };\n DropDownTree.prototype.showOverAllClear = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.overAllClear) {\n var isValue = this.value ? this.value.length ? true : false : false;\n if (isValue && this.showClearButton) {\n removeClass([this.overAllClear], HIDEICON);\n addClass([this.inputWrapper], SHOW_CLEAR);\n } else {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n }\n };\n DropDownTree.prototype.setTreeValue = function () {\n if (this.value !== null && this.value.length !== 0) {\n var data = void 0;\n if (this.showCheckBox || this.allowMultiSelection) {\n for (var i = this.value.length - 1; i >= 0; i--) {\n data = this.treeObj.getTreeData(this.value[i])[0];\n if (isNOU(data)) {\n this.value.splice(i, 1);\n }\n }\n if (this.value.length !== 0) {\n this.setValidValue();\n }\n } else {\n data = this.treeObj.getTreeData(this.value[0])[0];\n if (!isNOU(data)) {\n this.setProperties({\n text: data[this.fields.text]\n }, true);\n this.setValidValue();\n } else {\n this.setProperties({\n value: this.currentValue\n }, true);\n }\n }\n }\n };\n DropDownTree.prototype.setTreeText = function () {\n if (this.value !== null && !this.isInitialized) {\n return;\n }\n if (this.text !== null) {\n var data = void 0;\n var valArr = [];\n if (this.showCheckBox || this.allowMultiSelection) {\n var textArr = this.text.split(this.delimiterChar);\n for (var i = 0; i < textArr.length; i++) {\n data = this.getItems(textArr[i]);\n if (!isNOU(data)) {\n valArr.push(data[this.fields.value].toString());\n }\n }\n if (valArr.length !== 0) {\n this.setOldValue();\n this.setProperties({\n value: valArr\n }, true);\n this.setValidValue();\n } else {\n this.setProperties({\n text: this.currentText\n }, true);\n }\n } else {\n data = this.getItems(this.text);\n if (!isNOU(data)) {\n this.setOldValue();\n this.setProperties({\n value: [data[this.fields.value].toString()]\n }, true);\n this.setValidValue();\n } else {\n this.setProperties({\n text: this.currentText\n }, true);\n }\n }\n }\n };\n DropDownTree.prototype.setSelectedValue = function () {\n if (this.value !== null && !(this.value.length === 0)) {\n return;\n }\n if (!this.isInitialized) {\n this.setOldValue();\n if (this.treeObj.selectedNodes.length > 0 && !this.showCheckBox) {\n this.setProperties({\n value: this.treeObj.selectedNodes\n }, true);\n if (this.allowMultiSelection) {\n this.updateMode();\n }\n } else if (this.showCheckBox && this.treeObj.checkedNodes) {\n if (this.treeObj.checkedNodes.length > 0) {\n this.setProperties({\n value: this.treeObj.checkedNodes\n }, true);\n setValue('selectedNodes', [], this.treeObj);\n this.treeObj.dataBind();\n this.updateMode();\n }\n }\n this.updateSelectedValues();\n this.currentText = this.text;\n this.currentValue = this.value;\n }\n };\n DropDownTree.prototype.setValueTemplate = function () {\n var _this = this;\n if (this.valueTemplate) {\n var compiledString = this.initializeValueTemplate();\n this.getValueTemplateElement(this.value[0], compiledString);\n if (this.hasTemplate && this.portals) {\n if (this.treeObj.portals) {\n this.portals = this.portals.concat(this.treeObj.portals.filter(function (item) {\n return !_this.portals.includes(item);\n }));\n }\n if (this.isReact) {\n this.renderReactTemplates(this.reactCallBack);\n }\n }\n this.showOrHideValueTemplate(true);\n }\n };\n DropDownTree.prototype.getValueTemplateElement = function (value, compiledString) {\n var selectedData = this.getNodeData(value, this.isFilteredData ? this.treeData : this.treeItems);\n var templateElements = compiledString(selectedData, this, 'valueTemplate', this.element.id + \"valueTemplate\", this.isStringTemplate, undefined, this.valueTemplateContainer);\n if (templateElements) {\n templateElements = Array.prototype.slice.call(templateElements);\n append(templateElements, this.valueTemplateContainer);\n }\n };\n DropDownTree.prototype.setValidValue = function () {\n var _this = this;\n if (!this.showCheckBox && !this.allowMultiSelection) {\n Input.setValue(this.text, this.inputEle, this.floatLabelType);\n this.setValueTemplate();\n var id = this.value[0].toString();\n if (this.treeObj.selectedNodes[0] !== id) {\n setValue('selectedNodes', [id], this.treeObj);\n if (this.fields.dataSource instanceof DataManager) {\n this.updateSelectedValues();\n }\n }\n } else {\n if (this.showCheckBox) {\n var difference = this.value.length !== this.treeObj.checkedNodes.length || this.value.filter(function (e) {\n return _this.treeObj.checkedNodes.indexOf(e) === -1;\n }).length > 0;\n if (difference || this.treeSettings.autoCheck) {\n this.treeObj.checkedNodes = this.value.slice();\n this.treeObj.dataBind();\n this.setMultiSelect();\n }\n } else {\n this.treeObj.selectedNodes = this.value.slice();\n this.selectedText = [];\n this.updateSelectedValues();\n }\n this.treeObj.dataBind();\n }\n this.currentText = this.text;\n this.currentValue = this.value;\n if (!isNOU(this.value) && this.value.length > 0 && !isNOU(this.currentText)) {\n this.inputWrapper.setAttribute('aria-label', this.currentText.replace(/,/g, ', '));\n }\n if (this.isInitialized) {\n this.triggerChangeEvent();\n }\n };\n DropDownTree.prototype.getItems = function (givenText) {\n var data;\n if (this.treeDataType === 1) {\n for (var i = 0; i < this.treeItems.length; i++) {\n var text = getValue(this.fields.text, this.treeItems[parseInt(i.toString(), 10)]);\n if (!isNOU(this.treeItems[i]) && !isNOU(text) && text === givenText) {\n data = this.treeItems[i];\n break;\n }\n }\n } else {\n data = this.getNestedItems(this.treeItems, this.fields, givenText);\n }\n return data;\n };\n DropDownTree.prototype.getNestedItems = function (data, field, givenText) {\n var newData;\n for (var i = 0, objlen = data.length; i < objlen; i++) {\n var dataId = getValue(this.fields.text, data[parseInt(i.toString(), 10)]);\n if (data[i] && dataId && dataId.toString() === givenText) {\n return data[i];\n } else if (typeof field.child === 'string' && !isNOU(getValue(field.child, data[i]))) {\n var childData = getValue(field.child, data[parseInt(i.toString(), 10)]);\n newData = this.getNestedItems(childData, this.getChildType(field), givenText);\n if (newData !== undefined) {\n break;\n }\n } else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', data[i]))) {\n var child = 'child';\n newData = this.getNestedItems(getValue(child, data[parseInt(i.toString(), 10)]), this.getChildType(field), givenText);\n if (newData !== undefined) {\n break;\n }\n }\n }\n return newData;\n };\n DropDownTree.prototype.getChildType = function (mapper) {\n return typeof mapper.child === 'string' || isNOU(mapper.child) ? mapper : mapper.child;\n };\n /* To render the treeview */\n DropDownTree.prototype.renderTree = function () {\n this.treeObj = new TreeView({\n fields: this.getTreeFields(this.fields),\n enableRtl: this.enableRtl,\n nodeSelected: this.onNodeSelected.bind(this),\n nodeChecked: this.onNodeChecked.bind(this),\n nodeChecking: this.beforeCheck.bind(this),\n nodeExpanded: this.onNodeExpanded.bind(this),\n actionFailure: this.onActionFailure.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n dataBound: this.OnDataBound.bind(this),\n allowMultiSelection: this.allowMultiSelection,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n showCheckBox: this.showCheckBox,\n autoCheck: this.treeSettings.autoCheck,\n sortOrder: this.sortOrder,\n expandOn: this.treeSettings.expandOn,\n loadOnDemand: this.treeSettings.loadOnDemand,\n nodeSelecting: this.onBeforeSelect.bind(this),\n nodeTemplate: this.itemTemplate,\n checkDisabledChildren: this.treeSettings.checkDisabledChildren\n });\n this.treeObj.root = this.root ? this.root : this;\n this.treeObj.appendTo(this.tree);\n };\n /* To render the popup element */\n DropDownTree.prototype.renderPopup = function () {\n var _this = this;\n if (this.isFilteredData) {\n this.treeObj.element.classList.remove('e-filtering');\n this.filterObj.value = '';\n this.treeObj.fields = this.getTreeFields(this.fields);\n this.isFilterRestore = true;\n this.isFilteredData = false;\n this.hideCheckAll(false);\n }\n var isCancelled = false;\n var args = {\n cancel: false\n };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n addClass([_this.inputWrapper], [ICONANIMATION]);\n if (_this.isFirstRender) {\n _this.popupEle = _this.createElement('div', {\n id: _this.element.id + '_options',\n className: POPUP_CLASS + ' ' + (_this.cssClass != null ? _this.cssClass : '')\n });\n _this.popupEle.setAttribute('role', 'region');\n _this.popupEle.setAttribute('aria-label', _this.element.id);\n document.body.appendChild(_this.popupEle);\n _this.createPopup(_this.popupEle);\n } else {\n _this.popupEle = _this.popupObj.element;\n if (_this.isReact && _this.isFilterRestore) {\n _this.treeObj.refresh();\n _this.isFilteredData = true;\n _this.popupEle.removeChild(_this.filterContainer);\n }\n }\n } else {\n isCancelled = true;\n }\n if (_this.isFirstRender && !isCancelled || _this.isFilteredData) {\n _this.isFilteredData = false;\n prepend([_this.popupDiv], _this.popupEle);\n removeClass([_this.popupDiv], DDTHIDEICON);\n if (_this.allowFiltering) {\n _this.renderFilter();\n }\n if (_this.showCheckBox && _this.showSelectAll && !_this.popupDiv.classList.contains(NODATA)) {\n _this.createSelectAllWrapper();\n _this.popupEle.insertBefore(_this.checkAllParent, _this.popupDiv);\n }\n if (_this.headerTemplate) {\n _this.setHeaderTemplate();\n }\n if (_this.footerTemplate) {\n _this.setFooterTemplate();\n }\n _this.isFirstRender = false;\n if (_this.hasTemplate && _this.portals) {\n if (_this.treeObj.portals) {\n _this.portals = _this.portals.concat(_this.treeObj.portals.filter(function (item) {\n return !_this.portals.includes(item);\n }));\n }\n if (_this.isReact) {\n _this.renderReactTemplates(_this.reactCallBack);\n }\n }\n }\n if (!isCancelled) {\n attributes(_this.inputEle, {\n 'aria-expanded': 'true'\n });\n _this.popupObj.show(null, _this.zIndex === 1000 ? _this.inputEle : null);\n removeClass([_this.popupEle], DDTHIDEICON);\n _this.updatePopupHeight();\n _this.popupObj.refreshPosition();\n if (!(_this.showSelectAll || _this.allowFiltering) && !_this.popupDiv.classList.contains(NODATA) && _this.treeItems.length > 0) {\n var focusedElement = _this.value != null && _this.text != null ? _this.treeObj.element.querySelector('[data-uid=\"' + _this.value[0] + '\"]') : null;\n if (focusedElement) {\n _this.treeObj.element.querySelector('li').setAttribute('tabindex', '-1');\n focusedElement.setAttribute('tabindex', '0');\n } else {\n var oldFocussedNode = _this.treeObj.element.querySelector('.e-node-focus');\n focusedElement = _this.treeObj.element.querySelector('li[tabindex=\"0\"]:not(.e-disable)') || _this.treeObj.element.querySelector('li:not(.e-disable)');\n _this.removeFocus(focusedElement, oldFocussedNode);\n }\n _this.updateFocus(focusedElement);\n }\n if (_this.treeObj.checkedNodes.length > 0 && !_this.isFilterRestore) {\n var nodes = _this.treeObj.element.querySelectorAll('li:not(.e-disable)');\n var checkedNodes = _this.treeObj.element.querySelectorAll('li[aria-checked=true]');\n if (checkedNodes.length === nodes.length && _this.checkBoxElement) {\n var wrap = closest(_this.checkBoxElement, '.' + CHECKBOXWRAP);\n _this.changeState(wrap, 'check');\n _this.checkSelectAll = false;\n }\n }\n if (_this.showSelectAll && !_this.allowFiltering) {\n var oldFocussedNode = _this.treeObj.element.querySelector('.e-node-focus');\n var focusedElement = _this.popupEle.querySelector('.e-selectall-parent');\n _this.removeFocus(focusedElement, oldFocussedNode);\n _this.updateFocus(focusedElement);\n }\n if (_this.allowFiltering) {\n var focusedElement = _this.treeObj.element.querySelector('li.e-node-focus');\n if (!isNOU(focusedElement)) {\n removeClass([focusedElement], 'e-node-focus');\n }\n removeClass([_this.inputWrapper], [INPUTFOCUS]);\n _this.filterObj.element.focus();\n }\n var eventArgs = {\n popup: _this.popupObj\n };\n _this.trigger('open', eventArgs);\n }\n });\n };\n DropDownTree.prototype.removeFocus = function (focusedElement, oldFocusedElement) {\n if (oldFocusedElement && oldFocusedElement !== focusedElement) {\n oldFocusedElement.setAttribute('tabindex', '-1');\n removeClass([oldFocusedElement], 'e-node-focus');\n }\n };\n DropDownTree.prototype.updateFocus = function (focusedElement) {\n if (!isNOU(focusedElement)) {\n focusedElement.focus();\n addClass([focusedElement], ['e-node-focus']);\n }\n };\n DropDownTree.prototype.reactCallBack = function () {\n if (!isNOU(this.popupObj)) {\n this.updatePopupHeight();\n this.popupObj.refreshPosition();\n }\n };\n DropDownTree.prototype.updatePopupHeight = function () {\n if (this.isFirstRender) {\n return;\n }\n var popupHeight = this.getHeight();\n this.popupEle.style.maxHeight = popupHeight;\n if (this.allowFiltering) {\n var height = Math.round(this.filterContainer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.headerTemplate) {\n var height = Math.round(this.header.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.showCheckBox && this.showSelectAll && !this.popupDiv.classList.contains(NODATA)) {\n var height = Math.round(this.checkAllParent.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.footerTemplate) {\n var height = Math.round(this.footer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n var border = parseInt(window.getComputedStyle(this.popupEle).borderTopWidth, 10);\n border = border + parseInt(window.getComputedStyle(this.popupEle).borderBottomWidth, 10);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - border + 'px');\n this.popupDiv.style.maxHeight = popupHeight;\n };\n DropDownTree.prototype.createPopup = function (element) {\n var _this = this;\n if (this.isFirstRender) {\n this.popupObj = new Popup(element, {\n width: this.setWidth(),\n targetType: 'relative',\n collision: {\n X: 'flip',\n Y: 'flip'\n },\n relateTo: this.inputWrapper,\n zIndex: this.zIndex,\n enableRtl: this.enableRtl,\n position: {\n X: 'left',\n Y: 'bottom'\n },\n close: function () {\n _this.isPopupOpen = false;\n },\n open: function () {\n document.addEventListener('mousedown', _this.documentClickContext);\n _this.isPopupOpen = true;\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n }\n };\n /* To calculate the width when change via set model */\n DropDownTree.prototype.setElementWidth = function (inputWidth) {\n var ddElement = this.inputWrapper;\n if (!isNOU(inputWidth)) {\n if (typeof inputWidth === 'number') {\n ddElement.style.width = formatUnit(inputWidth);\n } else if (typeof inputWidth === 'string') {\n ddElement.style.width = inputWidth.match(/px|%|em/) ? inputWidth : formatUnit(inputWidth);\n }\n }\n };\n /* To calculate the width of the popup */\n DropDownTree.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n width = (this.inputWrapper.offsetWidth * parseFloat(width) / 100).toString() + 'px';\n } else if (typeof this.popupWidth === 'string') {\n width = this.popupWidth.match(/px|em/) ? this.popupWidth : width;\n }\n return width;\n };\n /* To calculate the height of the popup */\n DropDownTree.prototype.getHeight = function () {\n var height = formatUnit(this.popupHeight);\n if (height.indexOf('%') > -1) {\n // Will set the height of the popup according to the view port height\n height = (document.documentElement.clientHeight * parseFloat(height) / 100).toString() + 'px';\n } else if (typeof this.popupHeight === 'string') {\n height = this.popupHeight.match(/px|em/) ? this.popupHeight : height;\n }\n return height;\n };\n DropDownTree.prototype.onDocumentClick = function (e) {\n var target = e.target;\n var isTree = closest(target, '.' + PARENTITEM);\n var isFilter = closest(target, '.' + FILTERWRAP);\n var isHeader = closest(target, '.' + HEADER);\n var isFooter = closest(target, '.' + FOOTER);\n var isScroller = target.classList.contains(DROPDOWN) ? true : matches(target, '.e-ddt .e-popup') || matches(target, '.e-ddt .e-treeview');\n if (this.isPopupOpen && (!isNOU(this.inputWrapper) && this.inputWrapper.contains(target) || isTree || isScroller || isHeader || isFooter) || (this.allowMultiSelection || this.showCheckBox) && (this.isPopupOpen && target.classList.contains(CHIP_CLOSE) || this.isPopupOpen && (target.classList.contains(CHECKALLPARENT) || target.classList.contains(ALLTEXT) || target.classList.contains(CHECKBOXFRAME)))) {\n this.isDocumentClick = false;\n e.preventDefault();\n } else if (!isNOU(this.inputWrapper) && !this.inputWrapper.contains(target) && this.inputFocus && !isFilter) {\n this.focusOut(e);\n }\n };\n DropDownTree.prototype.onActionFailure = function (e) {\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n addClass([this.popupDiv], NODATA);\n };\n DropDownTree.prototype.OnDataBound = function (args) {\n this.treeItems = args.data;\n if (this.treeItems.length <= 0) {\n this.l10nUpdate();\n addClass([this.popupDiv], NODATA);\n this.hideCheckAll(true);\n } else if (this.popupDiv.classList.contains(NODATA) && this.treeItems.length >= 1) {\n removeClass([this.popupDiv], NODATA);\n this.hideCheckAll(false);\n }\n if (!this.isFilteredData) {\n this.treeDataType = this.getTreeDataType(this.treeItems, this.fields);\n }\n if (this.isFirstRender && this.isRemoteData) {\n this.setTreeValue();\n this.setTreeText();\n this.updateHiddenValue();\n this.setSelectedValue();\n if (!this.wrapText) {\n this.updateView();\n }\n this.treeObj.element.focus();\n this.isInitialized = true;\n }\n var eventArgs = {\n data: args.data\n };\n this.trigger('dataBound', eventArgs);\n if (this.filterObj === null) {\n this.isFilteredData = false;\n }\n if (this.isFilteredData) {\n this.treeObj.expandAll();\n }\n if (this.isFilterRestore) {\n this.restoreFilterSelection();\n if (!this.showSelectAll) {\n this.isFilterRestore = false;\n }\n }\n };\n DropDownTree.prototype.restoreFilterSelection = function () {\n if (this.showCheckBox) {\n this.treeObj.checkedNodes = this.value ? this.value : [];\n } else {\n this.treeObj.selectedNodes = this.value ? this.value : [];\n }\n };\n /* To set cssclass for the dropdowntree */\n DropDownTree.prototype.setCssClass = function (newClass, oldClass) {\n var elements = this.popupObj ? [this.inputWrapper, this.popupObj.element] : [this.inputWrapper];\n if (!isNOU(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNOU(newClass) && newClass !== '') {\n addClass(elements, newClass.split(' '));\n }\n };\n DropDownTree.prototype.setEnableRTL = function (state) {\n if (state) {\n this.inputWrapper.classList.add(RTL);\n } else {\n this.inputWrapper.classList.remove(RTL);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n if (this.treeObj) {\n this.treeObj.enableRtl = state;\n this.treeObj.dataBind();\n }\n };\n /* To set enable property */\n DropDownTree.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputEle);\n if (this.enabled) {\n removeClass([this.inputWrapper], DISABLED);\n this.inputEle.setAttribute('aria-disabled', 'false');\n this.inputWrapper.setAttribute('aria-disabled', 'false');\n } else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n addClass([this.inputWrapper], DISABLED);\n if (this.inputWrapper && this.inputWrapper.classList.contains(INPUTFOCUS)) {\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n }\n this.inputEle.setAttribute('aria-disabled', 'true');\n this.inputWrapper.setAttribute('aria-disabled', 'true');\n }\n };\n DropDownTree.prototype.cloneFields = function (fields) {\n var clonedField = {\n dataSource: fields.dataSource,\n value: fields.value,\n text: fields.text,\n parentValue: fields.parentValue,\n child: this.cloneChildField(fields.child),\n hasChildren: fields.hasChildren,\n expanded: fields.expanded,\n iconCss: fields.iconCss,\n imageUrl: fields.imageUrl,\n htmlAttributes: fields.htmlAttributes,\n query: fields.query,\n selected: fields.selected,\n selectable: fields.selectable,\n tableName: fields.tableName,\n tooltip: fields.tooltip\n };\n return clonedField;\n };\n DropDownTree.prototype.cloneChildField = function (fields) {\n if (typeof fields === 'string') {\n return fields;\n } else {\n var clonedField = {\n dataSource: fields.dataSource,\n value: fields.value,\n text: fields.text,\n parentValue: fields.parentValue,\n child: fields.child ? this.cloneChildField(fields.child) : null,\n hasChildren: fields.hasChildren,\n expanded: fields.expanded,\n iconCss: fields.iconCss,\n imageUrl: fields.imageUrl,\n htmlAttributes: fields.htmlAttributes,\n query: fields.query,\n selected: fields.selected,\n selectable: fields.selectable,\n tableName: fields.tableName,\n tooltip: fields.tooltip\n };\n return clonedField;\n }\n };\n DropDownTree.prototype.getTreeFields = function (fields) {\n var treeFields = {\n dataSource: fields.dataSource,\n id: fields.value,\n text: fields.text,\n parentID: fields.parentValue,\n child: this.getTreeChildren(fields.child),\n hasChildren: fields.hasChildren,\n expanded: fields.expanded,\n iconCss: fields.iconCss,\n imageUrl: fields.imageUrl,\n isChecked: fields.selected,\n htmlAttributes: fields.htmlAttributes,\n query: fields.query,\n selectable: fields.selectable,\n selected: fields.selected,\n tableName: fields.tableName,\n tooltip: fields.tooltip\n };\n return treeFields;\n };\n DropDownTree.prototype.getTreeChildren = function (mapper) {\n if (typeof mapper === 'string') {\n return mapper;\n } else if (!isNOU(mapper)) {\n mapper = this.getActualProperties(mapper);\n var childFields = mapper;\n if (mapper.value) {\n childFields.id = mapper.value;\n }\n if (mapper.parentValue) {\n childFields.parentID = mapper.parentValue;\n }\n if (mapper.child) {\n childFields.child = this.getTreeChildren(mapper.child);\n }\n if (mapper.selected && this.showCheckBox) {\n childFields.isChecked = mapper.selected;\n }\n return childFields;\n }\n return null;\n };\n DropDownTree.prototype.getTreeDataType = function (ds, field) {\n if (this.fields.dataSource instanceof DataManager) {\n for (var i = 0; i < ds.length; i++) {\n if (typeof field.child === 'string' && isNOU(getValue(field.child, ds[i]))) {\n return 1;\n }\n }\n return 2;\n }\n if (isNOU(this.fields.dataSource)) {\n this.fields.dataSource = [];\n }\n for (var i = 0, len = this.fields.dataSource.length; i < len; i++) {\n if (typeof field.child === 'string' && !isNOU(getValue(field.child, this.fields.dataSource[i]))) {\n return 2;\n }\n if (!isNOU(getValue(field.parentValue, this.fields.dataSource[i])) || !isNOU(getValue(field.hasChildren, this.fields.dataSource[i]))) {\n return 1;\n }\n }\n return 1;\n };\n /* Triggers when the tree fields is changed dynamically */\n DropDownTree.prototype.setFields = function () {\n this.resetValue();\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n this.treeObj.fields = this.getTreeFields(this.fields);\n this.setProperties({\n value: this.oldValue\n }, true);\n this.treeObj.dataBind();\n this.updateValue(this.value);\n };\n DropDownTree.prototype.getEventArgs = function (args) {\n var checkData = args.data;\n var selectData = args.nodeData;\n var state;\n if (this.showCheckBox) {\n if (args.action === 'check') {\n state = 'select';\n } else if (args.action === 'uncheck') {\n state = 'un-select';\n }\n }\n var eventArgs = {\n action: this.showCheckBox ? state : args.action,\n isInteracted: this.isClicked ? true : args.isInteracted,\n item: args.node,\n itemData: this.showCheckBox ? checkData[0] : selectData\n };\n return eventArgs;\n };\n DropDownTree.prototype.onBeforeSelect = function (args) {\n if (args.isInteracted) {\n this.setOldValue();\n if (this.value === null) {\n this.setProperties({\n value: []\n }, true);\n }\n }\n };\n DropDownTree.prototype.updateHiddenValue = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n return;\n }\n if (this.value && this.value.length) {\n this.hiddenElement.innerHTML = '<option selected value =\"' + this.value[0] + '\">' + this.text + '</option>';\n } else {\n this.hiddenElement.innerHTML = '';\n }\n };\n /* Triggers when the tree node is selected */\n DropDownTree.prototype.onNodeSelected = function (args) {\n if (this.showCheckBox) {\n return;\n }\n var eventArgs = this.getEventArgs(args);\n this.trigger('select', eventArgs);\n var selectedText;\n if (args.isInteracted) {\n var id = getValue('id', args.nodeData).toString();\n if (!this.allowMultiSelection) {\n this.hiddenElement.innerHTML = '';\n this.setProperties({\n value: [id]\n }, true);\n if (this.itemTemplate) {\n selectedText = getValue('text', this.treeObj.getNode(id));\n } else {\n selectedText = getValue('text', args.nodeData).toString();\n }\n Input.setValue(selectedText, this.inputEle, this.floatLabelType);\n this.setProperties({\n text: selectedText\n }, true);\n this.currentText = this.text;\n this.currentValue = this.value;\n this.setValueTemplate();\n if (!isNOU(this.value) && this.value.length > 0) {\n this.inputWrapper.setAttribute('aria-label', args.nodeData.text.toString());\n }\n attributes(this.inputWrapper, {\n 'aria-describedby': this.element.id\n });\n attributes(this.inputWrapper, {\n 'aria-activedescendant': id.toString()\n });\n this.updateHiddenValue();\n this.showOverAllClear();\n this.hidePopup();\n this.isNodeSelected = true;\n } else if (this.allowMultiSelection) {\n this.setMultiSelect();\n }\n }\n if (this.isValueChange && !this.changeOnBlur) {\n this.triggerChangeEvent(this.keyEventArgs);\n this.isValueChange = false;\n }\n };\n DropDownTree.prototype.onNodeClicked = function (args) {\n if (!this.changeOnBlur && this.isNodeSelected) {\n this.triggerChangeEvent(args.event);\n this.isNodeSelected = false;\n }\n var target = args.event.target;\n if ((target.classList.contains('e-fullrow') || target.classList.contains('e-list-text')) && this.showCheckBox) {\n this.isClicked = true;\n var getNodeDetails = this.treeObj.getNode(args.node);\n if (getNodeDetails.isChecked === 'true') {\n this.treeObj.uncheckAll([args.node]);\n } else {\n this.treeObj.checkAll([args.node]);\n }\n this.isClicked = false;\n this.setMultiSelect();\n this.ensurePlaceHolder();\n }\n if (!this.changeOnBlur && (this.allowMultiSelection || this.showCheckBox)) {\n this.triggerChangeEvent(args.event);\n }\n };\n DropDownTree.prototype.onNodeChecked = function (args) {\n var eventArgs = this.getEventArgs(args);\n this.trigger('select', eventArgs);\n if (this.isFilteredData && args.action === 'uncheck') {\n var id = getValue('id', args.data[0]).toString();\n this.removeSelectedData(id, true);\n }\n if (!this.isChipDelete && args.isInteracted || !this.isFilteredData && args.action === 'check' && this.isFromFilterChange) {\n this.setMultiSelect();\n this.ensurePlaceHolder();\n }\n if (this.showSelectAll && this.checkBoxElement) {\n var nodes = this.treeObj.element.querySelectorAll('li:not(.e-disable)');\n var checkedNodes = this.treeObj.element.querySelectorAll('li[aria-checked=true]');\n var wrap = closest(this.checkBoxElement, '.' + CHECKBOXWRAP);\n if (wrap && args.action === 'uncheck' && (args.isInteracted || checkedNodes.length === 0 || !isNOU(args.data[0]) && args.data[0].isChecked === 'false') || !args.isInteracted && this.isFilterRestore) {\n this.isFilterRestore = false;\n this.isReverseUpdate = true;\n this.changeState(wrap, 'uncheck');\n this.isReverseUpdate = false;\n } else if (wrap && args.action === 'check' && checkedNodes.length === nodes.length && (args.isInteracted || this.isCheckAllCalled || !isNOU(args.data[0]) && args.data[0].isChecked === 'true')) {\n this.isReverseUpdate = true;\n this.isCheckAllCalled = false;\n this.changeState(wrap, 'check');\n this.isReverseUpdate = false;\n }\n }\n if (this.isValueChange && !this.changeOnBlur) {\n this.triggerChangeEvent(this.keyEventArgs);\n this.isValueChange = false;\n }\n };\n DropDownTree.prototype.beforeCheck = function (args) {\n if (args.isInteracted) {\n this.setOldValue();\n }\n };\n DropDownTree.prototype.onNodeExpanded = function () {\n if (this.hasTemplate && this.portals && this.treeObj.portals) {\n for (var i = 0; i < this.treeObj.portals.length; i++) {\n if (this.portals.indexOf(this.treeObj.portals[i]) === -1) {\n this.portals.push(this.treeObj.portals[i]);\n }\n }\n this.renderReactTemplates();\n }\n };\n DropDownTree.prototype.updateClearButton = function (state) {\n if (state) {\n if (!this.inputWrapper.contains(this.overAllClear)) {\n this.inputEle.parentElement.insertBefore(this.overAllClear, this.inputEle.nextSibling);\n } else {\n removeClass([this.overAllClear], HIDEICON);\n addClass([this.inputWrapper], SHOW_CLEAR);\n }\n } else {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.chipWrapper) {\n var chipClose = selectAll('.' + CHIP_CLOSE, this.chipWrapper);\n for (var i = 0; i < chipClose.length; i++) {\n if (!state) {\n addClass([chipClose[i]], HIDEICON);\n } else {\n removeClass([chipClose[i]], HIDEICON);\n }\n }\n }\n };\n DropDownTree.prototype.updateDropDownIconState = function (state) {\n var spinIcon = select('.' + DDTICON, this.inputWrapper);\n if (state) {\n if (!spinIcon) {\n Input.appendSpan(DROPDOWNICON, this.inputWrapper, this.createElement);\n } else {\n removeClass([spinIcon], HIDEICON);\n }\n addClass([this.inputWrapper], SHOW_DD_ICON);\n } else {\n addClass([spinIcon], HIDEICON);\n removeClass([this.inputWrapper], SHOW_DD_ICON);\n }\n };\n DropDownTree.prototype.updateMode = function () {\n if (this.mode === 'Custom') {\n return;\n }\n if (this.mode !== 'Delimiter') {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n var isValid = this.getValidMode();\n if (this.chipWrapper.classList.contains(HIDEICON) && isValid) {\n removeClass([this.chipWrapper], HIDEICON);\n this.showOrHideValueTemplate(false, true);\n addClass([this.inputWrapper], SHOW_CHIP);\n } else if (!isValid) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n this.showOrHideValueTemplate(true);\n }\n var isValue = this.value !== null ? this.value.length !== 0 ? true : false : false;\n if (isValid && isValue) {\n addClass([this.inputEle], CHIP_INPUT);\n } else {\n removeClass([this.inputEle], CHIP_INPUT);\n }\n } else if (this.inputEle.classList.contains(CHIP_INPUT)) {\n removeClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n this.showOrHideValueTemplate(true);\n }\n }\n };\n DropDownTree.prototype.ensurePlaceHolder = function () {\n if (isNOU(this.value) || this.value !== null && this.value.length === 0) {\n removeClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n this.showOrHideValueTemplate(true);\n }\n }\n };\n DropDownTree.prototype.ensureClearIconPosition = function (floatLabelType) {\n if (floatLabelType !== 'Never') {\n this.inputWrapper.insertBefore(this.overAllClear, this.inputObj.buttons[0]);\n }\n };\n DropDownTree.prototype.setMultiSelectValue = function (newValues) {\n var _this = this;\n if (!this.isFilteredData) {\n this.setProperties({\n value: this.isFromFilterChange && newValues && newValues.length === 0 ? this.value : newValues\n }, true);\n this.isFromFilterChange = false;\n if (newValues && newValues.length !== 0 && !this.showCheckBox && !this.ddtCompareValues(this.treeObj.selectedNodes, this.value.slice())) {\n this.treeObj.selectedNodes = this.value.slice();\n this.treeObj.dataBind();\n }\n } else {\n var selectedValues = isNOU(this.value) ? [] : this.value;\n selectedValues = selectedValues.filter(function (selectedValue) {\n var nodeData = _this.treeObj.getTreeData(selectedValue);\n if (Array.isArray(nodeData)) {\n return nodeData.every(function (nodeSelectedData) {\n return nodeSelectedData.selected;\n });\n }\n return true;\n });\n for (var i = 0; i < newValues.length; i++) {\n if (isNOU(this.value) || this.value.indexOf(newValues[i]) === -1) {\n selectedValues.push(newValues[i]);\n }\n }\n this.setProperties({\n value: selectedValues\n }, true);\n }\n };\n DropDownTree.prototype.setMultiSelect = function () {\n if (this.showCheckBox && !this.isDynamicChange) {\n this.setMultiSelectValue(this.treeObj.checkedNodes.slice());\n } else {\n var ddtValue = this.allowMultiSelection ? this.showCheckBox ? this.treeObj.checkedNodes : this.treeObj.selectedNodes : this.value ? this.showCheckBox ? this.value : [this.value[0]] : null;\n this.setMultiSelectValue(ddtValue);\n if (this.showCheckBox && this.value !== null) {\n this.treeObj.checkedNodes = this.value;\n this.treeObj.dataBind();\n }\n }\n this.selectedText = [];\n var checkSelection = this.allowMultiSelection ? true : this.showCheckBox ? true : false;\n if (this.inputWrapper.contains(this.chipWrapper) && !checkSelection) {\n removeClass([this.inputEle], CHIP_INPUT);\n detach(this.chipWrapper);\n }\n var isValid = this.getValidMode();\n if (isValid && this.value !== null) {\n addClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n removeClass([this.chipWrapper], HIDEICON);\n this.showOrHideValueTemplate(false, true);\n }\n }\n var isValue = this.value ? this.value.length ? true : false : false;\n if (this.chipWrapper && this.mode === 'Box' && !isValue) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputEle], CHIP_INPUT);\n this.showOrHideValueTemplate(true);\n }\n this.updateSelectedValues();\n };\n DropDownTree.prototype.getSelectedData = function (value) {\n var data = null;\n if (this.isFilteredData) {\n for (var i = 0; i < this.selectedData.length; i++) {\n if (getValue(this.treeSettings.loadOnDemand ? this.fields.value : 'id', this.selectedData[i]).toString() === value) {\n data = this.selectedData[i];\n break;\n }\n }\n }\n if (isNOU(data)) {\n if (this.treeSettings.loadOnDemand) {\n data = this.getNodeData(value, this.treeItems);\n } else {\n data = this.treeObj.getNode(value);\n }\n if (!isNOU(data)) {\n this.selectedData.push(data);\n }\n }\n return data;\n };\n DropDownTree.prototype.getNodeData = function (id, dataSource) {\n var childItems;\n if (isNOU(id)) {\n return childItems;\n } else if (this.treeDataType === 1) {\n for (var i = 0, objlen = dataSource.length; i < objlen; i++) {\n var dataId = getValue(this.fields.value, dataSource[i]);\n if (!isNOU(dataSource[i]) && !isNOU(dataId) && dataId.toString() === id) {\n return dataSource[i];\n }\n }\n } else {\n return this.getChildNodeData(dataSource, this.fields, id);\n }\n return childItems;\n };\n DropDownTree.prototype.getChildNodeData = function (obj, mapper, id) {\n var newChildItems;\n if (isNOU(obj)) {\n return newChildItems;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataValue = getValue(mapper.value, obj[i]);\n if (obj[i] && dataValue && dataValue.toString() === id) {\n return obj[i];\n } else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childNodeData = getValue(mapper.child, obj[i]);\n newChildItems = this.getChildNodeData(childNodeData, this.getChildMapperFields(mapper), id);\n if (newChildItems !== undefined) {\n break;\n }\n } else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var child = 'child';\n newChildItems = this.getChildNodeData(getValue(child, obj[i]), this.getChildMapperFields(mapper), id);\n if (newChildItems !== undefined) {\n break;\n }\n }\n }\n return newChildItems;\n };\n DropDownTree.prototype.getChildMapperFields = function (mapper) {\n return typeof mapper.child === 'string' || isNOU(mapper.child) ? mapper : mapper.child;\n };\n DropDownTree.prototype.removeSelectedData = function (value, muteOnChange) {\n var selectedValues = isNOU(this.value) ? [] : this.value.slice();\n selectedValues.splice(selectedValues.indexOf(value), 1);\n this.setProperties({\n value: selectedValues\n }, muteOnChange);\n for (var i = 0; i < this.selectedData.length; i++) {\n if (getValue(this.treeSettings.loadOnDemand ? this.fields.value : 'id', this.selectedData[i]).toString() === value) {\n this.selectedData.splice(i, 1);\n break;\n }\n }\n };\n DropDownTree.prototype.initializeValueTemplate = function () {\n if (!this.valueTemplate) {\n return null;\n }\n if (this.valueTemplateContainer) {\n while (this.valueTemplateContainer.firstChild) {\n this.valueTemplateContainer.removeChild(this.valueTemplateContainer.firstChild);\n }\n } else {\n this.valueTemplateContainer = this.createElement('span', {\n className: OVERFLOW_VIEW + ' ' + SHOW_TEXT + ' ' + 'e-input-value' + ' ' + HIDEICON\n });\n }\n this.inputWrapper.insertBefore(this.valueTemplateContainer, this.inputEle);\n return this.templateComplier(this.valueTemplate);\n };\n DropDownTree.prototype.showOrHideValueTemplate = function (show, showChip) {\n if (showChip === void 0) {\n showChip = false;\n }\n if (!this.valueTemplateContainer || this.mode === 'Box') {\n return;\n }\n if (show) {\n removeClass([this.valueTemplateContainer], HIDEICON);\n addClass([this.inputWrapper], SHOW_CHIP);\n addClass([this.inputEle], CHIP_INPUT);\n } else {\n addClass([this.valueTemplateContainer], HIDEICON);\n if (!showChip) {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n }\n };\n DropDownTree.prototype.updateSelectedValues = function () {\n var _this = this;\n this.dataValue = '';\n var temp;\n var text;\n var textValue = '';\n var selectedData;\n this.hiddenElement.innerHTML = '';\n var hiddenInputValue = '';\n if ((!this.isChipDelete || this.treeSettings.autoCheck) && this.inputWrapper.contains(this.chipWrapper)) {\n this.chipCollection.innerHTML = '';\n }\n if (!this.isFilteredData) {\n this.selectedData = [];\n }\n if (!isNOU(this.value)) {\n var compiledString = this.initializeValueTemplate();\n for (var i = 0, len = this.value.length; i < len; i++) {\n selectedData = this.getSelectedData(this.value[i]);\n text = getValue(this.treeSettings.loadOnDemand ? this.fields.text : 'text', selectedData);\n this.selectedText.push(text);\n temp = this.selectedText[this.selectedText.length - 1];\n if (this.selectedText.length > 1) {\n this.dataValue += this.delimiterChar + ' ' + temp;\n textValue += ',' + temp;\n } else {\n this.dataValue += temp;\n textValue += temp;\n }\n if (this.mode !== 'Custom' && this.mode !== 'Delimiter' && (!this.isChipDelete || this.treeSettings.autoCheck) && (this.allowMultiSelection || this.showCheckBox)) {\n this.setChipValues(temp, this.value[i]);\n }\n hiddenInputValue += '<option selected value =\"' + this.value[i] + '\">' + this.selectedText[this.selectedText.length - 1] + '</option>';\n if (this.valueTemplate) {\n this.getValueTemplateElement(this.value[i], compiledString);\n }\n }\n if (this.hasTemplate && this.portals) {\n if (this.treeObj.portals) {\n this.portals = this.portals.concat(this.treeObj.portals.filter(function (item) {\n return !_this.portals.includes(item);\n }));\n }\n if (this.isReact) {\n this.renderReactTemplates(this.reactCallBack);\n }\n }\n if (this.selectedText.length >= 1) {\n this.setProperties({\n text: textValue\n }, true);\n }\n this.hiddenElement.innerHTML = hiddenInputValue;\n if (this.mode === 'Custom' && (this.allowMultiSelection || this.showCheckBox)) {\n this.setTagValues();\n }\n }\n var isValid = this.getValidMode();\n if (this.mode !== 'Custom' && this.mode !== 'Box' && (this.allowMultiSelection || this.showCheckBox) && !isValid) {\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n this.showOrHideValueTemplate(true);\n }\n Input.setValue(this.dataValue, this.inputEle, this.floatLabelType);\n if (textValue === '') {\n this.setProperties({\n text: null\n }, true);\n } else {\n this.setProperties({\n text: textValue\n }, true);\n }\n if (this.showClearButton && this.inputFocus) {\n this.showOverAllClear();\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.popupObj) {\n this.popupObj.refreshPosition();\n }\n this.currentText = this.text;\n this.currentValue = this.value;\n if (!isNOU(this.value) && this.value.length > 0 && !isNOU(this.currentText)) {\n this.inputWrapper.setAttribute('aria-label', this.currentText.replace(/,/g, ', '));\n } else {\n this.inputWrapper.setAttribute('aria-label', this.getModuleName());\n }\n };\n DropDownTree.prototype.setChipValues = function (text, value) {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n var chip = this.createElement('span', {\n className: CHIP,\n attrs: {\n 'data-value': value\n }\n });\n var chipContent = this.createElement('span', {\n className: CHIP_CONTENT\n });\n var chipClose = this.createElement('span', {\n className: CHIP_CLOSE + ' ' + ICONS\n });\n if (this.enableHtmlSanitizer) {\n chipContent.innerText = SanitizeHtmlHelper.sanitize(text);\n } else {\n chipContent.innerHTML = text;\n }\n chip.appendChild(chipContent);\n this.chipCollection.appendChild(chip);\n if (this.showClearButton) {\n chip.appendChild(chipClose);\n EventHandler.add(chipClose, 'mouseup', this.removeChip, this);\n }\n };\n DropDownTree.prototype.setTagValues = function () {\n if (this.value === null || this.text == null || this.value.length === 0) {\n if (this.inputWrapper.contains(this.chipWrapper)) {\n addClass([this.chipWrapper], HIDEICON);\n }\n return;\n }\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n if (!this.inputWrapper.classList.contains(SHOW_CHIP)) {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n var chip = this.createElement('span', {\n className: CHIP\n });\n if (!this.inputEle.classList.contains(CHIP_INPUT)) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n if (this.chipWrapper.classList.contains(HIDEICON)) {\n removeClass([this.chipWrapper], HIDEICON);\n this.showOrHideValueTemplate(false, true);\n }\n var chipContent = this.createElement('span', {\n className: CHIP_CONTENT\n });\n var template = this.customTemplate;\n var templateId = this.customTemplateId;\n var templatestring = 'customTemplate';\n var compiledString = this.templateComplier(template);\n var tempArr = compiledString({\n 'value': this.value,\n 'text': this.text\n }, this, templatestring, templateId, this.isStringTemplate, undefined, chipContent);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, chipContent);\n }\n chip.appendChild(chipContent);\n this.chipCollection.appendChild(chip);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n DropDownTree.prototype.setSelectAllWrapper = function (state) {\n if (this.isFirstRender) {\n return;\n }\n if (state && !this.popupEle.contains(this.checkAllParent) && this.showCheckBox) {\n this.createSelectAllWrapper();\n this.popupEle.insertBefore(this.checkAllParent, this.popupDiv);\n } else if (this.popupEle.contains(this.checkAllParent)) {\n detach(this.checkAllParent);\n this.checkAllParent = null;\n }\n };\n DropDownTree.prototype.setHeaderTemplate = function () {\n if (this.header) {\n this.header.innerHTML = '';\n } else {\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n }\n var compiledString = this.templateComplier(this.headerTemplate);\n var tempArr = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, undefined, this.header);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.header);\n }\n this.popupEle.insertBefore(this.header, this.checkAllParent ? this.checkAllParent : this.popupDiv);\n };\n DropDownTree.prototype.templateComplier = function (template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n } else {\n return compile(template);\n }\n } catch (e) {\n return compile(template);\n }\n }\n return compile(template);\n };\n DropDownTree.prototype.setFooterTemplate = function () {\n if (this.footer) {\n if (this.isReact && typeof this.footerTemplate === 'function') {\n this.clearTemplate(['footerTemplate']);\n } else {\n this.footer.innerHTML = '';\n }\n } else {\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER);\n }\n var compiledString = this.templateComplier(this.footerTemplate);\n var tempArr = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, undefined, this.footer);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.footer);\n }\n append([this.footer], this.popupEle);\n };\n DropDownTree.prototype.clearAll = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n this.resetValue();\n this.showOverAllClear();\n if (this.allowMultiSelection || this.showCheckBox) {\n if (this.popupObj) {\n this.popupObj.refreshPosition();\n }\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n }\n if (e) {\n this.isClearButtonClick = true;\n }\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n };\n DropDownTree.prototype.removeChip = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n if (e.target.classList.contains('e-chips-close') && !this.isPopupOpen) {\n e.stopPropagation();\n e.preventDefault();\n }\n var element = e.target.parentElement;\n var value = element.getAttribute('data-value');\n if (this.chipCollection) {\n if (element) {\n remove(element);\n }\n }\n this.isChipDelete = true;\n this.isClearButtonClick = true;\n this.removeSelectedData(value, true);\n this.selectedText = [];\n if (this.allowMultiSelection) {\n this.treeObj.selectedNodes = this.value.slice();\n this.updateSelectedValues();\n }\n if (this.showCheckBox) {\n this.treeObj.uncheckAll([value]);\n this.clearCheckAll();\n this.setMultiSelect();\n }\n this.triggerChangeEvent(e);\n this.isChipDelete = false;\n this.ensurePlaceHolder();\n };\n DropDownTree.prototype.resetValue = function (isDynamicChange) {\n if (Array.isArray(this.value) && this.value.length === 0 && this.text == null) {\n return;\n }\n Input.setValue(null, this.inputEle, this.floatLabelType);\n if (!isDynamicChange) {\n this.setOldValue();\n this.setProperties({\n value: []\n }, true);\n this.showOrHideValueTemplate(false);\n }\n if (isNOU(this.value) || this.value.length === 0) {\n this.inputWrapper.setAttribute('aria-label', this.getModuleName());\n }\n this.dataValue = null;\n this.setProperties({\n text: null\n }, true);\n this.selectedData = [];\n setValue('selectedNodes', [], this.treeObj);\n this.hiddenElement.innerHTML = '';\n if (this.showCheckBox) {\n this.treeObj.uncheckAll();\n this.setMultiSelect();\n this.clearCheckAll();\n }\n if (this.oldValue === null && !isDynamicChange) {\n this.removeValue = true;\n } else if (isDynamicChange) {\n this.triggerChangeEvent();\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.chipWrapper) {\n this.chipCollection.innerHTML = '';\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n this.ensurePlaceHolder();\n }\n };\n DropDownTree.prototype.clearCheckAll = function () {\n if (this.showSelectAll && this.value && this.value.length === 0) {\n this.setLocale(false);\n }\n };\n DropDownTree.prototype.setOldValue = function () {\n this.oldValue = Array.isArray(this.value) ? this.value.slice() : this.value;\n };\n DropDownTree.prototype.selectAllItems = function (state) {\n if (this.showCheckBox) {\n if (state) {\n this.isCheckAllCalled = true;\n this.treeObj.checkAll();\n } else {\n this.treeObj.uncheckAll();\n }\n this.checkSelectAll = state;\n } else if (this.allowMultiSelection) {\n if (!state) {\n this.treeObj.selectedNodes = [];\n } else {\n var li = selectAll('li', this.treeObj.element);\n var id = void 0;\n var arr = [];\n for (var i = 0; i < li.length; i++) {\n id = li[i].getAttribute('data-uid').toString();\n arr.push(id);\n }\n this.treeObj.selectedNodes = arr;\n }\n }\n this.updateMode();\n this.setMultiSelect();\n if (!this.wrapText) {\n if (state) {\n this.updateView();\n } else {\n this.updateOverflowWrapper(true);\n }\n }\n };\n DropDownTree.prototype.updateTreeSettings = function (prop) {\n if (prop === 'autoCheck') {\n this.treeObj.autoCheck = this.treeSettings.autoCheck;\n } else if (prop === 'loadOnDemand') {\n this.treeObj.loadOnDemand = this.treeSettings.loadOnDemand;\n } else if (prop === 'expandOn') {\n this.treeObj.expandOn = this.treeSettings.expandOn;\n this.treeObj.dataBind();\n return;\n } else if (prop === 'checkDisabledChildren') {\n this.treeObj.checkDisabledChildren = this.treeSettings.checkDisabledChildren;\n }\n this.treeObj.dataBind();\n this.setMultiSelect();\n this.updateValue(this.value);\n };\n DropDownTree.prototype.updateCheckBoxState = function (checkBox) {\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n if (!this.wrapText) {\n this.updateOverflowWrapper(false);\n }\n this.treeObj.showCheckBox = checkBox;\n this.treeObj.dataBind();\n this.isDynamicChange = true;\n this.setSelectAllWrapper(this.showSelectAll);\n if (this.showSelectAll) {\n this.setLocale();\n }\n if (this.showCheckBox) {\n this.updateMode();\n }\n this.setMultiSelect();\n this.isDynamicChange = false;\n };\n DropDownTree.prototype.updateTemplate = function () {\n if (this.popupObj) {\n this.clearTemplate();\n this.portals = [];\n this.popupObj.destroy();\n if (this.isPopupOpen) {\n this.hidePopup();\n this.isFirstRender = true;\n this.renderPopup();\n } else {\n this.isFirstRender = true;\n }\n }\n };\n DropDownTree.prototype.l10nUpdate = function (actionFailure) {\n if (this.noRecord) {\n this.noRecord.innerHTML = '';\n } else {\n this.noRecord = this.createElement('div');\n }\n if (this.noRecordsTemplate !== 'No Records Found' || this.actionFailureTemplate !== 'The Request Failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n var templatestring = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n var compiledString = this.templateComplier(template);\n var tempArr = compiledString({}, this, templatestring, templateId, this.isStringTemplate, undefined, this.noRecord);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.noRecord);\n }\n } else {\n var l10nLocale = {\n noRecordsTemplate: 'No Records Found',\n actionFailureTemplate: 'The Request Failed'\n };\n this.l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n this.noRecord.innerHTML = actionFailure ? this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n }\n addClass([this.noRecord], NODATACONTAINER);\n prepend([this.noRecord], this.popupDiv);\n if (this.treeObj) {\n this.treeObj.element.removeAttribute('aria-activedescendant');\n }\n };\n DropDownTree.prototype.updateRecordTemplate = function (action) {\n if (this.treeItems && this.treeItems.length <= 0) {\n this.l10nUpdate(action);\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n }\n };\n DropDownTree.prototype.updateOverflowWrapper = function (state) {\n if (!state) {\n if (!this.inputWrapper.contains(this.overFlowWrapper)) {\n this.overFlowWrapper = this.createElement('span', {\n className: OVERFLOW_VIEW + ' ' + HIDEICON\n });\n this.inputWrapper.insertBefore(this.overFlowWrapper, this.hiddenElement);\n }\n } else if (this.inputWrapper.contains(this.overFlowWrapper) && state) {\n this.overFlowWrapper.innerHTML = '';\n }\n };\n DropDownTree.prototype.updateMultiSelection = function (state) {\n if (!this.wrapText) {\n this.updateOverflowWrapper(false);\n }\n this.treeObj.allowMultiSelection = state;\n this.treeObj.dataBind();\n this.updateOption();\n if (this.allowMultiSelection) {\n this.updateMode();\n }\n this.setMultiSelect();\n };\n DropDownTree.prototype.updateAllowFiltering = function (state) {\n if (!this.isFirstRender) {\n if (state) {\n this.renderFilter();\n } else {\n this.destroyFilter();\n }\n }\n };\n DropDownTree.prototype.updateFilterPlaceHolder = function () {\n if (this.filterObj) {\n this.filterObj.placeholder = this.filterBarPlaceholder;\n this.filterObj.element.setAttribute('aria-label', this.filterBarPlaceholder);\n }\n };\n DropDownTree.prototype.updateValue = function (value) {\n this.isDynamicChange = true;\n if (isNOU(value) || value.length === 0) {\n this.resetValue(true);\n } else {\n this.setTreeValue();\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateOverflowWrapper(false);\n this.updateView();\n }\n }\n this.updateHiddenValue();\n this.isDynamicChange = false;\n };\n DropDownTree.prototype.updateText = function (text) {\n if (isNOU(text)) {\n this.resetValue();\n } else {\n this.setTreeText();\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateOverflowWrapper(false);\n this.updateView();\n }\n }\n this.updateHiddenValue();\n };\n DropDownTree.prototype.updateModelMode = function () {\n var validMode = this.allowMultiSelection ? true : this.showCheckBox ? true : false;\n if (!validMode) {\n return;\n }\n if (!this.wrapText) {\n var overFlow = select('.e-overflow:not(.e-input-value)', this.inputWrapper);\n if (overFlow) {\n overFlow.innerHTML = '';\n }\n }\n this.updateMode();\n this.setMultiSelect();\n if (!this.wrapText && this.value && this.value.length !== 0) {\n this.updateOverFlowView();\n addClass([this.inputEle], CHIP_INPUT);\n if (this.mode === 'Box') {\n removeClass([this.overFlowWrapper, this.inputWrapper], SHOW_TEXT);\n } else {\n addClass([this.overFlowWrapper, this.inputWrapper], SHOW_TEXT);\n }\n }\n };\n DropDownTree.prototype.updateOption = function () {\n if (!this.hiddenElement.hasAttribute('multiple') && (this.allowMultiSelection || this.showCheckBox)) {\n this.hiddenElement.setAttribute('multiple', '');\n } else if (this.hiddenElement.hasAttribute('multiple') && !this.allowMultiSelection && !this.showCheckBox) {\n this.hiddenElement.removeAttribute('multiple');\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {DropDownTreeModel} newProp - specifies the newProp value.\n * @param {DropDownTreeModel} oldProp - specifies the newProp value.\n * @returns {void}\n * @private\n */\n DropDownTree.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n if (this.popupObj) {\n this.popupObj.element.style.width = this.setWidth();\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputEle);\n break;\n case 'cssClass':\n this.setCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRTL(this.enableRtl);\n break;\n case 'fields':\n this.setFields();\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.inputEle);\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'floatLabelType':\n Input.removeFloating(this.inputObj);\n Input.addFloating(this.inputEle, newProp.floatLabelType, this.placeholder, this.createElement);\n this.ensureClearIconPosition(newProp.floatLabelType);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'allowFiltering':\n this.updateAllowFiltering(newProp.allowFiltering);\n break;\n case 'filterBarPlaceholder':\n this.updateFilterPlaceHolder();\n break;\n case 'value':\n if (JSON.stringify(oldProp.value) !== JSON.stringify(newProp.value)) {\n this.oldValue = oldProp.value;\n this.updateValue(newProp.value);\n }\n break;\n case 'text':\n this.updateText(newProp.text);\n break;\n case 'allowMultiSelection':\n this.updateMultiSelection(newProp.allowMultiSelection);\n break;\n case 'mode':\n if (!this.showCheckBox && !this.allowMultiSelection) {\n return;\n }\n if (this.mode === 'Custom') {\n if (this.overFlowWrapper) {\n detach(this.overFlowWrapper);\n }\n if (this.chipWrapper) {\n detach(this.chipWrapper);\n }\n this.setTagValues();\n } else {\n if (oldProp.mode === 'Custom') {\n this.updateOverflowWrapper(this.wrapText);\n }\n this.updateModelMode();\n }\n break;\n case 'delimiterChar':\n if (this.mode === 'Box') {\n return;\n }\n if (this.showCheckBox || this.allowMultiSelection) {\n this.setMultiSelect();\n }\n break;\n case 'selectAllText':\n if (this.showCheckBox && this.showSelectAll) {\n this.setLocale();\n }\n break;\n case 'unSelectAllText':\n if (this.showCheckBox && this.showSelectAll) {\n this.setLocale(false);\n }\n break;\n case 'showSelectAll':\n if (this.showCheckBox) {\n this.setSelectAllWrapper(newProp.showSelectAll);\n this.updatePopupHeight();\n }\n break;\n case 'showCheckBox':\n this.updateCheckBoxState(newProp.showCheckBox);\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n this.updatePopupHeight();\n this.updateOption();\n break;\n case 'treeSettings':\n for (var _b = 0, _c = Object.keys(newProp.treeSettings); _b < _c.length; _b++) {\n var prop_1 = _c[_b];\n this.updateTreeSettings(prop_1);\n }\n break;\n case 'customTemplate':\n if (this.mode !== 'Custom') {\n return;\n }\n this.chipCollection.innerHTML = '';\n this.setTagValues();\n break;\n case 'sortOrder':\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n this.treeObj.sortOrder = newProp.sortOrder;\n this.treeObj.dataBind();\n this.updateValue(this.value);\n break;\n case 'showDropDownIcon':\n this.updateDropDownIconState(newProp.showDropDownIcon);\n break;\n case 'popupWidth':\n if (this.popupObj) {\n this.popupObj.element.style.width = this.setWidth();\n }\n break;\n case 'popupHeight':\n if (this.popupObj) {\n this.updatePopupHeight();\n }\n break;\n case 'zIndex':\n if (this.popupObj) {\n this.popupObj.zIndex = newProp.zIndex;\n this.popupObj.dataBind();\n }\n break;\n case 'headerTemplate':\n this.updateTemplate();\n break;\n case 'footerTemplate':\n this.updateTemplate();\n break;\n case 'itemTemplate':\n this.updateTemplate();\n this.treeObj.nodeTemplate = newProp.itemTemplate;\n this.treeObj.dataBind();\n break;\n case 'noRecordsTemplate':\n this.updateRecordTemplate();\n break;\n case 'actionFailureTemplate':\n this.updateRecordTemplate(true);\n break;\n case 'htmlAttributes':\n this.setHTMLAttributes();\n break;\n case 'wrapText':\n this.updateOverflowWrapper(this.wrapText);\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateView();\n } else {\n addClass([this.overFlowWrapper], HIDEICON);\n if (this.chipWrapper && this.mode === 'Box') {\n removeClass([this.chipWrapper], HIDEICON);\n } else {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n this.ensurePlaceHolder();\n }\n break;\n }\n }\n };\n /**\n * Allows you to clear the selected values from the Dropdown Tree component.\n *\n * @method clear\n * @returns {void}\n */\n DropDownTree.prototype.clear = function () {\n this.clearAll();\n if (this.inputFocus) {\n this.onFocusOut();\n } else {\n if (this.changeOnBlur) {\n this.triggerChangeEvent();\n }\n this.removeValue = false;\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 DropDownTree.prototype.destroy = function () {\n this.clearTemplate();\n this.unWireEvents();\n this.setCssClass(null, this.cssClass);\n this.setProperties({\n text: null\n }, true);\n this.treeObj.destroy();\n this.destroyFilter();\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n if (this.element.tagName !== this.getDirective()) {\n this.inputWrapper.parentElement.insertBefore(this.element, this.inputWrapper);\n }\n Input.setValue(null, this.inputEle, this.floatLabelType);\n detach(this.inputWrapper);\n detach(this.popupDiv);\n detach(this.hiddenElement);\n Input.setRipple(false, [this.inputObj]);\n this.element.classList.remove('e-input');\n if (this.showCheckBox || this.allowMultiSelection || this.value && this.valueTemplateContainer) {\n this.element.classList.remove(CHIP_INPUT);\n }\n detach(this.inputObj.container);\n if (this.inputObj.buttons.length) {\n detach(this.inputObj.buttons[0]);\n }\n this.inputObj = null;\n while (this.hiddenElement.options.length > 0) {\n this.hiddenElement.remove(0);\n }\n this.hiddenElement.innerHTML = '';\n this.hiddenElement = null;\n this.inputWrapper.innerHTML = '';\n this.inputWrapper = null;\n this.popupDiv = null;\n this.tree = null;\n this.popupObj = null;\n this.treeObj = null;\n this.overAllClear = null;\n if (this.chipCollection) {\n var chipsIcons = selectAll('.e-chips-close', this.chipCollection);\n for (var _i = 0, chipsIcons_1 = chipsIcons; _i < chipsIcons_1.length; _i++) {\n var element = chipsIcons_1[_i];\n EventHandler.remove(element, 'mouseup', this.removeChip);\n }\n }\n this.chipWrapper = null;\n this.chipCollection = null;\n this.checkAllParent = null;\n this.selectAllSpan = null;\n this.checkBoxElement = null;\n this.checkWrapper = null;\n this.popupEle = null;\n this.header = null;\n this.footer = null;\n this.overFlowWrapper = null;\n this.keyboardModule = null;\n _super.prototype.destroy.call(this);\n this.setProperties({\n value: []\n }, true);\n };\n DropDownTree.prototype.destroyFilter = function () {\n if (this.filterObj) {\n this.filterObj.destroy();\n detach(this.filterObj.element);\n detach(this.filterContainer);\n this.filterObj = null;\n }\n };\n DropDownTree.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n if (this.isReact) {\n this.clearTemplate(['headerTemplate', 'footerTemplate', 'itemTemplate', 'actionFailureTemplate', 'noRecordsTemplate']);\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n };\n /**\n * Ensures visibility of the Dropdown Tree item by using item value or item element.\n * If many Dropdown Tree items are present, and we are in need to find a particular item, then the `ensureVisible` property\n * helps you to bring the item to visibility by expanding the Dropdown Tree and scrolling to the specific item.\n *\n * @param {string | Element} item - Specifies the value of Dropdown Tree item/ Dropdown Tree item element.\n * @returns {void}\n */\n DropDownTree.prototype.ensureVisible = function (item) {\n this.treeObj.ensureVisible(item);\n };\n /**\n * To get the updated data source of the Dropdown Tree.\n *\n * @param {string | Element} item - Specifies the value of Dropdown Tree item/ Dropdown Tree item element\n * @returns {'{[key: string]: Object }[]'} - returns the updated data source of the Dropdown Tree.\n */\n DropDownTree.prototype.getData = function (item) {\n return this.treeObj.getTreeData(item);\n };\n /**\n * Close the Dropdown tree pop-up.\n *\n * @returns {void}\n */\n DropDownTree.prototype.hidePopup = function () {\n var eventArgs = {\n popup: this.popupObj,\n cancel: false\n };\n this.trigger('close', eventArgs);\n if (eventArgs.cancel) {\n return;\n }\n this.inputWrapper.classList.remove(ICONANIMATION);\n if (this.popupEle) {\n addClass([this.popupEle], DDTHIDEICON);\n }\n attributes(this.inputEle, {\n 'aria-expanded': 'false'\n });\n if (this.popupObj && this.isPopupOpen) {\n this.popupObj.hide();\n if (this.inputFocus) {\n this.inputWrapper.focus();\n if (this.allowFiltering) {\n addClass([this.inputWrapper], [INPUTFOCUS]);\n }\n }\n if (this.isFilteredData) {\n this.treeObj['treeData'] = this.treeData;\n }\n if (this.destroyPopupOnHide) {\n this.isFirstRender = true;\n this.destroyPopup();\n }\n }\n };\n /**\n * Based on the state parameter, entire list item will be selected or deselected.\n *\n * @param {boolean} state - Unselects/Selects entire Dropdown Tree items.\n * @returns {void}\n *\n */\n DropDownTree.prototype.selectAll = function (state) {\n this.selectAllItems(state);\n };\n /**\n * Opens the popup that displays the Dropdown Tree items.\n *\n * @returns {void}\n */\n DropDownTree.prototype.showPopup = function () {\n if (!this.enabled || this.readonly || this.isPopupOpen) {\n return;\n }\n this.renderPopup();\n this.focusIn();\n };\n /**\n * Return the module name.\n *\n * @private\n * @returns {string} - returns the module name.\n */\n DropDownTree.prototype.getModuleName = function () {\n return 'dropdowntree';\n };\n __decorate([Property('The Request Failed')], DropDownTree.prototype, \"actionFailureTemplate\", void 0);\n __decorate([Property(false)], DropDownTree.prototype, \"allowFiltering\", void 0);\n __decorate([Property(false)], DropDownTree.prototype, \"allowMultiSelection\", void 0);\n __decorate([Property(true)], DropDownTree.prototype, \"changeOnBlur\", void 0);\n __decorate([Property('')], DropDownTree.prototype, \"cssClass\", void 0);\n __decorate([Property('${value.length} item(s) selected')], DropDownTree.prototype, \"customTemplate\", void 0);\n __decorate([Property(',')], DropDownTree.prototype, \"delimiterChar\", void 0);\n __decorate([Property(true)], DropDownTree.prototype, \"enabled\", void 0);\n __decorate([Complex({}, Fields)], DropDownTree.prototype, \"fields\", void 0);\n __decorate([Property(null)], DropDownTree.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([Property('StartsWith')], DropDownTree.prototype, \"filterType\", void 0);\n __decorate([Property('Never')], DropDownTree.prototype, \"floatLabelType\", void 0);\n __decorate([Property(null)], DropDownTree.prototype, \"footerTemplate\", void 0);\n __decorate([Property(false)], DropDownTree.prototype, \"ignoreAccent\", void 0);\n __decorate([Property(true)], DropDownTree.prototype, \"ignoreCase\", void 0);\n __decorate([Property(null)], DropDownTree.prototype, \"headerTemplate\", void 0);\n __decorate([Property({})], DropDownTree.prototype, \"htmlAttributes\", void 0);\n __decorate([Property(null)], DropDownTree.prototype, \"itemTemplate\", void 0);\n __decorate([Property('Default')], DropDownTree.prototype, \"mode\", void 0);\n __decorate([Property('No Records Found')], DropDownTree.prototype, \"noRecordsTemplate\", void 0);\n __decorate([Property(null)], DropDownTree.prototype, \"placeholder\", void 0);\n __decorate([Property('300px')], DropDownTree.prototype, \"popupHeight\", void 0);\n __decorate([Property('100%')], DropDownTree.prototype, \"popupWidth\", void 0);\n __decorate([Property(false)], DropDownTree.prototype, \"readonly\", void 0);\n __decorate([Property(false)], DropDownTree.prototype, \"showSelectAll\", void 0);\n __decorate([Property('Select All')], DropDownTree.prototype, \"selectAllText\", void 0);\n __decorate([Property(false)], DropDownTree.prototype, \"showCheckBox\", void 0);\n __decorate([Property(true)], DropDownTree.prototype, \"destroyPopupOnHide\", void 0);\n __decorate([Property(true)], DropDownTree.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([Property(true)], DropDownTree.prototype, \"showClearButton\", void 0);\n __decorate([Property(true)], DropDownTree.prototype, \"showDropDownIcon\", void 0);\n __decorate([Property('None')], DropDownTree.prototype, \"sortOrder\", void 0);\n __decorate([Property(null)], DropDownTree.prototype, \"text\", void 0);\n __decorate([Complex({}, TreeSettings)], DropDownTree.prototype, \"treeSettings\", void 0);\n __decorate([Property('Unselect All')], DropDownTree.prototype, \"unSelectAllText\", void 0);\n __decorate([Property(null)], DropDownTree.prototype, \"value\", void 0);\n __decorate([Property(null)], DropDownTree.prototype, \"valueTemplate\", void 0);\n __decorate([Property('100%')], DropDownTree.prototype, \"width\", void 0);\n __decorate([Property(1000)], DropDownTree.prototype, \"zIndex\", void 0);\n __decorate([Property(false)], DropDownTree.prototype, \"wrapText\", void 0);\n __decorate([Event()], DropDownTree.prototype, \"actionFailure\", void 0);\n __decorate([Event()], DropDownTree.prototype, \"beforeOpen\", void 0);\n __decorate([Event()], DropDownTree.prototype, \"change\", void 0);\n __decorate([Event()], DropDownTree.prototype, \"close\", void 0);\n __decorate([Event()], DropDownTree.prototype, \"blur\", void 0);\n __decorate([Event()], DropDownTree.prototype, \"created\", void 0);\n __decorate([Event()], DropDownTree.prototype, \"dataBound\", void 0);\n __decorate([Event()], DropDownTree.prototype, \"destroyed\", void 0);\n __decorate([Event()], DropDownTree.prototype, \"filtering\", void 0);\n __decorate([Event()], DropDownTree.prototype, \"focus\", void 0);\n __decorate([Event()], DropDownTree.prototype, \"keyPress\", void 0);\n __decorate([Event()], DropDownTree.prototype, \"open\", void 0);\n __decorate([Event()], DropDownTree.prototype, \"select\", void 0);\n DropDownTree = __decorate([NotifyPropertyChanges], DropDownTree);\n return DropDownTree;\n}(Component);\nexport { DropDownTree };","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-list/drop-down-list-model.d.ts'/>\nimport { EventHandler, Property, Event, addClass, Browser, removeClass, detach } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, NotifyPropertyChanges, getValue, setValue } from '@syncfusion/ej2-base';\nimport { DropDownList, dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { Search } from '../common/incremental-search';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\nvar SPINNER_CLASS = 'e-atc-spinner-icon';\ndropDownListClasses.root = 'e-combobox';\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The ComboBox component allows the user to type a value or choose an option from the list of predefined options.\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 * let games:ComboBox = new ComboBox();\n * games.appendTo(\"#list\");\n * ```\n */\nvar ComboBox = /** @class */function (_super) {\n __extends(ComboBox, _super);\n /**\n * *Constructor for creating the component\n *\n * @param {ComboBoxModel} options - Specifies the ComboBox model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function ComboBox(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n ComboBox.prototype.getLocaleName = function () {\n return 'combo-box';\n };\n ComboBox.prototype.wireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur, this);\n EventHandler.add(this.inputWrapper.container, 'blur', this.onBlurHandler, this);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick, this);\n }\n EventHandler.add(this.inputElement, 'focus', this.targetFocus, this);\n if (!this.readonly) {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n }\n this.bindCommonEvent();\n };\n ComboBox.prototype.preventBlur = function (e) {\n if (!this.allowFiltering && document.activeElement !== this.inputElement && !document.activeElement.classList.contains(dropDownListClasses.input) && Browser.isDevice || !Browser.isDevice) {\n e.preventDefault();\n }\n };\n ComboBox.prototype.onBlurHandler = function (e) {\n var inputValue = this.inputElement && this.inputElement.value === '' ? null : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData) && !isNullOrUndefined(inputValue) && inputValue !== this.text) {\n this.customValue(e);\n }\n _super.prototype.onBlurHandler.call(this, e);\n };\n ComboBox.prototype.targetElement = function () {\n return this.inputElement;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldText = function (text) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n this.removeSelection();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldValue = function (value) {\n if (this.allowCustom) {\n this.selectedLI = this.getElementByValue(this.value);\n this.valueMuteChange(this.value);\n } else {\n this.valueMuteChange(null);\n }\n this.removeSelection();\n this.setHiddenValue();\n };\n ComboBox.prototype.valueMuteChange = function (value) {\n value = this.allowObjectBinding && !isNullOrUndefined(value) ? getValue(this.fields.value ? this.fields.value : '', value) : value;\n var inputValue = isNullOrUndefined(value) ? null : value.toString();\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n var changeData = {};\n if (this.allowObjectBinding) {\n value = this.getDataByValue(value);\n if (isNullOrUndefined(value)) {\n var fields_1 = this.fields;\n var isvalidTextField_1 = false;\n var isValidValue_1 = false;\n if (this.allowObjectBinding) {\n var keys = Object.keys(this.value);\n keys.forEach(function (key) {\n if (key === fields_1.value) {\n isValidValue_1 = true;\n return;\n }\n });\n keys.forEach(function (key) {\n if (key === fields_1.text) {\n isvalidTextField_1 = true;\n return;\n }\n });\n }\n changeData = {\n text: isValidValue_1 ? isvalidTextField_1 ? getValue(fields_1.text, this.value) : getValue(fields_1.value, this.value) : null,\n value: isValidValue_1 ? this.value : null,\n index: null\n };\n }\n }\n if (this.allowObjectBinding) {\n this.setProperties(changeData, true);\n } else {\n this.setProperties({\n value: value,\n text: value ? value.toString() : value,\n index: null\n }, true);\n }\n this.activeIndex = this.index;\n var fields = this.fields;\n var dataItem = {};\n dataItem[fields.text] = isNullOrUndefined(value) ? null : value.toString();\n dataItem[fields.value] = isNullOrUndefined(value) ? null : value.toString();\n this.itemData = dataItem;\n this.item = null;\n if (!this.allowObjectBinding && this.previousValue !== this.value || this.allowObjectBinding && this.previousValue && this.value && !this.isObjectInArray(this.previousValue, [this.value])) {\n this.detachChangeEvent(null);\n }\n };\n ComboBox.prototype.updateValues = function () {\n if (this.fields.disabled) {\n if (this.value != null) {\n this.value = !this.isDisableItemValue(this.value) ? this.value : null;\n }\n if (this.text != null) {\n this.text = !this.isDisabledItemByIndex(this.getIndexByValue(this.getValueByText(this.text))) ? this.text : null;\n }\n if (this.index != null) {\n this.index = !this.isDisabledItemByIndex(this.index) ? this.index : null;\n this.activeIndex = this.index;\n }\n }\n if (!isNullOrUndefined(this.value)) {\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue(this.fields.value ? this.fields.value : '', this.value) : this.value;\n var li = this.getElementByValue(currentValue);\n var doesItemExist = !isNullOrUndefined(li) ? true : false;\n if (this.enableVirtualization && this.value) {\n var fields = this.fields.value ? this.fields.value : '';\n var currentValue_1 = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue(this.fields.value ? this.fields.value : '', this.value) : this.value;\n if (this.dataSource instanceof DataManager) {\n var getItem = new DataManager(this.virtualGroupDataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue_1)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n doesItemExist = true;\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.getDataByValue(dataItem.value) : dataItem.value;\n if (this.value === dataItem.value && this.text !== dataItem.text || this.value !== dataItem.value && this.text === dataItem.text) {\n this.setProperties({\n 'text': dataItem.text ? dataItem.text.toString() : dataItem.text,\n 'value': value\n });\n }\n }\n } else {\n var getItem = new DataManager(this.dataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue_1)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n doesItemExist = true;\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.getDataByValue(dataItem.value) : dataItem.value;\n if (this.value === dataItem.value && this.text !== dataItem.text || this.value !== dataItem.value && this.text === dataItem.text) {\n this.setProperties({\n 'text': dataItem.text ? dataItem.text.toString() : dataItem.text,\n 'value': value\n });\n }\n }\n }\n }\n if (li) {\n this.setSelection(li, null);\n } else if (!this.enableVirtualization && this.allowCustom || this.allowCustom && this.enableVirtualization && !doesItemExist) {\n this.valueMuteChange(this.value);\n } else if (!this.enableVirtualization || this.enableVirtualization && !doesItemExist) {\n this.valueMuteChange(null);\n }\n } else if (this.text && isNullOrUndefined(this.value)) {\n var li = this.getElementByText(this.text);\n if (li) {\n this.setSelection(li, null);\n } else {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n }\n } else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n ComboBox.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement && this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n } else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n ComboBox.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'role': 'combobox',\n 'aria-autocomplete': 'both',\n 'aria-labelledby': this.hiddenElement.id,\n 'aria-expanded': 'false',\n 'aria-readonly': this.readonly ? this.readonly.toString() : 'false',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n };\n return ariaAttributes;\n };\n ComboBox.prototype.searchLists = function (e) {\n this.isTyped = true;\n if (this.isFiltering()) {\n _super.prototype.searchLists.call(this, e);\n if (this.ulElement && this.filterInput.value.trim() === '') {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n } else {\n if (this.ulElement && this.inputElement.value === '' && this.preventAutoFill) {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n this.incrementalSearch(e);\n }\n };\n ComboBox.prototype.getNgDirective = function () {\n return 'EJS-COMBOBOX';\n };\n ComboBox.prototype.setSearchBox = function () {\n this.filterInput = this.inputElement;\n var searchBoxContainer = this.isFiltering() || this.isReact && this.getModuleName() === 'combobox' ? this.inputWrapper : inputObject;\n return searchBoxContainer;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.isSelectCustom) {\n this.removeSelection();\n }\n if (!this.preventAutoFill && this.getModuleName() === 'combobox' && this.isTyped && !this.enableVirtualization) {\n setTimeout(function () {\n _this.inlineSearch();\n });\n }\n };\n ComboBox.prototype.getFocusElement = function () {\n var dataItem = this.isSelectCustom ? {\n text: ''\n } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : this.list;\n var isSelected = dataItem.text && dataItem.text.toString() === this.inputElement.value && !isNullOrUndefined(selected);\n if (isSelected) {\n return selected;\n }\n if ((Browser.isDevice && !this.isDropDownClick || !Browser.isDevice) && !isNullOrUndefined(this.liCollections) && this.liCollections.length > 0) {\n var inputValue = this.inputElement.value;\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var activeItem = Search(inputValue, this.liCollections, this.filterType, true, dataSource, this.fields, type, this.ignoreAccent);\n if (this.enableVirtualization && inputValue !== '' && this.getModuleName() !== 'autocomplete' && this.isTyped && !this.allowFiltering) {\n var updatingincrementalindex = false;\n var isEndIndexValid = this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount;\n var isIncrementalEndIndexZero = this.incrementalEndIndex === 0;\n if (isEndIndexValid || isIncrementalEndIndexZero) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = this.incrementalEndIndex;\n if (isIncrementalEndIndexZero) {\n this.incrementalEndIndex = Math.min(100, this.totalItemCount);\n } else {\n this.incrementalEndIndex = Math.min(this.incrementalEndIndex + 100, this.totalItemCount);\n }\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeItem = Search(inputValue, this.incrementalLiCollections, this.filterType, true, dataSource, this.fields, type);\n while (isNullOrUndefined(activeItem.item) && 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 activeItem = Search(inputValue, this.incrementalLiCollections, this.filterType, true, dataSource, this.fields, type);\n if (!isNullOrUndefined(activeItem)) {\n activeItem.index = activeItem.index + this.incrementalStartIndex;\n break;\n }\n if (isNullOrUndefined(activeItem) && this.incrementalEndIndex >= this.totalItemCount) {\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n break;\n }\n }\n var startIndex = activeItem.index - (this.itemCount / 2 - 2) > 0 ? activeItem.index - (this.itemCount / 2 - 2) : 0;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n if (startIndex !== this.viewPortInfo.startIndex) {\n this.updateIncrementalView(startIndex, endIndex);\n }\n if (!isNullOrUndefined(activeItem.item)) {\n var startIndex_1 = this.viewPortInfo.startIndex + (this.itemCount / 2 - 2) < this.totalItemCount ? this.viewPortInfo.startIndex + (this.itemCount / 2 - 2) : this.totalItemCount;\n var endIndex_1 = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex_1, endIndex_1);\n activeItem.item = this.getElementByValue(activeItem.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 (activeItem && activeItem.item) {\n activeItem.item = this.getElementByValue(activeItem.item.getAttribute('data-value'));\n }\n }\n var activeElement = activeItem.item;\n if (!isNullOrUndefined(activeElement)) {\n var count = this.getIndexByValue(activeElement.getAttribute('data-value')) - 1;\n var height = parseInt(getComputedStyle(this.liCollections[0], null).getPropertyValue('height'), 10);\n if (!isNaN(height) && this.getModuleName() !== 'autocomplete') {\n this.removeFocus();\n var fixedHead = this.fields.groupBy ? this.liCollections[0].offsetHeight : 0;\n if (!this.enableVirtualization) {\n this.list.scrollTop = count * height + fixedHead;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var virtualContent = this.list.getElementsByClassName('e-virtual-ddl-content')[0];\n virtualContent.style = this.getTransformValues();\n if (this.enableVirtualization && !this.fields.groupBy) {\n var selectedLiOffsetTop = activeElement.offsetTop;\n var virtualListInfoStartIndex = this.virtualListInfo && this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex : 0;\n var virtualListHeight = activeElement.offsetHeight;\n var selectedLiOffsetTopWithStartIndex = selectedLiOffsetTop + virtualListInfoStartIndex * virtualListHeight;\n var virtualListLength = this.list.querySelectorAll('.e-virtual-list').length;\n var scrollTopOffset = virtualListLength * virtualListHeight;\n this.list.scrollTop = selectedLiOffsetTopWithStartIndex - scrollTopOffset;\n }\n }\n addClass([activeElement], dropDownListClasses.focus);\n }\n } else {\n if (this.isSelectCustom && this.inputElement.value.trim() !== '') {\n this.removeFocus();\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n }\n }\n return activeElement;\n } else {\n return null;\n }\n };\n ComboBox.prototype.setValue = function (e) {\n if (e && e.type === 'keydown' && e.action === 'enter' || e && e.type === 'click') {\n this.removeFillSelection();\n }\n if (this.autofill && this.getModuleName() === 'combobox' && e && e.type === 'keydown' && e.action !== 'enter') {\n this.preventAutoFill = false;\n this.inlineSearch(e);\n return false;\n } else {\n return _super.prototype.setValue.call(this, e);\n }\n };\n ComboBox.prototype.checkCustomValue = function () {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue(this.fields.value ? this.fields.value : '', this.value) : this.value;\n this.itemData = this.getDataByValue(value);\n var dataItem = this.getItemData();\n var setValue = this.allowObjectBinding ? this.itemData : dataItem.value;\n if (!(this.allowCustom && isNullOrUndefined(dataItem.value) && isNullOrUndefined(dataItem.text))) {\n this.setProperties({\n 'value': setValue\n }, !this.allowCustom);\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = this.getModuleName() === 'autocomplete' ? this.inputWrapper.buttons[0] || this.inputWrapper.clearButton || Input.appendSpan('e-input-group-icon ' + SPINNER_CLASS, this.inputWrapper.container, this.createElement) : this.inputWrapper.buttons[0] || this.inputWrapper.clearButton;\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\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 ComboBox.prototype.setAutoFill = function (activeElement, isHover) {\n if (!isHover) {\n this.setHoverList(activeElement);\n }\n if (this.autofill && !this.preventAutoFill) {\n var currentValue = this.getTextByValue(activeElement.getAttribute('data-value')).toString();\n var currentFillValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n if (this.getModuleName() === 'combobox') {\n if (!this.isSelected && !this.allowObjectBinding && this.previousValue !== currentFillValue || this.allowObjectBinding && this.previousValue && currentFillValue && !this.isObjectInArray(this.previousValue, [this.getDataByValue(currentFillValue)])) {\n this.updateSelectedItem(activeElement, null);\n this.isSelected = true;\n this.previousValue = this.allowObjectBinding ? this.getDataByValue(this.getFormattedValue(activeElement.getAttribute('data-value'))) : this.getFormattedValue(activeElement.getAttribute('data-value'));\n } else {\n this.updateSelectedItem(activeElement, null, true);\n }\n }\n if (!this.isAndroidAutoFill(currentValue)) {\n this.setAutoFillSelection(currentValue, isHover);\n }\n }\n };\n ComboBox.prototype.isAndroidAutoFill = function (value) {\n if (Browser.isAndroid) {\n var currentPoints = this.getSelectionPoints();\n var prevEnd = this.prevSelectPoints.end;\n var curEnd = currentPoints.end;\n var prevStart = this.prevSelectPoints.start;\n var curStart = currentPoints.start;\n if (prevEnd !== 0 && (prevEnd === value.length && prevStart === value.length || prevStart > curStart && prevEnd > curEnd || prevEnd === curEnd && prevStart === curStart)) {\n return true;\n } else {\n return false;\n }\n } else {\n return false;\n }\n };\n ComboBox.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || !isNullOrUndefined(property) && isNullOrUndefined(property.dataSource)) {\n _super.prototype.clearAll.call(this, e);\n }\n if (this.isFiltering() && !isNullOrUndefined(e) && e.target === this.inputWrapper.clearButton) {\n this.typedString = this.filterInput.value;\n this.searchLists(e);\n }\n };\n ComboBox.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n ComboBox.prototype.inlineSearch = function (e) {\n var isKeyNavigate = e && (e.action === 'down' || e.action === 'up' || e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown');\n var activeElement = isKeyNavigate ? this.liCollections[this.activeIndex] : this.getFocusElement();\n if (!isNullOrUndefined(activeElement)) {\n if (!isKeyNavigate) {\n var value = this.getFormattedValue(activeElement.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.activeIndex = !isNullOrUndefined(this.activeIndex) ? this.activeIndex : null;\n }\n this.preventAutoFill = this.inputElement.value === '' ? false : this.preventAutoFill;\n this.setAutoFill(activeElement, isKeyNavigate);\n } else if (!isNullOrUndefined(this.inputElement) && this.inputElement.value === '') {\n this.activeIndex = null;\n if (!isNullOrUndefined(this.list)) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n var focusItem = this.list.querySelector('.' + dropDownListClasses.li);\n this.setHoverList(focusItem);\n }\n } else {\n this.activeIndex = null;\n this.removeSelection();\n if (this.liCollections && this.liCollections.length > 0 && !this.isCustomFilter) {\n this.removeFocus();\n }\n }\n };\n ComboBox.prototype.incrementalSearch = function (e) {\n this.showPopup(e);\n if (!isNullOrUndefined(this.listData)) {\n this.inlineSearch(e);\n e.preventDefault();\n }\n };\n ComboBox.prototype.setAutoFillSelection = function (currentValue, isKeyNavigate) {\n if (isKeyNavigate === void 0) {\n isKeyNavigate = false;\n }\n var selection = this.getSelectionPoints();\n var value = this.inputElement.value.substr(0, selection.start);\n if (value && value.toLowerCase() === currentValue.substr(0, selection.start).toLowerCase()) {\n var inputValue = value + currentValue.substr(value.length, currentValue.length);\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(selection.start, this.inputElement.value.length);\n } else if (isKeyNavigate) {\n Input.setValue(currentValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(0, this.inputElement.value.length);\n }\n };\n ComboBox.prototype.getValueByText = function (text) {\n return _super.prototype.getValueByText.call(this, text, true, this.ignoreAccent);\n };\n ComboBox.prototype.unWireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur);\n EventHandler.remove(this.inputWrapper.container, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick);\n }\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'focus', this.targetFocus);\n if (!this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n }\n this.unBindCommonEvent();\n };\n ComboBox.prototype.setSelection = function (li, e) {\n _super.prototype.setSelection.call(this, li, e);\n if (!isNullOrUndefined(li) && !this.autofill && !this.isDropDownClick) {\n this.removeFocus();\n }\n };\n ComboBox.prototype.selectCurrentItem = function (e) {\n var li;\n if (this.isPopupOpen) {\n if (this.isSelected) {\n li = this.list.querySelector('.' + dropDownListClasses.selected);\n } else {\n li = this.list.querySelector('.' + dropDownListClasses.focus);\n }\n if (this.isDisabledElement(li)) {\n return;\n }\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n }\n if (e.action === 'enter' && this.inputElement.value === '') {\n this.clearAll(e);\n } else if (this.isTyped && !this.isSelected && isNullOrUndefined(li)) {\n this.customValue(e);\n }\n this.hidePopup(e);\n };\n ComboBox.prototype.setHoverList = function (li) {\n this.removeSelection();\n if (this.isValidLI(li) && !li.classList.contains(dropDownListClasses.selected)) {\n this.removeFocus();\n li.classList.add(dropDownListClasses.focus);\n }\n };\n ComboBox.prototype.targetFocus = function (e) {\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = false;\n }\n this.onFocus(e);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n };\n ComboBox.prototype.dropDownClick = function (e) {\n e.preventDefault();\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.dropDownClick.call(this, e);\n };\n ComboBox.prototype.customValue = function (e) {\n var _this = this;\n var value = this.getValueByText(this.inputElement.value);\n if (!this.allowCustom && this.inputElement.value !== '') {\n var previousValue = this.previousValue;\n var currentValue = this.value;\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n this.setProperties({\n value: value\n });\n if (isNullOrUndefined(this.value)) {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.autofill && (!this.allowObjectBinding && previousValue === this.value || this.allowObjectBinding && previousValue && this.isObjectInArray(previousValue, [this.value])) && (!this.allowObjectBinding && currentValue !== this.value || this.allowObjectBinding && currentValue && !this.isObjectInArray(currentValue, [this.value]))) {\n this.onChangeEvent(null);\n }\n } else if (this.inputElement.value !== '') {\n var previousValue_1 = this.value;\n if (isNullOrUndefined(value)) {\n var value_1 = this.inputElement.value === '' ? null : this.inputElement.value;\n // eslint-disable-next-line max-len\n var eventArgs = {\n text: value_1,\n item: {}\n };\n this.isObjectCustomValue = true;\n if (!this.initial) {\n this.trigger('customValueSpecifier', eventArgs, function (eventArgs) {\n _this.updateCustomValueCallback(value_1, eventArgs, previousValue_1, e);\n });\n } else {\n this.updateCustomValueCallback(value_1, eventArgs, previousValue_1);\n }\n } else {\n this.isSelectCustom = false;\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n this.setProperties({\n value: value\n });\n if (!this.allowObjectBinding && previousValue_1 !== this.value || this.allowObjectBinding && previousValue_1 && this.value && !this.isObjectInArray(previousValue_1, [this.value])) {\n this.onChangeEvent(e);\n }\n }\n } else if (this.allowCustom && this.isFocused) {\n this.isSelectCustom = true;\n }\n };\n ComboBox.prototype.updateCustomValueCallback = function (value, eventArgs, previousValue, e) {\n var _this = this;\n var fields = this.fields;\n var item = eventArgs.item;\n var dataItem = {};\n if (item && getValue(fields.text, item) && getValue(fields.value, item)) {\n dataItem = item;\n } else {\n setValue(fields.text, value, dataItem);\n setValue(fields.value, value, dataItem);\n }\n this.itemData = dataItem;\n var emptyObject = {};\n if (this.allowObjectBinding) {\n var keys = this.listData && this.listData.length > 0 ? Object.keys(this.listData[0]) : Object.keys(this.itemData);\n if (!(this.listData && this.listData.length > 0) && (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox' && this.allowFiltering)) {\n keys = this.firstItem ? Object.keys(this.firstItem) : Object.keys(this.itemData);\n }\n // Create an empty object with predefined keys\n keys.forEach(function (key) {\n emptyObject[key] = key === fields.value || key === fields.text ? getValue(fields.value, _this.itemData) : null;\n });\n }\n var changeData = {\n text: getValue(fields.text, this.itemData),\n value: this.allowObjectBinding ? emptyObject : getValue(fields.value, this.itemData),\n index: null\n };\n this.setProperties(changeData, true);\n this.setSelection(null, null);\n this.isSelectCustom = true;\n this.isObjectCustomValue = false;\n if (!this.allowObjectBinding && previousValue !== this.value || this.allowObjectBinding && (previousValue == null && this.value !== null || previousValue && !this.isObjectInArray(previousValue, [this.value]))) {\n this.onChangeEvent(e, true);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {ComboBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {ComboBoxModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n ComboBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'combobox') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp, oldProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n if (this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n } else {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n }\n this.setReadOnly();\n break;\n case 'allowFiltering':\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n break;\n case 'allowCustom':\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var comboProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, comboProps.newProperty, comboProps.oldProperty);\n if (this.isFiltering() && prop === 'dataSource' && isNullOrUndefined(this.list) && this.itemTemplate && this.getModuleName() === 'combobox') {\n _super.prototype.renderList.call(this);\n }\n break;\n }\n }\n }\n };\n /**\n * To initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.render = function () {\n _super.prototype.render.call(this);\n this.setSearchBox();\n this.renderComplete();\n this.autoFill = this.autofill;\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 ComboBox.prototype.getModuleName = function () {\n return 'combobox';\n };\n /**\n * Adds a new item to the combobox 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 * @deprecated\n */\n ComboBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * To filter the 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 * @deprecated\n */\n ComboBox.prototype.filter = function (dataSource, query, fields) {\n _super.prototype.filter.call(this, dataSource, query, fields);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.showPopup.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n var inputValue = this.inputElement && this.inputElement.value === '' ? null : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData)) {\n var isEscape = this.isEscapeKey;\n if (this.isEscapeKey) {\n Input.setValue(this.typedString, this.inputElement, this.floatLabelType, this.showClearButton);\n this.isEscapeKey = false;\n }\n if (this.autofill) {\n this.removeFillSelection();\n }\n var dataItem = this.isSelectCustom ? {\n text: ''\n } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : null;\n if (this.inputElement && dataItem.text === this.inputElement.value && !isNullOrUndefined(selected)) {\n if (this.isSelected) {\n this.onChangeEvent(e);\n this.isSelectCustom = false;\n }\n _super.prototype.hidePopup.call(this, e);\n return;\n }\n if (this.getModuleName() === 'combobox' && this.inputElement.value.trim() !== '') {\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, this.liCollections, 'Equal', true, dataSource, this.fields, type);\n this.selectedLI = searchItem.item;\n if (isNullOrUndefined(searchItem.index)) {\n searchItem.index = Search(this.inputElement.value, this.liCollections, 'StartsWith', true, dataSource, this.fields, type).index;\n }\n this.activeIndex = searchItem.index;\n if (!isNullOrUndefined(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, null, true);\n } else if (isEscape) {\n this.isSelectCustom = true;\n this.removeSelection();\n }\n }\n if (!this.isEscapeKey && this.isTyped && !this.isInteracted) {\n this.customValue(e);\n }\n }\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue(this.fields.value ? this.fields.value : '', this.value) : this.value;\n if (isNullOrUndefined(this.listData) && this.allowCustom && !isNullOrUndefined(inputValue) && inputValue !== value) {\n this.customValue();\n }\n _super.prototype.hidePopup.call(this, e);\n };\n /**\n * Sets the focus to the component for interaction.\n *\n * @returns {void}\n */\n ComboBox.prototype.focusIn = function () {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.focusIn.call(this);\n };\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.clear = function () {\n this.value = null;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.focusOut.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n * @deprecated\n */\n ComboBox.prototype.getItems = function () {\n return _super.prototype.getItems.call(this);\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n * @deprecated\n */\n ComboBox.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n ComboBox.prototype.renderHightSearch = function () {\n // update high light search\n };\n __decorate([Property(false)], ComboBox.prototype, \"autofill\", void 0);\n __decorate([Property(true)], ComboBox.prototype, \"allowCustom\", void 0);\n __decorate([Property({})], ComboBox.prototype, \"htmlAttributes\", void 0);\n __decorate([Property(false)], ComboBox.prototype, \"allowFiltering\", void 0);\n __decorate([Property(true)], ComboBox.prototype, \"isDeviceFullScreen\", void 0);\n __decorate([Property(null)], ComboBox.prototype, \"query\", void 0);\n __decorate([Property(null)], ComboBox.prototype, \"index\", void 0);\n __decorate([Property(true)], ComboBox.prototype, \"showClearButton\", void 0);\n __decorate([Property(false)], ComboBox.prototype, \"enableRtl\", void 0);\n __decorate([Event()], ComboBox.prototype, \"customValueSpecifier\", void 0);\n __decorate([Event()], ComboBox.prototype, \"filtering\", void 0);\n __decorate([Property(null)], ComboBox.prototype, \"valueTemplate\", void 0);\n __decorate([Property('Never')], ComboBox.prototype, \"floatLabelType\", void 0);\n __decorate([Property(null)], ComboBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([Property(null)], ComboBox.prototype, \"cssClass\", void 0);\n __decorate([Property(null)], ComboBox.prototype, \"headerTemplate\", void 0);\n __decorate([Property(null)], ComboBox.prototype, \"footerTemplate\", void 0);\n __decorate([Property(null)], ComboBox.prototype, \"placeholder\", void 0);\n __decorate([Property('100%')], ComboBox.prototype, \"width\", void 0);\n __decorate([Property('300px')], ComboBox.prototype, \"popupHeight\", void 0);\n __decorate([Property('100%')], ComboBox.prototype, \"popupWidth\", void 0);\n __decorate([Property(false)], ComboBox.prototype, \"readonly\", void 0);\n __decorate([Property(null)], ComboBox.prototype, \"text\", void 0);\n __decorate([Property(null)], ComboBox.prototype, \"value\", void 0);\n __decorate([Property(false)], ComboBox.prototype, \"allowObjectBinding\", void 0);\n ComboBox = __decorate([NotifyPropertyChanges], ComboBox);\n return ComboBox;\n}(DropDownList);\nexport { ComboBox };","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='../combo-box/combo-box-model.d.ts'/>\nimport { Property, EventHandler, isNullOrUndefined, detach, getValue } from '@syncfusion/ej2-base';\nimport { Event, Complex } from '@syncfusion/ej2-base';\nimport { removeClass, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { ComboBox } from '../combo-box/combo-box';\nimport { highlightSearch, revertHighlightSearch } from '../common/highlight-search';\nimport { Search } from '../common/incremental-search';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\ndropDownListClasses.root = 'e-autocomplete';\ndropDownListClasses.icon = 'e-input-group-icon e-ddl-icon e-search-icon';\n/**\n * The AutoComplete component provides the matched suggestion list when type into the input,\n * from which the user can select one.\n * ```html\n * <input id=\"list\" type=\"text\"/>\n * ```\n * ```typescript\n * let atcObj:AutoComplete = new AutoComplete();\n * atcObj.appendTo(\"#list\");\n * ```\n */\nvar AutoComplete = /** @class */function (_super) {\n __extends(AutoComplete, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {AutoCompleteModel} options - Specifies the AutoComplete model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function AutoComplete(options, element) {\n var _this_1 = _super.call(this, options, element) || this;\n _this_1.isFiltered = false;\n _this_1.searchList = false;\n return _this_1;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n AutoComplete.prototype.getLocaleName = function () {\n return 'auto-complete';\n };\n AutoComplete.prototype.getNgDirective = function () {\n return 'EJS-AUTOCOMPLETE';\n };\n AutoComplete.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue(this.fields.value ? this.fields.value : '', this.value) : this.value;\n var filterType = this.queryString === '' && !isNullOrUndefined(value) ? 'equal' : this.filterType;\n var queryString = this.queryString === '' && !isNullOrUndefined(value) ? value : this.queryString;\n if (this.isFiltered) {\n if (this.enableVirtualization && !isNullOrUndefined(this.customFilterQuery)) {\n filterQuery = this.customFilterQuery.clone();\n } else if (!this.enableVirtualization) {\n return filterQuery;\n }\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n } else {\n var mapping = !isNullOrUndefined(this.fields.value) ? this.fields.value : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount) && !this.enableVirtualization) {\n // Since default value of suggestioncount is 20, checked the condition\n if (this.suggestionCount !== 20) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n if (this.enableVirtualization) {\n var queryTakeValue = 0;\n var querySkipValue = 0;\n var takeValue = this.getTakeValue();\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements].e.nos;\n }\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 var currentTakeValue = this.query.queries[queryElements].e.nos;\n queryTakeValue = takeValue <= currentTakeValue ? currentTakeValue : 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 === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n continue;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n var currentQueryTakeValue = filterQuery.queries[queryElements].e.nos;\n queryTakeValue = currentQueryTakeValue <= queryTakeValue ? queryTakeValue : currentQueryTakeValue;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n }\n }\n }\n if (querySkipValue > 0 && this.virtualItemStartIndex <= querySkipValue) {\n filterQuery.skip(querySkipValue);\n } else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n if (queryTakeValue > 0 && takeValue <= queryTakeValue) {\n filterQuery.take(queryTakeValue);\n } else {\n filterQuery.take(takeValue);\n }\n filterQuery.requiresCount();\n }\n return filterQuery;\n };\n AutoComplete.prototype.searchLists = function (e) {\n var _this_1 = this;\n this.isTyped = true;\n this.isDataFetched = this.isSelectCustom = false;\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n this.checkAndResetCache();\n if (isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this, e, true);\n }\n this.queryString = this.filterInput.value;\n if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields, null, e);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n this.isRequesting = false;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this_1.isFiltered = true;\n _this_1.customFilterQuery = query;\n _this_1.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this_1.isFiltered && !eventArgs.preventDefaultAction) {\n _this_1.searchList = true;\n _this_1.filterAction(_this_1.dataSource, null, _this_1.fields, e);\n }\n });\n };\n /**\n * To filter the 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 * @deprecated\n */\n AutoComplete.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.filterAction(dataSource, query, fields);\n };\n AutoComplete.prototype.filterAction = function (dataSource, query, fields, e) {\n this.beforePopupOpen = true;\n var isNoDataElement = this.list.classList.contains('e-nodata');\n if (this.queryString !== '' && this.queryString.length >= this.minLength) {\n if (this.enableVirtualization && this.isFiltering() && this.isTyped) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n this.resetList(dataSource, fields, query, e);\n isNoDataElement = this.list.classList.contains('e-nodata');\n if (this.enableVirtualization && !isNoDataElement) {\n if (!this.list.querySelector('.e-virtual-ddl-content') && this.list.querySelector('.e-list-parent')) {\n var virtualElement = this.createElement('div', {\n className: 'e-virtual-ddl-content'\n });\n virtualElement.style.cssText = this.getTransformValues();\n this.list.appendChild(virtualElement).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl') && this.list.parentElement) {\n var virtualElement = this.createElement('div', {\n id: this.element.id + '_popup',\n className: 'e-virtual-ddl'\n });\n virtualElement.style.cssText = this.GetVirtualTrackHeight();\n this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virtualElement);\n }\n }\n if (this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager) || this.getModuleName() === 'autocomplete' && this.dataSource instanceof DataManager && this.totalItemCount !== 0) {\n this.getFilteringSkeletonCount();\n }\n } else {\n this.hidePopup(e);\n this.beforePopupOpen = false;\n }\n this.renderReactTemplates();\n };\n AutoComplete.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || !isNullOrUndefined(property) && isNullOrUndefined(property.dataSource)) {\n _super.prototype.clearAll.call(this, e);\n this.checkAndResetCache();\n }\n if (this.beforePopupOpen) {\n this.hidePopup();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n if (!this.enableVirtualization) {\n this.fixedHeaderElement = null;\n }\n if (this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager) || this.getModuleName() === 'autocomplete' && this.dataSource instanceof DataManager && this.totalItemCount !== 0) {\n this.getFilteringSkeletonCount();\n }\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n var item = this.list.querySelector('.' + dropDownListClasses.li);\n if (!isNullOrUndefined(item)) {\n removeClass([item], dropDownListClasses.focus);\n }\n if (!isNullOrUndefined(this.itemData) && !this.enableVirtualization) {\n this.focusIndexItem();\n }\n this.postBackAction();\n };\n AutoComplete.prototype.postBackAction = function () {\n if (this.autofill && !isNullOrUndefined(this.liCollections[0]) && this.searchList) {\n var items = [this.liCollections[0]];\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, items, 'StartsWith', this.ignoreCase, dataSource, this.fields, type);\n this.searchList = false;\n if (!isNullOrUndefined(searchItem.item)) {\n _super.prototype.setAutoFill.call(this, this.liCollections[0], true);\n }\n }\n };\n AutoComplete.prototype.setSelection = function (li, e) {\n if (!this.isValidLI(li)) {\n this.selectedLI = li;\n return;\n }\n if (!isNullOrUndefined(e) && e.type === 'keydown' && e.action !== 'enter' && e.action !== 'tab' && this.isValidLI(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.setHoverList(li);\n this.selectedLI = li;\n this.setScrollPosition(e);\n if (this.autofill && this.isPopupOpen) {\n this.preventAutoFill = false;\n var isKeyNavigate = e && e.action === 'down' || e.action === 'up' || e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown';\n _super.prototype.setAutoFill.call(this, li, isKeyNavigate);\n }\n } else {\n _super.prototype.setSelection.call(this, li, e);\n this.isFiltered = false;\n }\n };\n AutoComplete.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this_1 = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n if (_this_1.element.tagName === _this_1.getNgDirective() && _this_1.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }, 0);\n } else {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n }\n };\n } else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n itemCreated_1.apply(_this_1, [e]);\n };\n }\n return fields;\n };\n AutoComplete.prototype.isFiltering = function () {\n return true;\n };\n AutoComplete.prototype.renderPopup = function (e) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n _super.prototype.renderPopup.call(this, e);\n };\n AutoComplete.prototype.isEditTextBox = function () {\n return false;\n };\n AutoComplete.prototype.isPopupButton = function () {\n return this.showPopupButton;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.isSelectFocusItem = function (element) {\n return false;\n };\n AutoComplete.prototype.setInputValue = function (newProp, oldProp) {\n var oldValue = oldProp && oldProp.text ? oldProp.text : oldProp ? oldProp.value : oldProp;\n var value = newProp && newProp.text ? newProp.text : newProp && newProp.value ? newProp.value : this.value;\n if (this.allowObjectBinding) {\n oldValue = !isNullOrUndefined(oldValue) ? getValue(this.fields.value ? this.fields.value : '', oldValue) : oldValue;\n value = !isNullOrUndefined(value) ? getValue(this.fields.value ? this.fields.value : '', value) : value;\n }\n if (value && this.typedString === '' && !this.allowCustom && !(this.dataSource instanceof DataManager)) {\n var checkFields1_1 = this.typeOfData(this.dataSource).typeof === 'string' ? '' : this.fields.value;\n var listLength_1 = this.getItems().length;\n var query = new Query();\n // eslint-disable-next-line @typescript-eslint/tslint/config\n var _this_2 = null || this;\n new DataManager(this.dataSource).executeQuery(query.where(new Predicate(checkFields1_1, 'equal', value))).then(function (e) {\n if (e.result.length > 0) {\n _this_2.value = checkFields1_1 !== '' ? _this_2.allowObjectBinding ? e.result[0] : e.result[0][_this_2.fields.value].toString() : e.result[0].toString();\n _this_2.addItem(e.result, listLength_1);\n _this_2.updateValues();\n } else {\n if (newProp && newProp.text) {\n _this_2.setOldText(oldValue);\n } else if (newProp && newProp.value) {\n _this_2.setOldValue(oldValue);\n } else {\n _this_2.updateValues();\n }\n }\n });\n } else if (newProp) {\n if (newProp.text) {\n this.setOldText(oldValue);\n } else {\n this.setOldValue(oldValue);\n }\n }\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - The event object.\n * @returns {void}\n * @deprecated\n */\n AutoComplete.prototype.showPopup = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n this.preventAutoFill = true;\n if (isNullOrUndefined(this.list)) {\n this.renderList(e);\n } else {\n this.resetList(this.dataSource, this.fields, null, e);\n }\n };\n /**\n * Hides the popup if it is in open state.\n *\n * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - The event object.\n * @returns {void}\n */\n AutoComplete.prototype.hidePopup = function (e) {\n _super.prototype.hidePopup.call(this, e);\n this.activeIndex = null;\n this.virtualListInfo = this.viewPortInfo;\n this.previousStartIndex = this.viewPortInfo.startIndex;\n this.startIndex = this.viewPortInfo.startIndex;\n this.previousEndIndex = this.viewPortInfo.endIndex;\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {AutoCompleteModel} newProp - Returns the dynamic property value of the component.\n * @param {AutoCompleteModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'autocomplete') {\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 'showPopupButton':\n if (this.showPopupButton) {\n var button = Input.appendSpan(dropDownListClasses.icon, this.inputWrapper.container, this.createElement);\n this.inputWrapper.buttons[0] = button;\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (this.inputWrapper && this.inputWrapper.buttons && this.inputWrapper.buttons[0]) {\n EventHandler.add(this.inputWrapper.buttons[0], 'click', this.dropDownClick, this);\n }\n } else {\n detach(this.inputWrapper.buttons[0]);\n this.inputWrapper.buttons[0] = null;\n }\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var atcProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, atcProps.newProperty, atcProps.oldProperty);\n break;\n }\n }\n }\n };\n AutoComplete.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n isHighlight = null;\n }\n }\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 AutoComplete.prototype.getModuleName = function () {\n return 'autocomplete';\n };\n /**\n * To initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.render = function () {\n _super.prototype.render.call(this);\n };\n __decorate([Complex({\n value: null,\n iconCss: null,\n groupBy: null,\n disabled: null\n }, FieldSettings)], AutoComplete.prototype, \"fields\", void 0);\n __decorate([Property(true)], AutoComplete.prototype, \"ignoreCase\", void 0);\n __decorate([Property(false)], AutoComplete.prototype, \"showPopupButton\", void 0);\n __decorate([Property(false)], AutoComplete.prototype, \"highlight\", void 0);\n __decorate([Property(20)], AutoComplete.prototype, \"suggestionCount\", void 0);\n __decorate([Property({})], AutoComplete.prototype, \"htmlAttributes\", void 0);\n __decorate([Property(null)], AutoComplete.prototype, \"query\", void 0);\n __decorate([Property(1)], AutoComplete.prototype, \"minLength\", void 0);\n __decorate([Property('Contains')], AutoComplete.prototype, \"filterType\", void 0);\n __decorate([Event()], AutoComplete.prototype, \"filtering\", void 0);\n __decorate([Property(null)], AutoComplete.prototype, \"index\", void 0);\n __decorate([Property('Never')], AutoComplete.prototype, \"floatLabelType\", void 0);\n __decorate([Property(null)], AutoComplete.prototype, \"valueTemplate\", void 0);\n __decorate([Property(null)], AutoComplete.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([Property(false)], AutoComplete.prototype, \"allowFiltering\", void 0);\n __decorate([Property(null)], AutoComplete.prototype, \"text\", void 0);\n AutoComplete = __decorate([NotifyPropertyChanges], AutoComplete);\n return AutoComplete;\n}(ComboBox);\nexport { AutoComplete };","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 { Input } from '@syncfusion/ej2-inputs';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { EventHandler, closest, removeClass, addClass, Complex, Property, ChildProperty, L10n, setValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, getComponent, Event, extend, detach, attributes } from '@syncfusion/ej2-base';\nimport { getUniqueID, Browser, formatUnit, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { prepend, append } from '@syncfusion/ej2-base';\nimport { cssClass, Sortable, moveTo } from '@syncfusion/ej2-lists';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { createSpinner, showSpinner, hideSpinner, getZindexPartial } from '@syncfusion/ej2-popups';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\n/**\n * Defines the Selection settings of List Box.\n */\nvar SelectionSettings = /** @class */function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('Multiple')], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([Property(false)], SelectionSettings.prototype, \"showCheckbox\", void 0);\n __decorate([Property(false)], SelectionSettings.prototype, \"showSelectAll\", void 0);\n __decorate([Property('Left')], SelectionSettings.prototype, \"checkboxPosition\", void 0);\n return SelectionSettings;\n}(ChildProperty);\nexport { SelectionSettings };\n/**\n * Defines the toolbar settings of List Box.\n */\nvar ToolbarSettings = /** @class */function (_super) {\n __extends(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property([])], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([Property('Right')], ToolbarSettings.prototype, \"position\", void 0);\n return ToolbarSettings;\n}(ChildProperty);\nexport { ToolbarSettings };\n/**\n * The ListBox is a graphical user interface component used to display a list of items.\n * Users can select one or more items in the list using a checkbox or by keyboard selection.\n * It supports sorting, grouping, reordering and drag and drop of items.\n * ```html\n * <select id=\"listbox\">\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 listObj = new ListBox();\n * listObj.appendTo(\"#listbox\");\n * </script>\n * ```\n */\nvar ListBox = /** @class */function (_super) {\n __extends(ListBox, _super);\n /**\n * Constructor for creating the ListBox component.\n *\n * @param {ListBoxModel} options - Specifies ListBox model\n * @param {string | HTMLElement} element - Specifies the element.\n */\n function ListBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isValidKey = false;\n _this.isBackSpace = false;\n _this.isDataSourceUpdate = false;\n _this.keyDownStatus = false;\n return _this;\n }\n ListBox_1 = ListBox;\n /**\n * Adds a new item to the 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 * @private\n */\n ListBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n if (this.allowFiltering && this.filterInput.value !== '') {\n this.filteringAction(this.jsonData, new Query(), this.fields);\n }\n };\n /**\n * Build and render the component.\n *\n * @private\n * @returns {void}\n */\n ListBox.prototype.render = function () {\n if (this.isAngular && this.allowFiltering) {\n var originalElement = this.element;\n var clonedElement = originalElement.cloneNode(true);\n originalElement.parentNode.replaceChild(clonedElement, originalElement);\n this.element = clonedElement;\n setValue('ej2_instances', [this], this.element);\n }\n this.inputString = '';\n this.initLoad = true;\n this.isCustomFiltering = false;\n this.initialSelectedOptions = this.value;\n this.inputFormName = this.element.getAttribute('name');\n _super.prototype.render.call(this);\n this.setEnabled();\n this.renderComplete();\n };\n ListBox.prototype.initWrapper = function () {\n var hiddenSelect = this.createElement('select', {\n className: 'e-hidden-select',\n attrs: {\n 'multiple': ''\n }\n });\n hiddenSelect.style.visibility = 'hidden';\n this.list.classList.add('e-listbox-wrapper');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.querySelector('.e-list-parent').setAttribute('role', 'presentation');\n var groupHdrs = this.list.querySelectorAll('.e-list-group-item');\n for (var i = 0; i < groupHdrs.length; i++) {\n groupHdrs[i].removeAttribute('tabindex');\n groupHdrs[i].setAttribute('role', 'option');\n }\n if (this.itemTemplate) {\n this.list.classList.add('e-list-template');\n }\n this.list.classList.add('e-wrapper');\n this.list.classList.add('e-lib');\n if (this.element.tagName === 'EJS-LISTBOX') {\n this.element.setAttribute('tabindex', '0');\n if (this.initLoad) {\n this.element.appendChild(this.list);\n }\n } else {\n if (this.initLoad && this.element.parentElement) {\n this.element.parentElement.insertBefore(this.list, this.element);\n }\n this.list.insertBefore(this.element, this.list.firstChild);\n this.element.style.display = 'none';\n }\n this.list.insertBefore(hiddenSelect, this.list.firstChild);\n if (this.list.getElementsByClassName('e-list-item')[0]) {\n this.list.getElementsByClassName('e-list-item')[0].classList.remove(dropDownBaseClasses.focus);\n }\n if (this.itemTemplate) {\n this.renderReactTemplates();\n }\n removeClass([this.list], [dropDownBaseClasses.content, dropDownBaseClasses.root]);\n this.validationAttribute(this.element, hiddenSelect);\n this.list.setAttribute('role', 'listbox');\n attributes(this.list, {\n 'role': 'listbox',\n 'aria-label': 'listbox',\n 'aria-multiselectable': this.selectionSettings.mode === 'Multiple' ? 'true' : 'false'\n });\n this.updateSelectionSettings();\n };\n ListBox.prototype.updateSelectionSettings = function () {\n if (this.selectionSettings.showCheckbox && this.selectionSettings.showSelectAll && this.liCollections.length) {\n var l10nSelect = new L10n(this.getModuleName(), {\n selectAllText: 'Select All',\n unSelectAllText: 'Unselect All'\n }, this.locale);\n this.showSelectAll = true;\n this.selectAllText = l10nSelect.getConstant('selectAllText');\n this.unSelectAllText = l10nSelect.getConstant('unSelectAllText');\n this.popupWrapper = this.list;\n this.checkBoxSelectionModule.checkAllParent = null;\n this.notify('selectAll', {});\n }\n };\n ListBox.prototype.initDraggable = function () {\n var _this = this;\n if (this.ulElement) {\n this.ulElement.id = this.element.id + '_parent';\n }\n if (this.allowDragAndDrop) {\n new Sortable(this.ulElement, {\n scope: this.scope,\n itemClass: 'e-list-item',\n beforeDragStart: this.triggerDragStart.bind(this),\n drag: this.triggerDrag.bind(this),\n beforeDrop: this.beforeDragEnd.bind(this),\n drop: this.dragEnd.bind(this),\n placeHolder: function () {\n return _this.createElement('span', {\n className: 'e-placeholder'\n });\n },\n helper: function (e) {\n var wrapper = _this.list.cloneNode();\n var ele = e.sender.cloneNode(true);\n wrapper.appendChild(ele);\n var refEle = _this.getItems()[0];\n wrapper.style.width = refEle.offsetWidth + 'px';\n wrapper.style.height = refEle.offsetHeight + 'px';\n if ((_this.value && _this.value.length) > 1 && _this.isSelected(ele)) {\n ele.appendChild(_this.createElement('span', {\n className: 'e-list-badge',\n innerHTML: _this.value.length + ''\n }));\n }\n wrapper.style.zIndex = getZindexPartial(_this.element) + '';\n return wrapper;\n }\n });\n }\n };\n ListBox.prototype.updateActionCompleteData = function (li, item, index) {\n this.jsonData.splice(index === null ? this.jsonData.length : index, 0, item);\n };\n ListBox.prototype.initToolbar = function () {\n var pos = this.toolbarSettings.position;\n var prevScope = this.element.getAttribute('data-value');\n this.toolbarSettings.items = isNullOrUndefined(this.toolbarSettings.items) ? [] : this.toolbarSettings.items;\n if (this.toolbarSettings.items.length) {\n var toolElem = this.createElement('div', {\n className: 'e-listbox-tool',\n attrs: {\n 'role': 'toolbar'\n }\n });\n var wrapper = this.createElement('div', {\n className: 'e-listboxtool-wrapper e-lib e-' + pos.toLowerCase()\n });\n this.list.parentElement.insertBefore(wrapper, this.list);\n wrapper.appendChild(pos === 'Right' ? this.list : toolElem);\n wrapper.appendChild(pos === 'Right' ? toolElem : this.list);\n this.createButtons(toolElem);\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.scope) {\n document.querySelector(this.scope).setAttribute('data-value', this.element.id);\n } else {\n this.updateToolBarState();\n }\n }\n var scope = this.element.getAttribute('data-value');\n if (prevScope && scope && prevScope !== scope) {\n this.tBListBox = getComponent(document.getElementById(prevScope), this.getModuleName());\n this.tBListBox.updateToolBarState();\n } else if (scope) {\n this.tBListBox = getComponent(document.getElementById(scope), this.getModuleName());\n this.tBListBox.updateToolBarState();\n }\n };\n ListBox.prototype.createButtons = function (toolElem) {\n var _this = this;\n var btn;\n var ele;\n var title;\n var l10n = new L10n(this.getModuleName(), {\n moveUp: 'Move Up',\n moveDown: 'Move Down',\n moveTo: 'Move To',\n moveFrom: 'Move From',\n moveAllTo: 'Move All To',\n moveAllFrom: 'Move All From'\n }, this.locale);\n this.toolbarSettings.items.forEach(function (value) {\n title = l10n.getConstant(value);\n ele = _this.createElement('button', {\n attrs: {\n 'type': 'button',\n 'data-value': value,\n 'title': title,\n 'aria-label': title\n }\n });\n toolElem.appendChild(ele);\n btn = new Button({\n iconCss: 'e-icons e-' + value.toLowerCase()\n }, ele);\n btn.createElement = _this.createElement;\n });\n };\n ListBox.prototype.validationAttribute = function (input, hiddenSelect) {\n if (this.inputFormName) {\n input.setAttribute('name', this.inputFormName);\n }\n _super.prototype.validationAttribute.call(this, input, hiddenSelect);\n hiddenSelect.required = input.required;\n input.required = false;\n };\n ListBox.prototype.setHeight = function () {\n var ele = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n ele.style.height = formatUnit(this.height);\n if (this.allowFiltering && this.height.toString().indexOf('%') < 0) {\n addClass([this.list], 'e-filter-list');\n } else {\n removeClass([this.list], 'e-filter-list');\n }\n };\n ListBox.prototype.setCssClass = function () {\n var wrap = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n if (this.cssClass) {\n addClass([wrap], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableRtl) {\n addClass([this.list], 'e-rtl');\n }\n };\n ListBox.prototype.setEnable = function () {\n var ele = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n if (this.enabled) {\n removeClass([ele], cssClass.disabled);\n } else {\n addClass([ele], cssClass.disabled);\n }\n };\n ListBox.prototype.showSpinner = function () {\n if (!this.spinner) {\n this.spinner = this.createElement('div', {\n className: 'e-listbox-wrapper'\n });\n }\n this.spinner.style.height = formatUnit(this.height);\n if (this.element.parentElement) {\n this.element.parentElement.insertBefore(this.spinner, this.element.nextSibling);\n }\n createSpinner({\n target: this.spinner\n }, this.createElement);\n showSpinner(this.spinner);\n };\n ListBox.prototype.hideSpinner = function () {\n if (this.spinner.querySelector('.e-spinner-pane')) {\n hideSpinner(this.spinner);\n }\n if (this.spinner.parentElement) {\n detach(this.spinner);\n }\n };\n ListBox.prototype.onInput = function () {\n this.isDataSourceUpdate = false;\n if (this.keyDownStatus) {\n this.isValidKey = true;\n } else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n this.refreshClearIcon();\n };\n ListBox.prototype.clearText = function () {\n this.filterInput.value = '';\n this.refreshClearIcon();\n var event = document.createEvent('KeyboardEvent');\n this.isValidKey = true;\n this.KeyUp(event);\n };\n ListBox.prototype.refreshClearIcon = function () {\n if (this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n };\n ListBox.prototype.onActionComplete = function (ulElement, list, e) {\n var _this = this;\n var searchEle;\n var filterElem;\n var txtLength;\n if (this.allowFiltering && this.list.getElementsByClassName('e-filter-parent')[0]) {\n searchEle = this.list.getElementsByClassName('e-filter-parent')[0].cloneNode(true);\n }\n if (list.length === 0) {\n var noRecElem = ulElement.childNodes[0];\n if (noRecElem) {\n ulElement.removeChild(noRecElem);\n }\n }\n if (this.allowFiltering) {\n filterElem = this.list.getElementsByClassName('e-input-filter')[0];\n if (filterElem) {\n txtLength = filterElem.selectionStart;\n }\n }\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.allowFiltering && !isNullOrUndefined(searchEle)) {\n this.list.insertBefore(searchEle, this.list.firstElementChild);\n this.filterParent = this.list.getElementsByClassName('e-filter-parent')[0];\n this.filterWireEvents(searchEle);\n var inputSearch = searchEle.querySelector('.e-input-filter');\n if (inputSearch) {\n inputSearch.addEventListener('focus', function () {\n if (!searchEle.childNodes[0].classList.contains('e-input-focus')) {\n searchEle.childNodes[0].classList.add('e-input-focus');\n }\n });\n inputSearch.addEventListener('blur', function () {\n if (searchEle.childNodes[0].classList.contains('e-input-focus')) {\n searchEle.childNodes[0].classList.remove('e-input-focus');\n }\n });\n }\n }\n this.initWrapper();\n this.setSelection(this.value, true, false, !this.isRendered);\n this.initDraggable();\n this.mainList = this.ulElement;\n if (this.initLoad) {\n this.jsonData = [];\n extend(this.jsonData, list, []);\n this.initToolbarAndStyles();\n this.wireEvents();\n if (this.showCheckbox) {\n this.setCheckboxPosition();\n }\n if (this.allowFiltering) {\n this.setFiltering();\n }\n } else {\n if (this.isDataSourceUpdate) {\n this.jsonData = [];\n extend(this.jsonData, list, []);\n this.isDataSourceUpdate = false;\n }\n if (this.allowFiltering) {\n filterElem = this.list.getElementsByClassName('e-input-filter')[0];\n if (isNullOrUndefined(filterElem)) {\n return;\n }\n filterElem.selectionStart = txtLength;\n filterElem.selectionEnd = txtLength;\n if (filterElem.value !== '' || filterElem.value === '' && this.isBackSpace) {\n filterElem.focus();\n setTimeout(function () {\n _this.isBackSpace = false;\n });\n }\n }\n }\n if (this.toolbarSettings.items.length && this.scope && this.scope.indexOf('#') > -1 && !isNullOrUndefined(e)) {\n var scope = this.scope.replace('#', '');\n var scopedLB = getComponent(document.getElementById(scope), this.getModuleName());\n scopedLB.initToolbar();\n }\n this.initLoad = false;\n };\n ListBox.prototype.initToolbarAndStyles = function () {\n this.initToolbar();\n this.setCssClass();\n this.setEnable();\n this.setHeight();\n };\n ListBox.prototype.triggerDragStart = function (args) {\n var _this = this;\n var badge;\n var extendedArgs = extend(this.getDragArgs(args), {\n dragSelected: true\n }, {\n cancel: false\n });\n if (Browser.isIos) {\n this.list.style.overflow = 'hidden';\n }\n this.trigger('dragStart', extendedArgs, function (dragEventArgs) {\n _this.allowDragAll = dragEventArgs.dragSelected;\n if (!_this.allowDragAll) {\n badge = _this.ulElement.getElementsByClassName('e-list-badge')[0];\n if (badge) {\n detach(badge);\n }\n }\n if (dragEventArgs.cancel) {\n args.cancel = true;\n }\n });\n };\n ListBox.prototype.triggerDrag = function (args) {\n var _this = this;\n var scrollParent;\n var boundRect;\n var scrollMoved = 36;\n var scrollHeight = 10;\n if (this.itemTemplate && args.target) {\n if (args.target && args.target.closest('.e-list-item')) {\n scrollHeight = args.target.closest('.e-list-item').scrollHeight;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var listItem = args.element.querySelector('.e-list-item');\n if (listItem) {\n scrollHeight = listItem.scrollHeight;\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var event = args.event;\n var wrapper;\n this.stopTimer();\n if (args.target && (args.target.classList.contains('e-listbox-wrapper') || args.target.classList.contains('e-list-item') || args.target.classList.contains('e-filter-parent') || args.target.classList.contains('e-input-group') || args.target.closest('.e-list-item'))) {\n if (args.target.classList.contains('e-list-item') || args.target.classList.contains('e-filter-parent') || args.target.classList.contains('e-input-group') || args.target.closest('.e-list-item')) {\n wrapper = args.target.closest('.e-listbox-wrapper');\n } else {\n wrapper = args.target;\n }\n if (this.allowFiltering) {\n scrollParent = wrapper.querySelector('.e-list-parent');\n } else {\n scrollParent = wrapper;\n }\n if (scrollParent) {\n boundRect = scrollParent.getBoundingClientRect();\n if (boundRect.y + scrollParent.offsetHeight - (event.clientY + scrollMoved) < 1) {\n this.timer = window.setInterval(function () {\n _this.setScrollDown(scrollParent, scrollHeight, true);\n }, 70);\n } else if (event.clientY - scrollMoved - boundRect.y < 1) {\n this.timer = window.setInterval(function () {\n _this.setScrollDown(scrollParent, scrollHeight, false);\n }, 70);\n }\n }\n }\n if (args.target === null) {\n return;\n }\n this.trigger('drag', this.getDragArgs(args));\n };\n ListBox.prototype.setScrollDown = function (scrollElem, scrollPixel, isScrollDown) {\n if (isScrollDown) {\n scrollElem.scrollTop = scrollElem.scrollTop + scrollPixel;\n } else {\n scrollElem.scrollTop = scrollElem.scrollTop - scrollPixel;\n }\n };\n ListBox.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n ListBox.prototype.beforeDragEnd = function (args) {\n this.stopTimer();\n var items = [];\n this.dragValue = this.getFormattedValue(args.droppedElement.getAttribute('data-value'));\n if (this.value.indexOf(this.dragValue) > -1) {\n args.items = this.getDataByValues(this.value);\n } else {\n args.items = this.getDataByValues([this.dragValue]);\n }\n extend(items, args.items);\n this.trigger('beforeDrop', args);\n if (JSON.stringify(args.items) !== JSON.stringify(items)) {\n this.customDraggedItem = args.items;\n }\n };\n ListBox.prototype.dragEnd = function (args) {\n var _this = this;\n var listData;\n var liColl;\n var jsonData;\n var droppedData;\n var selectedOptions;\n var sortedData;\n var dropValue = this.getFormattedValue(args.droppedElement.getAttribute('data-value'));\n var listObj = this.getComponent(args.droppedElement);\n var getArgs = this.getDragArgs({\n target: args.droppedElement\n }, true);\n var sourceArgs = {\n previousData: this.dataSource\n };\n var destArgs = {\n previousData: listObj.dataSource\n };\n var dragArgs = extend({}, getArgs, {\n target: args.target,\n source: {\n previousData: this.dataSource\n },\n previousIndex: args.previousIndex,\n currentIndex: args.currentIndex\n });\n if (listObj !== this) {\n var sourceArgs1 = extend(sourceArgs, {\n currentData: this.listData\n });\n dragArgs = extend(dragArgs, {\n source: sourceArgs1,\n destination: destArgs\n });\n }\n if (Browser.isIos) {\n this.list.style.overflow = '';\n }\n var targetListObj = this.getComponent(args.target);\n if (targetListObj && targetListObj.listData.length === 0) {\n var noRecElem = targetListObj.ulElement.childNodes[0];\n if (noRecElem) {\n targetListObj.ulElement.removeChild(noRecElem);\n }\n }\n if (listObj === this) {\n var ul_1 = this.ulElement;\n listData = [].slice.call(this.listData);\n liColl = [].slice.call(this.liCollections);\n jsonData = [].slice.call(this.jsonData);\n sortedData = [].slice.call(this.sortedData);\n var toSortIdx_1 = args.currentIndex;\n var toIdx_1 = args.currentIndex = this.getCurIdx(this, args.currentIndex);\n var rIdx = listData.indexOf(this.getDataByValue(dropValue));\n var jsonIdx = jsonData.indexOf(this.getDataByValue(dropValue));\n var sIdx = sortedData.indexOf(this.getDataByValue(dropValue));\n listData.splice(toIdx_1, 0, listData.splice(rIdx, 1)[0]);\n sortedData.splice(toSortIdx_1, 0, sortedData.splice(sIdx, 1)[0]);\n jsonData.splice(toIdx_1, 0, jsonData.splice(jsonIdx, 1)[0]);\n liColl.splice(toIdx_1, 0, liColl.splice(rIdx, 1)[0]);\n if (this.allowDragAll) {\n selectedOptions = this.value && Array.prototype.indexOf.call(this.value, dropValue) > -1 ? this.value : [dropValue];\n if (!isNullOrUndefined(this.customDraggedItem)) {\n selectedOptions = [];\n this.customDraggedItem.forEach(function (item) {\n selectedOptions.push(getValue(_this.fields.value, item));\n });\n }\n selectedOptions.forEach(function (value) {\n if (value !== dropValue) {\n var idx = listData.indexOf(_this.getDataByValue(value));\n var jsonIdx_1 = jsonData.indexOf(_this.getDataByValue(value));\n var sIdx_1 = sortedData.indexOf(_this.getDataByValue(value));\n if (idx > toIdx_1) {\n toIdx_1++;\n }\n jsonData.splice(toIdx_1, 0, jsonData.splice(jsonIdx_1, 1)[0]);\n listData.splice(toIdx_1, 0, listData.splice(idx, 1)[0]);\n sortedData.splice(toSortIdx_1, 0, sortedData.splice(sIdx_1, 1)[0]);\n liColl.splice(toIdx_1, 0, liColl.splice(idx, 1)[0]);\n ul_1.insertBefore(_this.getItems()[_this.getIndexByValue(value)], ul_1.getElementsByClassName('e-placeholder')[0]);\n }\n });\n }\n this.listData = listData;\n this.jsonData = jsonData;\n this.sortedData = sortedData;\n this.liCollections = liColl;\n } else {\n var li_1;\n var fLiColl_1 = [].slice.call(this.liCollections);\n var currIdx_1 = args.currentIndex = this.getCurIdx(listObj, args.currentIndex);\n var ul_2 = listObj.ulElement;\n listData = [].slice.call(listObj.listData);\n liColl = [].slice.call(listObj.liCollections);\n jsonData = [].slice.call(listObj.jsonData);\n sortedData = [].slice.call(listObj.sortedData);\n selectedOptions = this.value && Array.prototype.indexOf.call(this.value, dropValue) > -1 && this.allowDragAll ? this.value : [dropValue];\n if (!isNullOrUndefined(this.customDraggedItem)) {\n selectedOptions = [];\n this.customDraggedItem.forEach(function (item) {\n selectedOptions.push(getValue(_this.fields.value, item));\n });\n }\n var fListData_1 = [].slice.call(this.listData);\n var fSortData_1 = [].slice.call(this.sortedData);\n selectedOptions.forEach(function (value) {\n droppedData = _this.getDataByValue(value);\n var srcIdx = _this.listData.indexOf(droppedData);\n var jsonSrcIdx = _this.jsonData.indexOf(droppedData);\n var sortIdx = _this.sortedData.indexOf(droppedData);\n fListData_1.splice(srcIdx, 1);\n _this.jsonData.splice(jsonSrcIdx, 1);\n fSortData_1.splice(sortIdx, 1);\n _this.listData = fListData_1;\n _this.sortedData = fSortData_1;\n var destIdx = value === dropValue ? args.currentIndex : currIdx_1;\n listData.splice(destIdx, 0, droppedData);\n jsonData.splice(destIdx, 0, droppedData);\n sortedData.splice(destIdx, 0, droppedData);\n liColl.splice(destIdx, 0, fLiColl_1.splice(srcIdx, 1)[0]);\n if (!value) {\n var liCollElem_1 = _this.getItems();\n for (var i = 0; i < liCollElem_1.length; i++) {\n if (liCollElem_1[i].getAttribute('data-value') === null && liCollElem_1[i].classList.contains('e-list-item')) {\n li_1 = liCollElem_1[i];\n break;\n }\n }\n } else {\n li_1 = _this.getItems()[_this.getIndexByValue(value)];\n }\n if (!li_1) {\n li_1 = args.helper;\n }\n _this.removeSelected(_this, value === dropValue ? [args.droppedElement] : [li_1]);\n ul_2.insertBefore(li_1, ul_2.getElementsByClassName('e-placeholder')[0]);\n currIdx_1++;\n });\n if (this.fields.groupBy) {\n var sourceElem = this.renderItems(this.listData, this.fields);\n this.updateListItems(sourceElem, this.ulElement);\n this.setSelection();\n }\n if (listObj.sortOrder !== 'None' || this.selectionSettings.showCheckbox !== listObj.selectionSettings.showCheckbox || listObj.fields.groupBy || listObj.itemTemplate || this.itemTemplate) {\n var sortable = getComponent(ul_2, 'sortable');\n var sourceElem = listObj.renderItems(listData, listObj.fields);\n listObj.updateListItems(sourceElem, ul_2);\n this.setSelection();\n if (sortable.placeHolderElement) {\n ul_2.appendChild(sortable.placeHolderElement);\n }\n ul_2.appendChild(args.helper);\n listObj.setSelection();\n }\n this.liCollections = fLiColl_1;\n listObj.liCollections = liColl;\n listObj.jsonData = extend([], [], jsonData, false);\n listObj.listData = extend([], [], listData, false);\n if (listObj.sortOrder === 'None') {\n listObj.sortedData = extend([], [], sortedData, false);\n }\n if (this.listData.length === 0) {\n this.l10nUpdate();\n }\n }\n if (this === listObj) {\n var sourceArgs1 = extend(sourceArgs, {\n currentData: listData\n });\n dragArgs = extend(dragArgs, {\n source: sourceArgs1\n });\n } else {\n var dragArgs1 = extend(destArgs, {\n currentData: listData\n });\n dragArgs = extend(dragArgs, {\n destination: dragArgs1\n });\n }\n if (!isNullOrUndefined(this.customDraggedItem)) {\n dragArgs.items = this.customDraggedItem;\n }\n this.trigger('drop', dragArgs);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var liCollElem = dragArgs.elements;\n if (liCollElem.length) {\n for (var i = 0; i < liCollElem.length; i++) {\n liCollElem[i].classList.remove('e-grabbed');\n }\n }\n if (this.toolbarSettings.items.length > 0) {\n this.updateToolBarState();\n } else if (this.tBListBox && this.tBListBox.toolbarSettings.items.length > 0) {\n this.tBListBox.updateToolBarState();\n }\n };\n ListBox.prototype.updateListItems = function (sourceElem, destElem) {\n destElem.innerHTML = '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n destElem.append.apply(destElem, sourceElem.childNodes);\n };\n ListBox.prototype.removeSelected = function (listObj, elems) {\n if (listObj.selectionSettings.showCheckbox) {\n elems.forEach(function (ele) {\n ele.getElementsByClassName('e-frame')[0].classList.remove('e-check');\n });\n } else {\n removeClass(elems, cssClass.selected);\n }\n };\n ListBox.prototype.getCurIdx = function (listObj, idx) {\n if (listObj.fields.groupBy) {\n idx -= [].slice.call(listObj.ulElement.children).slice(0, idx).filter(function (ele) {\n return ele.classList.contains(cssClass.group);\n }).length;\n }\n return idx;\n };\n ListBox.prototype.getComponent = function (li) {\n var listObj;\n var ele = this.element.tagName === 'EJS-LISTBOX' ? closest(li, '.e-listbox') : closest(li, '.e-listbox-wrapper') && closest(li, '.e-listbox-wrapper').querySelector('.e-listbox');\n if (ele) {\n listObj = getComponent(ele, this.getModuleName());\n }\n return listObj;\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @returns {void}\n */\n ListBox.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', this.enabled ? 'false' : 'true');\n };\n ListBox.prototype.listOption = function (dataSource, fields) {\n this.listCurrentOptions = _super.prototype.listOption.call(this, dataSource, fields);\n this.listCurrentOptions = extend({}, this.listCurrentOptions, {\n itemCreated: this.triggerBeforeItemRender.bind(this)\n }, true);\n this.notify('listoption', {\n module: 'CheckBoxSelection'\n });\n return this.listCurrentOptions;\n };\n ListBox.prototype.triggerBeforeItemRender = function (e) {\n e.item.setAttribute('tabindex', '-1');\n this.trigger('beforeItemRender', {\n element: e.item,\n item: e.curData\n });\n };\n ListBox.prototype.requiredModules = function () {\n var modules = [];\n if (this.selectionSettings.showCheckbox) {\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * This method is used to enable or disable the items in the ListBox based on the items and enable argument.\n *\n * @param {string[]} items - Text items that needs to be enabled/disabled.\n * @param {boolean} enable - Set `true`/`false` to enable/disable the list items.\n * @param {boolean} isValue - Set `true` if `items` parameter is a array of unique values.\n * @returns {void}\n */\n ListBox.prototype.enableItems = function (items, enable, isValue) {\n var _this = this;\n if (enable === void 0) {\n enable = true;\n }\n var li;\n items.forEach(function (item) {\n var text = item;\n li = _this.findListElement(_this.list, 'li', 'data-value', isValue ? text : _this.getValueByText(text));\n if (!li) {\n return;\n }\n if (enable) {\n removeClass([li], cssClass.disabled);\n li.removeAttribute('aria-disabled');\n } else {\n addClass([li], cssClass.disabled);\n li.setAttribute('aria-disabled', 'true');\n }\n });\n if (this.allowFiltering && this.filterInput && this.filterInput.value !== '' && this.toolbarSettings.items.length > 0) {\n var canDisable_1 = false;\n this.ulElement.childNodes.forEach(function (li) {\n if (!li.classList.contains('e-disabled')) {\n canDisable_1 = true;\n }\n });\n if (!canDisable_1) {\n var wrap = this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n var btn = wrap.querySelector('[data-value=\"moveAllTo\"]');\n btn.disabled = true;\n }\n }\n };\n /**\n * Based on the state parameter, specified list item will be selected/deselected.\n *\n * @param {string[]} items - Array of text value of the item.\n * @param {boolean} state - Set `true`/`false` to select/un select the list items.\n * @param {boolean} isValue - Set `true` if `items` parameter is a array of unique values.\n * @returns {void}\n */\n ListBox.prototype.selectItems = function (items, state, isValue) {\n if (state === void 0) {\n state = true;\n }\n if (state && !this.selectionSettings.showCheckbox && this.selectionSettings.mode === 'Single') {\n this.getSelectedItems().forEach(function (li) {\n li.classList.remove('e-active');\n li.removeAttribute('aria-selected');\n removeClass([li], cssClass.selected);\n });\n }\n this.setSelection(items, state, !isValue);\n this.updateSelectedOptions();\n var selElems = [];\n for (var i = 0; i < items.length; i++) {\n var liColl = this.list.querySelectorAll('[aria-selected=\"true\"]');\n for (var j = 0; j < liColl.length; j++) {\n if (items[i] === this.getFormattedValue(liColl[j].getAttribute('data-value'))) {\n selElems.push(liColl[j]);\n }\n }\n }\n this.triggerChange(selElems, null);\n };\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n *\n * @param {boolean} state - Set `true`/`false` to select/un select the entire list items.\n * @returns {void}\n */\n ListBox.prototype.selectAll = function (state) {\n if (state === void 0) {\n state = true;\n }\n this.selectAllItems(state);\n };\n /**\n * Adds a new item to the 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 list.\n * @returns {void}.\n */\n ListBox.prototype.addItems = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n if (this.allowFiltering && this.filterInput.value !== '') {\n this.filteringAction(this.jsonData, new Query(), this.fields);\n }\n };\n /**\n * Removes a item from the list. By default, removed the last item in the list,\n * but you can remove 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 remove the item from the list.\n * @returns {void}.\n */\n ListBox.prototype.removeItems = function (items, itemIndex) {\n this.removeItem(items, itemIndex);\n };\n /**\n * Removes a item from the list. By default, removed the last item in the list,\n * but you can remove 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 remove the item from the list.\n * @returns {void}.\n */\n ListBox.prototype.removeItem = function (items, itemIndex) {\n var _this = this;\n var liCollections = [];\n var liElement = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n if (items) {\n items = items instanceof Array ? items : [items];\n var fields = this.fields;\n var dataValue = void 0;\n var objValue = {};\n var dupData = [];\n extend(dupData, [], this.jsonData);\n var removeIdxes = [];\n var removeLiIdxes = [];\n for (var i = 0; i < dupData.length; i++) {\n var value = dupData[i] instanceof Object ? dupData[i][fields.value] : dupData[i].toString();\n objValue[value] = i;\n }\n for (var j = 0; j < items.length; j++) {\n dataValue = items[j] instanceof Object ? items[j][fields.value] : items[j].toString();\n if (Object.prototype.hasOwnProperty.call(objValue, dataValue)) {\n var idx = objValue[dataValue];\n liCollections.push(liElement[idx]);\n removeIdxes.push(idx);\n removeLiIdxes.push(idx);\n }\n }\n var validRemoveIdxes = removeIdxes.sort(function (a, b) {\n return b - a;\n });\n validRemoveIdxes.forEach(function (idx) {\n _this.listData.splice(idx, 1);\n _this.jsonData.splice(idx, 1);\n });\n for (var k = removeLiIdxes.length - 1; k >= 0; k--) {\n this.updateLiCollection(removeLiIdxes[k]);\n }\n } else {\n itemIndex = itemIndex ? itemIndex : 0;\n liCollections.push(liElement[itemIndex]);\n this.listData.splice(itemIndex, 1);\n this.jsonData.splice(itemIndex, 1);\n this.updateLiCollection(itemIndex);\n }\n for (var i = 0; i < liCollections.length; i++) {\n this.ulElement.removeChild(liCollections[i]);\n }\n if (this.listData.length === 0) {\n this.l10nUpdate();\n }\n if (this.listData.length !== this.sortedData.length) {\n this.sortedData = this.listData;\n }\n this.value = [];\n this.updateToolBarState();\n };\n /**\n * Gets the array of data Object that matches the given array of values.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the array value of the list item.\n * @returns {object[]}.\n */\n ListBox.prototype.getDataByValues = function (value) {\n var data = [];\n for (var i = 0; i < value.length; i++) {\n data.push(this.getDataByValue(value[i]));\n }\n return data;\n };\n /**\n * Moves the given value(s) / selected value(s) upwards.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveUp = function (value) {\n var elem = value ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(true, false, elem);\n };\n /**\n * Moves the given value(s) / selected value(s) downwards.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveDown = function (value) {\n var elem = value ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(false, false, elem);\n };\n /**\n * Moves the given value(s) / selected value(s) in Top of the list.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveTop = function (value) {\n var elem = value ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(null, false, elem, true);\n };\n /**\n * Moves the given value(s) / selected value(s) in bottom of the list.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveBottom = function (value) {\n var elem = value ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(true, false, elem, false, true);\n };\n /**\n * Moves the given value(s) / selected value(s) to the given / default scoped ListBox.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value or array value of the list item.\n * @param {number} index - Specifies the index.\n * @param {string} targetId - Specifies the target id.\n * @returns {void}\n */\n ListBox.prototype.moveTo = function (value, index, targetId) {\n var elem = value ? this.getElemByValue(value) : this.getSelectedItems();\n var tlistbox = targetId ? getComponent(targetId, ListBox_1) : this.getScopedListBox();\n this.moveData(this, tlistbox, false, elem, index);\n };\n /**\n * Moves all the values from one ListBox to the scoped ListBox.\n *\n * @param { string } targetId - Specifies the scoped ListBox ID.\n * @param { string } index - Specifies the index to where the items moved.\n * @returns {void}\n */\n ListBox.prototype.moveAllTo = function (targetId, index) {\n this.toolbarAction = 'moveAllTo';\n if (this.listData.length > 0) {\n var tlistbox = targetId ? getComponent(targetId, ListBox_1) : this.getScopedListBox();\n this.moveAllData(this, tlistbox, false, index);\n }\n };\n /* eslint-disable */\n /**\n * Gets the updated dataSource in ListBox.\n *\n * @returns {{ [key: string]: Object }[] | string[] | boolean[] | number[]} - Updated DataSource.\n */\n /* eslint-enable */\n ListBox.prototype.getDataList = function () {\n return this.jsonData;\n };\n /* eslint-disable */\n /**\n * Returns the sorted Data in ListBox.\n *\n * @returns {{ [key: string]: Object }[] | string[] | boolean[] | number[]} - Sorted data\n */\n /* eslint-enable */\n ListBox.prototype.getSortedList = function () {\n var sortData;\n var tempData;\n sortData = tempData = this.sortedData;\n if (this.fields.groupBy) {\n sortData = [];\n for (var i = 0; i < tempData.length; i++) {\n if (tempData[i].isHeader) {\n continue;\n }\n sortData.push(tempData[i]);\n }\n }\n return sortData;\n };\n ListBox.prototype.getElemByValue = function (value) {\n var elem = [];\n for (var i = 0; i < value.length; i++) {\n elem.push(this.ulElement.querySelector('[data-value =\"' + value[i] + '\"]'));\n }\n return elem;\n };\n ListBox.prototype.updateLiCollection = function (index) {\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 1);\n this.liCollections = tempLi;\n };\n ListBox.prototype.selectAllItems = function (state, event) {\n var _this = this;\n [].slice.call(this.getItems()).forEach(function (li) {\n if (!li.classList.contains(cssClass.disabled)) {\n if (_this.selectionSettings.showCheckbox) {\n var ele = li.getElementsByClassName('e-check')[0];\n if (!ele && state || ele && !state) {\n _this.notify('updatelist', {\n li: li,\n module: 'listbox'\n });\n if (_this.maximumSelectionLength >= _this.list.querySelectorAll('.e-list-item span.e-check').length) {\n _this.checkMaxSelection();\n }\n }\n } else {\n if (state) {\n li.classList.add(cssClass.selected);\n } else {\n li.classList.remove(cssClass.selected);\n }\n }\n }\n });\n this.updateSelectedOptions();\n if (this.allowFiltering && this.selectionSettings.showCheckbox) {\n var liEle = this.list.getElementsByTagName('li');\n var index = 0;\n if (state) {\n var _loop_1 = function () {\n var dataValue1 = this_1.getFormattedValue(liEle[index].getAttribute('data-value'));\n if (!this_1.value.some(function (e) {\n return e === dataValue1;\n })) {\n this_1.value.push(this_1.getFormattedValue(liEle[index].getAttribute('data-value')));\n }\n };\n var this_1 = this;\n for (index = 0; index < liEle.length; index++) {\n _loop_1();\n }\n } else {\n var _loop_2 = function () {\n var dataValue2 = this_2.getFormattedValue(liEle[index].getAttribute('data-value'));\n this_2.value = this_2.value.filter(function (e) {\n return e !== dataValue2;\n });\n };\n var this_2 = this;\n for (index = 0; index < liEle.length; index++) {\n _loop_2();\n }\n }\n if (document.querySelectorAll('ul').length < 2) {\n this.updateMainList();\n }\n }\n this.triggerChange(this.getSelectedItems(), event);\n };\n ListBox.prototype.updateMainList = function () {\n var mainList = this.mainList.querySelectorAll('.e-list-item');\n var ulList = this.ulElement.querySelectorAll('.e-list-item');\n var mainCount = mainList.length;\n var ulEleCount = ulList.length;\n if (this.selectionSettings.showCheckbox || document.querySelectorAll('ul').length > 1 || mainCount !== ulEleCount) {\n var listindex = 0;\n var valueindex = 0;\n var count = 0;\n for (listindex; listindex < mainCount;) {\n if (this.value) {\n for (valueindex; valueindex < this.value.length; valueindex++) {\n if (mainList[listindex].getAttribute('data-value') === this.value[valueindex]) {\n count++;\n }\n }\n }\n if (!count && this.selectionSettings.showCheckbox) {\n mainList[listindex].getElementsByClassName('e-frame')[0].classList.remove('e-check');\n }\n if (document.querySelectorAll('ul').length > 1 && count && mainCount !== ulEleCount) {\n this.mainList.removeChild(this.mainList.getElementsByTagName('li')[listindex]);\n listindex = 0;\n } else {\n listindex++;\n }\n count = 0;\n valueindex = 0;\n }\n }\n };\n ListBox.prototype.wireEvents = function () {\n var form = closest(this.element, 'form');\n var wrapper = this.element.tagName === 'EJS-LISTBOX' ? this.element : this.list;\n EventHandler.add(this.list, 'click', this.clickHandler, this);\n EventHandler.add(wrapper, 'keydown', this.keyDownHandler, this);\n EventHandler.add(wrapper, 'focusout', this.focusOutHandler, this);\n this.wireToolbarEvent();\n if (this.selectionSettings.showCheckbox) {\n EventHandler.remove(document, 'mousedown', this.checkBoxSelectionModule.onDocumentClick);\n }\n if (this.fields.groupBy || this.element.querySelector('select>optgroup')) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n }\n if (form) {\n EventHandler.add(form, 'reset', this.formResetHandler, this);\n }\n window.addEventListener('resize', this.resizeHandler.bind(this));\n };\n ListBox.prototype.wireToolbarEvent = function () {\n if (this.toolbarSettings.items.length) {\n EventHandler.add(this.getToolElem(), 'click', this.toolbarClickHandler, this);\n }\n };\n ListBox.prototype.unwireEvents = function () {\n var form = closest(this.element, 'form');\n var wrapper = this.element.tagName === 'EJS-LISTBOX' ? this.element : this.list;\n EventHandler.remove(this.list, 'click', this.clickHandler);\n EventHandler.remove(wrapper, 'keydown', this.keyDownHandler);\n EventHandler.remove(wrapper, 'focusout', this.focusOutHandler);\n if (this.allowFiltering && this.clearFilterIconElem) {\n EventHandler.remove(this.clearFilterIconElem, 'click', this.clearText);\n }\n if (this.toolbarSettings.items.length) {\n EventHandler.remove(this.getToolElem(), 'click', this.toolbarClickHandler);\n }\n if (form) {\n EventHandler.remove(form, 'reset', this.formResetHandler);\n }\n window.removeEventListener('resize', this.resizeHandler.bind(this));\n };\n ListBox.prototype.clickHandler = function (e) {\n var li = closest(e.target, '.' + 'e-list-item');\n if (isNullOrUndefined(li)) {\n return;\n }\n this.selectHandler(e);\n };\n ListBox.prototype.checkSelectAll = function () {\n var searchCount = 0;\n var liItems = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n for (var i = 0; i < liItems.length; i++) {\n if (!liItems[i].classList.contains('e-disabled')) {\n searchCount++;\n }\n }\n var len = this.getSelectedItems().length;\n if (this.showSelectAll && searchCount) {\n this.notify('checkSelectAll', {\n module: 'CheckBoxSelection',\n value: searchCount === len ? 'check' : len === 0 ? 'uncheck' : 'indeterminate'\n });\n }\n };\n ListBox.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.allowFiltering) {\n var filterType = this.inputString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (dataType === null) {\n dataType = this.typeOfData(this.jsonData).typeof;\n }\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.inputString, this.ignoreCase, this.ignoreAccent);\n } else {\n var fields = this.fields.text ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.inputString, this.ignoreCase, this.ignoreAccent);\n }\n } else {\n filterQuery = query ? query : this.query ? this.query : new Query();\n }\n return filterQuery;\n };\n ListBox.prototype.setFiltering = function () {\n var filterInputObj;\n if (this.initLoad || isNullOrUndefined(this.filterParent)) {\n this.filterParent = this.createElement('span', {\n className: listBoxClasses.filterParent\n });\n this.filterInput = this.createElement('input', {\n attrs: {\n type: 'text'\n },\n className: listBoxClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: [listBoxClasses.filterBarClearIcon],\n properties: {\n placeholder: this.filterBarPlaceholder\n }\n }, this.createElement);\n append([filterInputObj.container], this.filterParent);\n prepend([this.filterParent], this.list);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'aria-label': 'search list item',\n 'autocomplete': 'off',\n 'autocorrect': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false',\n 'role': 'textbox'\n });\n if (this.height.toString().indexOf('%') < 0) {\n addClass([this.list], 'e-filter-list');\n } else if (this.height.toString().indexOf('%') > 0) {\n this.ulElement.style.height = this.ulElement.offsetHeight - this.filterParent.offsetHeight + 'px';\n }\n this.inputString = this.filterInput.value;\n this.filterWireEvents();\n this.ulElement.style.setProperty('height', 'calc(100% - ' + this.filterParent.offsetHeight + 'px)', 'important');\n return filterInputObj;\n }\n };\n ListBox.prototype.filterWireEvents = function (filterElem) {\n if (filterElem) {\n this.filterInput = filterElem.querySelector('.e-input-filter');\n }\n this.clearFilterIconElem = this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon);\n if (this.clearFilterIconElem) {\n EventHandler.add(this.clearFilterIconElem, 'click', this.clearText, this);\n if (!filterElem) {\n this.clearFilterIconElem.style.visibility = 'hidden';\n }\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.KeyUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onKeyDown, this);\n };\n ListBox.prototype.selectHandler = function (e, isKey) {\n var isSelect = true;\n var currSelIdx;\n var li = closest(e.target, '.' + 'e-list-item');\n var selectedLi = [li];\n if (li && li.parentElement) {\n currSelIdx = [].slice.call(li.parentElement.children).indexOf(li);\n if (!this.selectionSettings.showCheckbox) {\n if ((e.ctrlKey || e.metaKey || Browser.isDevice) && this.isSelected(li)) {\n li.classList.remove(cssClass.selected);\n li.removeAttribute('aria-selected');\n isSelect = false;\n } else if (!(this.selectionSettings.mode === 'Multiple' && (e.ctrlKey || e.metaKey || Browser.isDevice))) {\n this.getSelectedItems().forEach(function (ele) {\n ele.removeAttribute('aria-selected');\n });\n removeClass(this.getSelectedItems(), cssClass.selected);\n }\n } else {\n isSelect = !li.getElementsByClassName('e-frame')[0].classList.contains('e-check');\n }\n if (e.shiftKey && !this.selectionSettings.showCheckbox && this.selectionSettings.mode !== 'Single') {\n selectedLi = [].slice.call(li.parentElement.children).slice(Math.min(currSelIdx, this.prevSelIdx), Math.max(currSelIdx, this.prevSelIdx) + 1).filter(function (ele) {\n return ele.classList.contains('e-list-item');\n });\n } else {\n this.prevSelIdx = [].slice.call(li.parentElement.children).indexOf(li);\n }\n if (isSelect) {\n if (!this.selectionSettings.showCheckbox) {\n addClass(selectedLi, cssClass.selected);\n }\n selectedLi.forEach(function (ele) {\n ele.setAttribute('aria-selected', 'true');\n });\n this.list.setAttribute('aria-activedescendant', li.id);\n } else {\n selectedLi.forEach(function (ele) {\n ele.setAttribute('aria-selected', 'false');\n });\n }\n if (!isKey && (this.maximumSelectionLength > (this.value && this.value.length) || !isSelect) && (this.maximumSelectionLength >= (this.value && this.value.length) || !isSelect) && !(this.maximumSelectionLength < (this.value && this.value.length))) {\n this.notify('updatelist', {\n li: li,\n e: e,\n module: 'listbox'\n });\n }\n if (this.allowFiltering && !isKey) {\n var liDataValue_1 = this.getFormattedValue(li.getAttribute('data-value'));\n if (!isSelect) {\n this.value = this.value.filter(function (value1) {\n return value1 !== liDataValue_1;\n });\n } else {\n var values = [];\n extend(values, this.value);\n values.push(liDataValue_1);\n this.value = values;\n }\n if (document.querySelectorAll('ul').length < 2) {\n this.updateMainList();\n }\n }\n this.updateSelectedOptions();\n this.triggerChange(this.getSelectedItems(), e);\n if (this.list) {\n this.checkMaxSelection();\n }\n }\n };\n ListBox.prototype.triggerChange = function (selectedLis, event) {\n this.trigger('change', {\n elements: selectedLis,\n items: this.getDataByElements(selectedLis),\n value: this.value,\n event: event\n });\n };\n ListBox.prototype.getDataByElems = function (elems) {\n var data = [];\n var len = elems.length;\n for (var i = 0; i < len; i++) {\n var elem = elems[i];\n var value = elem.getAttribute('data-value');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var formattedValue = this.getFormattedValue(value);\n data.push(this.getDataByValue(formattedValue));\n }\n return data;\n };\n ListBox.prototype.getDataByElements = function (elems) {\n var data = [];\n var value;\n var sIdx = 0;\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n for (var i = sIdx, len = elems.length; i < len; i++) {\n value = this.getFormattedValue(elems[i].getAttribute('data-value'));\n if (!isNullOrUndefined(item) && item === value) {\n sIdx = i;\n data.push(item);\n break;\n }\n }\n if (elems.length === data.length) {\n break;\n }\n }\n } else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n for (var i = sIdx, len = elems.length; i < len; i++) {\n value = this.getFormattedValue(elems[i].getAttribute('data-value'));\n if (!isNullOrUndefined(item) && getValue(this.fields.value ? this.fields.value : 'value', item) === value) {\n sIdx = i;\n data.push(item);\n break;\n }\n }\n if (elems.length === data.length) {\n break;\n }\n }\n }\n return data;\n }\n return null;\n };\n ListBox.prototype.checkMaxSelection = function () {\n var limit = this.list.querySelectorAll('.e-list-item span.e-check').length;\n if (this.selectionSettings.showCheckbox) {\n var index = 0;\n var liCollElem = this.list.getElementsByClassName('e-list-item');\n for (index; index < liCollElem.length; index++) {\n if (!liCollElem[index].querySelector('.e-frame.e-check')) {\n if (limit === this.maximumSelectionLength) {\n liCollElem[index].classList.add('e-disable');\n } else if (liCollElem[index].classList.contains('e-disable')) {\n liCollElem[index].classList.remove('e-disable');\n }\n }\n }\n }\n };\n ListBox.prototype.toolbarClickHandler = function (e) {\n var btn = closest(e.target, 'button');\n if (btn) {\n this.toolbarAction = btn.getAttribute('data-value');\n if (btn.disabled) {\n return;\n }\n switch (this.toolbarAction) {\n case 'moveUp':\n this.moveUpDown(true);\n break;\n case 'moveDown':\n this.moveUpDown();\n break;\n case 'moveTo':\n this.moveItemTo();\n break;\n case 'moveFrom':\n this.moveItemFrom();\n break;\n case 'moveAllTo':\n this.moveAllItemTo();\n break;\n case 'moveAllFrom':\n this.moveAllItemFrom();\n break;\n default:\n this.trigger('actionBegin', {\n cancel: false,\n items: this.getDataByElems(this.getSelectedItems()),\n eventName: this.toolbarAction\n });\n break;\n }\n }\n };\n ListBox.prototype.moveUpDown = function (isUp, isKey, value, isTop, isBottom) {\n var _this = this;\n var elems = this.getSelectedItems();\n if (value) {\n elems = value;\n }\n if ((isUp && this.isSelected(this.ulElement.firstElementChild) || !isUp && this.isSelected(this.ulElement.lastElementChild)) && !value) {\n return;\n }\n var tempItems = this.getDataByElems(elems);\n var localDataArgs = {\n cancel: false,\n items: tempItems,\n eventName: this.toolbarAction\n };\n this.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n (isUp ? elems : elems.reverse()).forEach(function (ele) {\n var jsonToIdx = Array.prototype.indexOf.call(_this.ulElement.querySelectorAll('.e-list-item'), ele);\n var idx = Array.prototype.indexOf.call(_this.ulElement.children, ele);\n if (isTop) {\n moveTo(_this.ulElement, _this.ulElement, [idx], 0);\n _this.changeData(idx, 0, jsonToIdx, ele);\n } else if (isBottom) {\n moveTo(_this.ulElement, _this.ulElement, [idx], _this.ulElement.querySelectorAll('.e-list-item').length);\n _this.changeData(idx, _this.ulElement.querySelectorAll('.e-list-item').length, jsonToIdx, ele);\n } else {\n moveTo(_this.ulElement, _this.ulElement, [idx], isUp ? idx - 1 : idx + 2);\n _this.changeData(idx, isUp ? idx - 1 : idx + 1, isUp ? jsonToIdx - 1 : jsonToIdx + 1, ele);\n }\n });\n this.trigger('actionComplete', {\n items: tempItems,\n eventName: this.toolbarAction\n });\n elems[0].focus();\n if (!isKey && this.toolbarSettings.items.length) {\n this.getToolElem().querySelector('[data-value=' + (isUp ? 'moveUp' : 'moveDown') + ']').focus();\n }\n this.updateToolBarState();\n };\n ListBox.prototype.moveItemTo = function () {\n this.moveData(this, this.getScopedListBox());\n };\n ListBox.prototype.moveItemFrom = function () {\n this.moveData(this.getScopedListBox(), this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ListBox} fListBox - Specifies the from listbox.\n * @param {ListBox} tListBox - Specifies the to listbox.\n * @param {boolean} isKey - Specifies the key.\n * @param {Element[]} value - Specifies the value.\n * @param {number} index - Specifies the index.\n * @returns {void}\n * @private\n */\n ListBox.prototype.moveData = function (fListBox, tListBox, isKey, value, index) {\n var idx = [];\n var dataIdx = [];\n var jsonIdx = [];\n var sortIdx = [];\n var listData = [].slice.call(fListBox.listData);\n var tListData = [].slice.call(tListBox.listData);\n var sortData = [].slice.call(fListBox.sortedData);\n var tSortData = [].slice.call(tListBox.sortedData);\n var fliCollections = [].slice.call(fListBox.liCollections);\n var dataLiIdx = [];\n var tliCollections = [].slice.call(tListBox.liCollections);\n var tempItems = [];\n var data = [];\n var elems = fListBox.getSelectedItems();\n if (value) {\n elems = value;\n }\n var isRefresh = tListBox.sortOrder !== 'None' || tListBox.selectionSettings.showCheckbox !== fListBox.selectionSettings.showCheckbox || tListBox.fields.groupBy || tListBox.itemTemplate || fListBox.itemTemplate;\n fListBox.value = [];\n if (elems.length) {\n this.removeSelected(fListBox, elems);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ulChildren_1 = Array.prototype.slice.call(fListBox.ulElement.children);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var listItems_1 = Array.prototype.slice.call(fListBox.ulElement.querySelectorAll('.e-list-item'));\n var lData_1 = fListBox.listData;\n var sData_1 = fListBox.sortedData;\n var jData_1 = fListBox.jsonData;\n var eData_1;\n var listDataMap_1 = {};\n if (elems.length > 199) {\n for (var _i = 0, _a = fListBox.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n if (!isNullOrUndefined(item)) {\n var key = fListBox.getFormattedValue(getValue(fListBox.fields.value ? fListBox.fields.value : 'value', item));\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n listDataMap_1[key] = item;\n }\n }\n }\n elems.forEach(function (ele) {\n if (elems.length < 200) {\n eData_1 = fListBox.getDataByElems([ele])[0];\n } else {\n var value_1 = ele.getAttribute('data-value');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var formattedValue = fListBox.getFormattedValue(value_1);\n eData_1 = listDataMap_1[formattedValue];\n }\n idx.push(ulChildren_1.indexOf(ele));\n dataLiIdx.push(listItems_1.indexOf(ele));\n dataIdx.push(lData_1.indexOf(eData_1));\n sortIdx.push(sData_1.indexOf(eData_1));\n jsonIdx.push(jData_1.indexOf(eData_1));\n });\n if (this.sortOrder !== 'None') {\n sortIdx.forEach(function (i) {\n tempItems.push(fListBox.sortedData[i]);\n });\n } else {\n jsonIdx.forEach(function (i) {\n tempItems.push(fListBox.jsonData[i]);\n });\n }\n var localDataArgs = {\n cancel: false,\n items: tempItems,\n eventName: this.toolbarAction\n };\n fListBox.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n var rLiCollection_1 = [];\n dataLiIdx.sort(function (n1, n2) {\n return n1 - n2;\n }).reverse().forEach(function (i) {\n rLiCollection_1.push(fliCollections.splice(i, 1)[0]);\n });\n fListBox.liCollections = fliCollections;\n if (index) {\n var toColl = tliCollections.splice(0, index);\n tListBox.liCollections = toColl.concat(rLiCollection_1.reverse()).concat(tliCollections);\n } else {\n tListBox.liCollections = tliCollections.concat(rLiCollection_1.reverse());\n }\n if (tListBox.listData.length === 0) {\n var noRecElem = tListBox.ulElement.childNodes[0];\n if (noRecElem) {\n tListBox.ulElement.removeChild(noRecElem);\n }\n }\n dataIdx.sort(function (n1, n2) {\n return n2 - n1;\n }).forEach(function (i) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n listData.splice(i, 1)[0];\n });\n sortIdx.sort(function (n1, n2) {\n return n2 - n1;\n }).forEach(function (i) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n sortData.splice(i, 1)[0];\n });\n jsonIdx.slice().reverse().forEach(function (i) {\n data.push(fListBox.jsonData.splice(i, 1)[0]);\n });\n if (isRefresh) {\n if (fListBox.fields.groupBy) {\n var sourceElem = fListBox.renderItems(listData, fListBox.fields);\n fListBox.updateListItems(sourceElem, fListBox.ulElement);\n } else {\n elems.forEach(function (ele) {\n detach(ele);\n });\n }\n } else {\n moveTo(fListBox.ulElement, tListBox.ulElement, idx, index);\n fListBox.trigger('actionComplete', {\n items: tempItems,\n eventName: this.toolbarAction\n });\n }\n if (tListBox.mainList.childElementCount !== tListBox.jsonData.length) {\n tListBox.mainList = tListBox.ulElement;\n }\n var tJsonData = [].slice.call(tListBox.jsonData);\n tSortData = [].slice.call(tListBox.sortedData);\n this.selectNextList(elems, dataLiIdx, dataIdx, fListBox);\n if (isKey) {\n this.list.focus();\n }\n fListBox.listData = listData;\n fListBox.sortedData = sortData;\n index = index ? index : tListData.length;\n for (var i = tempItems.length - 1; i >= 0; i--) {\n tListData.splice(index, 0, tempItems[i]);\n tJsonData.splice(index, 0, tempItems[i]);\n tSortData.splice(index, 0, tempItems[i]);\n }\n tListBox.listData = tListData;\n tListBox.jsonData = tJsonData;\n tListBox.sortedData = tSortData;\n if (isRefresh) {\n var sourceElem = tListBox.renderItems(tListData, tListBox.fields);\n tListBox.updateListItems(sourceElem, tListBox.ulElement);\n tListBox.setSelection();\n fListBox.trigger('actionComplete', {\n items: tempItems,\n eventName: this.toolbarAction\n });\n }\n fListBox.updateSelectedOptions();\n if (fListBox.listData.length === 0) {\n fListBox.l10nUpdate();\n }\n }\n if (fListBox.value.length === 1 && fListBox.getSelectedItems().length) {\n fListBox.value[0] = fListBox.getFormattedValue(fListBox.getSelectedItems()[0].getAttribute('data-value'));\n }\n if (fListBox.liCollections.length === fListBox.ulElement.querySelectorAll('.e-disabled').length && this.toolbarAction) {\n var wrap = this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n var toolbarAction = this.toolbarAction === 'moveFrom' ? 'moveAllFrom' : 'moveAllTo';\n if (wrap) {\n var btn = wrap.querySelector('[data-value=\"' + toolbarAction + '\"]');\n btn.disabled = true;\n }\n }\n };\n ListBox.prototype.selectNextList = function (elems, dataLiIdx, dataIdx, inst) {\n var childCnt = inst.ulElement.querySelectorAll('.e-list-item').length;\n var ele;\n var liIdx;\n var validIdx = -1;\n if (elems.length === 1 && childCnt && !inst.selectionSettings.showCheckbox) {\n liIdx = childCnt <= dataLiIdx[0] ? childCnt - 1 : dataLiIdx[0];\n ele = inst.ulElement.querySelectorAll('.e-list-item')[liIdx];\n validIdx = inst.getValidIndex(ele, liIdx, childCnt === dataIdx[0] ? 38 : 40);\n if (validIdx > -1) {\n inst.ulElement.querySelectorAll('.e-list-item')[validIdx].classList.add(cssClass.selected);\n }\n }\n };\n ListBox.prototype.moveAllItemTo = function () {\n this.moveAllData(this, this.getScopedListBox());\n };\n ListBox.prototype.moveAllItemFrom = function () {\n this.moveAllData(this.getScopedListBox(), this);\n };\n ListBox.prototype.moveAllData = function (fListBox, tListBox, isKey, index) {\n var listData = [].slice.call(tListBox.listData);\n var jsonData = [].slice.call(tListBox.jsonData);\n var isRefresh = tListBox.sortOrder !== 'None' || tListBox.selectionSettings.showCheckbox !== fListBox.selectionSettings.showCheckbox || tListBox.fields.groupBy || tListBox.itemTemplate || fListBox.itemTemplate;\n var tempLiColl = [];\n var tempData = [];\n var flistboxarray = [];\n this.removeSelected(fListBox, fListBox.getSelectedItems());\n var tempItems = [].slice.call(fListBox.listData);\n var localDataArgs = {\n cancel: false,\n items: tempItems,\n eventName: this.toolbarAction\n };\n fListBox.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n if (tListBox.listData.length === 0) {\n var noRecElem = tListBox.ulElement.childNodes[0];\n if (noRecElem) {\n tListBox.ulElement.removeChild(noRecElem);\n }\n }\n if (fListBox.listData.length > 0) {\n // eslint-disable-next-line prefer-spread\n flistboxarray = Array.apply(null, {\n length: fListBox.ulElement.childElementCount\n }).map(Number.call, Number);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childNodes = fListBox.ulElement.childNodes;\n var childElementCount = fListBox.ulElement.childElementCount;\n var newFlistboxArray = [];\n for (var i = 0; i < childElementCount; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var childNode = childNodes[i];\n if (childNode.classList.contains('e-disabled')) {\n tempLiColl.push(childNode);\n if (this.sortOrder != null) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tempData.push(fListBox.sortedData[i]);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tempData.push(fListBox.listData[i]);\n }\n } else {\n newFlistboxArray.push(i);\n }\n }\n flistboxarray = newFlistboxArray;\n moveTo(fListBox.ulElement, tListBox.ulElement, flistboxarray, index);\n fListBox.trigger('actionComplete', {\n items: tempItems,\n eventName: this.toolbarAction\n });\n if (isKey) {\n this.list.focus();\n }\n index = index ? index : listData.length;\n for (var i = 0; i < flistboxarray.length; i++) {\n if (this.sortOrder != null) {\n listData.splice(index + i, 0, fListBox.sortedData[flistboxarray[i]]);\n } else {\n listData.splice(index + i, 0, fListBox.listData[flistboxarray[i]]);\n }\n }\n for (var i = 0; i < flistboxarray.length; i++) {\n jsonData.splice(index + i, 0, fListBox.jsonData[flistboxarray[i]]);\n }\n var fliCollections = [];\n if (tempLiColl.length > 0) {\n fListBox.liCollections = tempLiColl;\n fliCollections = [].slice.call(fListBox.liCollections);\n } else {\n fliCollections = [].slice.call(fListBox.liCollections);\n fListBox.liCollections = [];\n }\n var tliCollections = [].slice.call(tListBox.liCollections);\n if (index) {\n var toColl = tliCollections.splice(0, index);\n tListBox.liCollections = toColl.concat(fliCollections).concat(tliCollections);\n } else {\n tListBox.liCollections = tliCollections.concat(fliCollections);\n }\n fListBox.value = [];\n listData = listData.filter(function (data) {\n return data !== undefined;\n });\n listData = listData.filter(function (data) {\n return data.isHeader !== true;\n });\n var sortedData = listData.filter(function (val) {\n return tListBox.jsonData.indexOf(val) === -1;\n });\n for (var i = 0; i < sortedData.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tListBox.jsonData.splice(index + i, 0, sortedData[i]);\n }\n tListBox.listData = listData;\n if (fListBox.listData.length === fListBox.jsonData.length) {\n fListBox.listData = fListBox.sortedData = fListBox.jsonData = tempData;\n } else if (fListBox.allowFiltering) {\n var disabledData_1 = [];\n if (tempLiColl.length > 0) {\n for (var i = 0; i < tempLiColl.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n disabledData_1.push(fListBox.getDataByValue(tempLiColl[i].getAttribute('data-value')));\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fListBox.listData = fListBox.listData.filter(function (obj1) {\n return !disabledData_1.some(function (obj2) {\n return obj1 === obj2;\n });\n });\n }\n for (var i = 0; i < fListBox.listData.length; i++) {\n for (var j = 0; j < fListBox.jsonData.length; j++) {\n if (fListBox.listData[i] === fListBox.jsonData[j]) {\n fListBox.jsonData.splice(j, 1);\n }\n }\n }\n if (tempLiColl.length > 0) {\n fListBox.listData = disabledData_1;\n fListBox.sortedData = [];\n } else {\n fListBox.listData = fListBox.sortedData = [];\n }\n }\n if (isRefresh) {\n var sourceElem = tListBox.renderItems(listData, tListBox.fields);\n tListBox.updateListItems(sourceElem, tListBox.ulElement);\n } else {\n tListBox.sortedData = listData;\n }\n fListBox.updateSelectedOptions();\n if (tempLiColl.length > 0) {\n var wrap = this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n var btn = wrap.querySelector('[data-value=\"' + this.toolbarAction + '\"]');\n btn.disabled = true;\n }\n if (fListBox.listData.length === 0 && tempLiColl.length === 0) {\n fListBox.l10nUpdate();\n }\n };\n ListBox.prototype.changeData = function (fromIdx, toIdx, jsonToIdx, ele) {\n var listData = [].slice.call(this.listData);\n var jsonData = [].slice.call(this.jsonData);\n var sortData = [].slice.call(this.sortedData);\n var jsonIdx = Array.prototype.indexOf.call(this.jsonData, this.getDataByElems([ele])[0]);\n var sortIdx = Array.prototype.indexOf.call(this.sortedData, this.getDataByElems([ele])[0]);\n var liColl = [].slice.call(this.liCollections);\n listData.splice(toIdx, 0, listData.splice(fromIdx, 1)[0]);\n jsonData.splice(jsonToIdx, 0, jsonData.splice(jsonIdx, 1)[0]);\n sortData.splice(toIdx, 0, sortData.splice(sortIdx, 1)[0]);\n liColl.splice(toIdx, 0, liColl.splice(fromIdx, 1)[0]);\n this.listData = listData;\n this.jsonData = jsonData;\n this.liCollections = liColl;\n this.sortedData = sortData;\n };\n ListBox.prototype.getSelectedItems = function () {\n var ele = [];\n if (this.selectionSettings.showCheckbox) {\n [].slice.call(this.ulElement.getElementsByClassName('e-check')).forEach(function (cbox) {\n ele.push(closest(cbox, '.' + 'e-list-item'));\n });\n } else {\n ele = [].slice.call(this.ulElement.getElementsByClassName(cssClass.selected));\n }\n return ele;\n };\n ListBox.prototype.getScopedListBox = function () {\n var _this = this;\n var listObj;\n if (this.scope) {\n [].slice.call(document.querySelectorAll(this.scope)).forEach(function (ele) {\n if (getComponent(ele, _this.getModuleName())) {\n listObj = getComponent(ele, _this.getModuleName());\n }\n });\n }\n return listObj;\n };\n ListBox.prototype.getGrabbedItems = function (args) {\n var grabbItems = false;\n for (var i = 0; i < this.value.length; i++) {\n if (this.value[i] === this.getFormattedValue(args.target.getAttribute('data-value'))) {\n grabbItems = true;\n break;\n }\n }\n if (grabbItems) {\n for (var i = 0; i < this.value.length; i++) {\n var liColl = this.list.querySelectorAll('[aria-selected=\"true\"]');\n for (var j = 0; j < liColl.length; j++) {\n if (this.value[i] === this.getFormattedValue(liColl[j].getAttribute('data-value'))) {\n liColl[j].classList.add('e-grabbed');\n }\n }\n }\n }\n var elems;\n if (this.isAngular) {\n elems = Array.prototype.slice.call(this.element.getElementsByClassName('e-list-parent')[0].querySelectorAll('.e-grabbed'));\n } else {\n elems = Array.prototype.slice.call(this.element.nextElementSibling.querySelectorAll('.e-grabbed'));\n }\n return elems;\n };\n ListBox.prototype.getDragArgs = function (args, isDragEnd) {\n var elems = this.getGrabbedItems(args);\n if (elems.length) {\n if (isDragEnd) {\n elems.push(args.target);\n }\n } else {\n elems = [args.target];\n }\n return {\n elements: elems,\n event: args.event,\n items: this.getDataByElems(elems)\n };\n };\n ListBox.prototype.onKeyDown = function (e) {\n this.keyDownHandler(e);\n e.stopPropagation();\n };\n ListBox.prototype.keyDownHandler = function (e) {\n if ([32, 35, 36, 37, 38, 39, 40, 65].indexOf(e.keyCode) > -1 && (!this.allowFiltering || this.allowFiltering && e.target !== this.filterInput)) {\n if (e.target && e.target.className.indexOf('e-edit-template') > -1) {\n return;\n }\n e.preventDefault();\n if (e.keyCode === 32 && this.ulElement.children.length) {\n this.selectHandler({\n target: this.ulElement.getElementsByClassName('e-focused')[0],\n ctrlKey: e.ctrlKey,\n shiftKey: e.shiftKey\n });\n } else if (e.keyCode === 65 && e.ctrlKey && this.selectionSettings.mode === 'Multiple') {\n this.selectAll();\n } else if ((e.keyCode === 38 || e.keyCode === 40) && e.ctrlKey && e.shiftKey) {\n this.moveUpDown(e.keyCode === 38 ? true : false, true);\n } else if ((this.toolbarSettings.items.length || this.tBListBox) && (e.keyCode === 39 || e.keyCode === 37) && e.ctrlKey) {\n var listObj = this.tBListBox || this.getScopedListBox();\n if (e.keyCode === 39) {\n if (e.shiftKey) {\n this.moveAllData(this, listObj, true);\n } else {\n this.moveData(this, listObj, true);\n }\n } else {\n if (e.shiftKey) {\n this.moveAllData(listObj, this, true);\n } else {\n this.moveData(listObj, this, true);\n }\n }\n } else if (e.keyCode !== 37 && e.keyCode !== 39 && e.code !== 'KeyA') {\n this.upDownKeyHandler(e);\n }\n } else if (this.allowFiltering) {\n if (e.keyCode === 40 || e.keyCode === 38) {\n this.upDownKeyHandler(e);\n }\n }\n };\n ListBox.prototype.upDownKeyHandler = function (e) {\n var ul = this.ulElement;\n var defaultIdx = e.keyCode === 40 || e.keyCode === 36 ? 0 : ul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = ul.getElementsByClassName('e-focused')[0] || ul.getElementsByClassName(cssClass.selected)[0];\n if (fli) {\n if (e.keyCode !== 35 && e.keyCode !== 36) {\n fliIdx = Array.prototype.indexOf.call(ul.children, fli);\n if (e.keyCode === 40) {\n fliIdx++;\n } else {\n fliIdx--;\n }\n if (fliIdx < 0 || fliIdx > ul.childElementCount - 1) {\n return;\n }\n }\n removeClass([fli], 'e-focused');\n }\n var cli = ul.children[fliIdx];\n if (cli) {\n fliIdx = this.getValidIndex(cli, fliIdx, e.keyCode);\n if (fliIdx === -1) {\n addClass([fli], 'e-focused');\n return;\n }\n ul.children[fliIdx].focus();\n ul.children[fliIdx].classList.add('e-focused');\n if (!e.ctrlKey || !this.selectionSettings.showCheckbox && e.shiftKey && (e.keyCode === 36 || e.keyCode === 35)) {\n this.selectHandler({\n target: ul.children[fliIdx],\n ctrlKey: e.ctrlKey,\n shiftKey: e.shiftKey\n }, true);\n }\n if (this.selectionSettings.showCheckbox && e.ctrlKey && e.shiftKey && (e.keyCode === 36 || e.keyCode === 35)) {\n var selectedidx = Array.prototype.indexOf.call(ul.children, fli);\n var sidx = e.code === 'Home' ? 0 : selectedidx;\n var eidx = e.code === 'Home' ? selectedidx : ul.children.length - 1;\n for (var i = sidx; i <= eidx; i++) {\n var item = ul.children[i];\n this.notify('updatelist', {\n li: item,\n e: {\n target: this.ulElement.getElementsByClassName('e-focused')[0],\n ctrlKey: e.ctrlKey,\n shiftKey: e.shiftKey\n },\n module: 'listbox'\n });\n }\n }\n }\n };\n ListBox.prototype.KeyUp = function (e) {\n var _this = this;\n if (this.allowFiltering && e.ctrlKey && e.keyCode === 65) {\n e.preventDefault();\n return;\n }\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n var isWordAccentCharacter = char.match(/[A-Za-z0-9\\u00C0-\\u024F ]/);\n if (!isNullOrUndefined(isWordCharacter) || !isNullOrUndefined(isWordAccentCharacter)) {\n this.isValidKey = true;\n }\n this.isBackSpace = e.keyCode === 8;\n this.isValidKey = e.keyCode === 8 || e.keyCode === 46 || this.isValidKey;\n if (this.isValidKey) {\n this.isValidKey = false;\n switch (e.keyCode) {\n default:\n if (this.allowFiltering) {\n var eventArgsData_1 = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: function (dataSource, query, fields) {\n if (eventArgsData_1.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.remoteFilterAction = true;\n _this.preventDefActionFilter = eventArgsData_1.preventDefaultAction;\n _this.dataUpdater(dataSource, query, fields);\n _this.preventDefActionFilter = false;\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgsData_1, function (args) {\n _this.isDataFetched = false;\n if (args.cancel || _this.filterInput.value !== '' && _this.isFiltered) {\n return;\n }\n _this.preventDefActionFilter = false;\n if (!args.cancel && !_this.isCustomFiltering && !args.preventDefaultAction) {\n _this.inputString = _this.filterInput.value;\n _this.filteringAction(_this.jsonData, new Query(), _this.fields);\n if (_this.toolbarSettings.items.length > 0) {\n _this.updateToolBarState();\n }\n }\n if (!_this.isFiltered && !_this.isCustomFiltering && !args.preventDefaultAction) {\n _this.dataUpdater(_this.jsonData, new Query(), _this.fields);\n }\n });\n }\n }\n }\n };\n /**\n * To filter the 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 ListBox.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFiltering = true;\n this.filteringAction(dataSource, query, fields);\n };\n ListBox.prototype.filteringAction = function (dataSource, query, fields) {\n this.resetList(dataSource, fields, query);\n };\n ListBox.prototype.targetElement = function () {\n this.targetInputElement = this.list.getElementsByClassName('e-input-filter')[0];\n return isNullOrUndefined(this.targetInputElement) ? null : this.targetInputElement.value;\n };\n ListBox.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n var backCommand = true;\n if (this.targetElement() && this.targetElement().trim() === '') {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (backCommand) {\n this.remoteCustomValue = false;\n if (this.isAngular && this.itemTemplate) {\n list = this.renderItems(this.listData, fields);\n }\n this.onActionComplete(list, this.jsonData);\n this.notify('reOrder', {\n module: 'CheckBoxSelection',\n enable: this.selectionSettings.showCheckbox,\n e: this\n });\n }\n } else {\n this.resetList(dataSource, fields, query);\n }\n };\n ListBox.prototype.focusOutHandler = function () {\n var ele = this.list.getElementsByClassName('e-focused')[0];\n if (ele) {\n ele.classList.remove('e-focused');\n }\n if (this.allowFiltering) {\n this.refreshClearIcon();\n }\n };\n ListBox.prototype.resizeHandler = function () {\n if (this.list && !(this.cssClass && this.cssClass.indexOf('e-horizontal-listbox') > -1)) {\n if (this.list.getElementsByClassName('e-filter-parent').length > 0 && this.allowFiltering) {\n this.ulElement.style.setProperty('height', 'calc(100% - ' + this.filterParent.offsetHeight + 'px)', 'important');\n }\n }\n };\n ListBox.prototype.getValidIndex = function (cli, index, keyCode) {\n var cul = this.ulElement;\n if (cli.classList.contains('e-disabled') || cli.classList.contains(cssClass.group)) {\n if (keyCode === 40 || keyCode === 36) {\n index++;\n } else {\n index--;\n }\n }\n if (index < 0 || index === cul.childElementCount) {\n return -1;\n }\n cli = cul.childNodes[index];\n if (cli.classList.contains('e-disabled') || cli.classList.contains(cssClass.group)) {\n index = this.getValidIndex(cli, index, keyCode);\n }\n return index;\n };\n ListBox.prototype.updateSelectedOptions = function () {\n var _this = this;\n var selectedOptions = [];\n var values = [];\n extend(values, this.value);\n this.getSelectedItems().forEach(function (ele) {\n if (!ele.classList.contains('e-grabbed')) {\n selectedOptions.push(_this.getFormattedValue(ele.getAttribute('data-value')));\n }\n });\n if (this.mainList.childElementCount === this.ulElement.childElementCount) {\n if (this.allowFiltering && this.selectionSettings.showCheckbox) {\n for (var i = 0; i < selectedOptions.length; i++) {\n if (values.indexOf(selectedOptions[i]) > -1) {\n continue;\n } else {\n values.push(selectedOptions[i]);\n }\n }\n this.setProperties({\n value: values\n }, true);\n } else {\n this.setProperties({\n value: selectedOptions\n }, true);\n }\n }\n this.updateSelectTag();\n this.updateToolBarState();\n if (this.tBListBox) {\n this.tBListBox.updateToolBarState();\n }\n };\n ListBox.prototype.clearSelection = function (values) {\n var _this = this;\n if (values === void 0) {\n values = this.value;\n }\n if (this.selectionSettings.showCheckbox) {\n var dvalue_1;\n this.getSelectedItems().forEach(function (li) {\n dvalue_1 = _this.getFormattedValue(li.getAttribute('data-value'));\n if (values.indexOf(dvalue_1) < 0) {\n li.getElementsByClassName('e-check')[0].classList.remove('e-check');\n li.removeAttribute('aria-selected');\n }\n });\n }\n };\n ListBox.prototype.setSelection = function (\n // eslint-disable-next-line max-len\n values, isSelect, isText, canFocus) {\n var _this = this;\n if (values === void 0) {\n values = this.value;\n }\n if (isSelect === void 0) {\n isSelect = true;\n }\n if (isText === void 0) {\n isText = false;\n }\n if (canFocus === void 0) {\n canFocus = true;\n }\n var li;\n var liselect;\n if (values) {\n values.forEach(function (value) {\n var text;\n if (isText) {\n text = _this.getValueByText(value);\n } else {\n text = value;\n }\n if (typeof text === 'string') {\n text = text.split('\\\\').join('\\\\\\\\');\n li = _this.list.querySelector('[data-value=\"' + text.replace(/\"/g, '\\\\\"') + '\"]');\n } else {\n li = _this.list.querySelector('[data-value=\"' + text + '\"]');\n }\n if (li) {\n if (_this.selectionSettings.showCheckbox && !li.classList.contains('e-disabled')) {\n liselect = li.getElementsByClassName('e-frame')[0].classList.contains('e-check');\n } else {\n liselect = li.classList.contains('e-selected');\n }\n if (!isSelect && liselect || isSelect && !liselect && li) {\n if (_this.selectionSettings.showCheckbox && !li.classList.contains('e-disabled')) {\n _this.notify('updatelist', {\n li: li,\n module: 'listbox'\n });\n if (canFocus) {\n li.focus();\n }\n } else {\n if (isSelect && !li.classList.contains('e-disabled')) {\n li.classList.add(cssClass.selected);\n li.setAttribute('aria-selected', 'true');\n if (canFocus) {\n li.focus();\n }\n } else {\n li.classList.remove(cssClass.selected);\n li.removeAttribute('aria-selected');\n }\n }\n }\n }\n });\n }\n this.updateSelectTag();\n };\n ListBox.prototype.updateSelectTag = function () {\n var ele = this.getSelectTag();\n var innerHTML = '';\n if (isNullOrUndefined(ele)) {\n return;\n }\n ele.innerHTML = '';\n if (this.value) {\n for (var i = 0, len = this.value.length; i < len; i++) {\n innerHTML += '<option selected>' + this.value[i] + '</option>';\n }\n ele.innerHTML += innerHTML;\n for (var i = 0, len = ele.childNodes.length; i < len; i++) {\n ele.childNodes[i].setAttribute('value', this.value[i].toString());\n }\n }\n this.checkSelectAll();\n };\n ListBox.prototype.checkDisabledState = function (inst) {\n if (isNullOrUndefined(inst.ulElement)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!isNullOrUndefined(this.dataSource) && isNullOrUndefined(this.dataSource.length)) {\n return false;\n } else {\n return true;\n }\n } else {\n if (inst.ulElement.querySelectorAll('.e-disabled').length > 0) {\n return inst.liCollections.length === inst.ulElement.querySelectorAll('.e-disabled').length;\n }\n return inst.ulElement.querySelectorAll('.' + cssClass.li).length === 0;\n }\n };\n ListBox.prototype.updateToolBarState = function () {\n var _this = this;\n if (this.toolbarSettings.items.length) {\n var listObj_1 = this.getScopedListBox();\n var wrap_1 = this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n this.toolbarSettings.items.forEach(function (value) {\n var btn = wrap_1.querySelector('[data-value=\"' + value + '\"]');\n switch (value) {\n case 'moveAllTo':\n btn.disabled = _this.checkDisabledState(_this);\n break;\n case 'moveAllFrom':\n btn.disabled = _this.checkDisabledState(listObj_1);\n break;\n case 'moveFrom':\n btn.disabled = listObj_1.value && listObj_1.value.length ? false : true;\n break;\n case 'moveUp':\n btn.disabled = _this.value && _this.value.length && !_this.isSelected(_this.ulElement.children[0]) ? false : true;\n break;\n case 'moveDown':\n btn.disabled = _this.value && _this.value.length && !_this.isSelected(_this.ulElement.children[_this.ulElement.childElementCount - 1]) ? false : true;\n break;\n default:\n btn.disabled = _this.value && _this.value.length ? false : true;\n break;\n }\n });\n }\n };\n ListBox.prototype.setCheckboxPosition = function () {\n var listWrap = this.list;\n if (!this.initLoad && this.selectionSettings.checkboxPosition === 'Left') {\n listWrap.classList.remove('e-right');\n }\n if (this.selectionSettings.checkboxPosition === 'Right') {\n listWrap.classList.add('e-right');\n }\n };\n ListBox.prototype.showCheckbox = function (showCheckbox) {\n var index = 0;\n var liColl = this.list.lastElementChild.querySelectorAll('li');\n var liCollLen = this.list.lastElementChild.getElementsByClassName('e-list-item').length;\n if (showCheckbox) {\n this.ulElement = this.renderItems(this.listData, this.fields);\n this.mainList = this.ulElement;\n this.list.removeChild(this.list.getElementsByTagName('ul')[0]);\n this.list.appendChild(this.ulElement);\n if (this.selectionSettings.showSelectAll && !this.list.getElementsByClassName('e-selectall-parent')[0]) {\n var l10nShow = new L10n(this.getModuleName(), {\n selectAllText: 'Select All',\n unSelectAllText: 'Unselect All'\n }, this.locale);\n this.showSelectAll = true;\n this.selectAllText = l10nShow.getConstant('selectAllText');\n this.unSelectAllText = l10nShow.getConstant('unSelectAllText');\n this.popupWrapper = this.list;\n this.checkBoxSelectionModule.checkAllParent = null;\n this.notify('selectAll', {});\n this.checkSelectAll();\n }\n } else {\n if (this.list.getElementsByClassName('e-selectall-parent')[0]) {\n this.list.removeChild(this.list.getElementsByClassName('e-selectall-parent')[0]);\n }\n for (index; index < liCollLen; index++) {\n if (liColl[index].classList.contains('e-list-item')) {\n liColl[index].removeChild(liColl[index].getElementsByClassName('e-checkbox-wrapper')[0]);\n }\n if (liColl[index].hasAttribute('aria-selected')) {\n liColl[index].removeAttribute('aria-selected');\n }\n }\n this.mainList = this.ulElement;\n }\n this.value = [];\n };\n ListBox.prototype.isSelected = function (ele) {\n if (!isNullOrUndefined(ele)) {\n return ele.classList.contains(cssClass.selected) || ele.querySelector('.e-check') !== null;\n } else {\n return false;\n }\n };\n ListBox.prototype.getSelectTag = function () {\n return this.list.getElementsByClassName('e-hidden-select')[0];\n };\n ListBox.prototype.getToolElem = function () {\n return this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n };\n ListBox.prototype.formResetHandler = function () {\n this.value = this.initialSelectedOptions;\n };\n /**\n * Return the module name.\n *\n * @private\n * @returns {string} - Module name\n */\n ListBox.prototype.getModuleName = function () {\n return 'listbox';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n ListBox.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n ListBox.prototype.getLocaleName = function () {\n return 'listbox';\n };\n ListBox.prototype.destroy = function () {\n this.unwireEvents();\n if (this.element.tagName === 'EJS-LISTBOX') {\n this.element.innerHTML = '';\n } else {\n this.element.style.display = 'inline-block';\n if (this.toolbarSettings.items.length) {\n this.list.parentElement.parentElement.insertBefore(this.list, this.list.parentElement);\n detach(this.list.nextElementSibling);\n }\n this.list.parentElement.insertBefore(this.element, this.list);\n }\n _super.prototype.destroy.call(this);\n this.enableRtlElements = [];\n this.liCollections = null;\n this.list = null;\n this.ulElement = null;\n this.mainList = null;\n this.spinner = null;\n this.rippleFun = null;\n if (this.itemTemplate) {\n this.clearTemplate();\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ListBoxModel} newProp - Specifies the new properties.\n * @param {ListBoxModel} oldProp - Specifies the old properties.\n * @returns {void}\n * @private\n */\n ListBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrap = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrap], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrap], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.list.classList.add('e-rtl');\n } else {\n this.list.classList.remove('e-rtl');\n }\n break;\n case 'value':\n removeClass(this.list.querySelectorAll('.' + cssClass.selected), cssClass.selected);\n this.clearSelection(this.value);\n this.setSelection();\n break;\n case 'height':\n this.setHeight();\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'allowDragAndDrop':\n if (newProp.allowDragAndDrop) {\n this.initDraggable();\n } else {\n if (this.ulElement.classList.contains('e-sortable')) {\n getComponent(this.ulElement, 'sortable').destroy();\n }\n }\n break;\n case 'allowFiltering':\n if (this.allowFiltering) {\n this.setFiltering();\n } else {\n this.list.removeChild(this.list.getElementsByClassName('e-filter-parent')[0]);\n this.filterParent = null;\n removeClass([this.list], 'e-filter-list');\n }\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n if (this.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this.filterInput);\n }\n }\n break;\n case 'scope':\n if (this.allowDragAndDrop) {\n getComponent(this.ulElement, 'sortable').scope = newProp.scope;\n }\n if (this.toolbarSettings.items.length) {\n if (oldProp.scope) {\n getComponent(document.querySelector(oldProp.scope), this.getModuleName()).tBListBox = null;\n }\n if (newProp.scope) {\n getComponent(document.querySelector(newProp.scope), this.getModuleName()).tBListBox = this;\n }\n }\n break;\n case 'toolbarSettings':\n {\n var ele = void 0;\n var pos = newProp.toolbarSettings.position;\n var toolElem = this.getToolElem();\n if (pos) {\n removeClass([wrap], ['e-right', 'e-left']);\n wrap.classList.add('e-' + pos.toLowerCase());\n if (pos === 'Left') {\n wrap.insertBefore(toolElem, this.list);\n } else {\n wrap.appendChild(toolElem);\n }\n }\n if (newProp.toolbarSettings.items) {\n oldProp.toolbarSettings.items = isNullOrUndefined(oldProp.toolbarSettings.items) ? [] : oldProp.toolbarSettings.items;\n if (oldProp.toolbarSettings && oldProp.toolbarSettings.items.length) {\n ele = this.list.parentElement;\n ele.parentElement.insertBefore(this.list, ele);\n detach(ele);\n }\n this.initToolbarAndStyles();\n this.wireToolbarEvent();\n }\n break;\n }\n case 'selectionSettings':\n {\n var showSelectAll = newProp.selectionSettings.showSelectAll;\n var showCheckbox = newProp.selectionSettings.showCheckbox;\n if (!isNullOrUndefined(showSelectAll)) {\n this.showSelectAll = showSelectAll;\n if (this.showSelectAll) {\n var l10nSel = new L10n(this.getModuleName(), {\n selectAllText: 'Select All',\n unSelectAllText: 'Unselect All'\n }, this.locale);\n this.checkBoxSelectionModule.checkAllParent = null;\n this.showSelectAll = true;\n this.selectAllText = l10nSel.getConstant('selectAllText');\n this.unSelectAllText = l10nSel.getConstant('selectAllText');\n this.popupWrapper = this.list;\n }\n this.notify('selectAll', {});\n this.checkSelectAll();\n }\n if (!isNullOrUndefined(showCheckbox)) {\n this.showCheckbox(showCheckbox);\n }\n if (this.selectionSettings.showCheckbox) {\n this.setCheckboxPosition();\n }\n break;\n }\n case 'dataSource':\n this.isDataSourceUpdate = true;\n this.jsonData = [].slice.call(this.dataSource);\n break;\n }\n }\n };\n var ListBox_1;\n __decorate([Property('')], ListBox.prototype, \"cssClass\", void 0);\n __decorate([Property([])], ListBox.prototype, \"value\", void 0);\n __decorate([Property('')], ListBox.prototype, \"height\", void 0);\n __decorate([Property(true)], ListBox.prototype, \"enabled\", void 0);\n __decorate([Property(false)], ListBox.prototype, \"enablePersistence\", void 0);\n __decorate([Property(false)], ListBox.prototype, \"allowDragAndDrop\", void 0);\n __decorate([Property(1000)], ListBox.prototype, \"maximumSelectionLength\", void 0);\n __decorate([Property(false)], ListBox.prototype, \"allowFiltering\", void 0);\n __decorate([Property('')], ListBox.prototype, \"scope\", void 0);\n __decorate([Property(true)], ListBox.prototype, \"ignoreCase\", void 0);\n __decorate([Property(null)], ListBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([Property('None')], ListBox.prototype, \"sortOrder\", void 0);\n __decorate([Event()], ListBox.prototype, \"beforeItemRender\", void 0);\n __decorate([Event()], ListBox.prototype, \"filtering\", void 0);\n __decorate([Event()], ListBox.prototype, \"select\", void 0);\n __decorate([Event()], ListBox.prototype, \"change\", void 0);\n __decorate([Event()], ListBox.prototype, \"beforeDrop\", void 0);\n __decorate([Event()], ListBox.prototype, \"dragStart\", void 0);\n __decorate([Event()], ListBox.prototype, \"drag\", void 0);\n __decorate([Event()], ListBox.prototype, \"drop\", void 0);\n __decorate([Event()], ListBox.prototype, \"dataBound\", void 0);\n __decorate([Property(null)], ListBox.prototype, \"groupTemplate\", void 0);\n __decorate([Property('Request failed')], ListBox.prototype, \"actionFailureTemplate\", void 0);\n __decorate([Property(1000)], ListBox.prototype, \"zIndex\", void 0);\n __decorate([Property(false)], ListBox.prototype, \"ignoreAccent\", void 0);\n __decorate([Complex({}, ToolbarSettings)], ListBox.prototype, \"toolbarSettings\", void 0);\n __decorate([Complex({}, SelectionSettings)], ListBox.prototype, \"selectionSettings\", void 0);\n ListBox = ListBox_1 = __decorate([NotifyPropertyChanges], ListBox);\n return ListBox;\n}(DropDownBase);\nexport { ListBox };\nvar listBoxClasses = {\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n clearIcon: 'e-clear-icon'\n};","import { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { EventHandler, select, removeClass, addClass, detach, compile, L10n } from '@syncfusion/ej2-base';\nimport { Browser, attributes, isNullOrUndefined, append, closest, prepend } from '@syncfusion/ej2-base';\nimport { dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nvar ICON = 'e-icons';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECK = 'e-check';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar INDETERMINATE = 'e-stop';\nvar checkAllParent = 'e-selectall-parent';\nvar searchBackIcon = 'e-input-group-icon e-back-icon e-icons';\nvar filterBarClearIcon = 'e-input-group-icon e-clear-icon e-icons';\nvar filterInput = 'e-input-filter';\nvar filterParent = 'e-filter-parent';\nvar mobileFilter = 'e-ddl-device-filter';\nvar clearIcon = 'e-clear-icon';\nvar popupFullScreen = 'e-popup-full-page';\nvar device = 'e-ddl-device';\nvar FOCUS = 'e-input-focus';\n/**\n * The Multiselect enable CheckBoxSelection call this inject module.\n */\nvar CheckBoxSelection = /** @class */function () {\n function CheckBoxSelection(parent) {\n this.activeLi = [];\n this.activeEle = [];\n this.parent = parent;\n this.removeEventListener();\n this.addEventListener();\n }\n CheckBoxSelection.prototype.getModuleName = function () {\n return 'CheckBoxSelection';\n };\n CheckBoxSelection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('updatelist', this.listSelection, this);\n this.parent.on('listoption', this.listOption, this);\n this.parent.on('selectAll', this.setSelectAll, this);\n this.parent.on('checkSelectAll', this.checkSelectAll, this);\n this.parent.on('searchBox', this.setSearchBox, this);\n this.parent.on('blur', this.onBlurHandler, this);\n this.parent.on('targetElement', this.targetElement, this);\n this.parent.on('deviceSearchBox', this.setDeviceSearchBox, this);\n this.parent.on('inputFocus', this.getFocus, this);\n this.parent.on('reOrder', this.setReorder, this);\n this.parent.on('activeList', this.getActiveList, this);\n this.parent.on('selectAllText', this.setLocale, this);\n this.parent.on('filterBarPlaceholder', this.setPlaceholder, this);\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n this.parent.on('addItem', this.checboxCreate, this);\n this.parent.on('popupFullScreen', this.setPopupFullScreen, this);\n };\n CheckBoxSelection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updatelist', this.listSelection);\n this.parent.off('listoption', this.listOption);\n this.parent.off('selectAll', this.setSelectAll);\n this.parent.off('checkSelectAll', this.checkSelectAll);\n this.parent.off('searchBox', this.setSearchBox);\n this.parent.off('blur', this.onBlurHandler);\n this.parent.off('targetElement', this.targetElement);\n this.parent.off('deviceSearchBox', this.setDeviceSearchBox);\n this.parent.off('inputFocus', this.getFocus);\n this.parent.off('reOrder', this.setReorder);\n this.parent.off('activeList', this.getActiveList);\n this.parent.off('selectAllText', this.setLocale);\n this.parent.off('filterBarPlaceholder', this.setPlaceholder);\n this.parent.off('addItem', this.checboxCreate);\n this.parent.off('popupFullScreen', this.setPopupFullScreen);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.listOption = function (args) {\n var _this = this;\n if (isNullOrUndefined(this.parent.listCurrentOptions.itemCreated)) {\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n };\n } else {\n var itemCreated_1 = this.parent.listCurrentOptions.itemCreated;\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n itemCreated_1.apply(_this, [e]);\n };\n }\n };\n CheckBoxSelection.prototype.setPlaceholder = function (props) {\n Input.setPlaceholder(props.filterBarPlaceholder, this.filterInput);\n };\n CheckBoxSelection.prototype.checboxCreate = function (e) {\n var item;\n if (!isNullOrUndefined(e.item)) {\n item = e.item;\n } else {\n item = e;\n }\n if (this.parent.enableGroupCheckBox || item.className !== 'e-list-group-item ' && item.className !== 'e-list-group-item') {\n var checkboxEle = createCheckBox(this.parent.createElement, true);\n var icon = select('div.' + ICON, item);\n item.insertBefore(checkboxEle, item.childNodes[isNullOrUndefined(icon) ? 0 : 1]);\n select('.' + CHECKBOXFRAME, checkboxEle);\n if (this.parent.enableGroupCheckBox) {\n this.parent.popupWrapper.classList.add('e-multiselect-group');\n }\n return item;\n } else {\n return item;\n }\n };\n CheckBoxSelection.prototype.setSelectAll = function () {\n if (this.parent.showSelectAll) {\n if (isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent = this.parent.createElement('div', {\n className: checkAllParent\n });\n this.selectAllSpan = this.parent.createElement('span', {\n className: 'e-all-text'\n });\n this.selectAllSpan.textContent = '';\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n this.checboxCreate(this.checkAllParent);\n if (this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n append([this.checkAllParent], this.parent.filterParent);\n } else {\n append([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n if (!this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent.parentNode.insertBefore(this.checkAllParent, this.parent.filterParent.nextSibling);\n } else {\n prepend([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n EventHandler.add(this.checkAllParent, 'mousedown', this.clickHandler, this);\n }\n if (this.parent.list.classList.contains('e-nodata') || this.parent.listData && this.parent.listData.length <= 1 && !this.parent.enableVirtualization && !this.parent.isDynamicDataChange || this.parent.isDynamicDataChange && this.parent.listData && this.parent.listData.length <= 1) {\n this.checkAllParent.style.display = 'none';\n } else {\n this.checkAllParent.style.display = 'block';\n }\n this.parent.selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n } else if (!isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent.parentElement.removeChild(this.checkAllParent);\n this.checkAllParent = null;\n }\n };\n CheckBoxSelection.prototype.destroy = function () {\n this.removeEventListener();\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.checkAllParent = null;\n this.clearIconElement = null;\n this.filterInput = null;\n this.filterInputObj = null;\n this.checkWrapper = null;\n this.selectAllSpan = null;\n };\n CheckBoxSelection.prototype.listSelection = function (args) {\n var target;\n if (!isNullOrUndefined(args.e)) {\n var frameElm = args.li.querySelector('.e-checkbox-wrapper .e-frame');\n target = !isNullOrUndefined(args.e.target) ? args.e.target.classList.contains('e-frame') && (!this.parent.showSelectAll || this.checkAllParent && !this.checkAllParent.contains(args.e.target)) ? args.e.target : args.li.querySelector('.e-checkbox-wrapper').childNodes[1] : args.li.querySelector('.e-checkbox-wrapper').childNodes[1];\n } else {\n var checkboxWrapper = args.li.querySelector('.e-checkbox-wrapper');\n target = checkboxWrapper ? checkboxWrapper.childNodes[1] : args.li.lastElementChild.childNodes[1];\n }\n if (this.parent.itemTemplate || this.parent.enableGroupCheckBox) {\n target = args.li.firstElementChild.childNodes[1];\n }\n if (!isNullOrUndefined(target)) {\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n }\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n var selectAll = false;\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK), args.li, args.e, selectAll);\n }\n };\n CheckBoxSelection.prototype.validateCheckNode = function (checkWrap, isCheck, li, e, selectAll) {\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true, selectAll);\n };\n CheckBoxSelection.prototype.clickHandler = function (e) {\n var target;\n if (e.currentTarget.classList.contains(this.checkAllParent.className) || e.currentTarget.classList.value === this.checkAllParent.className) {\n target = e.currentTarget.firstElementChild.lastElementChild;\n } else {\n target = e.currentTarget;\n }\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n var selectAll = true;\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK), null, e, selectAll);\n }\n e.preventDefault();\n };\n CheckBoxSelection.prototype.changeState = function (wrapper, state, e, isPrevent, selectAll) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n ariaState = 'true';\n if (selectAll) {\n this.parent.selectAllItems(true, e);\n this.setLocale(true);\n }\n } else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n ariaState = 'false';\n if (selectAll) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n } else if (state === 'indeterminate' && !frameSpan.classList.contains(INDETERMINATE)) {\n removeClass([frameSpan], [CHECK]);\n frameSpan.classList.add(INDETERMINATE);\n ariaState = 'false';\n if (selectAll) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n };\n CheckBoxSelection.prototype.setSearchBox = function (args) {\n if (isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent = this.parent.createElement('span', {\n className: filterParent\n });\n this.filterInput = this.parent.createElement('input', {\n attrs: {\n type: 'text'\n },\n className: filterInput\n });\n this.parent.element.parentNode.insertBefore(this.filterInput, this.parent.element);\n var backIcon = false;\n if (Browser.isDevice && this.parent.isDeviceFullScreen) {\n backIcon = true;\n this.parent.mobFilter = false;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ? [searchBackIcon, filterBarClearIcon] : [filterBarClearIcon],\n properties: {\n placeholder: this.parent.filterBarPlaceholder\n }\n }, this.parent.createElement);\n if (!isNullOrUndefined(this.parent.cssClass)) {\n if (this.parent.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n } else if (this.parent.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], this.parent.filterParent);\n prepend([this.parent.filterParent], args.popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false',\n 'aria-label': 'multiselect',\n 'aria-expanded': 'true',\n 'aria-controls': args.popupElement.id\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'mousedown', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n EventHandler.add(this.filterInput, 'input', this.parent.onInput, this.parent);\n EventHandler.add(this.filterInput, 'keyup', this.parent.keyUp, this.parent);\n EventHandler.add(this.filterInput, 'keydown', this.parent.onKeyDown, this.parent);\n EventHandler.add(this.filterInput, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.parent.pasteHandler, this.parent);\n this.parent.searchBoxHeight = this.filterInputObj.container.parentElement.getBoundingClientRect().height;\n return this.filterInputObj;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.clickOnBackIcon = function (e) {\n this.parent.hidePopup();\n removeClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.inputElement.focus();\n };\n CheckBoxSelection.prototype.clearText = function (e) {\n this.parent.targetInputElement.value = '';\n if (this.parent.allowFiltering && this.parent.targetInputElement.value === '') {\n this.parent.search(null);\n }\n this.parent.refreshListItems(null);\n this.parent.refreshPopup();\n this.clearIconElement.style.visibility = 'hidden';\n this.filterInput.focus();\n if (!this.parent.enableVirtualization || this.parent.enableVirtualization && (isNullOrUndefined(this.parent.value) || this.parent.value && this.parent.value.length === 0)) {\n this.setReorder(e);\n }\n this.boundPreventListSelection = this.preventListSelection.bind(this);\n this.parent.popupWrapper.addEventListener('mouseup', this.boundPreventListSelection, true);\n e.preventDefault();\n };\n CheckBoxSelection.prototype.preventListSelection = function (e) {\n e.stopPropagation();\n this.parent.popupWrapper.removeEventListener('mouseup', this.boundPreventListSelection, true);\n this.boundPreventListSelection = null;\n };\n CheckBoxSelection.prototype.setDeviceSearchBox = function () {\n this.parent.popupObj.element.classList.add(device);\n this.parent.popupObj.element.classList.add(mobileFilter);\n this.parent.popupObj.position = {\n X: 0,\n Y: 0\n };\n this.parent.popupObj.dataBind();\n this.setSearchBoxPosition();\n this.backIconElement = this.filterInputObj.container.querySelector('.e-back-icon');\n this.clearIconElement = this.filterInputObj.container.querySelector('.' + clearIcon);\n this.clearIconElement.style.visibility = 'hidden';\n EventHandler.add(this.backIconElement, 'click', this.clickOnBackIcon, this);\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n };\n CheckBoxSelection.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n var selectAllHeight = 0;\n var footerHeight = 0;\n var headerHeight = 0;\n if (this.checkAllParent) {\n selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n if (this.parent.header) {\n headerHeight = this.parent.header.getBoundingClientRect().height;\n }\n if (this.parent.footer) {\n footerHeight = this.parent.footer.getBoundingClientRect().height;\n }\n this.parent.popupObj.element.style.maxHeight = '100%';\n this.parent.popupObj.element.style.width = '100%';\n this.parent.list.style.maxHeight = window.innerHeight - searchBoxHeight - selectAllHeight - headerHeight - footerHeight + 'px';\n this.parent.list.style.height = window.innerHeight - searchBoxHeight - selectAllHeight - headerHeight - footerHeight + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n CheckBoxSelection.prototype.setPopupFullScreen = function () {\n if (this.parent && this.parent.popupObj) {\n attributes(this.parent.popupObj.element, {\n style: 'left:0px;right:0px;top:0px;bottom:0px;'\n });\n addClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.popupObj.element.style.maxHeight = '100%';\n this.parent.popupObj.element.style.width = '100%';\n }\n };\n CheckBoxSelection.prototype.targetElement = function () {\n if (!isNullOrUndefined(this.clearIconElement)) {\n this.parent.targetInputElement = this.filterInput;\n this.clearIconElement.style.visibility = this.parent.targetInputElement.value === '' ? 'hidden' : 'visible';\n }\n return this.parent.targetInputElement.value;\n };\n CheckBoxSelection.prototype.onBlurHandler = function (e) {\n if (!this.parent.element.classList.contains('e-listbox')) {\n var target = void 0;\n if (this.parent.keyAction) {\n return;\n }\n if (Browser.isIE) {\n target = !isNullOrUndefined(e) && e.target;\n }\n if (!Browser.isIE) {\n target = !isNullOrUndefined(e) && e.relatedTarget;\n }\n // eslint-disable-next-line max-len\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) && this.parent.popupObj.element.contains(target) && !Browser.isIE && this.filterInput) {\n this.filterInput.focus();\n return;\n }\n if (this.parent.scrollFocusStatus && this.filterInput) {\n e.preventDefault();\n this.filterInput.focus();\n this.parent.scrollFocusStatus = false;\n return;\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) && !this.parent.popupObj.element.classList.contains('e-popup-close')) {\n this.parent.inputFocus = false;\n this.parent.updateValueState(e, this.parent.value, this.parent.tempValues);\n this.parent.dispatchEvent(this.parent.hiddenElement, 'change');\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) && !this.parent.popupObj.element.classList.contains('e-popup-close')) {\n this.parent.inputFocus = false;\n this.parent.overAllWrapper.classList.remove(FOCUS);\n this.parent.trigger('blur');\n this.parent.focused = true;\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) && !this.parent.popupObj.element.classList.contains('e-popup-close') && !Browser.isDevice) {\n this.parent.hidePopup();\n }\n }\n };\n CheckBoxSelection.prototype.onDocumentClick = function (e) {\n if (this.parent.getLocaleName() !== 'listbox') {\n var target = e.target;\n if (!isNullOrUndefined(this.parent.popupObj) && closest(target, '[id=\"' + this.parent.popupObj.element.id + '\"]')) {\n if (!(this.filterInput && this.filterInput.value !== '')) {\n e.preventDefault();\n }\n }\n if (!(!isNullOrUndefined(this.parent.popupObj) && closest(target, '[id=\"' + this.parent.popupObj.element.id + '\"]')) && !isNullOrUndefined(this.parent.overAllWrapper) && !this.parent.overAllWrapper.contains(e.target)) {\n if (this.parent.overAllWrapper.classList.contains(dropDownBaseClasses.focus) || this.parent.isPopupOpen()) {\n this.parent.inputFocus = false;\n this.parent.scrollFocusStatus = false;\n this.parent.hidePopup();\n this.parent.onBlurHandler(e, true);\n this.parent.focused = true;\n }\n } else {\n this.parent.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') && document.activeElement === this.filterInput;\n }\n if (!isNullOrUndefined(this.parent.overAllWrapper) && !this.parent.overAllWrapper.contains(e.target) && this.parent.overAllWrapper.classList.contains('e-input-focus') && !this.parent.isPopupOpen()) {\n if (Browser.isIE) {\n this.parent.onBlurHandler();\n } else {\n this.parent.onBlurHandler(e);\n }\n }\n if (this.filterInput === target) {\n this.filterInput.focus();\n }\n }\n };\n CheckBoxSelection.prototype.getFocus = function (e) {\n this.parent.overAllWrapper.classList.remove(FOCUS);\n if (this.parent.keyAction && e.value !== 'clear' && e.value !== 'focus') {\n this.parent.keyAction = false;\n return;\n }\n if (e.value === 'focus') {\n this.filterInput.focus();\n this.parent.removeFocus();\n EventHandler.remove(this.parent.list, 'keydown', this.parent.onKeyDown);\n }\n if (e.value === 'clear') {\n this.filterInput.value = '';\n this.clearIconElement.style.visibility = 'hidden';\n }\n };\n CheckBoxSelection.prototype.checkSelectAll = function (e) {\n if (e.value === 'check') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale(true);\n }\n if (e.value === 'uncheck') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale();\n }\n if (e.value === 'indeterminate') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale();\n }\n };\n CheckBoxSelection.prototype.setLocale = function (unSelect) {\n if (this.parent.selectAllText !== 'Select All' || this.parent.unSelectAllText !== 'Unselect All') {\n var template = unSelect ? this.parent.unSelectAllText : this.parent.selectAllText;\n this.selectAllSpan.textContent = '';\n var compiledString = compile(template);\n var templateName = unSelect ? 'unSelectAllText' : 'selectAllText';\n for (var _i = 0, _a = compiledString({}, this.parent, templateName, null, !this.parent.isStringTemplate); _i < _a.length; _i++) {\n var item = _a[_i];\n this.selectAllSpan.textContent = item.textContent;\n }\n } else {\n var l10nLocale = {\n selectAllText: 'Select All',\n unSelectAllText: 'Unselect All'\n };\n var l10n = new L10n(this.parent.getLocaleName(), {}, this.parent.locale);\n if (l10n.getConstant('selectAllText') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.parent.locale);\n }\n if (!isNullOrUndefined(this.selectAllSpan)) {\n this.selectAllSpan.textContent = unSelect ? l10n.getConstant('unSelectAllText') : l10n.getConstant('selectAllText');\n }\n }\n };\n CheckBoxSelection.prototype.getActiveList = function (args) {\n if (args.li.classList.contains('e-active')) {\n this.activeLi.push(args.li.cloneNode(true));\n } else {\n this.activeLi.splice(args.index, 1);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.setReorder = function (args) {\n if (this.parent.enableSelectionOrder && !isNullOrUndefined(this.parent.value)) {\n var activeLiCount = this.parent.ulElement.querySelectorAll('li.e-active').length;\n var remLi = void 0;\n var ulEle_1 = this.parent.createElement('ul', {\n className: 'e-list-parent e-ul e-reorder'\n });\n if (activeLiCount > 0) {\n var activeListItems = this.parent.ulElement.querySelectorAll('li.e-active');\n activeListItems.forEach(function (item) {\n ulEle_1.appendChild(item);\n });\n remLi = this.parent.ulElement.querySelectorAll('li.e-active');\n addClass(remLi, 'e-reorder-hide');\n if (this.parent.enableVirtualization) {\n var virtualUlElement = this.parent.list.querySelector('.e-virtual-ddl-content');\n prepend([ulEle_1], virtualUlElement);\n } else {\n prepend([ulEle_1], this.parent.list);\n }\n }\n this.parent.focusAtFirstListItem();\n }\n };\n return CheckBoxSelection;\n}();\nexport { CheckBoxSelection };","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};\nimport { compile, Property, EventHandler, Animation, formatUnit, append, attributes } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, detach, Event, Complex, addClass, removeClass, closest, isUndefined, getValue, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { Popup, isCollide, createSpinner, showSpinner, hideSpinner, getZindexPartial } from '@syncfusion/ej2-popups';\nimport { highlightSearch, revertHighlightSearch } from '../common/highlight-search';\n/**\n * The Mention component is used to list someone or something based on user input in textarea, input,\n * or any other editable element from which the user can select.\n */\nvar Mention = /** @class */function (_super) {\n __extends(Mention, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {MentionModel} options - Specifies the MentionComponent model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Mention(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n *\n * @param {MentionModel} newProp - Returns the dynamic property value of the component.\n * @param {MentionModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n Mention.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'minLength':\n this.minLength = newProp.minLength;\n break;\n case 'suffixText':\n this.suffixText = newProp.suffixText;\n break;\n case 'allowSpaces':\n this.allowSpaces = newProp.allowSpaces;\n break;\n case 'mentionChar':\n this.mentionChar = newProp.mentionChar;\n break;\n case 'showMentionChar':\n this.showMentionChar = newProp.showMentionChar;\n break;\n case 'requireLeadingSpace':\n this.requireLeadingSpace = newProp.requireLeadingSpace;\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n }\n }\n };\n Mention.prototype.updateCssClass = function (newClass, oldClass) {\n if (!isNullOrUndefined(oldClass)) {\n oldClass = oldClass.replace(/\\s+/g, ' ').trim();\n }\n if (!isNullOrUndefined(newClass)) {\n newClass = newClass.replace(/\\s+/g, ' ').trim();\n }\n this.setCssClass(newClass, [this.inputElement], oldClass);\n if (this.popupObj) {\n this.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n Mention.prototype.setCssClass = function (cssClass, elements, oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(cssClass) && cssClass !== '') {\n addClass(elements, cssClass.split(' '));\n }\n };\n Mention.prototype.initializeData = function () {\n this.isSelected = false;\n this.isFiltered = false;\n this.beforePopupOpen = false;\n this.initRemoteRender = false;\n this.isListResetted = false;\n this.isPopupOpen = false;\n this.isCollided = false;\n this.lineBreak = false;\n this.isRTE = false;\n this.keyEventName = 'mousedown';\n };\n /**\n * Execute before render the list items\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.preRender = function () {\n this.initializeData();\n _super.prototype.preRender.call(this);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.render = function () {\n var isSelector = typeof this.target === 'string';\n this.inputElement = !isNullOrUndefined(this.target) ? this.checkAndUpdateInternalComponent(isSelector ? document.querySelector(this.target) : this.target) : this.element;\n if (this.isContentEditable(this.inputElement)) {\n if (!this.inputElement.hasAttribute('contenteditable')) {\n this.inputElement.setAttribute('contenteditable', 'true');\n }\n addClass([this.inputElement], ['e-mention']);\n if (isNullOrUndefined(this.target)) {\n addClass([this.inputElement], ['e-editable-element']);\n }\n }\n this.inputElement.setAttribute('role', 'textbox');\n this.inputElement.setAttribute('aria-label', 'mention');\n this.queryString = this.elementValue();\n this.wireEvent();\n };\n Mention.prototype.wireEvent = function () {\n EventHandler.add(this.inputElement, 'keyup', this.onKeyUp, this);\n this.bindCommonEvent();\n };\n Mention.prototype.unWireEvent = function () {\n EventHandler.remove(this.inputElement, 'keyup', this.onKeyUp);\n this.unBindCommonEvent();\n };\n Mention.prototype.bindCommonEvent = function () {\n if (!Browser.isDevice) {\n this.inputElement.addEventListener('keydown', this.keyDownHandler.bind(this), !this.isRTE);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.hideSpinner = function () {\n this.hideWaitingSpinner();\n };\n Mention.prototype.hideWaitingSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n }\n if (!isNullOrUndefined(this.spinnerTemplate) && !isNullOrUndefined(this.spinnerTemplateElement)) {\n detach(this.spinnerTemplateElement);\n }\n };\n Mention.prototype.checkAndUpdateInternalComponent = function (targetElement) {\n if (!this.isVue && targetElement.classList.contains('e-richtexteditor')) {\n return targetElement.querySelector('.e-content');\n }\n if (this.isVue && targetElement.nodeName === 'TEXTAREA' && targetElement.classList.contains('e-rte-hidden')) {\n var parentElement = targetElement.parentElement;\n if (parentElement && parentElement.classList.contains('e-richtexteditor')) {\n return parentElement.querySelector('.e-content');\n }\n }\n if (targetElement && targetElement.parentElement && targetElement.parentElement.classList.contains('e-rte-content')) {\n this.isRTE = true;\n this.keyEventName = 'click';\n }\n return targetElement;\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n Mention.prototype.showWaitingSpinner = function () {\n if (!isNullOrUndefined(this.popupObj)) {\n if (isNullOrUndefined(this.spinnerTemplate) && isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = this.popupObj.element;\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n if (!isNullOrUndefined(this.spinnerTemplate)) {\n this.setSpinnerTemplate();\n }\n }\n };\n Mention.prototype.keyDownHandler = function (e) {\n var isKeyAction = true;\n switch (e.keyCode) {\n case 38:\n e.action = e.altKey ? 'hide' : 'up';\n break;\n case 40:\n e.action = e.altKey ? 'open' : 'down';\n break;\n case 33:\n e.action = 'pageUp';\n break;\n case 34:\n e.action = 'pageDown';\n break;\n case 36:\n e.action = 'home';\n break;\n case 35:\n e.action = 'end';\n break;\n case 9:\n e.action = e.shiftKey ? 'close' : 'tab';\n break;\n case 27:\n e.action = 'escape';\n break;\n case 32:\n e.action = 'space';\n break;\n case 13:\n e.action = 'enter';\n break;\n default:\n isKeyAction = false;\n break;\n }\n if (isKeyAction) {\n this.keyActionHandler(e);\n }\n };\n Mention.prototype.keyActionHandler = function (e) {\n var isNavigation = e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown' || e.action === 'home' || e.action === 'end';\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (this.list === undefined && !this.isRequested && !isTabAction && e.action !== 'escape' && e.action !== 'space' && this.mentionChar.charCodeAt(0) === this.getLastLetter(this.getTextRange()).charCodeAt(0)) {\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || !isNullOrUndefined(this.liCollections) && isNavigation && this.liCollections.length === 0 || this.isRequested) {\n return;\n }\n if (e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n switch (e.action) {\n case 'down':\n case 'up':\n this.isUpDownKey = true;\n this.updateUpDownAction(e);\n break;\n case 'tab':\n if (this.isPopupOpen) {\n e.preventDefault();\n var li = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (li) {\n this.isSelected = true;\n this.setSelection(li, e);\n }\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n }\n break;\n case 'enter':\n if (this.isPopupOpen) {\n e.preventDefault();\n if (this.popupObj && this.popupObj.element.contains(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, e, false, true);\n }\n }\n break;\n case 'escape':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n break;\n }\n };\n Mention.prototype.updateUpDownAction = function (e) {\n if (this.fields.disabled && this.list && this.list.querySelectorAll('.e-list-item:not(.e-disabled)').length === 0) {\n return;\n }\n var focusEle = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (this.isSelectFocusItem(focusEle)) {\n this.setSelection(focusEle, e);\n } else if (!isNullOrUndefined(this.liCollections)) {\n var li = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (!isNullOrUndefined(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n }\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n var startIndex = 0;\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n var nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex] : this.liCollections[index];\n if (!isNullOrUndefined(nextItem)) {\n this.setSelection(nextItem, e);\n }\n }\n var itemIndex;\n for (var index = 0; index < this.liCollections.length; index++) {\n if (this.liCollections[index].classList.contains(dropDownBaseClasses.focus) || this.liCollections[index].classList.contains(dropDownBaseClasses.selected)) {\n itemIndex = index;\n break;\n }\n }\n if (itemIndex != null && this.isDisabledElement(this.liCollections[itemIndex])) {\n this.updateUpDownAction(e);\n }\n if (this.isPopupOpen) {\n e.preventDefault();\n }\n };\n Mention.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n Mention.prototype.unBindCommonEvent = function () {\n if (!Browser.isDevice) {\n this.inputElement.removeEventListener('keydown', this.keyDownHandler.bind(this), !this.isRTE);\n }\n };\n Mention.prototype.onKeyUp = function (e) {\n var rangetextContent;\n if (this.isUpDownKey && this.isPopupOpen && e.keyCode === 229) {\n this.isUpDownKey = false;\n return;\n }\n this.isTyped = e.code !== 'Enter' && e.code !== 'Space' && e.code !== 'ArrowDown' && e.code !== 'ArrowUp' ? true : false;\n var isRteImage = document.activeElement.parentElement && document.activeElement.parentElement.querySelector('.e-rte-image') ? true : false;\n if (document.activeElement !== this.inputElement && !isRteImage) {\n this.inputElement.focus();\n }\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n rangetextContent = this.range.startContainer.textContent.split('');\n }\n var currentRange = this.getTextRange();\n // eslint-disable-next-line security/detect-non-literal-regexp\n var mentionRegex = new RegExp(this.mentionChar.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&') + '\\\\s');\n var isValid = currentRange && mentionRegex.test(currentRange) ? false : true;\n var lastWordRange = this.getLastLetter(currentRange);\n var previousChar = currentRange ? currentRange.charAt(Math.max(0, currentRange.indexOf(this.mentionChar) - 1)) : '';\n if (isValid && this.allowSpaces && currentRange && currentRange.includes(this.mentionChar) && currentRange.split(this.mentionChar).pop() !== '' && (!this.requireLeadingSpace || this.requireLeadingSpace && (previousChar === ' ' || currentRange.indexOf(this.mentionChar) === 0))) {\n lastWordRange = this.mentionChar + currentRange.split(this.mentionChar).pop();\n }\n if (!this.requireLeadingSpace && lastWordRange && lastWordRange.includes(this.mentionChar)) {\n lastWordRange = this.mentionChar + lastWordRange.split(this.mentionChar).pop();\n }\n var lastTwoLetters = this.mentionChar.toString() + this.mentionChar.toString();\n // eslint-disable-next-line security/detect-non-literal-regexp\n var Regex = new RegExp(this.mentionChar.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'g');\n var charRegex = new RegExp('[a-zA-Z]', 'g');\n if (e.key === 'Shift' || e.keyCode === 37 || e.keyCode === 39) {\n return;\n }\n if (this.beforePopupOpen && this.isPopupOpen && lastWordRange === lastTwoLetters) {\n this.hidePopup();\n return;\n }\n if (!currentRange || !lastWordRange || !lastWordRange.includes(this.mentionChar) && !this.requireLeadingSpace || e.code === 'Enter' || e.keyCode === 27 || lastWordRange.match(Regex) && lastWordRange.match(Regex).length > 1 || this.isContentEditable(this.inputElement) && this.range.startContainer && this.range.startContainer.previousElementSibling && this.range.startContainer.previousElementSibling.tagName !== 'BR' && this.range.startContainer.textContent.split('').length > 0 && (rangetextContent.length === 1 || rangetextContent[rangetextContent.length - 2].indexOf('') === -1 || this.range.startContainer.nodeType === 1)) {\n if (isValid && this.isPopupOpen && this.allowSpaces && currentRange && currentRange.trim() !== '' && charRegex.test(currentRange) && currentRange.indexOf(this.mentionChar) !== -1 && !this.isMatchedText() && currentRange.length > 1 && currentRange.replace(/\\u00A0/g, ' ').charAt(currentRange.length - 2) !== ' ' && this.list && this.list.querySelectorAll('ul').length > 0 && e.code !== 'Enter') {\n this.queryString = currentRange.substring(currentRange.lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ');\n this.searchLists(e);\n } else if (!this.requireLeadingSpace || this.isPopupOpen && (!this.allowSpaces || !lastWordRange) && e.code !== 'ArrowDown' && e.code !== 'ArrowUp') {\n this.hidePopup();\n this.lineBreak = true;\n } else if ((e.key === 'Backspace' || e.key === 'Delete') && this.range && this.range.startOffset !== this.range.endOffset) {\n this.range.deleteContents();\n }\n return;\n }\n if (lastWordRange.includes(this.mentionChar)) {\n this.queryString = !this.requireLeadingSpace ? lastWordRange.substring(lastWordRange.lastIndexOf(this.mentionChar) + 1).trim() : lastWordRange.replace(this.mentionChar, '');\n }\n if (this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0) && this.queryString !== '' && e.keyCode !== 38 && e.keyCode !== 40 && !this.lineBreak) {\n this.searchLists(e);\n if (!this.isPopupOpen && this.queryString.length >= this.minLength) {\n if (!this.isContentEditable(this.inputElement)) {\n this.showPopup();\n } else if (this.isContentEditable(this.inputElement) && this.range && this.range.startContainer !== this.inputElement && e.keyCode !== 9) {\n this.showPopup();\n }\n }\n } else if ((!this.requireLeadingSpace ? lastWordRange.includes(this.mentionChar) : lastWordRange.indexOf(this.mentionChar) === 0) && !this.isPopupOpen && e.keyCode !== 8 && (!this.popupObj || isNullOrUndefined(this.target) && !document.body.contains(this.popupObj.element) || !isNullOrUndefined(this.target) && document.body.contains(this.popupObj.element))) {\n if (this.initRemoteRender && this.list && this.list.classList.contains('e-nodata')) {\n this.searchLists(e);\n }\n this.resetList(this.dataSource, this.fields);\n if (isNullOrUndefined(this.list)) {\n this.initValue();\n }\n if (!this.isPopupOpen && e.keyCode !== 38 && e.keyCode !== 40 && this.queryString.length >= this.minLength) {\n this.didPopupOpenByTypingInitialChar = true;\n this.showPopup();\n if (this.initRemoteRender && this.list.querySelectorAll('li').length === 0) {\n this.showWaitingSpinner();\n }\n this.lineBreak = false;\n }\n } else if (this.allowSpaces && this.queryString !== '' && currentRange && currentRange.trim() !== '' && currentRange.replace('\\u00a0', ' ').lastIndexOf(' ') < currentRange.length - 1 && e.keyCode !== 38 && e.keyCode !== 40 && e.keyCode !== 8 && (this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0) || this.liCollections && this.liCollections.length > 0)) {\n this.queryString = currentRange.substring(currentRange.lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ');\n this.searchLists(e);\n } else if (this.queryString === '' && this.isPopupOpen && e.keyCode !== 38 && e.keyCode !== 40 && this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0)) {\n this.searchLists(e);\n if (!this.isListResetted) {\n this.resetList(this.dataSource, this.fields);\n }\n }\n this.isListResetted = false;\n };\n Mention.prototype.isMatchedText = function () {\n var isMatched = false;\n for (var i = 0; i < (this.liCollections && this.liCollections.length); i++) {\n if (this.getTextRange() && this.getTextRange().substring(this.getTextRange().lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ').trim() === this.liCollections[i].getAttribute('data-value').toLowerCase()) {\n isMatched = true;\n }\n }\n return isMatched;\n };\n Mention.prototype.getCurrentRange = function () {\n this.range = this.inputElement.ownerDocument.getSelection().getRangeAt(0);\n return this.range;\n };\n Mention.prototype.searchLists = function (e) {\n var _this = this;\n this.isDataFetched = false;\n if (isNullOrUndefined(this.list)) {\n _super.prototype.render.call(this);\n this.unWireListEvents();\n this.wireListEvents();\n }\n if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.queryString,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.filterAction(_this.dataSource, null, _this.fields);\n }\n });\n };\n Mention.prototype.filterAction = function (dataSource, query, fields) {\n this.beforePopupOpen = true;\n if (this.queryString.length >= this.minLength) {\n this.resetList(dataSource, fields, query);\n this.isListResetted = true;\n } else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n this.beforePopupOpen = false;\n }\n this.setDataIndex();\n this.renderReactTemplates();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Mention.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.isActive) {\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, {\n 'id': this.inputElement.id + '_options',\n 'role': 'listbox',\n 'aria-hidden': 'false'\n });\n var isRTESlashMenuPopup = this.isRTE && this.cssClass && this.cssClass.indexOf('e-slash-menu') > -1;\n if (isRTESlashMenuPopup) {\n ulElement.id = this.inputElement.id + '_slash_menu_options';\n }\n }\n var focusItem = this.fields.disabled ? ulElement.querySelector('.' + dropDownBaseClasses.li + ':not(.e-disabled)') : ulElement.querySelector('.' + dropDownBaseClasses.li);\n if (focusItem) {\n focusItem.classList.add(dropDownBaseClasses.selected);\n this.selectedLI = focusItem;\n var value = this.getFormattedValue(focusItem.getAttribute('data-value'));\n this.selectEventCallback(focusItem, this.getDataByValue(value), value, true);\n }\n if (this.beforePopupOpen && this.isPopupOpen) {\n if (!isNullOrUndefined(this.popupObj.element)) {\n this.popupObj.element.remove();\n }\n this.renderPopup();\n }\n }\n };\n Mention.prototype.setDataIndex = function () {\n for (var i = 0; this.liCollections && i < this.liCollections.length; i++) {\n this.liCollections[i].setAttribute('data-index', i.toString());\n }\n };\n Mention.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this.highlight) {\n if (_this.inputElement.tagName === _this.getNgDirective() && _this.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }, 0);\n } else {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }\n }\n };\n } else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this.highlight) {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }\n itemCreated_1.apply(_this, [e]);\n };\n }\n return fields;\n };\n Mention.prototype.elementValue = function () {\n if (!this.isContentEditable(this.inputElement)) {\n return this.inputElement.value.replace(this.mentionChar, '');\n } else {\n return this.inputElement.textContent.replace(this.mentionChar, '');\n }\n };\n Mention.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = this.queryString === '' && !isNullOrUndefined(this.elementValue()) ? 'equal' : this.filterType;\n var queryString = this.queryString === '' && !isNullOrUndefined(this.elementValue()) ? this.elementValue() : this.queryString;\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n } else {\n var mapping = !isNullOrUndefined(this.fields.text) ? this.fields.text : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount)) {\n // Since defualt value of suggestioncount is 25, checked the condition\n if (this.suggestionCount !== 25) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n return filterQuery;\n };\n Mention.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n }\n }\n };\n Mention.prototype.getTextRange = function () {\n var text;\n if (!this.isContentEditable(this.inputElement)) {\n var component = this.inputElement;\n if (!isNullOrUndefined(component)) {\n var startPos = component.selectionStart;\n if (component.value && startPos >= 0) {\n text = component.value.substring(0, startPos);\n }\n }\n } else {\n if (this.range) {\n var selectedElem = this.range.startContainer;\n if (!isNullOrUndefined(selectedElem)) {\n var workingNodeContent = selectedElem.textContent;\n var selectStartOffset = this.range.startOffset;\n if (workingNodeContent && selectStartOffset >= 0) {\n text = workingNodeContent.substring(0, selectStartOffset);\n }\n }\n }\n }\n return text;\n };\n Mention.prototype.getLastLetter = function (text) {\n if (isNullOrUndefined(text)) {\n return '';\n }\n var textValue = text.indexOf('\\u200B') > -1 ? text.replace(/\\u200B/g, '').replace(/\\u00A0/g, ' ') : text.replace(/\\u00A0/g, ' ');\n var words = textValue.split(/\\s+/);\n var wordCnt = words.length - 1;\n return words[wordCnt].trim();\n };\n Mention.prototype.isContentEditable = function (element) {\n return element && element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA';\n };\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n */\n Mention.prototype.showPopup = function () {\n this.beforePopupOpen = true;\n if (document.activeElement !== this.inputElement) {\n this.inputElement.focus();\n }\n this.queryString = this.didPopupOpenByTypingInitialChar ? this.queryString : '';\n this.didPopupOpenByTypingInitialChar = false;\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n }\n if (!this.isTyped) {\n this.resetList(this.dataSource, this.fields);\n }\n if (isNullOrUndefined(this.list)) {\n this.initValue();\n }\n this.renderPopup();\n attributes(this.inputElement, {\n 'aria-activedescendant': this.selectedElementID\n });\n if (this.selectedElementID == null) {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in an open state.\n *\n * @returns {void}\n */\n Mention.prototype.hidePopup = function (e) {\n this.removeSelection();\n this.closePopup(0, e);\n };\n Mention.prototype.closePopup = function (delay, e) {\n var _this = this;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-activedescendant');\n this.beforePopupOpen = false;\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var popupInstance = this.popupObj;\n var eventArgs = {\n popup: popupInstance,\n cancel: false,\n animation: animModel,\n event: e || null\n };\n this.trigger('closed', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && _this.popupObj) {\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n } else {\n _this.destroyPopup();\n }\n }\n });\n };\n Mention.prototype.renderPopup = function () {\n var _this = this;\n var args = {\n cancel: false\n };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n var popupEle_1;\n if (isNullOrUndefined(_this.target)) {\n popupEle_1 = _this.createElement('div', {\n id: _this.inputElement.id + '_popup',\n className: 'e-mention e-popup ' + (_this.cssClass != null ? _this.cssClass : '')\n });\n } else {\n popupEle_1 = _this.element;\n if (_this.cssClass != null) {\n addClass([popupEle_1], _this.cssClass.split(' '));\n }\n }\n var isRTESlashMenuPopup = _this.isRTE && _this.cssClass && _this.cssClass.indexOf('e-slash-menu') > -1;\n if (isRTESlashMenuPopup) {\n popupEle_1.id = _this.inputElement.id + '_slash_menu_popup';\n } else {\n if (!isNullOrUndefined(_this.target)) {\n popupEle_1.id = _this.inputElement.id + '_popup';\n }\n }\n _this.listHeight = formatUnit(_this.popupHeight);\n if (!isNullOrUndefined(_this.list.querySelector('li')) && !_this.initRemoteRender) {\n var li = _this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li)) {\n _this.selectedLI = li;\n var value = _this.getFormattedValue(li.getAttribute('data-value'));\n _this.selectEventCallback(li, _this.getDataByValue(value), value, true);\n }\n }\n append([_this.list], popupEle_1);\n if (_this.inputElement.parentElement) {\n var rteRootElement = _this.inputElement.parentElement.closest('.e-richtexteditor');\n if (rteRootElement && popupEle_1.firstElementChild && popupEle_1.firstElementChild.childElementCount > 0) {\n popupEle_1.firstElementChild.setAttribute('aria-owns', rteRootElement.id);\n addClass([popupEle_1], 'e-rte-elements');\n }\n }\n if (!_this.popupObj || !document.body.contains(_this.popupObj.element) || !document.contains(popupEle_1) && isNullOrUndefined(_this.target)) {\n document.body.appendChild(popupEle_1);\n }\n var coordinates_1;\n popupEle_1.style.visibility = 'hidden';\n _this.setHeight(popupEle_1);\n var offsetValue = 0;\n var left = 0;\n _this.initializePopup(popupEle_1, offsetValue, left);\n _this.checkCollision(popupEle_1);\n popupEle_1.style.visibility = 'visible';\n var popupLeft_1 = popupEle_1.parentElement.offsetWidth - popupEle_1.offsetWidth;\n var popupHeight_1 = popupEle_1.offsetHeight;\n addClass([popupEle_1], ['e-mention', 'e-popup', 'e-popup-close']);\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n _this.selectedElementID = _this.selectedLI ? _this.selectedLI.id : null;\n attributes(_this.inputElement, {\n 'aria-owns': _this.inputElement.id + '_options',\n 'aria-activedescendant': _this.selectedElementID\n });\n if (_this.selectedElementID == null) {\n _this.inputElement.removeAttribute('aria-activedescendant');\n }\n var animModel = {\n name: 'FadeIn',\n duration: 100\n };\n _this.beforePopupOpen = true;\n var popupInstance = _this.popupObj;\n var eventArgs = {\n popup: popupInstance,\n cancel: false,\n animation: animModel\n };\n _this.trigger('opened', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.renderReactTemplates();\n if (_this.popupObj) {\n _this.popupObj.show(new Animation(eventArgs.animation), _this.zIndex === 1000 ? _this.inputElement : null);\n }\n if (isNullOrUndefined(_this.getTriggerCharPosition())) {\n return;\n }\n coordinates_1 = _this.getCoordinates(_this.inputElement, _this.getTriggerCharPosition());\n if (!_this.isCollided) {\n popupEle_1.style.cssText = 'top: '.concat(coordinates_1.top.toString(), 'px;\\n left: ').concat(coordinates_1.left.toString(), 'px;\\nposition: absolute;\\n display: block;');\n } else {\n if (_this.collision.length > 0 && _this.collision.indexOf('right') > -1 && _this.collision.indexOf('bottom') === -1) {\n popupEle_1.style.cssText = 'top: '.concat(coordinates_1.top.toString(), 'px;\\n left: ').concat(popupLeft_1.toString(), 'px;\\nposition: absolute;\\n display: block;');\n } else if (_this.collision && _this.collision.length > 0 && _this.collision.indexOf('bottom') > -1 && _this.collision.indexOf('right') === -1) {\n popupEle_1.style.left = formatUnit(coordinates_1.left);\n popupEle_1.style.top = formatUnit(coordinates_1.top - parseInt(popupHeight_1.toString(), 10));\n } else if (_this.collision && _this.collision.length > 0 && _this.collision.indexOf('bottom') > -1 && _this.collision.indexOf('right') > -1) {\n popupEle_1.style.left = formatUnit(popupLeft_1);\n popupEle_1.style.top = formatUnit(coordinates_1.top - parseInt(popupHeight_1.toString(), 10));\n } else {\n popupEle_1.style.left = formatUnit(coordinates_1.left);\n popupEle_1.style.top = formatUnit(coordinates_1.top - parseInt(_this.popupHeight.toString(), 10));\n }\n _this.isCollided = false;\n _this.collision = [];\n }\n popupEle_1.style.width = _this.popupWidth !== '100%' && !isNullOrUndefined(_this.popupWidth) ? formatUnit(_this.popupWidth) : 'auto';\n _this.setHeight(popupEle_1);\n popupEle_1.style.zIndex = _this.zIndex === 1000 ? getZindexPartial(popupEle_1).toString() : _this.zIndex.toString();\n } else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n } else {\n _this.beforePopupOpen = false;\n }\n });\n };\n Mention.prototype.setHeight = function (popupEle) {\n if (this.popupHeight !== 'auto' && this.list) {\n this.list.style.maxHeight = (parseInt(this.listHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(this.popupHeight);\n } else {\n popupEle.style.height = 'auto';\n }\n };\n Mention.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || Browser.isDevice && !(this.getModuleName() === 'mention')) {\n var coordinates = this.getCoordinates(this.inputElement, this.getTriggerCharPosition());\n this.collision = isCollide(popupEle, null, coordinates.left, coordinates.top);\n if (this.collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n this.isCollided = true;\n }\n this.popupObj.resolveCollision();\n }\n };\n Mention.prototype.getTriggerCharPosition = function () {\n var mostRecentTriggerCharPos;\n var currentRange = this.getTextRange();\n if (currentRange !== undefined && currentRange !== null) {\n mostRecentTriggerCharPos = 0;\n var idx = currentRange.lastIndexOf(this.mentionChar);\n if (idx >= mostRecentTriggerCharPos) {\n mostRecentTriggerCharPos = idx;\n }\n }\n return mostRecentTriggerCharPos ? mostRecentTriggerCharPos : 0;\n };\n Mention.prototype.initializePopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(),\n targetType: 'relative',\n relateTo: this.inputElement,\n collision: {\n X: 'flip',\n Y: 'flip'\n },\n offsetY: offsetValue,\n enableRtl: this.enableRtl,\n offsetX: left,\n position: {\n X: 'left',\n Y: 'bottom'\n },\n actionOnScroll: 'hide',\n zIndex: this.zIndex,\n close: function () {\n _this.destroyPopup();\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n _this.setDataIndex();\n }\n });\n };\n Mention.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputElement.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n Mention.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.popupObj.destroy();\n if (isNullOrUndefined(this.target)) {\n detach(this.popupObj.element);\n } else {\n this.popupObj.element.innerHTML = '';\n this.popupObj.element.removeAttribute('style');\n this.popupObj.element.removeAttribute('aria-disabled');\n }\n if (this.list.classList.contains('e-nodata')) {\n this.list = null;\n }\n };\n Mention.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '#' + this.popupObj.element.id))) {\n this.hidePopup(e);\n }\n };\n Mention.prototype.getCoordinates = function (element, position) {\n var properties = ['direction', 'boxSizing', 'width', 'height', 'overflowX', 'overflowY', 'borderTopWidth', 'borderRightWidth', 'borderBottomWidth', 'borderLeftWidth', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'fontStyle', 'fontVariant', 'fontWeight', 'fontStretch', 'fontSize', 'fontSizeAdjust', 'lineHeight', 'fontFamily', 'textAlign', 'textTransform', 'textIndent', 'textDecoration', 'letterSpacing', 'wordSpacing'];\n var div;\n var span;\n var range;\n var globalRange;\n var coordinates;\n var computed;\n var rect;\n if (!this.isContentEditable(this.inputElement)) {\n div = this.createElement('div', {\n className: 'e-form-mirror-div'\n });\n document.body.appendChild(div);\n computed = getComputedStyle(element);\n div.style.position = 'absolute';\n div.style.visibility = 'hidden';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n properties.forEach(function (prop) {\n // eslint-disable-next-line security/detect-object-injection\n div.style[prop] = computed[prop];\n });\n div.textContent = element.value.substring(0, position);\n if (this.inputElement.nodeName === 'INPUT') {\n div.textContent = div.textContent.replace(/\\s/g, '\\u00a0');\n }\n span = this.createElement('span');\n span.textContent = element.value.substring(position) || '.';\n div.appendChild(span);\n rect = element.getBoundingClientRect();\n } else {\n var selectedNodePosition = this.getTriggerCharPosition();\n globalRange = this.range;\n range = document.createRange();\n if (this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1) {\n range.setStart(globalRange.startContainer, selectedNodePosition);\n range.setEnd(globalRange.startContainer, selectedNodePosition);\n } else {\n range.setStart(globalRange.startContainer, globalRange.startOffset);\n range.setEnd(globalRange.startContainer, globalRange.endOffset);\n }\n this.isTyped = false;\n range.collapse(false);\n rect = range.getBoundingClientRect().top === 0 ? range.startContainer.getClientRects()[0] : range.getBoundingClientRect();\n }\n var rectTop = rect.top;\n var rectLeft = rect.left;\n var iframes = document.querySelectorAll('iframe');\n if (iframes.length > 0) {\n for (var i = 0; i < iframes.length; i++) {\n // eslint-disable-next-line security/detect-object-injection\n var iframe = iframes[i];\n if (iframe.contentDocument && iframe.contentDocument.contains(element)) {\n var iframeRect = iframe.getBoundingClientRect();\n rectTop += iframeRect.top;\n rectLeft += iframeRect.left;\n }\n }\n }\n var doc = document.documentElement;\n var windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n var windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n var width = 0;\n if (!isNullOrUndefined(range) && range.getBoundingClientRect().top === 0) {\n for (var i = 0; i < this.range.startContainer.childNodes.length; i++) {\n if (this.range.startContainer.childNodes[i].nodeType !== Node.TEXT_NODE && this.range.startContainer.childNodes[i].textContent.trim() !== '') {\n width += this.range.startContainer.childNodes[i].getClientRects()[0].width;\n } else if (this.range.startContainer.childNodes[i].textContent !== '') {\n var span_1 = document.createElement('span');\n span_1.innerHTML = this.range.startContainer.childNodes[i].nodeValue;\n document.body.appendChild(span_1);\n var textNodeWidth = span_1.offsetWidth;\n document.body.removeChild(span_1);\n width += textNodeWidth;\n }\n }\n }\n if (!this.isContentEditable(this.inputElement)) {\n coordinates = {\n top: rectTop + windowTop + span.offsetTop + parseInt(computed.borderTopWidth, 10) + parseInt(computed.fontSize, 10) + 3 - element.scrollTop - (this.isCollided ? 10 : 0),\n left: rectLeft + windowLeft + span.offsetLeft + parseInt(computed.borderLeftWidth, 10)\n };\n document.body.removeChild(div);\n } else {\n if (this.collision && this.collision.length > 0 && this.collision.indexOf('right') > -1 && this.collision.indexOf('bottom') === -1) {\n coordinates = {\n top: rectTop + windowTop + parseInt(getComputedStyle(this.inputElement).fontSize, 10),\n left: rectLeft + windowLeft + width\n };\n } else {\n coordinates = {\n top: rectTop + windowTop + parseInt(getComputedStyle(this.inputElement).fontSize, 10) - (this.isCollided ? 10 : 0),\n left: rectLeft + windowLeft + width\n };\n }\n }\n return coordinates;\n };\n Mention.prototype.initValue = function () {\n this.isDataFetched = false;\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n } else {\n this.updateValues();\n }\n };\n Mention.prototype.updateValues = function () {\n var li = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, null);\n }\n };\n Mention.prototype.renderList = function () {\n _super.prototype.render.call(this);\n this.unWireListEvents();\n this.wireListEvents();\n };\n /**\n * Event binding for list\n *\n * @returns {void}\n */\n Mention.prototype.wireListEvents = function () {\n EventHandler.add(this.list, this.keyEventName, this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n Mention.prototype.unWireListEvents = function () {\n EventHandler.remove(this.list, this.keyEventName, this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n };\n Mention.prototype.onMouseClick = function (e) {\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li) || this.isDisabledElement(li)) {\n return;\n }\n this.isSelected = true;\n this.setSelection(li, e);\n var delay = 100;\n this.closePopup(delay, e);\n this.inputElement.focus();\n if (!this.isRTE) {\n e.preventDefault();\n }\n };\n Mention.prototype.updateSelectedItem = function (li, e, preventSelect, isSelection) {\n var _this = this;\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n var selectedData = this.getDataByValue(value);\n if (!preventSelect && !isNullOrUndefined(e) && !(e.action === 'down' || e.action === 'up')) {\n var items = this.detachChanges(selectedData);\n this.isSelected = true;\n var eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n _this.isSelected = false;\n _this.isSelectCancel = true;\n } else {\n _this.selectEventCallback(li, selectedData, value);\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n } else {\n this.selectEventCallback(li, selectedData, value);\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n Mention.prototype.setSelection = function (li, e) {\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || this.isPopupOpen && this.isSelected && li.classList.contains(dropDownBaseClasses.selected))) {\n this.updateSelectedItem(li, e, false, true);\n } else {\n this.setSelectOptions(li, e);\n }\n };\n Mention.prototype.setSelectOptions = function (li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = !isNullOrUndefined(this.selectedLI) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.isPopupOpen && !isNullOrUndefined(this.selectedLI)) {\n this.setScrollPosition(e);\n }\n if (e && (e.keyCode === 38 || e.keyCode === 40)) {\n return;\n }\n if (isNullOrUndefined(e) || this.setValue(e)) {\n return;\n }\n };\n Mention.prototype.setScrollPosition = function (e) {\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.scrollBottom();\n break;\n default:\n this.scrollTop();\n break;\n }\n } else {\n this.scrollBottom(true);\n }\n };\n Mention.prototype.scrollBottom = function (isInitial) {\n if (!isNullOrUndefined(this.selectedLI)) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset;\n var boxRange = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n } else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n }\n };\n Mention.prototype.scrollTop = function () {\n if (!isNullOrUndefined(this.selectedLI)) {\n var nextOffset = !isNullOrUndefined(this.fields.groupBy) && !isNullOrUndefined(this.fixedHeaderElement) ? this.selectedLI.offsetTop - (this.list.scrollTop + this.fixedHeaderElement.offsetHeight) : this.selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && nextOffset;\n var boxRange = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n } else if (nextOffset < 0) {\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n } else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = this.selectedLI.offsetTop;\n }\n }\n };\n Mention.prototype.selectEventCallback = function (li, selectedData, value, selectLi) {\n this.previousItemData = !isNullOrUndefined(this.itemData) ? this.itemData : null;\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n if (selectLi) {\n addClass([li], dropDownBaseClasses.selected);\n }\n li.setAttribute('aria-selected', 'true');\n this.activeIndex = this.getIndexByValue(value);\n };\n Mention.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' || typeof value === 'boolean' || typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n } else {\n items = value;\n }\n return items;\n };\n Mention.prototype.setValue = function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n if (!isNullOrUndefined(this.displayTemplate)) {\n this.setDisplayTemplate();\n }\n this.updateMentionValue(e);\n return true;\n } else {\n if (!isNullOrUndefined(this.displayTemplate)) {\n this.setDisplayTemplate(e);\n } else {\n this.updateMentionValue(e);\n }\n return true;\n }\n };\n Mention.prototype.updateMentionValue = function (e) {\n var dataItem = this.getItemData();\n var textSuffix = typeof this.suffixText === 'string' ? this.suffixText : '';\n var value;\n var endPos;\n var range;\n var globalRange;\n var selection = this.inputElement.ownerDocument.getSelection();\n var startPos = this.getTriggerCharPosition();\n if (this.isSelectCancel) {\n this.isSelectCancel = false;\n return;\n }\n if (dataItem.text !== null) {\n value = this.mentionVal(dataItem.text);\n }\n if (!this.isContentEditable(this.inputElement)) {\n var myField = this.inputElement;\n var currentTriggerSnippet = this.getTextRange().substring(startPos + this.mentionChar.length, this.getTextRange().length);\n value += textSuffix;\n endPos = startPos + this.mentionChar.length;\n endPos += currentTriggerSnippet.length;\n myField.value = myField.value.substring(0, startPos) + value + myField.value.substring(endPos, myField.value.length);\n myField.selectionStart = startPos + value.length;\n myField.selectionEnd = startPos + value.length;\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n this.onChangeEvent(e);\n } else {\n endPos = this.getTriggerCharPosition() + this.mentionChar.length;\n if (this.range && this.range.startContainer.textContent.trim() !== this.mentionChar) {\n endPos = this.range.endOffset;\n }\n globalRange = this.range;\n range = document.createRange();\n if (this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1 || this.getTextRange() && this.getTextRange().trim() === this.mentionChar) {\n range.setStart(globalRange.startContainer, startPos);\n range.setEnd(globalRange.startContainer, endPos);\n } else {\n if (globalRange.commonAncestorContainer.textContent.trim() !== '' && !isNullOrUndefined(globalRange.commonAncestorContainer.textContent.trim()) && this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1) {\n range.setStart(globalRange.startContainer, globalRange.startOffset - 1);\n range.setEnd(globalRange.startContainer, globalRange.endOffset - 1);\n } else {\n range.setStart(globalRange.startContainer, globalRange.startOffset);\n range.setEnd(globalRange.startContainer, globalRange.endOffset);\n }\n }\n this.isTyped = false;\n range.deleteContents();\n range.startContainer.parentElement.normalize();\n var element = this.createElement('div');\n element.innerHTML = value;\n var frag = document.createDocumentFragment();\n var node = void 0;\n var lastNode = void 0;\n // eslint-disable-next-line no-cond-assign\n while (node = element.firstChild) {\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n if (lastNode) {\n range = range.cloneRange();\n if (this.isRTE) {\n range.setStart(lastNode, lastNode.textContent.length);\n } else {\n range.setStartAfter(lastNode);\n }\n range.collapse(true);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n //New event to update the RichTextEditor value, when a mention item is selected using mouse click action.\n if (!isNullOrUndefined(e.pointerType) && e.pointerType === 'mouse') {\n var event_1 = new CustomEvent('content-changed', {\n detail: {\n click: true\n }\n });\n this.inputElement.dispatchEvent(event_1);\n }\n this.onChangeEvent(e);\n }\n };\n Mention.prototype.mentionVal = function (value) {\n var showChar = this.showMentionChar ? this.mentionChar : '';\n if (!isNullOrUndefined(this.displayTemplate) && !isNullOrUndefined(this.displayTempElement)) {\n value = this.displayTempElement.innerHTML;\n }\n if (this.isContentEditable(this.inputElement)) {\n if (Browser.isAndroid) {\n return '<span contenteditable=\"true\" class=\"e-mention-chip\">' + showChar + value + '</span>'.concat(typeof this.suffixText === 'string' ? this.suffixText : '​');\n } else {\n return '<span contenteditable=\"false\" class=\"e-mention-chip\">' + showChar + value + '</span>'.concat(typeof this.suffixText === 'string' ? this.suffixText : '​');\n }\n } else {\n return showChar + value;\n }\n };\n Mention.prototype.setDisplayTemplate = function (e) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['displayTemplate']);\n if (this.displayTempElement) {\n detach(this.displayTempElement);\n this.displayTempElement = null;\n }\n }\n if (!this.displayTempElement) {\n this.displayTempElement = this.createElement('div');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.displayTempElement.innerHTML = '';\n }\n var compiledString = compile(this.displayTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var displayCompTemp = compiledString(this.itemData, this, 'displayTemplate', this.displayTemplateId, this.isStringTemplate, null, this.displayTempElement);\n if (displayCompTemp && displayCompTemp.length > 0) {\n append(displayCompTemp, this.displayTempElement);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.renderTemplates();\n } else {\n this.renderTemplates(function () {\n _this.updateMentionValue(e);\n });\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Mention.prototype.renderTemplates = function (callBack) {\n this.renderReactTemplates(callBack);\n };\n Mention.prototype.setSpinnerTemplate = function () {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['spinnerTemplate']);\n if (this.spinnerTemplateElement) {\n detach(this.spinnerTemplateElement);\n this.spinnerTemplateElement = null;\n }\n }\n if (!this.spinnerTemplateElement) {\n this.spinnerTemplateElement = this.createElement('div');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.spinnerTemplateElement.innerHTML = '';\n }\n var compiledString = compile(this.spinnerTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var spinnerCompTemp = compiledString(null, this, 'spinnerTemplate', this.spinnerTemplateId, this.isStringTemplate, null, this.spinnerTemplateElement);\n if (spinnerCompTemp && spinnerCompTemp.length > 0) {\n for (var i = 0; i < spinnerCompTemp.length; i++) {\n this.spinnerTemplateElement.appendChild(spinnerCompTemp[i]);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.renderTemplates();\n this.popupObj.element.appendChild(this.spinnerTemplateElement);\n } else {\n this.renderTemplates(function () {\n _this.popupObj.element.appendChild(_this.spinnerTemplateElement);\n });\n }\n };\n Mention.prototype.onChangeEvent = function (eve) {\n this.isSelected = false;\n var items = this.detachMentionChanges(this.itemData);\n var preItems;\n if (typeof this.previousItemData === 'string' || typeof this.previousItemData === 'boolean' || typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n } else {\n preItems = this.previousItemData;\n }\n var eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.item.innerHTML,\n element: this.inputElement\n };\n this.trigger('change', eventArgs);\n };\n Mention.prototype.detachMentionChanges = function (value) {\n var items;\n if (typeof value === 'string' || typeof value === 'boolean' || typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n } else {\n items = value;\n }\n return items;\n };\n Mention.prototype.getItemData = function () {\n var fields = this.fields;\n var dataItem = null;\n dataItem = this.itemData;\n var dataValue;\n var dataText;\n if (!isNullOrUndefined(dataItem)) {\n dataValue = getValue(fields.value, dataItem);\n dataText = getValue(fields.text, dataItem);\n }\n var value = !isNullOrUndefined(dataItem) && !isUndefined(dataValue) ? dataValue : dataItem;\n var text = !isNullOrUndefined(dataItem) && !isUndefined(dataValue) ? dataText : dataItem;\n return {\n value: value,\n text: text\n };\n };\n Mention.prototype.removeSelection = function () {\n if (this.list) {\n var selectedItems = this.list.querySelectorAll('.' + dropDownBaseClasses.selected);\n if (selectedItems.length) {\n removeClass(selectedItems, dropDownBaseClasses.selected);\n selectedItems[0].removeAttribute('aria-selected');\n }\n }\n };\n Mention.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n Mention.prototype.setHover = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n Mention.prototype.removeHover = function () {\n if (this.list) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n };\n Mention.prototype.isValidLI = function (li) {\n return li && li.hasAttribute('role') && li.getAttribute('role') === 'option';\n };\n Mention.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @returns {void}\n */\n Mention.prototype.search = function (text, positionX, positionY) {\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n }\n var currentRange = this.getTextRange();\n this.queryString = text;\n var lastWordRange = this.getLastLetter(currentRange);\n if (this.ignoreCase && (text === lastWordRange || text === lastWordRange.toLowerCase()) || !this.ignoreCase && text === lastWordRange) {\n this.resetList(this.dataSource, this.fields);\n } else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n return;\n }\n if (isNullOrUndefined(this.list)) {\n this.renderList();\n this.renderPopup();\n } else if (!this.isPopupOpen) {\n this.renderPopup();\n }\n this.popupObj.element.style.left = formatUnit(positionX);\n this.popupObj.element.style.top = formatUnit(positionY);\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 Mention.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 this.dataSource = this.listData;\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 Mention.prototype.destroy = function () {\n this.hidePopup();\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n }\n if (this.inputElement && !this.inputElement.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n this.previousSelectedLI = null;\n this.item = null;\n this.selectedLI = null;\n this.popupObj = null;\n _super.prototype.destroy.call(this);\n };\n Mention.prototype.getLocaleName = function () {\n return 'mention';\n };\n Mention.prototype.getNgDirective = function () {\n return 'EJS-MENTION';\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 Mention.prototype.getModuleName = function () {\n return 'mention';\n };\n __decorate([Property(null)], Mention.prototype, \"cssClass\", void 0);\n __decorate([Property('@')], Mention.prototype, \"mentionChar\", void 0);\n __decorate([Property(false)], Mention.prototype, \"showMentionChar\", void 0);\n __decorate([Property(false)], Mention.prototype, \"allowSpaces\", void 0);\n __decorate([Property(null)], Mention.prototype, \"suffixText\", void 0);\n __decorate([Property(25)], Mention.prototype, \"suggestionCount\", void 0);\n __decorate([Property(0)], Mention.prototype, \"minLength\", void 0);\n __decorate([Property('None')], Mention.prototype, \"sortOrder\", void 0);\n __decorate([Property(true)], Mention.prototype, \"ignoreCase\", void 0);\n __decorate([Property(true)], Mention.prototype, \"requireLeadingSpace\", void 0);\n __decorate([Property(false)], Mention.prototype, \"highlight\", void 0);\n __decorate([Property()], Mention.prototype, \"locale\", void 0);\n __decorate([Property('auto')], Mention.prototype, \"popupWidth\", void 0);\n __decorate([Property('300px')], Mention.prototype, \"popupHeight\", void 0);\n __decorate([Property(null)], Mention.prototype, \"displayTemplate\", void 0);\n __decorate([Property(null)], Mention.prototype, \"itemTemplate\", void 0);\n __decorate([Property('No records found')], Mention.prototype, \"noRecordsTemplate\", void 0);\n __decorate([Property(null)], Mention.prototype, \"spinnerTemplate\", void 0);\n __decorate([Property()], Mention.prototype, \"target\", void 0);\n __decorate([Property([])], Mention.prototype, \"dataSource\", void 0);\n __decorate([Property(null)], Mention.prototype, \"query\", void 0);\n __decorate([Property('Contains')], Mention.prototype, \"filterType\", void 0);\n __decorate([Complex({\n text: null,\n value: null,\n iconCss: null,\n groupBy: null\n }, FieldSettings)], Mention.prototype, \"fields\", void 0);\n __decorate([Event()], Mention.prototype, \"actionBegin\", void 0);\n __decorate([Event()], Mention.prototype, \"actionComplete\", void 0);\n __decorate([Event()], Mention.prototype, \"actionFailure\", void 0);\n __decorate([Event()], Mention.prototype, \"change\", void 0);\n __decorate([Event()], Mention.prototype, \"beforeOpen\", void 0);\n __decorate([Event()], Mention.prototype, \"opened\", void 0);\n __decorate([Event()], Mention.prototype, \"closed\", void 0);\n __decorate([Event()], Mention.prototype, \"select\", void 0);\n __decorate([Event()], Mention.prototype, \"filtering\", void 0);\n __decorate([Event()], Mention.prototype, \"created\", void 0);\n __decorate([Event()], Mention.prototype, \"destroyed\", void 0);\n Mention = __decorate([NotifyPropertyChanges], Mention);\n return Mention;\n}(DropDownBase);\nexport { Mention };","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}();\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\n/**\n * React Component Base\n */\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { extend, isNullOrUndefined, setValue, getValue, isObject, onIntlChange } from '@syncfusion/ej2-base';\nvar defaulthtmlkeys = ['alt', 'className', 'disabled', 'form', 'id', 'readOnly', 'style', 'tabIndex', 'title', 'type', 'name', 'onClick', 'onFocus', 'onBlur'];\nvar delayUpdate = ['accordion', 'tab', 'splitter'];\nvar isColEName = /\\]/;\nvar ComponentBase = /** @class */function (_super) {\n __extends(ComponentBase, _super);\n function ComponentBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.mountingState = false;\n _this.attrKeys = [];\n _this.cachedTimeOut = 0;\n _this.isAppendCalled = false;\n _this.initRenderCalled = false;\n _this.isReactForeceUpdate = false;\n _this.isReact = true;\n _this.isshouldComponentUpdateCalled = false;\n _this.isCreated = false;\n return _this;\n }\n // Lifecycle methods are changed by React team and so we can deprecate this method and use\n // Reference link:https://reactjs.org/docs/react-component.html#unsafe_componentWillMount\n ComponentBase.prototype.componentDidMount = function () {\n this.refreshChild(true);\n this.canDelayUpdate = delayUpdate.indexOf(this.getModuleName()) !== -1;\n // Used timeout to resolve template binding\n // Reference link: https://github.com/facebook/react/issues/10309#issuecomment-318433235\n this.renderReactComponent();\n if (this.portals && this.portals.length) {\n this.mountingState = true;\n this.renderReactTemplates();\n this.mountingState = false;\n }\n };\n ComponentBase.prototype.componentDidUpdate = function (prev) {\n if (!this.isshouldComponentUpdateCalled && this.initRenderCalled && !this.isReactForeceUpdate) {\n if (prev !== this.props) {\n this.isshouldComponentUpdateCalled = true;\n this.updateProperties(this.props, false, prev);\n }\n }\n };\n ComponentBase.prototype.renderReactComponent = function () {\n var ele = this.reactElement;\n if (ele && !this.isAppendCalled) {\n this.isAppendCalled = true;\n this.appendTo(ele);\n }\n };\n // Lifecycle methods are changed by React team and so we can deprecate this method and use\n // Reference link:https://reactjs.org/docs/react-component.html#unsafe_componentwillreceiveprops\n /**\n * @param {Object} nextProps - Specifies the property value.\n * @returns {boolean} - Returns boolean value.\n * @private\n */\n ComponentBase.prototype.shouldComponentUpdate = function (nextProps) {\n this.isshouldComponentUpdateCalled = true;\n if (!this.initRenderCalled) {\n this.updateProperties(nextProps, true);\n return true;\n }\n if (!this.isAppendCalled) {\n clearTimeout(this.cachedTimeOut);\n this.isAppendCalled = true;\n this.appendTo(this.reactElement);\n }\n this.updateProperties(nextProps);\n return true;\n };\n ComponentBase.prototype.updateProperties = function (nextProps, silent, prev) {\n var _this = this;\n var dProps = extend({}, nextProps);\n var keys = Object.keys(nextProps);\n var prevProps = extend({}, prev || this.props);\n // The statelessTemplates props value is taken from sample level property or default component property.\n var statelessTemplates = !isNullOrUndefined(prevProps['statelessTemplates']) ? prevProps['statelessTemplates'] : !isNullOrUndefined(this['statelessTemplateProps']) ? this['statelessTemplateProps'] : [];\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var propkey = keys_1[_i];\n var isClassName = propkey === 'className';\n if (propkey === 'children') {\n continue;\n }\n if (!isClassName && !isNullOrUndefined(this.htmlattributes[\"\" + propkey]) && this.htmlattributes[\"\" + propkey] !== dProps[\"\" + propkey]) {\n this.htmlattributes[\"\" + propkey] = dProps[\"\" + propkey];\n }\n if (this.compareValues(prevProps[\"\" + propkey], nextProps[\"\" + propkey])) {\n delete dProps[\"\" + propkey];\n } else if (this.attrKeys.indexOf(propkey) !== -1) {\n if (isClassName) {\n this.clsName = true;\n var propsClsName = prevProps[\"\" + propkey].split(' ');\n for (var i = 0; i < propsClsName.length; i++) {\n this.element.classList.remove(propsClsName[parseInt(i.toString(), 10)]);\n }\n var dpropsClsName = dProps[\"\" + propkey].split(' ');\n for (var j = 0; j < dpropsClsName.length; j++) {\n this.element.classList.add(dpropsClsName[parseInt(j.toString(), 10)]);\n }\n } else if (propkey !== 'disabled' && !Object.prototype.hasOwnProperty.call(this.properties, propkey)) {\n delete dProps[\"\" + propkey];\n }\n } else if (propkey === 'value' && nextProps[\"\" + propkey] === this[\"\" + propkey]) {\n delete dProps[\"\" + propkey];\n } else if (statelessTemplates.indexOf(propkey) > -1 && (propkey === 'content' && typeof dProps[\"\" + propkey] === 'function' || nextProps[\"\" + propkey].toString() === this[\"\" + propkey].toString())) {\n delete dProps[\"\" + propkey];\n }\n }\n if (dProps['children']) {\n delete dProps['children'];\n }\n if (this.initRenderCalled && (this.canDelayUpdate || prevProps.delayUpdate)) {\n setTimeout(function () {\n _this.refreshProperties(dProps, nextProps, silent);\n });\n } else {\n this.refreshProperties(dProps, nextProps, silent);\n }\n };\n ComponentBase.prototype.refreshProperties = function (dProps, nextProps, silent) {\n var statelessTemplates = !isNullOrUndefined(this.props['statelessTemplates']) ? this.props['statelessTemplates'] : [];\n if (Object.keys(dProps).length) {\n if (!silent) {\n this.processComplexTemplate(dProps, this);\n }\n this.setProperties(dProps, silent);\n }\n if (statelessTemplates.indexOf('directiveTemplates') === -1) {\n this.refreshChild(silent, nextProps);\n }\n };\n ComponentBase.prototype.processComplexTemplate = function (curObject, context) {\n var compTemplate = context.complexTemplate;\n if (compTemplate) {\n for (var prop in compTemplate) {\n if (Object.prototype.hasOwnProperty.call(compTemplate, prop)) {\n var PropVal = compTemplate[\"\" + prop];\n if (curObject[\"\" + prop]) {\n setValue(PropVal, getValue(prop, curObject), curObject);\n }\n }\n }\n }\n };\n ComponentBase.prototype.getDefaultAttributes = function () {\n var _this = this;\n this.isReact = true;\n var propKeys = Object.keys(this.props);\n //let stringValue: string[] = ['autocomplete', 'dropdownlist', 'combobox'];\n var ignoreProps = ['children', 'statelessTemplates', 'immediateRender', 'isLegacyTemplate', 'delayUpdate'];\n // if ((stringValue.indexOf(this.getModuleName()) !== -1) && (!isNullOrUndefined(this.props[\"value\"]))) {\n // this.value = (<{ [key: string]: Object }>this.props)[\"value\"];\n // }\n if (!this.htmlattributes) {\n this.htmlattributes = {};\n }\n this.attrKeys = defaulthtmlkeys.concat(this.controlAttributes || []);\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var prop = propKeys_1[_i];\n if (prop.indexOf('data-') !== -1 || prop.indexOf('aria-') !== -1 || this.attrKeys.indexOf(prop) !== -1 || Object.keys(this.properties).indexOf(\"\" + prop) === -1 && ignoreProps.indexOf(\"\" + prop) === -1) {\n if (this.htmlattributes[\"\" + prop] !== this.props[\"\" + prop]) {\n this.htmlattributes[\"\" + prop] = this.props[\"\" + prop];\n }\n }\n }\n if (!this.htmlattributes.ref) {\n this.htmlattributes.ref = function (ele) {\n _this.reactElement = ele;\n };\n var keycompoentns = ['autocomplete', 'combobox', 'dropdownlist', 'dropdowntree', 'multiselect', 'listbox', 'colorpicker', 'numerictextbox', 'textbox', 'smarttextarea', 'uploader', 'maskedtextbox', 'slider', 'datepicker', 'datetimepicker', 'daterangepicker', 'timepicker', 'checkbox', 'switch', 'radio', 'rating', 'textarea', 'multicolumncombobox'];\n if (keycompoentns.indexOf(this.getModuleName()) !== -1) {\n this.htmlattributes.key = '' + ComponentBase.reactUid;\n ComponentBase.reactUid++;\n if (this.type && !this.htmlattributes['type']) {\n this.htmlattributes['type'] = this.multiline ? 'hidden' : this.type;\n }\n if (this.name && !this.htmlattributes['name']) {\n this.htmlattributes['name'] = this.name;\n }\n }\n }\n if (this.clsName) {\n var clsList = this.element.classList;\n var className = this.htmlattributes['className'];\n for (var i = 0; i < clsList.length; i++) {\n if (className.indexOf(clsList[parseInt(i.toString(), 10)]) === -1) {\n this.htmlattributes['className'] = this.htmlattributes['className'] + ' ' + clsList[parseInt(i.toString(), 10)];\n }\n }\n }\n return this.htmlattributes;\n };\n ComponentBase.prototype.trigger = function (eventName, eventProp, successHandler) {\n var _this = this;\n if (this.isDestroyed !== true && this.modelObserver) {\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n } else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n if (eventName === 'change' || eventName === 'input') {\n if (this.props.onChange && eventProp.event) {\n this.props.onChange.call(undefined, {\n syntheticEvent: eventProp.event,\n nativeEvent: {\n text: eventProp.value\n },\n value: eventProp.value,\n target: this\n });\n }\n }\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n if (eventName === 'created') {\n setTimeout(function () {\n _this.isCreated = true;\n if (!_this.isDestroyed) {\n _this.modelObserver.notify(eventName, eventProp, successHandler);\n }\n }, 10);\n } else {\n this.modelObserver.notify(eventName, eventProp, successHandler);\n }\n this.isProtectedOnChange = prevDetection;\n }\n };\n ComponentBase.prototype.compareValues = function (value1, value2) {\n var typeVal = typeof value1;\n var typeVal2 = typeof value2;\n if (typeVal === typeVal2) {\n if (value1 === value2) {\n return true;\n }\n if ((!isNullOrUndefined(value1) && value1.constructor) !== (!isNullOrUndefined(value2) && value2.constructor)) {\n return false;\n }\n if (value1 instanceof Date || value1 instanceof RegExp || value1 instanceof String || value1 instanceof Number) {\n return value1.toString() === value2.toString();\n }\n if (isObject(value1) || Array.isArray(value1)) {\n var tempVal = value1;\n var tempVal2 = value2;\n if (isObject(tempVal)) {\n tempVal = [value1];\n tempVal2 = [value2];\n }\n return this.compareObjects(tempVal, tempVal2).status;\n }\n if (value1.moduleName && value1.moduleName === value2.moduleName && (value1.moduleName === 'query' || value1.moduleName === 'datamanager')) {\n if (JSON.stringify(value1) === JSON.stringify(value2)) {\n return true;\n }\n }\n }\n return false;\n };\n ComponentBase.prototype.compareObjects = function (oldProps, newProps, propName) {\n var status = true;\n var lenSimilarity = oldProps.length === newProps.length;\n var diffArray = [];\n var templateProps = !isNullOrUndefined(this['templateProps']) ? this['templateProps'] : [];\n if (lenSimilarity) {\n for (var i = 0, len = newProps.length; i < len; i++) {\n var curObj = {};\n var oldProp = oldProps[parseInt(i.toString(), 10)];\n var newProp = newProps[parseInt(i.toString(), 10)];\n var keys = Object.keys(newProp);\n if (keys.length !== 0) {\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n var oldValue = oldProp[\"\" + key];\n var newValue = newProp[\"\" + key];\n if (key === 'items') {\n for (var _j = 0; _j < newValue.length; _j++) {\n if (this.getModuleName() === 'richtexteditor' && typeof newValue[parseInt(_j.toString(), 10)] === 'object') {\n return {\n status: true\n };\n }\n }\n }\n if (this.getModuleName() === 'grid' && key === 'field') {\n curObj[\"\" + key] = newValue;\n }\n if (!Object.prototype.hasOwnProperty.call(oldProp, key) || !(templateProps.length > 0 && templateProps.indexOf(\"\" + key) === -1 && typeof newValue === 'function' ? this.compareValues(oldValue.toString(), newValue.toString()) : this.compareValues(oldValue, newValue))) {\n if (!propName) {\n return {\n status: false\n };\n }\n status = false;\n curObj[\"\" + key] = newValue;\n }\n }\n } else if (newProps[parseInt(i.toString(), 10)] === oldProps[parseInt(i.toString(), 10)]) {\n status = true;\n } else {\n if (!propName) {\n return {\n status: false\n };\n }\n status = false;\n }\n if (this.getModuleName() === 'grid' && propName === 'columns' && isNullOrUndefined(curObj['field'])) {\n curObj['field'] = undefined;\n }\n if (Object.keys(curObj).length) {\n diffArray.push({\n index: i,\n value: curObj,\n key: propName\n });\n }\n }\n } else {\n status = false;\n }\n return {\n status: status,\n changedProperties: diffArray\n };\n };\n ComponentBase.prototype.refreshChild = function (silent, props) {\n if (this.checkInjectedModules) {\n var prevModule = this.getInjectedModules() || [];\n var curModule = this.getInjectedServices() || [];\n for (var _i = 0, curModule_1 = curModule; _i < curModule_1.length; _i++) {\n var mod = curModule_1[_i];\n if (prevModule.indexOf(mod) === -1) {\n prevModule.push(mod);\n }\n }\n this.injectedModules = prevModule;\n }\n if (this.directivekeys) {\n var changedProps = [];\n var key = '';\n var directiveValue = this.validateChildren({}, this.directivekeys, props || this.props);\n if (directiveValue && Object.keys(directiveValue).length) {\n if (!silent && this.skipRefresh) {\n for (var _a = 0, _b = this.skipRefresh; _a < _b.length; _a++) {\n var fields = _b[_a];\n delete directiveValue[\"\" + fields];\n }\n }\n if (this.prevProperties) {\n var dKeys = Object.keys(this.prevProperties);\n for (var i = 0; i < dKeys.length; i++) {\n key = dKeys[parseInt(i.toString(), 10)];\n if (!Object.prototype.hasOwnProperty.call(directiveValue, key)) {\n continue;\n }\n var compareOutput = this.compareObjects(this.prevProperties[\"\" + key], directiveValue[\"\" + key], key);\n if (compareOutput.status) {\n delete directiveValue[\"\" + key];\n } else {\n if (compareOutput.changedProperties.length) {\n changedProps = changedProps.concat(compareOutput.changedProperties);\n }\n var obj = {};\n obj[\"\" + key] = directiveValue[\"\" + key];\n this.prevProperties = extend(this.prevProperties, obj);\n }\n }\n } else {\n this.prevProperties = extend({}, directiveValue, {}, true);\n }\n if (changedProps.length) {\n if (this.getModuleName() === 'grid' && key === 'columns') {\n for (var _c1 = 0, allColumns = this.columns; _c1 < allColumns.length; _c1++) {\n var compareField1 = getValue('field', allColumns[parseInt(_c1.toString(), 10)]);\n var compareField2 = getValue(_c1 + '.value.field', changedProps);\n if (compareField1 === compareField2) {\n var propInstance = getValue(changedProps[parseInt(_c1.toString(), 10)].key + '.' + changedProps[parseInt(_c1.toString(), 10)].index, this);\n if (propInstance && propInstance.setProperties) {\n propInstance.setProperties(changedProps[parseInt(_c1.toString(), 10)].value);\n } else {\n extend(propInstance, changedProps[parseInt(_c1.toString(), 10)].value);\n }\n } else {\n this.setProperties(directiveValue, silent);\n }\n }\n } else {\n for (var _c = 0, changedProps_1 = changedProps; _c < changedProps_1.length; _c++) {\n var changes = changedProps_1[_c];\n var propInstance = getValue(changes.key + '.' + changes.index, this);\n if (propInstance && propInstance.setProperties) {\n propInstance.setProperties(changes.value);\n } else {\n extend(propInstance, changes.value);\n }\n }\n }\n } else {\n this.setProperties(directiveValue, silent);\n }\n }\n }\n };\n ComponentBase.prototype.componentWillUnmount = function () {\n clearTimeout(this.cachedTimeOut);\n var modulesName = ['dropdowntree', 'checkbox'];\n var hasModule = !modulesName.indexOf(this.getModuleName()) ? document.body.contains(this.element) : true;\n if (this.initRenderCalled && this.isAppendCalled && this.element && hasModule && !this.isDestroyed && this.isCreated) {\n this.destroy();\n }\n onIntlChange.offIntlEvents();\n };\n ComponentBase.prototype.appendReactElement = function (element, container) {\n var portal = ReactDOM.createPortal(element, container);\n if (!this.portals) {\n this.portals = [portal];\n } else {\n this.portals.push(portal);\n }\n };\n ComponentBase.prototype.renderReactTemplates = function (callback) {\n this.isReactForeceUpdate = true;\n if (callback) {\n this.forceUpdate(callback);\n } else {\n this.forceUpdate();\n }\n this.isReactForeceUpdate = false;\n };\n ComponentBase.prototype.clearTemplate = function (templateNames, index, callback) {\n var _this = this;\n var tempPortal = [];\n if (templateNames && templateNames.length) {\n Array.prototype.forEach.call(templateNames, function (propName) {\n var propIndexCount = 0;\n _this.portals.forEach(function (portal) {\n if (portal.propName === propName) {\n tempPortal.push(propIndexCount);\n propIndexCount++;\n }\n });\n if (!isNullOrUndefined(index) && _this.portals[index] && _this.portals[index].propName === propName) {\n _this.portals.splice(index, 1);\n } else {\n for (var i = 0; i < _this.portals.length; i++) {\n if (_this.portals[parseInt(i.toString(), 10)].propName === propName) {\n _this.portals.splice(i, 1);\n i--;\n }\n }\n }\n });\n } else {\n this.portals = [];\n }\n this.renderReactTemplates(callback);\n };\n ComponentBase.prototype.validateChildren = function (childCache, mapper, props) {\n var flag = false;\n var childs = React.Children.toArray(props.children);\n for (var _i = 0, childs_1 = childs; _i < childs_1.length; _i++) {\n var child = childs_1[_i];\n var ifield = this.getChildType(child);\n var key = mapper[\"\" + ifield];\n if (ifield && mapper) {\n var childProps = this.getChildProps(React.Children.toArray(child.props.children), key);\n if (childProps.length) {\n flag = true;\n childCache[child.type.propertyName || ifield] = childProps;\n }\n }\n }\n if (flag) {\n return childCache;\n }\n return null;\n };\n ComponentBase.prototype.getChildType = function (child) {\n if (child.type && child.type.isDirective) {\n return child.type.moduleName || '';\n }\n return '';\n };\n ComponentBase.prototype.getChildProps = function (subChild, matcher) {\n var ret = [];\n for (var _i = 0, subChild_1 = subChild; _i < subChild_1.length; _i++) {\n var child = subChild_1[_i];\n var accessProp = false;\n var key = void 0;\n if (typeof matcher === 'string') {\n accessProp = true;\n key = matcher;\n } else {\n key = Object.keys(matcher)[0];\n }\n var prop = child.props;\n var field = this.getChildType(child);\n if (field === key) {\n if (accessProp || !prop.children) {\n var cacheVal = extend({}, prop, {}, true);\n this.processComplexTemplate(cacheVal, child.type);\n ret.push(cacheVal);\n } else {\n var cachedValue = this.validateChildren(extend({}, prop), matcher[\"\" + key], prop) || prop;\n if (cachedValue['children']) {\n delete cachedValue['children'];\n }\n this.processComplexTemplate(cachedValue, child.type);\n ret.push(cachedValue);\n }\n }\n }\n return ret;\n };\n ComponentBase.prototype.getInjectedServices = function () {\n var childs = React.Children.toArray(this.props.children);\n for (var _i = 0, childs_2 = childs; _i < childs_2.length; _i++) {\n var child = childs_2[_i];\n if (child.type && child.type.isService) {\n return child.props.services;\n }\n }\n return [];\n };\n /**\n * @private\n */\n ComponentBase.reactUid = 1;\n return ComponentBase;\n}(React.Component);\nexport { ComponentBase };","/**\n * Apply mixins for the React components.\n *\n * @param {any} derivedClass ?\n * @param {any[]} baseClass ?\n * @returns {void} ?\n * @private\n */\nexport function applyMixins(derivedClass, baseClass) {\n baseClass.forEach(function (baseClass) {\n Object.getOwnPropertyNames(baseClass.prototype).forEach(function (name) {\n if (name !== 'isMounted' && name !== 'replaceState' && name !== 'render') {\n derivedClass.prototype[\"\" + name] = baseClass.prototype[\"\" + name];\n }\n });\n });\n}","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}();\nimport * as React from 'react';\n/**\n * Directory base\n */\nvar ComplexBase = /** @class */function (_super) {\n __extends(ComplexBase, _super);\n function ComplexBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ComplexBase.prototype.render = function () {\n return null;\n };\n ComplexBase.isDirective = true;\n return ComplexBase;\n}(React.PureComponent);\nexport { ComplexBase };","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}();\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Dependency injection\n */\nimport * as React from 'react';\nvar Inject = /** @class */function (_super) {\n __extends(Inject, _super);\n function Inject() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Inject.prototype.render = function () {\n return null;\n };\n Inject.isService = true;\n return Inject;\n}(React.PureComponent);\nexport { Inject };","/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\n/**\n * Template compiler for react\n */\nimport { setTemplateEngine, getTemplateEngine, extend } from '@syncfusion/ej2-base';\nimport * as ReactDOM from 'react-dom';\nimport * as React from 'react';\n/**\n * Compile the string value to DOM elements.\n */\nvar stringCompiler = getTemplateEngine();\n/**\n * Compile the template property to the DOM elements.\n *\n * @param {any} templateElement ?\n * @param {Object} helper ?\n * @returns {Function} ?\n * @private\n */\nexport function compile(templateElement, helper) {\n if (typeof templateElement === 'string' || templateElement.prototype && templateElement.prototype.CSPTemplate && typeof templateElement === 'function') {\n return stringCompiler(templateElement, helper);\n } else {\n return function (data, component, prop, element) {\n var actTemplate = templateElement;\n var actData = data;\n if (typeof actTemplate === 'object') {\n actTemplate = templateElement.template;\n actData = extend({}, data, templateElement.data || {});\n }\n var cEle;\n if (element) {\n cEle = element;\n } else {\n cEle = document.createElement('div');\n }\n var rele = React.createElement(actTemplate, actData);\n var portal = ReactDOM.createPortal(rele, cEle);\n portal.propName = prop;\n if (!component.portals) {\n component.portals = [portal];\n } else {\n component.portals.push(portal);\n }\n if (!element) {\n return [cEle];\n }\n };\n }\n}\nsetTemplateEngine({\n compile: compile\n});","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}();\nimport * as React from 'react';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * The DropDownList component contains a list of predefined values, from which the user can choose a single value.\n * ```\n * <DropDownListComponent dataSource={data}/>\n * ```\n */\nvar DropDownListComponent = /** @class */function (_super) {\n __extends(DropDownListComponent, _super);\n function DropDownListComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.statelessTemplateProps = [\"headerTemplate\", \"valueTemplate\", \"itemTemplate\"];\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n DropDownListComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return DropDownListComponent;\n}(DropDownList);\nexport { DropDownListComponent };\napplyMixins(DropDownListComponent, [ComponentBase, React.Component]);","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}();\nimport * as React from 'react';\nimport { ComboBox } from '@syncfusion/ej2-dropdowns';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n *The ComboBox component allows the user to type a value or choose an option from the list of predefined options.\n * ```\n * <ComboBoxComponent dataSource={data}/>\n * ```\n */\nvar ComboBoxComponent = /** @class */function (_super) {\n __extends(ComboBoxComponent, _super);\n function ComboBoxComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.statelessTemplateProps = [\"headerTemplate\", \"itemTemplate\"];\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n ComboBoxComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return ComboBoxComponent;\n}(ComboBox);\nexport { ComboBoxComponent };\napplyMixins(ComboBoxComponent, [ComponentBase, React.Component]);","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}();\nimport * as React from 'react';\nimport { AutoComplete } from '@syncfusion/ej2-dropdowns';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n *The AutoComplete component provides the matched suggestion list when type into the input, from which the user can select one.\n * ```\n * <AutoCompleteComponent dataSource={data}/>\n * ```\n */\nvar AutoCompleteComponent = /** @class */function (_super) {\n __extends(AutoCompleteComponent, _super);\n function AutoCompleteComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.statelessTemplateProps = [\"headerTemplate\", \"itemTemplate\"];\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n AutoCompleteComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return AutoCompleteComponent;\n}(AutoComplete);\nexport { AutoCompleteComponent };\napplyMixins(AutoCompleteComponent, [ComponentBase, React.Component]);","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}();\nimport * as React from 'react';\nimport { MultiSelect } from '@syncfusion/ej2-dropdowns';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n* The MultiSelect allows the user to pick a values from the predefined list of values.\n * ```\n * <MultiSelectComponent dataSource={data}/>\n * ```\n */\nvar MultiSelectComponent = /** @class */function (_super) {\n __extends(MultiSelectComponent, _super);\n function MultiSelectComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.statelessTemplateProps = [\"headerTemplate\", \"valueTemplate\", \"itemTemplate\"];\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n MultiSelectComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return MultiSelectComponent;\n}(MultiSelect);\nexport { MultiSelectComponent };\napplyMixins(MultiSelectComponent, [ComponentBase, React.Component]);","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}();\nimport * as React from 'react';\nimport { ListBox } from '@syncfusion/ej2-dropdowns';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n* The ListBox allows the user to select values from the predefined list of values.\n * ```\n * <ListBoxComponent dataSource={data} />\n * ```\n */\nvar ListBoxComponent = /** @class */function (_super) {\n __extends(ListBoxComponent, _super);\n function ListBoxComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n ListBoxComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return ListBoxComponent;\n}(ListBox);\nexport { ListBoxComponent };\napplyMixins(ListBoxComponent, [ComponentBase, React.Component]);","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}();\nimport * as React from 'react';\nimport { DropDownTree } from '@syncfusion/ej2-dropdowns';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n *The DropDownTree component contains a list of predefined values from which you can choose a single or multiple values.\n * ```\n * <DropDownTreeComponent/>\n * ```\n */\nvar DropDownTreeComponent = /** @class */function (_super) {\n __extends(DropDownTreeComponent, _super);\n function DropDownTreeComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n DropDownTreeComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return DropDownTreeComponent;\n}(DropDownTree);\nexport { DropDownTreeComponent };\napplyMixins(DropDownTreeComponent, [ComponentBase, React.Component]);","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}();\nimport * as React from 'react';\nimport { Mention } from '@syncfusion/ej2-dropdowns';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * The Mention component contains a list of predefined values, from which the user can choose a single value.\n * ```\n * <MentionComponent dataSource={data}/>\n * ```\n */\nvar MentionComponent = /** @class */function (_super) {\n __extends(MentionComponent, _super);\n function MentionComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = [\"itemTemplate\"];\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n MentionComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return MentionComponent;\n}(Mention);\nexport { MentionComponent };\napplyMixins(MentionComponent, [ComponentBase, React.Component]);","import React from 'react';\nimport styled from 'styled-components';\nimport { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';\nimport * as toc from '../../../left-toc.json';\nimport { select, Ajax } from '@syncfusion/ej2-base';\n\nvar demosLink = toc.demos;\nvar logoLink = 'https://help.syncfusion.com/';\n\nvar platformMapper = {\n 'JavaScript': 'essential-js2',\n 'JavaScript (ES5)': 'essential-js2',\n 'Angular': 'angular',\n 'React': 'react-js2',\n 'Vue': 'vue',\n 'ASP.NET Core': 'aspnetcore-js2',\n 'ASP.NET MVC': 'aspnetmvc-js2',\n 'Blazor': 'blazor'\n};\n\n// var aspRegex = /ASP.NET Core|ASP.NET MVC|Blazor \\[Preview\\]/;\n\nclass MainHeader extends React.Component {\n\n dropObj;\n filterData = [\n {\n dropName: '18.1', dropId: '1'\n },\n {\n dropName: '18.2', dropId: '2'\n },\n {\n dropName: '18.3', dropId: '3'\n }\n];\ndropField = { value: 'dropId', text: 'dropName' };\n\nindex = 2;\n\nconstructor(props) {\n super(props);\n this.onFilterVersion = this.onFilterVersion.bind(this);\n this.onFilterCreated = this.onFilterCreated.bind(this);\n}\n\nonFilterVersion() {\n if (this.dropObj.value === this.filterData[this.filterData.length-1].dropId) {\n window.location.href = window.location.href.split(/[1-9]+\\.+[1-9]/).join('');\n } else {\n if (!/[1-9]/.test(window.location.href)) {\n window.location.href = window.location.href.split('documentation').join(this.dropObj.text + '/documentation');\n } else {\n window.location.href = window.location.href.split(/[1-9]+\\.+[1-9]/).join(this.dropObj.text);\n }\n }\n}\n\nonFilterCreated() {\n var ajax = new Ajax('https://cdn.syncfusion.com/ej2/version-list.json', 'GET', true);\n ajax.send().then();\n ajax.onSuccess = (data) => {\n var datas = JSON.parse(data).VersionLists;\n this.filterData = datas;\n this.dropObj.dataSource = datas;\n var version = '18.3';\n for (var i =0; i<this.dropObj.dataSource.length; i++) {\n if (this.dropObj.dataSource[i].dropName === version) {\n this.dropObj.index = i;\n return;\n } \n }\n };\n}\n\n /* eslint-disable */\n render() {\n const { platform } = this.props;\n return (\n <SiteContainer>\n <div id=\"version-support\" style={{top: '14px',width: '68px',position: 'absolute',left: '232px'}}>\n <DropDownListComponent id=\"country-dd\" iconCss='filter-drop' ref={(scope) => { this.dropObj = scope; }} index={this.index} fields={this.dropField} dataSource={this.filterData} created={this.onFilterCreated} change={this.onFilterVersion}/>\n </div>\n <div className=\"doc-icons icon-burger_menu doc-hamburger-icon\"></div>\n <a className=\"doc-logo-link\" href={logoLink}><div className=\"doc-logo doc-icons icon-syncfusion\"></div></a>\n <div className=\"doc-header-platform\">{platform}</div>\n <a id='editme' className='doc-edit-me'><span id=\"icon-edit\"></span><span className=\"doc-editme-link doc-demos-link\">Edit</span><span className=\"tooltiptext\">Edit This Document</span></a>\n <a id='nuget-install' className={'doc-nuget '+(platform !== 'Blazor' ? 'doc-hide' : '')} href=\"https://www.nuget.org/packages/Syncfusion.Blazor/\" target=\"_blank\"><span id=\"icon-nuget\"></span><span className=\"doc-nuget-link doc-demos-link\">Install NuGet</span></a>\n <div className={\"doc-header-links\" + (platform === 'Blazor' ? ' razor-doc-links' : '')}>\n <a href={demosLink} target=\"_blank\"><div className=\"doc-header-link doc-demos-link\">Demos</div></a>\n <a href=\"https://www.syncfusion.com/support/directtrac/incidents\" target=\"_blank\"><div className=\"doc-header-link doc-support-link\">Support</div></a>\n <a href={`https://www.syncfusion.com/forums/${platformMapper[platform]}`} target=\"_blank\"><div className=\"doc-header-link doc-forum-link\">Forum</div></a>\n <a href={`https://www.syncfusion.com/downloads/${ platformMapper[platform] }`} target=\"_blank\"><div className=\"doc-header-link doc-download-link\">FREE TRIAL</div></a>\n </div>\n </SiteContainer>\n )\n }\n}\n\nconst SiteContainer = styled.div`\n background: ${props => props.theme.brand};\n padding: 0px 20px;\n @media screen and (max-width: 764px) {\n padding: 0px 10px;\n }\n`\n\nexport default MainHeader\n","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}();\nimport * as React from 'react';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `ButtonComponent` represents the react Button Component.\n * ```ts\n * <ButtonComponent></ButtonComponent>\n * ```\n */\nvar ButtonComponent = /** @class */function (_super) {\n __extends(ButtonComponent, _super);\n function ButtonComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n ButtonComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement('button', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return ButtonComponent;\n}(Button);\nexport { ButtonComponent };\napplyMixins(ButtonComponent, [ComponentBase, React.Component]);","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}();\nimport * as React from 'react';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the react CheckBox Component.\n * ```ts\n * <CheckBoxComponent label='Default'></CheckBoxComponent>\n * ```\n */\nvar CheckBoxComponent = /** @class */function (_super) {\n __extends(CheckBoxComponent, _super);\n function CheckBoxComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n CheckBoxComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return CheckBoxComponent;\n}(CheckBox);\nexport { CheckBoxComponent };\napplyMixins(CheckBoxComponent, [ComponentBase, React.Component]);","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}();\nimport * as React from 'react';\nimport { RadioButton } from '@syncfusion/ej2-buttons';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the react RadioButton Component.\n * ```ts\n * <RadioButtonComponent label='Default'></RadioButtonComponent>\n * ```\n */\nvar RadioButtonComponent = /** @class */function (_super) {\n __extends(RadioButtonComponent, _super);\n function RadioButtonComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n RadioButtonComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return RadioButtonComponent;\n}(RadioButton);\nexport { RadioButtonComponent };\napplyMixins(RadioButtonComponent, [ComponentBase, React.Component]);","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}();\nimport * as React from 'react';\nimport { Switch } from '@syncfusion/ej2-buttons';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the react Switch Component.\n * ```ts\n * <SwitchComponent></SwitchComponent>\n * ```\n */\nvar SwitchComponent = /** @class */function (_super) {\n __extends(SwitchComponent, _super);\n function SwitchComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n SwitchComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return SwitchComponent;\n}(Switch);\nexport { SwitchComponent };\napplyMixins(SwitchComponent, [ComponentBase, React.Component]);","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}();\nimport { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * `ChipDirective` directive represent a chip of the React ChipList.\n * ```html\n * <ChipListComponent>\n * <ChipsDirective>\n * <ChipDirective text='chip1'></ChipDirective>\n * <ChipDirective text='chip2'></ChipDirective>\n * </ChipsDirective>\n * </ChipListComponent>\n * ```\n */\nvar ChipDirective = /** @class */function (_super) {\n __extends(ChipDirective, _super);\n function ChipDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ChipDirective.moduleName = 'chip';\n return ChipDirective;\n}(ComplexBase);\nexport { ChipDirective };\nvar ChipsDirective = /** @class */function (_super) {\n __extends(ChipsDirective, _super);\n function ChipsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ChipsDirective.propertyName = 'chips';\n ChipsDirective.moduleName = 'chips';\n return ChipsDirective;\n}(ComplexBase);\nexport { ChipsDirective };","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}();\nimport * as React from 'react';\nimport { ChipList } from '@syncfusion/ej2-buttons';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the Essential JS 2 React ChipList Component.\n * ```ts\n * <ChipListComponent></ChipListComponent>\n * ```\n */\nvar ChipListComponent = /** @class */function (_super) {\n __extends(ChipListComponent, _super);\n function ChipListComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = {\n 'chips': 'chip'\n };\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n ChipListComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return ChipListComponent;\n}(ChipList);\nexport { ChipListComponent };\napplyMixins(ChipListComponent, [ComponentBase, React.Component]);","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}();\nimport * as React from 'react';\nimport { Fab } from '@syncfusion/ej2-buttons';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `FabComponent` represents the react Fab Component.\n * ```ts\n * <FabComponent></FabComponent>\n * ```\n */\nvar FabComponent = /** @class */function (_super) {\n __extends(FabComponent, _super);\n function FabComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n FabComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement('button', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return FabComponent;\n}(Fab);\nexport { FabComponent };\napplyMixins(FabComponent, [ComponentBase, React.Component]);","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}();\nimport { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * `SpeedDialItemDirective` represent a item of the React SpeedDial.\n * It must be contained in a SpeedDial component(`SpeedDialComponent`).\n * ```tsx\n * <SpeedDialComponent>\n * <SpeedDialItemsDirective>\n * <SpeedDialItemDirective text='Cut'></SpeedDialItemDirective>\n * <SpeedDialItemDirective text='Copy'></SpeedDialItemDirective>\n * <SpeedDialItemsDirective>\n * </SpeedDialComponent>\n * ```\n */\nvar SpeedDialItemDirective = /** @class */function (_super) {\n __extends(SpeedDialItemDirective, _super);\n function SpeedDialItemDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SpeedDialItemDirective.moduleName = 'speedDialItem';\n return SpeedDialItemDirective;\n}(ComplexBase);\nexport { SpeedDialItemDirective };\nvar SpeedDialItemsDirective = /** @class */function (_super) {\n __extends(SpeedDialItemsDirective, _super);\n function SpeedDialItemsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SpeedDialItemsDirective.propertyName = 'items';\n SpeedDialItemsDirective.moduleName = 'speedDialItems';\n return SpeedDialItemsDirective;\n}(ComplexBase);\nexport { SpeedDialItemsDirective };","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}();\nimport * as React from 'react';\nimport { SpeedDial } from '@syncfusion/ej2-buttons';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `SpeedDialComponent` represents the react SpeedDial Component.\n * ```ts\n * <SpeedDialComponent content='Edit'></SpeedDialComponent>\n * ```\n */\nvar SpeedDialComponent = /** @class */function (_super) {\n __extends(SpeedDialComponent, _super);\n function SpeedDialComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = {\n 'speedDialItems': 'speedDialItem'\n };\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n SpeedDialComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement('button', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return SpeedDialComponent;\n}(SpeedDial);\nexport { SpeedDialComponent };\napplyMixins(SpeedDialComponent, [ComponentBase, React.Component]);","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}();\nimport * as React from 'react';\nimport { SmartPasteButton } from '@syncfusion/ej2-buttons';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `SmartPasteButtonComponent` represents the react Smart Paste Button Component.\n * ```html\n * <SmartPasteButtonComponent>Smart paste</SmartPasteButtonComponent>\n * ```\n */\nvar SmartPasteButtonComponent = /** @class */function (_super) {\n __extends(SmartPasteButtonComponent, _super);\n function SmartPasteButtonComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n SmartPasteButtonComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement('button', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return SmartPasteButtonComponent;\n}(SmartPasteButton);\nexport { SmartPasteButtonComponent };\napplyMixins(SmartPasteButtonComponent, [ComponentBase, React.Component]);","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}();\nimport { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * `ButtonDirective` represent a button of the react dialog.\n * It must be contained in a Dialog component(`DialogComponent`).\n * ```tsx\n * <DialogComponent showCloseIcon={true}>\n * <ButtonsDirective>\n * <DialogbuttonDirective buttonModal={this.okButton}></DialogbuttonDirective>\n * <DialogbuttonDirective buttonModal={this.cancelButton}></DialogbuttonDirective>\n * <ButtonsDirective>\n * </DialogComponent>\n * ```\n */\nvar DialogButtonDirective = /** @class */function (_super) {\n __extends(DialogButtonDirective, _super);\n function DialogButtonDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DialogButtonDirective.moduleName = 'dialogButton';\n return DialogButtonDirective;\n}(ComplexBase);\nexport { DialogButtonDirective };\nvar ButtonsDirective = /** @class */function (_super) {\n __extends(ButtonsDirective, _super);\n function ButtonsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ButtonsDirective.propertyName = 'buttons';\n ButtonsDirective.moduleName = 'buttons';\n return ButtonsDirective;\n}(ComplexBase);\nexport { ButtonsDirective };","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}();\nimport * as React from 'react';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React Dialog Component\n * ```html\n * <Dialog></Dialog>\n * ```\n */\nvar DialogComponent = /** @class */function (_super) {\n __extends(DialogComponent, _super);\n function DialogComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = {\n 'buttons': 'dialogButton'\n };\n _this.statelessTemplateProps = [\"content\"];\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n DialogComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return DialogComponent;\n}(Dialog);\nexport { DialogComponent };\napplyMixins(DialogComponent, [ComponentBase, React.Component]);","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}();\nimport * as React from 'react';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React Tooltip component that displays a piece of information about the target element on mouse hover.\n * ```html\n * <Tooltip content='Tooltip content'>Show Tooltip</Tooltip>\n * ```\n */\nvar TooltipComponent = /** @class */function (_super) {\n __extends(TooltipComponent, _super);\n function TooltipComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n TooltipComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return TooltipComponent;\n}(Tooltip);\nexport { TooltipComponent };\napplyMixins(TooltipComponent, [ComponentBase, React.Component]);","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}();\nimport { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * `AccordionItemDirective` represent a item of the React Accordion.\n * It must be contained in a Accordion component(`AccordionComponent`).\n * ```tsx\n * <AccordionComponent>\n * <AccordionItemsDirective>\n * <AccordionItemDirective header='Header1'></AccordionItemDirective>\n * <AccordionItemDirective header='Header2' content='Content2'></AccordionItemDirective>\n * <AccordionItemsDirective>\n * </AccordionComponent>\n * ```\n */\nvar AccordionItemDirective = /** @class */function (_super) {\n __extends(AccordionItemDirective, _super);\n function AccordionItemDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AccordionItemDirective.moduleName = 'accordionItem';\n return AccordionItemDirective;\n}(ComplexBase);\nexport { AccordionItemDirective };\nvar AccordionItemsDirective = /** @class */function (_super) {\n __extends(AccordionItemsDirective, _super);\n function AccordionItemsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AccordionItemsDirective.propertyName = 'items';\n AccordionItemsDirective.moduleName = 'accordionItems';\n return AccordionItemsDirective;\n}(ComplexBase);\nexport { AccordionItemsDirective };","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}();\nimport * as React from 'react';\nimport { Accordion } from '@syncfusion/ej2-navigations';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React Accordion Component.\n * ```html\n * <AccordionComponent></AccordionComponent\n * ```\n */\nvar AccordionComponent = /** @class */function (_super) {\n __extends(AccordionComponent, _super);\n function AccordionComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = {\n 'accordionItems': 'accordionItem'\n };\n _this.statelessTemplateProps = [\"itemTemplate\", \"headerTemplate\"];\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n AccordionComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return AccordionComponent;\n}(Accordion);\nexport { AccordionComponent };\napplyMixins(AccordionComponent, [ComponentBase, React.Component]);","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}();\nimport { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * `ItemDirective` directive represent a item of the React Toolbar.\n * It must be contained in a Toolbar component(`ToolbarComponent`).\n * ```tsx\n * <ToolbarComponent>\n * <ItemsDirective>\n * <ItemDirective text='Cut'></ItemDirective>\n * <ItemDirective text='Copy'></ItemDirective>\n * <ItemsDirective>\n * </ToolbarComponent>\n * ```\n */\nvar ItemDirective = /** @class */function (_super) {\n __extends(ItemDirective, _super);\n function ItemDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ItemDirective.moduleName = 'item';\n return ItemDirective;\n}(ComplexBase);\nexport { ItemDirective };\nvar ItemsDirective = /** @class */function (_super) {\n __extends(ItemsDirective, _super);\n function ItemsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ItemsDirective.propertyName = 'items';\n ItemsDirective.moduleName = 'items';\n return ItemsDirective;\n}(ComplexBase);\nexport { ItemsDirective };","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}();\nimport * as React from 'react';\nimport { Toolbar } from '@syncfusion/ej2-navigations';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React Toolbar Component.\n * ```html\n * <ToolbarComponent></ToolbarComponent\n * ```\n */\nvar ToolbarComponent = /** @class */function (_super) {\n __extends(ToolbarComponent, _super);\n function ToolbarComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = {\n 'items': 'item'\n };\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n ToolbarComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return ToolbarComponent;\n}(Toolbar);\nexport { ToolbarComponent };\napplyMixins(ToolbarComponent, [ComponentBase, React.Component]);","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}();\nimport * as React from 'react';\nimport { ContextMenu } from '@syncfusion/ej2-navigations';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `ContextMenuComponent` represents the react ContextMenu Component.\n * ```ts\n * <div id='target'>Right click / Touch hold to open the ContextMenu</div>\n * <ContextMenuComponent target='#target' items={menuItems} />\n * ```\n */\nvar ContextMenuComponent = /** @class */function (_super) {\n __extends(ContextMenuComponent, _super);\n function ContextMenuComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n ContextMenuComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement('ul', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return ContextMenuComponent;\n}(ContextMenu);\nexport { ContextMenuComponent };\napplyMixins(ContextMenuComponent, [ComponentBase, React.Component]);","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}();\nimport { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * `BreadcrumbItemDirective` represent a item of the React Breadcrumb.\n * It must be contained in a Breadcrumb component(`BreadcrumbComponent`).\n * ```tsx\n * <BreadcrumbComponent>\n * <BreadcrumbItemsDirective>\n * <BreadcrumbItemDirective text='Home' url='/'></BreadcrumbItemDirective>\n * <BreadcrumbItemDirective text='Index' url='./index'></BreadcrumbItemDirective>\n * </BreadcrumbItemsDirective>\n * </BreadcrumbComponent>\n * ```\n */\nvar BreadcrumbItemDirective = /** @class */function (_super) {\n __extends(BreadcrumbItemDirective, _super);\n function BreadcrumbItemDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BreadcrumbItemDirective.moduleName = 'breadcrumbItem';\n return BreadcrumbItemDirective;\n}(ComplexBase);\nexport { BreadcrumbItemDirective };\nvar BreadcrumbItemsDirective = /** @class */function (_super) {\n __extends(BreadcrumbItemsDirective, _super);\n function BreadcrumbItemsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BreadcrumbItemsDirective.propertyName = 'items';\n BreadcrumbItemsDirective.moduleName = 'breadcrumbItems';\n return BreadcrumbItemsDirective;\n}(ComplexBase);\nexport { BreadcrumbItemsDirective };","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}();\nimport * as React from 'react';\nimport { Breadcrumb } from '@syncfusion/ej2-navigations';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `BreadcrumbComponent` represents the react Breadcrumb Component.\n * ```ts\n * <BreadcrumbComponent items={breadcrumbItems} />\n * ```\n */\nvar BreadcrumbComponent = /** @class */function (_super) {\n __extends(BreadcrumbComponent, _super);\n function BreadcrumbComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = {\n 'breadcrumbItems': 'breadcrumbItem'\n };\n _this.statelessTemplateProps = [\"itemTemplate\"];\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n BreadcrumbComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement('nav', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return BreadcrumbComponent;\n}(Breadcrumb);\nexport { BreadcrumbComponent };\napplyMixins(BreadcrumbComponent, [ComponentBase, React.Component]);","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}();\nimport { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * `CarouselItemDirective` represent a item of the React Carousel.\n * It must be contained in a Carousel component(`CarouselComponent`).\n * ```tsx\n * <CarouselComponent>\n * <CarouselItemsDirective>\n * <CarouselItemDirective template='#item1'></CarouselItemDirective>\n * <CarouselItemDirective template='#item2'></CarouselItemDirective>\n * </CarouselItemsDirective>\n * </CarouselComponent>\n * ```\n */\nvar CarouselItemDirective = /** @class */function (_super) {\n __extends(CarouselItemDirective, _super);\n function CarouselItemDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CarouselItemDirective.moduleName = 'carouselItem';\n return CarouselItemDirective;\n}(ComplexBase);\nexport { CarouselItemDirective };\nvar CarouselItemsDirective = /** @class */function (_super) {\n __extends(CarouselItemsDirective, _super);\n function CarouselItemsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CarouselItemsDirective.propertyName = 'items';\n CarouselItemsDirective.moduleName = 'carouselItems';\n return CarouselItemsDirective;\n}(ComplexBase);\nexport { CarouselItemsDirective };","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}();\nimport * as React from 'react';\nimport { Carousel } from '@syncfusion/ej2-navigations';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `CarouselComponent` represents the react Carousel Component.\n * ```ts\n * <CarouselComponent items={carouselItems} />\n * ```\n */\nvar CarouselComponent = /** @class */function (_super) {\n __extends(CarouselComponent, _super);\n function CarouselComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = {\n 'carouselItems': 'carouselItem'\n };\n _this.statelessTemplateProps = [\"itemTemplate\"];\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n CarouselComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return CarouselComponent;\n}(Carousel);\nexport { CarouselComponent };\napplyMixins(CarouselComponent, [ComponentBase, React.Component]);","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}();\nimport { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * `TabItemDirective` represent a item of the React Tab.\n * It must be contained in a Tab component(`Tab`).\n * ```tsx\n * <TabComponent>\n * <TabItemsDirective>\n * <TabItemDirective header= { 'Header 1' } content= { 'Content 1' } />\n * <TabItemDirective header= { 'Header 2' } content= { 'Content 2' } />\n * <TabItemsDirective>\n * </TabComponent>\n * ```\n */\nvar TabItemDirective = /** @class */function (_super) {\n __extends(TabItemDirective, _super);\n function TabItemDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TabItemDirective.moduleName = 'tabItem';\n TabItemDirective.complexTemplate = {\n 'header.text': 'header.text'\n };\n return TabItemDirective;\n}(ComplexBase);\nexport { TabItemDirective };\nvar TabItemsDirective = /** @class */function (_super) {\n __extends(TabItemsDirective, _super);\n function TabItemsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TabItemsDirective.propertyName = 'items';\n TabItemsDirective.moduleName = 'tabItems';\n return TabItemsDirective;\n}(ComplexBase);\nexport { TabItemsDirective };","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}();\nimport * as React from 'react';\nimport { Tab } from '@syncfusion/ej2-navigations';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React Tab Component.\n * ```html\n * <TabComponent></TabComponent>\n * ```\n */\nvar TabComponent = /** @class */function (_super) {\n __extends(TabComponent, _super);\n function TabComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = {\n 'tabItems': 'tabItem'\n };\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n TabComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return TabComponent;\n}(Tab);\nexport { TabComponent };\napplyMixins(TabComponent, [ComponentBase, React.Component]);","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}();\nimport * as React from 'react';\nimport { TreeView } from '@syncfusion/ej2-navigations';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `TreeViewComponent` represents the react TreeView Component.\n * ```ts\n * <TreeViewComponent allowDragAndDrop={true}></TreeViewComponent>\n * ```\n */\nvar TreeViewComponent = /** @class */function (_super) {\n __extends(TreeViewComponent, _super);\n function TreeViewComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n TreeViewComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return TreeViewComponent;\n}(TreeView);\nexport { TreeViewComponent };\napplyMixins(TreeViewComponent, [ComponentBase, React.Component]);","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}();\nimport * as React from 'react';\nimport { Sidebar } from '@syncfusion/ej2-navigations';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `SidebarComponent` represents the Essential JS 2 React Sidebar Component.\n * ```ts\n * <SidebarComponent></SidebarComponent>\n * ```\n */\nvar SidebarComponent = /** @class */function (_super) {\n __extends(SidebarComponent, _super);\n function SidebarComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n SidebarComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return SidebarComponent;\n}(Sidebar);\nexport { SidebarComponent };\napplyMixins(SidebarComponent, [ComponentBase, React.Component]);","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}();\nimport { ComplexBase } from '@syncfusion/ej2-react-base';\nvar MenuItemDirective = /** @class */function (_super) {\n __extends(MenuItemDirective, _super);\n function MenuItemDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MenuItemDirective.moduleName = 'menuItem';\n return MenuItemDirective;\n}(ComplexBase);\nexport { MenuItemDirective };\nvar MenuItemsDirective = /** @class */function (_super) {\n __extends(MenuItemsDirective, _super);\n function MenuItemsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MenuItemsDirective.propertyName = 'items';\n MenuItemsDirective.moduleName = 'menuItems';\n return MenuItemsDirective;\n}(ComplexBase);\nexport { MenuItemsDirective };","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}();\nimport * as React from 'react';\nimport { Menu } from '@syncfusion/ej2-navigations';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `MenuComponent` represents the react Menu Component.\n * ```ts\n * <MenuComponent items={menuItems} />\n * ```\n */\nvar MenuComponent = /** @class */function (_super) {\n __extends(MenuComponent, _super);\n function MenuComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = {\n 'menuItems': 'menuItem'\n };\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n MenuComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement('ul', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return MenuComponent;\n}(Menu);\nexport { MenuComponent };\napplyMixins(MenuComponent, [ComponentBase, React.Component]);","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}();\nimport * as React from 'react';\nimport { AppBar } from '@syncfusion/ej2-navigations';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `AppBarComponent` represents the Essential JS 2 React AppBar Component.\n * ```ts\n * <AppBarComponent></AppBarComponent>\n * ```\n */\nvar AppBarComponent = /** @class */function (_super) {\n __extends(AppBarComponent, _super);\n function AppBarComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n AppBarComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement('header', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return AppBarComponent;\n}(AppBar);\nexport { AppBarComponent };\napplyMixins(AppBarComponent, [ComponentBase, React.Component]);","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}();\nimport { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * `StepDirective` represents a step of the React Stepper.\n * It must be contained in a Stepper component(`StepperComponent`).\n * ```tsx\n * <StepperComponent>\n * <StepsDirective>\n * <StepDirective iconCss= { 'e-icons e-folder' } text= { 'Step 1' } />\n * <StepDirective iconCss= { 'e-icons e-folder' } text= { 'Step 2' } />\n * </StepsDirective>\n * </StepperComponent>\n * ```\n */\nvar StepDirective = /** @class */function (_super) {\n __extends(StepDirective, _super);\n function StepDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StepDirective.moduleName = 'step';\n return StepDirective;\n}(ComplexBase);\nexport { StepDirective };\nvar StepsDirective = /** @class */function (_super) {\n __extends(StepsDirective, _super);\n function StepsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StepsDirective.propertyName = 'steps';\n StepsDirective.moduleName = 'steps';\n return StepsDirective;\n}(ComplexBase);\nexport { StepsDirective };","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}();\nimport * as React from 'react';\nimport { Stepper } from '@syncfusion/ej2-navigations';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `StepperComponent` represents the react Stepper Component.\n * ```ts\n * <StepperComponent steps={stepItems} />\n * ```\n */\nvar StepperComponent = /** @class */function (_super) {\n __extends(StepperComponent, _super);\n function StepperComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = {\n 'steps': 'step'\n };\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n StepperComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement('nav', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return StepperComponent;\n}(Stepper);\nexport { StepperComponent };\napplyMixins(StepperComponent, [ComponentBase, React.Component]);","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}();\nimport { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * `ButtonDirective` represent a button of the react Toast.\n * It must be contained in a Toast component(`ToastrComponent`).\n * ```tsx\n * <ToastComponent>\n * <ButtonsDirective>\n * <ButtonDirective content='Ok' isPrimary=true></ButtonDirective>\n * <ButtonDirective content='Cancel'></ButtonDirective>\n * <ButtonsDirective>\n * </ToastComponent>\n * ```\n */\nvar ButtonModelPropDirective = /** @class */function (_super) {\n __extends(ButtonModelPropDirective, _super);\n function ButtonModelPropDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ButtonModelPropDirective.moduleName = 'buttonModelProp';\n return ButtonModelPropDirective;\n}(ComplexBase);\nexport { ButtonModelPropDirective };\nvar ButtonModelPropsDirective = /** @class */function (_super) {\n __extends(ButtonModelPropsDirective, _super);\n function ButtonModelPropsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ButtonModelPropsDirective.propertyName = 'buttons';\n ButtonModelPropsDirective.moduleName = 'buttonModelProps';\n return ButtonModelPropsDirective;\n}(ComplexBase);\nexport { ButtonModelPropsDirective };","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}();\nimport * as React from 'react';\nimport { Toast } from '@syncfusion/ej2-notifications';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React Toast Component\n * ```html\n * <Toast></Toast>\n * ```\n */\nvar ToastComponent = /** @class */function (_super) {\n __extends(ToastComponent, _super);\n function ToastComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = {\n 'buttonModelProps': 'buttonModelProp'\n };\n _this.statelessTemplateProps = [\"content\"];\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n ToastComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return ToastComponent;\n}(Toast);\nexport { ToastComponent };\napplyMixins(ToastComponent, [ComponentBase, React.Component]);","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}();\nimport * as React from 'react';\nimport { Message } from '@syncfusion/ej2-notifications';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * The React Message component displays messages with severity by differentiating icons and colors to denote the importance and context of the message to the end user.\n * ```html\n * <MessageComponent id='msg' showCloseIcon={true}>Editing is restricted</MessageComponent>\n * ```\n */\nvar MessageComponent = /** @class */function (_super) {\n __extends(MessageComponent, _super);\n function MessageComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n MessageComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return MessageComponent;\n}(Message);\nexport { MessageComponent };\napplyMixins(MessageComponent, [ComponentBase, React.Component]);","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}();\nimport * as React from 'react';\nimport { Skeleton } from '@syncfusion/ej2-notifications';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React Skeleton component\n * ```html\n * <SkeletonComponent></SkeletonComponent>\n * ```\n */\nvar SkeletonComponent = /** @class */function (_super) {\n __extends(SkeletonComponent, _super);\n function SkeletonComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.isReactMock = true;\n _this.portals = [];\n return _this;\n }\n SkeletonComponent.prototype.render = function () {\n this.isReactMock = false;\n if ((this.element && !this.initRenderCalled || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n } else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return SkeletonComponent;\n}(Skeleton);\nexport { SkeletonComponent };\napplyMixins(SkeletonComponent, [ComponentBase, React.Component]);","import React from \"react\";\nimport Helmet from \"react-helmet\";\nimport styled from \"styled-components\";\n\nimport { graphql } from 'gatsby';\nimport SiteHeader from '../components/Layout/Header';\nimport config from \"../templates/site-config\";\n// import { BrowserRouter, Switch } from 'react-router-dom';\nimport { compile, Browser, detach, select, Animation, selectAll, closest, Ajax, createElement } from '@syncfusion/ej2-base';\nimport { CheckBoxComponent } from '@syncfusion/ej2-react-buttons';\nimport { AutoCompleteComponent, DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';\nimport { DialogComponent } from '@syncfusion/ej2-react-popups';\nimport { SidebarComponent } from '@syncfusion/ej2-react-navigations';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { TreeView, Accordion, Tab } from '@syncfusion/ej2-navigations';\nimport { ToastComponent } from '@syncfusion/ej2-react-notifications';\nimport { navigate } from \"../../node_modules/gatsby-link/index\";\nimport Layout from \"../components/layout\";\n\nvar gitmap = require('../../githubMapper.json');\n\nvar setInt;\nvar routes = [];\nvar titles = [];\nvar tData;\nvar aData;\nvar tMapper;\nvar searchData = [];\nvar feedback;\nvar feedBackDownResponse;\nvar feedDlgInit = true;\nvar rTocInit = true;\nvar gcseInit = true;\n\nvar searchFields = { groupBy: 'component', value: 'title' };\n\nvar prefix = config.pathPrefix;\nvar breadCrumPath = config.breadCrumPath;\nvar isApi = config.isApi;\nvar isMobile = false;\nvar demosLink = '';\n\nvar platformMapper = {\n 'JavaScript': 'essential-js2',\n 'JavaScript (ES5)': 'essential-js2',\n 'Angular': 'angular-js2',\n 'React': 'react-js2',\n 'Vue': 'vue',\n 'ASP.NET Core': 'aspnetcore-js2',\n 'ASP.NET MVC': 'aspnetmvc-js2',\n 'Blazor': ''\n};\n\nvar demosMapper = {\n 'JavaScript': 'https://ej2.syncfusion.com/demos',\n 'JavaScript (ES5)': 'https://ej2.syncfusion.com/javascript/demos',\n 'Angular': 'https://ej2.syncfusion.com/angular/demos',\n 'React': 'https://ej2.syncfusion.com/react/demos',\n 'Vue': 'https://ej2.syncfusion.com/vue/demos',\n 'ASP.NET Core': 'https://ej2.syncfusion.com/aspnetcore/',\n 'ASP.NET MVC': 'https://ej2.syncfusion.com/aspnetmvc/',\n 'Blazor': 'https://blazor.syncfusion.com/demos/'\n};\n\nvar aspApiMapper = {\n 'ASP.NET Core': 'https://help.syncfusion.com/cr/aspnetcore-js2/',\n 'ASP.NET MVC': 'https://help.syncfusion.com/cr/aspnetmvc-js2/',\n 'Blazor': 'https://help.syncfusion.com/cr/blazor/'\n};\n\nvar githubMapper = {\n 'Blazor': 'https://github.com/syncfusion/blazor-docs/tree/master/src/'\n};\n\nvar ignoreApiSelect = ['base', 'angular-base', 'check-box', 'compression', 'data', 'excel-export', 'file-utils', 'pdf-export'];\n\nvar aspRegex = /ASP.NET Core|ASP.NET MVC|Blazor/;\nvar urlCheckRegex = /^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.%]+$/;\nvar noteCheckRegex = /<blockquote>\\n+(<p>(Note|Warning|Information|Error|Tips)[\\s]*:.+)+\\n+<\\/blockquote>/g;\nvar codeBlockRegex = /{%( |)codeBlock [^\\0]*?{%( |)endcodeBlock( |)%}/g;\nvar isAspDocs = false;\nvar plat = '';\n\nvar uuid = 0;\nvar today = null;\n\n// This class should not be used for listing posts, but for chapter based Docs. See PostListing for that.\n// You'll also need to add your chapters to siteConfig\n\nvar isNotIE = true;\n\nif (typeof window !== 'undefined') {\n isNotIE = !Browser.isIE;\n}\n\nexport default class LayoutTemplate extends React.Component {\n\n search;\n feedBackDialog;\n emailCheckBox;\n leftSideBar;\n rightSideBar;\n dropObj;\n getRouteIndex(path) {\n return routes.searchArray(path);\n }\n\n filterData = [\n {\n dropName: 'All', dropId: '1'\n },\n {\n dropName: 'New Features', dropId: '2'\n },\n {\n dropName: 'Bug Fixes', dropId: '3'\n },\n {\n dropName: 'Breaking Changes', dropId: '4'\n },\n {\n dropName: 'Deprecated', dropId: '5'\n }\n];\n\ndropField = { value: 'dropId', text: 'dropName' };\n\nindex = 0;\n\nconstructor(props) {\n super(props);\n this.onFilterReleaseNotes = this.onFilterReleaseNotes.bind(this);\n this.onFilterCreated = this.onFilterCreated.bind(this);\n // super(...arguments);\n this.timeOutDelay = 600;\n this.cusPosition = { X: 'Right', Y: 'Bottom' };\n this.template = '<div class=\"e-toast-template\"><img class=\"e-toast-icon e-toast-image toast-img-cnt\" src=\"${image.url}\" alt=\"Blazor E-Book poster\" />'+ \n '<div class=\"e-toast-message\"><div class=\"e-toast-title toast-title-cnt\">${from}</div>'\n +'<div class=\"e-toast-content toast-cnt\">${subject}</div></div><div id = \"toast-close\"class=\"toast-content-close toast-close-btn\"><span id=\"close-toast\"></span></div>'\n +'<div class=\"popup-button-section btnlink\" style=\"background-color:#9E25FF\"><a id=\"popup-button\" class=\"btn__text\" href=\"https://www.syncfusion.com/ebooks/blazor-succinctly?utm_source=syncfusion_doc&utm_medium=textad&utm_campaign=syncfusion_blazorebsucc_textadcy20\">Get your free ebook</a></div>';\n this.toastData = [\n { from: ' Blazor Ebook', subject: 'A quick guide to getting started with learning and improving your skills using Blazor technology.', image: { url: 'https://cdn.syncfusion.com/blazor/toaster.png' }, }\n ];\n this.toastFlag = 0;\n }\n\n cardTemplateFn(data) {\n return compile(this.template.trim())(data);\n }\n\n toastObjEmailCreate() {\n setTimeout(function () {\n this.toastObjEmail.show({ template: this.cardTemplateFn(this.toastData[this.toastFlag])[0].outerHTML });\n }.bind(this));\n if (localStorage.getItem(\"toast\") === 'disable') {\n var toastele = select('#toast_custom');\n toastele.classList.add('doc-hide');\n }\n }\n\n closetoast() {\n localStorage.setItem(\"toast\", \"disable\");\n var toastele = select('#toast_custom');\n toastele.classList.add('doc-hide');\n }\n\n toastObj() {\n var toastclosebtn = document.getElementById('toast-close');\n toastclosebtn.addEventListener('click', (e) => {\n localStorage.setItem(\"toast\", \"disable\");\n var toastele = select('#toast_custom');\n toastele.classList.add('doc-hide');\n });\n var ebook = document.getElementById('popup-button')\n ebook.addEventListener('click', (e) => {\n localStorage.setItem(\"toast\", \"disable\");\n var toastele = select('#toast_custom');\n toastele.classList.add('doc-hide');\n });\n }\n\n onFilterCreated() {\n if (this.props.pageContext.isReleaseNotes) {\n var h2Tags = document.getElementsByTagName('h2');\n var hidden;\n var rtoc = [];\n if (document.getElementById('doc-right-toc')) {\n rtoc = document.getElementById('doc-right-toc').children[1].children; \n }\n for (var i = 0; i < h2Tags.length; i++) {\n var node = h2Tags[i];\n var temp = node;\n while (node) {\n temp = temp.nextElementSibling || '';\n if (temp.tagName === 'H2') {\n node.classList.add('doc-hide');\n hidden = node.innerText;\n }\n break;\n }\n }\n for (var j = 0; j < rtoc.length; j++) {\n if (rtoc[j].innerText === hidden) {\n rtoc[j].classList.add('doc-hide');\n }\n }\n var searchStr = window.location.search;\n if (searchStr) {\n searchStr = searchStr.split('?type=');\n } else {\n var path = window.location.href;\n window.history.pushState({}, null, path+'?type=all')\n }\n if (searchStr[1] === 'new-features') {\n this.dropObj.value = '2';\n } else if (searchStr[1] === 'bug-fixes') {\n this.dropObj.value = '3';\n } else if (searchStr[1] === 'breaking-changes') {\n this.dropObj.value = '4';\n }else if (searchStr[1] === 'deprecated') {\n this.dropObj.value = '5';\n } else {\n this.dropObj.value = '1';\n }\n }\n }\n\n\n//function for filter release notes\n onFilterReleaseNotes() {\n var dropClass, dropHash;\n var removeAlert = document.getElementsByClassName('alert');\n if (removeAlert.length !== 0) {\n removeAlert[0].parentElement.removeChild(removeAlert[0]);\n }\n var h2Tags = document.getElementsByTagName('h2');\n if (this.dropObj.text === 'New Features') {\n dropClass = 'doc-new-features';\n dropHash = 'new-features';\n } else if (this.dropObj.text === 'Bug Fixes') {\n dropClass = 'doc-bug-fixes';\n dropHash = 'bug-fixes';\n } else if (this.dropObj.text === 'Breaking Changes') {\n dropClass = 'doc-breaking-changes';\n dropHash = 'breaking-changes';\n } else if (this.dropObj.text === 'Deprecated') {\n dropClass = 'doc-deprecated';\n dropHash = 'deprecated';\n } else {\n dropClass = 'all';\n dropHash = 'all';\n }\n var arr = [], flag1 = 0;\n for (var i = 0; i < h2Tags.length; i++) {\n var node = h2Tags[i];\n var temp = node;\n h2Tags[i].classList.remove('doc-hide');\n var flag = 0;\n while (node) {\n temp = temp.nextElementSibling || '';\n if (temp === null || temp.tagName === 'H2' || temp === '') {\n break;\n }\n if (temp.classList.contains('doc-badge-wrapper')) {\n var node1 = temp;\n var temp1 = node1;\n while (node1) {\n temp1 = temp1.nextElementSibling || '';\n if (temp1 === '' || temp1.classList.contains('doc-badge-wrapper') || temp1.tagName === 'H2') {\n break;\n }\n temp = temp.nextElementSibling || '';\n if (dropClass === 'all') {\n node1.classList.remove('doc-hide');\n temp.classList.remove('doc-hide');\n } else if (!node1.classList.contains(dropClass)) {\n temp.classList.add('doc-hide');\n node1.classList.add('doc-hide');\n } else {\n flag1 = 1;\n node1.classList.remove('doc-hide');\n temp.classList.remove('doc-hide');\n }\n }\n }\n if (!temp.classList.contains('doc-hide')) {\n flag = 1;\n }\n }\n if (flag === 1) {\n arr.push(h2Tags[i].innerText);\n } else {\n h2Tags[i].classList.add('doc-hide');\n }\n }\n if (flag1 === 0 && dropClass !== 'all') {\n var mdCnt = document.getElementById('md-cnt')\n var div = document.createElement('DIV');\n div.innerText = `No ${dropHash} for this product in this version.`;\n div.classList.add('alert');\n mdCnt.appendChild(div);\n }\n var rightToc = [];\n if (document.getElementById('doc-right-toc')) {\n rightToc = document.getElementById('doc-right-toc').children[1].children; \n }\n for (var i = 0; i < rightToc.length; i++) {\n if (arr.indexOf(rightToc[i].innerText) !== -1) {\n rightToc[i].classList.remove('doc-hide');\n } else {\n rightToc[i].classList.add('doc-hide');\n }\n }\n var path = window.location.href;\n if (!path.includes('?type=' + dropHash)) {\n path = path.includes('?type=') ? path.replace(/\\?type=.+/, '?type=' + dropHash) : path + '?type=' + dropHash;\n window.history.pushState({}, null, path);\n }\n }\n\n setNavContent() {\n var pIndex = this.getRouteIndex(this.getPathName());\n var fSample = pIndex === 0;\n var lSample = routes.length - pIndex === 1;\n var prevEle = document.getElementsByClassName('nav-prev-text')[0];\n var nextEle = document.getElementsByClassName('nav-next-text')[0];\n var prevCont = fSample ? titles[pIndex] : titles[--pIndex];\n var prevLink = routes[pIndex];\n var overviewBool = prevCont === undefined;\n var nextCont = lSample ? titles[pIndex] : titles[pIndex + (fSample ? 1 : 2)];\n var nextLink = lSample ? routes[pIndex] : routes[pIndex + (fSample ? 1 : 2)];\n if (isMobile) {\n prevCont = this.getMobileNavContent(prevCont);\n nextCont = this.getMobileNavContent(nextCont);\n }\n var pathPrefix = (prefix === '/') ? '' : prefix;\n select('#prev-link').href = (pathPrefix + prevLink) || '';\n select('#next-link').href = (pathPrefix + nextLink) || '';\n prevEle.innerText = prevCont;\n nextEle.innerText = nextCont;\n prevEle.parentElement.classList[fSample || overviewBool ? 'add' : 'remove']('doc-hide');\n nextEle.parentElement.classList[lSample ? 'add' : 'remove']('doc-hide');\n }\n\n getMobileNavContent(content) {\n if (content.indexOf('/') !== -1) {\n content = content.split('/')[1].trim();\n }\n return content;\n }\n\n getPathName() {\n var pathName = '';\n if (window) {\n pathName = window.location.pathname;\n if (prefix !== '/') {\n pathName = window.location.pathname.replace(prefix, '');\n }\n }\n return pathName;\n }\n\n expandedNode(path) {\n var expandTreeData = [];\n var pathArray = path.split('/');\n var comp = pathArray[1];\n var accData = aData;\n var accIndex = tMapper[comp];\n var treeData = tData[accIndex];\n var accordionIndex;\n for (var accor of accData) {\n if (accor.data && accIndex && accor.data === accIndex) {\n accordionIndex = accData.indexOf(accor);\n }\n }\n if (treeData) {\n for (var tmData of treeData) {\n tmData.expanded = tmData.id === comp;\n var tempExpanded = false;\n if (tmData.child && tmData.child.length) {\n var tChild = [];\n for (var tmChild of tmData.child) {\n tmChild.expanded = tmChild.id === path;\n if (tmChild.expanded) {\n tempExpanded = true;\n }\n tChild.push(tmChild);\n }\n tmData.child = tChild;\n }\n if (tempExpanded) {\n tmData.expanded = true;\n }\n expandTreeData.push(tmData);\n }\n tData[accIndex] = expandTreeData;\n }\n return accordionIndex;\n }\n\n expandAccordion(index) {\n var tocAccordion = document.getElementById('toc').ej2_instances[0];\n if (index || index === 0) {\n tocAccordion.expandItem(true, index);\n }\n tocAccordion.animation = { expand: { effect: 'SlideDown', duration: 400, easing: 'linear' }, collapse: { effect: 'SlideUp', duration: 400, easing: 'linear' } };\n }\n\n renderBreadCrumb() {\n var breadCrumbData = document.getElementById('bread-crumb-data').getAttribute('data');\n var bread = breadCrumbData.split('/');\n var indexRegex = /overview/i;\n if (!indexRegex.test(bread[bread.length - 1]) && ((breadCrumbData[0] !== '/') || (breadCrumbData.split('/').length === 2))) {\n var subDir = bread.length === 3;\n var lastBread = subDir ? bread[2] : bread[1];\n var breadCrumbElem = `<a id=\"breadCrumId\" class=\"doc-icons icon-home_icon\" href=\"${breadCrumPath}\"></a>${breadCrumbData[0] === '/' ? '' : ' '} <a class=\"doc-bread-nav\" href=\"${subDir ? '../../' : '../'}\">${bread[0] ? '/ ' + bread[0] : ''}</a>${subDir ? ' / ' + bread[1] : ''}${lastBread ? ` / ${lastBread}` : ''}`;\n document.getElementById('doc-bread-crumb').innerHTML = breadCrumbElem;\n var breadDirElem = document.querySelector('.doc-bread-nav');\n if (breadDirElem) {\n breadDirElem.onclick = function (e) {\n e.preventDefault();\n var href = window.location.href;\n href = href.split('/');\n href.pop();\n if (subDir) {\n href.pop();\n }\n window.location.href = href.join('/');\n }\n }\n }\n detach(select('#bread-crumb-data'));\n }\n\n componentDidMount() {\n var title = window.toc.titles;\n var route = window.toc.path;\n routes = [];\n titles = [];\n for (var i = 0; i < route.length; i++) {\n if (!urlCheckRegex.test(route[i])) {\n routes.push(route[i]);\n titles.push(title[i]);\n }\n }\n tData = window.toc.treeData;\n aData = window.toc.accData;\n tMapper = window.toc.treeMapper;\n this.search.dataSource = window.toc.searchData;\n\n isMobile = window.matchMedia('(max-width:480px)').matches;\n\n window.gcseSearch = function () {\n select('#doc-body-cont').classList.add('gcse-search');\n select('#doc-search-result').classList.remove('doc-hide');\n select('#scroll-top').style.display = \"none\";\n var tocActive = select('.e-toc-active');\n if (tocActive) {\n tocActive.classList.remove('e-toc-active');\n }\n };\n renderToc();\n renderTab();\n // createCustomSearch(this.props.pageContext.gcse);\n this.expandAccordion(this.expandedNode(this.getPathName()));\n this.setNavContent();\n this.rightTocSelect();\n this.renderBreadCrumb();\n this.selectedToc();\n this.configureHamburger();\n this.configureRightSideBar();\n this.configureMobileSearch();\n if (plat !== 'Blazor' || this.props.pageContext.isReleaseNotes) {\n var toastele = select('#toast_custom');\n toastele.classList.add('doc-hide');\n var dropEle = select('#version-support');\n if (dropEle){\n dropEle.classList.add('doc-hide'); \n }\n var loadingIcon = select('#doc-overlay')\n if(loadingIcon){\n loadingIcon.classList.add('doc-hide'); \n }\n var gitEditBtn = window.document.getElementById('editme');\n gitEditBtn.classList.add('doc-hide');\n var nugetBtn = window.document.getElementById('nuget-install');\n nugetBtn.classList.add('doc-hide');\n } \n if (this.props.pageContext.isReleaseNotes) {\n var releaseFilter = select('#is-release');\n releaseFilter.classList.remove('doc-hide');\n releaseFilter.classList.add('filter-drop');\n }\n select('.doc-toc-search-icon').addEventListener('click', () => {\n var leftTocSearch = select('#auto-complete');\n if (leftTocSearch && leftTocSearch.value && leftTocSearch.ej2_instances) {\n leftTocSearch.ej2_instances[0].renderPopup();\n }\n });\n\n select('#editme').addEventListener('click', (event) => {\n event.currentTarget.classList.add('doc-edit-me-visited');\n var path = (window.location.href).replace(/\\?no-cache.+/,'').split('documentation/')[1].split('/');\n var gitPath = githubMapper[plat];\n var editPath; \n if(path.length === 2){\n editPath = gitPath+'common/'+path[0]+'.md';\n } else if(path.length === 3){\n editPath = gitPath+gitmap[path[0]]+'/'+path[0]+'/'+path[1]+'.md';\n } else {\n editPath = gitPath+gitmap[path[0]]+'/'+path[0]+'/'+path[1]+'/'+path[2]+'.md';\n }\n window.open(\n editPath,\n '_blank'\n );\n });\n\n if (isMobile) {\n select('#md-content').addEventListener('click', this.docClick);\n select('#doc-footer').addEventListener('click', this.docClick);\n select('#doc-search-result').classList.remove('doc-hide');\n }\n\n if (plat === 'React') {\n ((window.location.href.indexOf('?type=tsx')) !== -1) ? select('#md-content').classList.add('hide-jsx') : select('#md-content').classList.add('hide-tsx');\n }\n\n if (!window.location.hash.length) {\n document.getElementById('md-content').scrollTop = 0;\n }\n if (isNotIE) {\n feedback = select('#footer-feedback');\n feedBackDownResponse = select('.feedback-down-response');\n }\n this.leftSideBar.mediaQuery = window.matchMedia('(min-width: 765px)');\n this.setHeaderClick();\n // this.getUuid();\n setTimeout(() => {\n this.ScrollToc();\n // this.googleTagMapper();\n if (window.location.hash) {\n select(window.location.hash).click();\n }\n this.removeOverlay();\n }, 300);\n var closeBtn = createElement('div', { className: 'search-content-close', id: 'close-search-content', innerHTML: '<span id=\"close-search\"></span>' });\n select('#doc-search-result').appendChild(closeBtn);\n closeBtn.addEventListener('click', this.closeSearchResult);\n var btn = createElement('button', { className: 'back-to-top', id: 'scroll-top', innerHTML: '<span id=\"icon-move-top\"></span>' });\n btn.addEventListener('click',(e) => {\n select('#md-content').scrollTop = 0;\n });\n select('.doc-body-content').appendChild(btn);\n btn.style.display = \"none\";\n select('#md-content').onscroll = () => {\n if (select('#md-content').scrollTop > 20) {\n btn.style.display = \"block\";\n } else {\n btn.style.display = \"none\";\n }\n };\n window.onkeyup = (e) => {\n if (e.ctrlKey && e.which === 36) {\n select('#md-content').scrollTop = 0;\n } else if (e.ctrlKey && e.which === 35) {\n select('#md-content').scrollTo(0, select('#md-content').scrollHeight);\n } else if (e.keyCode === 27 && select('#doc-body-cont').classList.contains('gcse-search')) {\n this.closeSearchResult();\n }\n };\n //api link opening new window support\n var apilnk = document.getElementsByClassName('language-text');\n for(var api = 0; api < apilnk.length; api++){\n if(apilnk[api] && apilnk[api].parentElement.tagName === 'A') {\n apilnk[api].parentElement.target = '_blank';\n }\n }\n }\n\n getUuid() {\n if (getCookie('_uid') !== '') {\n uuid = getCookie('_uid');\n } else {\n today = new Date();\n var loadTimeOffset = today.getTimezoneOffset() * 60000;\n var estTimeOffset = ESTTimeOffset();\n var timeUTC = today.getTime() + loadTimeOffset;\n var timeEST = new Date(timeUTC + estTimeOffset) / 1;\n uuid = Math.floor(Math.random() * 1000) + 1 + timeEST.toString();\n createCookie('_uid', uuid);\n }\n }\n\n removeOverlay() {\n var docOverlay = select('#doc-overlay');\n if (docOverlay) {\n docOverlay.classList.add('doc-hide');\n }\n }\n\n docClick() {\n select('#doc-left-sidebar').ej2_instances[0].hide();\n select('#doc-mobile-right-toc').ej2_instances[0].hide();\n select('#doc-mobile-toc').classList.remove('right-toc-active');\n select('#doc-mobile-search').classList.remove('mobile-search-active');\n select('#md-content').classList.remove('mobile-search-enabled');\n select('#doc-mobile-content-search').classList.add('doc-hide');\n }\n\n setHeaderClick() {\n var headTags = selectAll('h1, h2, h3, h4', select('#md-cnt'));\n for (var head of headTags) {\n head.addEventListener('click', (e) => {\n var ele = select('a', e.srcElement) || select('a', e.srcElement.parentElement);\n ele.click();\n })\n }\n }\n\n configureHamburger() {\n select('.doc-hamburger-icon').addEventListener('click', () => {\n this.closeRightSideBar();\n this.leftSideBar.toggle();\n this.toggleMobileSearch(false);\n });\n }\n\n configureRightSideBar() {\n if (!select('.doc-no-right-toc')) {\n select('#doc-mobile-right-toc').classList.remove('doc-hide');\n select('#doc-mobile-toc').addEventListener('click', () => {\n if (rTocInit) {\n select('#doc-mobile-right-toc').classList.remove('doc-no-width');\n rTocInit = false;\n }\n select('#doc-mobile-toc').classList[this.rightSideBar.isOpen ? 'remove' : 'add']('right-toc-active');\n this.leftSideBar.hide();\n this.rightSideBar.toggle();\n this.toggleMobileSearch(false);\n });\n }\n }\n\n configureMobileSearch() {\n select('#doc-mobile-search').addEventListener('click', () => {\n var mobileSearchIcon = select('#doc-mobile-search');\n mobileSearchIcon.classList.toggle('mobile-search-active');\n this.leftSideBar.hide();\n this.closeRightSideBar();\n this.toggleMobileSearch(mobileSearchIcon.classList.contains('mobile-search-active'));\n });\n }\n\ncloseSearchResult() {\n select('#doc-body-cont').classList.remove('gcse-search');\n select('#doc-search-result').classList.add('doc-hide');\n select('#doc-content-search input').value = '';\n if (select('#md-content').scrollTop > 20) {\n btn.style.display = \"block\";\n }\n }\n\n toggleMobileSearch(bool) {\n select('#doc-mobile-search').classList[bool ? 'add' : 'remove']('mobile-search-active');\n select('#md-content').classList[bool ? 'add' : 'remove']('mobile-search-enabled');\n if (!select('#doc-body-cont').classList.contains('gcse-search')) {\n select('#doc-mobile-content-search').classList[bool ? 'remove' : 'add']('doc-hide');\n }\n }\n\n closeRightSideBar() {\n var mobileRightToc = select('.right-toc-active');\n if (mobileRightToc) {\n mobileRightToc.classList.remove('right-toc-active');\n }\n this.rightSideBar.hide();\n }\n\n selectedToc() {\n var path = this.getPathName();\n var toc = document.getElementById('toc');\n var selectTree = toc.querySelector(`[data-uid='${path}']`);\n var selectAcrdn = toc.querySelector(`[data='${path}']`);\n if (selectTree) {\n selectTree.classList.add('e-toc-active');\n }\n if (selectAcrdn) {\n closest(selectAcrdn, '.e-acrdn-item').classList.add('e-toc-active');\n }\n }\n\n rightTocSelect() {\n var rightToc = document.getElementById('doc-right-toc');\n if (!rightToc) {\n return;\n }\n var activeElem = rightToc.querySelector('.active');\n if (rightToc) {\n var ele = rightToc.querySelector(`[href=\"#${window.location.href.split('#')[1]}\"]`);\n if (ele) {\n if (activeElem) {\n activeElem.classList.remove('active');\n }\n ele.parentElement.classList.add('active');\n }\n }\n }\n\n searchSelect(e) {\n if (e.itemData && e.itemData.id) {\n if (urlCheckRegex.test(e.itemData.id)) {\n window.open(e.itemData.id);\n } else {\n navToPath(e.itemData.id);\n }\n }\n }\n\n rightTocHighlight() {\n if (document.getElementById('doc-right-toc')) {\n var mdContent = document.getElementById('md-content');\n var rightToc = document.getElementById('doc-right-toc');\n var selctedElem = rightToc.querySelector('.select');\n var activeElement = rightToc.querySelector('.active') ? rightToc.querySelector('.active') : '';\n var headers = mdContent.querySelectorAll('h2,h3,h4,h5,h6');\n for (var hEle of headers) {\n if (this.checkVisibilty(hEle, mdContent)) {\n var headEle = rightToc.querySelector(`[href='#${hEle.id}']`);\n if (headEle) {\n if (selctedElem) {\n selctedElem.classList.remove('select');\n }\n headEle.parentNode.classList.add('select');\n if(activeElement !== ''){\n activeElement.classList.remove('active');\n }\n }\n return;\n }\n }\n }\n }\n\n checkVisibilty(elem, parent) {\n var pageTop = parent.scrollTop;\n var pageBottom = pageTop + parent.offsetHeight;\n var elementTop = elem.offsetTop;\n var elementBottom = elementTop + parseInt(window.getComputedStyle(elem).height);\n return ((elementTop <= pageBottom) && (elementBottom >= pageTop));\n };\n\n ScrollToc() {\n setTimeout(() => {\n var selectedToc = select(`[data-uid=\"${this.getPathName()}\"]`) ||\n select('#toc .e-acrdn-item.e-active') || select('#toc .e-acrdn-item.e-toc-active');\n if (selectedToc) {\n selectedToc.scrollIntoView();\n }\n }, 0);\n }\n\n feedBackUp() {\n var FeedBack = {\n URL: window.feedbackTest ? 'https://ej2.syncfusion.com/javascript/documentation/grid/getting-started/' : window.location.href,\n UUID: uuid,\n Feedback: select('#feedback-up').innerText.trim(),\n IsFeedbackProvided: false\n }\n $.ajax({\n url: \" https://websiteapi.syncfusion.com/feedback/doc\",\n dataType: \"json\",\n type: 'POST',\n crossDomain: true,\n data: FeedBack\n }); \n feedback.classList.add('doc-feedback-up');\n feedback.innerHTML = 'Thank you for your feedback!';\n var animation = new Animation({ duration: 3000, name: 'FadeOut', end: function () { select('#footer-feedback').classList.add('doc-hide') } });\n animation.animate(feedback);\n }\n scrollTopMove(){\n select('#md-content').scrollTop = 0;\n }\n resetFeedBackDown() {\n var chbxs = selectAll('#checkboxes input', feedBackDownResponse);\n for (var chbx of chbxs) {\n chbx.ej2_instances[0].checked = false;\n var id = chbx.id;\n var tArea = select('#comment' + id, this.feedBackDownResponse);\n tArea.value = '';\n tArea.classList.add('doc-hide');\n select('.error-message.' + id, feedBackDownResponse).classList.add('doc-hide');\n }\n select('.email-input', feedBackDownResponse).value = '';\n this.emailCheckBox.checked = false;\n closest(this.emailCheckBox.element, '.e-checkbox-wrapper').classList.add('doc-hide');\n select('.feed-submit').ej2_instances[0].disabled = true;\n }\n\n feedBackDown() {\n if (feedDlgInit) {\n closest(this.emailCheckBox.element, '.e-checkbox-wrapper').classList.add('doc-hide');\n select('.email-input').addEventListener('keyup', (e) => {\n closest(this.emailCheckBox.element, '.e-checkbox-wrapper').classList[!e.target.value ? 'add' : 'remove']('doc-hide');\n });\n feedDlgInit = !feedDlgInit\n }\n this.feedBackDialog.show();\n }\n\n feedBackDownCancel() {\n feedBackDownResponse.classList.add('doc-hide');\n feedback.classList.remove('doc-hide');\n this.resetFeedBackDown();\n }\n\n feedBackSubmit() {\n if (this.validateFeedBack()) {\n\n feedBackDownResponse.classList.add('doc-hide');\n select('#feedBackDlg .e-dlg-header-content').classList.add('doc-hide');\n select('#feedBackDlg .e-footer-content').classList.add('doc-hide');\n select('#feedBackDlg').classList.add('feed-thanks');\n select('#feedBackDlg .feedback-up-response').classList.remove('doc-hide');\n\n\n var animation = new Animation({\n duration: 2500, name: 'FadeOut', end: function () {\n select('#feedBackDlg').classList.add('doc-hide');\n select('#feedBackDlg').ej2_instances[0].hide();\n select('#footer-feedback').classList.add('doc-hide');\n }\n });\n animation.animate('#feedBackDlg');\n\n var myIp = '';\n var ipAjax = new Ajax(\"https://ipinfo.io/json\", 'GET', true);\n ipAjax.send().then();\n ipAjax.onSuccess = (data) => {\n myIp = JSON.parse(data).ip;\n var FeedBack = {\n UUID: uuid,\n URL: window.feedbackTest ? 'https://ej2.syncfusion.com/javascript/documentation/grid/getting-started.html' : window.location.href,\n IPAddress: myIp,\n IsFeedbackProvided: true,\n Email: select('.feedback-down-response .email-input').value,\n Message: this.feedBackMessage(),\n CanContact: this.emailCheckBox.checked,\n Feedback: select('#feedback-down').innerText.trim()\n }\n\n console.log(JSON.stringify(FeedBack, null, 4));\n\n $.ajax({\n url: \" https://websiteapi.syncfusion.com/feedback/doc\",\n dataType: \"json\",\n type: 'POST',\n crossDomain: true, \n data: FeedBack \n });\n }\n }\n }\n\n feedBackMessage() {\n var feedBackMessage = \"\";\n var chbxs = selectAll('#checkboxes input', feedBackDownResponse);\n var countNumber = 1;\n for (var chbx of chbxs) {\n if (chbx.checked) {\n var label = chbx.ej2_instances[0].label;\n var comment = select('#comment' + chbx.id, this.feedBackDownResponse).value;\n // eslint-disable-next-line\n feedBackMessage += countNumber + \". <b>\" + label + \"</b><br>\" + \" \" + comment + \"<br><br>\"\n countNumber++;\n }\n }\n return feedBackMessage;\n }\n\n validateFeedBack() {\n var validationOk = true;\n var chbxs = selectAll('#checkboxes input', feedBackDownResponse);\n for (var chx of chbxs) {\n var chbx = chx.ej2_instances[0];\n if (chbx.checked) {\n var id = chx.id;\n if (!select('#comment' + id, this.feedBackDownResponse).value) {\n select('.error-message.' + id, feedBackDownResponse).classList.remove('doc-hide');\n validationOk = false;\n }\n }\n }\n return validationOk;\n }\n\n floatFocus(args) {\n args.target.parentElement.classList.add('e-input-focus');\n }\n\n floatBlur(args) {\n args.target.parentElement.classList.remove('e-input-focus');\n }\n\n feedBackCheck(args) {\n var checkbox = args.event.srcElement;\n var id = checkbox.id;\n select('#comment' + id, feedBackDownResponse).classList[checkbox.checked ? 'remove' : 'add']('doc-hide');\n select('.error-message.' + id, feedBackDownResponse).classList.add('doc-hide');\n var checked = false;\n var chbxs = selectAll('#checkboxes input', feedBackDownResponse);\n for (var chbx of chbxs) {\n if (chbx.checked) {\n checked = true;\n break;\n }\n }\n select('.feed-submit').ej2_instances[0].disabled = !checked;\n }\n\n noteSupport(mdString) {\n var matchNote = mdString.match(noteCheckRegex);\n var checkRegex = /<p>(Note|Warning|Information|Error|Tips)[\\s]*:.+/;\n var removeRegex = /<(|\\/)p>((Note|Warning|Information|Error|Tips)[\\s]*:[\\s]*|)/g;\n var typeRegex = /(Note|Warning|Information|Error|Tips)[\\s]*/;\n if (matchNote !== null) {\n for (var str of matchNote) {\n var content = str.match(checkRegex)[0];\n var matchContent = content.replace(removeRegex, '')\n var typeName = content.match(typeRegex)[0];\n var className = typeName.toLowerCase();\n className = className === 'information' ? (className + 's') : className;\n var note = `<p class =\"${className} common-notes\"><span class =\"${className}-header common-notes-contents common-notes-headers\">${typeName}: </span><span class = \"${className}-content common-notes-contents\">` + matchContent + '</span></p>';\n mdString = mdString.replace(str, note);\n }\n }\n return mdString;\n }\n\n /* eslint-disable */\n render() {\n const { header, breadCrumb, isReleaseNotes, title, description, platform, isRobots, headerTag } = this.props.pageContext;\n const postNode = this.props.data.postBySlug;\n if(noteCheckRegex.test(postNode.html)){\n postNode.html = this.noteSupport(postNode.html); \n }\n postNode.html = postNode.html.replace(codeBlockRegex,'');\n if (headerTag) {\n var h1 = postNode.html.match(/<h1.+<\\/h1>/g) ? postNode.html.match(/<h1.+<\\/h1>/g)[0] : null;\n if (h1){\n var newHeader = h1.replace(/<\\/a>.+<\\/h1>/g,'</a>'+headerTag+'</h1>');\n postNode.html = postNode.html.replace(h1, newHeader);\n }\n }\n var releaseClass = \"\";\n if (isReleaseNotes) {\n releaseClass = \" doc-release-notes\"\n }\n var mdContentClass = \"e-view\";\n if (!header) {\n mdContentClass += \" doc-no-right-toc\";\n }\n var metaRobot = { name: '', content: '' }\n if (isRobots) {\n metaRobot.name = \"robots\";\n metaRobot.content = \"follow\";\n }\n demosLink = demosMapper[platform];\n isAspDocs = aspRegex.test(platform);\n plat = platform;\n return (\n <Layout>\n <div>\n <Helmet>\n <title>{title.replace(/Blazor \\[Preview\\]/, 'Blazor')}</title>\n <meta name=\"description\" content={description.replace(/Blazor \\[Preview\\]/, 'Blazor')} />\n <meta name={metaRobot.name} content={metaRobot.content} />\n <script src=\"https://code.jquery.com/jquery-3.4.1.min.js\" integrity=\"sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=\" crossorigin=\"anonymous\"></script>\n <link href=\"https://fonts.googleapis.com/css2?family=Open+Sans&display=swap\" rel=\"stylesheet\"></link>\n </Helmet>\n <div id=\"doc-body\" className={\"e-view\" + releaseClass + (isApi ? ' api-docs' : '')}>\n <div hidden id=\"sync-analytics\" data-queue={`EJ2 - ${platform === 'JavaScript (ES5)' ? 'JavaScript ES5' : platform} - Documentation`}></div>\n <HeaderContainer className=\"e-view\">\n <SiteHeader platform={platform} />\n </HeaderContainer>\n <div id=\"doc-body-container\" className=\"e-view\">\n <SidebarComponent id=\"doc-left-sidebar\" enableGestures={false} width=\"265px\" type=\"Over\" target=\"#doc-body-container\" ref={Sidebar => this.leftSideBar = Sidebar}>\n <LeftPane id=\"doc-left-pane\" className=\"e-view\">\n <div id=\"left-pane-search\" className=\"e-view\">\n <AutoCompleteComponent id='auto-complete' ref={t => this.search = t} fields={searchFields} dataSource={searchData} placeholder=\"Filter by title\" select={this.searchSelect.bind(this)} ></AutoCompleteComponent>\n <div className=\"doc-toc-search-icon\"></div>\n </div>\n {/* <BrowserRouter> */}\n {/* <Switch> */}\n <div id=\"doc-left-toc\" className=\"e-view\">\n <div id=\"toc\"></div>\n <div className=\"doc-mobile-links\">\n <div className=\"doc-mobile-links-split\">\n <a href={demosLink} target=\"_blank\"><div className=\"doc-mobile-link doc-demos-link\">DEMOS</div></a>\n <a href=\"https://www.syncfusion.com/support/directtrac/incidents\" target=\"_blank\"><div className=\"doc-mobile-link doc-support-link\">SUPPORT</div></a>\n </div>\n <div className=\"doc-mobile-links-split\">\n <a href={`https://www.syncfusion.com/forums/${platformMapper[platform]}`} target=\"_blank\"><div className=\"doc-mobile-link doc-forum-link\">FORUM</div></a>\n <a href={`https://www.syncfusion.com/downloads/${isAspDocs ? platformMapper[platform] : 'essential-js2'}`} target=\"_blank\"><div className=\"doc-mobile-link doc-download-link\">DOWNLOAD</div></a>\n </div>\n </div>\n </div>\n {/* </Switch> */}\n {/* </BrowserRouter> */}\n </LeftPane>\n </SidebarComponent>\n <BodyContainer id=\"doc-body-cont\" className={mdContentClass}>\n <div id=\"bread-crumb-data\" data={breadCrumb}></div>\n <div id=\"doc-body-header\" className=\"e-view\">\n <div id=\"doc-bread-crumb\"></div>\n <div id=\"doc-mobile-toc\" className=\"doc-icons icon-toc\"></div>\n <div id=\"doc-mobile-search\" className=\"doc-icons icon-search doc-hide\"></div>\n <div className=\"doc-search-results-header\">Search results</div>\n <div id=\"doc-content-search\"></div>\n </div>\n <div id = \"is-release\" className=\"doc-hide\">\n <DropDownListComponent id=\"country-ddl\" iconCss='filter-drop' ref={(scope) => { this.dropObj = scope; }} index={this.index} fields={this.dropField} dataSource={this.filterData} change={this.onFilterReleaseNotes} created={this.onFilterCreated}/>\n </div>\n <ToastComponent ref={(toast) => { this.toastObjEmail = toast; }} id='toast_custom' cssClass={'toast-firchild'} position={this.cusPosition} newestOnTop={true} width={500} height={160} timeOut={0} created={this.toastObjEmailCreate = this.toastObjEmailCreate.bind(this)} open={this.toastObj = this.toastObj.bind(this)} close={this.closetoast = this.closetoast.bind(this)} ></ToastComponent>\n <div id=\"doc-mobile-content-search\" className=\"doc-hide e-view\"></div>\n <div className=\"doc-body-content\">\n <div id=\"md-content\" className=\"e-view\" onScroll={this.rightTocHighlight.bind(this)}>\n <div id=\"md-cnt\" dangerouslySetInnerHTML={{ __html: postNode.html.replace(/{:version:}/g, config.version).replace(/('|'|’){:nuget-version:}('|'|’)/g, config.nugetVersion)}} />\n <NavButtons id=\"nav-buttons\">\n <NavButton id=\"prev-button\">\n <a id=\"prev-link\"><div className=\"doc-icons icon-prev_icon nav-prev-icon\"></div><div className=\"nav-prev-text\">Previous</div></a>\n </NavButton>\n <NavButton id=\"next-button\">\n <a id=\"next-link\"><div className=\"doc-icons icon-next_icon nav-next-icon\"></div><div className=\"nav-next-text\">Next</div></a>\n </NavButton>\n </NavButtons>\n <div id=\"doc-footer\">\n {isNotIE ?\n <div id=\"footer-feedback\">\n <div className=\"feedback-ques\">\n <div className=\"feedback-ques-text\">Is this page helpful?</div>\n <div id=\"feedback-down\" className=\"feedback\" onClick={this.feedBackDown.bind(this)}>\n <div className=\"feedback-down-icon\"></div>\n <div className=\"feedback-down-text\">No</div>\n </div>\n <div id=\"feedback-up\" className=\"feedback\" onClick={this.feedBackUp.bind(this)}>\n <div className=\"feedback-up-icon\"></div>\n <div className=\"feedback-up-text\">Yes</div>\n </div>\n </div>\n </div>\n : <div id=\"ie\"></div>}\n <div id=\"footer-copyright\">\n <a id=\"copyright\" target=\"_blank\" href=\"http://www.syncfusion.com/copyright\">Copyright © 2001 - <span id=\"copyright-year\"> {new Date().getFullYear()}</span> Syncfusion Inc. All Rights Reserved</a>\n </div>\n </div>\n </div>\n <RightToc dangerouslySetInnerHTML={{ __html: header }}></RightToc>\n </div>\n <SidebarComponent id=\"doc-mobile-right-toc\" className=\"doc-hide doc-no-width\" isOpen={false} enableGestures={false} width=\"260px\" type=\"Over\" position=\"Right\" ref={Sidebar => this.rightSideBar = Sidebar}>\n <RightToc dangerouslySetInnerHTML={{ __html: header }}></RightToc>\n </SidebarComponent>\n <div id=\"doc-search-result\" className=\"doc-hide\"></div>\n </BodyContainer>\n </div>\n <div id=\"doc-overlay\" className=\"e-view\">\n <div className=\"doc-loading\">\n <svg className=\"circular\" height=\"40\" width=\"40\">\n <circle className=\"path\" cx=\"25\" cy=\"25\" r=\"20\" fill=\"none\" strokeWidth=\"6\" strokeMiterlimit=\"10\"></circle>\n </svg>\n </div>\n </div>\n {isNotIE ?\n <DialogComponent id=\"feedBackDlg\" buttons={[{\n click: () => {\n this.feedBackSubmit();\n },\n buttonModel: { content: 'SUBMIT', isPrimary: true, cssClass: 'e-primary feed-submit', disabled: true }\n },\n {\n click: () => {\n this.feedBackDialog.hide();\n },\n buttonModel: { content: 'CANCEL', cssClass: 'e-primary feed-cancel' }\n }]} visible={false} isModal={true} showCloseIcon={true} header='HELP US TO IMPROVE THIS PAGE' width='50%'\n close={this.resetFeedBackDown.bind(this)} ref={dialog => this.feedBackDialog = dialog} target='#doc-body'>\n <div className=\"feedback-down-response\">\n <div id=\"checkboxes\" className=\"multiselect\">\n\n <CheckBoxComponent id=\"one\" label=\"Correct inaccurate or outdated content\" change={this.feedBackCheck.bind(this)} />\n <br />\n\n <CheckBoxComponent id=\"two\" label=\"Improve illustrations or images\" change={this.feedBackCheck.bind(this)} />\n <br />\n \n <CheckBoxComponent id=\"three\" label=\"Fix typos or broken links\" change={this.feedBackCheck.bind(this)} />\n <br />\n \n <CheckBoxComponent id=\"four\" label=\"Add more information\" change={this.feedBackCheck.bind(this)} />\n <br />\n \n <CheckBoxComponent id=\"five\" label=\"Correct inaccurate or outdated code samples\" change={this.feedBackCheck.bind(this)} />\n <br />\n \n <CheckBoxComponent id=\"six\" label=\"Other\" change={this.feedBackCheck.bind(this)} />\n <br />\n \n </div>\n\n\n <input className=\"e-input email-input\" onFocus={this.floatFocus} onBlur={this.floatBlur} type=\"email\" placeholder=\"Email (optional)\" />\n\n <CheckBoxComponent ref={c => this.emailCheckBox = c} id=\"emailcheckbox\" label='I agree to the creation of a Syncfusion account in my name and to be contacted regarding this message. No further action will be taken. Please see our <a href=\"https://www.syncfusion.com/privacy\" target=\"_blank\"> Privacy policy.</a>' />\n\n <div id=\"email-error-message\" className=\"error-message doc-hide\"></div>\n </div>\n <div className=\"feedback-up-response doc-hide\">Thank you for your feedback and comments.We will rectify this as soon as possible!</div>\n </DialogComponent>\n : <div class=\"ie\"></div>}\n </div>\n </div>\n </Layout>\n );\n }\n \n shouldComponentUpdate() {\n // console.log(Testing);\n return false;\n }\n}\n\nfunction ESTTimeOffset() {\n var jan = new Date(today.getFullYear(), 0, 1);\n var jul = new Date(today.getFullYear(), 6, 1);\n return (Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset()) <= today.getTimezoneOffset() ? -4 : -5) * 3600000;\n}\n// create cookie method\nfunction createCookie(cookieName, cookieValue) {\n var d = new Date();\n if (cookieName != '_pageCount') {\n d.setMonth(d.getMonth() + 24);\n var expires = \"expires=\" + d.toUTCString();\n }\n document.cookie = cookieName + \"=\" + cookieValue + \"; \" + expires + \"domain=.syncfusion.com;path=/\";\n}\n//getcookie method\nfunction getCookie(cookieName) {\n var name = cookieName + \"=\";\n var cookies = document.cookie.split(';');\n for (var i = 0; i < cookies.length; i++) {\n var cookie = cookies[i];\n while (cookie.charAt(0) == ' ')\n cookie = cookie.substring(1);\n if (cookie.indexOf(name) == 0)\n return cookie.substring(name.length, cookie.length);\n }\n return \"\";\n}\n\nfunction nodeSelected(args) {\n if (!args.node.querySelector('.e-icons')) {\n var path = args.nodeData.id;\n if (urlCheckRegex.test(path)){\n window.open(path, '_blank');\n }\n else if (path.indexOf('/api/') !== -1) {\n var refPath = window.location.origin + prefix + path;\n window.open(refPath, '_blank');\n } else {\n navToPath(path);\n }\n }\n}\n\nfunction navToPath(navPath) {\n select('#doc-mobile-right-toc').classList.add('doc-hide');\n // var refPath = window.location.origin + prefix + navPath;\n // window.location.href = refPath;\n if(window.location.search && plat === 'React' && window.location.search.indexOf('type=tsx') !== -1){\n navPath = navPath + window.location.search.replace(/(\\?|\\&)no-cache=1/, '');\n }\n navigate(navPath);\n}\n\nArray.prototype.searchArray = function (array) {\n for (var i = 0; i < this.length; i++)\n if (this[i].indexOf(array) == 0)\n return i;\n return -1;\n};\n\nfunction expand(e) {\n var ele = e.element.querySelector('.toc-tree');\n if (e.name === 'expanding' && ele && ele.childElementCount === 0) {\n var data = tData;\n var tree = new TreeView({\n fields: { dataSource: data[ele.id], id: 'id', text: 'name', child: 'child' },\n nodeSelected: nodeSelected\n });\n tree.appendTo(ele);\n ele.addEventListener('mouseover', onhover);\n }\n}\n\n//Treeview multi line hover work around\nfunction onhover(event) {\n setHeight(event.target);\n}\n\nfunction setHeight(element) {\n if (element.classList.contains(\"e-treeview\")) {\n element = element.querySelector(\".e-node-focus\").querySelector(\".e-fullrow\");\n }\n else if (element.classList.contains(\"e-list-parent\")) {\n element = element.querySelector(\".e-fullrow\");\n }\n else if (element.classList.value != (\"e-fullrow\") && element.closest(\".e-list-item\")) {\n element = element.closest(\".e-list-item\").querySelector(\".e-fullrow\");\n }\n if (element.nextElementSibling)\n element.style.height = element.nextElementSibling.offsetHeight + \"px\";\n}\n\nfunction accClick(e) {\n var srcElem = e.originalEvent.srcElement;\n var isIcon = srcElem.classList.contains('e-icons');\n if (isApi && !isIcon && (srcElem.classList.contains('e-acrdn-header') || srcElem.classList.contains('e-acrdn-header-content'))) {\n var accItem = closest(srcElem, '.e-acrdn-item');\n var accIndElem = select('.toc-tree', accItem);\n if (accIndElem) {\n //API Index Selection\n var pathId = '/' + accIndElem.id;\n navToPath((ignoreApiSelect.indexOf(accIndElem.id) !== -1) ? (routes[routes.searchArray(pathId)]) : pathId);\n }\n } else {\n var ele = srcElem.id === 'acc-path' ? srcElem : srcElem.querySelector('#acc-path');\n if (e.name === 'clicked' && ele) {\n var aPath = ele.getAttribute('data');\n if (ele.classList.contains('doc-ref')) {\n if (isAspDocs && aPath === '/api') {\n window.open(aspApiMapper[plat], '_blank');\n } else {\n var refPath = window.location.origin + prefix + aPath;\n window.open(refPath, '_blank');\n }\n } else if (aPath) {\n navToPath(aPath);\n }\n }\n }\n}\nfunction renderToc(clearSelect) {\n let acc = new Accordion({\n expandMode: 'Single',\n expanding: expand,\n clicked: accClick,\n items: clearSelect ? window.toc.accData : aData,\n animation: { expand: { effect: 'SlideDown', duration: 0, easing: 'linear' }, collapse: { effect: 'SlideUp', duration: 400, easing: 'linear' } }\n });\n acc.appendTo('#toc');\n}\n\nfunction renderTab() {\n var tabs = document.getElementsByClassName('doc-tab');\n if (tabs.length) {\n for (var i = 0; i < tabs.length; i++) {\n let tab = new Tab({\n created: function () {\n var previewHeader = this.element.querySelectorAll('.e-tab-text span')[0];\n if (previewHeader.getAttribute('data-active') === 'true') {\n this.select(1);\n }\n createInnerTab(this.element);\n },\n selecting: tabSelecting,\n selected: function (args) {\n var previewContent = this.element.getElementsByClassName('e-content')[0].children[1];\n if (args.selectedIndex === 1 && !previewContent.getElementsByTagName('iframe').length) {\n var spanElement = args.selectedItem.querySelector('.e-tab-text span');\n\n // get iframe height\n var frameHeight = spanElement.getAttribute('data-height');\n var iframeHeight = frameHeight ? 'style=\"height:' + frameHeight + '\"' : '';\n\n // create iframe for current source\n var frameSrc = spanElement.getAttribute('data-sample');\n var iframe = '<iframe class=\"doc-sample-frame\" src=\"' + frameSrc + '\"' + iframeHeight + '></iframe>';\n // append iframe in preview tab\n previewContent.innerHTML = iframe;\n }\n }\n });\n tab.appendTo(tabs[i]);\n }\n } else {\n createInnerTab(document);\n }\n\n}\n\nfunction createInnerTab(element) {\n var innerTabs = element.getElementsByClassName('doc-inner-tab');\n for (var i = 0; i < innerTabs.length; i++) {\n let innerTab = new Tab({\n selecting: tabSelecting,\n created: function (e) {\n var jsxFile = innerTabs[i].querySelectorAll('[data-language=\"jsx\"]')[0];\n if ((plat === 'React' )&& jsxFile) {\n var tbitems = this.tbItem;\n for (var k = 0, len = tbitems.length; k < len; k++) {\n var item = tbitems[k];\n var file = (window.location.search === '?type=tsx') ? '.jsx' : '.tsx';\n if (item.textContent.indexOf(file) !== -1) {\n this.hideTab(k);\n }\n }\n }\n }\n });\n innerTab.appendTo(innerTabs[i]);\n var ele = createElement('div', { className: 'copy-tooltip', innerHTML: '<div class=\"e-icons copycode\"></div>' }); \n innerTabs[i].appendChild(ele);\n select('.copycode', innerTabs[i]).addEventListener('click', copyCode);\n var copiedTooltip = new Tooltip({\n content: 'Copied to clipboard ',\n position: 'BottomCenter',\n opensOn: 'Click',\n closeDelay: 500\n });\n copiedTooltip.appendTo(select('.copy-tooltip', innerTabs[i]));\n }\n}\nfunction tabSelecting(e) {\n if (e.isSwiped) {\n e.cancel = true;\n }\n}\n\nfunction copyCode(e) {\n var inTab = e.target.parentElement.parentElement;\n var copyElem = inTab.getElementsByClassName('gatsby-highlight')[inTab.ej2_instances[0].selectedItem];\n var textArea = createElement('textArea');\n textArea.textContent = copyElem.textContent.trim();\n document.body.appendChild(textArea);\n textArea.select();\n document.execCommand('copy');\n detach(textArea);\n (select('.copy-tooltip', inTab)).ej2_instances[0].close();\n}\n\nfunction gcseCallback() {\n // if (document.readyState !== 'complete') {\n // return google.setOnLoadCallback(gcseCallback, true);\n // }\n setInt = setInterval(() => {\n var searchInput = select('#gsc-i-id1');\n if (searchInput) {\n searchInput.placeholder = 'Search by content';\n var gscSearchButton = select('button.gsc-search-button');\n var svgButton = select('svg', gscSearchButton);\n if (svgButton) {\n detach(svgButton);\n }\n var docSearchIcon = createElement('div', { id: 'doc-content-search-icon' });\n gscSearchButton.appendChild(docSearchIcon);\n gscSearchButton.addEventListener('click', () => {\n var searchInputEle = select('#doc-content-search input') || select('#doc-mobile-content-search input');\n if (searchInputEle.value && gcseInit) {\n gcseSearch();\n }\n })\n var searchInputEle = select('#doc-content-search input') || select('#doc-mobile-content-search input');\n searchInputEle.addEventListener('keyup', (e) => {\n if (e.keyCode === 13 && e.srcElement.value && gcseInit) {\n gcseSearch();\n }\n });\n clearInterval(setInt);\n }\n }, 100);\n};\n\nfunction createCustomSearch(gcsecx) {\n if (!gcsecx.length) {\n return '';\n }\n\n var searchBoxDiv = select(isMobile ? '#doc-mobile-content-search' : '#doc-content-search');\n var searchResultDiv = select('#doc-search-result');\n\n searchBoxDiv.innerHTML = '<gcse:searchbox enableAutoComplete=\"true\"></gcse:searchbox>';\n searchResultDiv.innerHTML = '<gcse:searchresults></gcse:searchresults>';\n // if (isMobile) {\n // select('#doc-mobile-content-search').innerHTML = select('#doc-content-search').innerHTML;\n // select('#doc-content-search').innerHTML = '';\n // }\n if (searchBoxDiv.childNodes[0].tagName === 'GCSE:SEARCHBOX' && searchResultDiv.childNodes[0].tagName === 'GCSE:SEARCHRESULTS') {\n window.__gcse = {\n callback: gcseCallback\n };\n (function () {\n var gcse = document.createElement('script');\n gcse.type = 'text/javascript';\n gcse.async = true;\n gcse.src = 'https://cse.google.com/cse.js?cx=' + gcsecx;\n var s = document.getElementsByTagName('script')[0];\n s.parentNode.insertBefore(gcse, s);\n })();\n }\n}\n\nexport function urlCheck(path) {\n return urlCheckRegex.test(path);\n}\nconst RightToc = styled.div`\n`\n\nconst NavButtons = styled.div`\n`\n\nconst NavButton = styled.div`\n`\n\nconst BodyContainer = styled.div`\n overflow: auto;\n overflow-x: hidden;\n justify-self: center;\n width: 100%;\n padding: ${props => props.theme.sitePadding};\n @media screen and (max-width: 600px) {\n order: 2;\n }\n \n & > div {\n max-width: ${props => props.theme.contentWidthLaptop};\n margin: auto;\n }\n \n & > h1 {\n color: ${props => props.theme.accentDark};\n }\n`\n\nconst HeaderContainer = styled.div`\n height: 60px;\n width: 100%;\n box-shadow: 0 8px 11px -6px rgba(0, 0, 0, 0.12);\n z-index: 1001;\n opacity: 100;\n`\n\nconst LeftPane = styled.div`\n overflow: auto;\n overflow-x: hidden;\n border-right: 1px solid #ddd;\n background: #FAFAFA;\n @media screen and (max-width: 600px) {\n overflow: inherit;\n }\n`\n\n/* eslint no-undef: \"off\"*/\nexport const pageQuery = graphql`\n query LayoutBySlug($slug: String!) {\n allPostTitles: allMarkdownRemark{\n edges {\n node {\n fields {\n slug\n gcse\n }\n }\n }\n }\n postBySlug: markdownRemark(fields: { slug: { eq: $slug } }) {\n html\n timeToRead\n excerpt\n fields {\n slug\n gcse\n }\n } \n }\n`;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n while (len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\nfunction noop() {}\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\nprocess.listeners = function (name) {\n return [];\n};\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\nprocess.cwd = function () {\n return '/';\n};\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function () {\n return 0;\n};","/*\n * __ ___\n * _____/ /___ __/ (_)____\n * / ___/ __/ / / / / / ___/\n * (__ ) /_/ /_/ / / (__ )\n * /____/\\__/\\__, /_/_/____/\n * /____/\n *\n * light - weight css preprocessor @licence MIT\n */\n(function (factory) {\n /* eslint-disable */\n typeof exports === 'object' && typeof module !== 'undefined' ? module['exports'] = factory(null) : typeof define === 'function' && define['amd'] ? define(factory(null)) : window['stylis'] = factory(null);\n})(/** @param {*=} options */function factory(options) {\n /* eslint-disable */\n\n 'use strict';\n\n /**\n * Notes\n *\n * The ['<method name>'] pattern is used to support closure compiler\n * the jsdoc signatures are also used to the same effect\n *\n * ----\n *\n * int + int + int === n4 [faster]\n *\n * vs\n *\n * int === n1 && int === n2 && int === n3\n *\n * ----\n *\n * switch (int) { case ints...} [faster]\n *\n * vs\n *\n * if (int == 1 && int === 2 ...)\n *\n * ----\n *\n * The (first*n1 + second*n2 + third*n3) format used in the property parser\n * is a simple way to hash the sequence of characters\n * taking into account the index they occur in\n * since any number of 3 character sequences could produce duplicates.\n *\n * On the other hand sequences that are directly tied to the index of the character\n * resolve a far more accurate measure, it's also faster\n * to evaluate one condition in a switch statement\n * than three in an if statement regardless of the added math.\n *\n * This allows the vendor prefixer to be both small and fast.\n */\n var nullptn = /^\\0+/g; /* matches leading null characters */\n var formatptn = /[\\0\\r\\f]/g; /* matches new line, null and formfeed characters */\n var colonptn = /: */g; /* splits animation rules */\n var cursorptn = /zoo|gra/; /* assert cursor varient */\n var transformptn = /([,: ])(transform)/g; /* vendor prefix transform, older webkit */\n var animationptn = /,+\\s*(?![^(]*[)])/g; /* splits multiple shorthand notation animations */\n var propertiesptn = / +\\s*(?![^(]*[)])/g; /* animation properties */\n var elementptn = / *[\\0] */g; /* selector elements */\n var selectorptn = /,\\r+?/g; /* splits selectors */\n var andptn = /([\\t\\r\\n ])*\\f?&/g; /* match & */\n var escapeptn = /:global\\(((?:[^\\(\\)\\[\\]]*|\\[.*\\]|\\([^\\(\\)]*\\))*)\\)/g; /* matches :global(.*) */\n var invalidptn = /\\W+/g; /* removes invalid characters from keyframes */\n var keyframeptn = /@(k\\w+)\\s*(\\S*)\\s*/; /* matches @keyframes $1 */\n var plcholdrptn = /::(place)/g; /* match ::placeholder varient */\n var readonlyptn = /:(read-only)/g; /* match :read-only varient */\n var beforeptn = /\\s+(?=[{\\];=:>])/g; /* matches \\s before ] ; = : */\n var afterptn = /([[}=:>])\\s+/g; /* matches \\s after characters [ } = : */\n var tailptn = /(\\{[^{]+?);(?=\\})/g; /* matches tail semi-colons ;} */\n var whiteptn = /\\s{2,}/g; /* matches repeating whitespace */\n var pseudoptn = /([^\\(])(:+) */g; /* pseudo element */\n var writingptn = /[svh]\\w+-[tblr]{2}/; /* match writing mode property values */\n var gradientptn = /([\\w-]+t\\()/g; /* match *gradient property */\n var supportsptn = /\\(\\s*(.*)\\s*\\)/g; /* match supports (groups) */\n var propertyptn = /([\\s\\S]*?);/g; /* match properties leading semicolon */\n var selfptn = /-self|flex-/g; /* match flex- and -self in align-self: flex-*; */\n var pseudofmt = /[^]*?(:[rp][el]a[\\w-]+)[^]*/; /* extrats :readonly or :placholder from selector */\n var trimptn = /[ \\t]+$/; /* match tail whitspace */\n var dimensionptn = /stretch|:\\s*\\w+\\-(?:conte|avail)/; /* match max/min/fit-content, fill-available */\n var imgsrcptn = /([^-])(image-set\\()/;\n\n /* vendors */\n var webkit = '-webkit-';\n var moz = '-moz-';\n var ms = '-ms-';\n\n /* character codes */\n var SEMICOLON = 59; /* ; */\n var CLOSEBRACES = 125; /* } */\n var OPENBRACES = 123; /* { */\n var OPENPARENTHESES = 40; /* ( */\n var CLOSEPARENTHESES = 41; /* ) */\n var OPENBRACKET = 91; /* [ */\n var CLOSEBRACKET = 93; /* ] */\n var NEWLINE = 10; /* \\n */\n var CARRIAGE = 13; /* \\r */\n var TAB = 9; /* \\t */\n var AT = 64; /* @ */\n var SPACE = 32; /* */\n var AND = 38; /* & */\n var DASH = 45; /* - */\n var UNDERSCORE = 95; /* _ */\n var STAR = 42; /* * */\n var COMMA = 44; /* , */\n var COLON = 58; /* : */\n var SINGLEQUOTE = 39; /* ' */\n var DOUBLEQUOTE = 34; /* \" */\n var FOWARDSLASH = 47; /* / */\n var GREATERTHAN = 62; /* > */\n var PLUS = 43; /* + */\n var TILDE = 126; /* ~ */\n var NULL = 0; /* \\0 */\n var FORMFEED = 12; /* \\f */\n var VERTICALTAB = 11; /* \\v */\n\n /* special identifiers */\n var KEYFRAME = 107; /* k */\n var MEDIA = 109; /* m */\n var SUPPORTS = 115; /* s */\n var PLACEHOLDER = 112; /* p */\n var READONLY = 111; /* o */\n var IMPORT = 105; /* <at>i */\n var CHARSET = 99; /* <at>c */\n var DOCUMENT = 100; /* <at>d */\n var PAGE = 112; /* <at>p */\n\n var column = 1; /* current column */\n var line = 1; /* current line numebr */\n var pattern = 0; /* :pattern */\n\n var cascade = 1; /* #id h1 h2 vs h1#id h2#id */\n var prefix = 1; /* vendor prefix */\n var escape = 1; /* escape :global() pattern */\n var compress = 0; /* compress output */\n var semicolon = 0; /* no/semicolon option */\n var preserve = 0; /* preserve empty selectors */\n\n /* empty reference */\n var array = [];\n\n /* plugins */\n var plugins = [];\n var plugged = 0;\n var should = null;\n\n /* plugin context */\n var POSTS = -2;\n var PREPS = -1;\n var UNKWN = 0;\n var PROPS = 1;\n var BLCKS = 2;\n var ATRUL = 3;\n\n /* plugin newline context */\n var unkwn = 0;\n\n /* keyframe animation */\n var keyed = 1;\n var key = '';\n\n /* selector namespace */\n var nscopealt = '';\n var nscope = '';\n\n /**\n * Compile\n *\n * @param {Array<string>} parent\n * @param {Array<string>} current\n * @param {string} body\n * @param {number} id\n * @param {number} depth\n * @return {string}\n */\n function compile(parent, current, body, id, depth) {\n var bracket = 0; /* brackets [] */\n var comment = 0; /* comments /* // or /* */\n var parentheses = 0; /* functions () */\n var quote = 0; /* quotes '', \"\" */\n\n var first = 0; /* first character code */\n var second = 0; /* second character code */\n var code = 0; /* current character code */\n var tail = 0; /* previous character code */\n var trail = 0; /* character before previous code */\n var peak = 0; /* previous non-whitespace code */\n\n var counter = 0; /* count sequence termination */\n var context = 0; /* track current context */\n var atrule = 0; /* track @at-rule context */\n var pseudo = 0; /* track pseudo token index */\n var caret = 0; /* current character index */\n var format = 0; /* control character formating context */\n var insert = 0; /* auto semicolon insertion */\n var invert = 0; /* inverted selector pattern */\n var length = 0; /* generic length address */\n var eof = body.length; /* end of file(length) */\n var eol = eof - 1; /* end of file(characters) */\n\n var char = ''; /* current character */\n var chars = ''; /* current buffer of characters */\n var child = ''; /* next buffer of characters */\n var out = ''; /* compiled body */\n var children = ''; /* compiled children */\n var flat = ''; /* compiled leafs */\n var selector; /* generic selector address */\n var result; /* generic address */\n\n // ...build body\n while (caret < eof) {\n code = body.charCodeAt(caret);\n\n // eof varient\n if (caret === eol) {\n // last character + noop context, add synthetic padding for noop context to terminate\n if (comment + quote + parentheses + bracket !== 0) {\n if (comment !== 0) {\n code = comment === FOWARDSLASH ? NEWLINE : FOWARDSLASH;\n }\n quote = parentheses = bracket = 0;\n eof++;\n eol++;\n }\n }\n if (comment + quote + parentheses + bracket === 0) {\n // eof varient\n if (caret === eol) {\n if (format > 0) {\n chars = chars.replace(formatptn, '');\n }\n if (chars.trim().length > 0) {\n switch (code) {\n case SPACE:\n case TAB:\n case SEMICOLON:\n case CARRIAGE:\n case NEWLINE:\n {\n break;\n }\n default:\n {\n chars += body.charAt(caret);\n }\n }\n code = SEMICOLON;\n }\n }\n\n // auto semicolon insertion\n if (insert === 1) {\n switch (code) {\n // false flags\n case OPENBRACES:\n case CLOSEBRACES:\n case SEMICOLON:\n case DOUBLEQUOTE:\n case SINGLEQUOTE:\n case OPENPARENTHESES:\n case CLOSEPARENTHESES:\n case COMMA:\n {\n insert = 0;\n }\n // ignore\n case TAB:\n case CARRIAGE:\n case NEWLINE:\n case SPACE:\n {\n break;\n }\n // valid\n default:\n {\n insert = 0;\n length = caret;\n first = code;\n caret--;\n code = SEMICOLON;\n while (length < eof) {\n switch (body.charCodeAt(length++)) {\n case NEWLINE:\n case CARRIAGE:\n case SEMICOLON:\n {\n ++caret;\n code = first;\n length = eof;\n break;\n }\n case COLON:\n {\n if (format > 0) {\n ++caret;\n code = first;\n }\n }\n case OPENBRACES:\n {\n length = eof;\n }\n }\n }\n }\n }\n }\n\n // token varient\n switch (code) {\n case OPENBRACES:\n {\n chars = chars.trim();\n first = chars.charCodeAt(0);\n counter = 1;\n length = ++caret;\n while (caret < eof) {\n switch (code = body.charCodeAt(caret)) {\n case OPENBRACES:\n {\n counter++;\n break;\n }\n case CLOSEBRACES:\n {\n counter--;\n break;\n }\n case FOWARDSLASH:\n {\n switch (second = body.charCodeAt(caret + 1)) {\n // /*, //\n case STAR:\n case FOWARDSLASH:\n {\n caret = delimited(second, caret, eol, body);\n }\n }\n break;\n }\n // given \"[\" === 91 & \"]\" === 93 hence forth 91 + 1 + 1 === 93\n case OPENBRACKET:\n {\n code++;\n }\n // given \"(\" === 40 & \")\" === 41 hence forth 40 + 1 === 41\n case OPENPARENTHESES:\n {\n code++;\n }\n // quote tail delimiter is identical to the head delimiter hence noop,\n // fallthrough clauses have been shifted to the correct tail delimiter\n case DOUBLEQUOTE:\n case SINGLEQUOTE:\n {\n while (caret++ < eol) {\n if (body.charCodeAt(caret) === code) {\n break;\n }\n }\n }\n }\n if (counter === 0) {\n break;\n }\n caret++;\n }\n child = body.substring(length, caret);\n if (first === NULL) {\n first = (chars = chars.replace(nullptn, '').trim()).charCodeAt(0);\n }\n switch (first) {\n // @at-rule\n case AT:\n {\n if (format > 0) {\n chars = chars.replace(formatptn, '');\n }\n second = chars.charCodeAt(1);\n switch (second) {\n case DOCUMENT:\n case MEDIA:\n case SUPPORTS:\n case DASH:\n {\n selector = current;\n break;\n }\n default:\n {\n selector = array;\n }\n }\n child = compile(current, selector, child, second, depth + 1);\n length = child.length;\n\n // preserve empty @at-rule\n if (preserve > 0 && length === 0) {\n length = chars.length;\n }\n\n // execute plugins, @at-rule context\n if (plugged > 0) {\n selector = select(array, chars, invert);\n result = proxy(ATRUL, child, selector, current, line, column, length, second, depth, id);\n chars = selector.join('');\n if (result !== void 0) {\n if ((length = (child = result.trim()).length) === 0) {\n second = 0;\n child = '';\n }\n }\n }\n if (length > 0) {\n switch (second) {\n case SUPPORTS:\n {\n chars = chars.replace(supportsptn, supports);\n }\n case DOCUMENT:\n case MEDIA:\n case DASH:\n {\n child = chars + '{' + child + '}';\n break;\n }\n case KEYFRAME:\n {\n chars = chars.replace(keyframeptn, '$1 $2' + (keyed > 0 ? key : ''));\n child = chars + '{' + child + '}';\n if (prefix === 1 || prefix === 2 && vendor('@' + child, 3)) {\n child = '@' + webkit + child + '@' + child;\n } else {\n child = '@' + child;\n }\n break;\n }\n default:\n {\n child = chars + child;\n if (id === PAGE) {\n child = (out += child, '');\n }\n }\n }\n } else {\n child = '';\n }\n break;\n }\n // selector\n default:\n {\n child = compile(current, select(current, chars, invert), child, id, depth + 1);\n }\n }\n children += child;\n\n // reset\n context = 0;\n insert = 0;\n pseudo = 0;\n format = 0;\n invert = 0;\n atrule = 0;\n chars = '';\n child = '';\n code = body.charCodeAt(++caret);\n break;\n }\n case CLOSEBRACES:\n case SEMICOLON:\n {\n chars = (format > 0 ? chars.replace(formatptn, '') : chars).trim();\n if ((length = chars.length) > 1) {\n // monkey-patch missing colon\n if (pseudo === 0) {\n first = chars.charCodeAt(0);\n\n // first character is a letter or dash, buffer has a space character\n if (first === DASH || first > 96 && first < 123) {\n length = (chars = chars.replace(' ', ':')).length;\n }\n }\n\n // execute plugins, property context\n if (plugged > 0) {\n if ((result = proxy(PROPS, chars, current, parent, line, column, out.length, id, depth, id)) !== void 0) {\n if ((length = (chars = result.trim()).length) === 0) {\n chars = '\\0\\0';\n }\n }\n }\n first = chars.charCodeAt(0);\n second = chars.charCodeAt(1);\n switch (first) {\n case NULL:\n {\n break;\n }\n case AT:\n {\n if (second === IMPORT || second === CHARSET) {\n flat += chars + body.charAt(caret);\n break;\n }\n }\n default:\n {\n if (chars.charCodeAt(length - 1) === COLON) {\n break;\n }\n out += property(chars, first, second, chars.charCodeAt(2));\n }\n }\n }\n\n // reset\n context = 0;\n insert = 0;\n pseudo = 0;\n format = 0;\n invert = 0;\n chars = '';\n code = body.charCodeAt(++caret);\n break;\n }\n }\n }\n\n // parse characters\n switch (code) {\n case CARRIAGE:\n case NEWLINE:\n {\n // auto insert semicolon\n if (comment + quote + parentheses + bracket + semicolon === 0) {\n // valid non-whitespace characters that\n // may precede a newline\n switch (peak) {\n case CLOSEPARENTHESES:\n case SINGLEQUOTE:\n case DOUBLEQUOTE:\n case AT:\n case TILDE:\n case GREATERTHAN:\n case STAR:\n case PLUS:\n case FOWARDSLASH:\n case DASH:\n case COLON:\n case COMMA:\n case SEMICOLON:\n case OPENBRACES:\n case CLOSEBRACES:\n {\n break;\n }\n default:\n {\n // current buffer has a colon\n if (pseudo > 0) {\n insert = 1;\n }\n }\n }\n }\n\n // terminate line comment\n if (comment === FOWARDSLASH) {\n comment = 0;\n } else if (cascade + context === 0 && id !== KEYFRAME && chars.length > 0) {\n format = 1;\n chars += '\\0';\n }\n\n // execute plugins, newline context\n if (plugged * unkwn > 0) {\n proxy(UNKWN, chars, current, parent, line, column, out.length, id, depth, id);\n }\n\n // next line, reset column position\n column = 1;\n line++;\n break;\n }\n case SEMICOLON:\n case CLOSEBRACES:\n {\n if (comment + quote + parentheses + bracket === 0) {\n column++;\n break;\n }\n }\n default:\n {\n // increment column position\n column++;\n\n // current character\n char = body.charAt(caret);\n\n // remove comments, escape functions, strings, attributes and prepare selectors\n switch (code) {\n case TAB:\n case SPACE:\n {\n if (quote + bracket + comment === 0) {\n switch (tail) {\n case COMMA:\n case COLON:\n case TAB:\n case SPACE:\n {\n char = '';\n break;\n }\n default:\n {\n if (code !== SPACE) {\n char = ' ';\n }\n }\n }\n }\n break;\n }\n // escape breaking control characters\n case NULL:\n {\n char = '\\\\0';\n break;\n }\n case FORMFEED:\n {\n char = '\\\\f';\n break;\n }\n case VERTICALTAB:\n {\n char = '\\\\v';\n break;\n }\n // &\n case AND:\n {\n // inverted selector pattern i.e html &\n if (quote + comment + bracket === 0 && cascade > 0) {\n invert = 1;\n format = 1;\n char = '\\f' + char;\n }\n break;\n }\n // ::p<l>aceholder, l\n // :read-on<l>y, l\n case 108:\n {\n if (quote + comment + bracket + pattern === 0 && pseudo > 0) {\n switch (caret - pseudo) {\n // ::placeholder\n case 2:\n {\n if (tail === PLACEHOLDER && body.charCodeAt(caret - 3) === COLON) {\n pattern = tail;\n }\n }\n // :read-only\n case 8:\n {\n if (trail === READONLY) {\n pattern = trail;\n }\n }\n }\n }\n break;\n }\n // :<pattern>\n case COLON:\n {\n if (quote + comment + bracket === 0) {\n pseudo = caret;\n }\n break;\n }\n // selectors\n case COMMA:\n {\n if (comment + parentheses + quote + bracket === 0) {\n format = 1;\n char += '\\r';\n }\n break;\n }\n // quotes\n case DOUBLEQUOTE:\n case SINGLEQUOTE:\n {\n if (comment === 0) {\n quote = quote === code ? 0 : quote === 0 ? code : quote;\n }\n break;\n }\n // attributes\n case OPENBRACKET:\n {\n if (quote + comment + parentheses === 0) {\n bracket++;\n }\n break;\n }\n case CLOSEBRACKET:\n {\n if (quote + comment + parentheses === 0) {\n bracket--;\n }\n break;\n }\n // functions\n case CLOSEPARENTHESES:\n {\n if (quote + comment + bracket === 0) {\n parentheses--;\n }\n break;\n }\n case OPENPARENTHESES:\n {\n if (quote + comment + bracket === 0) {\n if (context === 0) {\n switch (tail * 2 + trail * 3) {\n // :matches\n case 533:\n {\n break;\n }\n // :global, :not, :nth-child etc...\n default:\n {\n counter = 0;\n context = 1;\n }\n }\n }\n parentheses++;\n }\n break;\n }\n case AT:\n {\n if (comment + parentheses + quote + bracket + pseudo + atrule === 0) {\n atrule = 1;\n }\n break;\n }\n // block/line comments\n case STAR:\n case FOWARDSLASH:\n {\n if (quote + bracket + parentheses > 0) {\n break;\n }\n switch (comment) {\n // initialize line/block comment context\n case 0:\n {\n switch (code * 2 + body.charCodeAt(caret + 1) * 3) {\n // //\n case 235:\n {\n comment = FOWARDSLASH;\n break;\n }\n // /*\n case 220:\n {\n length = caret;\n comment = STAR;\n break;\n }\n }\n break;\n }\n // end block comment context\n case STAR:\n {\n if (code === FOWARDSLASH && tail === STAR && length + 2 !== caret) {\n // /*<!> ... */, !\n if (body.charCodeAt(length + 2) === 33) {\n out += body.substring(length, caret + 1);\n }\n char = '';\n comment = 0;\n }\n }\n }\n }\n }\n\n // ignore comment blocks\n if (comment === 0) {\n // aggressive isolation mode, divide each individual selector\n // including selectors in :not function but excluding selectors in :global function\n if (cascade + quote + bracket + atrule === 0 && id !== KEYFRAME && code !== SEMICOLON) {\n switch (code) {\n case COMMA:\n case TILDE:\n case GREATERTHAN:\n case PLUS:\n case CLOSEPARENTHESES:\n case OPENPARENTHESES:\n {\n if (context === 0) {\n // outside of an isolated context i.e nth-child(<...>)\n switch (tail) {\n case TAB:\n case SPACE:\n case NEWLINE:\n case CARRIAGE:\n {\n char = char + '\\0';\n break;\n }\n default:\n {\n char = '\\0' + char + (code === COMMA ? '' : '\\0');\n }\n }\n format = 1;\n } else {\n // within an isolated context, sleep untill it's terminated\n switch (code) {\n case OPENPARENTHESES:\n {\n // :globa<l>(\n if (pseudo + 7 === caret && tail === 108) {\n pseudo = 0;\n }\n context = ++counter;\n break;\n }\n case CLOSEPARENTHESES:\n {\n if ((context = --counter) === 0) {\n format = 1;\n char += '\\0';\n }\n break;\n }\n }\n }\n break;\n }\n case TAB:\n case SPACE:\n {\n switch (tail) {\n case NULL:\n case OPENBRACES:\n case CLOSEBRACES:\n case SEMICOLON:\n case COMMA:\n case FORMFEED:\n case TAB:\n case SPACE:\n case NEWLINE:\n case CARRIAGE:\n {\n break;\n }\n default:\n {\n // ignore in isolated contexts\n if (context === 0) {\n format = 1;\n char += '\\0';\n }\n }\n }\n }\n }\n }\n\n // concat buffer of characters\n chars += char;\n\n // previous non-whitespace character code\n if (code !== SPACE && code !== TAB) {\n peak = code;\n }\n }\n }\n }\n\n // tail character codes\n trail = tail;\n tail = code;\n\n // visit every character\n caret++;\n }\n length = out.length;\n\n // preserve empty selector\n if (preserve > 0) {\n if (length === 0 && children.length === 0 && current[0].length === 0 === false) {\n if (id !== MEDIA || current.length === 1 && (cascade > 0 ? nscopealt : nscope) === current[0]) {\n length = current.join(',').length + 2;\n }\n }\n }\n if (length > 0) {\n // cascade isolation mode?\n selector = cascade === 0 && id !== KEYFRAME ? isolate(current) : current;\n\n // execute plugins, block context\n if (plugged > 0) {\n result = proxy(BLCKS, out, selector, parent, line, column, length, id, depth, id);\n if (result !== void 0 && (out = result).length === 0) {\n return flat + out + children;\n }\n }\n out = selector.join(',') + '{' + out + '}';\n if (prefix * pattern !== 0) {\n if (prefix === 2 && !vendor(out, 2)) pattern = 0;\n switch (pattern) {\n // ::read-only\n case READONLY:\n {\n out = out.replace(readonlyptn, ':' + moz + '$1') + out;\n break;\n }\n // ::placeholder\n case PLACEHOLDER:\n {\n out = out.replace(plcholdrptn, '::' + webkit + 'input-$1') + out.replace(plcholdrptn, '::' + moz + '$1') + out.replace(plcholdrptn, ':' + ms + 'input-$1') + out;\n break;\n }\n }\n pattern = 0;\n }\n }\n return flat + out + children;\n }\n\n /**\n * Select\n *\n * @param {Array<string>} parent\n * @param {string} current\n * @param {number} invert\n * @return {Array<string>}\n */\n function select(parent, current, invert) {\n var selectors = current.trim().split(selectorptn);\n var out = selectors;\n var length = selectors.length;\n var l = parent.length;\n switch (l) {\n // 0-1 parent selectors\n case 0:\n case 1:\n {\n for (var i = 0, selector = l === 0 ? '' : parent[0] + ' '; i < length; ++i) {\n out[i] = scope(selector, out[i], invert, l).trim();\n }\n break;\n }\n // >2 parent selectors, nested\n default:\n {\n for (var i = 0, j = 0, out = []; i < length; ++i) {\n for (var k = 0; k < l; ++k) {\n out[j++] = scope(parent[k] + ' ', selectors[i], invert, l).trim();\n }\n }\n }\n }\n return out;\n }\n\n /**\n * Scope\n *\n * @param {string} parent\n * @param {string} current\n * @param {number} invert\n * @param {number} level\n * @return {string}\n */\n function scope(parent, current, invert, level) {\n var selector = current;\n var code = selector.charCodeAt(0);\n\n // trim leading whitespace\n if (code < 33) {\n code = (selector = selector.trim()).charCodeAt(0);\n }\n switch (code) {\n // &\n case AND:\n {\n switch (cascade + level) {\n case 0:\n case 1:\n {\n if (parent.trim().length === 0) {\n break;\n }\n }\n default:\n {\n return selector.replace(andptn, '$1' + parent.trim());\n }\n }\n break;\n }\n // :\n case COLON:\n {\n switch (selector.charCodeAt(1)) {\n // g in :global\n case 103:\n {\n if (escape > 0 && cascade > 0) {\n return selector.replace(escapeptn, '$1').replace(andptn, '$1' + nscope);\n }\n break;\n }\n default:\n {\n // :hover\n return parent.trim() + selector.replace(andptn, '$1' + parent.trim());\n }\n }\n }\n default:\n {\n // html &\n if (invert * cascade > 0 && selector.indexOf('\\f') > 0) {\n return selector.replace(andptn, (parent.charCodeAt(0) === COLON ? '' : '$1') + parent.trim());\n }\n }\n }\n return parent + selector;\n }\n\n /**\n * Property\n *\n * @param {string} input\n * @param {number} first\n * @param {number} second\n * @param {number} third\n * @return {string}\n */\n function property(input, first, second, third) {\n var index = 0;\n var out = input + ';';\n var hash = first * 2 + second * 3 + third * 4;\n var cache;\n\n // animation: a, n, i characters\n if (hash === 944) {\n return animation(out);\n } else if (prefix === 0 || prefix === 2 && !vendor(out, 1)) {\n return out;\n }\n\n // vendor prefix\n switch (hash) {\n // text-decoration/text-size-adjust/text-shadow/text-align/text-transform: t, e, x\n case 1015:\n {\n // text-shadow/text-align/text-transform, a\n return out.charCodeAt(10) === 97 ? webkit + out + out : out;\n }\n // filter/fill f, i, l\n case 951:\n {\n // filter, t\n return out.charCodeAt(3) === 116 ? webkit + out + out : out;\n }\n // color/column, c, o, l\n case 963:\n {\n // column, n\n return out.charCodeAt(5) === 110 ? webkit + out + out : out;\n }\n // box-decoration-break, b, o, x\n case 1009:\n {\n if (out.charCodeAt(4) !== 100) {\n break;\n }\n }\n // mask, m, a, s\n // clip-path, c, l, i\n case 969:\n case 942:\n {\n return webkit + out + out;\n }\n // appearance: a, p, p\n case 978:\n {\n return webkit + out + moz + out + out;\n }\n // hyphens: h, y, p\n // user-select: u, s, e\n case 1019:\n case 983:\n {\n return webkit + out + moz + out + ms + out + out;\n }\n // background/backface-visibility, b, a, c\n case 883:\n {\n // backface-visibility, -\n if (out.charCodeAt(8) === DASH) {\n return webkit + out + out;\n }\n\n // image-set(...)\n if (out.indexOf('image-set(', 11) > 0) {\n return out.replace(imgsrcptn, '$1' + webkit + '$2') + out;\n }\n return out;\n }\n // flex: f, l, e\n case 932:\n {\n if (out.charCodeAt(4) === DASH) {\n switch (out.charCodeAt(5)) {\n // flex-grow, g\n case 103:\n {\n return webkit + 'box-' + out.replace('-grow', '') + webkit + out + ms + out.replace('grow', 'positive') + out;\n }\n // flex-shrink, s\n case 115:\n {\n return webkit + out + ms + out.replace('shrink', 'negative') + out;\n }\n // flex-basis, b\n case 98:\n {\n return webkit + out + ms + out.replace('basis', 'preferred-size') + out;\n }\n }\n }\n return webkit + out + ms + out + out;\n }\n // order: o, r, d\n case 964:\n {\n return webkit + out + ms + 'flex' + '-' + out + out;\n }\n // justify-items/justify-content, j, u, s\n case 1023:\n {\n // justify-content, c\n if (out.charCodeAt(8) !== 99) {\n break;\n }\n cache = out.substring(out.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n return webkit + 'box-pack' + cache + webkit + out + ms + 'flex-pack' + cache + out;\n }\n // cursor, c, u, r\n case 1005:\n {\n return cursorptn.test(out) ? out.replace(colonptn, ':' + webkit) + out.replace(colonptn, ':' + moz) + out : out;\n }\n // writing-mode, w, r, i\n case 1000:\n {\n cache = out.substring(13).trim();\n index = cache.indexOf('-') + 1;\n switch (cache.charCodeAt(0) + cache.charCodeAt(index)) {\n // vertical-lr\n case 226:\n {\n cache = out.replace(writingptn, 'tb');\n break;\n }\n // vertical-rl\n case 232:\n {\n cache = out.replace(writingptn, 'tb-rl');\n break;\n }\n // horizontal-tb\n case 220:\n {\n cache = out.replace(writingptn, 'lr');\n break;\n }\n default:\n {\n return out;\n }\n }\n return webkit + out + ms + cache + out;\n }\n // position: sticky\n case 1017:\n {\n if (out.indexOf('sticky', 9) === -1) {\n return out;\n }\n }\n // display(flex/inline-flex/inline-box): d, i, s\n case 975:\n {\n index = (out = input).length - 10;\n cache = (out.charCodeAt(index) === 33 ? out.substring(0, index) : out).substring(input.indexOf(':', 7) + 1).trim();\n switch (hash = cache.charCodeAt(0) + (cache.charCodeAt(7) | 0)) {\n // inline-\n case 203:\n {\n // inline-box\n if (cache.charCodeAt(8) < 111) {\n break;\n }\n }\n // inline-box/sticky\n case 115:\n {\n out = out.replace(cache, webkit + cache) + ';' + out;\n break;\n }\n // inline-flex\n // flex\n case 207:\n case 102:\n {\n out = out.replace(cache, webkit + (hash > 102 ? 'inline-' : '') + 'box') + ';' + out.replace(cache, webkit + cache) + ';' + out.replace(cache, ms + cache + 'box') + ';' + out;\n }\n }\n return out + ';';\n }\n // align-items, align-center, align-self: a, l, i, -\n case 938:\n {\n if (out.charCodeAt(5) === DASH) {\n switch (out.charCodeAt(6)) {\n // align-items, i\n case 105:\n {\n cache = out.replace('-items', '');\n return webkit + out + webkit + 'box-' + cache + ms + 'flex-' + cache + out;\n }\n // align-self, s\n case 115:\n {\n return webkit + out + ms + 'flex-item-' + out.replace(selfptn, '') + out;\n }\n // align-content\n default:\n {\n return webkit + out + ms + 'flex-line-pack' + out.replace('align-content', '').replace(selfptn, '') + out;\n }\n }\n }\n break;\n }\n // min/max\n case 973:\n case 989:\n {\n // min-/max- height/width/block-size/inline-size\n if (out.charCodeAt(3) !== DASH || out.charCodeAt(4) === 122) {\n break;\n }\n }\n // height/width: min-content / width: max-content\n case 931:\n case 953:\n {\n if (dimensionptn.test(input) === true) {\n // stretch\n if ((cache = input.substring(input.indexOf(':') + 1)).charCodeAt(0) === 115) return property(input.replace('stretch', 'fill-available'), first, second, third).replace(':fill-available', ':stretch');else return out.replace(cache, webkit + cache) + out.replace(cache, moz + cache.replace('fill-', '')) + out;\n }\n break;\n }\n // transform, transition: t, r, a\n case 962:\n {\n out = webkit + out + (out.charCodeAt(5) === 102 ? ms + out : '') + out;\n\n // transitions\n if (second + third === 211 && out.charCodeAt(13) === 105 && out.indexOf('transform', 10) > 0) {\n return out.substring(0, out.indexOf(';', 27) + 1).replace(transformptn, '$1' + webkit + '$2') + out;\n }\n break;\n }\n }\n return out;\n }\n\n /**\n * Vendor\n *\n * @param {string} content\n * @param {number} context\n * @return {boolean}\n */\n function vendor(content, context) {\n var index = content.indexOf(context === 1 ? ':' : '{');\n var key = content.substring(0, context !== 3 ? index : 10);\n var value = content.substring(index + 1, content.length - 1);\n return should(context !== 2 ? key : key.replace(pseudofmt, '$1'), value, context);\n }\n\n /**\n * Supports\n *\n * @param {string} match\n * @param {string} group\n * @return {string}\n */\n function supports(match, group) {\n var out = property(group, group.charCodeAt(0), group.charCodeAt(1), group.charCodeAt(2));\n return out !== group + ';' ? out.replace(propertyptn, ' or ($1)').substring(4) : '(' + group + ')';\n }\n\n /**\n * Animation\n *\n * @param {string} input\n * @return {string}\n */\n function animation(input) {\n var length = input.length;\n var index = input.indexOf(':', 9) + 1;\n var declare = input.substring(0, index).trim();\n var out = input.substring(index, length - 1).trim();\n switch (input.charCodeAt(9) * keyed) {\n case 0:\n {\n break;\n }\n // animation-*, -\n case DASH:\n {\n // animation-name, n\n if (input.charCodeAt(10) !== 110) {\n break;\n }\n }\n // animation/animation-name\n default:\n {\n // split in case of multiple animations\n var list = out.split((out = '', animationptn));\n for (var i = 0, index = 0, length = list.length; i < length; index = 0, ++i) {\n var value = list[i];\n var items = value.split(propertiesptn);\n while (value = items[index]) {\n var peak = value.charCodeAt(0);\n if (keyed === 1 && (\n // letters\n peak > AT && peak < 90 || peak > 96 && peak < 123 || peak === UNDERSCORE ||\n // dash but not in sequence i.e --\n peak === DASH && value.charCodeAt(1) !== DASH)) {\n // not a number/function\n switch (isNaN(parseFloat(value)) + (value.indexOf('(') !== -1)) {\n case 1:\n {\n switch (value) {\n // not a valid reserved keyword\n case 'infinite':\n case 'alternate':\n case 'backwards':\n case 'running':\n case 'normal':\n case 'forwards':\n case 'both':\n case 'none':\n case 'linear':\n case 'ease':\n case 'ease-in':\n case 'ease-out':\n case 'ease-in-out':\n case 'paused':\n case 'reverse':\n case 'alternate-reverse':\n case 'inherit':\n case 'initial':\n case 'unset':\n case 'step-start':\n case 'step-end':\n {\n break;\n }\n default:\n {\n value += key;\n }\n }\n }\n }\n }\n items[index++] = value;\n }\n out += (i === 0 ? '' : ',') + items.join(' ');\n }\n }\n }\n out = declare + out + ';';\n if (prefix === 1 || prefix === 2 && vendor(out, 1)) return webkit + out + out;\n return out;\n }\n\n /**\n * Isolate\n *\n * @param {Array<string>} current\n */\n function isolate(current) {\n for (var i = 0, length = current.length, selector = Array(length), padding, element; i < length; ++i) {\n // split individual elements in a selector i.e h1 h2 === [h1, h2]\n var elements = current[i].split(elementptn);\n var out = '';\n for (var j = 0, size = 0, tail = 0, code = 0, l = elements.length; j < l; ++j) {\n // empty element\n if ((size = (element = elements[j]).length) === 0 && l > 1) {\n continue;\n }\n tail = out.charCodeAt(out.length - 1);\n code = element.charCodeAt(0);\n padding = '';\n if (j !== 0) {\n // determine if we need padding\n switch (tail) {\n case STAR:\n case TILDE:\n case GREATERTHAN:\n case PLUS:\n case SPACE:\n case OPENPARENTHESES:\n {\n break;\n }\n default:\n {\n padding = ' ';\n }\n }\n }\n switch (code) {\n case AND:\n {\n element = padding + nscopealt;\n }\n case TILDE:\n case GREATERTHAN:\n case PLUS:\n case SPACE:\n case CLOSEPARENTHESES:\n case OPENPARENTHESES:\n {\n break;\n }\n case OPENBRACKET:\n {\n element = padding + element + nscopealt;\n break;\n }\n case COLON:\n {\n switch (element.charCodeAt(1) * 2 + element.charCodeAt(2) * 3) {\n // :global\n case 530:\n {\n if (escape > 0) {\n element = padding + element.substring(8, size - 1);\n break;\n }\n }\n // :hover, :nth-child(), ...\n default:\n {\n if (j < 1 || elements[j - 1].length < 1) {\n element = padding + nscopealt + element;\n }\n }\n }\n break;\n }\n case COMMA:\n {\n padding = '';\n }\n default:\n {\n if (size > 1 && element.indexOf(':') > 0) {\n element = padding + element.replace(pseudoptn, '$1' + nscopealt + '$2');\n } else {\n element = padding + element + nscopealt;\n }\n }\n }\n out += element;\n }\n selector[i] = out.replace(formatptn, '').trim();\n }\n return selector;\n }\n\n /**\n * Proxy\n *\n * @param {number} context\n * @param {string} content\n * @param {Array<string>} selectors\n * @param {Array<string>} parents\n * @param {number} line\n * @param {number} column\n * @param {number} length\n * @param {number} id\n * @param {number} depth\n * @param {number} at\n * @return {(string|void|*)}\n */\n function proxy(context, content, selectors, parents, line, column, length, id, depth, at) {\n for (var i = 0, out = content, next; i < plugged; ++i) {\n switch (next = plugins[i].call(stylis, context, out, selectors, parents, line, column, length, id, depth, at)) {\n case void 0:\n case false:\n case true:\n case null:\n {\n break;\n }\n default:\n {\n out = next;\n }\n }\n }\n if (out !== content) {\n return out;\n }\n }\n\n /**\n * @param {number} code\n * @param {number} index\n * @param {number} length\n * @param {string} body\n * @return {number}\n */\n function delimited(code, index, length, body) {\n for (var i = index + 1; i < length; ++i) {\n switch (body.charCodeAt(i)) {\n // /*\n case FOWARDSLASH:\n {\n if (code === STAR) {\n if (body.charCodeAt(i - 1) === STAR && index + 2 !== i) {\n return i + 1;\n }\n }\n break;\n }\n // //\n case NEWLINE:\n {\n if (code === FOWARDSLASH) {\n return i + 1;\n }\n }\n }\n }\n return i;\n }\n\n /**\n * @param {number} type\n * @param {number} index\n * @param {number} length\n * @param {number} find\n * @param {string} body\n * @return {number}\n */\n function match(type, index, length, body) {\n for (var i = index + 1; i < length; ++i) {\n switch (body.charCodeAt(i)) {\n case type:\n {\n return i;\n }\n }\n }\n return i;\n }\n\n /**\n * Minify\n *\n * @param {(string|*)} output\n * @return {string}\n */\n function minify(output) {\n return output.replace(formatptn, '').replace(beforeptn, '').replace(afterptn, '$1').replace(tailptn, '$1').replace(whiteptn, ' ');\n }\n\n /**\n * Use\n *\n * @param {(Array<function(...?)>|function(...?)|number|void)?} plugin\n */\n function use(plugin) {\n switch (plugin) {\n case void 0:\n case null:\n {\n plugged = plugins.length = 0;\n break;\n }\n default:\n {\n if (typeof plugin === 'function') {\n plugins[plugged++] = plugin;\n } else if (typeof plugin === 'object') {\n for (var i = 0, length = plugin.length; i < length; ++i) {\n use(plugin[i]);\n }\n } else {\n unkwn = !!plugin | 0;\n }\n }\n }\n return use;\n }\n\n /**\n * Set\n *\n * @param {*} options\n */\n function set(options) {\n for (var name in options) {\n var value = options[name];\n switch (name) {\n case 'keyframe':\n keyed = value | 0;\n break;\n case 'global':\n escape = value | 0;\n break;\n case 'cascade':\n cascade = value | 0;\n break;\n case 'compress':\n compress = value | 0;\n break;\n case 'semicolon':\n semicolon = value | 0;\n break;\n case 'preserve':\n preserve = value | 0;\n break;\n case 'prefix':\n should = null;\n if (!value) {\n prefix = 0;\n } else if (typeof value !== 'function') {\n prefix = 1;\n } else {\n prefix = 2;\n should = value;\n }\n }\n }\n return set;\n }\n\n /**\n * Stylis\n *\n * @param {string} selector\n * @param {string} input\n * @return {*}\n */\n function stylis(selector, input) {\n if (this !== void 0 && this.constructor === stylis) {\n return factory(selector);\n }\n\n // setup\n var ns = selector;\n var code = ns.charCodeAt(0);\n\n // trim leading whitespace\n if (code < 33) {\n code = (ns = ns.trim()).charCodeAt(0);\n }\n\n // keyframe/animation namespace\n if (keyed > 0) {\n key = ns.replace(invalidptn, code === OPENBRACKET ? '' : '-');\n }\n\n // reset, used to assert if a plugin is moneky-patching the return value\n code = 1;\n\n // cascade/isolate\n if (cascade === 1) {\n nscope = ns;\n } else {\n nscopealt = ns;\n }\n var selectors = [nscope];\n var result;\n\n // execute plugins, pre-process context\n if (plugged > 0) {\n result = proxy(PREPS, input, selectors, selectors, line, column, 0, 0, 0, 0);\n if (result !== void 0 && typeof result === 'string') {\n input = result;\n }\n }\n\n // build\n var output = compile(array, selectors, input, 0, 0);\n\n // execute plugins, post-process context\n if (plugged > 0) {\n result = proxy(POSTS, output, selectors, selectors, line, column, output.length, 0, 0, 0);\n\n // bypass minification\n if (result !== void 0 && typeof (output = result) !== 'string') {\n code = 0;\n }\n }\n\n // reset\n key = '';\n nscope = '';\n nscopealt = '';\n pattern = 0;\n line = 1;\n column = 1;\n return compress * code === 0 ? output : minify(output);\n }\n stylis['use'] = use;\n stylis['set'] = set;\n if (options !== void 0) {\n set(options);\n }\n return stylis;\n});","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n'use strict';\n\nvar hyphenate = require('./hyphenate');\nvar msPattern = /^ms-/;\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}\nmodule.exports = hyphenateStyleName;","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar b = \"function\" === typeof Symbol && Symbol.for,\n c = b ? Symbol.for(\"react.element\") : 60103,\n d = b ? Symbol.for(\"react.portal\") : 60106,\n e = b ? Symbol.for(\"react.fragment\") : 60107,\n f = b ? Symbol.for(\"react.strict_mode\") : 60108,\n g = b ? Symbol.for(\"react.profiler\") : 60114,\n h = b ? Symbol.for(\"react.provider\") : 60109,\n k = b ? Symbol.for(\"react.context\") : 60110,\n l = b ? Symbol.for(\"react.async_mode\") : 60111,\n m = b ? Symbol.for(\"react.concurrent_mode\") : 60111,\n n = b ? Symbol.for(\"react.forward_ref\") : 60112,\n p = b ? Symbol.for(\"react.suspense\") : 60113,\n q = b ? Symbol.for(\"react.suspense_list\") : 60120,\n r = b ? Symbol.for(\"react.memo\") : 60115,\n t = b ? Symbol.for(\"react.lazy\") : 60116,\n v = b ? Symbol.for(\"react.block\") : 60121,\n w = b ? Symbol.for(\"react.fundamental\") : 60117,\n x = b ? Symbol.for(\"react.responder\") : 60118,\n y = b ? Symbol.for(\"react.scope\") : 60119;\nfunction z(a) {\n if (\"object\" === typeof a && null !== a) {\n var u = a.$$typeof;\n switch (u) {\n case c:\n switch (a = a.type, a) {\n case l:\n case m:\n case e:\n case g:\n case f:\n case p:\n return a;\n default:\n switch (a = a && a.$$typeof, a) {\n case k:\n case n:\n case t:\n case r:\n case h:\n return a;\n default:\n return u;\n }\n }\n case d:\n return u;\n }\n }\n}\nfunction A(a) {\n return z(a) === m;\n}\nexports.AsyncMode = l;\nexports.ConcurrentMode = m;\nexports.ContextConsumer = k;\nexports.ContextProvider = h;\nexports.Element = c;\nexports.ForwardRef = n;\nexports.Fragment = e;\nexports.Lazy = t;\nexports.Memo = r;\nexports.Portal = d;\nexports.Profiler = g;\nexports.StrictMode = f;\nexports.Suspense = p;\nexports.isAsyncMode = function (a) {\n return A(a) || z(a) === l;\n};\nexports.isConcurrentMode = A;\nexports.isContextConsumer = function (a) {\n return z(a) === k;\n};\nexports.isContextProvider = function (a) {\n return z(a) === h;\n};\nexports.isElement = function (a) {\n return \"object\" === typeof a && null !== a && a.$$typeof === c;\n};\nexports.isForwardRef = function (a) {\n return z(a) === n;\n};\nexports.isFragment = function (a) {\n return z(a) === e;\n};\nexports.isLazy = function (a) {\n return z(a) === t;\n};\nexports.isMemo = function (a) {\n return z(a) === r;\n};\nexports.isPortal = function (a) {\n return z(a) === d;\n};\nexports.isProfiler = function (a) {\n return z(a) === g;\n};\nexports.isStrictMode = function (a) {\n return z(a) === f;\n};\nexports.isSuspense = function (a) {\n return z(a) === p;\n};\nexports.isValidElementType = function (a) {\n return \"string\" === typeof a || \"function\" === typeof a || a === e || a === m || a === g || a === f || a === p || a === q || \"object\" === typeof a && null !== a && (a.$$typeof === t || a.$$typeof === r || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n || a.$$typeof === w || a.$$typeof === x || a.$$typeof === y || a.$$typeof === v);\n};\nexports.typeOf = z;","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","const theme = {\n // named colors:\n brand: '#FFFFFF',\n accent: '#0a5eb7',\n accentDark: '#35495E',\n lightGrey: '#FAFAFA',\n darkGrey: '#91a2a3',\n ink: 'black',\n errorRed: '#FF6666',\n codeEditBlue: '#2973b7',\n codeEditGreen: '#42b983',\n\n // content width:\n contentWidthLaptop: '850px',\n sitePadding: '25px'\n}\n\nexport default theme\n","import React from \"react\";\nimport Helmet from \"react-helmet\";\nimport {ThemeProvider} from \"styled-components\"\nimport config from \"../templates/site-config\";\nimport \"../assets/css/index.css\";\nimport \"../assets/css/style.css\";\nimport \"../../node_modules/prismjs/themes/prism.css\"\nimport theme from '../templates/theme'\nimport favicon from '../../static/favicon.ico';\n\nexport default class MainLayout extends React.Component {\n getLocalTitle() {\n return 'Essential JS 2'\n }\n\n render() {\n const { children } = this.props;\n return (\n <div>\n <Helmet>\n <link rel=\"shortcut icon\" href={favicon} />\n <title>{`${config.siteTitle} | ${this.getLocalTitle()}`}</title>\n <link rel=\"stylesheet\" href=\"https://cdn.syncfusion.com/ej2/fabric.css\" />\n <script src= {config.pathPrefix + \"/left-toc.js\"}></script>\n </Helmet>\n <ThemeProvider theme={theme}>\n <div>\n {children}\n </div> \n </ThemeProvider>\n </div>\n );\n }\n}\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n if (ret !== void 0) {\n return !!ret;\n }\n if (objA === objB) {\n return true;\n }\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) {\n return false;\n }\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n if (!bHasOwnProperty(key)) {\n return false;\n }\n var valueA = objA[key];\n var valueB = objB[key];\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n if (ret === false || ret === void 0 && valueA !== valueB) {\n return false;\n }\n }\n return true;\n};","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar _uppercasePattern = /([A-Z])/g;\n\n/**\n * Hyphenates a camelcased string, for example:\n *\n * > hyphenate('backgroundColor')\n * < \"background-color\"\n *\n * For CSS style names, use `hyphenateStyleName` instead which works properly\n * with all vendor prefixes, including `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenate(string) {\n return string.replace(_uppercasePattern, '-$1').toLowerCase();\n}\nmodule.exports = hyphenate;","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};\nimport { Component, EventHandler, addClass, append, Property, Event, L10n, compile } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, extend, removeClass, prepend, isNullOrUndefined, detach, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, rippleEffect, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { select, selectAll } from '@syncfusion/ej2-base';\nimport { Skeleton } from '@syncfusion/ej2-notifications';\nvar FieldSettings = /** @class */function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property()], FieldSettings.prototype, \"text\", void 0);\n __decorate([Property()], FieldSettings.prototype, \"value\", void 0);\n __decorate([Property()], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([Property()], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([Property()], FieldSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([Property()], FieldSettings.prototype, \"disabled\", void 0);\n return FieldSettings;\n}(ChildProperty);\nexport { FieldSettings };\nexport var dropDownBaseClasses = {\n root: 'e-dropdownbase',\n rtl: 'e-rtl',\n content: 'e-content',\n selected: 'e-active',\n hover: 'e-hover',\n noData: 'e-nodata',\n fixedHead: 'e-fixed-head',\n focus: 'e-item-focus',\n li: 'e-list-item',\n group: 'e-list-group-item',\n disabled: 'e-disabled',\n grouping: 'e-dd-group',\n virtualList: 'e-list-item e-virtual-list'\n};\nvar ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\nvar DISPLAYTEMPLATE_PROPERTY = 'DisplayTemplate';\nvar SPINNERTEMPLATE_PROPERTY = 'SpinnerTemplate';\nvar VALUETEMPLATE_PROPERTY = 'ValueTemplate';\nvar GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar FOOTERTEMPLATE_PROPERTY = 'FooterTemplate';\nvar NORECORDSTEMPLATE_PROPERTY = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE_PROPERTY = 'ActionFailureTemplate';\nvar HIDE_GROUPLIST = 'e-hide-group-header';\n/**\n * DropDownBase component will generate the list items based on given data and act as base class to drop-down related components\n */\nvar DropDownBase = /** @class */function (_super) {\n __extends(DropDownBase, _super);\n /**\n * * Constructor for DropDownBase class\n *\n * @param {DropDownBaseModel} options - Specifies the DropDownBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.preventChange = false;\n _this.isPreventChange = false;\n _this.isDynamicDataChange = false;\n _this.addedNewItem = false;\n _this.isAddNewItemTemplate = false;\n _this.isRequesting = false;\n _this.isVirtualizationEnabled = false;\n _this.isCustomDataUpdated = false;\n _this.isAllowFiltering = false;\n _this.virtualizedItemsCount = 0;\n _this.isCheckBoxSelection = false;\n _this.totalItemCount = 0;\n _this.dataCount = 0;\n _this.remoteDataCount = -1;\n _this.isRemoteDataUpdated = false;\n _this.isIncrementalRequest = false;\n _this.itemCount = 30;\n _this.virtualListHeight = 0;\n _this.isVirtualScrolling = false;\n _this.isPreventScrollAction = false;\n _this.scrollPreStartIndex = 0;\n _this.isScrollActionTriggered = false;\n _this.previousStartIndex = 0;\n _this.isMouseScrollAction = false;\n _this.isKeyBoardAction = false;\n _this.isScrollChanged = false;\n _this.isUpwardScrolling = false;\n _this.startIndex = 0;\n _this.currentPageNumber = 0;\n _this.pageCount = 0;\n _this.isPreventKeyAction = false;\n _this.generatedDataObject = {};\n _this.skeletonCount = 32;\n _this.isVirtualTrackHeight = false;\n _this.virtualSelectAll = false;\n _this.incrementalQueryString = '';\n _this.incrementalEndIndex = 0;\n _this.incrementalStartIndex = 0;\n _this.incrementalPreQueryString = '';\n _this.isObjectCustomValue = false;\n _this.appendUncheckList = false;\n _this.getInitialData = false;\n _this.preventPopupOpen = true;\n _this.virtualSelectAllState = false;\n _this.CurrentEvent = null;\n _this.isDynamicData = false;\n _this.isPrimitiveData = false;\n _this.isCustomFiltering = false;\n _this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0\n };\n _this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0\n };\n _this.selectedValueInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0\n };\n return _this;\n }\n DropDownBase.prototype.getPropObject = function (prop, newProp, oldProp) {\n var newProperty = new Object();\n var oldProperty = new Object();\n var propName = function (prop) {\n return prop;\n };\n newProperty[propName(prop)] = newProp[propName(prop)];\n oldProperty[propName(prop)] = oldProp[propName(prop)];\n var data = new Object();\n data.newProperty = newProperty;\n data.oldProperty = oldProperty;\n return data;\n };\n DropDownBase.prototype.getValueByText = function (text, ignoreCase, ignoreAccent) {\n var value = null;\n if (!isNullOrUndefined(this.listData)) {\n if (ignoreCase) {\n value = this.checkValueCase(text, true, ignoreAccent);\n } else {\n value = this.checkValueCase(text, false, ignoreAccent);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkValueCase = function (text, ignoreCase, ignoreAccent, isTextByValue) {\n var _this = this;\n var value = null;\n if (isTextByValue) {\n value = text;\n }\n if (!isNullOrUndefined(this.listData)) {\n var dataSource = this.listData;\n var fields_1 = this.fields;\n var type = this.typeOfData(dataSource).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n if (!isNullOrUndefined(item)) {\n if (ignoreAccent) {\n value = this.checkingAccent(String(item), text, ignoreCase);\n } else {\n if (ignoreCase) {\n if (this.checkIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n } else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase, isTextByValue);\n }\n }\n }\n }\n }\n } else {\n if (ignoreCase) {\n dataSource.filter(function (item) {\n var itemValue = getValue(fields_1.value, item);\n if (!isNullOrUndefined(itemValue) && _this.checkIgnoreCase(getValue(fields_1.text, item).toString(), text)) {\n value = getValue(fields_1.value, item);\n }\n });\n } else {\n if (isTextByValue) {\n var compareValue_1 = null;\n compareValue_1 = value;\n dataSource.filter(function (item) {\n var itemValue = getValue(fields_1.value, item);\n if (!isNullOrUndefined(itemValue) && !isNullOrUndefined(value) && itemValue.toString() === compareValue_1.toString()) {\n value = getValue(fields_1.text, item);\n }\n });\n } else {\n dataSource.filter(function (item) {\n if (_this.checkNonIgnoreCase(getValue(fields_1.text, item), text)) {\n value = getValue(fields_1.value, item);\n }\n });\n }\n }\n }\n }\n return value;\n };\n DropDownBase.prototype.checkingAccent = function (item, text, ignoreCase) {\n var dataItem = DataUtil.ignoreDiacritics(String(item));\n var textItem = DataUtil.ignoreDiacritics(text.toString());\n var value = null;\n if (ignoreCase) {\n if (this.checkIgnoreCase(dataItem, textItem)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n } else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkIgnoreCase = function (item, text) {\n return String(item).toLowerCase() === text.toString().toLowerCase() ? true : false;\n };\n DropDownBase.prototype.checkNonIgnoreCase = function (item, text) {\n return String(item) === text.toString() ? true : false;\n };\n DropDownBase.prototype.getItemValue = function (dataItem, typedText, ignoreCase, isTextByValue) {\n var value = null;\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n if (isTextByValue) {\n value = dataItem.toString();\n } else {\n if (ignoreCase) {\n value = type === 'string' ? String(dataItem) : this.getFormattedValue(String(dataItem));\n } else {\n value = type === 'string' ? typedText : this.getFormattedValue(typedText);\n }\n }\n return value;\n };\n DropDownBase.prototype.templateCompiler = function (baseTemplate) {\n var checkTemplate = false;\n if (typeof baseTemplate !== 'function' && baseTemplate) {\n try {\n checkTemplate = selectAll(baseTemplate, document).length ? true : false;\n } catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownBase.prototype.l10nUpdate = function (actionFailure) {\n var ele = this.getModuleName() === 'listbox' ? this.ulElement : this.list;\n if (!isNullOrUndefined(this.noRecordsTemplate) && this.noRecordsTemplate !== 'No records found' || this.actionFailureTemplate !== 'Request failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var compiledString = void 0;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n ele.innerHTML = '';\n var tempaltecheck = this.templateCompiler(template);\n if (typeof template !== 'function' && tempaltecheck) {\n compiledString = compile(select(template, document).innerHTML.trim());\n } else {\n compiledString = compile(template);\n }\n var templateName = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var noDataElement = void 0;\n if (this.isReact && typeof template === 'function') {\n noDataElement = compiledString({}, this, templateName, templateId, this.isStringTemplate, null);\n } else {\n noDataElement = compiledString({}, this, templateName, templateId, this.isStringTemplate, null, ele);\n }\n if (noDataElement && noDataElement.length > 0) {\n for (var i = 0; i < noDataElement.length; i++) {\n if (this.getModuleName() === 'listbox' && templateName === 'noRecordsTemplate') {\n if (noDataElement[i].nodeName === '#text') {\n var liElem = this.createElement('li');\n liElem.textContent = noDataElement[i].textContent;\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n ele.appendChild(liElem);\n } else {\n noDataElement[i].classList.add('e-list-nr-template');\n ele.appendChild(noDataElement[i]);\n }\n } else {\n if (noDataElement[i] instanceof HTMLElement || noDataElement[i] instanceof Text && noDataElement[i].textContent !== '') {\n ele.appendChild(noDataElement[i]);\n }\n }\n }\n }\n this.renderReactTemplates();\n } else {\n var l10nLocale = {\n noRecordsTemplate: 'No records found',\n actionFailureTemplate: 'Request failed'\n };\n var componentLocale = new L10n(this.getLocaleName(), {}, this.locale);\n if (componentLocale.getConstant('actionFailureTemplate') !== '' || componentLocale.getConstant('noRecordsTemplate') !== '') {\n this.l10n = componentLocale;\n } else {\n this.l10n = new L10n(this.getModuleName() === 'listbox' ? 'listbox' : this.getModuleName() === 'mention' ? 'mention' : 'dropdowns', l10nLocale, this.locale);\n }\n var content = actionFailure ? this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n if (this.getModuleName() === 'listbox') {\n var liElem = this.createElement('li');\n liElem.textContent = content;\n ele.appendChild(liElem);\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n } else {\n if (!isNullOrUndefined(ele)) {\n ele.innerHTML = content;\n }\n }\n }\n };\n DropDownBase.prototype.checkAndResetCache = function () {\n if (this.isVirtualizationEnabled) {\n this.generatedDataObject = {};\n this.virtualItemStartIndex = this.virtualItemEndIndex = 0;\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount\n };\n this.selectedValueInfo = null;\n }\n };\n DropDownBase.prototype.updateIncrementalInfo = function (startIndex, endIndex) {\n this.viewPortInfo.startIndex = startIndex;\n this.viewPortInfo.endIndex = endIndex;\n this.updateVirtualItemIndex();\n this.isIncrementalRequest = true;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isIncrementalRequest = false;\n };\n DropDownBase.prototype.updateIncrementalView = function (startIndex, endIndex) {\n this.viewPortInfo.startIndex = startIndex;\n this.viewPortInfo.endIndex = endIndex;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n };\n DropDownBase.prototype.updateVirtualItemIndex = function () {\n this.virtualItemStartIndex = this.viewPortInfo.startIndex;\n this.virtualItemEndIndex = this.viewPortInfo.endIndex;\n this.virtualListInfo = this.viewPortInfo;\n };\n DropDownBase.prototype.getFilteringSkeletonCount = function () {\n var currentSkeletonCount = this.skeletonCount;\n this.getSkeletonCount(true);\n this.skeletonCount = this.dataCount < this.itemCount * 2 && (!(this.dataSource instanceof DataManager) || this.dataSource instanceof DataManager && this.totalItemCount <= this.itemCount) ? 0 : this.skeletonCount;\n var skeletonUpdated = true;\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect') && this.totalItemCount < this.itemCount * 2 && (!(this.dataSource instanceof DataManager) || this.dataSource instanceof DataManager && this.totalItemCount <= this.itemCount)) {\n this.skeletonCount = 0;\n skeletonUpdated = false;\n }\n if (!this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (currentSkeletonCount !== this.skeletonCount && skeletonUpdated) {\n this.UpdateSkeleton(true, Math.abs(currentSkeletonCount - this.skeletonCount));\n } else {\n this.UpdateSkeleton();\n }\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n if (this.list.getElementsByClassName('e-virtual-ddl').length > 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 && this.list.querySelector('.e-dropdownbase')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup',\n className: 'e-virtual-ddl',\n styles: this.GetVirtualTrackHeight()\n });\n this.list.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n if (this.list.getElementsByClassName('e-virtual-ddl-content').length > 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 };\n DropDownBase.prototype.getSkeletonCount = function (retainSkeleton) {\n this.virtualListHeight = this.listContainerHeight != null ? parseInt(this.listContainerHeight, 10) : this.virtualListHeight;\n var actualCount = this.virtualListHeight > 0 && this.listItemHeight > 0 ? Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n this.skeletonCount = actualCount * 4 < this.itemCount ? this.itemCount : actualCount * 4;\n this.itemCount = retainSkeleton ? this.itemCount : this.skeletonCount;\n this.virtualItemCount = this.itemCount;\n this.skeletonCount = Math.floor(this.skeletonCount / 2);\n };\n DropDownBase.prototype.GetVirtualTrackHeight = function () {\n var height = this.totalItemCount === this.viewPortInfo.endIndex ? this.totalItemCount * this.listItemHeight - this.itemCount * this.listItemHeight : this.totalItemCount * this.listItemHeight;\n height = this.isVirtualTrackHeight ? 0 : height;\n var heightDimension = \"height: \" + (height - this.itemCount * this.listItemHeight) + \"px;\";\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect') && this.skeletonCount === 0) {\n return 'height: 0px;';\n }\n return heightDimension;\n };\n DropDownBase.prototype.getTransformValues = function () {\n var translateY = this.viewPortInfo.startIndex * this.listItemHeight;\n translateY = translateY - this.skeletonCount * this.listItemHeight;\n translateY = this.viewPortInfo.startIndex === 0 && this.listData && this.listData.length === 0 || this.skeletonCount === 0 ? 0 : translateY;\n var styleText = \"transform: translate(0px, \" + translateY + \"px);\";\n return styleText;\n };\n DropDownBase.prototype.UpdateSkeleton = function (isSkeletonCountChange, skeletonCount) {\n var isContainSkeleton = this.list.querySelector('.e-virtual-ddl-content');\n var isContainVirtualList = this.list.querySelector('.e-virtual-list');\n if (isContainSkeleton && (!isContainVirtualList || isSkeletonCountChange) && this.isVirtualizationEnabled) {\n var totalSkeletonCount = isSkeletonCountChange ? skeletonCount : this.skeletonCount;\n for (var i = 0; i < totalSkeletonCount; i++) {\n var liElement = this.createElement('li', {\n className: dropDownBaseClasses.virtualList,\n styles: 'overflow: inherit'\n });\n if (this.isVirtualizationEnabled && this.itemTemplate) {\n liElement.style.height = this.listItemHeight - parseInt(window.getComputedStyle(this.getItems()[1]).marginBottom, 10) + 'px';\n }\n var skeleton = new Skeleton({\n shape: 'Text',\n height: '10px',\n width: '95%',\n cssClass: 'e-skeleton-text'\n });\n skeleton.appendTo(this.createElement('div'));\n liElement.appendChild(skeleton.element);\n if (isContainSkeleton.firstChild) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isContainSkeleton.firstChild.insertBefore(liElement, isContainSkeleton.firstChild.children[0]);\n }\n }\n }\n };\n DropDownBase.prototype.getLocaleName = function () {\n return 'drop-down-base';\n };\n DropDownBase.prototype.getTextByValue = function (value) {\n var text = this.checkValueCase(value, false, false, true);\n return text;\n };\n DropDownBase.prototype.getFormattedValue = function (value) {\n if (this.listData && this.listData.length) {\n var item = void 0;\n if (this.properties.allowCustomValue && this.properties.value && this.properties.value instanceof Array && this.properties.value.length > 0) {\n item = this.typeOfData(this.properties.value);\n } else {\n item = this.typeOfData(this.listData);\n }\n if (typeof getValue(this.fields.value ? this.fields.value : 'value', item.item) === 'number' || item.typeof === 'number') {\n return parseFloat(value);\n }\n if (typeof getValue(this.fields.value ? this.fields.value : 'value', item.item) === 'boolean' || item.typeof === 'boolean') {\n return value === 'true' || '' + value === 'true';\n }\n }\n return value;\n };\n /**\n * Sets RTL to dropdownbase wrapper\n *\n * @returns {void}\n */\n DropDownBase.prototype.setEnableRtl = function () {\n if (!isNullOrUndefined(this.enableRtlElements)) {\n if (this.list) {\n this.enableRtlElements.push(this.list);\n }\n if (this.enableRtl) {\n addClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n } else {\n removeClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n }\n };\n /**\n * Initialize the Component.\n *\n * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - The event object.\n * @returns {void}\n */\n DropDownBase.prototype.initialize = function (e) {\n this.bindEvent = true;\n this.preventPopupOpen = true;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE_PROPERTY;\n if (this.element.tagName === 'UL') {\n var jsonElement = ListBase.createJsonFromElement(this.element);\n this.setProperties({\n fields: {\n text: 'text',\n value: 'text'\n }\n }, true);\n this.resetList(jsonElement, this.fields);\n } else if (this.element.tagName === 'SELECT') {\n var dataSource = this.dataSource instanceof Array ? this.dataSource.length > 0 ? true : false : !isNullOrUndefined(this.dataSource) ? true : false;\n if (!dataSource) {\n this.renderItemsBySelect();\n } else if (this.isDynamicDataChange) {\n this.setListData(this.dataSource, this.fields, this.query);\n }\n } else {\n this.setListData(this.dataSource, this.fields, this.query, e);\n }\n };\n /**\n * Get the properties to be maintained in persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownBase.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @param {string} value - Specifies the attribute values to add on the input element.\n * @returns {void}\n */\n DropDownBase.prototype.updateDataAttribute = function (value) {\n var invalidAttr = ['class', 'style', 'id', 'type', 'aria-expanded', 'aria-autocomplete', 'aria-readonly'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 && !(this.getModuleName() === 'dropdownlist' && this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({\n htmlAttributes: attr\n }, true);\n };\n DropDownBase.prototype.renderItemsBySelect = function () {\n var element = this.element;\n var group = element.querySelectorAll('select>optgroup');\n var fields;\n var isSelectGroupCheck = this.getModuleName() === 'multiselect' && this.isGroupChecking && group.length > 0;\n fields = isSelectGroupCheck ? {\n value: 'value',\n text: 'text',\n groupBy: 'categeory'\n } : fields = {\n value: 'value',\n text: 'text'\n };\n var jsonElement = [];\n var option = element.querySelectorAll('select>option');\n this.getJSONfromOption(jsonElement, option, fields);\n if (group.length) {\n for (var i = 0; i < group.length; i++) {\n var item = group[i];\n var optionGroup = {};\n optionGroup[fields.text] = item.label;\n optionGroup.isHeader = true;\n var child = item.querySelectorAll('option');\n if (isSelectGroupCheck) {\n this.getJSONfromOption(jsonElement, child, fields, item.label);\n } else {\n jsonElement.push(optionGroup);\n this.getJSONfromOption(jsonElement, child, fields);\n }\n }\n element.querySelectorAll('select>option');\n }\n this.updateFields(fields.text, fields.value, isSelectGroupCheck ? fields.groupBy : this.fields.groupBy, this.fields.htmlAttributes, this.fields.iconCss, this.fields.disabled);\n this.resetList(jsonElement, fields);\n };\n DropDownBase.prototype.updateFields = function (text, value, groupBy, htmlAttributes, iconCss, disabled) {\n var field = {\n 'fields': {\n text: text,\n value: value,\n groupBy: !isNullOrUndefined(groupBy) ? groupBy : this.fields && this.fields.groupBy,\n htmlAttributes: !isNullOrUndefined(htmlAttributes) ? htmlAttributes : this.fields && this.fields.htmlAttributes,\n iconCss: !isNullOrUndefined(iconCss) ? iconCss : this.fields && this.fields.iconCss,\n disabled: !isNullOrUndefined(disabled) ? disabled : this.fields && this.fields.disabled\n }\n };\n this.setProperties(field, true);\n };\n DropDownBase.prototype.getJSONfromOption = function (items, options, fields, category) {\n if (category === void 0) {\n category = null;\n }\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var option = options_1[_i];\n var json = {};\n json[fields.text] = option.innerText;\n json[fields.value] = !isNullOrUndefined(option.getAttribute(fields.value)) ? option.getAttribute(fields.value) : option.innerText;\n if (!isNullOrUndefined(category)) {\n json[fields.groupBy] = category;\n }\n items.push(json);\n }\n };\n /**\n * Execute before render the list items\n *\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.preRender = function () {\n // there is no event handler\n this.scrollTimer = -1;\n this.enableRtlElements = [];\n this.isRequested = false;\n this.isDataFetched = false;\n this.itemTemplateId = \"\" + this.element.id + ITEMTEMPLATE_PROPERTY;\n this.displayTemplateId = \"\" + this.element.id + DISPLAYTEMPLATE_PROPERTY;\n this.spinnerTemplateId = \"\" + this.element.id + SPINNERTEMPLATE_PROPERTY;\n this.valueTemplateId = \"\" + this.element.id + VALUETEMPLATE_PROPERTY;\n this.groupTemplateId = \"\" + this.element.id + GROUPTEMPLATE_PROPERTY;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE_PROPERTY;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE_PROPERTY;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE_PROPERTY;\n };\n /**\n * Creates the list items of DropDownBase component.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @param {MouseEvent | KeyboardEventArgs | TouchEvent} event - Specifies the event which is the reason for the invocation of this method.\n * @returns {void}\n */\n DropDownBase.prototype.setListData = function (dataSource, fields, query, event) {\n var _this = this;\n fields = fields ? fields : this.fields;\n var ulElement;\n this.isActive = true;\n var eventArgs = {\n cancel: false,\n data: dataSource,\n query: query\n };\n this.isPreventChange = this.isAngular && this.preventChange ? true : this.isPreventChange;\n if (!this.isRequesting) {\n this.trigger('actionBegin', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.isRequesting = true;\n _this.showSpinner();\n if (dataSource instanceof DataManager) {\n _this.isRequested = true;\n var isWhereExist_1 = false;\n if (_this.isDataFetched) {\n _this.emptyDataRequest(fields);\n return;\n }\n eventArgs.data.executeQuery(_this.getQuery(eventArgs.query)).then(function (e) {\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n var isReOrder = true;\n if (!_this.virtualSelectAll) {\n var newQuery = _this.getQuery(eventArgs.query);\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onWhere') {\n isWhereExist_1 = true;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (_this.isVirtualizationEnabled && e.count !== 0 && e.count < _this.itemCount * 2) {\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onTake') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newQuery.queries[queryElements].e.nos = e.count;\n }\n if (_this.getModuleName() === 'multiselect' && (newQuery.queries[queryElements].e.condition === 'or' || newQuery.queries[queryElements].e.operator === 'equal') && !_this.isCustomFiltering) {\n isReOrder = false;\n }\n }\n }\n } else {\n _this.isVirtualTrackHeight = false;\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (_this.getModuleName() === 'multiselect' && (newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.condition === 'or' || newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.operator === 'equal')) {\n isReOrder = false;\n }\n }\n }\n }\n }\n if (isReOrder) {\n // eslint-disable @typescript-eslint/no-explicit-any\n _this.dataCount = _this.totalItemCount = e.count;\n }\n _this.trigger('actionComplete', e, function (e) {\n if (!e.cancel) {\n _this.isRequesting = false;\n _this.isCustomFiltering = false;\n var listItems = e.result;\n if (_this.isIncrementalRequest) {\n ulElement = _this.renderItems(listItems, fields);\n return;\n }\n if (!_this.isVirtualizationEnabled && listItems.length === 0 || _this.isVirtualizationEnabled && listItems.length === 0 && !isWhereExist_1) {\n _this.isDataFetched = true;\n }\n if (!isWhereExist_1) {\n _this.remoteDataCount = e.count;\n }\n _this.dataCount = !_this.virtualSelectAll ? e.count : _this.dataCount;\n _this.totalItemCount = !_this.virtualSelectAll ? e.count : _this.totalItemCount;\n ulElement = _this.renderItems(listItems, fields);\n _this.appendUncheckList = false;\n _this.onActionComplete(ulElement, listItems, e);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.isRequested = false;\n _this.bindChildItems(listItems, ulElement, fields, e);\n if (_this.getInitialData) {\n _this.getInitialData = false;\n _this.preventPopupOpen = false;\n return;\n }\n if (_this.isVirtualizationEnabled && _this.setCurrentView) {\n _this.notify('setCurrentViewDataAsync', {\n module: 'VirtualScroll'\n });\n }\n if (_this.keyboardEvent != null) {\n _this.handleVirtualKeyboardActions(_this.keyboardEvent, _this.pageCount);\n }\n if (_this.isVirtualizationEnabled) {\n _this.getFilteringSkeletonCount();\n _this.updatePopupPosition();\n }\n if (_this.virtualSelectAll && _this.virtualSelectAllData) {\n _this.virtualSelectionAll(_this.virtualSelectAllState, _this.liCollections, _this.CurrentEvent);\n _this.virtualSelectAllState = false;\n _this.CurrentEvent = null;\n _this.virtualSelectAll = false;\n }\n }\n });\n }).catch(function (e) {\n _this.isRequested = false;\n _this.isRequesting = false;\n _this.onActionFailure(e);\n _this.hideSpinner();\n });\n } else {\n _this.isRequesting = false;\n var isReOrder = true;\n var listItems = void 0;\n if (_this.isVirtualizationEnabled && !_this.virtualGroupDataSource && _this.fields.groupBy) {\n var data = new DataManager(_this.dataSource).executeLocal(new Query().group(_this.fields.groupBy));\n _this.virtualGroupDataSource = data.records;\n }\n var dataManager = _this.isVirtualizationEnabled && _this.virtualGroupDataSource && !_this.isCustomDataUpdated ? new DataManager(_this.virtualGroupDataSource) : new DataManager(eventArgs.data);\n listItems = _this.getQuery(eventArgs.query).executeLocal(dataManager);\n if (!_this.virtualSelectAll) {\n var newQuery = _this.getQuery(eventArgs.query);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (_this.isVirtualizationEnabled && listItems.count !== 0 && listItems.count < _this.itemCount * 2) {\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onTake') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newQuery.queries[queryElements].e.nos = listItems.count;\n listItems = newQuery.executeLocal(dataManager);\n }\n if (_this.getModuleName() === 'multiselect' && (newQuery.queries[queryElements].e.condition === 'or' || newQuery.queries[queryElements].e.operator === 'equal') && !_this.isCustomFiltering) {\n isReOrder = false;\n }\n }\n if (isReOrder) {\n listItems = newQuery.executeLocal(dataManager);\n _this.isVirtualTrackHeight = !(_this.dataSource instanceof DataManager) && !_this.isCustomDataUpdated ? true : false;\n }\n }\n } else {\n _this.isVirtualTrackHeight = false;\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (_this.getModuleName() === 'multiselect' && (newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.condition === 'or' || newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.operator === 'equal')) {\n isReOrder = false;\n }\n }\n }\n }\n }\n if (isReOrder && !(_this.dataSource instanceof DataManager) && !_this.isCustomDataUpdated && !_this.virtualSelectAll) {\n // eslint-disable @typescript-eslint/no-explicit-any\n _this.dataCount = _this.totalItemCount = _this.virtualSelectAll ? listItems.length : listItems.count;\n }\n listItems = _this.isVirtualizationEnabled ? listItems.result : listItems;\n // eslint-enable @typescript-eslint/no-explicit-any\n var localDataArgs = {\n cancel: false,\n result: listItems\n };\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', localDataArgs, function (localDataArgs) {\n _this.isCustomFiltering = false;\n if (_this.isIncrementalRequest) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n return;\n }\n if (!localDataArgs.cancel) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n _this.onActionComplete(ulElement, localDataArgs.result, event);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.bindChildItems(localDataArgs.result, ulElement, fields);\n if (_this.getInitialData) {\n _this.getInitialData = false;\n _this.preventPopupOpen = false;\n return;\n }\n setTimeout(function () {\n if (_this.getModuleName() === 'multiselect' && _this.itemTemplate != null && ulElement.childElementCount > 0 && (ulElement.children[0].childElementCount > 0 || _this.fields.groupBy && ulElement.children[1] && ulElement.children[1].childElementCount > 0)) {\n _this.updateDataList();\n }\n });\n }\n });\n }\n }\n });\n }\n };\n DropDownBase.prototype.handleVirtualKeyboardActions = function (e, pageCount) {\n // Used this method in component side.\n };\n DropDownBase.prototype.updatePopupState = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.updatePopupPosition = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.virtualSelectionAll = function (state, li, event) {\n // Used this method in component side.\n };\n DropDownBase.prototype.updateRemoteData = function () {\n this.setListData(this.dataSource, this.fields, this.query);\n };\n DropDownBase.prototype.bindChildItems = function (listItems, ulElement, fields, e) {\n var _this = this;\n if (listItems.length >= 100 && this.getModuleName() === 'autocomplete') {\n setTimeout(function () {\n var childNode = _this.remainingItems(_this.sortedData, fields);\n append(childNode, ulElement);\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.updateListValues();\n _this.raiseDataBound(listItems, e);\n }, 0);\n } else {\n this.raiseDataBound(listItems, e);\n }\n };\n DropDownBase.prototype.isObjectInArray = function (objectToFind, array) {\n return array.some(function (item) {\n return Object.keys(objectToFind).every(function (key) {\n return Object.prototype.hasOwnProperty.call(item, key) && item[key] === objectToFind[key];\n });\n });\n };\n DropDownBase.prototype.updateListValues = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.findListElement = function (list, findNode, attribute, value) {\n var liElement = null;\n if (list) {\n var listArr = [].slice.call(list.querySelectorAll(findNode));\n for (var index = 0; index < listArr.length; index++) {\n if (listArr[index].getAttribute(attribute) === value + '') {\n liElement = listArr[index];\n break;\n }\n }\n }\n return liElement;\n };\n DropDownBase.prototype.raiseDataBound = function (listItems, e) {\n this.hideSpinner();\n var dataBoundEventArgs = {\n items: listItems,\n e: e\n };\n this.trigger('dataBound', dataBoundEventArgs);\n };\n DropDownBase.prototype.remainingItems = function (dataSource, fields) {\n var spliceData = new DataManager(dataSource).executeLocal(new Query().skip(100));\n if (this.itemTemplate) {\n var listElements = this.templateListItem(spliceData, fields);\n return [].slice.call(listElements.childNodes);\n }\n var type = this.typeOfData(spliceData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return ListBase.createListItemFromArray(this.createElement, spliceData, true, this.listOption(spliceData, fields), this);\n }\n return ListBase.createListItemFromJson(this.createElement, spliceData, this.listOption(spliceData, fields), 1, true, this);\n };\n DropDownBase.prototype.emptyDataRequest = function (fields) {\n var listItems = [];\n this.onActionComplete(this.renderItems(listItems, fields), listItems);\n this.isRequested = false;\n this.isRequesting = false;\n this.hideSpinner();\n };\n DropDownBase.prototype.showSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.hideSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.onActionFailure = function (e) {\n this.liCollections = [];\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n if (!isNullOrUndefined(this.list)) {\n addClass([this.list], dropDownBaseClasses.noData);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.onActionComplete = function (ulElement, list, e) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n this.listData = list;\n if (this.isVirtualizationEnabled && !this.isCustomDataUpdated && !this.virtualSelectAll) {\n this.notify('setGeneratedData', {\n module: 'VirtualScroll'\n });\n }\n if (this.getModuleName() !== 'listbox') {\n ulElement.setAttribute('tabindex', '0');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['itemTemplate', 'groupTemplate', 'actionFailureTemplate', 'noRecordsTemplate']);\n }\n if (!this.isVirtualizationEnabled) {\n this.fixedHeaderElement = isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement : null;\n }\n if (this.getModuleName() === 'multiselect' && this.properties.allowCustomValue && this.fields.groupBy) {\n for (var i = 0; i < ulElement.childElementCount; i++) {\n if (ulElement.children[i].classList.contains('e-list-group-item')) {\n if (isNullOrUndefined(ulElement.children[i].innerHTML) || ulElement.children[i].innerHTML === '') {\n addClass([ulElement.children[i]], HIDE_GROUPLIST);\n }\n }\n if (ulElement.children[0].classList.contains('e-hide-group-header')) {\n setStyleAttribute(ulElement.children[1], {\n zIndex: 11\n });\n }\n }\n }\n if (!isNullOrUndefined(this.list)) {\n if (!this.isVirtualizationEnabled) {\n this.list.innerHTML = '';\n this.list.appendChild(ulElement);\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.postRender(this.list, list, this.bindEvent);\n }\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.postRender = function (listElement, list, bindEvent) {\n if (this.fields.disabled) {\n var liCollections = listElement.querySelectorAll('.' + dropDownBaseClasses.li);\n for (var index = 0; index < liCollections.length; index++) {\n if (JSON.parse(JSON.stringify(this.listData[index]))[this.fields.disabled]) {\n if (!isNullOrUndefined(this.fields.groupBy)) {\n var item = this.listData[index];\n var value = getValue(this.fields.value ? this.fields.value : 'value', item);\n var li = listElement.querySelector('li[data-value=\"' + value + '\"]');\n if (!isNullOrUndefined(li)) {\n this.disableListItem(li);\n }\n } else {\n this.disableListItem(liCollections[index]);\n }\n }\n }\n }\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var focusItem = this.fields.disabled ? listElement.querySelector('.' + dropDownBaseClasses.li + ':not(.e-disabled') : listElement.querySelector('.' + dropDownBaseClasses.li);\n var selectedItem = listElement.querySelector('.' + dropDownBaseClasses.selected);\n if (focusItem && !selectedItem) {\n if (this.isVirtualizationEnabled && this.viewPortInfo.startIndex !== 0) {\n var elements = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');\n focusItem = elements && elements.length > 0 ? elements[2] : focusItem;\n }\n if (focusItem) {\n focusItem.classList.add(dropDownBaseClasses.focus);\n }\n }\n if (list.length <= 0) {\n this.l10nUpdate();\n addClass([listElement], dropDownBaseClasses.noData);\n } else {\n listElement.classList.remove(dropDownBaseClasses.noData);\n }\n };\n /**\n * Get the query to do the data operation before list item generation.\n *\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {Query} Returns the query to do the data query operation.\n */\n DropDownBase.prototype.getQuery = function (query) {\n return query ? query : this.query ? this.query : new Query();\n };\n DropDownBase.prototype.updateVirtualizationProperties = function (itemCount, filtering, isCheckbox) {\n this.isVirtualizationEnabled = true;\n this.virtualizedItemsCount = itemCount;\n this.isAllowFiltering = filtering;\n this.isCheckBoxSelection = isCheckbox;\n };\n /**\n * To render the template content for group header element.\n *\n * @param {HTMLElement} listEle - Specifies the group list elements.\n * @returns {void}\n */\n DropDownBase.prototype.renderGroupTemplate = function (listEle) {\n if (this.fields.groupBy !== null && this.dataSource || this.element.querySelector('.' + dropDownBaseClasses.group)) {\n var dataSource = this.dataSource;\n var option = {\n groupTemplateID: this.groupTemplateId,\n isStringTemplate: this.isStringTemplate\n };\n var headerItems = listEle.querySelectorAll('.' + dropDownBaseClasses.group);\n var groupcheck = this.templateCompiler(this.groupTemplate);\n if (typeof this.groupTemplate !== 'function' && groupcheck) {\n var groupValue = select(this.groupTemplate, document).innerHTML.trim();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(groupValue, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', {\n module: 'CheckBoxSelection',\n item: tempHeaders[i]\n });\n }\n }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(this.groupTemplate, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', {\n module: 'CheckBoxSelection',\n item: tempHeaders[i]\n });\n }\n }\n }\n this.renderReactTemplates();\n }\n };\n /**\n * To create the ul li list items\n *\n * @param {object []} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the ul li list items.\n */\n DropDownBase.prototype.createListItems = function (dataSource, fields) {\n if (dataSource) {\n if (fields.groupBy || this.element.querySelector('optgroup')) {\n if (fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n if (this.element.querySelector('optgroup') && this.isGroupChecking && this.getModuleName() === 'multiselect') {\n dataSource = ListBase.groupDataSource(dataSource, fields, this.sortOrder);\n } else {\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n }\n addClass([this.list], dropDownBaseClasses.grouping);\n } else if (this.getModuleName() !== 'listbox' || this.getModuleName() === 'listbox' && !this.preventDefActionFilter) {\n dataSource = this.getSortedDataSource(dataSource);\n }\n var options = this.listOption(dataSource, fields);\n var spliceData = dataSource.length > 100 ? new DataManager(dataSource).executeLocal(new Query().take(100)) : dataSource;\n this.sortedData = dataSource;\n return ListBase.createList(this.createElement, this.getModuleName() === 'autocomplete' ? spliceData : dataSource, options, true, this);\n }\n return null;\n };\n DropDownBase.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldValues = !isNullOrUndefined(fields.properties) ? fields.properties : fields;\n var options = fields.text !== null || fields.value !== null ? {\n fields: fieldValues,\n showIcon: iconCss,\n ariaAttributes: {\n groupItemRole: 'presentation'\n }\n } : {\n fields: {\n value: 'text'\n }\n };\n return extend({}, options, fields, true);\n };\n DropDownBase.prototype.setFloatingHeader = function (e) {\n if (!isNullOrUndefined(this.list) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (isNullOrUndefined(this.fixedHeaderElement)) {\n this.fixedHeaderElement = this.createElement('div', {\n className: dropDownBaseClasses.fixedHead\n });\n if (!isNullOrUndefined(this.list) && !this.list.querySelector('li').classList.contains(dropDownBaseClasses.group)) {\n this.fixedHeaderElement.style.display = 'none';\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && !isNullOrUndefined(this.list)) {\n prepend([this.fixedHeaderElement], this.list);\n }\n this.setFixedHeader();\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && this.fixedHeaderElement.style.zIndex === '0') {\n this.setFixedHeader();\n }\n this.scrollStop(e);\n }\n };\n DropDownBase.prototype.scrollStop = function (e, isDownkey) {\n var target = !isNullOrUndefined(e) ? e.target : this.list;\n var computedHeight = getComputedStyle(this.getValidLi(), null).getPropertyValue('height');\n var computedMarginValue = getComputedStyle(this.getValidLi(), null).getPropertyValue('margin-bottom');\n var marginValue = parseInt(computedMarginValue, 10);\n var liHeight = this.getModuleName() === 'multiselect' ? parseFloat(computedHeight) : parseInt(computedHeight, 10);\n var topIndex = Math.round(target.scrollTop / (liHeight + marginValue));\n var liCollections = this.list.querySelectorAll('li' + ':not(.e-hide-listitem)');\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var count = 0;\n var isCount = false;\n for (var i = topIndex; i > -1; i--) {\n var index = this.isVirtualizationEnabled ? i + virtualListCount : i;\n if (this.isVirtualizationEnabled) {\n if (isCount) {\n count++;\n }\n if (this.fixedHeaderElement && this.updateGroupHeader(index, liCollections, target)) {\n break;\n }\n if (isDownkey) {\n if (!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.selected) && this.getModuleName() !== 'autocomplete' || !isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.focus) && this.getModuleName() === 'autocomplete') {\n count++;\n isCount = true;\n }\n }\n } else {\n if (this.updateGroupHeader(index, liCollections, target)) {\n break;\n }\n }\n }\n };\n DropDownBase.prototype.getPageCount = function (returnExactCount) {\n if (this.list) {\n var liHeight = this.list.classList.contains(dropDownBaseClasses.noData) ? null : getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n var pageCount = Math.round(this.list.getBoundingClientRect().height / parseInt(liHeight, 10));\n return returnExactCount ? pageCount : Math.round(pageCount);\n } else {\n return 0;\n }\n };\n DropDownBase.prototype.updateGroupHeader = function (index, liCollections, target) {\n if (!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.group)) {\n this.updateGroupFixedHeader(liCollections[index], target);\n return true;\n } else {\n this.fixedHeaderElement.style.display = 'none';\n this.fixedHeaderElement.style.top = 'none';\n return false;\n }\n };\n DropDownBase.prototype.updateGroupFixedHeader = function (element, target) {\n if (this.fixedHeaderElement) {\n if (!isNullOrUndefined(element.innerHTML)) {\n this.fixedHeaderElement.innerHTML = element.innerHTML;\n }\n this.fixedHeaderElement.style.position = 'fixed';\n this.fixedHeaderElement.style.top = this.list.parentElement.offsetTop + this.list.offsetTop - window.scrollY + 'px';\n this.fixedHeaderElement.style.display = 'block';\n }\n };\n DropDownBase.prototype.getValidLi = function () {\n if (this.isVirtualizationEnabled) {\n return this.liCollections[0].classList.contains('e-virtual-list') ? this.liCollections[this.skeletonCount] : this.liCollections[0];\n }\n return this.liCollections[0];\n };\n /**\n * To render the list items\n *\n * @param {object[]} listData - Specifies the list of array of data.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {boolean} isCheckBoxUpdate - Specifies whether the list item is updated with checkbox.\n * @returns {HTMLElement} Return the list items.\n */\n DropDownBase.prototype.renderItems = function (listData, fields, isCheckBoxUpdate) {\n var ulElement;\n if (this.itemTemplate && listData) {\n if (this.getModuleName() === 'multiselect' && this.virtualSelectAll) {\n this.virtualSelectAllData = listData;\n listData = listData.slice(this.virtualItemStartIndex, this.virtualItemEndIndex);\n }\n var dataSource = listData;\n if (dataSource && fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n } else if (this.getModuleName() !== 'listbox' || this.getModuleName() === 'listbox' && !this.preventDefActionFilter) {\n dataSource = this.getSortedDataSource(dataSource);\n }\n this.sortedData = dataSource;\n var spliceData = dataSource.length > 100 ? new DataManager(dataSource).executeLocal(new Query().take(100)) : dataSource;\n ulElement = this.templateListItem(this.getModuleName() === 'autocomplete' ? spliceData : dataSource, fields);\n if (this.isIncrementalRequest) {\n this.incrementalLiCollections = ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n this.incrementalUlElement = ulElement;\n this.incrementalListData = listData;\n return ulElement;\n }\n if (this.isVirtualizationEnabled) {\n var oldUlElement = this.list.querySelector('.e-list-parent');\n var virtualUlElement = this.list.querySelector('.e-virtual-ddl-content');\n if (listData.length >= this.virtualizedItemsCount && oldUlElement && virtualUlElement || oldUlElement && virtualUlElement && this.isAllowFiltering || oldUlElement && virtualUlElement && this.getModuleName() === 'autocomplete') {\n if (this.getModuleName() === 'multiselect' && this.isCheckBoxSelection && this.appendUncheckList && this.list && this.list.querySelector('.e-active')) {\n virtualUlElement.appendChild(ulElement);\n isCheckBoxUpdate = true;\n } else {\n virtualUlElement.replaceChild(ulElement, oldUlElement);\n }\n var reOrderList = this.list.querySelectorAll('.e-reorder');\n if (this.list.querySelector('.e-virtual-ddl-content') && reOrderList && reOrderList.length > 0 && !isCheckBoxUpdate) {\n this.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList[0]);\n }\n this.updateListElements(listData);\n } else if (!virtualUlElement) {\n this.list.innerHTML = '';\n this.createVirtualContent();\n this.list.querySelector('.e-virtual-ddl-content').appendChild(ulElement);\n this.updateListElements(listData);\n }\n }\n } else {\n if (this.getModuleName() === 'multiselect' && this.virtualSelectAll) {\n this.virtualSelectAllData = listData;\n listData = listData.slice(this.virtualItemStartIndex, this.virtualItemEndIndex);\n }\n ulElement = this.createListItems(listData, fields);\n if (this.isIncrementalRequest) {\n this.incrementalLiCollections = ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n this.incrementalUlElement = ulElement;\n this.incrementalListData = listData;\n return ulElement;\n }\n if (this.isVirtualizationEnabled) {\n var oldUlElement = this.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n var virtualUlElement = this.list.querySelector('.e-virtual-ddl-content');\n var isRemovedUlelement = false;\n if (!oldUlElement && this.list.querySelector('.e-list-parent' + '.e-reorder')) {\n oldUlElement = this.list.querySelector('.e-list-parent' + '.e-reorder');\n }\n if (listData.length >= this.virtualizedItemsCount && oldUlElement && virtualUlElement || oldUlElement && virtualUlElement && this.isAllowFiltering || oldUlElement && virtualUlElement && (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect') || isRemovedUlelement) {\n if (!this.appendUncheckList) {\n virtualUlElement.replaceChild(ulElement, oldUlElement);\n } else {\n virtualUlElement.appendChild(ulElement);\n }\n this.updateListElements(listData);\n } else if (!virtualUlElement || !virtualUlElement.firstChild) {\n this.list.innerHTML = '';\n this.createVirtualContent();\n this.list.querySelector('.e-virtual-ddl-content').appendChild(ulElement);\n this.updateListElements(listData);\n }\n }\n }\n return ulElement;\n };\n DropDownBase.prototype.createVirtualContent = function () {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content'\n }));\n }\n };\n DropDownBase.prototype.updateListElements = function (listData) {\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.listData = listData;\n this.postRender(this.list, listData, this.bindEvent);\n };\n DropDownBase.prototype.templateListItem = function (dataSource, fields) {\n var option = this.listOption(dataSource, fields);\n option.templateID = this.itemTemplateId;\n option.isStringTemplate = this.isStringTemplate;\n var itemcheck = this.templateCompiler(this.itemTemplate);\n var ulElement;\n if (typeof this.itemTemplate !== 'function' && itemcheck) {\n var itemValue = select(this.itemTemplate, document).innerHTML.trim();\n ulElement = ListBase.renderContentTemplate(this.createElement, itemValue, dataSource, fields.properties, option, this);\n if (this.isVirtualizationEnabled && this.isReact) {\n this.renderReactTemplates();\n }\n return ulElement;\n } else {\n ulElement = ListBase.renderContentTemplate(this.createElement, this.itemTemplate, dataSource, fields.properties, option, this);\n if (this.isVirtualizationEnabled && this.isReact) {\n this.renderReactTemplates();\n }\n return ulElement;\n }\n };\n DropDownBase.prototype.typeOfData = function (items) {\n var item = {\n typeof: null,\n item: null\n };\n for (var i = 0; !isNullOrUndefined(items) && i < items.length; i++) {\n if (!isNullOrUndefined(items[i])) {\n var listDataType = typeof items[i] === 'string' || typeof items[i] === 'number' || typeof items[i] === 'boolean';\n var isNullData = listDataType ? isNullOrUndefined(items[i]) : isNullOrUndefined(getValue(this.fields.value ? this.fields.value : 'value', items[i]));\n if (!isNullData) {\n return item = {\n typeof: typeof items[i],\n item: items[i]\n };\n }\n }\n }\n return item;\n };\n DropDownBase.prototype.setFixedHeader = function () {\n if (!isNullOrUndefined(this.list)) {\n this.list.parentElement.style.display = 'block';\n }\n var borderWidth = 0;\n if (this.list && this.list.parentElement) {\n borderWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-width'), 10);\n /*Shorthand property not working in Firefox for getComputedStyle method.\n Refer bug report https://bugzilla.mozilla.org/show_bug.cgi?id=137688\n Refer alternate solution https://stackoverflow.com/a/41696234/9133493*/\n if (isNaN(borderWidth)) {\n var borderTopWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-top-width'), 10);\n var borderBottomWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-bottom-width'), 10);\n var borderLeftWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-left-width'), 10);\n var borderRightWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-right-width'), 10);\n borderWidth = borderTopWidth + borderBottomWidth + borderLeftWidth + borderRightWidth;\n }\n }\n if (!isNullOrUndefined(this.liCollections)) {\n var liWidth = this.getValidLi().offsetWidth - borderWidth;\n this.fixedHeaderElement.style.width = liWidth.toString() + 'px';\n }\n setStyleAttribute(this.fixedHeaderElement, {\n zIndex: 10\n });\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group + ':not(.e-hide-listitem)');\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n };\n DropDownBase.prototype.getSortedDataSource = function (dataSource) {\n if (dataSource && this.sortOrder !== 'None') {\n var textField = this.fields.text ? this.fields.text : 'text';\n if (this.typeOfData(dataSource).typeof === 'string' || this.typeOfData(dataSource).typeof === 'number' || this.typeOfData(dataSource).typeof === 'boolean') {\n textField = '';\n }\n dataSource = ListBase.getDataSource(dataSource, ListBase.addSorting(this.sortOrder, textField));\n }\n return dataSource;\n };\n /**\n * Return the index of item which matched with given value in data source\n *\n * @param {string | number | boolean} value - Specifies given value.\n * @returns {number} Returns the index of the item.\n */\n DropDownBase.prototype.getIndexByValue = function (value) {\n var index;\n var listItems = [];\n if (this.fields.disabled && this.getModuleName() === 'multiselect' && this.liCollections) {\n listItems = this.liCollections;\n } else {\n listItems = this.getItems();\n }\n for (var i = 0; i < listItems.length; i++) {\n if (!isNullOrUndefined(value) && listItems[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n return index;\n };\n /**\n * Return the index of item which matched with given value in data source\n *\n * @param {string | number | boolean} value - Specifies given value.\n * @param {HTMLElement} ulElement - Specifies given value.\n * @returns {number} Returns the index of the item.\n */\n DropDownBase.prototype.getIndexByValueFilter = function (value, ulElement) {\n var index;\n if (!ulElement) {\n return null;\n }\n var listItems = ulElement.querySelectorAll('li' + ':not(.e-list-group-item)');\n if (listItems) {\n for (var i = 0; i < listItems.length; i++) {\n if (!isNullOrUndefined(value) && listItems[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n }\n return index;\n };\n /**\n * To dispatch the event manually\n *\n * @param {HTMLElement} element - Specifies the element to dispatch the event.\n * @param {string} type - Specifies the name of the event.\n * @returns {void}\n */\n DropDownBase.prototype.dispatchEvent = function (element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n if (element) {\n element.dispatchEvent(evt);\n }\n };\n /**\n * To set the current fields\n *\n * @returns {void}\n */\n DropDownBase.prototype.setFields = function () {\n if (this.fields.value && !this.fields.text) {\n this.updateFields(this.fields.value, this.fields.value);\n } else if (!this.fields.value && this.fields.text) {\n this.updateFields(this.fields.text, this.fields.text);\n } else if (!this.fields.value && !this.fields.text) {\n this.isPrimitiveData = true;\n this.updateFields('text', 'text');\n }\n };\n /**\n * reset the items list.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - Specifies the event.\n * @returns {void}\n */\n DropDownBase.prototype.resetList = function (dataSource, fields, query, e) {\n if (this.list) {\n if (this.element.tagName === 'SELECT' && this.element.options.length > 0 || this.element.tagName === 'UL' && this.element.childNodes.length > 0) {\n var data = dataSource instanceof Array ? dataSource.length > 0 : !isNullOrUndefined(dataSource);\n if (!data && this.selectData && this.selectData.length > 0) {\n dataSource = this.selectData;\n }\n }\n dataSource = this.getModuleName() === 'combobox' && this.selectData && dataSource instanceof Array && dataSource.length < this.selectData.length && this.addedNewItem ? this.selectData : dataSource;\n this.addedNewItem = false;\n this.setListData(dataSource, fields, query, e);\n }\n };\n DropDownBase.prototype.updateSelectElementData = function (isFiltering) {\n if ((isFiltering || this.isVirtualizationEnabled) && isNullOrUndefined(this.selectData) && this.listData && this.listData.length > 0) {\n this.selectData = this.listData;\n }\n };\n DropDownBase.prototype.updateSelection = function () {\n // This is for after added the item, need to update the selected index values.\n };\n DropDownBase.prototype.renderList = function () {\n // This is for render the list items.\n this.render();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateDataSource = function (props, oldProps) {\n this.resetList(this.dataSource);\n this.totalItemCount = this.dataSource instanceof DataManager ? this.dataSource.dataSource.json.length : 0;\n };\n DropDownBase.prototype.setUpdateInitial = function (props, newProp, oldProp) {\n this.isDataFetched = false;\n this.isPrimitiveData = false;\n var updateData = {};\n for (var j = 0; props.length > j; j++) {\n if (newProp[props[j]] && props[j] === 'fields') {\n this.setFields();\n updateData[props[j]] = newProp[props[j]];\n } else if (newProp[props[j]]) {\n updateData[props[j]] = newProp[props[j]];\n }\n }\n if (Object.keys(updateData).length > 0) {\n if (Object.keys(updateData).indexOf('dataSource') === -1) {\n updateData.dataSource = this.dataSource;\n }\n if (this.getModuleName() === 'listbox') {\n if (!this.isReact || this.isReact && (!isNullOrUndefined(newProp.dataSource) || !isNullOrUndefined(newProp.sortOrder))) {\n this.updateDataSource(updateData, oldProp);\n }\n } else {\n this.isDynamicData = true;\n this.updateDataSource(updateData, oldProp);\n }\n }\n };\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n *\n * @param {DropDownBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownBaseModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'dropdownbase') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n this.setUpdateInitial(['sortOrder', 'itemTemplate'], newProp);\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 'sortOrder':\n case 'dataSource':\n case 'itemTemplate':\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'groupTemplate':\n this.renderGroupTemplate(this.list);\n if (this.ulElement && this.fixedHeaderElement) {\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group);\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n }\n break;\n case 'locale':\n if (this.list && !isNullOrUndefined(this.liCollections) && this.liCollections.length === 0) {\n this.l10nUpdate();\n }\n break;\n case 'zIndex':\n this.setProperties({\n zIndex: newProp.zIndex\n }, true);\n this.setZIndex();\n break;\n }\n }\n };\n /**\n * Build and render the component\n *\n * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - Specifies the event.\n * @param {boolean} isEmptyData - Specifies the component to initialize with list data or not.\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.render = function (e, isEmptyData) {\n if (this.getModuleName() === 'listbox') {\n this.list = this.createElement('div', {\n className: dropDownBaseClasses.content,\n attrs: {\n 'tabindex': '0'\n }\n });\n } else {\n this.list = this.createElement('div', {\n className: dropDownBaseClasses.content\n });\n }\n this.list.classList.add(dropDownBaseClasses.root);\n this.setFields();\n var rippleModel = {\n duration: 300,\n selector: '.' + dropDownBaseClasses.li\n };\n this.rippleFun = rippleEffect(this.list, rippleModel);\n var group = this.element.querySelector('select>optgroup');\n if ((this.fields.groupBy || !isNullOrUndefined(group)) && !this.isGroupChecking) {\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n EventHandler.add(document, 'scroll', this.updateGroupFixedHeader, this);\n }\n if (this.getModuleName() === 'dropdownbase') {\n if (this.element.getAttribute('tabindex')) {\n this.list.setAttribute('tabindex', this.element.getAttribute('tabindex'));\n }\n removeClass([this.element], dropDownBaseClasses.root);\n this.element.style.display = 'none';\n var wrapperElement = this.createElement('div');\n this.element.parentElement.insertBefore(wrapperElement, this.element);\n wrapperElement.appendChild(this.element);\n wrapperElement.appendChild(this.list);\n }\n this.setEnableRtl();\n if (!isEmptyData) {\n this.initialize(e);\n }\n };\n DropDownBase.prototype.removeScrollEvent = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n }\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 DropDownBase.prototype.getModuleName = function () {\n return 'dropdownbase';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownBase.prototype.getItems = function () {\n return this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Adds a new item to the 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 * @deprecated\n */\n DropDownBase.prototype.addItem = function (items, itemIndex) {\n if (!this.list || this.list.textContent === this.noRecordsTemplate && this.getModuleName() !== 'listbox') {\n this.renderList();\n }\n if (this.sortOrder !== 'None' && isNullOrUndefined(itemIndex)) {\n var newList = [].slice.call(this.listData);\n newList.push(items);\n newList = this.getSortedDataSource(newList);\n if (this.fields.groupBy) {\n newList = ListBase.groupDataSource(newList, this.fields.properties, this.sortOrder);\n itemIndex = newList.indexOf(items);\n } else {\n itemIndex = newList.indexOf(items);\n }\n }\n var itemsCount = this.getItems().length;\n var isListboxEmpty = itemsCount === 0;\n var selectedItemValue = this.list.querySelector('.' + dropDownBaseClasses.selected);\n items = items instanceof Array ? items : [items];\n var index;\n index = isNullOrUndefined(itemIndex) || itemIndex < 0 || itemIndex > itemsCount - 1 ? itemsCount : itemIndex;\n var fields = this.fields;\n if (items && fields.groupBy) {\n items = ListBase.groupDataSource(items, fields.properties);\n }\n var liCollections = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var isHeader = item.isHeader;\n var li = this.createElement('li', {\n className: isHeader ? dropDownBaseClasses.group : dropDownBaseClasses.li,\n id: 'option-add-' + i\n });\n var itemText = item instanceof Object ? getValue(fields.text, item) : item;\n if (isHeader) {\n li.innerText = itemText;\n }\n if (this.itemTemplate && !isHeader) {\n var itemCheck = this.templateCompiler(this.itemTemplate);\n var compiledString = typeof this.itemTemplate !== 'function' && itemCheck ? compile(select(this.itemTemplate, document).innerHTML.trim()) : compile(this.itemTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var addItemTemplate = compiledString(item, this, 'itemTemplate', this.itemTemplateId, this.isStringTemplate, null, li);\n if (addItemTemplate) {\n append(addItemTemplate, li);\n }\n } else if (!isHeader) {\n li.appendChild(document.createTextNode(itemText));\n }\n li.setAttribute('data-value', item instanceof Object ? getValue(fields.value, item) : item);\n li.setAttribute('role', 'option');\n this.notify('addItem', {\n module: 'CheckBoxSelection',\n item: li\n });\n liCollections.push(li);\n if (this.getModuleName() === 'listbox') {\n this.listData.splice(isListboxEmpty ? this.listData.length : index, 0, item);\n if (this.listData.length !== this.sortedData.length) {\n this.sortedData = this.listData;\n }\n } else {\n this.listData.push(item);\n }\n if (this.sortOrder === 'None' && isNullOrUndefined(itemIndex) && index === 0) {\n index = null;\n }\n if (this.getModuleName() === 'listbox') {\n this.updateActionCompleteData(li, item, isListboxEmpty ? null : index + i);\n } else {\n this.updateActionCompleteData(li, item, index);\n }\n //Listbox event\n this.trigger('beforeItemRender', {\n element: li,\n item: item\n });\n }\n if (itemsCount === 0 && isNullOrUndefined(this.list.querySelector('ul'))) {\n if (!isNullOrUndefined(this.list)) {\n this.list.innerHTML = '';\n this.list.classList.remove(dropDownBaseClasses.noData);\n this.isAddNewItemTemplate = true;\n if (!isNullOrUndefined(this.ulElement)) {\n this.list.appendChild(this.ulElement);\n }\n }\n this.liCollections = liCollections;\n if (!isNullOrUndefined(liCollections) && !isNullOrUndefined(this.ulElement)) {\n append(liCollections, this.ulElement);\n }\n this.updateAddItemList(this.list, itemsCount);\n } else {\n if (this.getModuleName() === 'listbox' && itemsCount === 0) {\n this.ulElement.innerHTML = '';\n }\n var attr = [];\n for (var i = 0; i < items.length; i++) {\n var listGroupItem = this.ulElement.querySelectorAll('.e-list-group-item');\n for (var j = 0; j < listGroupItem.length; j++) {\n attr[j] = listGroupItem[j].innerText;\n }\n if (attr.indexOf(liCollections[i].innerText) > -1 && fields.groupBy) {\n for (var j = 0; j < listGroupItem.length; j++) {\n if (attr[j] === liCollections[i].innerText) {\n if (this.sortOrder === 'None') {\n this.ulElement.insertBefore(liCollections[i + 1], listGroupItem[j + 1]);\n } else {\n this.ulElement.insertBefore(liCollections[i + 1], this.ulElement.childNodes[itemIndex]);\n }\n i = i + 1;\n break;\n }\n }\n } else {\n if (this.liCollections[index] && this.liCollections[index].parentNode) {\n this.liCollections[index].parentNode.insertBefore(liCollections[i], this.liCollections[index]);\n } else {\n if (itemIndex && this.getModuleName() === 'listbox') {\n this.ulElement.insertBefore(liCollections[i], this.ulElement.childNodes[itemIndex + i]);\n } else {\n this.ulElement.appendChild(liCollections[i]);\n }\n }\n }\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 0, liCollections[i]);\n this.liCollections = tempLi;\n index += 1;\n if (this.getModuleName() === 'multiselect') {\n this.updateDataList();\n }\n }\n }\n if (this.getModuleName() === 'listbox' && this.isReact) {\n this.renderReactTemplates();\n }\n if (selectedItemValue || itemIndex === 0) {\n this.updateSelection();\n }\n this.addedNewItem = true;\n };\n /**\n * Checks if the given HTML element is disabled.\n *\n * @param {HTMLElement} li - The HTML element to check.\n * @returns {boolean} - Returns true if the element is disabled, otherwise false.\n */\n DropDownBase.prototype.isDisabledElement = function (li) {\n if (li && li.classList.contains('e-disabled')) {\n return true;\n }\n return false;\n };\n /**\n * Checks whether the list item at the specified index is disabled.\n *\n * @param {number} index - The index of the list item to check.\n * @returns {boolean} True if the list item is disabled, false otherwise.\n */\n DropDownBase.prototype.isDisabledItemByIndex = function (index) {\n if (this.fields.disabled && this.liCollections) {\n return this.isDisabledElement(this.liCollections[index]);\n }\n return false;\n };\n /**\n * Disables the given list item.\n *\n * @param { HTMLLIElement } li - The list item to disable.\n * @returns {void}\n */\n DropDownBase.prototype.disableListItem = function (li) {\n li.classList.add('e-disabled');\n li.setAttribute('aria-disabled', 'true');\n li.setAttribute('aria-selected', 'false');\n };\n DropDownBase.prototype.validationAttribute = function (target, hidden) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n hidden.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (!target.getAttribute(attributes[i])) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n hidden.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n DropDownBase.prototype.setZIndex = function () {\n // this is for component wise\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateActionCompleteData = function (li, item, index) {\n // this is for ComboBox custom value\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateAddItemList = function (list, itemCount) {\n // this is for multiselect add item\n };\n DropDownBase.prototype.updateDataList = function () {\n // this is for multiselect update list items\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownBase.prototype.getDataByValue = function (value) {\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n if (!isNullOrUndefined(item) && item === value) {\n return item;\n }\n }\n } else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n if (!isNullOrUndefined(item) && getValue(this.fields.value ? this.fields.value : 'value', item) === value) {\n return item;\n }\n }\n }\n }\n return null;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownBase.prototype.destroy = function () {\n if (document) {\n EventHandler.remove(document, 'scroll', this.updateGroupFixedHeader);\n if (document.body.contains(this.list)) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n if (!isNullOrUndefined(this.rippleFun)) {\n this.rippleFun();\n }\n detach(this.list);\n }\n }\n this.liCollections = null;\n this.ulElement = null;\n this.list = null;\n this.enableRtlElements = null;\n this.rippleFun = 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)], DropDownBase.prototype, \"fields\", void 0);\n __decorate([Property(null)], DropDownBase.prototype, \"itemTemplate\", void 0);\n __decorate([Property(null)], DropDownBase.prototype, \"groupTemplate\", void 0);\n __decorate([Property('No records found')], DropDownBase.prototype, \"noRecordsTemplate\", void 0);\n __decorate([Property('Request failed')], DropDownBase.prototype, \"actionFailureTemplate\", void 0);\n __decorate([Property('None')], DropDownBase.prototype, \"sortOrder\", void 0);\n __decorate([Property([])], DropDownBase.prototype, \"dataSource\", void 0);\n __decorate([Property(null)], DropDownBase.prototype, \"query\", void 0);\n __decorate([Property('StartsWith')], DropDownBase.prototype, \"filterType\", void 0);\n __decorate([Property(true)], DropDownBase.prototype, \"ignoreCase\", void 0);\n __decorate([Property(1000)], DropDownBase.prototype, \"zIndex\", void 0);\n __decorate([Property(false)], DropDownBase.prototype, \"ignoreAccent\", void 0);\n __decorate([Property()], DropDownBase.prototype, \"locale\", void 0);\n __decorate([Event()], DropDownBase.prototype, \"actionBegin\", void 0);\n __decorate([Event()], DropDownBase.prototype, \"actionComplete\", void 0);\n __decorate([Event()], DropDownBase.prototype, \"actionFailure\", void 0);\n __decorate([Event()], DropDownBase.prototype, \"select\", void 0);\n __decorate([Event()], DropDownBase.prototype, \"dataBound\", void 0);\n __decorate([Event()], DropDownBase.prototype, \"created\", void 0);\n __decorate([Event()], DropDownBase.prototype, \"destroyed\", void 0);\n DropDownBase = __decorate([NotifyPropertyChanges], DropDownBase);\n return DropDownBase;\n}(Component);\nexport { DropDownBase };","import { detach, getUniqueID, rippleEffect, setValue, attributes } from '@syncfusion/ej2-base';\nimport { getValue, addClass, deleteObject } from '@syncfusion/ej2-base';\n/**\n * Initialize wrapper element for angular.\n *\n * @private\n *\n * @param {CreateElementArgs} createElement - Specifies created element args\n * @param {string} tag - Specifies tag name\n * @param {string} type - Specifies type name\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} WRAPPER - Specifies wrapper element\n * @param {string} role - Specifies role\n * @returns {HTMLInputElement} - Input Element\n */\nexport function wrapperInitialize(createElement, tag, type, element, WRAPPER, role) {\n var input = element;\n if (element.tagName === tag) {\n var ejInstance = getValue('ej2_instances', element);\n input = createElement('input', {\n attrs: {\n 'type': type\n }\n });\n var props = ['change', 'cssClass', 'label', 'labelPosition', 'id'];\n for (var index = 0, len = element.attributes.length; index < len; index++) {\n if (props.indexOf(element.attributes[index].nodeName) === -1) {\n input.setAttribute(element.attributes[index].nodeName, element.attributes[index].nodeValue);\n }\n }\n attributes(element, {\n 'class': WRAPPER\n });\n element.appendChild(input);\n element.classList.add(role);\n element.classList.remove(role);\n setValue('ej2_instances', ejInstance, input);\n deleteObject(element, 'ej2_instances');\n }\n return input;\n}\n/**\n * Get the text node.\n *\n * @param {HTMLElement} element - Specifies html element\n * @private\n * @returns {Node} - Text node.\n */\nexport function getTextNode(element) {\n var node;\n var childnode = element.childNodes;\n for (var i = 0; i < childnode.length; i++) {\n node = childnode[i];\n if (node.nodeType === 3) {\n return node;\n }\n }\n return null;\n}\n/**\n * Destroy the button components.\n *\n * @private\n * @param {Switch | CheckBox} ejInst - Specifies eJ2 Instance\n * @param {Element} wrapper - Specifies wrapper element\n * @param {string} tagName - Specifies tag name\n * @returns {void}\n */\nexport function destroy(ejInst, wrapper, tagName) {\n if (tagName === 'INPUT') {\n wrapper.parentNode.insertBefore(ejInst.element, wrapper);\n detach(wrapper);\n ejInst.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n ejInst.element.removeAttribute(key);\n });\n } else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n ejInst.element = wrapper;\n }\n}\n/**\n * Initialize control pre rendering.\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies proxy\n * @param {string} control - Specifies control\n * @param {string} wrapper - Specifies wrapper element\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} moduleName - Specifies module name\n * @returns {void}\n */\nexport function preRender(proxy, control, wrapper, element, moduleName) {\n element = wrapperInitialize(proxy.createElement, control, 'checkbox', element, wrapper, moduleName);\n proxy.element = element;\n if (proxy.element.getAttribute('type') !== 'checkbox') {\n proxy.element.setAttribute('type', 'checkbox');\n }\n if (!proxy.element.id) {\n proxy.element.id = getUniqueID('e-' + moduleName);\n }\n}\n/**\n * Creates CheckBox component UI with theming and ripple support.\n *\n * @private\n * @param {CreateElementArgs} createElement - Specifies Created Element args\n * @param {boolean} enableRipple - Specifies ripple effect\n * @param {CheckBoxUtilModel} options - Specifies Checkbox util Model\n * @returns {Element} - Checkbox Element\n */\nexport function createCheckBox(createElement, enableRipple, options) {\n if (enableRipple === void 0) {\n enableRipple = false;\n }\n if (options === void 0) {\n options = {};\n }\n var wrapper = createElement('div', {\n className: 'e-checkbox-wrapper e-css'\n });\n if (options.cssClass) {\n addClass([wrapper], options.cssClass.split(' '));\n }\n if (options.enableRtl) {\n wrapper.classList.add('e-rtl');\n }\n if (enableRipple) {\n var rippleSpan = createElement('span', {\n className: 'e-ripple-container'\n });\n rippleEffect(rippleSpan, {\n isCenterRipple: true,\n duration: 400\n });\n wrapper.appendChild(rippleSpan);\n }\n var frameSpan = createElement('span', {\n className: 'e-frame e-icons'\n });\n if (options.checked) {\n frameSpan.classList.add('e-check');\n }\n wrapper.appendChild(frameSpan);\n if (options.label) {\n var labelSpan = createElement('span', {\n className: 'e-label'\n });\n if (options.disableHtmlEncode) {\n labelSpan.textContent = options.label;\n } else {\n labelSpan.innerHTML = options.label;\n }\n wrapper.appendChild(labelSpan);\n }\n return wrapper;\n}\n/**\n * Handles ripple mouse.\n *\n * @private\n * @param {MouseEvent} e - Specifies mouse event\n * @param {Element} rippleSpan - Specifies Ripple span element\n * @returns {void}\n */\nexport function rippleMouseHandler(e, rippleSpan) {\n if (rippleSpan) {\n var event_1 = document.createEvent('MouseEvents');\n event_1.initEvent(e.type, false, true);\n rippleSpan.dispatchEvent(event_1);\n }\n}\n/**\n * Append hidden input to given element\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies Proxy\n * @param {Element} wrap - Specifies Wrapper ELement\n * @returns {void}\n */\nexport function setHiddenInput(proxy, wrap) {\n if (proxy.element.getAttribute('ejs-for')) {\n wrap.appendChild(proxy.createElement('input', {\n attrs: {\n 'name': proxy.name || proxy.element.name,\n 'value': 'false',\n 'type': 'hidden'\n }\n }));\n }\n}\n/**\n * Represents the event arguments for a \"beforeChange\" event.\n *\n * This object contains details about an action that is about to occur, allowing you to intercept and cancel the action before it's finalized.\n */\nvar BeforeChangeEventArgs = /** @class */function () {\n function BeforeChangeEventArgs() {}\n return BeforeChangeEventArgs;\n}();\nexport { BeforeChangeEventArgs };","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};\nimport { Property, NotifyPropertyChanges, Component, isBlazor, isRippleEnabled } from '@syncfusion/ej2-base';\nimport { addClass, Event, detach, removeClass } from '@syncfusion/ej2-base';\nimport { rippleEffect, EventHandler, Observer, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getTextNode } from '../common/common';\n/**\n * Defines the icon position of button.\n */\nexport var IconPosition;\n(function (IconPosition) {\n /**\n * Positions the Icon at the left of the text content in the Button.\n */\n IconPosition[\"Left\"] = \"Left\";\n /**\n * Positions the Icon at the right of the text content in the Button.\n */\n IconPosition[\"Right\"] = \"Right\";\n /**\n * Positions the Icon at the top of the text content in the Button.\n */\n IconPosition[\"Top\"] = \"Top\";\n /**\n * Positions the Icon at the bottom of the text content in the Button.\n */\n IconPosition[\"Bottom\"] = \"Bottom\";\n})(IconPosition || (IconPosition = {}));\nexport var buttonObserver = new Observer();\nvar cssClassName = {\n RTL: 'e-rtl',\n BUTTON: 'e-btn',\n PRIMARY: 'e-primary',\n ICONBTN: 'e-icon-btn'\n};\n/**\n * The Button is a graphical user interface element that triggers an event on its click action. It can contain a text, an image, or both.\n * ```html\n * <button id=\"button\">Button</button>\n * ```\n * ```typescript\n * <script>\n * var btnObj = new Button();\n * btnObj.appendTo(\"#button\");\n * </script>\n * ```\n */\nvar Button = /** @class */function (_super) {\n __extends(Button, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {ButtonModel} options - Specifies the button model\n * @param {string|HTMLButtonElement} element - Specifies the target element\n */\n function Button(options, element) {\n return _super.call(this, options, element) || this;\n }\n Button.prototype.preRender = function () {\n // pre render code snippets\n };\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Button.prototype.render = function () {\n this.initialize();\n this.removeRippleEffect = rippleEffect(this.element, {\n selector: '.' + cssClassName.BUTTON\n });\n this.renderComplete();\n };\n Button.prototype.initialize = function () {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n if (!isBlazor() || isBlazor() && this.getModuleName() !== 'progress-btn') {\n if (this.content) {\n var tempContent = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(this.content) : this.content;\n this.element.innerHTML = tempContent;\n }\n this.setIconCss();\n }\n if (this.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n if (this.disabled) {\n this.controlStatus(this.disabled);\n } else {\n this.wireEvents();\n }\n };\n Button.prototype.controlStatus = function (disabled) {\n this.element.disabled = disabled;\n };\n Button.prototype.setIconCss = function () {\n if (this.iconCss) {\n var span = this.createElement('span', {\n className: 'e-btn-icon ' + this.iconCss\n });\n if (!this.element.textContent.trim()) {\n this.element.classList.add(cssClassName.ICONBTN);\n } else {\n span.classList.add('e-icon-' + this.iconPosition.toLowerCase());\n if (this.iconPosition === 'Top' || this.iconPosition === 'Bottom') {\n this.element.classList.add('e-' + this.iconPosition.toLowerCase() + '-icon-btn');\n }\n }\n var node = this.element.childNodes[0];\n if (node && (this.iconPosition === 'Left' || this.iconPosition === 'Top')) {\n this.element.insertBefore(span, node);\n } else {\n this.element.appendChild(span);\n }\n }\n };\n Button.prototype.wireEvents = function () {\n if (this.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n };\n Button.prototype.unWireEvents = function () {\n if (this.isToggle) {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n }\n };\n Button.prototype.btnClickHandler = function () {\n if (this.element.classList.contains('e-active')) {\n this.element.classList.remove('e-active');\n } else {\n this.element.classList.add('e-active');\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Button.prototype.destroy = function () {\n var classList = [cssClassName.PRIMARY, cssClassName.RTL, cssClassName.ICONBTN, 'e-success', 'e-info', 'e-danger', 'e-warning', 'e-flat', 'e-outline', 'e-small', 'e-bigger', 'e-active', 'e-round', 'e-top-icon-btn', 'e-bottom-icon-btn'];\n if (this.cssClass) {\n classList = classList.concat(this.cssClass.split(/\\s+/).filter(function (c) {\n return c.length > 0;\n }));\n }\n _super.prototype.destroy.call(this);\n removeClass([this.element], classList);\n if (!this.element.getAttribute('class')) {\n this.element.removeAttribute('class');\n }\n if (this.disabled) {\n this.element.removeAttribute('disabled');\n }\n if (this.content) {\n this.element.innerHTML = this.element.innerHTML.replace(this.content, '');\n }\n var span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.unWireEvents();\n if (isRippleEnabled) {\n this.removeRippleEffect();\n }\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Button.prototype.getModuleName = function () {\n return 'btn';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist Data\n * @private\n */\n Button.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @private\n * @returns {void}\n */\n Button.Inject = function () {\n // Inject code snippets\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ButtonModel} newProp - Specifies new properties\n * @param {ButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Button.prototype.onPropertyChanged = function (newProp, oldProp) {\n var span = this.element.querySelector('span.e-btn-icon');\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'isPrimary':\n if (newProp.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n } else {\n this.element.classList.remove(cssClassName.PRIMARY);\n }\n break;\n case 'disabled':\n this.controlStatus(newProp.disabled);\n break;\n case 'iconCss':\n {\n span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n if (newProp.iconCss) {\n span.className = 'e-btn-icon ' + newProp.iconCss;\n if (this.element.textContent.trim()) {\n if (this.iconPosition === 'Left') {\n span.classList.add('e-icon-left');\n } else {\n span.classList.add('e-icon-right');\n }\n }\n } else {\n detach(span);\n }\n } else {\n this.setIconCss();\n }\n break;\n }\n case 'iconPosition':\n removeClass([this.element], ['e-top-icon-btn', 'e-bottom-icon-btn']);\n span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.setIconCss();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(/\\s+/).filter(function (c) {\n return c.length > 0;\n }));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n } else {\n this.element.classList.remove(cssClassName.RTL);\n }\n break;\n case 'content':\n {\n var node = getTextNode(this.element);\n if (!node) {\n this.element.classList.remove(cssClassName.ICONBTN);\n }\n if (!isBlazor() || isBlazor() && !this.isServerRendered && this.getModuleName() !== 'progress-btn') {\n if (this.enableHtmlSanitizer) {\n newProp.content = SanitizeHtmlHelper.sanitize(newProp.content);\n }\n this.element.innerHTML = newProp.content;\n this.setIconCss();\n }\n break;\n }\n case 'isToggle':\n if (newProp.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n } else {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n removeClass([this.element], ['e-active']);\n }\n break;\n }\n }\n };\n /**\n * Click the button element\n * its native method\n *\n * @public\n * @returns {void}\n */\n Button.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to Button\n * its native method\n *\n * @public\n * @returns {void}\n */\n Button.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([Property('Left')], Button.prototype, \"iconPosition\", void 0);\n __decorate([Property('')], Button.prototype, \"iconCss\", void 0);\n __decorate([Property(false)], Button.prototype, \"disabled\", void 0);\n __decorate([Property(false)], Button.prototype, \"isPrimary\", void 0);\n __decorate([Property('')], Button.prototype, \"cssClass\", void 0);\n __decorate([Property('')], Button.prototype, \"content\", void 0);\n __decorate([Property(false)], Button.prototype, \"isToggle\", void 0);\n __decorate([Property()], Button.prototype, \"locale\", void 0);\n __decorate([Property(true)], Button.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([Event()], Button.prototype, \"created\", void 0);\n Button = __decorate([NotifyPropertyChanges], Button);\n return Button;\n}(Component);\nexport { Button };","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='../button/button-model.d.ts'/>\nimport { getUniqueID, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { select } from '@syncfusion/ej2-base';\nimport { Button } from '../button/button';\nvar FABHIDDEN = 'e-fab-hidden';\nvar FIXEDFAB = 'e-fab-fixed';\nvar FABTOP = 'e-fab-top';\nvar FABBOTTOM = 'e-fab-bottom';\nvar FABRIGHT = 'e-fab-right';\nvar FABLEFT = 'e-fab-left';\nvar FABMIDDLE = 'e-fab-middle';\nvar FABCENTER = 'e-fab-center';\n/**\n * Defines the position of FAB (Floating Action Button) in target.\n */\nexport var FabPosition;\n(function (FabPosition) {\n /**\n * Positions the FAB at the target's top left corner.\n */\n FabPosition[\"TopLeft\"] = \"TopLeft\";\n /**\n * Places the FAB on the top-center position of the target.\n */\n FabPosition[\"TopCenter\"] = \"TopCenter\";\n /**\n * Positions the FAB at the target's top right corner.\n */\n FabPosition[\"TopRight\"] = \"TopRight\";\n /**\n * Positions the FAB in the middle of target's left side.\n */\n FabPosition[\"MiddleLeft\"] = \"MiddleLeft\";\n /**\n * Positions the FAB in the center of target.\n */\n FabPosition[\"MiddleCenter\"] = \"MiddleCenter\";\n /**\n * Positions the FAB in the middle of target's right side.\n */\n FabPosition[\"MiddleRight\"] = \"MiddleRight\";\n /**\n * Positions the FAB at the target's bottom left corner.\n */\n FabPosition[\"BottomLeft\"] = \"BottomLeft\";\n /**\n * Places the FAB on the bottom-center position of the target.\n */\n FabPosition[\"BottomCenter\"] = \"BottomCenter\";\n /**\n * Positions the FAB at the target's bottom right corner.\n */\n FabPosition[\"BottomRight\"] = \"BottomRight\";\n})(FabPosition || (FabPosition = {}));\n/**\n * The FAB Component (Floating Action Button) is an extension of Button Component that appears in front of all the contents of the page and performs the primary action.\n */\nvar Fab = /** @class */function (_super) {\n __extends(Fab, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {FabModel} options - Specifies the floating action button model\n * @param {string|HTMLButtonElement} element - Specifies the target element\n */\n function Fab(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Fab.prototype.render = function () {\n _super.prototype.render.call(this);\n this.initializeFab();\n };\n Fab.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Fab.prototype.getPersistData = function () {\n _super.prototype.getPersistData.call(this);\n return this.addOnPersist([]);\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Fab.prototype.getModuleName = function () {\n return 'fab';\n };\n Fab.prototype.initializeFab = function () {\n // To add 'e-btn' class\n this.element.classList.add('e-' + _super.prototype.getModuleName.call(this));\n this.checkTarget();\n this.setPosition();\n this.setVisibility();\n };\n Fab.prototype.checkTarget = function () {\n this.isFixed = true;\n if (this.target) {\n this.targetEle = typeof this.target === 'string' ? select(this.target) : this.target;\n if (this.targetEle) {\n this.isFixed = false;\n this.targetEle.appendChild(this.element);\n }\n }\n this.element.classList[this.isFixed ? 'add' : 'remove'](FIXEDFAB);\n };\n Fab.prototype.setVisibility = function () {\n this.element.classList[this.visible ? 'remove' : 'add'](FABHIDDEN);\n };\n Fab.prototype.setPosition = function () {\n // Check for the bottom position; if true, add the bottom class; otherwise, add the top class.\n this.element.classList.add(['BottomLeft', 'BottomCenter', 'BottomRight'].indexOf(this.position) !== -1 ? FABBOTTOM : FABTOP);\n var isRight = ['TopRight', 'MiddleRight', 'BottomRight'].indexOf(this.position) !== -1;\n // Reverse the left and right direction for RTL mode.\n this.element.classList.add(!(this.enableRtl || isRight) || this.enableRtl && isRight ? FABLEFT : FABRIGHT);\n if (['MiddleLeft', 'MiddleRight', 'MiddleCenter'].indexOf(this.position) !== -1) {\n this.element.classList.add(FABMIDDLE);\n }\n if (['TopCenter', 'BottomCenter', 'MiddleCenter'].indexOf(this.position) !== -1) {\n this.element.classList.add(FABCENTER);\n }\n };\n Fab.prototype.clearPosition = function () {\n this.element.classList.remove(FABTOP, FABBOTTOM, FABMIDDLE);\n this.element.classList.remove(FABRIGHT, FABLEFT, FABCENTER);\n };\n /* eslint-disable */\n /**\n * Refreshes the FAB position. You can call this method to re-position FAB when target is resized.\n *\n * @returns {void}\n * @deprecated\n */\n Fab.prototype.refreshPosition = function () {};\n /* eslint-enable */\n /**\n * Destroys the FAB instance.\n *\n * @returns {void}\n *\n */\n Fab.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n // To remove 'e-btn' class\n this.element.classList.remove('e-' + _super.prototype.getModuleName.call(this), FIXEDFAB);\n this.clearPosition();\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {FabModel} newProp - Specifies new properties\n * @param {FabModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Fab.prototype.onPropertyChanged = function (newProp, oldProp) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n case 'position':\n this.clearPosition();\n this.setPosition();\n break;\n case 'visible':\n this.setVisibility();\n break;\n case 'target':\n this.checkTarget();\n this.setPosition();\n break;\n /* REF - 861739 */\n case 'currencyCode':\n this.refresh();\n break;\n }\n }\n };\n __decorate([Property('BottomRight')], Fab.prototype, \"position\", void 0);\n __decorate([Property('')], Fab.prototype, \"target\", void 0);\n __decorate([Property(true)], Fab.prototype, \"visible\", void 0);\n __decorate([Property(true)], Fab.prototype, \"isPrimary\", void 0);\n Fab = __decorate([NotifyPropertyChanges], Fab);\n return Fab;\n}(Button);\nexport { Fab };","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};\nimport { Component, NotifyPropertyChanges, Property, setValue } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { addClass, detach, getUniqueID, isRippleEnabled, removeClass, rippleEffect, closest } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler, setHiddenInput } from './../common/common';\nvar CHECK = 'e-check';\nvar DISABLED = 'e-checkbox-disabled';\nvar FRAME = 'e-frame';\nvar INDETERMINATE = 'e-stop';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RIPPLECHECK = 'e-ripple-check';\nvar RIPPLEINDETERMINATE = 'e-ripple-stop';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-checkbox-wrapper';\nvar containerAttr = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value', 'id', 'tabindex', 'aria-label', 'required'];\n/**\n * The CheckBox is a graphical user interface element that allows you to select one or more options from the choices.\n * It contains checked, unchecked, and indeterminate states.\n * ```html\n * <input type=\"checkbox\" id=\"checkbox\"/>\n * <script>\n * var checkboxObj = new CheckBox({ label: \"Default\" });\n * checkboxObj.appendTo(\"#checkbox\");\n * </script>\n * ```\n */\nvar CheckBox = /** @class */function (_super) {\n __extends(CheckBox, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {CheckBoxModel} options - Specifies checkbox model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function CheckBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n _this.isMouseClick = false;\n _this.clickTriggered = false;\n _this.validCheck = true;\n _this.type = 'checkbox';\n return _this;\n }\n CheckBox.prototype.changeState = function (state, isInitialize, isInterAction) {\n var wrapper = this.getWrapper();\n var rippleSpan = null;\n var frameSpan = null;\n if (wrapper) {\n frameSpan = wrapper.getElementsByClassName(FRAME)[0];\n if (isRippleEnabled) {\n rippleSpan = wrapper.getElementsByClassName(RIPPLE)[0];\n }\n }\n if (state === 'check') {\n if (frameSpan) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n }\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLEINDETERMINATE);\n rippleSpan.classList.add(RIPPLECHECK);\n }\n this.element.checked = true;\n if ((this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize && isInterAction) {\n this.element.checked = false;\n this.validCheck = false;\n } else if (this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) {\n this.validCheck = true;\n }\n } else if (state === 'uncheck') {\n if (frameSpan) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n }\n if (rippleSpan) {\n removeClass([rippleSpan], [RIPPLECHECK, RIPPLEINDETERMINATE]);\n }\n this.element.checked = false;\n if ((this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize && isInterAction) {\n this.element.checked = true;\n this.validCheck = false;\n } else if (this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) {\n this.validCheck = true;\n }\n } else {\n if (frameSpan) {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n }\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLECHECK);\n rippleSpan.classList.add(RIPPLEINDETERMINATE);\n }\n this.element.indeterminate = true;\n this.indeterminate = true;\n }\n };\n CheckBox.prototype.clickHandler = function (event) {\n if (event.target.tagName === 'INPUT' && this.clickTriggered) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n this.clickTriggered = false;\n return;\n }\n if (event.target.tagName === 'SPAN' || event.target.tagName === 'LABEL' || closest(event.target, '.e-label')) {\n this.clickTriggered = true;\n }\n if (this.isMouseClick) {\n this.focusOutHandler();\n this.isMouseClick = false;\n }\n if (this.indeterminate) {\n this.changeState(this.checked ? 'check' : 'uncheck', false, true);\n this.indeterminate = false;\n this.element.indeterminate = false;\n } else if (this.checked) {\n this.changeState('uncheck', false, true);\n this.checked = false;\n } else {\n this.changeState('check', false, true);\n this.checked = true;\n }\n var changeEventArgs = {\n checked: this.updateVueArrayModel(false),\n event: event\n };\n this.trigger('change', changeEventArgs);\n event.stopPropagation();\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CheckBox.prototype.destroy = function () {\n var _this = this;\n var wrapper = this.getWrapper();\n _super.prototype.destroy.call(this);\n if (this.wrapper) {\n wrapper = this.wrapper;\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (this.getWrapper() && wrapper.parentNode) {\n wrapper.parentNode.insertBefore(this.element, wrapper);\n }\n detach(wrapper);\n this.element.checked = false;\n if (this.indeterminate) {\n this.element.indeterminate = false;\n }\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n } else {\n ['class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n this.element = wrapper;\n if (this.refreshing) {\n ['e-control', 'e-checkbox', 'e-lib'].forEach(function (key) {\n _this.element.classList.add(key);\n });\n setValue('ej2_instances', [this], this.element);\n }\n }\n }\n };\n CheckBox.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n CheckBox.prototype.focusOutHandler = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n wrapper.classList.remove('e-focus');\n }\n this.isFocused = false;\n };\n /**\n * Gets the module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n CheckBox.prototype.getModuleName = function () {\n return 'checkbox';\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n CheckBox.prototype.getPersistData = function () {\n return this.addOnPersist(['checked', 'indeterminate']);\n };\n CheckBox.prototype.getWrapper = function () {\n if (this.element && this.element.parentElement) {\n return this.element.parentElement.parentElement;\n } else {\n return null;\n }\n };\n CheckBox.prototype.getLabel = function () {\n if (this.element) {\n return this.element.parentElement;\n } else {\n return null;\n }\n };\n CheckBox.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n this.element.setAttribute('tabindex', '0');\n if (this.value) {\n this.element.setAttribute('value', this.value);\n if (this.isVue && typeof this.value === 'boolean' && this.value === true) {\n this.setProperties({\n 'checked': true\n }, true);\n }\n }\n if (this.checked) {\n this.changeState('check', true);\n }\n if (this.indeterminate) {\n this.changeState();\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n CheckBox.prototype.initWrapper = function () {\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', {\n className: WRAPPER\n });\n if (this.element.parentNode) {\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n }\n var label = this.createElement('label', {\n attrs: {\n for: this.htmlAttributes.id ? this.htmlAttributes.id : this.element.id\n }\n });\n var frameSpan = this.createElement('span', {\n className: 'e-icons ' + FRAME\n });\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n wrapper.appendChild(label);\n label.appendChild(this.element);\n setHiddenInput(this, label);\n label.appendChild(frameSpan);\n if (isRippleEnabled) {\n var rippleSpan = this.createElement('span', {\n className: RIPPLE\n });\n if (this.labelPosition === 'Before') {\n label.appendChild(rippleSpan);\n } else {\n label.insertBefore(rippleSpan, frameSpan);\n }\n rippleEffect(rippleSpan, {\n duration: 400,\n isCenterRipple: true\n });\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n CheckBox.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getWrapper().classList.add('e-focus');\n }\n };\n CheckBox.prototype.labelMouseDownHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n CheckBox.prototype.labelMouseLeaveHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n CheckBox.prototype.labelMouseUpHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = 0; i < rippleElem.length - 1; i++) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {CheckBoxModel} newProp - Specifies new Properties\n * @param {CheckBoxModel} oldProp - Specifies old Properties\n *\n * @returns {void}\n */\n CheckBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrapper = this.getWrapper();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n this.indeterminate = false;\n this.element.indeterminate = false;\n this.changeState(newProp.checked ? 'check' : 'uncheck');\n break;\n case 'indeterminate':\n if (newProp.indeterminate) {\n this.changeState();\n } else {\n this.element.indeterminate = false;\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.wrapper = this.getWrapper();\n this.unWireEvents();\n } else {\n this.element.disabled = false;\n wrapper.classList.remove(DISABLED);\n wrapper.setAttribute('aria-disabled', 'false');\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(/\\s+/).filter(function (c) {\n return c.length > 0;\n }));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n wrapper.classList.add(RTL);\n } else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition':\n {\n var label = wrapper.getElementsByClassName(LABEL)[0];\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n detach(label);\n if (newProp.labelPosition === 'After') {\n labelWrap.appendChild(label);\n } else {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n break;\n }\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n if (this.isVue && typeof newProp.value === 'object') {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToWrapper();\n break;\n }\n }\n };\n /**\n * Initialize Angular, React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.preRender = function () {\n var element = this.element;\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-CHECKBOX', 'checkbox', element, WRAPPER, 'checkbox');\n this.element = element;\n if (this.element.getAttribute('type') !== 'checkbox') {\n this.element.setAttribute('type', 'checkbox');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.render = function () {\n this.initWrapper();\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.updateHtmlAttributeToWrapper();\n this.updateVueArrayModel(true);\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n CheckBox.prototype.setDisabled = function () {\n var wrapper = this.getWrapper();\n this.element.disabled = true;\n wrapper.classList.add(DISABLED);\n wrapper.setAttribute('aria-disabled', 'true');\n };\n CheckBox.prototype.setText = function (text) {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n return;\n }\n var label = wrapper.getElementsByClassName(LABEL)[0];\n if (label) {\n label.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(text) : text;\n } else {\n text = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(text) : text;\n label = this.createElement('span', {\n className: LABEL,\n innerHTML: text\n });\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n if (this.labelPosition === 'Before') {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n } else {\n labelWrap.appendChild(label);\n }\n }\n };\n CheckBox.prototype.changeHandler = function (e) {\n e.stopPropagation();\n };\n CheckBox.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n this.element.checked = this.initialCheckedValue;\n };\n CheckBox.prototype.unWireEvents = function () {\n var wrapper = this.wrapper;\n EventHandler.remove(wrapper, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n var label = wrapper.getElementsByTagName('label')[0];\n if (label) {\n EventHandler.remove(label, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(label, 'mouseup', this.labelMouseUpHandler);\n EventHandler.remove(label, 'mouseleave', this.labelMouseLeaveHandler);\n }\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.remove(formElem, 'reset', this.formResetHandler);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.remove(this.element, 'change', this.changeHandler);\n }\n };\n CheckBox.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.add(wrapper, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.add(label, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(label, 'mouseup', this.labelMouseUpHandler, this);\n EventHandler.add(label, 'mouseleave', this.labelMouseLeaveHandler, this);\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.add(formElem, 'reset', this.formResetHandler, this);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n }\n };\n CheckBox.prototype.updateVueArrayModel = function (init) {\n if (this.isVue && typeof this.value === 'object') {\n var value = this.element.value;\n if (value && this.value) {\n if (init) {\n for (var i = 0; i < this.value.length; i++) {\n if (value === this.value[i]) {\n this.changeState('check');\n this.setProperties({\n 'checked': true\n }, true);\n }\n }\n } else {\n var index = this.value.indexOf(value);\n if (this.checked) {\n if (index < 0) {\n this.value.push(value);\n }\n } else {\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.value;\n }\n }\n }\n return this.validCheck ? this.element.checked : !this.element.checked;\n };\n CheckBox.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n var wrapper = this.getWrapper();\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].split(' '));\n } else if (key === 'title') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n } else if (key === 'style') {\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n frameSpan.setAttribute(key, this.htmlAttributes[\"\" + key]);\n } else if (key === 'disabled') {\n if (this.htmlAttributes[\"\" + key] === 'true') {\n this.setDisabled();\n }\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n } else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n } else {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n /**\n * Click the CheckBox element\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to CheckBox\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([Event()], CheckBox.prototype, \"change\", void 0);\n __decorate([Event()], CheckBox.prototype, \"created\", void 0);\n __decorate([Property(false)], CheckBox.prototype, \"checked\", void 0);\n __decorate([Property('')], CheckBox.prototype, \"cssClass\", void 0);\n __decorate([Property(false)], CheckBox.prototype, \"disabled\", void 0);\n __decorate([Property(false)], CheckBox.prototype, \"indeterminate\", void 0);\n __decorate([Property('')], CheckBox.prototype, \"label\", void 0);\n __decorate([Property('After')], CheckBox.prototype, \"labelPosition\", void 0);\n __decorate([Property('')], CheckBox.prototype, \"name\", void 0);\n __decorate([Property('')], CheckBox.prototype, \"value\", void 0);\n __decorate([Property(true)], CheckBox.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([Property({})], CheckBox.prototype, \"htmlAttributes\", void 0);\n CheckBox = __decorate([NotifyPropertyChanges], CheckBox);\n return CheckBox;\n}(Component);\nexport { CheckBox };","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};\nimport { Component, rippleEffect, NotifyPropertyChanges, Property, closest, setValue } from '@syncfusion/ej2-base';\nimport { addClass, getInstance, getUniqueID, isRippleEnabled, removeClass, attributes, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { detach, Event, EventHandler, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler } from './../common/common';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-radio-wrapper';\nvar ATTRIBUTES = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value', 'id'];\n/**\n * The RadioButton is a graphical user interface element that allows you to select one option from the choices.\n * It contains checked and unchecked states.\n * ```html\n * <input type=\"radio\" id=\"radio\"/>\n * <script>\n * var radioObj = new RadioButton({ label: \"Default\" });\n * radioObj.appendTo(\"#radio\");\n * </script>\n * ```\n */\nvar RadioButton = /** @class */function (_super) {\n __extends(RadioButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {RadioButtonModel} options - Specifies Radio button model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function RadioButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n _this.type = 'radio';\n return _this;\n }\n RadioButton_1 = RadioButton;\n RadioButton.prototype.changeHandler = function (event) {\n this.checked = true;\n this.dataBind();\n var value = this.element.getAttribute('value');\n value = this.isVue && value ? this.element.value : this.value;\n var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\n this.trigger('change', {\n value: value,\n event: event\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n event.stopPropagation();\n }\n };\n RadioButton.prototype.updateChange = function () {\n var input;\n var instance;\n var radioGrp = this.getRadioGroup();\n for (var i = 0; i < radioGrp.length; i++) {\n input = radioGrp[i];\n if (input !== this.element) {\n instance = getInstance(input, RadioButton_1);\n instance.checked = false;\n if (this.tagName === 'EJS-RADIOBUTTON') {\n instance.angularValue = this.value;\n }\n }\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n RadioButton.prototype.destroy = function () {\n var _this = this;\n var radioWrap = this.wrapper;\n _super.prototype.destroy.call(this);\n if (radioWrap) {\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (radioWrap.parentNode) {\n radioWrap.parentNode.insertBefore(this.element, radioWrap);\n }\n detach(radioWrap);\n this.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n } else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n radioWrap.removeAttribute(key);\n });\n radioWrap.innerHTML = '';\n this.element = this.wrapper;\n if (this.refreshing) {\n ['e-control', 'e-radio', 'e-lib'].forEach(function (key) {\n _this.element.classList.add(key);\n });\n setValue('ej2_instances', [this], this.element);\n }\n }\n }\n };\n RadioButton.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n RadioButton.prototype.focusOutHandler = function () {\n var label = this.getLabel();\n if (label) {\n label.classList.remove('e-focus');\n }\n };\n RadioButton.prototype.getModuleName = function () {\n return 'radio';\n };\n /**\n * To get the value of selected radio button in a group.\n *\n * @method getSelectedValue\n * @returns {string} - Selected Value\n */\n RadioButton.prototype.getSelectedValue = function () {\n var input;\n var radioGrp = this.getRadioGroup();\n for (var i = 0, len = radioGrp.length; i < len; i++) {\n input = radioGrp[i];\n if (input.checked) {\n return input.value;\n }\n }\n return '';\n };\n RadioButton.prototype.getRadioGroup = function () {\n return document.querySelectorAll('input.e-radio[name=\"' + this.element.getAttribute('name') + '\"]');\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n RadioButton.prototype.getPersistData = function () {\n return this.addOnPersist(['checked']);\n };\n RadioButton.prototype.getWrapper = function () {\n if (this.element.parentElement) {\n return this.element.parentElement;\n } else {\n return null;\n }\n };\n RadioButton.prototype.getLabel = function () {\n if (this.element.nextElementSibling) {\n return this.element.nextElementSibling;\n } else {\n return null;\n }\n };\n RadioButton.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n this.initWrapper();\n this.updateHtmlAttribute();\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n var value = this.element.getAttribute('value');\n var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\n if (this.isVue ? this.value && type !== 'boolean' && !value : this.value) {\n this.element.setAttribute('value', this.value);\n }\n if (this.checked) {\n this.element.checked = true;\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n RadioButton.prototype.initWrapper = function () {\n var rippleSpan;\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', {\n className: WRAPPER\n });\n if (this.element.parentNode) {\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n }\n var label = this.createElement('label', {\n attrs: {\n for: this.element.id\n }\n });\n wrapper.appendChild(this.element);\n wrapper.appendChild(label);\n if (isRippleEnabled) {\n rippleSpan = this.createElement('span', {\n className: RIPPLE\n });\n label.appendChild(rippleSpan);\n rippleEffect(rippleSpan, {\n duration: 400,\n isCenterRipple: true\n });\n }\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n label.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n RadioButton.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getLabel().classList.add('e-focus');\n }\n };\n RadioButton.prototype.labelMouseDownHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n RadioButton.prototype.labelMouseLeaveHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n RadioButton.prototype.labelMouseUpHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n RadioButton.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n if (this.initialCheckedValue) {\n attributes(this.element, {\n 'checked': 'true'\n });\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {RadioButtonModel} newProp - Specifies New Properties\n * @param {RadioButtonModel} oldProp - Specifies Old Properties\n * @returns {void}\n */\n RadioButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrap = this.getWrapper();\n var label = this.getLabel();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n if (newProp.checked) {\n this.updateChange();\n }\n this.element.checked = newProp.checked;\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.unWireEvents();\n } else {\n this.element.disabled = false;\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrap], oldProp.cssClass.split(/\\s+/).filter(function (c) {\n return c.length > 0;\n }));\n }\n if (newProp.cssClass) {\n addClass([wrap], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n label.classList.add(RTL);\n } else {\n label.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition':\n if (newProp.labelPosition === 'Before') {\n label.classList.add('e-right');\n } else {\n label.classList.remove('e-right');\n }\n break;\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n // eslint-disable-next-line no-case-declarations\n var type = typeof this.htmlAttributes.value;\n if (!isNullOrUndefined(this.htmlAttributes) && (this.htmlAttributes.value || type === 'boolean' && !this.htmlAttributes.value)) {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttribute();\n break;\n }\n }\n };\n /**\n * Initialize checked Property, Angular and React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.preRender = function () {\n var element = this.element;\n this.formElement = closest(this.element, 'form');\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-RADIOBUTTON', 'radio', element, WRAPPER, 'radio');\n this.element = element;\n if (this.element.getAttribute('type') !== 'radio') {\n this.element.setAttribute('type', 'radio');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.tagName === 'EJS-RADIOBUTTON') {\n var formControlName = this.element.getAttribute('formcontrolname');\n if (formControlName) {\n this.setProperties({\n 'name': formControlName\n }, true);\n this.element.setAttribute('name', formControlName);\n }\n }\n };\n /**\n * Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.render = function () {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n RadioButton.prototype.setDisabled = function () {\n this.element.disabled = true;\n };\n RadioButton.prototype.setText = function (text) {\n var label = this.getLabel();\n var textLabel = label.getElementsByClassName(LABEL)[0];\n if (textLabel) {\n textLabel.textContent = text;\n } else {\n text = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(text) : text;\n textLabel = this.createElement('span', {\n className: LABEL,\n innerHTML: text\n });\n label.appendChild(textLabel);\n }\n if (this.labelPosition === 'Before') {\n this.getLabel().classList.add('e-right');\n } else {\n this.getLabel().classList.remove('e-right');\n }\n };\n RadioButton.prototype.updateHtmlAttribute = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n var wrapper = this.element.parentElement;\n if (ATTRIBUTES.indexOf(key) > -1) {\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ').trim().split(' '));\n } else if (key === 'title' || key === 'style') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n } else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n } else {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n RadioButton.prototype.unWireEvents = function () {\n var label = this.wrapper;\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n var rippleLabel = label.getElementsByTagName('label')[0];\n if (rippleLabel) {\n EventHandler.remove(rippleLabel, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(rippleLabel, 'mouseup', this.labelMouseUpHandler);\n EventHandler.remove(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n RadioButton.prototype.wireEvents = function () {\n var label = this.getLabel();\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var rippleLabel = label.getElementsByClassName(LABEL)[0];\n if (rippleLabel) {\n EventHandler.add(rippleLabel, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(rippleLabel, 'mouseup', this.labelMouseUpHandler, this);\n EventHandler.add(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n };\n /**\n * Click the RadioButton element\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to RadioButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.focusIn = function () {\n this.element.focus();\n };\n var RadioButton_1;\n __decorate([Event()], RadioButton.prototype, \"change\", void 0);\n __decorate([Event()], RadioButton.prototype, \"created\", void 0);\n __decorate([Property(false)], RadioButton.prototype, \"checked\", void 0);\n __decorate([Property('')], RadioButton.prototype, \"cssClass\", void 0);\n __decorate([Property(false)], RadioButton.prototype, \"disabled\", void 0);\n __decorate([Property('')], RadioButton.prototype, \"label\", void 0);\n __decorate([Property('After')], RadioButton.prototype, \"labelPosition\", void 0);\n __decorate([Property('')], RadioButton.prototype, \"name\", void 0);\n __decorate([Property('')], RadioButton.prototype, \"value\", void 0);\n __decorate([Property(true)], RadioButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([Property({})], RadioButton.prototype, \"htmlAttributes\", void 0);\n RadioButton = RadioButton_1 = __decorate([NotifyPropertyChanges], RadioButton);\n return RadioButton;\n}(Component);\nexport { RadioButton };","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};\nimport { Component, NotifyPropertyChanges, Property, closest, setValue } from '@syncfusion/ej2-base';\nimport { Event, EventHandler } from '@syncfusion/ej2-base';\nimport { addClass, isRippleEnabled, removeClass, rippleEffect, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { rippleMouseHandler, destroy, preRender, setHiddenInput } from './../common/common';\nvar DISABLED = 'e-switch-disabled';\nvar RIPPLE = 'e-ripple-container';\nvar RIPPLE_CHECK = 'e-ripple-check';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-switch-wrapper';\nvar ACTIVE = 'e-switch-active';\nvar ATTRIBUTES = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value', 'aria-label', 'id', 'role', 'tabindex'];\n/**\n * The Switch is a graphical user interface element that allows you to toggle between checked and unchecked states.\n * ```html\n * <input type=\"checkbox\" id=\"switch\"/>\n * <script>\n * var switchObj = new Switch({});\n * switchObj.appendTo(\"#switch\");\n * </script>\n * ```\n */\nvar Switch = /** @class */function (_super) {\n __extends(Switch, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n *\n * @param {SwitchModel} options switch model\n * @param {string | HTMLInputElement} element target element\n *\n */\n function Switch(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n _this.isDrag = false;\n _this.isWireEvents = false;\n return _this;\n }\n Switch.prototype.changeState = function (state) {\n var rippleSpan = null;\n var wrapper = this.getWrapper();\n var bar = wrapper.querySelector('.e-switch-inner');\n var handle = wrapper.querySelector('.e-switch-handle');\n if (isRippleEnabled) {\n rippleSpan = wrapper.getElementsByClassName(RIPPLE)[0];\n }\n if (state) {\n addClass([bar, handle], ACTIVE);\n this.element.checked = true;\n this.checked = true;\n if (rippleSpan) {\n addClass([rippleSpan], [RIPPLE_CHECK]);\n }\n } else {\n removeClass([bar, handle], ACTIVE);\n this.element.checked = false;\n this.checked = false;\n if (rippleSpan) {\n removeClass([rippleSpan], [RIPPLE_CHECK]);\n }\n }\n };\n Switch.prototype.clickHandler = function (evt) {\n this.isDrag = false;\n this.focusOutHandler();\n var beforeChangeEventArgs = {\n event: evt,\n cancel: false,\n checked: this.checked\n };\n this.trigger('beforeChange', beforeChangeEventArgs);\n if (!beforeChangeEventArgs.cancel) {\n this.changeState(!beforeChangeEventArgs.checked);\n this.element.focus();\n var changeEventArgs = {\n checked: this.element.checked,\n event: evt\n };\n this.trigger('change', changeEventArgs);\n }\n };\n /**\n * Destroys the Switch widget.\n *\n * @returns {void}\n */\n Switch.prototype.destroy = function () {\n var _this = this;\n _super.prototype.destroy.call(this);\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n destroy(this, this.getWrapper(), this.tagName);\n if (this.refreshing) {\n ['e-control', 'e-switch', 'e-lib'].forEach(function (key) {\n _this.element.classList.add(key);\n });\n setValue('ej2_instances', [this], this.element);\n }\n };\n Switch.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n Switch.prototype.focusOutHandler = function () {\n this.getWrapper().classList.remove('e-focus');\n };\n /**\n * Gets the module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n Switch.prototype.getModuleName = function () {\n return 'switch';\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist data\n */\n Switch.prototype.getPersistData = function () {\n return this.addOnPersist(['checked']);\n };\n Switch.prototype.getWrapper = function () {\n if (this.element.parentElement) {\n return this.element.parentElement;\n } else {\n return null;\n }\n };\n Switch.prototype.initialize = function () {\n this.element.setAttribute('role', 'switch');\n if (isNullOrUndefined(this.initialSwitchCheckedValue)) {\n this.initialSwitchCheckedValue = this.checked;\n }\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n if (this.value) {\n this.element.setAttribute('value', this.value);\n }\n if (this.checked) {\n this.changeState(true);\n }\n if (this.disabled) {\n this.setDisabled();\n }\n if (this.onLabel || this.offLabel) {\n this.setLabel(this.onLabel, this.offLabel);\n }\n };\n Switch.prototype.initWrapper = function () {\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', {\n className: WRAPPER\n });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var switchInner = this.createElement('span', {\n className: 'e-switch-inner'\n });\n var onLabel = this.createElement('span', {\n className: 'e-switch-on'\n });\n var offLabel = this.createElement('span', {\n className: 'e-switch-off'\n });\n var handle = this.createElement('span', {\n className: 'e-switch-handle'\n });\n wrapper.appendChild(this.element);\n setHiddenInput(this, wrapper);\n switchInner.appendChild(onLabel);\n switchInner.appendChild(offLabel);\n wrapper.appendChild(switchInner);\n wrapper.appendChild(handle);\n if (isRippleEnabled) {\n var rippleSpan = this.createElement('span', {\n className: RIPPLE\n });\n handle.appendChild(rippleSpan);\n rippleEffect(rippleSpan, {\n duration: 400,\n isCenterRipple: true\n });\n }\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {SwitchModel} newProp - Specifies New Properties\n * @param {SwitchModel} oldProp - Specifies Old Properties\n * @returns {void}\n */\n Switch.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrapper = this.getWrapper();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n this.changeState(newProp.checked);\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.unWireEvents();\n this.isWireEvents = false;\n } else {\n this.element.disabled = false;\n wrapper.classList.remove(DISABLED);\n wrapper.setAttribute('aria-disabled', 'false');\n if (!this.isWireEvents) {\n this.wireEvents();\n this.isWireEvents = true;\n }\n }\n break;\n case 'value':\n this.element.setAttribute('value', newProp.value);\n break;\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'onLabel':\n case 'offLabel':\n this.setLabel(newProp.onLabel, newProp.offLabel);\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n wrapper.classList.add(RTL);\n } else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(/\\s+/).filter(function (c) {\n return c.length > 0;\n }));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'htmlAttributes':\n this.updateHtmlAttribute();\n break;\n }\n }\n };\n /**\n * Initialize Angular, React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n Switch.prototype.preRender = function () {\n var element = this.element;\n this.formElement = closest(this.element, 'form');\n this.tagName = this.element.tagName;\n preRender(this, 'EJS-SWITCH', WRAPPER, element, this.getModuleName());\n };\n /**\n * Initialize control rendering.\n *\n * @private\n * @returns {void}\n */\n Switch.prototype.render = function () {\n this.initWrapper();\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n this.renderComplete();\n this.updateHtmlAttribute();\n };\n Switch.prototype.rippleHandler = function (e) {\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n if (e.type === 'mousedown' && e.currentTarget.classList.contains('e-switch-wrapper') && e.which === 1) {\n this.isDrag = true;\n this.isFocused = false;\n }\n };\n Switch.prototype.mouseLeaveHandler = function (e) {\n var rippleSpan = this.element.parentElement.getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n Switch.prototype.rippleTouchHandler = function (eventType) {\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var event_1 = document.createEvent('MouseEvents');\n event_1.initEvent(eventType, false, true);\n rippleSpan.dispatchEvent(event_1);\n }\n };\n Switch.prototype.setDisabled = function () {\n var wrapper = this.getWrapper();\n this.element.disabled = true;\n wrapper.classList.add(DISABLED);\n wrapper.setAttribute('aria-disabled', 'true');\n };\n Switch.prototype.setLabel = function (onText, offText) {\n var wrapper = this.getWrapper();\n if (onText) {\n wrapper.querySelector('.e-switch-on').textContent = onText;\n }\n if (offText) {\n wrapper.querySelector('.e-switch-off').textContent = offText;\n }\n };\n Switch.prototype.updateHtmlAttribute = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n var wrapper = this.getWrapper();\n if (ATTRIBUTES.indexOf(key) > -1) {\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].split(' '));\n } else if (key === 'title') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n } else if (key === 'style') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n } else if (key === 'disabled') {\n if (this.htmlAttributes[\"\" + key] === 'true') {\n this.setDisabled();\n }\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n } else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n } else {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n Switch.prototype.switchFocusHandler = function (e) {\n if (this.isFocused) {\n this.getWrapper().classList.add('e-focus');\n }\n if (e && e.type === 'keyup' && e.code === 'Space' && this.isAngular) {\n this.clickHandler(e);\n e.stopPropagation();\n e.preventDefault();\n }\n };\n Switch.prototype.switchMouseUp = function (e) {\n var aTouchY = 0;\n var yDiff = 0;\n var aTouchX = 0;\n var xDiff = 0;\n var target = e.target;\n if (e.type === 'touchmove') {\n e.preventDefault();\n aTouchX = e.changedTouches[0].clientX;\n aTouchY = e.changedTouches[0].clientY;\n xDiff = this.bTouchX - aTouchX;\n yDiff = this.bTouchY - aTouchY;\n if (Math.abs(xDiff) < Math.abs(yDiff)) {\n this.isDrag = false;\n this.rippleTouchHandler('mouseup');\n } else {\n this.isDrag = true;\n }\n }\n if (e.type === 'touchstart') {\n this.bTouchX = e.changedTouches[0].clientX;\n this.bTouchY = e.changedTouches[0].clientY;\n this.isDrag = true;\n this.rippleTouchHandler('mousedown');\n }\n if (this.isDrag) {\n if (e.type === 'mouseup' && target.className.indexOf('e-switch') < 0 || e.type === 'touchend') {\n xDiff = this.bTouchX - e.changedTouches[0].clientX;\n yDiff = this.bTouchY - e.changedTouches[0].clientY;\n if (Math.abs(xDiff) >= Math.abs(yDiff)) {\n this.clickHandler(e);\n this.rippleTouchHandler('mouseup');\n e.preventDefault();\n }\n }\n }\n };\n Switch.prototype.formResetHandler = function () {\n this.checked = this.initialSwitchCheckedValue;\n this.element.checked = this.initialSwitchCheckedValue;\n };\n /**\n * Toggle the Switch component state into checked/unchecked.\n *\n * @returns {void}\n */\n Switch.prototype.toggle = function () {\n this.clickHandler();\n };\n Switch.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n this.delegateMouseUpHandler = this.switchMouseUp.bind(this);\n this.delegateKeyUpHandler = this.switchFocusHandler.bind(this);\n EventHandler.add(wrapper, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'mouseup', this.delegateMouseUpHandler, this);\n EventHandler.add(this.element, 'keyup', this.delegateKeyUpHandler, this);\n EventHandler.add(wrapper, 'mousedown mouseup', this.rippleHandler, this);\n EventHandler.add(wrapper, 'mouseleave', this.mouseLeaveHandler, this);\n EventHandler.add(wrapper, 'touchstart touchmove touchend', this.switchMouseUp, this);\n };\n Switch.prototype.unWireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.remove(wrapper, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'mouseup', this.delegateMouseUpHandler);\n EventHandler.remove(this.element, 'keyup', this.delegateKeyUpHandler);\n EventHandler.remove(wrapper, 'mousedown mouseup', this.rippleHandler);\n EventHandler.remove(wrapper, 'mouseleave', this.mouseLeaveHandler);\n EventHandler.remove(wrapper, 'touchstart touchmove touchend', this.switchMouseUp);\n };\n /**\n * Click the switch element\n * its native method\n *\n * @public\n * @returns {void}\n */\n Switch.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to Switch\n * its native method\n *\n * @public\n */\n Switch.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([Event()], Switch.prototype, \"beforeChange\", void 0);\n __decorate([Event()], Switch.prototype, \"change\", void 0);\n __decorate([Event()], Switch.prototype, \"created\", void 0);\n __decorate([Property(false)], Switch.prototype, \"checked\", void 0);\n __decorate([Property('')], Switch.prototype, \"cssClass\", void 0);\n __decorate([Property(false)], Switch.prototype, \"disabled\", void 0);\n __decorate([Property('')], Switch.prototype, \"name\", void 0);\n __decorate([Property('')], Switch.prototype, \"onLabel\", void 0);\n __decorate([Property('')], Switch.prototype, \"offLabel\", void 0);\n __decorate([Property('')], Switch.prototype, \"value\", void 0);\n __decorate([Property({})], Switch.prototype, \"htmlAttributes\", void 0);\n Switch = __decorate([NotifyPropertyChanges], Switch);\n return Switch;\n}(Component);\nexport { Switch };","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};\nimport { Component, NotifyPropertyChanges, Property, append, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport { removeClass, rippleEffect, closest } from '@syncfusion/ej2-base';\nimport { Draggable } from '@syncfusion/ej2-base';\nimport { EventHandler, detach, Event, addClass, compile } from '@syncfusion/ej2-base';\nexport var classNames = {\n chipSet: 'e-chip-set',\n chip: 'e-chip',\n avatar: 'e-chip-avatar',\n text: 'e-chip-text',\n icon: 'e-chip-icon',\n delete: 'e-chip-delete',\n deleteIcon: 'e-dlt-btn',\n multiSelection: 'e-multi-selection',\n singleSelection: 'e-selection',\n active: 'e-active',\n chipWrapper: 'e-chip-avatar-wrap',\n iconWrapper: 'e-chip-icon-wrap',\n focused: 'e-focused',\n disabled: 'e-disabled',\n rtl: 'e-rtl',\n template: 'e-chip-template',\n chipList: 'e-chip-list',\n customIcon: 'e-icons',\n chipDrag: 'e-chip-drag',\n dragAndDrop: 'e-drag-and-drop',\n dropRestricted: 'e-error-treeview',\n cloneChip: 'e-clone-chip',\n dragIndicator: 'e-drag-indicator'\n};\n/**\n * A chip component is a small block of essential information, mostly used on contacts or filter tags.\n * ```html\n * <div id=\"chip\"></div>\n * ```\n * ```typescript\n * <script>\n * var chipObj = new ChipList();\n * chipObj.appendTo(\"#chip\");\n * </script>\n * ```\n */\nvar ChipList = /** @class */function (_super) {\n __extends(ChipList, _super);\n function ChipList(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.multiSelectedChip = [];\n return _this;\n }\n ChipList_1 = ChipList;\n /**\n * Initialize the event handler\n *\n * @private\n */\n ChipList.prototype.preRender = function () {\n //prerender\n };\n /**\n * To find the chips length.\n *\n * @returns boolean\n * @private\n */\n ChipList.prototype.chipType = function () {\n return this.chips && this.chips.length && this.chips.length > 0;\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns void\n * @private\n */\n ChipList.prototype.render = function () {\n this.type = !isNullOrUndefined(this.chips) && this.chips.length ? 'chipset' : this.text || this.element.innerText ? 'chip' : 'chipset';\n this.setAttributes();\n this.createChip();\n this.setRtl();\n this.select(this.selectedChips);\n this.wireEvent(false);\n this.rippleFunction = rippleEffect(this.element, {\n selector: '.' + classNames.chip\n });\n this.renderComplete();\n this.dragCollection = [];\n if (this.allowDragAndDrop) {\n this.enableDraggingChips();\n }\n };\n ChipList.prototype.enableDraggingChips = function () {\n var _this = this;\n var clonedChipElement;\n var chipElements = this.element.querySelectorAll('.' + classNames.chip);\n chipElements.forEach(function (chip, index) {\n _this.dragObj = new Draggable(chip, {\n preventDefault: false,\n clone: true,\n dragArea: _this.dragArea,\n helper: function () {\n clonedChipElement = chip.cloneNode(true);\n clonedChipElement.classList.add(classNames.cloneChip);\n _this.element.appendChild(clonedChipElement);\n return clonedChipElement;\n },\n dragStart: function (args) {\n _this.dragIndicator = _this.createElement('div', {\n className: classNames.dragIndicator\n });\n document.body.appendChild(_this.dragIndicator);\n var chipData = _this.find(args.element);\n var dragStartArgs = {\n cancel: false,\n event: args.event,\n draggedItem: args.element,\n draggedItemData: chipData,\n dropTarget: null\n };\n _this.trigger('dragStart', dragStartArgs, function () {\n if (isNullOrUndefined(dragStartArgs.cancel)) {\n dragStartArgs.cancel = false;\n }\n });\n if (!dragStartArgs.cancel) {\n clonedChipElement.setAttribute('drag-indicator-index', index.toString());\n } else {\n _this.dragObj.intDestroy(args.event);\n }\n },\n drag: function (args) {\n var chipData = _this.find(args.element);\n var draggingArgs = {\n event: args.event,\n draggedItem: args.element,\n draggedItemData: chipData,\n dropTarget: null\n };\n _this.trigger('dragging', draggingArgs);\n var draggingIconEle = clonedChipElement.querySelector('.' + classNames.chipDrag);\n if (isNullOrUndefined(draggingIconEle)) {\n draggingIconEle = _this.createElement('span', {\n className: classNames.customIcon + \" \" + classNames.dragAndDrop + \" \" + classNames.chipDrag\n });\n clonedChipElement.prepend(draggingIconEle);\n }\n _this.allowExternalDragging(args, clonedChipElement, draggingIconEle);\n },\n dragStop: function (args) {\n var chipData = _this.find(args.element);\n var dragStopArgs = {\n cancel: false,\n event: args.event,\n draggedItem: args.element,\n draggedItemData: chipData,\n dropTarget: args.target\n };\n _this.trigger('dragStop', dragStopArgs, function () {\n if (isNullOrUndefined(dragStopArgs.cancel)) {\n dragStopArgs.cancel = false;\n }\n });\n if (!dragStopArgs.cancel) {\n _this.allowExternalDrop(args, clonedChipElement);\n }\n if (!isNullOrUndefined(_this.dragIndicator)) {\n remove(_this.dragIndicator);\n }\n if (!isNullOrUndefined(clonedChipElement)) {\n clonedChipElement.remove();\n }\n }\n });\n if (_this.dragCollection.indexOf(_this.dragObj) === -1) {\n _this.dragCollection.push(_this.dragObj);\n }\n });\n };\n ChipList.prototype.checkInstance = function (args, context) {\n var isInstanceMatched = !isNullOrUndefined(args.target.closest('.' + classNames.chipList)) && args.target.closest('.' + classNames.chipList).id !== context.element.id;\n if (isInstanceMatched) {\n this.updatedInstance = args.target.closest('.' + classNames.chipList);\n }\n return isInstanceMatched;\n };\n ChipList.prototype.setIcons = function (currentInstance, draggingIconEle, target, indicatorEle, outOfDragArea) {\n var isTargetInside = currentInstance.element.contains(target);\n var isDroppable = target.closest('.e-droppable');\n if ((isTargetInside || isDroppable) && !outOfDragArea) {\n draggingIconEle.classList.add(classNames.dragAndDrop);\n draggingIconEle.classList.remove(classNames.dropRestricted);\n if (isDroppable) {\n indicatorEle.style.display = 'none';\n }\n } else {\n draggingIconEle.classList.remove(classNames.dragAndDrop);\n draggingIconEle.classList.add(classNames.dropRestricted);\n indicatorEle.style.display = 'none';\n }\n };\n ChipList.prototype.allowExternalDragging = function (args, clonedChipElement, draggingIconEle) {\n var currentInstance;\n var closestChip = null;\n var closestDistance = Infinity;\n var newIndex = -1;\n var outOfDragArea = false;\n if (this.checkInstance(args, this)) {\n this.dragIndicator.style.display = 'none';\n currentInstance = this.getCurrentInstance(args);\n currentInstance.dragIndicator = this.dragIndicator;\n if (!currentInstance.allowDragAndDrop) {\n return;\n }\n } else {\n currentInstance = this;\n }\n var indicatorEle = currentInstance.dragIndicator;\n indicatorEle.style.display = 'inline';\n outOfDragArea = this.dragAreaCheck(this.dragArea, args.target, outOfDragArea, draggingIconEle, indicatorEle);\n this.setIcons(currentInstance, draggingIconEle, args.target, indicatorEle, outOfDragArea);\n currentInstance.element.appendChild(clonedChipElement);\n var droppedRect = clonedChipElement.getBoundingClientRect();\n var allChips = Array.from(currentInstance.element.querySelectorAll('.' + classNames.chip));\n allChips.forEach(function (chip, i) {\n if (chip !== clonedChipElement) {\n var rect_1 = chip.getBoundingClientRect();\n var distance = Math.sqrt(Math.pow(droppedRect.left - rect_1.left, 2) + Math.pow(droppedRect.top - rect_1.top, 2));\n if (distance < closestDistance) {\n closestDistance = distance;\n closestChip = chip;\n newIndex = i;\n }\n }\n });\n if (newIndex === -1) {\n newIndex = allChips.length;\n }\n var chipsDistance = this.getChipsDistance(currentInstance);\n var cloneRect = clonedChipElement.getBoundingClientRect();\n var rect;\n if (closestChip || allChips.length > 0) {\n var targetChip = closestChip || allChips[allChips.length - 1];\n rect = targetChip.getBoundingClientRect();\n indicatorEle.style.top = rect.top + window.scrollY + 'px';\n indicatorEle.style.left = currentInstance.enableRtl ? rect.right + chipsDistance + 'px' : rect.left - chipsDistance + window.scrollX + 'px';\n }\n if (currentInstance.enableRtl) {\n if (cloneRect.left < rect.left - rect.width / 2 && cloneRect.top > rect.top) {\n indicatorEle.style.left = rect.left - chipsDistance + window.scrollX + 'px';\n }\n } else if (cloneRect.left > rect.left + rect.width / 2 && cloneRect.top > rect.top) {\n indicatorEle.style.left = rect.left + rect.width + chipsDistance + window.scrollX + 'px';\n }\n };\n ChipList.prototype.dragAreaCheck = function (dragArea, target, outOfDragArea, draggingIconEle, indicatorEle) {\n if (isNullOrUndefined(dragArea)) {\n return false;\n }\n var isString = typeof dragArea === 'string';\n var isHtmlElement = dragArea instanceof HTMLElement;\n var dragAreaElement = isString ? document.querySelector(dragArea) : dragArea;\n if (!isNullOrUndefined(dragAreaElement)) {\n if ((isString || isHtmlElement) && !dragAreaElement.contains(target)) {\n outOfDragArea = true;\n indicatorEle.style.display = 'none';\n draggingIconEle.classList.add(classNames.dropRestricted);\n draggingIconEle.classList.remove(classNames.dragAndDrop);\n }\n }\n return outOfDragArea;\n };\n ChipList.prototype.getChipsDistance = function (currentInstance) {\n var constValue = 4;\n if (currentInstance.chips.length <= 1) {\n return constValue;\n }\n var constantDistance;\n var firstChipClientRect = currentInstance.find(0).element.getBoundingClientRect();\n var secondChipClientRect = currentInstance.find(1).element.getBoundingClientRect();\n var firstChipLeft = firstChipClientRect.left;\n if (currentInstance.enableRtl) {\n var secondChipRight = secondChipClientRect.right;\n constantDistance = firstChipLeft < secondChipRight ? constValue : (firstChipLeft - secondChipRight) / 2;\n return constantDistance;\n } else {\n var firstChipWidth = firstChipClientRect.width;\n var secondChipLeft = secondChipClientRect.left;\n constantDistance = secondChipLeft < firstChipLeft + firstChipWidth ? constValue : (secondChipLeft - (firstChipLeft + firstChipWidth)) / 2;\n return constantDistance;\n }\n };\n ChipList.prototype.getCurrentInstance = function (args) {\n var chipContainer = args.target.closest('.' + classNames.chipList);\n if (!isNullOrUndefined(chipContainer) && !isNullOrUndefined(chipContainer.ej2_instances)) {\n for (var i = 0; i < chipContainer.ej2_instances.length; i++) {\n if (chipContainer.ej2_instances[parseInt(i.toString(), 10)] instanceof ChipList_1) {\n return chipContainer.ej2_instances[i];\n }\n }\n }\n return null;\n };\n ChipList.prototype.allowExternalDrop = function (args, clonedChipElement) {\n var originalIndex = parseInt(clonedChipElement.getAttribute('drag-indicator-index'), 10);\n var currentInstance;\n var outOfDragArea = false;\n var isInstanceChanged = false;\n if (this.checkInstance(args, this)) {\n isInstanceChanged = true;\n currentInstance = this.getCurrentInstance(args);\n if (!currentInstance.allowDragAndDrop) {\n return;\n }\n } else {\n currentInstance = this;\n }\n var indicatorEle = currentInstance.dragIndicator;\n indicatorEle.style.display = 'inline';\n if (!currentInstance.element.contains(args.target)) {\n return;\n }\n outOfDragArea = this.dragAreaCheck(this.dragArea, args.target, outOfDragArea, clonedChipElement.querySelector('.' + classNames.chipDrag), indicatorEle);\n if (outOfDragArea) {\n return;\n }\n var indicatorRect = indicatorEle.getBoundingClientRect();\n var allChips = Array.from(currentInstance.element.querySelectorAll('.' + classNames.chip));\n var newIndex = -1;\n var topOffset = false;\n var leftOffset = false;\n var rightOffset = false;\n for (var i = 0; i < allChips.length; i++) {\n if (allChips[i] !== clonedChipElement) {\n var chipRect = allChips[i].getBoundingClientRect();\n topOffset = indicatorRect.top < chipRect.top + chipRect.height / 2;\n leftOffset = indicatorRect.left < chipRect.left + chipRect.width / 2;\n rightOffset = indicatorRect.left > chipRect.left + chipRect.width / 2;\n if (!currentInstance.enableRtl && topOffset && leftOffset || currentInstance.enableRtl && topOffset && rightOffset) {\n newIndex = i;\n if (i > originalIndex && !isInstanceChanged) {\n newIndex = i - 1;\n }\n break;\n }\n }\n }\n if (newIndex === -1) {\n var nextChipIndex = void 0;\n for (var i = 0; i < allChips.length; i++) {\n var chipRect = allChips[i].getBoundingClientRect();\n if (chipRect.top > indicatorRect.top || chipRect.top === indicatorRect.top && chipRect.left > indicatorRect.left) {\n nextChipIndex = i;\n break;\n }\n }\n if (nextChipIndex !== allChips.length) {\n newIndex = nextChipIndex;\n } else {\n newIndex = allChips.length;\n }\n }\n var currentChipList = Array.from(this.chips);\n if (isInstanceChanged) {\n this.dropChip(currentChipList, originalIndex, currentInstance, newIndex, true);\n } else if (newIndex !== originalIndex) {\n this.dropChip(currentChipList, originalIndex, currentInstance, newIndex, false);\n }\n };\n ChipList.prototype.dropChip = function (currentChipList, originalIndex, currentInstance, newIndex, instanceChanged) {\n var draggedChip = currentChipList.splice(originalIndex, 1)[0];\n if (!instanceChanged) {\n currentChipList.splice(newIndex, 0, draggedChip);\n currentInstance.chips = currentChipList;\n } else {\n var newChips = Array.from(currentInstance.chips);\n newChips.splice(newIndex, 0, draggedChip);\n currentInstance.chips = newChips;\n }\n this.chips = currentChipList;\n currentInstance.dataBind();\n this.dataBind();\n currentInstance.enableDraggingChips();\n };\n ChipList.prototype.createChip = function () {\n this.innerText = this.element.innerText && this.element.innerText.length !== 0 ? this.element.innerText.trim() : this.element.innerText;\n this.element.innerHTML = '';\n this.chipCreation(this.type === 'chip' ? [this.innerText ? this.innerText : this.text] : this.chips);\n };\n ChipList.prototype.setAttributes = function () {\n if (this.type === 'chip') {\n if (this.enabled) {\n this.element.tabIndex = 0;\n }\n this.element.setAttribute('role', 'button');\n } else {\n this.element.classList.add(classNames.chipSet);\n this.element.setAttribute('role', 'listbox');\n if (this.selection === 'Multiple') {\n this.element.classList.add(classNames.multiSelection);\n this.element.setAttribute('aria-multiselectable', 'true');\n } else if (this.selection === 'Single') {\n this.element.classList.add(classNames.singleSelection);\n this.element.setAttribute('aria-multiselectable', 'false');\n } else {\n this.element.setAttribute('aria-multiselectable', 'false');\n }\n }\n };\n ChipList.prototype.setRtl = function () {\n this.element.classList[this.enableRtl ? 'add' : 'remove'](classNames.rtl);\n };\n ChipList.prototype.renderTemplates = function () {\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n ChipList.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n } else {\n return compile(template);\n }\n } catch (error) {\n return compile(template);\n }\n }\n return undefined;\n };\n ChipList.prototype.chipCreation = function (data) {\n if (isNullOrUndefined(data)) {\n return;\n }\n var chipListArray = [];\n var attributeArray = [];\n for (var i = 0; i < data.length; i++) {\n var fieldsData = this.getFieldValues(data[i]);\n var attributesValue = fieldsData.htmlAttributes;\n attributeArray.push(attributesValue);\n var chipArray = this.elementCreation(fieldsData);\n var className = (classNames.chip + ' ' + (fieldsData.enabled ? ' ' : classNames.disabled) + ' ' + (fieldsData.avatarIconCss || fieldsData.avatarText ? classNames.chipWrapper : fieldsData.leadingIconCss ? classNames.iconWrapper : ' ') + ' ' + fieldsData.cssClass).split(' ').filter(function (css) {\n return css;\n });\n if (!this.chipType() || this.type === 'chip') {\n chipListArray = chipArray;\n addClass([this.element], className);\n this.element.setAttribute('aria-label', fieldsData.text);\n if (fieldsData.value) {\n this.element.setAttribute('data-value', fieldsData.value.toString());\n }\n } else {\n var wrapper = this.createElement('DIV', {\n className: className.join(' '),\n attrs: {\n tabIndex: '0',\n role: 'option',\n 'aria-label': fieldsData.text,\n 'aria-selected': 'false'\n }\n });\n if (this.enableDelete) {\n wrapper.setAttribute('aria-keyshortcuts', 'Press delete or backspace key to delete');\n }\n if (fieldsData.value) {\n wrapper.setAttribute('data-value', fieldsData.value.toString());\n }\n if (fieldsData.enabled) {\n wrapper.setAttribute('aria-disabled', 'false');\n } else {\n wrapper.removeAttribute('tabindex');\n wrapper.setAttribute('aria-disabled', 'true');\n }\n if (!isNullOrUndefined(attributeArray[i])) {\n if (attributeArray.length > i && Object.keys(attributeArray[i]).length) {\n var htmlAttr = [];\n htmlAttr = Object.keys(attributeArray[i]);\n for (var j = 0; j < htmlAttr.length; j++) {\n wrapper.setAttribute(htmlAttr[j], attributeArray[i][htmlAttr[j]]);\n }\n }\n }\n append(chipArray, wrapper);\n chipListArray.push(wrapper);\n }\n }\n append(chipListArray, this.element);\n };\n ChipList.prototype.getFieldValues = function (data) {\n var chipEnabled = !(this.enabled.toString() === 'false');\n var fields = {\n text: typeof data === 'object' ? data.text ? data.text.toString() : this.text.toString() : !this.chipType() ? this.innerText ? this.innerText : this.text.toString() : data.toString(),\n cssClass: typeof data === 'object' ? data.cssClass ? data.cssClass.toString() : this.cssClass.toString() : this.cssClass.toString(),\n leadingIconCss: typeof data === 'object' ? data.leadingIconCss ? data.leadingIconCss.toString() : this.leadingIconCss.toString() : this.leadingIconCss.toString(),\n avatarIconCss: typeof data === 'object' ? data.avatarIconCss ? data.avatarIconCss.toString() : this.avatarIconCss.toString() : this.avatarIconCss.toString(),\n avatarText: typeof data === 'object' ? data.avatarText ? data.avatarText.toString() : this.avatarText.toString() : this.avatarText.toString(),\n trailingIconCss: typeof data === 'object' ? data.trailingIconCss ? data.trailingIconCss.toString() : this.trailingIconCss.toString() : this.trailingIconCss.toString(),\n enabled: typeof data === 'object' ? data.enabled !== undefined ? data.enabled.toString() === 'false' ? false : true : chipEnabled : chipEnabled,\n value: typeof data === 'object' ? data.value ? data.value.toString() : null : null,\n leadingIconUrl: typeof data === 'object' ? data.leadingIconUrl ? data.leadingIconUrl.toString() : this.leadingIconUrl : this.leadingIconUrl,\n trailingIconUrl: typeof data === 'object' ? data.trailingIconUrl ? data.trailingIconUrl.toString() : this.trailingIconUrl : this.trailingIconUrl,\n htmlAttributes: typeof data === 'object' ? data.htmlAttributes ? data.htmlAttributes : this.htmlAttributes : this.htmlAttributes,\n template: typeof data === 'object' ? data.template ? data.template : null : null\n };\n return fields;\n };\n ChipList.prototype.elementCreation = function (fields) {\n var chipArray = [];\n if (fields.avatarText || fields.avatarIconCss) {\n var className = (classNames.avatar + ' ' + fields.avatarIconCss).trim();\n var chipAvatarElement = this.createElement('span', {\n className: className\n });\n chipAvatarElement.innerText = fields.avatarText;\n chipArray.push(chipAvatarElement);\n } else if (fields.leadingIconCss) {\n var className = (classNames.icon + ' ' + fields.leadingIconCss).trim();\n var chipIconElement = this.createElement('span', {\n className: className\n });\n chipArray.push(chipIconElement);\n } else if (fields.leadingIconUrl) {\n var className = (classNames.avatar + ' ' + 'image-url').trim();\n var chipIconElement = this.createElement('span', {\n className: className\n });\n chipIconElement.style.backgroundImage = 'url(' + fields.leadingIconUrl + ')';\n chipArray.push(chipIconElement);\n }\n var chipTextElement = this.createElement('span', {\n className: classNames.text\n });\n chipTextElement.innerText = fields.text;\n chipArray.push(chipTextElement);\n if (fields.template) {\n var templateWrapper = this.createElement('div', {\n className: classNames.template\n });\n var templateContent = this.templateParser(fields.template)(fields, this, 'template', this.element.id + '_template', false);\n append(templateContent, templateWrapper);\n chipArray.push(templateWrapper);\n this.renderTemplates();\n }\n if (fields.trailingIconCss || this.chipType() && this.enableDelete) {\n var className = (classNames.delete + ' ' + (fields.trailingIconCss ? fields.trailingIconCss : classNames.deleteIcon)).trim();\n var chipdeleteElement = this.createElement('span', {\n className: className\n });\n chipArray.push(chipdeleteElement);\n } else if (fields.trailingIconUrl) {\n var className = 'trailing-icon-url'.trim();\n var chipIconsElement = this.createElement('span', {\n className: className\n });\n chipIconsElement.style.backgroundImage = 'url(' + fields.trailingIconUrl + ')';\n chipArray.push(chipIconsElement);\n }\n return chipArray;\n };\n /**\n * A function that finds chip based on given input.\n *\n * @param {number | HTMLElement } fields - We can pass index number or element of chip.\n * {% codeBlock src='chips/find/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n ChipList.prototype.find = function (fields) {\n var chipData = {\n text: '',\n index: -1,\n element: this.element,\n data: ''\n };\n var chipElement = fields instanceof HTMLElement ? fields : this.element.querySelectorAll('.' + classNames.chip)[fields];\n if (chipElement && this.chipType()) {\n chipData.index = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.chip)).indexOf(chipElement);\n var chip = this.chips[chipData.index];\n if (typeof chip === 'object' && chip !== null) {\n var chipModel = chip;\n if (chipModel.text !== undefined) {\n chipData.text = chipModel.text.toString();\n }\n } else if (chip !== undefined) {\n chipData.text = chip.toString();\n }\n chipData.data = chip;\n chipData.element = chipElement;\n }\n return chipData;\n };\n /**\n * Allows adding the chip item(s) by passing a single or array of string, number, or ChipModel values.\n *\n * @param {string[] | number[] | ChipModel[] | string | number | ChipModel} chipsData - We can pass array of string or\n * array of number or array of chip model or string data or number data or chip model.\n * {% codeBlock src='chips/add/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n * @deprecated\n */\n ChipList.prototype.add = function (chipsData) {\n var _a;\n if (this.type !== 'chip') {\n var fieldData = chipsData instanceof Array ? chipsData : [chipsData];\n this.chips = (_a = [].slice.call(this.chips)).concat.apply(_a, fieldData);\n this.chipCreation(fieldData);\n }\n };\n /**\n * Allows selecting the chip item(s) by passing a single or array of string, number, or ChipModel values.\n *\n * @param {number | number[] | HTMLElement | HTMLElement[]} fields - We can pass number or array of number\n * or chip element or array of chip element.\n * {% codeBlock src='chips/select/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n ChipList.prototype.select = function (fields, selectionType) {\n this.onSelect(fields, false, selectionType);\n };\n ChipList.prototype.multiSelection = function (newProp) {\n var items = this.element.querySelectorAll('.' + classNames.chip);\n for (var j = 0; j < newProp.length; j++) {\n if (typeof newProp[j] === 'string') {\n for (var k = 0; k < items.length; k++) {\n if (newProp[j] !== k) {\n if (newProp[j] === items[k].attributes[5].value) {\n this.multiSelectedChip.push(k);\n break;\n }\n }\n }\n } else {\n this.multiSelectedChip.push(newProp[j]);\n }\n }\n };\n ChipList.prototype.onSelect = function (fields, callFromProperty, selectionType) {\n var index;\n var chipNodes;\n var chipValue = null;\n if (this.chipType() && this.selection !== 'None') {\n if (callFromProperty) {\n var chipElements = this.element.querySelectorAll('.' + classNames.chip);\n for (var i = 0; i < chipElements.length; i++) {\n chipElements[i].setAttribute('aria-selected', 'false');\n chipElements[i].classList.remove(classNames.active);\n }\n }\n var fieldData = fields instanceof Array ? fields : [fields];\n for (var i = 0; i < fieldData.length; i++) {\n var chipElement = fieldData[i] instanceof HTMLElement ? fieldData[i] : this.element.querySelectorAll('.' + classNames.chip)[fieldData[i]];\n if (selectionType !== 'index') {\n for (var j = 0; j < this.chips.length; j++) {\n chipNodes = this.element.querySelectorAll('.' + classNames.chip)[j];\n var fieldsData = this.getFieldValues(this.chips[j]);\n if (selectionType === 'value') {\n if (fieldsData.value !== null) {\n chipValue = chipNodes.dataset.value;\n }\n } else if (selectionType === 'text') {\n chipValue = chipNodes.innerText;\n }\n if (chipValue === fieldData[i].toString()) {\n index = j;\n chipElement = this.element.querySelectorAll('.' + classNames.chip)[index];\n }\n }\n }\n if (chipElement instanceof HTMLElement) {\n this.selectionHandler(chipElement);\n }\n }\n }\n };\n /**\n * Allows removing the chip item(s) by passing a single or array of string, number, or ChipModel values.\n *\n * @param {number | number[] | HTMLElement | HTMLElement[]} fields - We can pass number or array of number\n * or chip element or array of chip element.\n * {% codeBlock src='chips/remove/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n ChipList.prototype.remove = function (fields) {\n var _this = this;\n if (this.chipType()) {\n var fieldData = fields instanceof Array ? fields : [fields];\n var chipElements_1 = [];\n var chipCollection_1 = this.element.querySelectorAll('.' + classNames.chip);\n fieldData.forEach(function (data) {\n var chipElement = data instanceof HTMLElement ? data : chipCollection_1[data];\n if (chipElement instanceof HTMLElement) {\n chipElements_1.push(chipElement);\n }\n });\n chipElements_1.forEach(function (element) {\n var chips = _this.element.querySelectorAll('.' + classNames.chip);\n var index = Array.prototype.slice.call(chips).indexOf(element);\n _this.deleteHandler(element, index);\n });\n }\n };\n /**\n * Returns the selected chip(s) data.\n * {% codeBlock src='chips/getSelectedChips/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n ChipList.prototype.getSelectedChips = function () {\n var selectedChips;\n if (this.chipType() && this.selection !== 'None') {\n var selectedItems = {\n texts: [],\n Indexes: [],\n data: [],\n elements: []\n };\n var items = this.element.querySelectorAll('.' + classNames.active);\n for (var i = 0; i < items.length; i++) {\n var chip = items[i];\n selectedItems.elements.push(chip);\n var index = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.chip)).indexOf(chip);\n selectedItems.Indexes.push(index);\n selectedItems.data.push(this.chips[index]);\n var text = typeof this.chips[index] === 'object' ? this.chips[index].text ? this.chips[index].text : null : this.chips[index].toString();\n selectedItems.texts.push(text);\n }\n var selectedItem = {\n text: selectedItems.texts[0],\n index: selectedItems.Indexes[0],\n data: selectedItems.data[0],\n element: selectedItems.elements[0]\n };\n selectedChips = !isNullOrUndefined(selectedItem.index) ? this.selection === 'Multiple' ? selectedItems : selectedItem : undefined;\n }\n return selectedChips;\n };\n ChipList.prototype.wireEvent = function (unWireEvent) {\n if (!unWireEvent) {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyHandler, this);\n } else {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'keydown', this.keyHandler);\n EventHandler.remove(this.element, 'keyup', this.keyHandler);\n }\n };\n ChipList.prototype.keyHandler = function (e) {\n if (e.target.classList.contains(classNames.chip)) {\n if (e.type === 'keydown') {\n if (e.keyCode === 13 || e.keyCode === 32) {\n this.clickHandler(e);\n } else if ((e.keyCode === 46 || e.keyCode === 8) && this.enableDelete) {\n this.clickHandler(e, true);\n }\n } else if (e.keyCode === 9) {\n this.focusInHandler(e.target);\n }\n }\n };\n ChipList.prototype.focusInHandler = function (chipWrapper) {\n if (!chipWrapper.classList.contains(classNames.focused)) {\n chipWrapper.classList.add(classNames.focused);\n }\n };\n ChipList.prototype.focusOutHandler = function (e) {\n var chipWrapper = closest(e.target, '.' + classNames.chip);\n var focusedElement = !this.chipType() ? this.element.classList.contains(classNames.focused) ? this.element : null : this.element.querySelector('.' + classNames.focused);\n if (chipWrapper && focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n }\n };\n ChipList.prototype.clickHandler = function (e, del) {\n var _this = this;\n if (del === void 0) {\n del = false;\n }\n var chipWrapper = closest(e.target, '.' + classNames.chip);\n if (chipWrapper) {\n var chipDataArgs = void 0;\n if (this.chipType()) {\n chipDataArgs = this.find(chipWrapper);\n } else {\n var index = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.chip)).indexOf(chipWrapper);\n chipDataArgs = {\n text: this.innerText ? this.innerText : this.text,\n element: chipWrapper,\n data: this.text,\n index: index\n };\n }\n chipDataArgs.event = e;\n chipDataArgs.cancel = false;\n this.trigger('beforeClick', chipDataArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.clickEventHandler(observedArgs.element, e, del);\n }\n });\n }\n };\n ChipList.prototype.clickEventHandler = function (chipWrapper, e, del) {\n var _this = this;\n if (this.chipType()) {\n var chipData_1 = this.find(chipWrapper);\n chipData_1.event = e;\n var deleteElement = e.target.classList.contains(classNames.deleteIcon) ? e.target : del ? chipWrapper.querySelector('.' + classNames.deleteIcon) : undefined;\n if (deleteElement && this.enableDelete) {\n chipData_1.cancel = false;\n var deletedItemArgs = chipData_1;\n this.trigger('delete', deletedItemArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.deleteHandler(observedArgs.element, observedArgs.index);\n _this.selectionHandler(chipWrapper);\n chipData_1.selected = observedArgs.element.classList.contains(classNames.active);\n var selectedItemArgs = chipData_1;\n _this.trigger('click', selectedItemArgs);\n var chipElement = _this.element.querySelectorAll('.' + classNames.chip)[observedArgs.index];\n if (chipElement) {\n chipElement.focus();\n _this.focusInHandler(chipElement);\n }\n }\n });\n } else if (this.selection !== 'None') {\n this.selectionHandler(chipWrapper);\n chipData_1.selected = chipWrapper.classList.contains(classNames.active);\n var selectedItemArgs = chipData_1;\n this.trigger('click', selectedItemArgs);\n } else {\n this.focusInHandler(chipWrapper);\n var clickedItemArgs = chipData_1;\n this.trigger('click', clickedItemArgs);\n }\n } else {\n this.focusInHandler(chipWrapper);\n var clickedItemArgs = {\n text: this.innerText ? this.innerText : this.text,\n element: chipWrapper,\n data: this.text,\n event: e\n };\n this.trigger('click', clickedItemArgs);\n }\n };\n ChipList.prototype.selectionHandler = function (chipWrapper) {\n if (this.selection === 'Single') {\n var activeElement = this.element.querySelector('.' + classNames.active);\n if (activeElement && activeElement !== chipWrapper) {\n activeElement.classList.remove(classNames.active);\n activeElement.setAttribute('aria-selected', 'false');\n }\n this.setProperties({\n selectedChips: null\n }, true);\n } else {\n this.setProperties({\n selectedChips: []\n }, true);\n }\n if (chipWrapper.classList.contains(classNames.active)) {\n chipWrapper.classList.remove(classNames.active);\n chipWrapper.setAttribute('aria-selected', 'false');\n } else {\n chipWrapper.classList.add(classNames.active);\n chipWrapper.setAttribute('aria-selected', 'true');\n }\n this.updateSelectedChips();\n };\n ChipList.prototype.updateSelectedChips = function () {\n var chipListEle = this.element.querySelectorAll('.' + classNames.chip);\n var chipCollIndex = [];\n var chipCollValue = [];\n var chip = null;\n var value = null;\n for (var i = 0; i < chipListEle.length; i++) {\n var selectedEle = this.element.querySelectorAll('.' + classNames.chip)[i];\n if (selectedEle.getAttribute('aria-selected') === 'true') {\n value = selectedEle.getAttribute('data-value');\n if (this.selection === 'Single' && selectedEle.classList.contains('e-active')) {\n chip = value ? value : i;\n break;\n } else {\n chip = value ? chipCollValue.push(value) : chipCollIndex.push(i);\n }\n }\n }\n this.setProperties({\n selectedChips: this.selection === 'Single' ? chip : value ? chipCollValue : chipCollIndex\n }, true);\n };\n ChipList.prototype.deleteHandler = function (chipWrapper, index) {\n // Used to store the deleted chip item details.\n var deletedChipData = this.find(chipWrapper);\n this.chips.splice(index, 1);\n this.setProperties({\n chips: this.chips\n }, true);\n detach(chipWrapper);\n this.trigger('deleted', deletedChipData);\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also, it removes the attributes and classes.\n * {% codeBlock src='chips/destroy/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n ChipList.prototype.destroy = function () {\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n }\n this.dragCollection = [];\n this.clearTemplate();\n removeClass([this.element], [classNames.chipSet, classNames.chip, classNames.rtl, classNames.multiSelection, classNames.singleSelection, classNames.disabled, classNames.chipWrapper, classNames.iconWrapper, classNames.active, classNames.focused].concat(this.cssClass ? this.cssClass.toString().split(' ').filter(function (css) {\n return css;\n }) : []));\n this.removeMultipleAttributes(['tabindex', 'role', 'aria-label', 'aria-multiselectable'], this.element);\n this.wireEvent(true);\n this.rippleFunction();\n _super.prototype.destroy.call(this);\n this.element.innerHTML = '';\n this.element.innerText = this.innerText;\n };\n ChipList.prototype.removeMultipleAttributes = function (attributes, element) {\n attributes.forEach(function (attr) {\n element.removeAttribute(attr);\n });\n };\n ChipList.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n ChipList.prototype.getModuleName = function () {\n return 'chip-list';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @returns void\n * @private\n */\n ChipList.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'chips':\n case 'text':\n case 'avatarText':\n case 'avatarIconCss':\n case 'leadingIconCss':\n case 'trailingIconCss':\n case 'selection':\n case 'enableDelete':\n case 'enabled':\n this.refresh();\n break;\n case 'cssClass':\n if (!this.chipType()) {\n removeClass([this.element], oldProp.cssClass.toString().split(' ').filter(function (css) {\n return css;\n }));\n addClass([this.element], newProp.cssClass.toString().split(' ').filter(function (css) {\n return css;\n }));\n } else {\n this.refresh();\n }\n break;\n case 'selectedChips':\n removeClass(this.element.querySelectorAll('.e-active'), 'e-active');\n if (this.selection === 'Multiple') {\n this.multiSelectedChip = [];\n this.multiSelection(newProp.selectedChips);\n this.onSelect(this.multiSelectedChip, true);\n this.updateSelectedChips();\n } else {\n this.onSelect(newProp.selectedChips, true);\n }\n break;\n case 'enableRtl':\n this.setRtl();\n break;\n case 'allowDragAndDrop':\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n }\n this.dragCollection = [];\n if (this.allowDragAndDrop) {\n this.enableDraggingChips();\n }\n break;\n case 'dragArea':\n if (this.allowDragAndDrop) {\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].dragArea = this.dragArea;\n }\n }\n break;\n }\n }\n };\n var ChipList_1;\n __decorate([Property([])], ChipList.prototype, \"chips\", void 0);\n __decorate([Property('')], ChipList.prototype, \"text\", void 0);\n __decorate([Property('')], ChipList.prototype, \"avatarText\", void 0);\n __decorate([Property('')], ChipList.prototype, \"avatarIconCss\", void 0);\n __decorate([Property('')], ChipList.prototype, \"htmlAttributes\", void 0);\n __decorate([Property('')], ChipList.prototype, \"leadingIconCss\", void 0);\n __decorate([Property('')], ChipList.prototype, \"trailingIconCss\", void 0);\n __decorate([Property('')], ChipList.prototype, \"leadingIconUrl\", void 0);\n __decorate([Property('')], ChipList.prototype, \"trailingIconUrl\", void 0);\n __decorate([Property('')], ChipList.prototype, \"cssClass\", void 0);\n __decorate([Property(true)], ChipList.prototype, \"enabled\", void 0);\n __decorate([Property([])], ChipList.prototype, \"selectedChips\", void 0);\n __decorate([Property('None')], ChipList.prototype, \"selection\", void 0);\n __decorate([Property(false)], ChipList.prototype, \"enableDelete\", void 0);\n __decorate([Property(false)], ChipList.prototype, \"allowDragAndDrop\", void 0);\n __decorate([Property(null)], ChipList.prototype, \"dragArea\", void 0);\n __decorate([Event()], ChipList.prototype, \"created\", void 0);\n __decorate([Event()], ChipList.prototype, \"click\", void 0);\n __decorate([Event()], ChipList.prototype, \"beforeClick\", void 0);\n __decorate([Event()], ChipList.prototype, \"delete\", void 0);\n __decorate([Event()], ChipList.prototype, \"deleted\", void 0);\n __decorate([Event()], ChipList.prototype, \"dragStart\", void 0);\n __decorate([Event()], ChipList.prototype, \"dragging\", void 0);\n __decorate([Event()], ChipList.prototype, \"dragStop\", void 0);\n ChipList = ChipList_1 = __decorate([NotifyPropertyChanges], ChipList);\n return ChipList;\n}(Component);\nexport { ChipList };","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};\nimport { Event, ChildProperty, Collection, Complex, Component, NotifyPropertyChanges, Property, getUniqueID, EventHandler, isRippleEnabled, removeClass, addClass, attributes, animationMode } from '@syncfusion/ej2-base';\nimport { select, extend, deleteObject, KeyboardEvents, append, rippleEffect, remove, closest, selectAll, isNullOrUndefined, compile, formatUnit, Animation } from '@syncfusion/ej2-base';\nimport { Fab } from './../floating-action-button/index';\nvar topPosition = ['TopLeft', 'TopCenter', 'TopRight'];\nvar bottomPosition = ['BottomLeft', 'BottomCenter', 'BottomRight'];\nvar leftPosition = ['TopLeft', 'MiddleLeft', 'BottomLeft'];\nvar rightPosition = ['TopRight', 'MiddleRight', 'BottomRight'];\nvar SDHIDDEN = 'e-speeddial-hidden';\nvar FIXEDSD = 'e-speeddial-fixed';\nvar SPEEDDIAL = 'e-speeddial';\nvar RTLCLASS = 'e-rtl';\nvar HOVERSD = 'e-speeddial-hover-open';\nvar RADIALSD = 'e-speeddial-radial';\nvar LINEARSD = 'e-speeddial-linear';\nvar TEMPLATESD = 'e-speeddial-template';\nvar SDTEMPLATECONTAINER = 'e-speeddial-template-container';\nvar SDOVERLAY = 'e-speeddial-overlay';\nvar SDPOPUP = 'e-speeddial-popup';\nvar SDUL = 'e-speeddial-ul';\nvar SDLI = 'e-speeddial-li';\nvar SDACTIVELI = 'e-speeddial-li-active';\nvar SDLIICON = 'e-speeddial-li-icon';\nvar SDLITEXT = 'e-speeddial-li-text';\nvar SDLITEXTONLY = 'e-speeddial-text-li';\nvar DISABLED = 'e-disabled';\nvar SDVERTICALBOTTOM = 'e-speeddial-vert-bottom';\nvar SDVERTICALRIGHT = 'e-speeddial-vert-right';\nvar SDHORIZONTALTOP = 'e-speeddial-horz-top';\nvar SDHORIZONTALLEFT = 'e-speeddial-horz-left';\nvar SDHORIZONTALRIGHT = 'e-speeddial-horz-right';\nvar SDOVERFLOW = 'e-speeddial-overflow';\nvar SDVERTOVERFLOW = 'e-speeddial-vert-overflow';\nvar SDHORZOVERFLOW = 'e-speeddial-horz-overflow';\nvar SDTOP = 'e-speeddial-top';\nvar SDBOTTOM = 'e-speeddial-bottom';\nvar SDRIGHT = 'e-speeddial-right';\nvar SDLEFT = 'e-speeddial-left';\nvar SDMIDDLE = 'e-speeddial-middle';\nvar SDCENTER = 'e-speeddial-center';\nvar SDTOPLEFT = 'e-speeddial-top-left';\nvar SDBOTTOMRIGHT = 'e-speeddial-bottom-right';\nvar SDTOPRIGHT = 'e-speeddial-top-right';\nvar SDBOTTOMLEFT = 'e-speeddial-bottom-left';\nvar SDVERTDIST = '--speeddialVertDist';\nvar SDHORZDIST = '--speeddialHorzDist';\nvar SDRADICALANGLE = '--speeddialRadialAngle';\nvar SDRADICALOFFSET = '--speeddialRadialOffset';\nvar SDRADICALMINHEIGHT = '--speeddialRadialMinHeight';\nvar SDRADICALMINWIDTH = '--speeddialRadialMinWidth';\nvar SDOVERFLOWLIMIT = '--speeddialOverflowLimit';\nvar SDRADICALHORZDIST = '--speeddialRadialHorzDist';\n/**\n * Defines the display mode of speed dial action items in SpeedDial\n */\nexport var SpeedDialMode;\n(function (SpeedDialMode) {\n /**\n * SpeedDial items are displayed in linear order like list.\n */\n SpeedDialMode[\"Linear\"] = \"Linear\";\n /**\n * SpeedDial items are displayed like radial menu in radial direction (circular direction).\n */\n SpeedDialMode[\"Radial\"] = \"Radial\";\n})(SpeedDialMode || (SpeedDialMode = {}));\n/**\n * Defines the speed dial action items display direction when mode is Linear.\n */\nexport var LinearDirection;\n(function (LinearDirection) {\n /**\n * Speed dial action items are displayed vertically above the button of Speed Dial.\n */\n LinearDirection[\"Up\"] = \"Up\";\n /**\n * Speed dial action items are displayed vertically below the button of Speed Dial.\n */\n LinearDirection[\"Down\"] = \"Down\";\n /**\n * Speed dial action items are displayed horizontally on the button's right side.\n */\n LinearDirection[\"Right\"] = \"Right\";\n /**\n * Speed dial action items are displayed horizontally on the button's left side.\n */\n LinearDirection[\"Left\"] = \"Left\";\n /**\n * Speed dial action items are displayed vertically above or below the button of Speed Dial based on the position.\n * If Position is TopRight, TopLeft, TopCenter, the items are displayed vertically below the button else above the button.\n */\n LinearDirection[\"Auto\"] = \"Auto\";\n})(LinearDirection || (LinearDirection = {}));\n/**\n * Defines the speed dial action items order, when mode is Radial.\n */\nexport var RadialDirection;\n(function (RadialDirection) {\n /**\n * SpeedDial items are arranged in clockwise direction.\n */\n RadialDirection[\"Clockwise\"] = \"Clockwise\";\n /**\n * SpeedDial items are shown in anti-clockwise direction.\n */\n RadialDirection[\"AntiClockwise\"] = \"AntiClockwise\";\n /**\n * SpeedDial items are shown clockwise or anti-clockwise based on the position.\n */\n RadialDirection[\"Auto\"] = \"Auto\";\n})(RadialDirection || (RadialDirection = {}));\n/**\n * Defines the animation effect applied when open and close the speed dial items.\n */\nexport var SpeedDialAnimationEffect;\n(function (SpeedDialAnimationEffect) {\n /**\n * SpeedDial open/close actions occur with the Fade animation effect.\n */\n SpeedDialAnimationEffect[\"Fade\"] = \"Fade\";\n /**\n * SpeedDial open/close actions occur with the FadeZoom animation effect.\n */\n SpeedDialAnimationEffect[\"FadeZoom\"] = \"FadeZoom\";\n /**\n * SpeedDial open/close actions occur with the FlipLeftDown animation effect.\n */\n SpeedDialAnimationEffect[\"FlipLeftDown\"] = \"FlipLeftDown\";\n /**\n * SpeedDial open/close actions occur with the FlipLeftUp animation effect.\n */\n SpeedDialAnimationEffect[\"FlipLeftUp\"] = \"FlipLeftUp\";\n /**\n * SpeedDial open/close actions occur with the FlipRightDown animation effect.\n */\n SpeedDialAnimationEffect[\"FlipRightDown\"] = \"FlipRightDown\";\n /**\n * SpeedDial open/close actions occur with the FlipRightUp animation effect.\n */\n SpeedDialAnimationEffect[\"FlipRightUp\"] = \"FlipRightUp\";\n /**\n * SpeedDial open/close actions occur with the FlipXDown animation effect.\n */\n SpeedDialAnimationEffect[\"FlipXDown\"] = \"FlipXDown\";\n /**\n * SpeedDial open/close actions occur with the FlipXUp animation effect.\n */\n SpeedDialAnimationEffect[\"FlipXUp\"] = \"FlipXUp\";\n /**\n * SpeedDial open/close actions occur with the FlipYLeft animation effect.\n */\n SpeedDialAnimationEffect[\"FlipYLeft\"] = \"FlipYLeft\";\n /**\n * SpeedDial open/close actions occur with the FlipYRight animation effect.\n */\n SpeedDialAnimationEffect[\"FlipYRight\"] = \"FlipYRight\";\n /**\n * SpeedDial open/close actions occur with the SlideBottom animation effect.\n */\n SpeedDialAnimationEffect[\"SlideBottom\"] = \"SlideBottom\";\n /**\n * SpeedDial open/close actions occur with the SlideLeft animation effect.\n */\n SpeedDialAnimationEffect[\"SlideLeft\"] = \"SlideLeft\";\n /**\n * SpeedDial open/close actions occur with the SlideRight animation effect.\n */\n SpeedDialAnimationEffect[\"SlideRight\"] = \"SlideRight\";\n /**\n * SpeedDial open/close actions occur with the SlideTop animation effect.\n */\n SpeedDialAnimationEffect[\"SlideTop\"] = \"SlideTop\";\n /**\n * SpeedDial open/close actions occur with the Zoom animation effect.\n */\n SpeedDialAnimationEffect[\"Zoom\"] = \"Zoom\";\n /**\n * SpeedDial open/close actions occur without any animation effect.\n */\n SpeedDialAnimationEffect[\"None\"] = \"None\";\n})(SpeedDialAnimationEffect || (SpeedDialAnimationEffect = {}));\n/**\n * AProvides options to customize the animation applied while opening and closing the popup of SpeedDial.\n */\nvar SpeedDialAnimationSettings = /** @class */function (_super) {\n __extends(SpeedDialAnimationSettings, _super);\n function SpeedDialAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('Fade')], SpeedDialAnimationSettings.prototype, \"effect\", void 0);\n __decorate([Property(400)], SpeedDialAnimationSettings.prototype, \"duration\", void 0);\n __decorate([Property(0)], SpeedDialAnimationSettings.prototype, \"delay\", void 0);\n return SpeedDialAnimationSettings;\n}(ChildProperty);\nexport { SpeedDialAnimationSettings };\n/**\n * Provides the options to customize the speed dial action buttons when mode of SpeedDial is Radial.\n */\nvar RadialSettings = /** @class */function (_super) {\n __extends(RadialSettings, _super);\n function RadialSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('Auto')], RadialSettings.prototype, \"direction\", void 0);\n __decorate([Property(-1)], RadialSettings.prototype, \"endAngle\", void 0);\n __decorate([Property('100px')], RadialSettings.prototype, \"offset\", void 0);\n __decorate([Property(-1)], RadialSettings.prototype, \"startAngle\", void 0);\n return RadialSettings;\n}(ChildProperty);\nexport { RadialSettings };\n/**\n * Defines the items of Floating Action Button.\n */\nvar SpeedDialItem = /** @class */function (_super) {\n __extends(SpeedDialItem, _super);\n function SpeedDialItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('')], SpeedDialItem.prototype, \"iconCss\", void 0);\n __decorate([Property('')], SpeedDialItem.prototype, \"id\", void 0);\n __decorate([Property('')], SpeedDialItem.prototype, \"text\", void 0);\n __decorate([Property('')], SpeedDialItem.prototype, \"title\", void 0);\n __decorate([Property(false)], SpeedDialItem.prototype, \"disabled\", void 0);\n return SpeedDialItem;\n}(ChildProperty);\nexport { SpeedDialItem };\n/**\n * The SpeedDial component that appears in front of all the contents of the page and displays list of action buttons on click which is an extended version of FAB.\n * The button of speed dial is positioned in relative to a view port of browser or the .\n * It can display a menu of related actions or a custom content popupTemplate>.\n *\n */\nvar SpeedDial = /** @class */function (_super) {\n __extends(SpeedDial, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {SpeedDialModel} options - Specifies the floating action button model\n * @param {string|HTMLButtonElement} element - Specifies the target element\n */\n function SpeedDial(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isMenuOpen = false;\n _this.isClock = true;\n _this.isVertical = true;\n _this.isControl = false;\n _this.focusedIndex = -1;\n return _this;\n }\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n SpeedDial.prototype.render = function () {\n this.initialize();\n };\n SpeedDial.prototype.preRender = function () {\n this.keyConfigs = {\n space: 'space',\n enter: 'enter',\n end: 'end',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n esc: 'escape'\n };\n this.validateDirection();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n SpeedDial.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n SpeedDial.prototype.getModuleName = function () {\n return 'speed-dial';\n };\n SpeedDial.prototype.initialize = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.fab = new Fab({\n content: this.content,\n cssClass: this.cssClass ? SPEEDDIAL + ' ' + this.cssClass : SPEEDDIAL,\n disabled: this.disabled,\n enablePersistence: this.enablePersistence,\n enableRtl: this.enableRtl,\n iconCss: this.openIconCss,\n iconPosition: this.iconPosition,\n position: this.position,\n target: this.target,\n visible: this.visible,\n isPrimary: this.isPrimary\n });\n this.fab.appendTo(this.element);\n if (this.items.length > 0 || this.popupTemplate) {\n this.createPopup();\n }\n this.wireEvents();\n };\n SpeedDial.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n EventHandler.add(document.body, 'click', this.bodyClickHandler, this);\n if (this.opensOnHover) {\n this.wireFabHover();\n } else {\n this.wireFabClick();\n }\n };\n SpeedDial.prototype.wirePopupEvents = function () {\n this.removeRippleEffect = rippleEffect(this.popupEle, {\n selector: '.' + SDLIICON\n });\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n this.popupKeyboardModule = new KeyboardEvents(this.popupEle, {\n keyAction: this.popupKeyActionHandler.bind(this),\n keyConfigs: {\n esc: 'escape'\n },\n eventName: 'keydown'\n });\n this.documentKeyboardModule = new KeyboardEvents(document.body, {\n keyAction: this.popupKeyActionHandler.bind(this),\n keyConfigs: {\n enter: 'enter',\n space: 'space'\n },\n eventName: 'keydown'\n });\n EventHandler.add(this.popupEle, 'click', this.popupClick, this);\n EventHandler.add(this.popupEle, 'mouseleave', this.popupMouseLeaveHandle, this);\n };\n SpeedDial.prototype.wireFabClick = function () {\n EventHandler.add(this.fab.element, 'click', this.fabClick, this);\n };\n SpeedDial.prototype.wireFabHover = function () {\n this.popupEle.classList.add(HOVERSD);\n EventHandler.add(this.fab.element, 'mouseover', this.mouseOverHandle, this);\n EventHandler.add(this.element, 'mouseleave', this.mouseLeaveHandle, this);\n };\n SpeedDial.prototype.createPopup = function () {\n var className = SDPOPUP + ' ' + SDHIDDEN;\n className = this.enableRtl ? className + ' ' + RTLCLASS : className;\n className = this.cssClass ? className + ' ' + this.cssClass : className;\n this.popupEle = this.createElement('div', {\n className: className,\n id: this.element.id + '_popup'\n });\n this.element.insertAdjacentElement('afterend', this.popupEle);\n attributes(this.element, {\n 'aria-expanded': 'false',\n 'aria-haspopup': 'true',\n 'aria-controls': this.popupEle.id\n });\n this.setPopupContent();\n if (this.modal) {\n this.createOverlay();\n }\n this.checkTarget();\n this.setPositionProps();\n this.wirePopupEvents();\n };\n SpeedDial.prototype.createOverlay = function () {\n this.overlayEle = this.createElement('div', {\n id: this.element.id + '_overlay',\n className: (SDOVERLAY + (this.isMenuOpen ? '' : ' ' + SDHIDDEN) + ' ' + this.cssClass).trim()\n });\n this.element.insertAdjacentElement('beforebegin', this.overlayEle);\n };\n SpeedDial.prototype.popupClick = function () {\n this.isControl = true;\n };\n //Checks and closes the speed dial if the click happened outside this speed dial.\n SpeedDial.prototype.bodyClickHandler = function (e) {\n if (this.isControl) {\n this.isControl = false;\n return;\n }\n if (this.isMenuOpen) {\n this.hidePopupEle(e);\n }\n };\n SpeedDial.prototype.fabClick = function (e) {\n this.isControl = true;\n if (this.isMenuOpen) {\n this.hidePopupEle(e);\n } else {\n this.showPopupEle(e);\n }\n };\n SpeedDial.prototype.setPopupContent = function () {\n this.popupEle.classList.remove(RADIALSD, LINEARSD, TEMPLATESD);\n if (!this.popupTemplate) {\n this.popupEle.classList.add(this.mode === 'Radial' ? RADIALSD : LINEARSD);\n this.createUl();\n this.createItems();\n } else {\n this.popupEle.classList.add(TEMPLATESD);\n this.appendTemplate();\n }\n this.renderReactTemplates();\n };\n SpeedDial.prototype.appendTemplate = function () {\n var templateContainer = this.createElement('div', {\n className: SDTEMPLATECONTAINER\n });\n append([templateContainer], this.popupEle);\n var templateFunction = this.getTemplateString(this.popupTemplate);\n append(templateFunction({}, this, 'fabPopupTemplate', this.element.id + 'popupTemplate', this.isStringTemplate), templateContainer);\n };\n SpeedDial.prototype.getTemplateString = function (template) {\n var stringContent = '';\n try {\n var tempEle = select(template);\n if (typeof template !== 'function' && tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n stringContent = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n } else {\n stringContent = template;\n }\n } catch (e) {\n stringContent = template;\n }\n return compile(stringContent);\n };\n SpeedDial.prototype.updatePopupTemplate = function () {\n if (this.popupEle) {\n if (this.popupEle.querySelector('.' + SDLI)) {\n this.clearItems();\n this.popupEle.classList.remove(RADIALSD, LINEARSD);\n this.popupEle.classList.add(TEMPLATESD);\n }\n while (this.popupEle.firstElementChild) {\n remove(this.popupEle.firstElementChild);\n }\n this.setPopupContent();\n this.updatePositionProperties();\n } else {\n this.createPopup();\n }\n };\n SpeedDial.prototype.createUl = function () {\n var popupUlEle = this.createElement('ul', {\n className: SDUL,\n id: this.element.id + '_ul',\n attrs: {\n 'role': 'menu'\n }\n });\n this.popupEle.appendChild(popupUlEle);\n };\n SpeedDial.prototype.createItems = function () {\n var _this = this;\n this.focusedIndex = -1;\n var ul = this.popupEle.querySelector('.' + SDUL);\n var _loop_1 = function (index) {\n var item = this_1.items[parseInt(index.toString(), 10)];\n var li = this_1.createElement('li', {\n className: SDLI + ' ' + SDHIDDEN,\n id: item.id ? item.id : this_1.element.id + '_li_' + index,\n attrs: {\n 'role': 'menuitem'\n }\n });\n if (item.text) {\n li.setAttribute('aria-label', item.text);\n }\n if (this_1.itemTemplate) {\n var templateFunction = this_1.getTemplateString(this_1.itemTemplate);\n append(templateFunction(item, this_1, 'fabItemTemplate', this_1.element.id + 'itemTemplate', this_1.isStringTemplate), li);\n } else {\n if (item.iconCss) {\n var iconSpan = this_1.createElement('span', {\n className: SDLIICON + ' ' + item.iconCss\n });\n li.appendChild(iconSpan);\n }\n if (item.text) {\n var textSpan = this_1.createElement('span', {\n className: SDLITEXT\n });\n textSpan.innerText = item.text;\n li.appendChild(textSpan);\n if (!item.iconCss) {\n li.classList.add(SDLITEXTONLY);\n }\n }\n }\n if (item.disabled) {\n li.classList.add(DISABLED);\n li.setAttribute('aria-disabled', 'true');\n } else {\n EventHandler.add(li, 'click', function (e) {\n return _this.triggerItemClick(e, item);\n }, this_1);\n }\n if (item.title) {\n li.setAttribute('title', item.title);\n }\n var eventArgs = {\n element: li,\n item: item\n };\n this_1.trigger('beforeItemRender', eventArgs, function (args) {\n ul.appendChild(args.element);\n });\n };\n var this_1 = this;\n for (var index = 0; index < this.items.length; index++) {\n _loop_1(index);\n }\n };\n SpeedDial.prototype.setRTL = function () {\n this.popupEle.classList[this.enableRtl ? 'add' : 'remove'](RTLCLASS);\n this.clearHorizontalPosition();\n if (!(this.popupTemplate || this.mode === 'Radial')) {\n this.setLinearHorizontalPosition();\n } else {\n if (!this.popupTemplate && this.mode === 'Radial') {\n this.setRadialPosition();\n }\n this.setHorizontalPosition();\n }\n };\n SpeedDial.prototype.checkTarget = function () {\n this.isFixed = true;\n if (this.target) {\n this.targetEle = typeof this.target === 'string' ? select(this.target) : this.target;\n if (this.targetEle) {\n this.targetEle.appendChild(this.element);\n this.isFixed = false;\n }\n }\n if (this.isFixed) {\n if (this.popupEle) {\n this.popupEle.classList.add(FIXEDSD);\n }\n if (this.overlayEle) {\n this.overlayEle.classList.add(FIXEDSD);\n }\n } else {\n if (this.popupEle) {\n this.popupEle.classList.remove(FIXEDSD);\n }\n if (this.overlayEle) {\n this.overlayEle.classList.remove(FIXEDSD);\n }\n }\n };\n SpeedDial.prototype.setVisibility = function (val) {\n this.setProperties({\n visible: val\n }, true);\n this.fab.setProperties({\n visible: val\n });\n };\n SpeedDial.prototype.popupMouseLeaveHandle = function (e) {\n var target = e.relatedTarget;\n if (this.opensOnHover && !(target.classList.contains(SPEEDDIAL) || closest(target, '.' + SPEEDDIAL))) {\n this.hidePopupEle(e);\n }\n };\n SpeedDial.prototype.mouseOverHandle = function (e) {\n this.showPopupEle(e);\n };\n SpeedDial.prototype.mouseLeaveHandle = function (e) {\n var target = e.relatedTarget;\n if (!(target.classList.contains(SDPOPUP) || closest(target, '.' + SDPOPUP))) {\n this.hidePopupEle(e);\n }\n };\n SpeedDial.prototype.popupKeyActionHandler = function (e) {\n switch (e.action) {\n case 'esc':\n this.hidePopupEle(e);\n break;\n case 'enter':\n case 'space':\n if (this.isMenuOpen && e.target !== this.element) {\n this.hidePopupEle(e);\n }\n break;\n }\n };\n SpeedDial.prototype.keyActionHandler = function (e) {\n e.preventDefault();\n switch (e.action) {\n case 'enter':\n case 'space':\n if (this.isMenuOpen) {\n if (this.focusedIndex !== -1) {\n this.triggerItemClick(e, this.items[this.focusedIndex]);\n } else {\n this.hidePopupEle(e);\n }\n } else {\n this.showPopupEle(e);\n }\n break;\n case 'esc':\n this.hidePopupEle(e);\n break;\n default:\n if (this.popupTemplate || !this.isMenuOpen) {\n break;\n }\n switch (e.action) {\n case 'end':\n this.focusLastElement();\n break;\n case 'home':\n this.focusFirstElement();\n break;\n case 'moveRight':\n if (this.mode === 'Radial') {\n this.focusLeftRightElement(false);\n } else {\n this.focusLinearElement(false);\n }\n break;\n case 'moveDown':\n if (this.mode === 'Radial') {\n this.focusUpDownElement(false);\n } else {\n this.focusLinearElement(false);\n }\n break;\n case 'moveLeft':\n if (this.mode === 'Radial') {\n this.focusLeftRightElement(true);\n } else {\n this.focusLinearElement(true);\n }\n break;\n case 'moveUp':\n if (this.mode === 'Radial') {\n this.focusUpDownElement(true);\n } else {\n this.focusLinearElement(true);\n }\n break;\n }\n break;\n }\n };\n SpeedDial.prototype.focusFirstElement = function () {\n var ele = selectAll('.' + SDLI, this.popupEle);\n var index = 0;\n while (ele[parseInt(index.toString(), 10)].classList.contains(DISABLED)) {\n index++;\n if (index > ele.length - 1) {\n return;\n }\n }\n this.setFocus(index, ele[parseInt(index.toString(), 10)]);\n };\n SpeedDial.prototype.focusLastElement = function () {\n var ele = selectAll('.' + SDLI, this.popupEle);\n var index = ele.length - 1;\n while (ele[parseInt(index.toString(), 10)].classList.contains(DISABLED)) {\n index--;\n if (index < 0) {\n return;\n }\n }\n this.setFocus(index, ele[parseInt(index.toString(), 10)]);\n };\n /*Linear*/\n SpeedDial.prototype.focusLinearElement = function (isLeftUp) {\n var isReversed = this.popupEle.classList.contains(SDVERTICALBOTTOM) || this.popupEle.classList.contains(SDHORIZONTALRIGHT);\n /* Elements will be in reverse (RTL) order for these classes are present.\n Reversed and Down or right is previous.\n Not reversed and Up or left is previous.\n ((isReversed && !isLeftUp)||(!isReversed && isLeftUp)) ==> isReversed!==isLeftUp */\n if (isReversed !== isLeftUp) {\n this.focusPrevElement();\n } else {\n this.focusNextElement();\n }\n };\n /*Radial*/\n SpeedDial.prototype.focusLeftRightElement = function (isLeft) {\n /*radialTop position and left + anticlock or right + clock is previous\n other positions and right + anticlock or left + clock is previous\n ((isLeft && !this.isClock)||(!isLeft && this.isClock)) ==> isLeft!==this.isClock */\n var isradialTop = ['TopLeft', 'TopCenter', 'TopRight', 'MiddleLeft'].indexOf(this.position) !== -1;\n if (isradialTop && isLeft !== this.isClock || !isradialTop && isLeft === this.isClock) {\n this.focusPrevElement();\n } else {\n this.focusNextElement();\n }\n };\n /*Radial*/\n SpeedDial.prototype.focusUpDownElement = function (isUp) {\n /*radialRight position and up + anticlock or down + clock is previous\n other positions and down + anticlock or up + clock is previous\n ((isUp && !this.isClock)||(!isUp && this.isClock)) ==> isUp!==this.isClock */\n var isradialRight = ['TopRight', 'MiddleRight', 'BottomRight', 'BottomCenter'].indexOf(this.position) !== -1;\n if (isradialRight && isUp !== this.isClock || !isradialRight && isUp === this.isClock) {\n this.focusPrevElement();\n } else {\n this.focusNextElement();\n }\n };\n SpeedDial.prototype.focusPrevElement = function () {\n var ele = selectAll('.' + SDLI, this.popupEle);\n var index = this.focusedIndex;\n do {\n index--;\n if (index < 0) {\n this.setFocus(-1);\n return;\n }\n } while (ele[parseInt(index.toString(), 10)].classList.contains(DISABLED));\n this.setFocus(index, ele[parseInt(index.toString(), 10)]);\n };\n SpeedDial.prototype.focusNextElement = function () {\n var ele = selectAll('.' + SDLI, this.popupEle);\n var index = this.focusedIndex;\n do {\n index++;\n if (index > ele.length - 1) {\n return;\n }\n } while (ele[parseInt(index.toString(), 10)].classList.contains(DISABLED));\n this.setFocus(index, ele[parseInt(index.toString(), 10)]);\n };\n SpeedDial.prototype.setFocus = function (index, ele) {\n this.removeFocus();\n if (ele) {\n ele.classList.add(SDACTIVELI);\n }\n this.focusedIndex = index;\n };\n SpeedDial.prototype.removeFocus = function () {\n var preEle = select('.' + SDACTIVELI, this.popupEle);\n if (preEle) {\n preEle.classList.remove(SDACTIVELI);\n }\n };\n SpeedDial.prototype.updatePositionProperties = function () {\n this.hidePopupEle();\n this.clearPosition();\n this.validateDirection();\n this.setPositionProps();\n };\n SpeedDial.prototype.setPositionProps = function () {\n if (this.popupTemplate) {\n this.setPosition();\n } else if (this.mode === 'Radial') {\n this.setRadialPosition();\n this.setPosition();\n } else {\n this.setLinearPosition();\n this.setMaxSize();\n }\n };\n SpeedDial.prototype.validateDirection = function () {\n switch (this.direction) {\n case 'Up':\n this.actualLinDirection = topPosition.indexOf(this.position) !== -1 ? 'Auto' : 'Up';\n break;\n case 'Down':\n this.actualLinDirection = bottomPosition.indexOf(this.position) !== -1 ? 'Auto' : 'Down';\n break;\n case 'Right':\n this.actualLinDirection = rightPosition.indexOf(this.position) !== -1 ? 'Auto' : 'Right';\n break;\n case 'Left':\n this.actualLinDirection = leftPosition.indexOf(this.position) !== -1 ? 'Auto' : 'Left';\n break;\n case 'Auto':\n default:\n this.actualLinDirection = 'Auto';\n break;\n }\n this.isVertical = !(this.actualLinDirection === 'Left' || this.actualLinDirection === 'Right');\n };\n SpeedDial.prototype.setMaxSize = function () {\n var top = this.element.offsetTop;\n var left = this.element.offsetLeft;\n var bottom = (this.isFixed ? window.innerHeight : this.targetEle.clientHeight) - this.element.offsetTop - this.element.offsetHeight;\n var right = (this.isFixed ? window.innerWidth : this.targetEle.clientWidth) - this.element.offsetLeft - this.element.offsetWidth;\n var limit = 0;\n var popupUlEle = this.popupEle.querySelector('.' + SDUL);\n if (this.isVertical) {\n limit = this.actualLinDirection === 'Up' || this.actualLinDirection === 'Auto' && topPosition.indexOf(this.position) === -1 ? top : bottom;\n if (limit < popupUlEle.offsetHeight) {\n this.popupEle.classList.add(SDOVERFLOW, SDVERTOVERFLOW);\n popupUlEle.style.setProperty(SDOVERFLOWLIMIT, limit + 'px');\n }\n } else {\n limit = this.enableRtl ? this.direction === 'Right' ? left : right : this.direction === 'Right' ? right : left;\n if (limit < popupUlEle.offsetWidth) {\n this.popupEle.classList.add(SDOVERFLOW, SDHORZOVERFLOW);\n popupUlEle.style.setProperty(SDOVERFLOWLIMIT, limit + 'px');\n }\n }\n };\n SpeedDial.prototype.setLinearPosition = function () {\n var vertDist = 0;\n //Check whether the position value should be in top\n var isTop = this.actualLinDirection === 'Down' || this.actualLinDirection === 'Auto' && topPosition.indexOf(this.position) !== -1 || !this.isVertical && bottomPosition.indexOf(this.position) === -1;\n var elementOffSetHeight = this.element.offsetHeight / 2;\n var isMiddle = ['MiddleRight', 'MiddleCenter', 'MiddleLeft'].indexOf(this.position) !== -1;\n if (isTop) {\n vertDist = this.element.offsetTop + (this.isVertical ? this.element.offsetHeight : 0);\n if (isMiddle) {\n if (this.actualLinDirection === 'Right' || this.actualLinDirection === 'Left') {\n vertDist = this.element.offsetTop - elementOffSetHeight;\n }\n if (this.actualLinDirection === 'Down') {\n vertDist = vertDist - elementOffSetHeight;\n }\n }\n if (!this.isVertical) {\n this.popupEle.classList.add(SDHORIZONTALTOP);\n }\n } else {\n vertDist = this.isFixed ? window.document.documentElement.clientHeight : this.targetEle.clientHeight;\n vertDist = vertDist - this.element.offsetTop - (this.isVertical ? 0 : this.element.offsetHeight);\n if (isMiddle) {\n if (this.actualLinDirection === 'Auto' || this.actualLinDirection === 'Up') {\n vertDist = vertDist + elementOffSetHeight;\n }\n }\n if (this.isVertical) {\n this.popupEle.classList.add(SDVERTICALBOTTOM);\n }\n }\n this.popupEle.classList.add(isTop ? SDTOP : SDBOTTOM);\n this.popupEle.style.setProperty(SDVERTDIST, vertDist + 'px');\n this.setLinearHorizontalPosition();\n };\n SpeedDial.prototype.setLinearHorizontalPosition = function () {\n //Check whether the position value should be in left\n if (this.actualLinDirection === 'Right' || this.isVertical && rightPosition.indexOf(this.position) === -1) {\n if (this.enableRtl) {\n this.setRight();\n } else {\n this.setLeft();\n } //reverse the direction when RTL enabled\n if (!this.isVertical) {\n this.popupEle.classList.add(SDHORIZONTALLEFT);\n }\n } else {\n if (this.enableRtl) {\n this.setLeft();\n } else {\n this.setRight();\n } //reverse the direction when RTL enabled\n this.popupEle.classList.add(this.isVertical ? SDVERTICALRIGHT : SDHORIZONTALRIGHT);\n }\n };\n SpeedDial.prototype.setLeft = function () {\n var elementOffSetWidth = this.element.offsetWidth / 2;\n var isCenter = ['TopCenter', 'MiddleCenter', 'BottomCenter'].indexOf(this.position) !== -1;\n var horzDist = this.element.offsetLeft + (this.isVertical ? 0 : this.element.offsetWidth);\n if (isCenter) {\n if (this.actualLinDirection === 'Auto' || this.actualLinDirection === 'Down' || this.actualLinDirection === 'Up') {\n horzDist = this.element.offsetLeft - elementOffSetWidth;\n } else {\n horzDist = this.actualLinDirection === 'Right' ? this.element.offsetLeft + elementOffSetWidth : horzDist + elementOffSetWidth;\n }\n }\n this.popupEle.style.setProperty(SDHORZDIST, horzDist + 'px');\n this.popupEle.classList.add(SDLEFT);\n };\n SpeedDial.prototype.setRight = function () {\n var elementOffSetWidth = this.element.offsetWidth / 2;\n var isCenter = ['TopCenter', 'MiddleCenter', 'BottomCenter'].indexOf(this.position) !== -1;\n var horzDist = this.isFixed ? window.document.documentElement.clientWidth : this.targetEle.clientWidth;\n horzDist = horzDist - this.element.offsetLeft - (this.isVertical ? this.element.offsetWidth : 0);\n if (isCenter && this.actualLinDirection === 'Left') {\n horzDist = horzDist + elementOffSetWidth;\n }\n if (this.popupEle.classList.contains('e-rtl') && isCenter) {\n horzDist = horzDist - elementOffSetWidth;\n }\n this.popupEle.style.setProperty(SDHORZDIST, horzDist + 'px');\n this.popupEle.classList.add(SDRIGHT);\n };\n SpeedDial.prototype.setPosition = function () {\n //Check for middle Position\n if (['MiddleLeft', 'MiddleRight', 'MiddleCenter'].indexOf(this.position) !== -1) {\n this.popupEle.classList.add(SDMIDDLE);\n var yoffset = ((this.isFixed ? window.innerHeight : this.targetEle.clientHeight) - this.popupEle.offsetHeight) / 2;\n this.popupEle.style.setProperty(SDVERTDIST, yoffset + 'px');\n }\n this.popupEle.classList.add(bottomPosition.indexOf(this.position) === -1 ? SDTOP : SDBOTTOM);\n this.setHorizontalPosition();\n };\n SpeedDial.prototype.setHorizontalPosition = function () {\n //Check for Center Position\n if (['TopCenter', 'BottomCenter', 'MiddleCenter'].indexOf(this.position) !== -1) {\n this.popupEle.classList.add(SDCENTER);\n var xoffset = ((this.isFixed ? window.innerWidth : this.targetEle.clientWidth) - this.popupEle.offsetWidth) / 2;\n this.popupEle.style.setProperty(SDHORZDIST, xoffset + 'px');\n }\n var isRight = rightPosition.indexOf(this.position) !== -1;\n this.popupEle.classList.add(!(this.enableRtl || isRight) || this.enableRtl && isRight ? SDLEFT : SDRIGHT);\n };\n SpeedDial.prototype.setCustomRadialPosition = function () {\n var viewportWidth = document.documentElement.clientWidth;\n var viewportHeight = document.documentElement.clientHeight;\n if (['TopLeft', 'BottomLeft', 'MiddleLeft'].indexOf(this.position) !== -1) {\n var horzDist = void 0;\n if (this.enableRtl) {\n if (this.isFixed) {\n horzDist = viewportWidth - (this.element.offsetLeft + this.element.offsetWidth);\n } else {\n horzDist = this.targetEle.clientWidth - (this.element.offsetLeft + this.element.offsetWidth);\n }\n } else {\n horzDist = this.element.offsetLeft;\n }\n this.popupEle.style.setProperty(SDRADICALHORZDIST, horzDist + 'px');\n }\n if (['TopLeft', 'TopCenter', 'TopRight'].indexOf(this.position) !== -1) {\n this.popupEle.style.top = this.element.offsetTop + 'px';\n }\n if (['TopRight', 'BottomRight', 'MiddleRight'].indexOf(this.position) !== -1) {\n var horzDist = void 0;\n if (this.enableRtl) {\n horzDist = this.element.offsetLeft;\n } else {\n if (this.isFixed) {\n horzDist = viewportWidth - (this.element.offsetLeft + this.element.offsetWidth);\n } else {\n horzDist = this.targetEle.clientWidth - (this.element.offsetLeft + this.element.offsetWidth);\n }\n }\n this.popupEle.style.setProperty(SDRADICALHORZDIST, horzDist + 'px');\n }\n if (['BottomLeft', 'BottomCenter', 'BottomRight'].indexOf(this.position) !== -1) {\n if (this.isFixed) {\n this.popupEle.style.bottom = viewportHeight - (this.element.offsetTop + this.element.offsetHeight) + 'px';\n } else {\n this.popupEle.style.bottom = this.targetEle.clientHeight - (this.element.offsetTop + this.element.offsetHeight) + 'px';\n }\n }\n if (['TopCenter', 'MiddleCenter', 'BottomCenter'].indexOf(this.position) !== -1) {\n var horzDist = void 0;\n if (this.enableRtl) {\n if (this.isFixed) {\n horzDist = viewportWidth - (this.element.offsetLeft + this.element.offsetWidth) - this.popupEle.offsetWidth / 2;\n } else {\n var targetEleWidth = this.targetEle.clientWidth;\n var popupEleWidth = this.popupEle.offsetWidth;\n horzDist = targetEleWidth - (this.element.offsetLeft + this.element.offsetWidth) - popupEleWidth / 2;\n }\n } else {\n horzDist = this.element.offsetLeft - this.popupEle.offsetWidth / 2;\n }\n this.popupEle.style.setProperty(SDRADICALHORZDIST, horzDist + 'px');\n }\n if (['MiddleLeft', 'MiddleCenter', 'MiddleRight'].indexOf(this.position) !== -1) {\n this.popupEle.style.top = this.element.offsetTop - this.popupEle.offsetHeight / 2 + 'px';\n }\n };\n SpeedDial.prototype.setRadialPosition = function () {\n this.setRadialCorner();\n var range = this.getActualRange();\n this.isClock = range.direction === 'Clockwise';\n var offset = formatUnit(range.offset);\n var li = selectAll('.' + SDLI, this.popupEle);\n this.popupEle.style.setProperty(SDRADICALOFFSET, offset);\n this.popupEle.style.setProperty(SDRADICALMINHEIGHT, li[0].offsetHeight + 'px');\n this.popupEle.style.setProperty(SDRADICALMINWIDTH, li[0].offsetWidth + 'px');\n var availableAngle = Math.abs(range.endAngle - range.startAngle);\n //Start and end will be same for Middle Center position, hence available angle will 0 or 360.\n var gaps = availableAngle === 360 || availableAngle === 0 ? li.length : li.length - 1;\n var perAngle = availableAngle / gaps;\n for (var i = 0; i < li.length; i++) {\n var ele = li[parseInt(i.toString(), 10)];\n var startAngle = range.startAngle;\n var angle = this.isClock ? startAngle + perAngle * i : startAngle - perAngle * i;\n angle = angle % 360; // removing the Zerp crossing changes.\n ele.style.setProperty(SDRADICALANGLE, angle + 'deg');\n }\n };\n SpeedDial.prototype.setRadialCorner = function () {\n //topLeftPosition\n if (['TopLeft', 'TopCenter', 'MiddleLeft', 'MiddleCenter'].indexOf(this.position) !== -1) {\n this.popupEle.classList.add(this.enableRtl ? SDTOPRIGHT : SDTOPLEFT);\n }\n //topRightPosition\n if (['TopRight', 'TopCenter', 'MiddleRight', 'MiddleCenter'].indexOf(this.position) !== -1) {\n this.popupEle.classList.add(this.enableRtl ? SDTOPLEFT : SDTOPRIGHT);\n }\n //bottpmLeftPosition\n if (['BottomLeft', 'BottomCenter', 'MiddleLeft', 'MiddleCenter'].indexOf(this.position) !== -1) {\n this.popupEle.classList.add(this.enableRtl ? SDBOTTOMRIGHT : SDBOTTOMLEFT);\n }\n //bottomRightPosition\n if (['BottomRight', 'BottomCenter', 'MiddleRight', 'MiddleCenter'].indexOf(this.position) !== -1) {\n this.popupEle.classList.add(this.enableRtl ? SDBOTTOMLEFT : SDBOTTOMRIGHT);\n }\n };\n // 0,360 is at right, 90 is at Bottom, 180 is at left, 270 is at top\n SpeedDial.prototype.getActualRange = function () {\n var range = {\n offset: this.radialSettings.offset\n };\n var start = this.radialSettings.startAngle;\n var end = this.radialSettings.endAngle;\n var isClockwise = false;\n switch (this.position) {\n case 'TopLeft':\n case 'TopRight':\n // Switch Left and Right for RTL mode.\n if ('TopLeft' === this.position !== this.enableRtl) {\n //TopLeft\n isClockwise = this.radialSettings.direction === 'Clockwise';\n this.checkAngleRange(start, end, range, isClockwise, 0, 90, false);\n } else {\n //TopRight\n isClockwise = this.radialSettings.direction !== 'AntiClockwise';\n this.checkAngleRange(start, end, range, isClockwise, 90, 180, false);\n }\n break;\n case 'TopCenter':\n isClockwise = this.radialSettings.direction === 'Clockwise';\n this.checkAngleRange(start, end, range, isClockwise, 0, 180, false);\n break;\n case 'MiddleLeft':\n case 'MiddleRight':\n // Switch Left and Right for RTL mode.\n if ('MiddleLeft' === this.position !== this.enableRtl) {\n //MiddleLeft\n isClockwise = this.radialSettings.direction === 'Clockwise';\n /**Replace the value if not defined or greater than 360 or less than 0 or between 91 and 269*/\n start = isNullOrUndefined(start) || start < 0 || start > 360 || start > 90 && start < 270 ? isClockwise ? 270 : 90 : start;\n end = isNullOrUndefined(end) || end < 0 || end > 360 || end > 90 && end < 270 ? isClockwise ? 90 : 270 : end;\n /**update for Zero Crossing */\n start = start < 91 ? start + 360 : start;\n end = end < 91 ? end + 360 : end;\n var switchVal = isClockwise && end < start || !isClockwise && end > start;\n range.startAngle = switchVal ? end : start;\n range.endAngle = switchVal ? start : end;\n } else {\n //MiddleRight\n isClockwise = this.radialSettings.direction !== 'AntiClockwise';\n this.checkAngleRange(start, end, range, isClockwise, 90, 270, false);\n }\n break;\n case 'MiddleCenter':\n isClockwise = this.radialSettings.direction !== 'AntiClockwise';\n /**Replace the value if not defined or greater than 360 or less than 0 */\n start = isNullOrUndefined(start) || start < 0 || start > 360 ? isClockwise ? 0 : 360 : start;\n end = isNullOrUndefined(end) || end < 0 || end > 360 ? isClockwise ? 360 : 0 : end;\n /**update for Zero Crossing */\n range.startAngle = !isClockwise && start <= end ? start + 360 : start;\n range.endAngle = isClockwise && end <= start ? end + 360 : end;\n break;\n case 'BottomLeft':\n case 'BottomRight':\n // Switch Left and Right for RTL mode.\n if ('BottomLeft' === this.position !== this.enableRtl) {\n //BottomLeft\n isClockwise = this.radialSettings.direction === 'Clockwise';\n this.checkAngleRange(start, end, range, isClockwise, 270, 360, true);\n } else {\n //BottomRight\n isClockwise = this.radialSettings.direction !== 'AntiClockwise';\n this.checkAngleRange(start, end, range, isClockwise, 180, 270, true);\n }\n break;\n case 'BottomCenter':\n isClockwise = this.radialSettings.direction !== 'AntiClockwise';\n this.checkAngleRange(start, end, range, isClockwise, 180, 360, true);\n break;\n }\n range.direction = isClockwise ? 'Clockwise' : 'AntiClockwise';\n return range;\n };\n SpeedDial.prototype.checkAngleRange = function (start, end, range, isClockwise, min, max, check0) {\n start = this.checkAngle(start, isClockwise, min, max, check0);\n end = this.checkAngle(end, !isClockwise, min, max, check0);\n /**Switch the values if both are values are in the range but not as per direction*/\n var switchVal = isClockwise && end < start || !isClockwise && end > start;\n range.startAngle = switchVal ? end : start;\n range.endAngle = switchVal ? start : end;\n };\n SpeedDial.prototype.checkAngle = function (val, isStart, min, max, check0) {\n if (isNullOrUndefined(val) || val < 0 || val > 360) {\n return isStart ? min : max;\n } else {\n val = check0 ? val === 0 ? 360 : val : val === 360 ? 0 : val;\n /**check whether the value is in the range if not replace them */\n return val >= min && val <= max ? val : isStart ? min : max;\n }\n };\n SpeedDial.prototype.clearPosition = function () {\n this.popupEle.style.removeProperty(SDRADICALOFFSET);\n this.popupEle.style.removeProperty(SDRADICALMINHEIGHT);\n this.popupEle.style.removeProperty(SDRADICALMINWIDTH);\n this.popupEle.classList.remove(SDTOPLEFT, SDTOPRIGHT, SDBOTTOMLEFT, SDBOTTOMRIGHT);\n this.popupEle.classList.remove(SDTOP, SDBOTTOM, SDMIDDLE);\n this.popupEle.classList.remove(SDHORIZONTALTOP, SDVERTICALBOTTOM);\n this.popupEle.style.removeProperty(SDVERTDIST);\n this.clearHorizontalPosition();\n this.clearOverflow();\n };\n SpeedDial.prototype.clearHorizontalPosition = function () {\n this.popupEle.style.removeProperty(SDHORZDIST);\n this.popupEle.style.removeProperty(SDRADICALHORZDIST);\n this.popupEle.style.removeProperty('top');\n this.popupEle.style.removeProperty('bottom');\n this.popupEle.classList.remove(SDRIGHT, SDLEFT, SDCENTER);\n this.popupEle.classList.remove(SDVERTICALRIGHT, SDHORIZONTALLEFT, SDHORIZONTALRIGHT);\n };\n SpeedDial.prototype.clearOverflow = function () {\n this.popupEle.classList.remove(SDOVERFLOW, SDVERTOVERFLOW, SDHORZOVERFLOW);\n this.popupEle.style.removeProperty(SDOVERFLOWLIMIT);\n };\n SpeedDial.prototype.hidePopupEle = function (e) {\n var _this = this;\n if (!this.popupEle || !this.isMenuOpen) {\n return;\n }\n var eventArgs = {\n element: this.popupEle,\n event: e,\n cancel: false\n };\n this.trigger('beforeClose', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n if (_this.animation.effect !== 'None') {\n var closeAnimation_1 = {\n name: _this.animation.effect + 'Out',\n timingFunction: 'easeOut'\n };\n var eleArray_1 = _this.popupTemplate ? [_this.popupEle.firstElementChild] : selectAll('.' + SDLI, _this.popupEle);\n var timeOutInterval_1 = _this.animation.duration / (eleArray_1.length + 1);\n closeAnimation_1.duration = 2 * timeOutInterval_1;\n /* To keep the animation smooth, start the animation of the second element when animation first element is half completed */\n var animateElement_1 = function (curIndex) {\n var ele = eleArray_1[parseInt(curIndex.toString(), 10)];\n closeAnimation_1.delay = curIndex === eleArray_1.length - 1 ? _this.animation.delay : 0;\n closeAnimation_1.begin = function () {\n if (curIndex === eleArray_1.length - 1) {\n _this.startHide();\n }\n };\n closeAnimation_1.end = function () {\n ele.classList.add(SDHIDDEN);\n if (curIndex === 0) {\n _this.endHide();\n }\n };\n new Animation(closeAnimation_1).animate(ele);\n if (curIndex !== 0) {\n var index_1 = curIndex - 1;\n setTimeout(function () {\n animateElement_1(index_1);\n }, timeOutInterval_1);\n }\n };\n animateElement_1(eleArray_1.length - 1);\n } else {\n _this.startHide();\n if (!_this.popupTemplate) {\n var ele = selectAll('.' + SDLI, _this.popupEle);\n ele.forEach(function (element) {\n element.classList.add(SDHIDDEN);\n });\n }\n _this.endHide();\n }\n });\n };\n SpeedDial.prototype.startHide = function () {\n this.element.setAttribute('aria-expanded', 'false');\n this.removeFocus();\n this.isMenuOpen = false;\n };\n SpeedDial.prototype.endHide = function () {\n this.fab.setProperties({\n iconCss: this.openIconCss\n });\n this.popupEle.classList.add(SDHIDDEN);\n if (this.popupTemplate) {\n this.setVisibility(true);\n }\n this.toggleOverlay();\n if (this.popupTemplate) {\n this.popupEle.removeAttribute('tabindex');\n }\n this.trigger('onClose', {\n element: this.popupEle\n });\n };\n SpeedDial.prototype.showPopupEle = function (e) {\n var _this = this;\n if (!this.popupEle || this.isMenuOpen) {\n return;\n }\n if (this.popupTemplate || this.mode === 'Radial') {\n this.setCustomRadialPosition();\n } else {\n this.setLinearPosition();\n }\n var eventArgs = {\n element: this.popupEle,\n event: e,\n cancel: false\n };\n this.trigger('beforeOpen', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n if (_this.animation.effect !== 'None' || animationMode === 'Enable' && _this.animation.effect === 'None') {\n if (animationMode === 'Enable' && _this.animation.effect === 'None') {\n _this.animation.effect = 'Fade';\n }\n if (animationMode === 'Enable' && _this.animation.duration === 0) {\n _this.animation.duration = 400;\n }\n var openAnimation_1 = {\n name: _this.animation.effect + 'In',\n timingFunction: 'easeIn'\n };\n var eleArray_2 = _this.popupTemplate ? [_this.popupEle.firstElementChild] : selectAll('.' + SDLI, _this.popupEle);\n var timeOutInterval_2 = _this.animation.duration / (eleArray_2.length + 1);\n openAnimation_1.duration = 2 * timeOutInterval_2;\n /* To keep the animation smooth, start the animation of the second element when animation first element is half completed */\n var animateElement_2 = function (curIndex) {\n var ele = eleArray_2[parseInt(curIndex.toString(), 10)];\n openAnimation_1.delay = curIndex === 0 ? _this.animation.delay : 0;\n openAnimation_1.begin = function () {\n if (curIndex === 0) {\n _this.startShow();\n }\n ele.classList.remove(SDHIDDEN);\n };\n openAnimation_1.end = function () {\n if (curIndex === eleArray_2.length - 1) {\n _this.endShow();\n }\n };\n new Animation(openAnimation_1).animate(ele);\n if (curIndex !== eleArray_2.length - 1) {\n var index_2 = curIndex + 1;\n setTimeout(function () {\n animateElement_2(index_2);\n }, timeOutInterval_2);\n }\n };\n animateElement_2(0);\n } else {\n _this.startShow();\n if (!_this.popupTemplate) {\n var ele = selectAll('.' + SDLI, _this.popupEle);\n ele.forEach(function (element) {\n element.classList.remove(SDHIDDEN);\n });\n }\n _this.endShow();\n }\n });\n };\n SpeedDial.prototype.startShow = function () {\n this.element.setAttribute('aria-expanded', 'true');\n this.isMenuOpen = true;\n this.toggleOverlay();\n this.popupEle.classList.remove(SDHIDDEN);\n if (this.popupTemplate) {\n this.setVisibility(false);\n }\n };\n SpeedDial.prototype.endShow = function () {\n if (this.closeIconCss) {\n this.fab.setProperties({\n iconCss: this.closeIconCss\n });\n }\n if (this.popupTemplate) {\n this.popupEle.setAttribute('tabindex', '1');\n this.popupEle.focus();\n }\n this.trigger('onOpen', {\n element: this.popupEle\n });\n };\n SpeedDial.prototype.toggleOverlay = function () {\n if (!this.overlayEle) {\n return;\n }\n this.overlayEle.classList[this.isMenuOpen ? 'remove' : 'add'](SDHIDDEN);\n };\n SpeedDial.prototype.removeOverlayEle = function () {\n if (!this.overlayEle) {\n return;\n }\n remove(this.overlayEle);\n this.overlayEle = undefined;\n };\n SpeedDial.prototype.updatePopupItems = function () {\n if (this.popupEle) {\n this.hidePopupEle();\n this.clearItems();\n this.createItems();\n this.updatePositionProperties();\n } else {\n this.createPopup();\n }\n };\n SpeedDial.prototype.handleResize = function (e) {\n if (!this.popupEle) {\n return;\n }\n this.hidePopupEle(e);\n this.clearOverflow();\n this.setPositionProps();\n };\n SpeedDial.prototype.triggerItemClick = function (e, item) {\n var target = e.target;\n target = target.classList.contains(SDLI) ? target : closest(target, '.' + SDLI);\n var eventArgs = {\n element: target,\n item: item,\n event: e\n };\n this.trigger('clicked', eventArgs);\n this.hidePopupEle(e);\n };\n /**\n * Opens the SpeedDial popup to display to display the speed dial items or the popupTemplate.\n *\n * @returns {void}\n */\n SpeedDial.prototype.show = function () {\n this.showPopupEle();\n };\n /**\n * Closes the SpeedDial popup.\n *\n *@returns {void}\n */\n SpeedDial.prototype.hide = function () {\n this.hidePopupEle();\n };\n /**\n * Refreshes the button position of speed dial. You can call this method to re-position button when the target is resized.\n *\n *@returns {void}\n */\n SpeedDial.prototype.refreshPosition = function () {\n this.resizeHandler();\n };\n SpeedDial.prototype.resizeHandler = function (e) {\n this.handleResize(e);\n };\n SpeedDial.prototype.clearItems = function () {\n var liList = selectAll('.' + SDLI, this.popupEle);\n liList.forEach(function (element) {\n remove(element);\n });\n };\n SpeedDial.prototype.unwireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeHandler);\n EventHandler.remove(document.body, 'click', this.bodyClickHandler);\n if (this.opensOnHover) {\n this.unwireFabHover();\n } else {\n this.unwireFabClick();\n }\n };\n SpeedDial.prototype.unwireFabClick = function () {\n EventHandler.remove(this.fab.element, 'click', this.fabClick);\n };\n SpeedDial.prototype.unwireFabHover = function () {\n this.popupEle.classList.remove(HOVERSD);\n EventHandler.remove(this.fab.element, 'mouseover', this.mouseOverHandle);\n EventHandler.remove(this.element, 'mouseleave', this.mouseLeaveHandle);\n };\n SpeedDial.prototype.unwirePopupEvents = function () {\n if (isRippleEnabled) {\n this.removeRippleEffect();\n }\n this.removeRippleEffect = null;\n this.keyboardModule.destroy();\n this.popupKeyboardModule.destroy();\n this.documentKeyboardModule.destroy();\n this.keyboardModule = null;\n this.popupKeyboardModule = null;\n this.documentKeyboardModule = null;\n EventHandler.remove(this.popupEle, 'click', this.popupClick);\n EventHandler.remove(this.popupEle, 'mouseleave', this.popupMouseLeaveHandle);\n };\n SpeedDial.prototype.destroy = function () {\n var _this = this;\n _super.prototype.destroy.call(this);\n this.unwireEvents();\n ['aria-expanded', 'aria-haspopup', 'aria-controls'].forEach(function (attr) {\n _this.element.removeAttribute(attr);\n });\n if (this.popupEle) {\n this.unwirePopupEvents();\n remove(this.popupEle);\n this.popupEle = undefined;\n }\n this.removeOverlayEle();\n this.fab.destroy();\n this.fab = undefined;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {SpeedDialModel} newProp - Specifies new properties\n * @param {SpeedDialModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n SpeedDial.prototype.onPropertyChanged = function (newProp, oldProp) {\n var fabProplist = ['content', 'cssClass', 'disabled', 'enablePersistence', 'enableRtl', 'iconPosition', 'position', 'target', 'template', 'title', 'visible', 'isPrimary'];\n var fabModel = extend({}, newProp);\n for (var _i = 0, _a = Object.keys(fabModel); _i < _a.length; _i++) {\n var prop = _a[_i];\n if (fabProplist.indexOf(prop) < 0) {\n deleteObject(fabModel, prop);\n }\n }\n this.fab.setProperties(fabModel);\n for (var _b = 0, _c = Object.keys(newProp); _b < _c.length; _b++) {\n var prop = _c[_b];\n switch (prop) {\n case 'cssClass':\n if (!this.popupEle) {\n break;\n }\n if (oldProp.cssClass) {\n removeClass(this.overlayEle ? [this.popupEle, this.overlayEle] : [this.popupEle], oldProp.cssClass.split(/\\s+/).filter(function (c) {\n return c.length > 0;\n }));\n }\n if (newProp.cssClass) {\n addClass(this.overlayEle ? [this.popupEle, this.overlayEle] : [this.popupEle], newProp.cssClass.split(/\\s+/).filter(function (c) {\n return c.length > 0;\n }));\n }\n break;\n case 'visible':\n case 'disabled':\n this.hide();\n break;\n case 'enableRtl':\n if (!this.popupEle) {\n break;\n }\n this.setRTL();\n break;\n case 'openIconCss':\n if (!this.isMenuOpen) {\n this.fab.setProperties({\n iconCss: this.openIconCss\n });\n }\n break;\n case 'closeIconCss':\n if (this.isMenuOpen) {\n this.fab.setProperties({\n iconCss: this.closeIconCss\n });\n }\n break;\n case 'position':\n if (!this.popupEle) {\n break;\n }\n this.updatePositionProperties();\n break;\n case 'direction':\n if (!this.popupEle || this.popupTemplate) {\n break;\n }\n this.updatePositionProperties();\n break;\n case 'popupTemplate':\n this.updatePopupTemplate();\n break;\n case 'target':\n this.hidePopupEle();\n this.checkTarget();\n if (this.overlayEle) {\n this.element.insertAdjacentElement('beforebegin', this.overlayEle);\n }\n if (!this.popupEle) {\n break;\n }\n this.element.insertAdjacentElement('afterend', this.popupEle);\n this.updatePositionProperties();\n break;\n case 'items':\n case 'itemTemplate':\n if (this.popupTemplate) {\n break;\n }\n this.updatePopupItems();\n break;\n case 'modal':\n if (newProp.modal) {\n this.createOverlay();\n } else {\n this.removeOverlayEle();\n }\n break;\n case 'mode':\n if (!this.popupEle || this.popupTemplate) {\n break;\n }\n this.popupEle.classList.remove(RADIALSD, LINEARSD);\n this.popupEle.classList.add(this.mode === 'Radial' ? RADIALSD : LINEARSD);\n this.updatePositionProperties();\n break;\n case 'radialSettings':\n if (this.popupEle && this.mode === 'Radial' && !this.popupTemplate) {\n this.setRadialPosition();\n }\n break;\n case 'opensOnHover':\n if (this.opensOnHover) {\n this.unwireFabClick();\n this.wireFabHover();\n } else {\n this.unwireFabHover();\n this.wireFabClick();\n }\n break;\n }\n }\n };\n __decorate([Complex({}, SpeedDialAnimationSettings)], SpeedDial.prototype, \"animation\", void 0);\n __decorate([Property('')], SpeedDial.prototype, \"content\", void 0);\n __decorate([Property('')], SpeedDial.prototype, \"closeIconCss\", void 0);\n __decorate([Property('')], SpeedDial.prototype, \"cssClass\", void 0);\n __decorate([Property('Auto')], SpeedDial.prototype, \"direction\", void 0);\n __decorate([Property(false)], SpeedDial.prototype, \"disabled\", void 0);\n __decorate([Property('Left')], SpeedDial.prototype, \"iconPosition\", void 0);\n __decorate([Collection([], SpeedDialItem)], SpeedDial.prototype, \"items\", void 0);\n __decorate([Property('')], SpeedDial.prototype, \"itemTemplate\", void 0);\n __decorate([Property('Linear')], SpeedDial.prototype, \"mode\", void 0);\n __decorate([Property('')], SpeedDial.prototype, \"openIconCss\", void 0);\n __decorate([Property(false)], SpeedDial.prototype, \"opensOnHover\", void 0);\n __decorate([Property('BottomRight')], SpeedDial.prototype, \"position\", void 0);\n __decorate([Property(false)], SpeedDial.prototype, \"modal\", void 0);\n __decorate([Property('')], SpeedDial.prototype, \"popupTemplate\", void 0);\n __decorate([Complex({}, RadialSettings)], SpeedDial.prototype, \"radialSettings\", void 0);\n __decorate([Property('')], SpeedDial.prototype, \"target\", void 0);\n __decorate([Property(true)], SpeedDial.prototype, \"visible\", void 0);\n __decorate([Property(true)], SpeedDial.prototype, \"isPrimary\", void 0);\n __decorate([Event()], SpeedDial.prototype, \"beforeClose\", void 0);\n __decorate([Event()], SpeedDial.prototype, \"beforeItemRender\", void 0);\n __decorate([Event()], SpeedDial.prototype, \"beforeOpen\", void 0);\n __decorate([Event()], SpeedDial.prototype, \"created\", void 0);\n __decorate([Event()], SpeedDial.prototype, \"clicked\", void 0);\n __decorate([Event()], SpeedDial.prototype, \"onClose\", void 0);\n __decorate([Event()], SpeedDial.prototype, \"onOpen\", void 0);\n SpeedDial = __decorate([NotifyPropertyChanges], SpeedDial);\n return SpeedDial;\n}(Component);\nexport { SpeedDial };","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};\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : new P(function (resolve) {\n resolve(result.value);\n }).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n///<reference path='../button/button-model.d.ts'/>\nimport { Button } from '../button/button';\nimport { EventHandler, Property } from '@syncfusion/ej2-base';\nvar SmartPasteButton = /** @class */function (_super) {\n __extends(SmartPasteButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {SmartPasteButtonModel} options - Specifies Smart paste button model\n * @param {string | HTMLButtonElement} element - Specifies target element\n */\n function SmartPasteButton(options, element) {\n return _super.call(this, options, element) || this;\n }\n SmartPasteButton.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.smartPasteBtnClickHandler, this);\n };\n SmartPasteButton.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'click', this.smartPasteBtnClickHandler);\n };\n SmartPasteButton.prototype.smartPasteBtnClickHandler = function (args) {\n return __awaiter(this, void 0, void 0, function () {\n var target, formElement, formFields, clipboardContent, fieldsData, systemRole, userRole, settings, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n target = args.target;\n formElement = target.closest('form');\n if (!formElement) {\n return [2 /*return*/];\n }\n formFields = this.getFormFields(formElement);\n if (formFields.length === 0) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, this.getClipboardContent().then(function (text) {\n return text;\n })];\n case 1:\n clipboardContent = _a.sent();\n if (!(clipboardContent !== 'Clipboard API not supported' && clipboardContent !== 'Clipboard access failed')) return [3 /*break*/, 6];\n _a.label = 2;\n case 2:\n _a.trys.push([2,, 5, 6]);\n this.disabled = true;\n fieldsData = formFields.map(function (field) {\n return {\n fieldName: field.fieldName,\n description: field.description,\n allowedValues: field.allowedValues,\n type: field.type\n };\n });\n systemRole = \"\\nCurrent date: \" + new Date().toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n }) + \"\\n\\nEach response line matches the following format:\\nFIELD identifier^^^value\\n\\nGive a response with the following lines only, with values inferred from USER_DATA:\\n\" + this.formatFields(fieldsData) + \"\\nEND_RESPONSE\\n\\nDo not explain how the values were determined.\\nFor fields without any corresponding information in USER_DATA, use value NO_DATA.\";\n userRole = \"\\nUSER_DATA: \" + clipboardContent + \"\\n \";\n settings = {\n messages: [{\n role: 'system',\n content: systemRole\n }, {\n role: 'user',\n content: userRole\n }],\n temperature: 0.0,\n topP: 1.0,\n maxTokens: 2000,\n frequencyPenalty: 0.1,\n presencePenalty: 0.0,\n stop: ['END_RESPONSE']\n };\n if (!(typeof this.aiAssistHandler === 'function')) return [3 /*break*/, 4];\n return [4 /*yield*/, this.aiAssistHandler(settings)];\n case 3:\n response = _a.sent();\n if (typeof response === 'string' && response !== '') {\n this.setFormFields(formElement, formFields, response);\n }\n _a.label = 4;\n case 4:\n return [3 /*break*/, 6];\n case 5:\n this.disabled = false;\n return [7 /*endfinally*/];\n case 6:\n return [2 /*return*/];\n }\n });\n });\n };\n SmartPasteButton.prototype.formatFields = function (fields) {\n var result = [];\n fields.forEach(function (field) {\n var fieldOutput = [];\n fieldOutput.push(\"\\nFIELD \" + field.fieldName + \"^^^\");\n if (field.description) {\n fieldOutput.push(\"The \" + field.description);\n }\n if (field.allowedValues && field.allowedValues.length > 0) {\n fieldOutput.push(' (multiple choice, with allowed values: ');\n fieldOutput.push(field.allowedValues.map(function (val) {\n return \"\" + val;\n }).join(','));\n fieldOutput.push(')');\n } else {\n fieldOutput.push(\" of type \" + field.type);\n }\n result.push(fieldOutput.join(''));\n });\n return result.join('');\n };\n SmartPasteButton.prototype.setFormFields = function (form, formFields, response) {\n var _this = this;\n var responseData = {};\n var fieldPrefix = 'FIELD ';\n var currentField = null;\n response.split('\\n').forEach(function (line) {\n if (line.startsWith(fieldPrefix)) {\n var parts = line.substring(fieldPrefix.length).split('^^^');\n if (parts.length === 2) {\n responseData[\"\" + parts[0]] = parts[1];\n currentField = parts[0];\n }\n } else if (currentField) {\n responseData[\"\" + currentField] += '\\n' + line;\n }\n });\n formFields.forEach(function (field) {\n var value = responseData[field.fieldName];\n if (value !== undefined) {\n value = value.trim();\n if (value === 'NO_DATA') {\n return;\n }\n if (field.element instanceof HTMLInputElement && field.element.type === 'radio') {\n var radioButton = _this.findRadioButton(form, field.element.name, value);\n if (radioButton) {\n _this.updateElementValue(radioButton, 'true');\n }\n } else {\n _this.updateElementValue(field.element, value);\n }\n }\n });\n };\n SmartPasteButton.prototype.findRadioButton = function (form, name, value) {\n var _this = this;\n var radioButtons = Array.from(form.querySelectorAll('input[type=radio]')).filter(function (radio) {\n return radio instanceof HTMLInputElement && radio.name === name;\n }).map(function (radio) {\n return {\n elem: radio,\n text: _this.getElementDescription(form, radio)\n };\n });\n var exactMatch = radioButtons.find(function (radio) {\n return radio.text === value;\n });\n if (exactMatch) {\n return exactMatch.elem;\n }\n var partialMatch = radioButtons.filter(function (radio) {\n return radio.text && radio.text.includes(value);\n });\n if (partialMatch.length === 1) {\n return partialMatch[0].elem;\n }\n return null;\n };\n SmartPasteButton.prototype.triggerBeforeChange = function (element) {\n element.dispatchEvent(new CustomEvent('beforeinput', {\n bubbles: true,\n detail: {\n fromSmartComponents: true\n }\n }));\n };\n SmartPasteButton.prototype.triggerAfterChange = function (element) {\n element.dispatchEvent(new CustomEvent('input', {\n bubbles: true,\n detail: {\n fromSmartComponents: true\n }\n }));\n element.dispatchEvent(new CustomEvent('change', {\n bubbles: true,\n detail: {\n fromSmartComponents: true\n }\n }));\n };\n SmartPasteButton.prototype.updateElementValue = function (element, value) {\n var isEjsControl = element.classList.contains('e-control');\n if (element instanceof HTMLInputElement && (element.type === 'radio' || element.type === 'checkbox')) {\n var responseValue = value == null ? undefined : value.toString().toLowerCase();\n var isResponseValue = responseValue === 'true' || responseValue === 'yes' || responseValue === 'on';\n if (element.checked !== isResponseValue) {\n this.triggerBeforeChange(element);\n if (isEjsControl) {\n element['ej2_instances'][0].checked = isResponseValue;\n } else {\n element.checked = isResponseValue;\n }\n this.triggerAfterChange(element);\n }\n } else if (element instanceof HTMLSelectElement) {\n var optionText_1 = value.toString();\n var index = null;\n var options = Array.from(element.querySelectorAll('option'));\n var exactMatch = options.filter(function (option) {\n return option.textContent === optionText_1;\n });\n if (exactMatch.length > 0) {\n index = options.indexOf(exactMatch[0]);\n } else {\n var partialMatch = options.filter(function (option) {\n return option.textContent && option.textContent.indexOf(optionText_1) >= 0;\n });\n if (partialMatch.length === 1) {\n index = options.indexOf(partialMatch[0]);\n }\n }\n if (index !== null && element.selectedIndex !== index) {\n this.triggerBeforeChange(element);\n if (isEjsControl) {\n element['ej2_instances'][0].index = index;\n } else {\n element.selectedIndex = index;\n }\n this.triggerAfterChange(element);\n }\n } else {\n this.triggerBeforeChange(element);\n if (element.classList.contains('e-rating') || element.classList.contains('e-colorpicker')) {\n element['ej2_instances'][0].value = value;\n } else {\n element.value = value;\n }\n this.triggerAfterChange(element);\n }\n element.focus();\n };\n SmartPasteButton.prototype.getFormFields = function (form) {\n var _this = this;\n var fields = [];\n var uniqueCount = 0;\n form.querySelectorAll('input, select, textarea').forEach(function (element) {\n if (!(element instanceof HTMLInputElement || element instanceof HTMLSelectElement || element instanceof HTMLTextAreaElement)) {\n return;\n }\n if (element.type === 'hidden' || _this.isFieldIgnore(element)) {\n return;\n }\n var isRadioButton = element.type === 'radio';\n var identifier = isRadioButton ? element.name : element.id || element.name || \"unidentified_\" + ++uniqueCount;\n if (isRadioButton && fields.find(function (field) {\n return field.fieldName === identifier;\n })) {\n return;\n }\n var FieldDescription = null;\n if (!isRadioButton) {\n FieldDescription = _this.getElementDescription(form, element);\n if (!FieldDescription) {\n return;\n }\n }\n var fieldInfo = {\n fieldName: element.name,\n description: FieldDescription,\n element: element,\n type: element.type === 'checkbox' ? 'boolean' : element.type === 'number' ? 'number' : 'string'\n };\n if (element instanceof HTMLSelectElement) {\n var options = Array.from(element.querySelectorAll('option')).filter(function (option) {\n return option.value;\n });\n fieldInfo.allowedValues = options.map(function (option) {\n return option.textContent;\n });\n fieldInfo.type = 'fixed-choices';\n } else if (isRadioButton) {\n fieldInfo.allowedValues = [];\n fieldInfo.type = 'fixed-choices';\n Array.from(form.querySelectorAll('input[type=radio]')).forEach(function (radio) {\n if (radio.name === identifier) {\n var radioDescription = _this.getElementDescription(form, radio);\n if (radioDescription) {\n fieldInfo.allowedValues.push(radioDescription);\n }\n }\n });\n }\n fields.push(fieldInfo);\n });\n return fields;\n };\n SmartPasteButton.prototype.isFieldIgnore = function (element) {\n return element.hasAttribute('data-smartpaste-ignore') || element.hasAttribute('aria-disabled') && element.getAttribute('aria-disabled') === 'true' || element.hasAttribute('disabled') || element.hasAttribute('readonly') || element.hasAttribute('aria-readonly') && element.getAttribute('aria-readonly') === 'true' || element.hasAttribute('aria-hidden') && element.getAttribute('aria-hidden') === 'true';\n };\n SmartPasteButton.prototype.getElementDescription = function (form, element) {\n if (element.hasAttribute('data-smartpaste-description')) {\n return element.getAttribute('data-smartpaste-description');\n }\n if ((element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement) && element.placeholder) {\n return element.placeholder;\n }\n var label = form.querySelector(\"label[for=\\\"\" + element.id + \"\\\"]\");\n if (label) {\n return label.textContent.trim();\n }\n return element.name || element.id;\n };\n SmartPasteButton.prototype.getClipboardContent = function () {\n return __awaiter(this, void 0, void 0, function () {\n var navigatorObj, customClipboard, error_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n navigatorObj = navigator;\n customClipboard = document.getElementById('custom-clipboard');\n if (!(customClipboard && customClipboard.value)) return [3 /*break*/, 1];\n return [2 /*return*/, customClipboard.value];\n case 1:\n if (!(typeof window !== 'undefined' && navigatorObj.clipboard && navigatorObj.clipboard.readText)) return [3 /*break*/, 6];\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4,, 5]);\n return [4 /*yield*/, navigatorObj.clipboard.readText()];\n case 3:\n return [2 /*return*/, _a.sent()];\n case 4:\n error_1 = _a.sent();\n return [2 /*return*/, 'Clipboard access failed'];\n case 5:\n return [3 /*break*/, 7];\n case 6:\n return [2 /*return*/, 'Clipboard API not supported'];\n case 7:\n return [2 /*return*/];\n }\n });\n });\n };\n __decorate([Property()], SmartPasteButton.prototype, \"aiAssistHandler\", void 0);\n return SmartPasteButton;\n}(Button);\nexport { SmartPasteButton };","(function (factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module['exports'] = factory() : typeof define === 'function' && define['amd'] ? define(factory()) : window['stylisRuleSheet'] = factory();\n})(function () {\n 'use strict';\n\n return function (insertRule) {\n var delimiter = '/*|*/';\n var needle = delimiter + '}';\n function toSheet(block) {\n if (block) try {\n insertRule(block + '}');\n } catch (e) {}\n }\n return function ruleSheet(context, content, selectors, parents, line, column, length, ns, depth, at) {\n switch (context) {\n // property\n case 1:\n // @import\n if (depth === 0 && content.charCodeAt(0) === 64) return insertRule(content + ';'), '';\n break;\n // selector\n case 2:\n if (ns === 0) return content + delimiter;\n break;\n // at-rule\n case 3:\n switch (ns) {\n // @font-face, @page\n case 102:\n case 112:\n return insertRule(selectors[0] + content), '';\n default:\n return content + (at === 0 ? delimiter : '');\n }\n case -2:\n content.split(needle).forEach(toSheet);\n }\n };\n };\n});","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};\nimport { Component, Property, ChildProperty, NotifyPropertyChanges, Animation, createElement, animationMode, initializeCSPTemplate } from '@syncfusion/ej2-base';\nimport { Browser, isNullOrUndefined as isNOU, getUniqueID, formatUnit, EventHandler } from '@syncfusion/ej2-base';\nimport { Collection, Complex, setStyleAttribute, Event, detach, L10n } from '@syncfusion/ej2-base';\nimport { attributes, extend, closest, compile as templateCompiler, classList, isUndefined } from '@syncfusion/ej2-base';\nimport { Touch, isBlazor, SanitizeHtmlHelper, removeClass } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { getZindexPartial } from '@syncfusion/ej2-popups';\nvar ROOT = 'e-toast';\nvar CONTAINER = 'e-toast-container';\nvar TITLE = 'e-toast-title';\nvar WIDTHFULL = 'e-toast-full-width';\nvar CONTENT = 'e-toast-content';\nvar MESSAGE = 'e-toast-message';\nvar ICON = 'e-toast-icon';\nvar PROGRESS = 'e-toast-progress';\nvar ACTIOBUTTONS = 'e-toast-actions';\nvar CLOSEBTN = 'e-toast-close-icon';\nvar RTL = 'e-rtl';\nvar TOAST_BLAZOR_HIDDEN = 'e-blazor-toast-hidden';\n/**\n * An object that is used to configure the Toast X Y positions.\n */\nvar ToastPosition = /** @class */function (_super) {\n __extends(ToastPosition, _super);\n function ToastPosition() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('Left')], ToastPosition.prototype, \"X\", void 0);\n __decorate([Property('Top')], ToastPosition.prototype, \"Y\", void 0);\n return ToastPosition;\n}(ChildProperty);\nexport { ToastPosition };\n/**\n * An object that is used to configure the action button model properties and event.\n */\nvar ButtonModelProps = /** @class */function (_super) {\n __extends(ButtonModelProps, _super);\n function ButtonModelProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property(null)], ButtonModelProps.prototype, \"model\", void 0);\n __decorate([Property(null)], ButtonModelProps.prototype, \"click\", void 0);\n return ButtonModelProps;\n}(ChildProperty);\nexport { ButtonModelProps };\n/**\n * An object that is used to configure the animation object of Toast.\n */\nvar ToastAnimations = /** @class */function (_super) {\n __extends(ToastAnimations, _super);\n function ToastAnimations() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('FadeIn')], ToastAnimations.prototype, \"effect\", void 0);\n __decorate([Property(600)], ToastAnimations.prototype, \"duration\", void 0);\n __decorate([Property('ease')], ToastAnimations.prototype, \"easing\", void 0);\n return ToastAnimations;\n}(ChildProperty);\nexport { ToastAnimations };\n/**\n * An object that is used to configure the show/hide animation settings of Toast.\n */\nvar ToastAnimationSettings = /** @class */function (_super) {\n __extends(ToastAnimationSettings, _super);\n function ToastAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Complex({\n effect: 'FadeIn',\n duration: 600,\n easing: 'ease'\n }, ToastAnimations)], ToastAnimationSettings.prototype, \"show\", void 0);\n __decorate([Complex({\n effect: 'FadeOut',\n duration: 600,\n easing: 'ease'\n }, ToastAnimations)], ToastAnimationSettings.prototype, \"hide\", void 0);\n return ToastAnimationSettings;\n}(ChildProperty);\nexport { ToastAnimationSettings };\n/**\n * The Toast is a notification pop-up that showing on desired position which can provide an information to the user.\n * ```html\n * <div id=\"toast\"/>\n * <script>\n * var toastObj = new Toast();\n * toastObj.appendTo(\"#toast\");\n * </script>\n * ```\n */\nvar Toast = /** @class */function (_super) {\n __extends(Toast, _super);\n /**\n * Initializes a new instance of the Toast class.\n *\n * @param {ToastModel} options - Specifies Toast model properties as options.\n * @param {HTMLElement} element - Specifies the element that is rendered as a Toast.\n */\n function Toast(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.toastCollection = [];\n _this.needsID = true;\n return _this;\n }\n /**\n * Gets the Component module name.\n *\n * @returns {string} - returns the string\n * @private\n */\n Toast.prototype.getModuleName = function () {\n return 'toast';\n };\n /**\n * Gets the persisted state properties of the Component.\n *\n * @returns {string} - returns the string\n */\n Toast.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers, attributes and classes.\n *\n * @returns {void}\n */\n Toast.prototype.destroy = function () {\n this.hide('All');\n this.element.classList.remove(CONTAINER);\n setStyleAttribute(this.element, {\n 'position': '',\n 'z-index': ''\n });\n if (!isNOU(this.refElement) && !isNOU(this.refElement.parentElement)) {\n this.refElement.parentElement.insertBefore(this.element, this.refElement);\n detach(this.refElement);\n this.refElement = undefined;\n }\n if (!this.isBlazorServer()) {\n _super.prototype.destroy.call(this);\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Toast.prototype.preRender = function () {\n //There is no event handler\n this.isDevice = Browser.isDevice;\n if (this.width === '300px') {\n this.width = this.isDevice && screen.width < 768 ? '100%' : '300px';\n }\n if (isNOU(this.target)) {\n this.target = document.body;\n }\n if (this.enableRtl && !this.isBlazorServer()) {\n this.element.classList.add(RTL);\n }\n };\n /**\n * Initialize the component rendering\n *\n * @returns {void}\n * @private\n */\n Toast.prototype.render = function () {\n this.progressObj = [];\n this.intervalId = [];\n this.contentTemplate = null;\n this.toastTemplate = null;\n this.renderComplete();\n this.initRenderClass = this.element.className;\n };\n /**\n * To show Toast element on a document with the relative position.\n *\n * @param {ToastModel} toastObj - To show Toast element on screen.\n * @returns {void}\n * @deprecated\n */\n Toast.prototype.show = function (toastObj) {\n var collectionObj;\n if (!isNOU(toastObj)) {\n this.templateChanges(toastObj);\n collectionObj = JSON.parse(JSON.stringify(toastObj));\n extend(this, this, toastObj);\n }\n if (isNOU(this.toastContainer)) {\n this.toastContainer = this.getContainer();\n var target = typeof this.target === 'string' ? document.querySelector(this.target) : typeof this.target === 'object' ? this.target : document.body;\n if (isNOU(target)) {\n return;\n }\n if (target.tagName === 'BODY') {\n this.toastContainer.style.position = 'fixed';\n } else {\n this.toastContainer.style.position = 'absolute';\n target.style.position = 'relative';\n }\n this.setPositioning(this.position);\n target.appendChild(this.toastContainer);\n }\n if (this.isBlazorServer() && this.element.classList.contains('e-control')) {\n this.isToastModel(toastObj);\n return;\n }\n this.toastEle = this.createElement('div', {\n className: ROOT,\n id: getUniqueID('toast')\n });\n this.setWidthHeight();\n this.setCSSClass(this.cssClass);\n if (isNOU(this.template) || this.template === '') {\n this.personalizeToast();\n } else {\n this.templateRendering();\n }\n this.setProgress();\n this.setCloseButton();\n this.setAria();\n this.appendToTarget(toastObj);\n if (this.isDevice && screen.width < 768) {\n new Touch(this.toastEle, {\n swipe: this.swipeHandler.bind(this)\n });\n }\n if (!isNOU(collectionObj)) {\n extend(collectionObj, {\n element: [this.toastEle]\n }, true);\n this.toastCollection.push(collectionObj);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * @param {string} id - specifies the id\n * @param {ToastModel} toastObj - specifies the model\n * @returns {void}\n * @hidden\n * @deprecated\n * This method applicable for blazor alone.\n */\n Toast.prototype.showToast = function (id, toastObj) {\n this.toastEle = this.element.querySelector('#' + id);\n this.show(toastObj);\n };\n Toast.prototype.isToastModel = function (toastObj) {\n this.toastContainer = this.element;\n this.setPositioning(this.position);\n var proxy = null || this;\n if (!isNOU(proxy.element.lastElementChild)) {\n this.setProgress();\n }\n this.setAria();\n this.appendToTarget(toastObj);\n };\n Toast.prototype.swipeHandler = function (e) {\n var toastEle = closest(e.originalEvent.target, '.' + ROOT + ':not(.' + CONTAINER + ')');\n var hideAnimation = this.animation.hide.effect;\n if (!isNOU(toastEle)) {\n if (e.swipeDirection === 'Right') {\n this.animation.hide.effect = 'SlideRightOut';\n this.hideToast('swipe', toastEle);\n } else if (e.swipeDirection === 'Left') {\n this.animation.hide.effect = 'SlideLeftOut';\n this.hideToast('swipe', toastEle);\n }\n this.animation.hide.effect = hideAnimation;\n }\n };\n Toast.prototype.templateChanges = function (toastObj) {\n if (!isUndefined(toastObj.content) && !isNOU(this.contentTemplate) && this.content !== toastObj.content) {\n this.clearContentTemplate();\n }\n if (!isUndefined(toastObj.template) && !isNOU(this.toastTemplate) && this.template !== toastObj.template) {\n this.clearToastTemplate();\n }\n };\n Toast.prototype.setCSSClass = function (cssClass) {\n if (cssClass) {\n var split = cssClass.indexOf(',') !== -1 ? ',' : ' ';\n classList(this.toastEle, cssClass.split(split), []);\n if (this.toastContainer) {\n classList(this.toastContainer, cssClass.split(split), []);\n }\n }\n };\n Toast.prototype.setWidthHeight = function () {\n if (this.width === '300px') {\n this.toastEle.style.width = formatUnit(this.width);\n } else if (this.width === '100%') {\n this.toastContainer.classList.add(WIDTHFULL);\n } else {\n this.toastEle.style.width = formatUnit(this.width);\n this.toastContainer.classList.remove(WIDTHFULL);\n }\n this.toastEle.style.height = formatUnit(this.height);\n };\n Toast.prototype.templateRendering = function () {\n this.fetchEle(this.toastEle, this.template, 'template');\n };\n /**\n * @param {string} value - specifies the string value.\n * @returns {string} - returns the string\n * @hidden\n */\n Toast.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var item = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item, item, beforeEvent);\n this.trigger('beforeSanitizeHtml', item);\n if (item.cancel && !isNOU(item.helper)) {\n value = item.helper(value);\n } else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n };\n /**\n * To Hide Toast element on a document.\n * To Hide all toast element when passing 'All'.\n *\n * @param {HTMLElement} element - To Hide Toast element on screen.\n * @returns {void}\n */\n Toast.prototype.hide = function (element) {\n this.hideToast('', element);\n };\n Toast.prototype.hideToast = function (interactionType, element) {\n if (isNOU(this.toastContainer) || this.toastContainer.childElementCount === 0) {\n return;\n }\n if (typeof element === 'string' && element === 'All') {\n for (var i = 0; i < this.toastContainer.childElementCount; i++) {\n this.destroyToast(this.toastContainer.children[i], interactionType);\n }\n return;\n }\n if (isNOU(element)) {\n element = this.newestOnTop ? this.toastContainer.lastElementChild : this.toastContainer.firstElementChild;\n }\n this.destroyToast(element, interactionType);\n };\n Toast.prototype.fetchEle = function (ele, value, prob) {\n value = typeof value === 'string' ? this.sanitizeHelper(value) : value;\n var templateFn;\n var tempVar;\n var tmpArray;\n var templateProps;\n if (ele.classList.contains(TITLE)) {\n templateProps = this.element.id + 'title';\n } else if (ele.classList.contains(CONTENT)) {\n templateProps = this.element.id + 'content';\n } else {\n templateProps = this.element.id + 'template';\n }\n if (prob === 'content') {\n tempVar = this.contentTemplate;\n } else {\n tempVar = this.toastTemplate;\n }\n if (!isNOU(tempVar)) {\n ele.appendChild(tempVar.cloneNode(true));\n return ele;\n }\n try {\n if (typeof value !== 'function' && document.querySelectorAll(value).length > 0) {\n var elem = null;\n if (prob !== 'title') {\n elem = document.querySelector(value);\n ele.appendChild(elem);\n elem.style.display = '';\n }\n var clo = isNOU(elem) ? tempVar : elem.cloneNode(true);\n if (prob === 'content') {\n this.contentTemplate = clo;\n } else {\n this.toastTemplate = clo;\n }\n } else {\n templateFn = templateCompiler(value);\n }\n } catch (e) {\n templateFn = typeof value == 'object' ? templateCompiler(value) : templateCompiler(initializeCSPTemplate(function () {\n return value;\n }));\n }\n if (!isNOU(templateFn)) {\n if (!this.isBlazorServer()) {\n tmpArray = templateFn({}, this, prob, null, true);\n } else {\n var isString = true;\n tmpArray = templateFn({}, this, prob, templateProps, isString);\n }\n }\n if (!isNOU(tmpArray) && tmpArray.length > 0 && !(isNOU(tmpArray[0].tagName) && tmpArray.length === 1)) {\n [].slice.call(tmpArray).forEach(function (el) {\n if (!isNOU(el.tagName)) {\n el.style.display = '';\n }\n ele.appendChild(el);\n });\n } else if (typeof value !== 'function' && ele.childElementCount === 0) {\n ele.innerHTML = value;\n }\n return ele;\n };\n Toast.prototype.clearProgress = function (intervalId) {\n if (!isNOU(this.intervalId[intervalId])) {\n clearInterval(this.intervalId[intervalId]);\n delete this.intervalId[intervalId];\n }\n if (!isNOU(this.progressObj[intervalId])) {\n clearInterval(this.progressObj[intervalId].intervalId);\n delete this.progressObj[intervalId];\n }\n };\n Toast.prototype.removeToastContainer = function (isClosed) {\n if (isClosed && this.toastContainer.classList.contains('e-toast-util')) {\n detach(this.toastContainer);\n }\n };\n Toast.prototype.clearContainerPos = function (isClosed) {\n var _this = this;\n if (this.isBlazorServer()) {\n this.toastContainer = null;\n return;\n }\n if (this.customPosition) {\n setStyleAttribute(this.toastContainer, {\n 'left': '',\n 'top': ''\n });\n this.removeToastContainer(isClosed);\n this.toastContainer = null;\n this.customPosition = false;\n } else {\n [ROOT + '-top-left', ROOT + '-top-right', ROOT + '-bottom-left', ROOT + '-bottom-right', ROOT + '-bottom-center', ROOT + '-top-center', ROOT + '-full-width'].forEach(function (pos) {\n if (!isNOU(_this.toastContainer) && _this.toastContainer.classList.contains(pos)) {\n _this.toastContainer.classList.remove(pos);\n }\n });\n this.removeToastContainer(isClosed);\n this.toastContainer = null;\n }\n if (!isNOU(this.contentTemplate)) {\n this.clearContentTemplate();\n }\n if (!isNOU(this.toastTemplate)) {\n this.clearToastTemplate();\n }\n };\n Toast.prototype.clearContentTemplate = function () {\n this.contentTemplate.style.display = 'none';\n document.body.appendChild(this.contentTemplate);\n this.contentTemplate = null;\n };\n Toast.prototype.clearToastTemplate = function () {\n this.toastTemplate.style.display = 'none';\n document.body.appendChild(this.toastTemplate);\n this.toastTemplate = null;\n };\n Toast.prototype.isBlazorServer = function () {\n return isBlazor() && this.isServerRendered;\n };\n Toast.prototype.destroyToast = function (toastEle, interactionType) {\n var _this = this;\n var toastObj;\n for (var i = 0; i < this.toastCollection.length; i++) {\n if (this.toastCollection[i].element[0] === toastEle) {\n toastObj = this.toastCollection[i];\n this.toastCollection.splice(i, 1);\n }\n }\n var toastBeforeClose = {\n options: this,\n cancel: false,\n type: interactionType,\n element: toastEle,\n toastContainer: this.toastContainer\n };\n var hideAnimate = this.animation.hide;\n var animate = {\n duration: hideAnimate.duration,\n name: hideAnimate.effect === 'None' && animationMode === 'Enable' ? 'FadeOut' : hideAnimate.effect,\n timingFunction: hideAnimate.easing\n };\n var intervalId = parseInt(toastEle.id.split('toast_')[1], 10);\n var toastClose = this.isBlazorServer() ? {\n options: toastObj,\n toastContainer: this.toastContainer\n } : {\n options: toastObj,\n toastContainer: this.toastContainer,\n toastObj: this\n };\n this.trigger('beforeClose', toastBeforeClose, function (toastBeforeCloseArgs) {\n if (!toastBeforeCloseArgs.cancel) {\n if (!isNOU(_this.progressObj[intervalId]) && !isNOU(toastEle.querySelector('.' + PROGRESS))) {\n _this.progressObj[intervalId].progressEle.style.width = '0%';\n }\n animate.end = function () {\n _this.clearProgress(intervalId);\n if (!_this.isBlazorServer() || isNOU(toastObj)) {\n detach(toastEle);\n }\n _this.trigger('close', toastClose);\n if (_this.toastContainer.childElementCount === 0) {\n _this.clearContainerPos(true);\n }\n hideAnimate = null;\n animate = null;\n };\n new Animation(animate).animate(toastEle);\n }\n });\n };\n Toast.prototype.personalizeToast = function () {\n this.setIcon();\n this.setTitle();\n this.setContent();\n this.actionButtons();\n };\n Toast.prototype.setAria = function () {\n attributes(this.toastEle, {\n 'role': 'alert'\n });\n };\n Toast.prototype.setPositioning = function (pos) {\n if (this.isBlazorServer()) {\n return;\n }\n if (!isNaN(parseFloat(pos.X)) || !isNaN(parseFloat(pos.Y))) {\n this.customPosition = true;\n setStyleAttribute(this.toastContainer, {\n 'left': formatUnit(pos.X),\n 'top': formatUnit(pos.Y)\n });\n } else {\n this.toastContainer.classList.add(ROOT + '-' + pos.Y.toString().toLowerCase() + '-' + pos.X.toString().toLowerCase());\n }\n };\n Toast.prototype.setCloseButton = function () {\n if (!this.showCloseButton) {\n return;\n }\n var localeText = {\n close: 'Close'\n };\n this.l10n = new L10n('toast', localeText, this.locale);\n this.l10n.setLocale(this.locale);\n var closeIconTitle = this.l10n.getConstant('close');\n var closeBtn = this.createElement('div', {\n className: CLOSEBTN + ' e-icons ',\n attrs: {\n tabindex: '0',\n 'aria-label': closeIconTitle,\n 'role': 'button'\n }\n });\n this.toastEle.classList.add('e-toast-header-close-icon');\n this.toastEle.appendChild(closeBtn);\n };\n Toast.prototype.setProgress = function () {\n if (this.timeOut > 0) {\n var id = parseInt(this.toastEle.id.split('toast_')[1], 10);\n this.intervalId[id] = window.setTimeout(this.destroyToast.bind(this, this.toastEle), this.timeOut);\n this.progressObj[id] = {\n hideEta: null,\n intervalId: null,\n maxHideTime: null,\n element: null,\n timeOutId: null,\n progressEle: null\n };\n this.progressObj[id].maxHideTime = parseFloat(this.timeOut + '');\n this.progressObj[id].hideEta = new Date().getTime() + this.progressObj[id].maxHideTime;\n this.progressObj[id].element = this.toastEle;\n if (this.extendedTimeout > 0) {\n EventHandler.add(this.toastEle, 'mouseover', this.toastHoverAction.bind(this, id));\n EventHandler.add(this.toastEle, 'mouseleave', this.delayedToastProgress.bind(this, id));\n this.progressObj[id].timeOutId = this.intervalId[id];\n }\n if (this.showProgressBar) {\n this.progressBarEle = this.createElement('div', {\n className: PROGRESS\n });\n this.toastEle.insertBefore(this.progressBarEle, this.toastEle.children[0]);\n this.progressObj[id].intervalId = setInterval(this.updateProgressBar.bind(this, this.progressObj[id]), 10);\n this.progressObj[id].progressEle = this.progressBarEle;\n }\n }\n };\n Toast.prototype.toastHoverAction = function (id) {\n clearTimeout(this.progressObj[id].timeOutId);\n clearInterval(this.progressObj[id].intervalId);\n this.progressObj[id].hideEta = 0;\n var toastEle = this.progressObj[id].element;\n if (!isNOU(toastEle.querySelector('.' + PROGRESS))) {\n this.progressObj[id].progressEle.style.width = '0%';\n }\n };\n Toast.prototype.delayedToastProgress = function (id) {\n var progress = this.progressObj[id];\n if (!isNOU(progress)) {\n var toastEle = progress.element;\n progress.timeOutId = window.setTimeout(this.destroyToast.bind(this, toastEle), this.extendedTimeout);\n progress.maxHideTime = parseFloat(this.extendedTimeout + '');\n progress.hideEta = new Date().getTime() + progress.maxHideTime;\n if (!isNOU(toastEle.querySelector('.' + PROGRESS))) {\n progress.intervalId = setInterval(this.updateProgressBar.bind(this, progress), 10);\n }\n }\n };\n Toast.prototype.updateProgressBar = function (progressObj) {\n var percentage = (progressObj.hideEta - new Date().getTime()) / progressObj.maxHideTime * 100;\n percentage = this.progressDirection === 'Ltr' ? 100 - percentage : percentage;\n progressObj.progressEle.style.width = percentage + '%';\n };\n Toast.prototype.setIcon = function () {\n if (isNOU(this.icon) || this.icon.length === 0) {\n return;\n }\n var iconEle = this.createElement('div', {\n className: ICON + ' e-icons ' + this.icon\n });\n this.toastEle.classList.add('e-toast-header-icon');\n this.toastEle.appendChild(iconEle);\n };\n Toast.prototype.setTitle = function () {\n if (isNOU(this.title)) {\n return;\n }\n var titleEle = this.createElement('div', {\n className: TITLE\n });\n titleEle = this.fetchEle(titleEle, this.title, 'title');\n var msgContainer = this.createElement('div', {\n className: MESSAGE\n });\n msgContainer.appendChild(titleEle);\n this.toastEle.appendChild(msgContainer);\n };\n Toast.prototype.setContent = function () {\n var contentEle = this.createElement('div', {\n className: CONTENT\n });\n var ele = this.element;\n if (isNOU(this.content) || this.content === '') {\n var isContent = this.element.innerHTML.replace(/\\s/g, '') !== '';\n if ((ele.children.length > 0 || isContent) && !(ele.firstElementChild && ele.firstElementChild.classList.contains(ROOT))) {\n this.innerEle = document.createDocumentFragment();\n var tempEle_1 = this.createElement('div');\n while (ele.childNodes.length !== 0) {\n this.innerEle.appendChild(this.element.childNodes[0]);\n }\n contentEle.appendChild(this.innerEle);\n [].slice.call(contentEle.children).forEach(function (ele) {\n tempEle_1.appendChild(ele.cloneNode(true));\n });\n this.content = tempEle_1;\n this.appendMessageContainer(contentEle);\n }\n } else {\n if (typeof this.content === 'object' && !isNOU(this.content.tagName)) {\n contentEle.appendChild(this.content);\n this.content = this.content.cloneNode(true);\n this.appendMessageContainer(contentEle);\n } else {\n contentEle = this.fetchEle(contentEle, this.content, 'content');\n this.appendMessageContainer(contentEle);\n }\n }\n };\n Toast.prototype.appendMessageContainer = function (element) {\n if (this.toastEle.querySelectorAll('.' + MESSAGE).length > 0) {\n this.toastEle.querySelector('.' + MESSAGE).appendChild(element);\n } else {\n var msgContainer = this.createElement('div', {\n className: MESSAGE\n });\n msgContainer.appendChild(element);\n this.toastEle.appendChild(msgContainer);\n }\n };\n Toast.prototype.actionButtons = function () {\n var _this = this;\n var actionBtnContainer = this.createElement('div', {\n className: ACTIOBUTTONS\n });\n [].slice.call(this.buttons).forEach(function (actionBtn) {\n if (isNOU(actionBtn.model)) {\n return;\n }\n var btnDom = _this.createElement('button');\n btnDom.setAttribute('type', 'button');\n if (isNOU(actionBtn.model.cssClass) || actionBtn.model.cssClass.length === 0) {\n actionBtn.model.cssClass = 'e-primary' + ' ' + _this.cssClass;\n }\n btnDom.classList.add('e-small');\n new Button(actionBtn.model, btnDom);\n if (!isNOU(actionBtn.click) && typeof actionBtn.click === 'function') {\n EventHandler.add(btnDom, 'click', actionBtn.click);\n }\n actionBtnContainer.appendChild(btnDom);\n });\n if (actionBtnContainer.childElementCount > 0) {\n this.appendMessageContainer(actionBtnContainer);\n }\n };\n Toast.prototype.appendToTarget = function (toastObj) {\n var _this = this;\n var toastBeforeOpen = this.isBlazorServer() ? {\n options: toastObj,\n element: this.toastEle,\n cancel: false\n } : {\n options: toastObj,\n toastObj: this,\n element: this.toastEle,\n cancel: false\n };\n this.trigger('beforeOpen', toastBeforeOpen, function (toastBeforeOpenArgs) {\n if (!toastBeforeOpenArgs.cancel) {\n if (!_this.isBlazorServer()) {\n _this.toastEle.style.display = 'none';\n }\n if (_this.newestOnTop && _this.toastContainer.childElementCount !== 0) {\n _this.toastContainer.insertBefore(_this.toastEle, _this.toastContainer.children[0]);\n } else if (!_this.isBlazorServer()) {\n _this.toastContainer.appendChild(_this.toastEle);\n }\n removeClass([_this.toastEle], TOAST_BLAZOR_HIDDEN);\n EventHandler.add(_this.toastEle, 'click', _this.clickHandler, _this);\n EventHandler.add(_this.toastEle, 'keydown', _this.keyDownHandler, _this);\n _this.toastContainer.style.zIndex = getZindexPartial(_this.toastContainer) + '';\n _this.displayToast(_this.toastEle, toastObj);\n } else if (_this.isBlazorServer()) {\n var intervalId = parseInt(_this.toastEle.id.split('toast_')[1], 10);\n _this.clearProgress(intervalId);\n detach(_this.toastEle);\n if (_this.toastContainer.childElementCount === 0) {\n _this.clearContainerPos();\n }\n }\n });\n };\n Toast.prototype.clickHandler = function (e) {\n var _this = this;\n if (!this.isBlazorServer()) {\n e.stopPropagation();\n }\n var target = e.target;\n var toastEle = closest(target, '.' + ROOT);\n var clickArgs = this.isBlazorServer() ? {\n element: toastEle,\n cancel: false,\n clickToClose: false,\n originalEvent: e\n } : {\n element: toastEle,\n cancel: false,\n clickToClose: false,\n originalEvent: e,\n toastObj: this\n };\n var isCloseIcon = target.classList.contains(CLOSEBTN);\n this.trigger('click', clickArgs, function (toastClickArgs) {\n if (isCloseIcon && !toastClickArgs.cancel || toastClickArgs.clickToClose) {\n _this.destroyToast(toastEle, 'click');\n }\n });\n };\n Toast.prototype.keyDownHandler = function (e) {\n if (e.target.classList.contains(CLOSEBTN) && (e.keyCode === 13 || e.keyCode === 32)) {\n var target = e.target;\n var toastEle = closest(target, '.' + ROOT);\n this.destroyToast(toastEle, 'key');\n }\n };\n Toast.prototype.displayToast = function (toastEle, toastObj) {\n var _this = this;\n var showAnimate = this.animation.show;\n var animate = {\n duration: showAnimate.duration,\n name: showAnimate.effect === 'None' && animationMode === 'Enable' ? 'FadeIn' : showAnimate.effect,\n timingFunction: showAnimate.easing\n };\n var toastOpen = this.isBlazorServer() ? {\n options: toastObj,\n element: this.toastEle\n } : {\n options: toastObj,\n toastObj: this,\n element: this.toastEle\n };\n animate.begin = function () {\n toastEle.style.display = '';\n };\n animate.end = function () {\n _this.trigger('open', toastOpen);\n };\n new Animation(animate).animate(toastEle);\n };\n Toast.prototype.getContainer = function () {\n this.element.classList.add(CONTAINER);\n return this.element;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ToastModel} newProp - specifies the new property\n * @param {ToastModel} oldProp - specifies the old property\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line\n Toast.prototype.onPropertyChanged = function (newProp, oldProp) {\n var container = this.element;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n if (newProp.enableRtl) {\n container.classList.add(RTL);\n } else {\n container.classList.remove(RTL);\n }\n break;\n }\n }\n };\n __decorate([Property('300px')], Toast.prototype, \"width\", void 0);\n __decorate([Property('auto')], Toast.prototype, \"height\", void 0);\n __decorate([Property(null)], Toast.prototype, \"title\", void 0);\n __decorate([Property(null)], Toast.prototype, \"content\", void 0);\n __decorate([Property(true)], Toast.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([Property(null)], Toast.prototype, \"icon\", void 0);\n __decorate([Property(null)], Toast.prototype, \"cssClass\", void 0);\n __decorate([Property(null)], Toast.prototype, \"template\", void 0);\n __decorate([Property(true)], Toast.prototype, \"newestOnTop\", void 0);\n __decorate([Property(false)], Toast.prototype, \"showCloseButton\", void 0);\n __decorate([Property(false)], Toast.prototype, \"showProgressBar\", void 0);\n __decorate([Property(5000)], Toast.prototype, \"timeOut\", void 0);\n __decorate([Property('Rtl')], Toast.prototype, \"progressDirection\", void 0);\n __decorate([Property(1000)], Toast.prototype, \"extendedTimeout\", void 0);\n __decorate([Complex({}, ToastAnimationSettings)], Toast.prototype, \"animation\", void 0);\n __decorate([Complex({}, ToastPosition)], Toast.prototype, \"position\", void 0);\n __decorate([Collection([{}], ButtonModelProps)], Toast.prototype, \"buttons\", void 0);\n __decorate([Property(null)], Toast.prototype, \"target\", void 0);\n __decorate([Event()], Toast.prototype, \"created\", void 0);\n __decorate([Event()], Toast.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([Event()], Toast.prototype, \"destroyed\", void 0);\n __decorate([Event()], Toast.prototype, \"open\", void 0);\n __decorate([Event()], Toast.prototype, \"beforeOpen\", void 0);\n __decorate([Event()], Toast.prototype, \"beforeClose\", void 0);\n __decorate([Event()], Toast.prototype, \"close\", void 0);\n __decorate([Event()], Toast.prototype, \"click\", void 0);\n Toast = __decorate([NotifyPropertyChanges], Toast);\n return Toast;\n}(Component);\nexport { Toast };\n/**\n * Base for creating Toast through utility method.\n */\n// eslint-disable-next-line\nexport var ToastUtility;\n(function (ToastUtility) {\n /**\n * To display a simple toast using the 'ToastUtility' with 'ToastModal' or\n * as string with toast content, type, timeOut.\n * ```\n * Eg : ToastUtility.show('Toast Content Message', 'Information', 7000);\n *\n * ```\n */\n /* istanbul ignore next */\n /**\n *\n * @param { ToastModel | string } content - Specifies the toast modal or the content of the Toast.\n * @param {string} type - Specifies the type of toast.\n * @param { number } timeOut - Specifies the timeOut of the toast.\n * @returns {Toast} - returns the element\n */\n function show(content, type, timeOut) {\n var toastContainerElement;\n if (document.querySelector('.' + CONTAINER)) {\n toastContainerElement = document.querySelector('.' + CONTAINER);\n } else {\n toastContainerElement = createElement('div', {\n 'className': ROOT + ' ' + CONTAINER + ' e-toast-util'\n });\n document.body.appendChild(toastContainerElement);\n }\n var untilToastsModel;\n if (typeof content === 'string') {\n var cssClass = void 0;\n var icon = void 0;\n if (!isNOU(type)) {\n switch (type) {\n case 'Warning':\n cssClass = 'e-toast-warning';\n icon = 'e-toast-warning-icon';\n break;\n case 'Success':\n cssClass = 'e-toast-success';\n icon = 'e-toast-success-icon';\n break;\n case 'Error':\n cssClass = 'e-toast-danger';\n icon = 'e-toast-error-icon';\n break;\n case 'Information':\n cssClass = 'e-toast-info';\n icon = 'e-toast-info-icon';\n break;\n }\n } else {\n cssClass = '';\n icon = '';\n }\n untilToastsModel = {\n content: content,\n cssClass: cssClass,\n icon: icon,\n timeOut: !isNOU(timeOut) ? timeOut : 5000\n };\n } else {\n untilToastsModel = content;\n }\n var toastObj = new Toast(untilToastsModel);\n toastObj.appendTo(toastContainerElement);\n toastObj.show();\n return toastObj;\n }\n ToastUtility.show = show;\n})(ToastUtility || (ToastUtility = {}));","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};\nimport { Component, NotifyPropertyChanges, addClass, removeClass, L10n } from '@syncfusion/ej2-base';\nimport { Event, Property, detach, EventHandler, isNullOrUndefined as isNOU, compile, append } from '@syncfusion/ej2-base';\n/**\n * Specifies the type of severity to display the message with distinctive icons and colors.\n */\nexport var Severity;\n(function (Severity) {\n /**\n * The message is displayed with icons and colors to denote it as a normal message.\n */\n Severity[\"Normal\"] = \"Normal\";\n /**\n * The message is displayed with icons and colors to denote it as a success message.\n */\n Severity[\"Success\"] = \"Success\";\n /**\n * The message is displayed with icons and colors to denote it as information.\n */\n Severity[\"Info\"] = \"Info\";\n /**\n * The message is displayed with icons and colors to denote it as a warning message.\n */\n Severity[\"Warning\"] = \"Warning\";\n /**\n * The message is displayed with icons and colors to denote it as an error message.\n */\n Severity[\"Error\"] = \"Error\";\n})(Severity || (Severity = {}));\n/**\n * Specifies the predefined appearance variants for the component to display.\n */\nexport var Variant;\n(function (Variant) {\n /**\n * Denotes the severity is differentiated using text color and light background color.\n */\n Variant[\"Text\"] = \"Text\";\n /**\n * Denotes the severity is differentiated using text color and border without background.\n */\n Variant[\"Outlined\"] = \"Outlined\";\n /**\n * Denotes the severity is differentiated using text color and dark background color.\n */\n Variant[\"Filled\"] = \"Filled\";\n})(Variant || (Variant = {}));\nvar MSG_ICON = 'e-msg-icon';\nvar MSG_CLOSE_ICON = 'e-msg-close-icon';\nvar MSG_CONTENT = 'e-msg-content';\nvar MSG_CONTENT_CENTER = 'e-content-center';\nvar RTL = 'e-rtl';\nvar SUCCESS = 'e-success';\nvar WARNING = 'e-warning';\nvar INFO = 'e-info';\nvar ERROR = 'e-error';\nvar OUTLINED = 'e-outlined';\nvar FILLED = 'e-filled';\nvar HIDE = 'e-hidden';\n/**\n * The Message component displays messages with severity by differentiating icons and colors to denote the importance and context of the message to the end user.\n * ```html\n * <div id=\"msg\"></div>\n * <script>\n * var msgObj: Message = new Message({\n * content: 'Editing is restricted',\n * showCloseIcon: true\n * })\n * msgObj.appendTo('#msg');\n * </script>\n * ```\n *\n */\nvar Message = /** @class */function (_super) {\n __extends(Message, _super);\n /**\n * Constructor for creating the Message component widget.\n *\n * @param {MessageModel}options - Specifies the Message component interface.\n * @param {HTMLElement}element - Specifies the target element.\n */\n function Message(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.initialRender = true;\n return _this;\n }\n /**\n * Gets the Message component module name.\n *\n * @returns {string} - Returns the string.\n * @private\n */\n Message.prototype.getModuleName = function () {\n return 'message';\n };\n /**\n * Get the persisted state properties of the Message component.\n *\n * @returns {string} - Returns the string.\n */\n Message.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Method to initialize the variables for the Message component.\n *\n * @returns {void}\n * @private\n */\n Message.prototype.preRender = function () {\n var localeText = {\n close: 'Close'\n };\n this.l10n = new L10n('message', localeText, this.locale);\n };\n /**\n * Method to initialize the Message component rendering.\n *\n * @returns {void}\n * @private\n */\n Message.prototype.render = function () {\n this.innerContent = this.element.innerHTML;\n this.element.innerHTML = '';\n this.msgElement = this.createElement('div', {\n className: 'e-msg-content-wrap'\n });\n this.initialize();\n this.wireEvents();\n this.renderComplete();\n this.renderReactTemplates();\n this.initialRender = false;\n };\n Message.prototype.initialize = function () {\n this.element.setAttribute('role', 'alert');\n this.setCssClass();\n this.setIcon();\n this.setContent();\n this.setCloseIcon();\n this.setSeverity();\n this.setVariant();\n this.setVisible();\n if (this.enableRtl) {\n this.element.classList.add(RTL);\n }\n };\n Message.prototype.setIcon = function () {\n if (this.showIcon) {\n this.iconElement = this.createElement('span', {\n className: MSG_ICON\n });\n if (this.element.classList.contains(MSG_CONTENT_CENTER)) {\n this.msgElement.appendChild(this.iconElement);\n } else {\n this.element.appendChild(this.iconElement);\n }\n }\n };\n Message.prototype.setCloseIcon = function () {\n if (this.showCloseIcon) {\n this.closeIcon = this.createElement('button', {\n attrs: {\n type: 'button',\n class: MSG_CLOSE_ICON\n }\n });\n this.element.appendChild(this.closeIcon);\n this.setTitle();\n }\n };\n Message.prototype.setTitle = function () {\n this.l10n.setLocale(this.locale);\n var closeIconTitle = this.l10n.getConstant('close');\n this.closeIcon.setAttribute('title', closeIconTitle);\n this.closeIcon.setAttribute('aria-label', closeIconTitle);\n };\n Message.prototype.setContent = function () {\n this.txtElement = this.createElement('div', {\n className: MSG_CONTENT\n });\n if (this.element.classList.contains(MSG_CONTENT_CENTER)) {\n this.msgElement.appendChild(this.txtElement);\n this.element.appendChild(this.msgElement);\n } else {\n this.element.appendChild(this.txtElement);\n }\n this.setTemplate();\n };\n Message.prototype.setTemplate = function () {\n var templateFn;\n if (isNOU(this.content) || this.content === '') {\n this.txtElement.innerHTML = this.innerContent;\n } else if (!isNOU(this.content) && this.content !== '') {\n if (typeof this.content === 'string' || typeof this.content !== 'string') {\n // eslint-disable-next-line\n if (this.isVue || typeof this.content !== 'string') {\n templateFn = compile(this.content);\n if (!isNOU(templateFn)) {\n var tempArr = templateFn({}, this, 'content', this.element.id + 'content', true);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.txtElement);\n this.renderReactTemplates();\n }\n }\n } else {\n this.txtElement.innerHTML = this.content;\n }\n }\n }\n };\n Message.prototype.setSeverity = function () {\n var classList = [SUCCESS, WARNING, INFO, ERROR];\n removeClass([this.element], classList);\n if (this.severity === 'Success') {\n addClass([this.element], SUCCESS);\n } else if (this.severity === 'Warning') {\n addClass([this.element], WARNING);\n } else if (this.severity === 'Error') {\n addClass([this.element], ERROR);\n } else if (this.severity === 'Info') {\n addClass([this.element], INFO);\n }\n };\n Message.prototype.setVariant = function () {\n var classList = [FILLED, OUTLINED];\n removeClass([this.element], classList);\n if (this.variant === 'Outlined') {\n addClass([this.element], OUTLINED);\n } else if (this.variant === 'Filled') {\n addClass([this.element], FILLED);\n }\n };\n Message.prototype.setCssClass = function (oldCssClass) {\n if (oldCssClass) {\n removeClass([this.element], oldCssClass.split(' '));\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Message.prototype.setVisible = function () {\n if (!this.visible) {\n addClass([this.element], HIDE);\n if (!this.initialRender) {\n this.trigger('closed', {\n event: event,\n isInteracted: false,\n element: this.element\n });\n }\n } else {\n removeClass([this.element], HIDE);\n }\n };\n Message.prototype.clickHandler = function (event) {\n this.closeMessage(event);\n };\n Message.prototype.keyboardHandler = function (event) {\n if (event.keyCode === 32 || event.keyCode === 13) {\n this.closeMessage(event);\n }\n };\n Message.prototype.closeMessage = function (event) {\n addClass([this.element], HIDE);\n this.setProperties({\n visible: false\n }, true);\n var eventArgs = {\n event: event,\n isInteracted: true,\n element: this.element\n };\n this.trigger('closed', eventArgs);\n };\n Message.prototype.wireEvents = function () {\n if (this.showCloseIcon) {\n EventHandler.add(this.closeIcon, 'click', this.clickHandler, this);\n EventHandler.add(this.closeIcon, 'keydown', this.keyboardHandler, this);\n }\n };\n Message.prototype.unWireEvents = function () {\n if (this.showCloseIcon) {\n EventHandler.remove(this.closeIcon, 'click', this.clickHandler);\n EventHandler.remove(this.closeIcon, 'keydown', this.keyboardHandler);\n }\n };\n /**\n * Method to handle the dynamic changes of the Message component properties.\n *\n * @param {MessageModel} newProp - Specifies the new property.\n * @param {MessageModel} oldProp - Specifies the old property.\n * @returns {void}\n * @private\n */\n Message.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n this.setCssClass(oldProp.cssClass);\n break;\n case 'content':\n this.txtElement.innerHTML = '';\n this.setTemplate();\n break;\n case 'enableRtl':\n if (!this.enableRtl) {\n this.element.classList.remove(RTL);\n } else {\n this.element.classList.add(RTL);\n }\n break;\n case 'locale':\n if (this.showCloseIcon) {\n this.setTitle();\n }\n break;\n case 'showIcon':\n if (!this.showIcon && this.element.getElementsByClassName(MSG_ICON).length > 0) {\n detach(this.iconElement);\n }\n if (this.showIcon) {\n this.iconElement = this.createElement('span', {\n className: MSG_ICON\n });\n this.element.insertBefore(this.iconElement, this.txtElement);\n }\n break;\n case 'showCloseIcon':\n if (!this.showCloseIcon && !isNOU(this.closeIcon)) {\n this.unWireEvents();\n detach(this.closeIcon);\n } else {\n this.setCloseIcon();\n this.wireEvents();\n }\n break;\n case 'severity':\n this.setSeverity();\n break;\n case 'variant':\n this.setVariant();\n break;\n case 'visible':\n this.setVisible();\n break;\n }\n }\n };\n /**\n * Method to destroy the Message component. It removes the component from the DOM and detaches all its bound events. It also removes the attributes and classes of the component.\n *\n * @returns {void}\n */\n Message.prototype.destroy = function () {\n var cssClass = isNOU(this.cssClass) ? [''] : this.cssClass.split(' ');\n var className = [SUCCESS, WARNING, INFO, ERROR, RTL, HIDE, OUTLINED, FILLED];\n var classList = cssClass.length === 1 && cssClass[0] === '' ? className : className.concat(cssClass);\n removeClass([this.element], classList);\n this.element.removeAttribute('role');\n this.unWireEvents();\n if (!isNOU(this.iconElement)) {\n detach(this.iconElement);\n }\n detach(this.txtElement);\n if (!isNOU(this.closeIcon)) {\n detach(this.closeIcon);\n }\n _super.prototype.destroy.call(this);\n };\n __decorate([Property(null)], Message.prototype, \"content\", void 0);\n __decorate([Property('')], Message.prototype, \"cssClass\", void 0);\n __decorate([Property(true)], Message.prototype, \"showIcon\", void 0);\n __decorate([Property(false)], Message.prototype, \"showCloseIcon\", void 0);\n __decorate([Property('Normal')], Message.prototype, \"severity\", void 0);\n __decorate([Property('Text')], Message.prototype, \"variant\", void 0);\n __decorate([Property(true)], Message.prototype, \"visible\", void 0);\n __decorate([Event()], Message.prototype, \"created\", void 0);\n __decorate([Event()], Message.prototype, \"destroyed\", void 0);\n __decorate([Event()], Message.prototype, \"closed\", void 0);\n Message = __decorate([NotifyPropertyChanges], Message);\n return Message;\n}(Component);\nexport { Message };","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};\nimport { Component, getUniqueID, formatUnit, NotifyPropertyChanges, Property, attributes, removeClass, addClass, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar cssClassName = {\n TEXTSHAPE: 'e-skeleton-text',\n CIRCLESHAPE: 'e-skeleton-circle',\n SQUARESHAPE: 'e-skeleton-square',\n RECTANGLESHAPE: 'e-skeleton-rectangle',\n WAVEEFFECT: 'e-shimmer-wave',\n PULSEEFFECT: 'e-shimmer-pulse',\n FADEEFFECT: 'e-shimmer-fade',\n VISIBLENONE: 'e-visible-none'\n};\n/**\n * Defines the shape of Skeleton.\n */\nexport var SkeletonType;\n(function (SkeletonType) {\n /**\n * Defines the skeleton shape as text.\n */\n SkeletonType[\"Text\"] = \"Text\";\n /**\n * Defines the skeleton shape as circle.\n */\n SkeletonType[\"Circle\"] = \"Circle\";\n /**\n * Defines the skeleton shape as square.\n */\n SkeletonType[\"Square\"] = \"Square\";\n /**\n * Defines the skeleton shape as rectangle.\n */\n SkeletonType[\"Rectangle\"] = \"Rectangle\";\n})(SkeletonType || (SkeletonType = {}));\n/**\n * Defines the animation effect of Skeleton.\n */\nexport var ShimmerEffect;\n(function (ShimmerEffect) {\n /**\n * Defines the animation as shimmer wave effect.\n */\n ShimmerEffect[\"Wave\"] = \"Wave\";\n /**\n * Defines the animation as fade effect.\n */\n ShimmerEffect[\"Fade\"] = \"Fade\";\n /**\n * Defines the animation as pulse effect.\n */\n ShimmerEffect[\"Pulse\"] = \"Pulse\";\n /**\n * Defines the animation as no effect.\n */\n ShimmerEffect[\"None\"] = \"None\";\n})(ShimmerEffect || (ShimmerEffect = {}));\n/**\n * The Shimmer is a placeholder that animates a shimmer effect to let users know that the page’s content is loading at the moment.\n * In other terms, it simulates the layout of page content while loading the actual content.\n * ```html\n * <div id=\"skeletonCircle\"></div>\n * ```\n * ```typescript\n * <script>\n * var skeletonObj = new Skeleton({ shape: 'Circle', width: \"2rem\" });\n * skeletonObj.appendTo(\"#skeletonCircle\");\n * </script>\n * ```\n */\nvar Skeleton = /** @class */function (_super) {\n __extends(Skeleton, _super);\n /**\n * Constructor for creating Skeleton component.\n *\n * @param {SkeletonModel} options - Defines the model of Skeleton class.\n * @param {HTMLElement} element - Defines the target HTML element.\n */\n function Skeleton(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Get component module name.\n *\n * @returns {string} - Module name\n * @private\n */\n Skeleton.prototype.getModuleName = function () {\n return 'skeleton';\n };\n Skeleton.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n Skeleton.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.updateCssClass();\n attributes(this.element, {\n role: 'alert',\n 'aria-busy': 'true',\n 'aria-live': 'polite',\n 'aria-label': this.label\n });\n };\n /**\n * Method for initialize the component rendering.\n *\n * @returns {void}\n * @private\n */\n Skeleton.prototype.render = function () {\n this.initialize();\n };\n Skeleton.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n case 'height':\n this.updateDimension();\n break;\n case 'shape':\n this.updateShape();\n break;\n case 'shimmerEffect':\n this.updateEffect();\n break;\n case 'visible':\n this.updateVisibility();\n break;\n case 'label':\n this.element.setAttribute('aria-label', this.label);\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n this.updateCssClass();\n break;\n }\n }\n };\n /**\n * Method to destroys the Skeleton component.\n *\n * @returns {void}\n */\n Skeleton.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n var attrs = ['role', 'aria-live', 'aria-busy', 'aria-label'];\n var cssClass = [];\n if (this.cssClass) {\n cssClass = cssClass.concat(this.cssClass.split(' '));\n }\n for (var i = 0; i < attrs.length; i++) {\n this.element.removeAttribute(attrs[parseInt(i.toString(), 10)]);\n }\n cssClass = cssClass.concat(this.element.classList.value.match(/(e-skeleton-[^\\s]+)/g) || []);\n cssClass = cssClass.concat(this.element.classList.value.match(/(e-shimmer-[^\\s]+)/g) || []);\n removeClass([this.element], cssClass);\n };\n Skeleton.prototype.initialize = function () {\n this.updateShape();\n this.updateEffect();\n this.updateVisibility();\n };\n Skeleton.prototype.updateShape = function () {\n if (!isNullOrUndefined(this.shape)) {\n var shapeCss = cssClassName[this.shape.toUpperCase() + 'SHAPE'];\n var removeCss = this.element.classList.value.match(/(e-skeleton-[^\\s]+)/g) || [];\n this.updateDimension();\n if (removeCss) {\n removeClass([this.element], removeCss);\n }\n addClass([this.element], [shapeCss]);\n }\n };\n Skeleton.prototype.updateDimension = function () {\n var width = !this.width && ['Text', 'Rectangle'].indexOf(this.shape) > -1 ? '100%' : formatUnit(this.width);\n var height = ['Circle', 'Square'].indexOf(this.shape) > -1 ? width : formatUnit(this.height);\n this.element.style.width = width;\n this.element.style.height = height;\n };\n Skeleton.prototype.updateEffect = function () {\n var removeCss = this.element.classList.value.match(/(e-shimmer-[^\\s]+)/g) || [];\n if (removeCss) {\n removeClass([this.element], removeCss);\n }\n if (!isNullOrUndefined(this.shimmerEffect)) {\n addClass([this.element], [cssClassName[this.shimmerEffect.toUpperCase() + 'EFFECT']]);\n }\n };\n Skeleton.prototype.updateVisibility = function () {\n this.element.classList[this.visible ? 'remove' : 'add'](cssClassName.VISIBLENONE);\n };\n Skeleton.prototype.updateCssClass = function () {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n __decorate([Property('')], Skeleton.prototype, \"width\", void 0);\n __decorate([Property('')], Skeleton.prototype, \"height\", void 0);\n __decorate([Property(true)], Skeleton.prototype, \"visible\", void 0);\n __decorate([Property('Text')], Skeleton.prototype, \"shape\", void 0);\n __decorate([Property('Wave')], Skeleton.prototype, \"shimmerEffect\", void 0);\n __decorate([Property('Loading...')], Skeleton.prototype, \"label\", void 0);\n __decorate([Property('')], Skeleton.prototype, \"cssClass\", void 0);\n Skeleton = __decorate([NotifyPropertyChanges], Skeleton);\n return Skeleton;\n}(Component);\nexport { Skeleton };","module.exports = {\n siteTitle: \"Essential JS 2\", // Site title.\n siteTitleAlt: \"Essential JS 2 Docs\", // Alternative site title for SEO.\n siteLogo: \"/logos/syncfusion-logo.svg\", // Logo used for SEO and manifest.\n siteUrl: \"https://ej2.syncfusion.com\", // Domain of your website without pathPrefix.\n pathPrefix: \"/angular/documentation/api\", // Prefixes all links. For cases when deployed to example.github.io/gatsby-advanced-starter/.\n breadCrumPath: \"/\",\n siteDescription: \"Essential JS 2 Documentation\", // Website description used for RSS feeds/meta description tag. siteFBAppID: \"1825356251115265\", // FB Application ID for using app insights\n // googleAnalyticsID: \"UA-233131-15\", // GA tracking ID.\n // Links to social profiles/projects you want to display in the author segment/navigation bar.\n userLinks: [\n {\n label: \"GitHub\",\n url: \"https://github.com/ericwindmill\",\n iconClassName: \"fa fa-github\"\n }\n ],\n copyright: \"Copyright © 2001-\" + new Date().getFullYear()+\" Syncfusion Inc.\", // Copyright string for the footer of the website and RSS feed.\n themeColor: \"#2973b7\", // Used for setting manifest and progress theme colors.\n backgroundColor: \"#e0e0e0\", // Used for setting manifest background color.\n version: \"18.3.42\",\n nugetVersion: \"18.3.0.42\",\n isApi: true\n};\n","module.exports = \"data:image/vnd.microsoft.icon;base64,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K/98Niv/fDYr/3w2K/9WJR5nAAECAAABAgAAAQIAAAECAHw2K/98Niv/fDYr/3w2K/98Niv/fDYr/3w2K/98Niv7KxMPLEAcFmx8Niv/fDYr/3w2K/98Niv/fDYr/3w2K/98Niv/Zy0kuwIDBQJ8Niu9fDYr/3w2K/98Niv/fDYr/3w2K/98Niv/fDYr/1YlHmcAAQIAAAECAAABAgAAAQIAfDYr/3w2K/98Niv/fDYr/3w2K/98Niv/fDYr/3w2K/srEw8sQBwWbHw2K/98Niv/fDYr/3w2K/98Niv/fDYr/3w2K/9nLSS7AgMFAnw2K718Niv/fDYr/3w2K/98Niv/fDYr/3w2K/98Niv/ViUeZwABAgAAAQIAAAECAAABAgB8Niv/fDYr/3w2K/98Niv/fDYr/3w2K/98Niv/fDYr+ysTDyxAHBZsfDYr/3w2K/98Niv/fDYr/3w2K/98Niv/fDYr/2ctJLsCAwUCfDYrvXw2K/98Niv/fDYr/3w2K/98Niv/fDYr/3w2K/9WJR5nAAECAAABAgAAAQIAAAECAHw2K/98Niv/fDYr/3w2K/98Niv/fDYr/3w2K/98Niv7KxMPLEAcFmx8Niv/fDYr/3w2K/98Niv/fDYr/3w2K/98Niv/Zy0kuwIDBQJ8Niu9fDYr/3w2K/98Niv/fDYr/3w2K/98Niv/fDYr/1YlHmcAAQIAAAECAAABAgAAAQIAfDYr/3w2K/98Niv/fDYr/3w2K/98Niv/fDYr/3w2K/srEw8sQBwWbHw2K/98Niv/fDYr/3w2K/98Niv/fDYr/3w2K/9nLSS7AgMFAnw2K718Niv/fDYr/3w2K/98Niv/fDYr/3w2K/98Niv/ViUeZwABAgAAAQIAAAECAAABAgBeKSF5XikheV4pIXleKSF5XikheV4pIXleKSF5XikhdyEOCxUxFREzXikheV4pIXleKSF5XikheV4pIXleKSF5XikheU4iG1kCAwQBXikhWl4pIXleKSF5XikheV4pIXleKSF5XikheV4pIXlBHBcxAAECAAABAgAAAQIAAAECAAwFBBgMBQQYDAUEGAwFBBgMBQQYDAUEGAwFBBgMBQQYAwgMBAYDAgoMBQQYDAUEGAwFBBgMBQQYDAUEGAwFBBgMBQQYCgQDEgABAgADDhgSAw4YGAMOGBgDDhgYAw4YGAMO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\"","/**\n * Position library\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar elementRect;\nvar popupRect;\nvar element;\nvar parentDocument;\nvar fixedParent = false;\n/**\n *\n * @param {HTMLElement} anchor - specifies the element\n * @param {HTMLElement} element - specifies the element\n * @returns {OffsetPosition} - returns the value\n */\nexport function calculateRelativeBasedPosition(anchor, element) {\n var fixedElement = false;\n var anchorPos = {\n left: 0,\n top: 0\n };\n var tempAnchor = anchor;\n if (!anchor || !element) {\n return anchorPos;\n }\n if (isNullOrUndefined(element.offsetParent) && element.style.position === 'fixed') {\n fixedElement = true;\n }\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left += anchor.offsetLeft;\n anchorPos.top += anchor.offsetTop;\n anchor = anchor.offsetParent;\n }\n anchor = tempAnchor;\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left -= anchor.scrollLeft;\n anchorPos.top -= anchor.scrollTop;\n anchor = anchor.parentElement;\n }\n return anchorPos;\n}\n/**\n *\n * @param {Element} currentElement - specifies the element\n * @param {string} positionX - specifies the position\n * @param {string} positionY - specifies the position\n * @param {boolean} parentElement - specifies the boolean\n * @param {ClientRect} targetValues - specifies the client\n * @returns {OffsetPosition} - returns the position\n */\nexport function calculatePosition(currentElement, positionX, positionY, parentElement, targetValues) {\n popupRect = undefined;\n popupRect = targetValues;\n fixedParent = parentElement ? true : false;\n if (!currentElement) {\n return {\n left: 0,\n top: 0\n };\n }\n if (!positionX) {\n positionX = 'left';\n }\n if (!positionY) {\n positionY = 'top';\n }\n parentDocument = currentElement.ownerDocument;\n element = currentElement;\n var pos = {\n left: 0,\n top: 0\n };\n return updatePosition(positionX.toLowerCase(), positionY.toLowerCase(), pos);\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosx(value, pos) {\n pos.left = value;\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosy(value, pos) {\n pos.top = value;\n}\n/**\n *\n * @param {string} posX - specifies the position\n * @param {string} posY - specifies the position\n * @param {OffsetPosition} pos - specifies the position\n * @returns {OffsetPosition} - returns the postion\n */\nfunction updatePosition(posX, posY, pos) {\n elementRect = element.getBoundingClientRect();\n switch (posY + posX) {\n case 'topcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'topright':\n setPosx(getElementRight(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'centercenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerright':\n setPosx(getElementRight(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'bottomcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomright':\n setPosx(getElementRight(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementBottom(), pos);\n break;\n default:\n case 'topleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementTop(), pos);\n break;\n }\n element = null;\n return pos;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollTop() {\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollLeft() {\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementBottom() {\n return fixedParent ? elementRect.bottom : elementRect.bottom + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementVCenter() {\n return getElementTop() + elementRect.height / 2;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementTop() {\n return fixedParent ? elementRect.top : elementRect.top + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementLeft() {\n return elementRect.left + getBodyScrollLeft();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementRight() {\n var popupWidth = element && ((element.classList.contains('e-date-wrapper') || element.classList.contains('e-datetime-wrapper')) && element.classList.contains('e-rtl') || element.classList.contains('e-ddl') && element.classList.contains('e-rtl') || element.classList.contains('e-date-range-wrapper')) ? popupRect ? popupRect.width : 0 : popupRect && elementRect.width >= popupRect.width ? popupRect.width : 0;\n if (element && element.classList.contains('e-rtl') && element.classList.contains('e-multiselect')) {\n popupWidth = popupRect.width;\n }\n return elementRect.right + getBodyScrollLeft() - popupWidth;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementHCenter() {\n return getElementLeft() + elementRect.width / 2;\n}","/**\n * Collision module.\n */\nimport { calculatePosition } from './position';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar parentDocument;\nvar targetContainer;\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {HTMLElement} viewPortElement - specifies the element\n * @param {CollisionCoordinates} axis - specifies the collision coordinates\n * @param {OffsetPosition} position - specifies the position\n * @returns {void}\n */\nexport function fit(element, viewPortElement, axis, position) {\n if (viewPortElement === void 0) {\n viewPortElement = null;\n }\n if (axis === void 0) {\n axis = {\n X: false,\n Y: false\n };\n }\n if (!axis.Y && !axis.X) {\n return {\n left: 0,\n top: 0\n };\n }\n var elemData = element.getBoundingClientRect();\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n if (!position) {\n position = calculatePosition(element, 'left', 'top');\n }\n if (axis.X) {\n var containerWidth = targetContainer ? getTargetContainerWidth() : getViewPortWidth();\n var containerLeft = ContainerLeft();\n var containerRight = ContainerRight();\n var overLeft = containerLeft - position.left;\n var overRight = position.left + elemData.width - containerRight;\n if (elemData.width > containerWidth) {\n if (overLeft > 0 && overRight <= 0) {\n position.left = containerRight - elemData.width;\n } else if (overRight > 0 && overLeft <= 0) {\n position.left = containerLeft;\n } else {\n position.left = overLeft > overRight ? containerRight - elemData.width : containerLeft;\n }\n } else if (overLeft > 0) {\n position.left += overLeft;\n } else if (overRight > 0) {\n position.left -= overRight;\n }\n }\n if (axis.Y) {\n var containerHeight = targetContainer ? getTargetContainerHeight() : getViewPortHeight();\n var containerTop = ContainerTop();\n var containerBottom = ContainerBottom();\n var overTop = containerTop - position.top;\n var overBottom = position.top + elemData.height - containerBottom;\n if (elemData.height > containerHeight) {\n if (overTop > 0 && overBottom <= 0) {\n position.top = containerBottom - elemData.height;\n } else if (overBottom > 0 && overTop <= 0) {\n position.top = containerTop;\n } else {\n position.top = overTop > overBottom ? containerBottom - elemData.height : containerTop;\n }\n } else if (overTop > 0) {\n position.top += overTop;\n } else if (overBottom > 0) {\n position.top -= overBottom;\n }\n }\n return position;\n}\n/**\n *\n * @param {HTMLElement} element - specifies the html element\n * @param {HTMLElement} viewPortElement - specifies the html element\n * @param {number} x - specifies the number\n * @param {number} y - specifies the number\n * @returns {string[]} - returns the string value\n */\nexport function isCollide(element, viewPortElement, x, y) {\n if (viewPortElement === void 0) {\n viewPortElement = null;\n }\n var elemOffset = calculatePosition(element, 'left', 'top');\n if (x) {\n elemOffset.left = x;\n }\n if (y) {\n elemOffset.top = y;\n }\n var data = [];\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n var elementRect = element.getBoundingClientRect();\n var top = elemOffset.top;\n var left = elemOffset.left;\n var right = elemOffset.left + elementRect.width;\n var bottom = elemOffset.top + elementRect.height;\n var yAxis = topCollideCheck(top, bottom);\n var xAxis = leftCollideCheck(left, right);\n if (yAxis.topSide) {\n data.push('top');\n }\n if (xAxis.rightSide) {\n data.push('right');\n }\n if (xAxis.leftSide) {\n data.push('left');\n }\n if (yAxis.bottomSide) {\n data.push('bottom');\n }\n return data;\n}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {HTMLElement} target - specifies the element\n * @param {number} offsetX - specifies the number\n * @param {number} offsetY - specifies the number\n * @param {string} positionX - specifies the string value\n * @param {string} positionY - specifies the string value\n * @param {HTMLElement} viewPortElement - specifies the element\n * @param {CollisionCoordinates} axis - specifies the collision axis\n * @param {boolean} fixedParent - specifies the boolean\n * @returns {void}\n */\nexport function flip(element, target, offsetX, offsetY, positionX, positionY, viewPortElement, /* eslint-disable */\naxis, fixedParent) {\n if (viewPortElement === void 0) {\n viewPortElement = null;\n }\n if (axis === void 0) {\n axis = {\n X: true,\n Y: true\n };\n }\n if (!target || !element || !positionX || !positionY || !axis.X && !axis.Y) {\n return;\n }\n var tEdge = {\n TL: null,\n TR: null,\n BL: null,\n BR: null\n },\n eEdge = {\n TL: null,\n TR: null,\n BL: null,\n BR: null\n /* eslint-enable */\n };\n var elementRect;\n if (window.getComputedStyle(element).display === 'none') {\n var oldVisibility = element.style.visibility;\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n elementRect = element.getBoundingClientRect();\n element.style.removeProperty('display');\n element.style.visibility = oldVisibility;\n } else {\n elementRect = element.getBoundingClientRect();\n }\n var pos = {\n posX: positionX,\n posY: positionY,\n offsetX: offsetX,\n offsetY: offsetY,\n position: {\n left: 0,\n top: 0\n }\n };\n targetContainer = viewPortElement;\n parentDocument = target.ownerDocument;\n updateElementData(target, tEdge, pos, fixedParent, elementRect);\n setPosition(eEdge, pos, elementRect);\n if (axis.X) {\n leftFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n if (axis.Y && tEdge.TL.top > -1) {\n topFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n setPopup(element, pos, elementRect);\n}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client rect\n * @returns {void}\n */\nfunction setPopup(element, pos, elementRect) {\n var left = 0;\n var top = 0;\n if (element.offsetParent != null && (getComputedStyle(element.offsetParent).position === 'absolute' || getComputedStyle(element.offsetParent).position === 'relative')) {\n var data = calculatePosition(element.offsetParent, 'left', 'top', false, elementRect);\n left = data.left;\n top = data.top;\n }\n var scaleX = 1;\n var scaleY = 1;\n var tranformElement = getTransformElement(element);\n if (tranformElement) {\n var transformStyle = getComputedStyle(tranformElement).transform;\n if (transformStyle !== 'none') {\n var matrix = new DOMMatrix(transformStyle);\n scaleX = matrix.a;\n scaleY = matrix.d;\n }\n var zoomStyle = getComputedStyle(tranformElement).zoom;\n if (zoomStyle !== 'none') {\n var bodyZoom = getZoomValue(document.body);\n scaleX = bodyZoom * scaleX;\n scaleY = bodyZoom * scaleY;\n }\n }\n element.style.top = pos.position.top / scaleY + pos.offsetY - top / scaleY + 'px';\n element.style.left = pos.position.left / scaleX + pos.offsetX - left / scaleX + 'px';\n}\nexport function getZoomValue(element) {\n var zoomValue = getComputedStyle(element).zoom;\n return parseFloat(zoomValue) || 1; // Default zoom value is 1 (no zoom)\n}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @returns {HTMLElement} The modified element.\n */\nexport function getTransformElement(element) {\n while (element) {\n var transform = window.getComputedStyle(element).transform;\n var zoom = getZoomValue(document.body);\n if (transform && transform !== 'none' || zoom && zoom !== 1) {\n return element;\n }\n if (element === document.body) {\n return null;\n }\n element = element.offsetParent || element.parentElement;\n }\n return null;\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifies the offset\n * @param {PositionLocation} pos - specifies theloaction\n * @param {boolean} fixedParent - specifies the boolean\n * @param {ClientRect} elementRect - specifies the client rect\n * @returns {void}\n */\nfunction updateElementData(target, edge, pos, fixedParent, elementRect) {\n pos.position = calculatePosition(target, pos.posX, pos.posY, fixedParent, elementRect);\n edge.TL = calculatePosition(target, 'left', 'top', fixedParent, elementRect);\n edge.TR = calculatePosition(target, 'right', 'top', fixedParent, elementRect);\n edge.BR = calculatePosition(target, 'left', 'bottom', fixedParent, elementRect);\n edge.BL = calculatePosition(target, 'right', 'bottom', fixedParent, elementRect);\n}\n/**\n *\n * @param {EdgeOffset} eStatus - specifies the status\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client\n * @returns {void}\n */\nfunction setPosition(eStatus, pos, elementRect) {\n eStatus.TL = {\n top: pos.position.top + pos.offsetY,\n left: pos.position.left + pos.offsetX\n };\n eStatus.TR = {\n top: eStatus.TL.top,\n left: eStatus.TL.left + elementRect.width\n };\n eStatus.BL = {\n top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left\n };\n eStatus.BR = {\n top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left + elementRect.width\n };\n}\n/**\n *\n * @param {number} left - specifies the number\n * @param {number} right - specifies the number\n * @returns {LeftCorners} - returns the value\n */\nfunction leftCollideCheck(left, right) {\n //eslint-disable-next-line\n var leftSide = false,\n rightSide = false;\n if (left - getBodyScrollLeft() < ContainerLeft()) {\n leftSide = true;\n }\n if (right > ContainerRight()) {\n rightSide = true;\n }\n return {\n leftSide: leftSide,\n rightSide: rightSide\n };\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifes the element\n * @param {EdgeOffset} tEdge - specifies the edge offset\n * @param {PositionLocation} pos - specifes the location\n * @param {ClientRect} elementRect - specifies the client\n * @param {boolean} deepCheck - specifies the boolean value\n * @returns {void}\n */\nfunction leftFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = leftCollideCheck(edge.TL.left, edge.TR.left);\n if (tEdge.TL.left - getBodyScrollLeft() <= ContainerLeft()) {\n collideSide.leftSide = false;\n }\n if (tEdge.TR.left > ContainerRight()) {\n collideSide.rightSide = false;\n }\n if (collideSide.leftSide && !collideSide.rightSide || !collideSide.leftSide && collideSide.rightSide) {\n if (pos.posX === 'right') {\n pos.posX = 'left';\n } else {\n pos.posX = 'right';\n }\n pos.offsetX = pos.offsetX + elementRect.width;\n pos.offsetX = -1 * pos.offsetX;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n leftFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifies the offset\n * @param {EdgeOffset} tEdge - specifies the offset\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client rect\n * @param {boolean} deepCheck - specifies the boolean\n * @returns {void}\n */\nfunction topFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = topCollideCheck(edge.TL.top, edge.BL.top);\n if (tEdge.TL.top - getBodyScrollTop() <= ContainerTop()) {\n collideSide.topSide = false;\n }\n if (tEdge.BL.top >= ContainerBottom() && target.getBoundingClientRect().bottom < window.innerHeight) {\n collideSide.bottomSide = false;\n }\n if (collideSide.topSide && !collideSide.bottomSide || !collideSide.topSide && collideSide.bottomSide) {\n if (pos.posY === 'top') {\n pos.posY = 'bottom';\n } else {\n pos.posY = 'top';\n }\n pos.offsetY = pos.offsetY + elementRect.height;\n pos.offsetY = -1 * pos.offsetY;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false, elementRect);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n topFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\n/**\n *\n * @param {number} top - specifies the number\n * @param {number} bottom - specifies the number\n * @returns {TopCorners} - retyrns the value\n */\nfunction topCollideCheck(top, bottom) {\n //eslint-disable-next-line\n var topSide = false,\n bottomSide = false;\n if (top - getBodyScrollTop() < ContainerTop()) {\n topSide = true;\n }\n if (bottom > ContainerBottom()) {\n bottomSide = true;\n }\n return {\n topSide: topSide,\n bottomSide: bottomSide\n };\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerWidth() {\n return targetContainer.getBoundingClientRect().width;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerHeight() {\n return targetContainer.getBoundingClientRect().height;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerLeft() {\n return targetContainer.getBoundingClientRect().left;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerTop() {\n return targetContainer.getBoundingClientRect().top;\n}\n//eslint-disable-next-line\nfunction ContainerTop() {\n if (targetContainer) {\n return getTargetContainerTop();\n }\n return 0;\n}\n//eslint-disable-next-line\nfunction ContainerLeft() {\n if (targetContainer) {\n return getTargetContainerLeft();\n }\n return 0;\n}\n//eslint-disable-next-line\nfunction ContainerRight() {\n if (targetContainer) {\n return getBodyScrollLeft() + getTargetContainerLeft() + getTargetContainerWidth();\n }\n return getBodyScrollLeft() + getViewPortWidth();\n}\n//eslint-disable-next-line\nfunction ContainerBottom() {\n if (targetContainer) {\n return getBodyScrollTop() + getTargetContainerTop() + getTargetContainerHeight();\n }\n return getBodyScrollTop() + getViewPortHeight();\n}\n/**\n * @returns {number} - returns the scroll top value\n */\nfunction getBodyScrollTop() {\n // if(targetContainer)\n // return targetContainer.scrollTop;\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\n/**\n * @returns {number} - returns the scroll left value\n */\nfunction getBodyScrollLeft() {\n // if(targetContainer)\n // return targetContainer.scrollLeft;\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\n/**\n * @returns {number} - returns the viewport height\n */\nfunction getViewPortHeight() {\n return window.innerHeight;\n}\n/**\n * @returns {number} - returns the viewport width\n */\nfunction getViewPortWidth() {\n var windowWidth = window.innerWidth;\n var documentReact = document.documentElement.getBoundingClientRect();\n var offsetWidth = isNullOrUndefined(document.documentElement) ? 0 : documentReact.width;\n return windowWidth - (windowWidth - offsetWidth);\n}\n/**\n * @returns {void}\n */\nexport function destroy() {\n targetContainer = null;\n parentDocument = null;\n}","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};\nimport { setStyleAttribute, addClass, removeClass, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { calculatePosition, calculateRelativeBasedPosition } from '../common/position';\nimport { Animation, Property, Event, Component } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { flip, fit, isCollide, destroy as collisionDestroy, getTransformElement, getZoomValue } from '../common/collision';\n/**\n * Specifies the offset position values.\n */\nvar PositionData = /** @class */function (_super) {\n __extends(PositionData, _super);\n function PositionData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('left')], PositionData.prototype, \"X\", void 0);\n __decorate([Property('top')], PositionData.prototype, \"Y\", void 0);\n return PositionData;\n}(ChildProperty);\nexport { PositionData };\n// don't use space in classNames\nvar CLASSNAMES = {\n ROOT: 'e-popup',\n RTL: 'e-rtl',\n OPEN: 'e-popup-open',\n CLOSE: 'e-popup-close'\n};\n/**\n * Represents the Popup Component\n * ```html\n * <div id=\"popup\" style=\"position:absolute;height:100px;width:100px;\">\n * <div style=\"margin:35px 25px;\">Popup Content</div></div>\n * ```\n * ```typescript\n * <script>\n * var popupObj = new Popup();\n * popupObj.appendTo(\"#popup\");\n * </script>\n * ```\n */\nvar Popup = /** @class */function (_super) {\n __extends(Popup, _super);\n function Popup(element, options) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Called internally if any of the property value changed.\n *\n * @param {PopupModel} newProp - specifies the new property\n * @param {PopupModel} oldProp - specifies the old property\n * @private\n * @returns {void}\n */\n Popup.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n setStyleAttribute(this.element, {\n 'width': formatUnit(newProp.width)\n });\n break;\n case 'height':\n setStyleAttribute(this.element, {\n 'height': formatUnit(newProp.height)\n });\n break;\n case 'zIndex':\n setStyleAttribute(this.element, {\n 'zIndex': newProp.zIndex\n });\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'position':\n case 'relateTo':\n this.refreshPosition();\n break;\n case 'offsetX':\n {\n var x = newProp.offsetX - oldProp.offsetX;\n this.element.style.left = (parseInt(this.element.style.left, 10) + x).toString() + 'px';\n break;\n }\n case 'offsetY':\n {\n var y = newProp.offsetY - oldProp.offsetY;\n this.element.style.top = (parseInt(this.element.style.top, 10) + y).toString() + 'px';\n break;\n }\n case 'content':\n this.setContent();\n break;\n case 'actionOnScroll':\n if (newProp.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n } else {\n this.unwireScrollEvents();\n }\n break;\n }\n }\n };\n /**\n * gets the Component module name.\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.getModuleName = function () {\n return 'popup';\n };\n /**\n * To resolve if any collision occurs.\n *\n * @returns {void}\n */\n Popup.prototype.resolveCollision = function () {\n this.checkCollision();\n };\n /**\n * gets the persisted state properties of the Component.\n *\n * @returns {void}\n */\n Popup.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To destroy the control.\n *\n * @returns {void}\n */\n Popup.prototype.destroy = function () {\n if (this.element.classList.contains('e-popup-open')) {\n this.unwireEvents();\n }\n this.element.classList.remove(CLASSNAMES.ROOT, CLASSNAMES.RTL, CLASSNAMES.OPEN, CLASSNAMES.CLOSE);\n this.content = null;\n this.relateTo = null;\n collisionDestroy();\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.render = function () {\n this.element.classList.add(CLASSNAMES.ROOT);\n var styles = {};\n if (this.zIndex !== 1000) {\n styles.zIndex = this.zIndex;\n }\n if (this.width !== 'auto') {\n styles.width = formatUnit(this.width);\n }\n if (this.height !== 'auto') {\n styles.height = formatUnit(this.height);\n }\n setStyleAttribute(this.element, styles);\n this.fixedParent = false;\n this.setEnableRtl();\n this.setContent();\n };\n Popup.prototype.wireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.add(window, 'orientationchange', this.orientationOnChange, this);\n }\n if (this.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n };\n Popup.prototype.wireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollRefresh, this);\n }\n }\n };\n Popup.prototype.unwireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.remove(window, 'orientationchange', this.orientationOnChange);\n }\n if (this.actionOnScroll !== 'none') {\n this.unwireScrollEvents();\n }\n };\n Popup.prototype.unwireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollRefresh);\n }\n }\n };\n Popup.prototype.getRelateToElement = function () {\n var relateToElement = this.relateTo === '' || isNullOrUndefined(this.relateTo) ? document.body : this.relateTo;\n this.setProperties({\n relateTo: relateToElement\n }, true);\n return typeof this.relateTo === 'string' ? document.querySelector(this.relateTo) : this.relateTo;\n };\n Popup.prototype.scrollRefresh = function (e) {\n if (this.actionOnScroll === 'reposition') {\n if (!isNullOrUndefined(this.element) && !(this.element.offsetParent === e.target || this.element.offsetParent && this.element.offsetParent.tagName === 'BODY' && e.target.parentElement == null)) {\n this.refreshPosition();\n }\n } else if (this.actionOnScroll === 'hide') {\n this.hide();\n }\n if (this.actionOnScroll !== 'none') {\n if (this.getRelateToElement()) {\n var targetVisible = this.isElementOnViewport(this.getRelateToElement(), e.target);\n if (!targetVisible && !this.targetInvisibleStatus) {\n this.trigger('targetExitViewport');\n this.targetInvisibleStatus = true;\n } else if (targetVisible) {\n this.targetInvisibleStatus = false;\n }\n }\n }\n };\n /**\n * This method is to get the element visibility on viewport when scroll\n * the page. This method will returns true even though 1 px of element\n * part is in visible.\n *\n * @param {HTMLElement} relateToElement - specifies the element\n * @param {HTMLElement} scrollElement - specifies the scroll element\n * @returns {boolean} - retruns the boolean\n */\n // eslint-disable-next-line\n Popup.prototype.isElementOnViewport = function (relateToElement, scrollElement) {\n var scrollParents = this.getScrollableParent(relateToElement);\n for (var parent_3 = 0; parent_3 < scrollParents.length; parent_3++) {\n if (this.isElementVisible(relateToElement, scrollParents[parent_3])) {\n continue;\n } else {\n return false;\n }\n }\n return true;\n };\n Popup.prototype.isElementVisible = function (relateToElement, scrollElement) {\n var rect = this.checkGetBoundingClientRect(relateToElement);\n if (!rect.height || !rect.width) {\n return false;\n }\n if (!isNullOrUndefined(this.checkGetBoundingClientRect(scrollElement))) {\n var parent_4 = scrollElement.getBoundingClientRect();\n return !(rect.bottom < parent_4.top) && !(rect.bottom > parent_4.bottom) && !(rect.right > parent_4.right) && !(rect.left < parent_4.left);\n } else {\n var win = window;\n var windowView = {\n top: win.scrollY,\n left: win.scrollX,\n right: win.scrollX + win.outerWidth,\n bottom: win.scrollY + win.outerHeight\n };\n var off = calculatePosition(relateToElement);\n var ele = {\n top: off.top,\n left: off.left,\n right: off.left + rect.width,\n bottom: off.top + rect.height\n };\n var elementView = {\n top: windowView.bottom - ele.top,\n left: windowView.right - ele.left,\n bottom: ele.bottom - windowView.top,\n right: ele.right - windowView.left\n };\n return elementView.top > 0 && elementView.left > 0 && elementView.right > 0 && elementView.bottom > 0;\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.preRender = function () {\n //There is no event handler\n };\n Popup.prototype.setEnableRtl = function () {\n this.reposition();\n if (this.enableRtl) {\n this.element.classList.add(CLASSNAMES.RTL);\n } else {\n this.element.classList.remove(CLASSNAMES.RTL);\n }\n };\n Popup.prototype.setContent = function () {\n if (!isNullOrUndefined(this.content)) {\n this.element.innerHTML = '';\n if (typeof this.content === 'string') {\n this.element.textContent = this.content;\n } else {\n var relateToElem = this.getRelateToElement();\n // eslint-disable-next-line\n var props = this.content.props;\n if (!relateToElem.classList.contains('e-dropdown-btn') || isNullOrUndefined(props)) {\n this.element.appendChild(this.content);\n }\n }\n }\n };\n Popup.prototype.orientationOnChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.refreshPosition();\n }, 200);\n };\n /**\n * Based on the `relative` element and `offset` values, `Popup` element position will refreshed.\n *\n * @param {HTMLElement} target - The target element.\n * @param {boolean} collision - Specifies whether to check for collision.\n * @returns {void}\n */\n Popup.prototype.refreshPosition = function (target, collision) {\n if (!isNullOrUndefined(target)) {\n this.checkFixedParent(target);\n }\n this.reposition();\n if (!collision) {\n this.checkCollision();\n }\n };\n Popup.prototype.reposition = function () {\n var pos;\n var position;\n var relateToElement = this.getRelateToElement();\n if (typeof this.position.X === 'number' && typeof this.position.Y === 'number') {\n pos = {\n left: this.position.X,\n top: this.position.Y\n };\n } else if (typeof this.position.X === 'string' && typeof this.position.Y === 'number' || typeof this.position.X === 'number' && typeof this.position.Y === 'string') {\n var parentDisplay = void 0;\n var display = this.element.style.display;\n this.element.style.display = 'block';\n if (this.element.classList.contains('e-dlg-modal')) {\n parentDisplay = this.element.parentElement.style.display;\n this.element.parentElement.style.display = 'block';\n }\n position = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY);\n if (typeof this.position.X === 'string') {\n pos = {\n left: position.left,\n top: this.position.Y\n };\n } else {\n pos = {\n left: this.position.X,\n top: position.top\n };\n }\n this.element.style.display = display;\n if (this.element.classList.contains('e-dlg-modal')) {\n this.element.parentElement.style.display = parentDisplay;\n }\n } else if (relateToElement) {\n var height = this.element.clientHeight;\n var display = this.element.style.display;\n this.element.style.display = 'block';\n pos = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY, height);\n this.element.style.display = display;\n } else {\n pos = {\n left: 0,\n top: 0\n };\n }\n if (!isNullOrUndefined(pos)) {\n this.element.style.left = pos.left + 'px';\n this.element.style.top = pos.top + 'px';\n }\n };\n Popup.prototype.checkGetBoundingClientRect = function (ele) {\n var eleRect;\n try {\n eleRect = ele.getBoundingClientRect();\n return eleRect;\n } catch (error) {\n return null;\n }\n };\n Popup.prototype.getAnchorPosition = function (anchorEle, ele, position, offsetX, offsetY, height) {\n if (height === void 0) {\n height = 0;\n }\n var eleRect = this.checkGetBoundingClientRect(ele);\n var anchorRect = this.checkGetBoundingClientRect(anchorEle);\n if (isNullOrUndefined(eleRect) || isNullOrUndefined(anchorRect)) {\n return null;\n }\n var anchor = anchorEle;\n var anchorPos = {\n left: 0,\n top: 0\n };\n if (ele.offsetParent && ele.offsetParent.tagName === 'BODY' && anchorEle.tagName === 'BODY') {\n anchorPos = calculatePosition(anchorEle);\n } else {\n if (ele.classList.contains('e-dlg-modal') && anchor.tagName !== 'BODY') {\n ele = ele.parentElement;\n }\n anchorPos = calculateRelativeBasedPosition(anchor, ele);\n }\n switch (position.X) {\n default:\n case 'left':\n break;\n case 'center':\n if (ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container') {\n anchorPos.left += window.innerWidth / 2 - eleRect.width / 2;\n } else if (this.targetType === 'container') {\n anchorPos.left += anchorRect.width / 2 - eleRect.width / 2;\n } else {\n anchorPos.left += anchorRect.width / 2;\n }\n break;\n case 'right':\n if (ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container') {\n anchorPos.left += window.innerWidth - eleRect.width;\n } else if (this.targetType === 'container') {\n var scaleX = 1;\n var tranformElement = getTransformElement(ele);\n if (tranformElement) {\n var transformStyle = getComputedStyle(tranformElement).transform;\n if (transformStyle !== 'none') {\n var matrix = new DOMMatrix(transformStyle);\n scaleX = matrix.a;\n }\n var zoomStyle = getComputedStyle(tranformElement).zoom;\n if (zoomStyle !== 'none') {\n var bodyZoom = getZoomValue(document.body);\n scaleX = bodyZoom * scaleX;\n }\n }\n anchorPos.left += (anchorRect.width - eleRect.width) / scaleX;\n } else {\n anchorPos.left += anchorRect.width;\n }\n break;\n }\n switch (position.Y) {\n default:\n case 'top':\n break;\n case 'center':\n if (ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container') {\n anchorPos.top += window.innerHeight / 2 - eleRect.height / 2;\n } else if (this.targetType === 'container') {\n anchorPos.top += anchorRect.height / 2 - eleRect.height / 2;\n } else {\n anchorPos.top += anchorRect.height / 2;\n }\n break;\n case 'bottom':\n if (ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container') {\n anchorPos.top += window.innerHeight - eleRect.height;\n } else if (this.targetType === 'container' && !ele.classList.contains('e-dialog')) {\n anchorPos.top += anchorRect.height - eleRect.height;\n } else if (this.targetType === 'container' && ele.classList.contains('e-dialog')) {\n anchorPos.top += anchorRect.height - height;\n } else {\n anchorPos.top += anchorRect.height;\n }\n break;\n }\n anchorPos.left += offsetX;\n anchorPos.top += offsetY;\n return anchorPos;\n };\n Popup.prototype.callFlip = function (param) {\n var relateToElement = this.getRelateToElement();\n flip(this.element, relateToElement, this.offsetX, this.offsetY, this.position.X, this.position.Y, this.viewPortElement, param, this.fixedParent);\n };\n Popup.prototype.callFit = function (param) {\n if (isCollide(this.element, this.viewPortElement).length !== 0) {\n if (isNullOrUndefined(this.viewPortElement)) {\n var data = fit(this.element, this.viewPortElement, param);\n if (param.X) {\n this.element.style.left = data.left + 'px';\n }\n if (param.Y) {\n this.element.style.top = data.top + 'px';\n }\n } else {\n var elementRect = this.checkGetBoundingClientRect(this.element);\n var viewPortRect = this.checkGetBoundingClientRect(this.viewPortElement);\n if (isNullOrUndefined(elementRect) || isNullOrUndefined(viewPortRect)) {\n return null;\n }\n if (param && param.Y === true) {\n if (viewPortRect.top > elementRect.top) {\n this.element.style.top = '0px';\n } else if (viewPortRect.bottom < elementRect.bottom) {\n this.element.style.top = parseInt(this.element.style.top, 10) - (elementRect.bottom - viewPortRect.bottom) + 'px';\n }\n }\n if (param && param.X === true) {\n if (viewPortRect.right < elementRect.right) {\n this.element.style.left = parseInt(this.element.style.left, 10) - (elementRect.right - viewPortRect.right) + 'px';\n } else if (viewPortRect.left > elementRect.left) {\n this.element.style.left = parseInt(this.element.style.left, 10) + (viewPortRect.left - elementRect.left) + 'px';\n }\n }\n }\n }\n };\n Popup.prototype.checkCollision = function () {\n var horz = this.collision.X;\n var vert = this.collision.Y;\n if (horz === 'none' && vert === 'none') {\n return;\n }\n if (horz === 'flip' && vert === 'flip') {\n this.callFlip({\n X: true,\n Y: true\n });\n } else if (horz === 'fit' && vert === 'fit') {\n this.callFit({\n X: true,\n Y: true\n });\n } else {\n if (horz === 'flip') {\n this.callFlip({\n X: true,\n Y: false\n });\n } else if (vert === 'flip') {\n this.callFlip({\n Y: true,\n X: false\n });\n }\n if (horz === 'fit') {\n this.callFit({\n X: true,\n Y: false\n });\n } else if (vert === 'fit') {\n this.callFit({\n X: false,\n Y: true\n });\n }\n }\n };\n /**\n * Shows the popup element from screen.\n *\n * @returns {void}\n * @param {AnimationModel} animationOptions - specifies the model\n * @param { HTMLElement } relativeElement - To calculate the zIndex value dynamically.\n */\n Popup.prototype.show = function (animationOptions, relativeElement) {\n var _this = this;\n this.wireEvents();\n if (this.zIndex === 1000 || !isNullOrUndefined(relativeElement)) {\n var zIndexElement = isNullOrUndefined(relativeElement) ? this.element : relativeElement;\n this.zIndex = getZindexPartial(zIndexElement);\n setStyleAttribute(this.element, {\n 'zIndex': this.zIndex\n });\n }\n animationOptions = !isNullOrUndefined(animationOptions) && typeof animationOptions === 'object' ? animationOptions : this.showAnimation;\n if (this.collision.X !== 'none' || this.collision.Y !== 'none') {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.checkCollision();\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n }\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.begin = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.CLOSE);\n addClass([_this.element], CLASSNAMES.OPEN);\n }\n };\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n _this.trigger('open');\n }\n };\n new Animation(animationOptions).animate(this.element);\n } else {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.trigger('open');\n }\n };\n /**\n * Hides the popup element from screen.\n *\n * @param {AnimationModel} animationOptions - To give the animation options.\n * @returns {void}\n */\n Popup.prototype.hide = function (animationOptions) {\n var _this = this;\n animationOptions = !isNullOrUndefined(animationOptions) && typeof animationOptions === 'object' ? animationOptions : this.hideAnimation;\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.OPEN);\n addClass([_this.element], CLASSNAMES.CLOSE);\n _this.trigger('close');\n }\n };\n new Animation(animationOptions).animate(this.element);\n } else {\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n this.trigger('close');\n }\n this.unwireEvents();\n };\n /**\n * Gets scrollable parent elements for the given element.\n *\n * @returns {void}\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n */\n Popup.prototype.getScrollableParent = function (element) {\n this.checkFixedParent(element);\n return getScrollableParent(element, this.fixedParent);\n };\n Popup.prototype.checkFixedParent = function (element) {\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if ((parentStyle.position === 'fixed' || parentStyle.position === 'sticky') && !isNullOrUndefined(this.element) && this.element.offsetParent && this.element.offsetParent.tagName === 'BODY' && getComputedStyle(this.element.offsetParent).overflow !== 'hidden') {\n this.element.style.top = window.scrollY > parseInt(this.element.style.top, 10) ? formatUnit(window.scrollY - parseInt(this.element.style.top, 10)) : formatUnit(parseInt(this.element.style.top, 10) - window.scrollY);\n this.element.style.position = 'fixed';\n this.fixedParent = true;\n }\n parent = parent.parentElement;\n if (!isNullOrUndefined(this.element) && isNullOrUndefined(this.element.offsetParent) && parentStyle.position === 'fixed' && this.element.style.position === 'fixed') {\n this.fixedParent = true;\n }\n }\n };\n __decorate([Property('auto')], Popup.prototype, \"height\", void 0);\n __decorate([Property('auto')], Popup.prototype, \"width\", void 0);\n __decorate([Property(null)], Popup.prototype, \"content\", void 0);\n __decorate([Property('container')], Popup.prototype, \"targetType\", void 0);\n __decorate([Property(null)], Popup.prototype, \"viewPortElement\", void 0);\n __decorate([Property({\n X: 'none',\n Y: 'none'\n })], Popup.prototype, \"collision\", void 0);\n __decorate([Property('')], Popup.prototype, \"relateTo\", void 0);\n __decorate([Complex({}, PositionData)], Popup.prototype, \"position\", void 0);\n __decorate([Property(0)], Popup.prototype, \"offsetX\", void 0);\n __decorate([Property(0)], Popup.prototype, \"offsetY\", void 0);\n __decorate([Property(1000)], Popup.prototype, \"zIndex\", void 0);\n __decorate([Property(false)], Popup.prototype, \"enableRtl\", void 0);\n __decorate([Property('reposition')], Popup.prototype, \"actionOnScroll\", void 0);\n __decorate([Property(null)], Popup.prototype, \"showAnimation\", void 0);\n __decorate([Property(null)], Popup.prototype, \"hideAnimation\", void 0);\n __decorate([Event()], Popup.prototype, \"open\", void 0);\n __decorate([Event()], Popup.prototype, \"close\", void 0);\n __decorate([Event()], Popup.prototype, \"targetExitViewport\", void 0);\n Popup = __decorate([NotifyPropertyChanges], Popup);\n return Popup;\n}(Component);\nexport { Popup };\n/**\n * Gets scrollable parent elements for the given element.\n *\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n * @param {boolean} fixedParent - specifies the parent element\n * @private\n * @returns {void}\n */\nexport function getScrollableParent(element, fixedParent) {\n var eleStyle = getComputedStyle(element);\n var scrollParents = [];\n var overflowRegex = /(auto|scroll)/;\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (!(eleStyle.position === 'absolute' && parentStyle.position === 'static') && overflowRegex.test(parentStyle.overflow + parentStyle.overflowY + parentStyle.overflowX)) {\n scrollParents.push(parent);\n }\n parent = parent.parentElement;\n }\n if (!fixedParent) {\n scrollParents.push(document);\n }\n return scrollParents;\n}\n/**\n * Gets the maximum z-index of the given element.\n *\n * @returns {void}\n * @param { HTMLElement } element - Specify the element to get the maximum z-index of it.\n * @private\n */\nexport function getZindexPartial(element) {\n // upto body traversal\n var parent = element.parentElement;\n var parentZindex = [];\n while (parent) {\n if (parent.tagName !== 'BODY') {\n var index = document.defaultView.getComputedStyle(parent, null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(parent, null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n parentZindex.push(index);\n }\n parent = parent.parentElement;\n } else {\n break;\n }\n }\n var childrenZindex = [];\n for (var i = 0; i < document.body.children.length; i++) {\n if (!element.isEqualNode(document.body.children[i])) {\n var index = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n childrenZindex.push(index);\n }\n }\n }\n childrenZindex.push('999');\n var siblingsZindex = [];\n if (!isNullOrUndefined(element.parentElement) && element.parentElement.tagName !== 'BODY') {\n var childNodes = [].slice.call(element.parentElement.children);\n for (var i = 0; i < childNodes.length; i++) {\n if (!element.isEqualNode(childNodes[i])) {\n var index = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n siblingsZindex.push(index);\n }\n }\n }\n }\n var finalValue = parentZindex.concat(childrenZindex, siblingsZindex);\n // eslint-disable-next-line\n var currentZindexValue = Math.max.apply(Math, finalValue) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n/**\n * Gets the maximum z-index of the page.\n *\n * @returns {void}\n * @param { HTMLElement } tagName - Specify the tagName to get the maximum z-index of it.\n * @private\n */\nexport function getMaxZindex(tagName) {\n if (tagName === void 0) {\n tagName = ['*'];\n }\n var maxZindex = [];\n for (var i = 0; i < tagName.length; i++) {\n var elements = document.getElementsByTagName(tagName[i]);\n for (var i_1 = 0; i_1 < elements.length; i_1++) {\n var index = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n maxZindex.push(index);\n }\n }\n }\n // eslint-disable-next-line\n var currentZindexValue = Math.max.apply(Math, maxZindex) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}","/**\n * Resize library\n */\nimport { isNullOrUndefined as isNOU, createElement, EventHandler, detach, Browser } from '@syncfusion/ej2-base';\nvar elementClass = ['north-west', 'north', 'north-east', 'west', 'east', 'south-west', 'south', 'south-east'];\nvar RESIZE_HANDLER = 'e-resize-handle';\nvar FOCUSED_HANDLER = 'e-focused-handle';\nvar DIALOG_RESIZABLE = 'e-dlg-resizable';\nvar RESTRICT_LEFT = ['e-restrict-left'];\nvar RESIZE_WITHIN_VIEWPORT = 'e-resize-viewport';\nvar dialogBorderResize = ['north', 'west', 'east', 'south'];\nvar targetElement;\nvar selectedHandler;\nvar originalWidth = 0;\nvar originalHeight = 0;\nvar originalX = 0;\nvar originalY = 0;\nvar originalMouseX = 0;\nvar originalMouseY = 0;\nvar minHeight;\nvar maxHeight;\nvar minWidth;\nvar maxWidth;\nvar containerElement;\nvar resizeStart = null;\nvar resize = null;\nvar resizeEnd = null;\nvar resizeWestWidth;\nvar setLeft = true;\nvar previousWidth = 0;\nvar setWidth = true;\n// eslint-disable-next-line\nvar proxy;\n/**\n *\n * @param {ResizeArgs} args - specifies the resize args\n * @returns {void}\n */\nexport function createResize(args) {\n resizeStart = args.resizeBegin;\n resize = args.resizing;\n resizeEnd = args.resizeComplete;\n targetElement = getDOMElement(args.element);\n containerElement = getDOMElement(args.boundary);\n var directions = args.direction.split(' ');\n for (var i = 0; i < directions.length; i++) {\n if (dialogBorderResize.indexOf(directions[i]) >= 0 && directions[i]) {\n setBorderResizeElm(directions[i]);\n } else if (directions[i].trim() !== '') {\n var resizeHandler = createElement('div', {\n className: 'e-icons ' + RESIZE_HANDLER + ' ' + 'e-' + directions[i]\n });\n targetElement.appendChild(resizeHandler);\n }\n }\n minHeight = args.minHeight;\n minWidth = args.minWidth;\n maxWidth = args.maxWidth;\n maxHeight = args.maxHeight;\n if (args.proxy && args.proxy.element && args.proxy.element.classList.contains('e-dialog')) {\n wireEvents(args.proxy);\n } else {\n wireEvents();\n }\n}\n/**\n *\n * @param {string} direction - specifies the string\n * @returns {void}\n */\nfunction setBorderResizeElm(direction) {\n calculateValues();\n var borderBottom = createElement('span', {\n attrs: {\n 'unselectable': 'on',\n 'contenteditable': 'false'\n }\n });\n borderBottom.setAttribute('class', 'e-dialog-border-resize e-' + direction);\n if (direction === 'south') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.bottom = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'north') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.top = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'east') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.right = '0px';\n borderBottom.style.top = '0px';\n }\n if (direction === 'west') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.left = '0px';\n borderBottom.style.top = '0px';\n }\n targetElement.appendChild(borderBottom);\n}\n/**\n *\n * @param {string} element - specifies the element\n * @returns {HTMLElement} - returns the element\n */\nfunction getDOMElement(element) {\n var domElement;\n if (!isNOU(element)) {\n if (typeof element === 'string') {\n domElement = document.querySelector(element);\n } else {\n domElement = element;\n }\n }\n return domElement;\n}\n/**\n * Wires up the event handlers for the resizable elements.\n *\n * @param {any} [args] - Optional arguments that provide context for the event handlers.\n * @returns {void}\n */\nfunction wireEvents(args) {\n var context = args || this;\n var resizers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < resizers.length; i++) {\n selectedHandler = resizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, context);\n var eventName = Browser.info.name === 'msie' ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, context);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNOU(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n selectedHandler = borderResizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, context);\n var eventName = Browser.info.name === 'msie' ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, context);\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {string} e - specifies the string\n * @returns {string} - returns the string\n */\nfunction getEventType(e) {\n return e.indexOf('mouse') > -1 ? 'mouse' : 'touch';\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the mouse event\n * @returns {void}\n */\nfunction onMouseDown(e) {\n e.preventDefault();\n targetElement = e.target.parentElement;\n calculateValues();\n originalMouseX = e.pageX;\n originalMouseY = e.pageY;\n e.target.classList.add(FOCUSED_HANDLER);\n if (!isNOU(resizeStart)) {\n var proxy_1 = null || this;\n if (resizeStart(e, proxy_1) === true) {\n return;\n }\n }\n if (this.targetEle && targetElement && targetElement.querySelector('.' + DIALOG_RESIZABLE)) {\n containerElement = this.target === ('body' || 'document.body' || document.body) ? null : this.targetEle;\n maxWidth = this.targetEle.clientWidth;\n maxHeight = this.targetEle.clientHeight;\n }\n var target = isNOU(containerElement) ? document : containerElement;\n EventHandler.add(target, 'mousemove', onMouseMove, this);\n EventHandler.add(document, 'mouseup', onMouseUp, this);\n for (var i = 0; i < RESTRICT_LEFT.length; i++) {\n if (targetElement.classList.contains(RESTRICT_LEFT[i])) {\n setLeft = false;\n } else {\n setLeft = true;\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onMouseUp(e) {\n var touchMoveEvent = Browser.info.name === 'msie' ? 'pointermove' : 'touchmove';\n var touchEndEvent = Browser.info.name === 'msie' ? 'pointerup' : 'touchend';\n var target = isNOU(containerElement) ? document : containerElement;\n var eventName = Browser.info.name === 'msie' ? 'pointerdown' : 'touchstart';\n EventHandler.remove(target, 'mousemove', onMouseMove);\n EventHandler.remove(target, touchMoveEvent, onMouseMove);\n EventHandler.remove(target, eventName, onMouseMove);\n if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n document.body.querySelector('.' + FOCUSED_HANDLER).classList.remove(FOCUSED_HANDLER);\n }\n if (!isNOU(resizeEnd)) {\n var proxy_2 = null || this;\n resizeEnd(e, proxy_2);\n }\n EventHandler.remove(document, 'mouseup', onMouseUp);\n EventHandler.remove(document, touchEndEvent, onMouseUp);\n}\n/* istanbul ignore next */\n/**\n * @returns {void}\n */\nfunction calculateValues() {\n originalWidth = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('width').replace('px', ''));\n originalHeight = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('height').replace('px', ''));\n originalX = targetElement.getBoundingClientRect().left;\n originalY = targetElement.getBoundingClientRect().top;\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onTouchStart(e) {\n targetElement = e.target.parentElement;\n calculateValues();\n var dialogResizeElement = targetElement.classList.contains('e-dialog');\n if ((e.target.classList.contains(RESIZE_HANDLER) || e.target.classList.contains('e-dialog-border-resize')) && dialogResizeElement) {\n e.target.classList.add(FOCUSED_HANDLER);\n }\n var coordinates = e.touches ? e.changedTouches[0] : e;\n originalMouseX = coordinates.pageX;\n originalMouseY = coordinates.pageY;\n if (!isNOU(resizeStart)) {\n var proxy_3 = null || this;\n if (resizeStart(e, proxy_3) === true) {\n return;\n }\n }\n var touchMoveEvent = Browser.info.name === 'msie' ? 'pointermove' : 'touchmove';\n var touchEndEvent = Browser.info.name === 'msie' ? 'pointerup' : 'touchend';\n var target = isNOU(containerElement) ? document : containerElement;\n EventHandler.add(target, touchMoveEvent, onMouseMove, this);\n EventHandler.add(document, touchEndEvent, onMouseUp, this);\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onMouseMove(e) {\n if (e.target.classList.contains(RESIZE_HANDLER) && e.target.classList.contains(FOCUSED_HANDLER)) {\n selectedHandler = e.target;\n } else if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n selectedHandler = document.body.querySelector('.' + FOCUSED_HANDLER);\n }\n if (!isNOU(selectedHandler)) {\n var resizeTowards = '';\n for (var i = 0; i < elementClass.length; i++) {\n if (selectedHandler.classList.contains('e-' + elementClass[i])) {\n resizeTowards = elementClass[i];\n }\n }\n if (!isNOU(resize)) {\n var proxy_4 = null || this;\n resize(e, proxy_4);\n }\n switch (resizeTowards) {\n case 'south':\n resizeSouth(e);\n break;\n case 'north':\n resizeNorth(e);\n break;\n case 'west':\n resizeWest(e);\n break;\n case 'east':\n resizeEast(e);\n break;\n case 'south-east':\n resizeSouth(e);\n resizeEast(e);\n break;\n case 'south-west':\n resizeSouth(e);\n resizeWest(e);\n break;\n case 'north-east':\n resizeNorth(e);\n resizeEast(e);\n break;\n case 'north-west':\n resizeNorth(e);\n resizeWest(e);\n break;\n default:\n break;\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {HTMLElement} element - specifies the eleemnt\n * @returns {ClientRect} - returns the client\n */\nfunction getClientRectValues(element) {\n return element.getBoundingClientRect();\n}\n/**\n * @param {MouseEvent | TouchEvent} e - specifies the event\n * @returns {void}\n */\nfunction resizeSouth(e) {\n var documentHeight = document.documentElement.clientHeight;\n var calculateValue = false;\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var currentpageY = coordinates.pageY;\n var targetRectValues = getClientRectValues(targetElement);\n var containerRectValues;\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement)) {\n calculateValue = true;\n } else if (isNOU(containerElement) && (documentHeight - currentpageY >= 0 || targetRectValues.top < 0)) {\n calculateValue = true;\n }\n var calculatedHeight = originalHeight + (currentpageY - originalMouseY);\n calculatedHeight = calculatedHeight > minHeight ? calculatedHeight : minHeight;\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = containerRectValues.top;\n }\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetHeight - containerElement.clientHeight;\n var topWithoutborder = targetRectValues.top - containerTop - borderValue / 2;\n topWithoutborder = topWithoutborder < 0 ? 0 : topWithoutborder;\n if (targetRectValues.top > 0 && topWithoutborder + calculatedHeight > maxHeight) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.height = maxHeight - parseInt(topWithoutborder.toString(), 10) + 'px';\n return;\n }\n var targetTop = 0;\n if (calculateValue) {\n if (targetRectValues.top < 0 && documentHeight + (targetRectValues.height + targetRectValues.top) > 0) {\n targetTop = targetRectValues.top;\n if (calculatedHeight + targetTop <= 30) {\n calculatedHeight = targetRectValues.height - (targetRectValues.height + targetRectValues.top) + 30;\n }\n }\n if (calculatedHeight + targetRectValues.top >= maxHeight) {\n targetElement.style.height = targetRectValues.height + (documentHeight - (targetRectValues.height + targetRectValues.top)) + 'px';\n }\n var calculatedTop = isNOU(containerElement) ? targetTop : topWithoutborder;\n if (calculatedHeight >= minHeight && calculatedHeight + calculatedTop <= maxHeight) {\n targetElement.style.height = calculatedHeight + 'px';\n }\n }\n}\n/**\n * Resizes the element towards the north direction.\n *\n * @param {MouseEvent | TouchEvent} e - The event object.\n * @returns {void}\n */\nfunction resizeNorth(e) {\n var calculateValue = false;\n var boundaryRectValues;\n var pageY = getEventType(e.type) === 'mouse' ? e.pageY : e.touches[0].pageY;\n var targetRectValues = getClientRectValues(targetElement);\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetHeight - containerElement.clientHeight;\n if (!isNOU(containerElement)) {\n boundaryRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement) && targetRectValues.top - boundaryRectValues.top > 0) {\n calculateValue = true;\n } else if (isNOU(containerElement) && pageY > 0) {\n calculateValue = true;\n } else if (!isNOU(containerElement) && Math.floor(targetRectValues.top - boundaryRectValues.top + targetRectValues.height + (boundaryRectValues.bottom - targetRectValues.bottom)) - borderValue <= maxHeight) {\n calculateValue = true;\n }\n var currentHeight = originalHeight - (pageY - originalMouseY);\n if (calculateValue) {\n if (currentHeight >= minHeight && currentHeight <= maxHeight) {\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = boundaryRectValues.top;\n }\n var top_1 = originalY - containerTop + (pageY - originalMouseY);\n top_1 = top_1 > 0 ? top_1 : 1;\n targetElement.style.height = currentHeight + 'px';\n targetElement.style.top = top_1 + 'px';\n }\n }\n}\n/**\n * Resizes the element towards the west direction.\n *\n * @param {MouseEvent | TouchEvent} e - The event object.\n * @returns {void}\n */\nfunction resizeWest(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var rectValues;\n if (!isNOU(containerElement)) {\n rectValues = getClientRectValues(containerElement);\n }\n var pageX = getEventType(e.type) === 'mouse' ? e.pageX : e.touches[0].pageX;\n var targetRectValues = getClientRectValues(targetElement);\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetWidth - containerElement.clientWidth;\n /* eslint-disable */\n var left = isNOU(containerElement) ? 0 : rectValues.left;\n var containerWidth = isNOU(containerElement) ? 0 : rectValues.width;\n /* eslint-enable */\n if (isNOU(resizeWestWidth)) {\n if (!isNOU(containerElement)) {\n resizeWestWidth = targetRectValues.left - left - borderValue / 2 + targetRectValues.width;\n resizeWestWidth = resizeWestWidth + (containerWidth - borderValue - resizeWestWidth);\n } else {\n resizeWestWidth = documentWidth;\n }\n }\n if (!isNOU(containerElement) && Math.floor(targetRectValues.left - rectValues.left + targetRectValues.width + (rectValues.right - targetRectValues.right)) - borderValue <= maxWidth) {\n calculateValue = true;\n } else if (isNOU(containerElement) && pageX >= 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth - (pageX - originalMouseX);\n if (setLeft) {\n calculatedWidth = calculatedWidth > resizeWestWidth ? resizeWestWidth : calculatedWidth;\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = rectValues.left;\n }\n var left_1 = originalX - containerLeft + (pageX - originalMouseX);\n left_1 = left_1 > 0 ? left_1 : 1;\n if (calculatedWidth !== previousWidth && setWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n if (setLeft) {\n targetElement.style.left = left_1 + 'px';\n if (left_1 === 1) {\n setWidth = false;\n } else {\n setWidth = true;\n }\n }\n }\n }\n previousWidth = calculatedWidth;\n}\n/**\n * Resizes the element towards the east direction.\n *\n * @param {MouseEvent | TouchEvent} e - The event object.\n * @returns {void}\n */\nfunction resizeEast(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var containerRectValues;\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var pageX = coordinates.pageX;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement) && (targetRectValues.left - containerRectValues.left + targetRectValues.width <= maxWidth || targetRectValues.right - containerRectValues.left >= targetRectValues.width)) {\n calculateValue = true;\n } else if (isNOU(containerElement) && documentWidth - pageX > 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth + (pageX - originalMouseX);\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = containerRectValues.left;\n }\n if (targetRectValues.left - containerLeft + calculatedWidth > maxWidth) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.width = maxWidth - (targetRectValues.left - containerLeft) + 'px';\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {number} minimumHeight - specifies the number\n * @returns {void}\n */\nexport function setMinHeight(minimumHeight) {\n minHeight = minimumHeight;\n}\n/**\n *\n * @param {number} value - specifies the number value\n * @returns {void}\n */\nexport function setMaxWidth(value) {\n maxWidth = value;\n}\n/**\n *\n * @param {number} value - specifies the number value\n * @returns {void}\n */\nexport function setMaxHeight(value) {\n maxHeight = value;\n}\n/**\n * @returns {void}\n */\nexport function removeResize() {\n var handlers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < handlers.length; i++) {\n detach(handlers[i]);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNOU(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n detach(borderResizers[i]);\n }\n }\n}\n/**\n * @returns {void}\n */\nexport function resizeDestroy() {\n targetElement = null;\n selectedHandler = null;\n containerElement = null;\n resizeWestWidth = null;\n resizeStart = null;\n resize = null;\n resizeEnd = null;\n}","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};\nimport { Component, Property, Event, Collection, L10n, Complex, compile, createElement, animationMode } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, detach, attributes, prepend, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, isBlazor } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, append, EventHandler, Draggable, extend } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, Browser } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup, PositionData, getZindexPartial } from '../popup/popup';\nimport { createResize, removeResize, setMinHeight, setMaxWidth, setMaxHeight, resizeDestroy } from '../common/resize';\nvar ButtonProps = /** @class */function (_super) {\n __extends(ButtonProps, _super);\n function ButtonProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property(true)], ButtonProps.prototype, \"isFlat\", void 0);\n __decorate([Property()], ButtonProps.prototype, \"buttonModel\", void 0);\n __decorate([Property('Button')], ButtonProps.prototype, \"type\", void 0);\n __decorate([Event()], ButtonProps.prototype, \"click\", void 0);\n return ButtonProps;\n}(ChildProperty);\nexport { ButtonProps };\n/**\n * Configures the animation properties for both open and close the dialog.\n */\nvar AnimationSettings = /** @class */function (_super) {\n __extends(AnimationSettings, _super);\n function AnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('Fade')], AnimationSettings.prototype, \"effect\", void 0);\n __decorate([Property(400)], AnimationSettings.prototype, \"duration\", void 0);\n __decorate([Property(0)], AnimationSettings.prototype, \"delay\", void 0);\n return AnimationSettings;\n}(ChildProperty);\nexport { AnimationSettings };\nvar ROOT = 'e-dialog';\nvar RTL = 'e-rtl';\nvar DLG_HEADER_CONTENT = 'e-dlg-header-content';\nvar DLG_HEADER = 'e-dlg-header';\nvar DLG_FOOTER_CONTENT = 'e-footer-content';\nvar MODAL_DLG = 'e-dlg-modal';\nvar DLG_CONTENT = 'e-dlg-content';\nvar DLG_CLOSE_ICON = 'e-icon-dlg-close';\nvar DLG_OVERLAY = 'e-dlg-overlay';\nvar DLG_TARGET = 'e-dlg-target';\nvar DLG_CONTAINER = 'e-dlg-container';\nvar SCROLL_DISABLED = 'e-scroll-disabled';\nvar DLG_PRIMARY_BUTTON = 'e-primary';\nvar ICON = 'e-icons';\nvar POPUP_ROOT = 'e-popup';\nvar DEVICE = 'e-device';\nvar FULLSCREEN = 'e-dlg-fullscreen';\nvar DLG_CLOSE_ICON_BTN = 'e-dlg-closeicon-btn';\nvar DLG_HIDE = 'e-popup-close';\nvar DLG_SHOW = 'e-popup-open';\nvar DLG_UTIL_DEFAULT_TITLE = 'Information';\nvar DLG_UTIL_ROOT = 'e-scroll-disabled';\nvar DLG_UTIL_ALERT = 'e-alert-dialog';\nvar DLG_UTIL_CONFIRM = 'e-confirm-dialog';\nvar DLG_RESIZABLE = 'e-dlg-resizable';\nvar DLG_RESTRICT_LEFT_VALUE = 'e-restrict-left';\nvar DLG_RESTRICT_WIDTH_VALUE = 'e-resize-viewport';\nvar DLG_REF_ELEMENT = 'e-dlg-ref-element';\nvar DLG_USER_ACTION_CLOSED = 'user action';\nvar DLG_CLOSE_ICON_CLOSED = 'close icon';\nvar DLG_ESCAPE_CLOSED = 'escape';\nvar DLG_OVERLAYCLICK_CLOSED = 'overlayClick';\nvar DLG_DRAG = 'e-draggable';\n/**\n * Represents the dialog component that displays the information and get input from the user.\n * Two types of dialog components are `Modal and Modeless (non-modal)` depending on its interaction with parent application.\n * ```html\n * <div id=\"dialog\"></div>\n * ```\n * ```typescript\n * <script>\n * var dialogObj = new Dialog({ header: 'Dialog' });\n * dialogObj.appendTo(\"#dialog\");\n * </script>\n * ```\n */\nvar Dialog = /** @class */function (_super) {\n __extends(Dialog, _super);\n /*\n * * Constructor for creating the widget\n *\n * @param\n * @param\n * @hidden\n */\n function Dialog(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n *Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.render = function () {\n this.initialize();\n this.initRender();\n this.wireEvents();\n if (this.width === '100%') {\n this.element.style.width = '';\n }\n if (this.minHeight !== '') {\n this.element.style.minHeight = formatUnit(this.minHeight);\n }\n if (this.enableResize) {\n this.setResize();\n if (this.isModal) {\n this.isModelResize = true;\n }\n if (this.animationSettings.effect === 'None') {\n this.getMinHeight();\n }\n }\n this.renderComplete();\n };\n Dialog.prototype.initializeValue = function () {\n this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n };\n /**\n *Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.preRender = function () {\n var _this = this;\n this.initializeValue();\n this.headerContent = null;\n this.allowMaxHeight = true;\n this.preventVisibility = true;\n this.clonedEle = this.element.cloneNode(true);\n this.closeIconClickEventHandler = function (event) {\n _this.dlgClosedBy = DLG_CLOSE_ICON_CLOSED;\n _this.hide(event);\n };\n this.dlgOverlayClickEventHandler = function (event) {\n _this.dlgClosedBy = DLG_OVERLAYCLICK_CLOSED;\n event.preventFocus = false;\n _this.trigger('overlayClick', event, function (overlayClickEventArgs) {\n if (!overlayClickEventArgs.preventFocus) {\n _this.focusContent();\n }\n _this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n });\n };\n var localeText = {\n close: 'Close'\n };\n this.l10n = new L10n('dialog', localeText, this.locale);\n this.checkPositionData();\n if (isNullOrUndefined(this.target)) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.target = document.body;\n this.isProtectedOnChange = prevOnChange;\n }\n };\n Dialog.prototype.updatePersistData = function () {\n if (this.enablePersistence) {\n this.setProperties({\n width: parseFloat(this.element.style.width),\n height: parseFloat(this.element.style.height),\n position: {\n X: parseFloat(this.dragObj.element.style.left),\n Y: parseFloat(this.dragObj.element.style.top)\n }\n }, true);\n }\n };\n Dialog.prototype.isNumberValue = function (value) {\n var isNumber = /^[-+]?\\d*\\.?\\d+$/.test(value);\n return isNumber;\n };\n Dialog.prototype.checkPositionData = function () {\n if (!isNullOrUndefined(this.position)) {\n if (!isNullOrUndefined(this.position.X) && typeof this.position.X !== 'number') {\n var isNumber = this.isNumberValue(this.position.X);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.X = parseFloat(this.position.X);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n if (!isNullOrUndefined(this.position.Y) && typeof this.position.Y !== 'number') {\n var isNumber = this.isNumberValue(this.position.Y);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.Y = parseFloat(this.position.Y);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n }\n };\n Dialog.prototype.getEle = function (list, selector) {\n var element = undefined;\n for (var i = 0; i < list.length; i++) {\n if (list[i].classList.contains(selector)) {\n element = list[i];\n break;\n }\n }\n return element;\n };\n /* istanbul ignore next */\n Dialog.prototype.getMinHeight = function () {\n var computedHeaderHeight = '0px';\n var computedFooterHeight = '0px';\n if (!isNullOrUndefined(this.element.querySelector('.' + DLG_HEADER_CONTENT))) {\n computedHeaderHeight = getComputedStyle(this.headerContent).height;\n }\n var footerEle = this.getEle(this.element.children, DLG_FOOTER_CONTENT);\n if (!isNullOrUndefined(footerEle)) {\n computedFooterHeight = getComputedStyle(footerEle).height;\n }\n var headerHeight = parseInt(computedHeaderHeight.slice(0, computedHeaderHeight.indexOf('p')), 10);\n var footerHeight = parseInt(computedFooterHeight.slice(0, computedFooterHeight.indexOf('p')), 10);\n setMinHeight(headerHeight + 30 + (isNaN(footerHeight) ? 0 : footerHeight));\n return headerHeight + 30 + footerHeight;\n };\n Dialog.prototype.onResizeStart = function (args, dialogObj) {\n dialogObj.trigger('resizeStart', args);\n if (!args.cancel && this.isModelResize && !isNullOrUndefined(this.dlgContainer) && this.dlgContainer.classList.contains('e-dlg-' + this.position.X + '-' + this.position.Y)) {\n this.setPopupPosition();\n this.dlgContainer.classList.remove('e-dlg-' + this.position.X + '-' + this.position.Y);\n var targetType = this.getTargetContainer(this.target);\n if (targetType instanceof Element) {\n var computedStyle = window.getComputedStyle(targetType);\n if (computedStyle.getPropertyValue('direction') === 'rtl') {\n this.element.style.position = 'absolute';\n } else {\n this.element.style.position = 'relative';\n }\n } else {\n this.element.style.position = 'relative';\n }\n if (this.element.classList.contains(DLG_RESTRICT_LEFT_VALUE)) {\n this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n }\n this.isModelResize = false;\n }\n return args.cancel;\n };\n Dialog.prototype.onResizing = function (args, dialogObj) {\n dialogObj.trigger('resizing', args);\n };\n Dialog.prototype.onResizeComplete = function (args, dialogObj) {\n dialogObj.trigger('resizeStop', args);\n this.updatePersistData();\n };\n Dialog.prototype.setResize = function () {\n if (this.enableResize) {\n this.element.classList.add(DLG_RESIZABLE);\n var computedHeight = getComputedStyle(this.element).minHeight;\n var computedWidth = getComputedStyle(this.element).minWidth;\n var direction = '';\n for (var i = 0; i < this.resizeHandles.length; i++) {\n if (this.resizeHandles[i] === 'All') {\n direction = 'south north east west north-east north-west south-east south-west';\n break;\n } else {\n var directionValue = '';\n switch (this.resizeHandles[i].toString()) {\n case 'SouthEast':\n directionValue = 'south-east';\n break;\n case 'SouthWest':\n directionValue = 'south-west';\n break;\n case 'NorthEast':\n directionValue = 'north-east';\n break;\n case 'NorthWest':\n directionValue = 'north-west';\n break;\n default:\n directionValue = this.resizeHandles[i].toString();\n break;\n }\n direction += directionValue.toLocaleLowerCase() + ' ';\n }\n }\n if (this.enableRtl && direction.trim() === 'south-east') {\n direction = 'south-west';\n } else if (this.enableRtl && direction.trim() === 'south-west') {\n direction = 'south-east';\n }\n if (this.isModal && this.enableRtl) {\n this.element.classList.add(DLG_RESTRICT_LEFT_VALUE);\n } else if (this.isModal && this.target === document.body) {\n this.element.classList.add(DLG_RESTRICT_WIDTH_VALUE);\n }\n createResize({\n element: this.element,\n direction: direction,\n minHeight: parseInt(computedHeight.slice(0, computedWidth.indexOf('p')), 10),\n maxHeight: this.targetEle.clientHeight,\n minWidth: parseInt(computedWidth.slice(0, computedWidth.indexOf('p')), 10),\n maxWidth: this.targetEle.clientWidth,\n boundary: this.target === document.body ? null : this.targetEle,\n resizeBegin: this.onResizeStart.bind(this),\n resizeComplete: this.onResizeComplete.bind(this),\n resizing: this.onResizing.bind(this),\n proxy: this\n });\n this.wireWindowResizeEvent();\n } else {\n removeResize();\n this.unWireWindowResizeEvent();\n if (this.isModal) {\n this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n } else {\n this.element.classList.remove(DLG_RESTRICT_WIDTH_VALUE);\n }\n this.element.classList.remove(DLG_RESIZABLE);\n }\n };\n Dialog.prototype.getFocusElement = function (target) {\n var value = 'input,select,textarea,button:enabled,a,[contenteditable=\"true\"],[tabindex]';\n var items = target.querySelectorAll(value);\n return {\n element: items[items.length - 1]\n };\n };\n /* istanbul ignore next */\n Dialog.prototype.keyDown = function (event) {\n var _this = this;\n if (event.keyCode === 9) {\n if (this.isModal) {\n var buttonObj = void 0;\n if (!isNullOrUndefined(this.btnObj)) {\n buttonObj = this.btnObj[this.btnObj.length - 1];\n }\n if (isNullOrUndefined(this.btnObj) && !isNullOrUndefined(this.ftrTemplateContent)) {\n buttonObj = this.getFocusElement(this.ftrTemplateContent);\n }\n if (isNullOrUndefined(this.btnObj) && isNullOrUndefined(this.ftrTemplateContent) && !isNullOrUndefined(this.contentEle)) {\n buttonObj = this.getFocusElement(this.contentEle);\n }\n if (!isNullOrUndefined(buttonObj) && document.activeElement === buttonObj.element && !event.shiftKey) {\n event.preventDefault();\n this.focusableElements(this.element).focus();\n }\n if (document.activeElement === this.focusableElements(this.element) && event.shiftKey) {\n event.preventDefault();\n if (!isNullOrUndefined(buttonObj)) {\n buttonObj.element.focus();\n }\n }\n }\n }\n var element = document.activeElement;\n var isTagName = ['input', 'textarea'].indexOf(element.tagName.toLowerCase()) > -1;\n var isContentEdit = false;\n if (!isTagName) {\n isContentEdit = element.hasAttribute('contenteditable') && element.getAttribute('contenteditable') === 'true';\n }\n if (event.keyCode === 27 && this.closeOnEscape) {\n this.dlgClosedBy = DLG_ESCAPE_CLOSED;\n var query = document.querySelector('.e-popup-open:not(.e-dialog)');\n // 'document.querySelector' is used to find the elements rendered based on body\n if (!(!isNullOrUndefined(query) && !query.classList.contains('e-toolbar-pop') && !query.classList.contains('e-slider-tooltip'))) {\n this.hide(event);\n }\n }\n if (event.keyCode === 13 && !event.ctrlKey && element.tagName.toLowerCase() !== 'textarea' && isTagName && !isNullOrUndefined(this.primaryButtonEle) || event.keyCode === 13 && event.ctrlKey && (element.tagName.toLowerCase() === 'textarea' || isContentEdit) && !isNullOrUndefined(this.primaryButtonEle)) {\n var buttonIndex_1;\n var firstPrimary = this.buttons.some(function (data, index) {\n buttonIndex_1 = index;\n var buttonModel = data.buttonModel;\n return !isNullOrUndefined(buttonModel) && buttonModel.isPrimary === true;\n });\n if (firstPrimary && typeof this.buttons[buttonIndex_1].click === 'function' && !this.primaryButtonEle.disabled) {\n setTimeout(function () {\n _this.buttons[buttonIndex_1].click.call(_this, event);\n });\n }\n }\n };\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.initialize = function () {\n if (!isNullOrUndefined(this.target)) {\n this.targetEle = typeof this.target === 'string' ? document.querySelector(this.target) : this.target;\n }\n if (!this.isBlazorServerRender()) {\n addClass([this.element], ROOT);\n }\n if (Browser.isDevice) {\n addClass([this.element], DEVICE);\n }\n if (!this.isBlazorServerRender()) {\n this.setCSSClass();\n }\n this.setMaxHeight();\n };\n /**\n * Initialize the rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.initRender = function () {\n var _this = this;\n this.initialRender = true;\n if (!this.isBlazorServerRender()) {\n attributes(this.element, {\n role: 'dialog'\n });\n }\n if (this.zIndex === 1000) {\n this.setzIndex(this.element, false);\n this.calculatezIndex = true;\n } else {\n this.calculatezIndex = false;\n }\n this.setTargetContent();\n if (this.header !== '' && !isNullOrUndefined(this.header)) {\n this.setHeader();\n }\n this.renderCloseIcon();\n this.setContent();\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setFooterTemplate();\n } else if (!isNullOrUndefined(this.buttons[0]) && !isNullOrUndefined(this.buttons[0].buttonModel)) {\n this.setButton();\n }\n if (this.allowDragging && !isNullOrUndefined(this.headerContent)) {\n this.setAllowDragging();\n }\n attributes(this.element, {\n 'aria-modal': this.isModal ? 'true' : 'false'\n });\n if (this.isModal) {\n this.setIsModal();\n }\n if (this.element.classList.contains(DLG_UTIL_ALERT) !== true && this.element.classList.contains(DLG_UTIL_CONFIRM) !== true && !isNullOrUndefined(this.element.parentElement)) {\n var parentEle = this.isModal ? this.dlgContainer.parentElement : this.element.parentElement;\n this.refElement = this.createElement('div', {\n className: DLG_REF_ELEMENT\n });\n parentEle.insertBefore(this.refElement, this.isModal ? this.dlgContainer : this.element);\n }\n if (!isNullOrUndefined(this.targetEle)) {\n if (this.isModal) {\n this.targetEle.appendChild(this.dlgContainer);\n } else {\n this.targetEle.appendChild(this.element);\n }\n }\n this.popupObj = new Popup(this.element, {\n height: this.height,\n width: this.width,\n zIndex: this.zIndex,\n relateTo: this.target,\n actionOnScroll: 'none',\n enableRtl: this.enableRtl,\n // eslint-disable-next-line\n open: function (event) {\n var eventArgs = {\n container: _this.isModal ? _this.dlgContainer : _this.element,\n element: _this.element,\n target: _this.target,\n preventFocus: false\n };\n if (_this.enableResize) {\n _this.resetResizeIcon();\n }\n _this.trigger('open', eventArgs, function (openEventArgs) {\n if (!openEventArgs.preventFocus) {\n _this.focusContent();\n }\n });\n },\n // eslint-disable-next-line\n close: function (event) {\n if (_this.isModal) {\n addClass([_this.dlgOverlay], 'e-fade');\n }\n _this.unBindEvent(_this.element);\n if (_this.isModal) {\n _this.dlgContainer.style.display = 'none';\n }\n _this.trigger('close', _this.closeArgs);\n var activeEle = document.activeElement;\n if (!isNullOrUndefined(activeEle) && !isNullOrUndefined(activeEle.blur)) {\n activeEle.blur();\n }\n if (!isNullOrUndefined(_this.storeActiveElement) && !isNullOrUndefined(_this.storeActiveElement.focus)) {\n _this.storeActiveElement.focus();\n }\n }\n });\n this.positionChange();\n this.setEnableRTL();\n if (!this.isBlazorServerRender()) {\n addClass([this.element], DLG_HIDE);\n if (this.isModal) {\n this.setOverlayZindex();\n }\n }\n if (this.visible) {\n this.show();\n if (this.isModal) {\n var targetType = this.getTargetContainer(this.target);\n if (targetType instanceof Element) {\n var computedStyle = window.getComputedStyle(targetType);\n if (computedStyle.getPropertyValue('direction') === 'rtl') {\n this.setPopupPosition();\n }\n }\n }\n } else {\n if (this.isModal) {\n this.dlgOverlay.style.display = 'none';\n }\n }\n this.initialRender = false;\n };\n Dialog.prototype.getTargetContainer = function (targetValue) {\n var targetElement = null;\n if (typeof targetValue === 'string') {\n if (targetValue.startsWith('#')) {\n targetElement = document.getElementById(targetValue.substring(1));\n } else if (targetValue.startsWith('.')) {\n var elements = document.getElementsByClassName(targetValue.substring(1));\n targetElement = elements.length > 0 ? elements[0] : null;\n } else {\n if (!(targetValue instanceof HTMLElement) && targetValue !== document.body) {\n targetElement = document.querySelector(targetValue);\n }\n }\n } else if (targetValue instanceof HTMLElement) {\n targetElement = targetValue;\n }\n return targetElement;\n };\n Dialog.prototype.resetResizeIcon = function () {\n var dialogConHeight = this.getMinHeight();\n if (this.targetEle.offsetHeight < dialogConHeight) {\n var className = this.enableRtl ? 'e-south-west' : 'e-south-east';\n var resizeIcon = this.element.querySelector('.' + className);\n if (!isNullOrUndefined(resizeIcon)) {\n resizeIcon.style.bottom = '-' + dialogConHeight.toString() + 'px';\n }\n }\n };\n Dialog.prototype.setOverlayZindex = function (zIndexValue) {\n var zIndex;\n if (isNullOrUndefined(zIndexValue)) {\n zIndex = parseInt(this.element.style.zIndex, 10) ? parseInt(this.element.style.zIndex, 10) : this.zIndex;\n } else {\n zIndex = zIndexValue;\n }\n this.dlgOverlay.style.zIndex = (zIndex - 1).toString();\n this.dlgContainer.style.zIndex = zIndex.toString();\n };\n Dialog.prototype.positionChange = function () {\n if (this.isModal) {\n if (!isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y))) {\n this.setPopupPosition();\n } else if (!isNaN(parseFloat(this.position.X)) && isNaN(parseFloat(this.position.Y)) || isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y))) {\n this.setPopupPosition();\n } else {\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n this.dlgContainer.classList.add('e-dlg-' + this.position.X + '-' + this.position.Y);\n }\n } else {\n this.setPopupPosition();\n }\n };\n Dialog.prototype.setPopupPosition = function () {\n this.popupObj.setProperties({\n position: {\n X: this.position.X,\n Y: this.position.Y\n }\n });\n };\n Dialog.prototype.setAllowDragging = function () {\n var _this = this;\n var handleContent = '.' + DLG_HEADER_CONTENT;\n if (!this.element.classList.contains(DLG_DRAG)) {\n this.dragObj = new Draggable(this.element, {\n clone: false,\n isDragScroll: true,\n abort: '.e-dlg-closeicon-btn',\n handle: handleContent,\n dragStart: function (event) {\n _this.trigger('dragStart', event, function (dragEventArgs) {\n if (isBlazor()) {\n dragEventArgs.bindEvents(event.dragElement);\n }\n });\n },\n dragStop: function (event) {\n if (_this.isModal) {\n _this.IsDragStop = true;\n if (!isNullOrUndefined(_this.position)) {\n _this.dlgContainer.classList.remove('e-dlg-' + _this.position.X + '-' + _this.position.Y);\n }\n // Reset the dialog position after drag completion.\n var targetType = _this.getTargetContainer(_this.target);\n if (targetType instanceof Element) {\n var computedStyle = window.getComputedStyle(targetType);\n if (computedStyle.getPropertyValue('direction') === 'rtl') {\n _this.element.style.position = 'absolute';\n } else {\n _this.element.style.position = 'relative';\n }\n } else {\n _this.element.style.position = 'relative';\n }\n }\n _this.trigger('dragStop', event);\n _this.isModelResize = false;\n _this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n _this.updatePersistData();\n },\n drag: function (event) {\n _this.trigger('drag', event);\n }\n });\n if (!isNullOrUndefined(this.targetEle)) {\n this.dragObj.dragArea = this.targetEle;\n }\n }\n };\n Dialog.prototype.setButton = function () {\n if (!this.isBlazorServerRender()) {\n this.buttonContent = [];\n this.btnObj = [];\n for (var i = 0; i < this.buttons.length; i++) {\n if (isNullOrUndefined(this.buttons[i].buttonModel)) {\n continue;\n }\n var buttonType = !isNullOrUndefined(this.buttons[i].type) ? this.buttons[i].type.toLowerCase() : 'button';\n var btn = this.createElement('button', {\n className: this.cssClass,\n attrs: {\n type: buttonType,\n tabindex: '0'\n }\n });\n this.buttonContent.push(btn.outerHTML);\n }\n this.setFooterTemplate();\n }\n var footerBtn;\n for (var i = 0, childNodes = this.element.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(DLG_FOOTER_CONTENT)) {\n footerBtn = childNodes[i].querySelectorAll('button');\n }\n }\n for (var i = 0; i < this.buttons.length; i++) {\n if (isNullOrUndefined(this.buttons[i].buttonModel)) {\n continue;\n }\n if (!this.isBlazorServerRender()) {\n this.btnObj[i] = new Button(this.buttons[i].buttonModel);\n }\n if (!isNullOrUndefined(this.ftrTemplateContent) && footerBtn.length > 0) {\n if (typeof this.buttons[i].click === 'function') {\n EventHandler.add(footerBtn[i], 'click', this.buttons[i].click, this);\n }\n if (typeof this.buttons[i].click === 'object') {\n EventHandler.add(footerBtn[i], 'click', this.buttonClickHandler.bind(this, i), this);\n }\n }\n if (!this.isBlazorServerRender() && !isNullOrUndefined(this.ftrTemplateContent)) {\n this.btnObj[i].appendTo(this.ftrTemplateContent.children[i]);\n if (this.buttons[i].isFlat) {\n this.btnObj[i].element.classList.add('e-flat');\n }\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n }\n };\n Dialog.prototype.buttonClickHandler = function (index) {\n this.trigger('buttons[' + index + '].click', {});\n };\n Dialog.prototype.setContent = function () {\n this.contentEle = this.createElement('div', {\n className: DLG_CONTENT,\n id: this.element.id + '_dialog-content'\n });\n if (this.headerEle) {\n attributes(this.element, {\n 'aria-describedby': this.element.id + '_title' + ' ' + this.element.id + '_dialog-content'\n });\n } else {\n attributes(this.element, {\n 'aria-describedby': this.element.id + '_dialog-content'\n });\n }\n if (this.innerContentElement) {\n this.contentEle.appendChild(this.innerContentElement);\n } else if (!isNullOrUndefined(this.content) && this.content !== '' || !this.initialRender) {\n if (typeof this.content === 'string' && !isBlazor()) {\n this.setTemplate(this.content, this.contentEle, 'content');\n } else if (this.content instanceof HTMLElement) {\n this.contentEle.appendChild(this.content);\n } else {\n this.setTemplate(this.content, this.contentEle, 'content');\n }\n }\n if (!isNullOrUndefined(this.headerContent)) {\n this.element.insertBefore(this.contentEle, this.element.children[1]);\n } else {\n this.element.insertBefore(this.contentEle, this.element.children[0]);\n }\n if (this.height === 'auto') {\n if (!this.isBlazorServerRender() && Browser.isIE && this.element.style.width === '' && !isNullOrUndefined(this.width)) {\n this.element.style.width = formatUnit(this.width);\n }\n this.setMaxHeight();\n }\n };\n Dialog.prototype.setTemplate = function (template, toElement, prop) {\n var templateFn;\n var templateProps;\n if (toElement.classList.contains(DLG_HEADER)) {\n templateProps = this.element.id + 'header';\n } else if (toElement.classList.contains(DLG_FOOTER_CONTENT)) {\n templateProps = this.element.id + 'footerTemplate';\n } else {\n templateProps = this.element.id + 'content';\n }\n var templateValue;\n if (!isNullOrUndefined(template.outerHTML)) {\n toElement.appendChild(template);\n } else if (typeof template === 'string' || typeof template !== 'string' || isBlazor() && !this.isStringTemplate) {\n if (typeof template === 'string') {\n template = this.sanitizeHelper(template);\n }\n if (this.isVue || typeof template !== 'string') {\n templateFn = compile(template);\n templateValue = template;\n } else {\n toElement.innerHTML = template;\n }\n }\n var fromElements = [];\n if (!isNullOrUndefined(templateFn)) {\n var isString = isBlazor() && !this.isStringTemplate && templateValue.indexOf('<div>Blazor') === 0 ? this.isStringTemplate : true;\n for (var _i = 0, _a = templateFn({}, this, prop, templateProps, isString); _i < _a.length; _i++) {\n var item = _a[_i];\n fromElements.push(item);\n }\n append([].slice.call(fromElements), toElement);\n }\n };\n /*\n * @returns {void}\n * @hidden\n * @value\n */\n Dialog.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var dialogItem = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(dialogItem, dialogItem, beforeEvent);\n this.trigger('beforeSanitizeHtml', dialogItem);\n if (dialogItem.cancel && !isNullOrUndefined(dialogItem.helper)) {\n value = dialogItem.helper(value);\n } else if (!dialogItem.cancel) {\n value = SanitizeHtmlHelper.serializeValue(dialogItem, value);\n }\n }\n return value;\n };\n Dialog.prototype.setMaxHeight = function () {\n if (!this.allowMaxHeight) {\n return;\n }\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = !isNullOrUndefined(this.target) && this.targetEle.offsetHeight < window.innerHeight ? this.targetEle.offsetHeight - 20 + 'px' : window.innerHeight - 20 + 'px';\n this.element.style.display = display;\n if (Browser.isIE && this.height === 'auto' && !isNullOrUndefined(this.contentEle) && this.element.offsetHeight < this.contentEle.offsetHeight) {\n this.element.style.height = 'inherit';\n }\n };\n Dialog.prototype.setEnableRTL = function () {\n if (!this.isBlazorServerRender()) {\n if (this.enableRtl) {\n addClass([this.element], RTL);\n } else {\n removeClass([this.element], RTL);\n }\n }\n if (!isNullOrUndefined(this.element.querySelector('.e-resize-handle'))) {\n removeResize();\n this.setResize();\n }\n };\n Dialog.prototype.setTargetContent = function () {\n var _this = this;\n if (isNullOrUndefined(this.content) || this.content === '') {\n var isContent = this.element.innerHTML.replace(/\\s|<(\\/?|\\/?)(!--!--)>/g, '') !== '';\n if (this.element.children.length > 0 || isContent) {\n this.innerContentElement = document.createDocumentFragment();\n [].slice.call(this.element.childNodes).forEach(function (el) {\n if (el.nodeType !== 8) {\n _this.innerContentElement.appendChild(el);\n }\n });\n }\n }\n };\n Dialog.prototype.setHeader = function () {\n if (this.headerEle) {\n this.headerEle.innerHTML = '';\n } else {\n this.headerEle = this.createElement('div', {\n id: this.element.id + '_title',\n className: DLG_HEADER\n });\n }\n this.createHeaderContent();\n this.headerContent.appendChild(this.headerEle);\n this.setTemplate(this.header, this.headerEle, 'header');\n attributes(this.element, {\n 'aria-describedby': this.element.id + '_title'\n });\n attributes(this.element, {\n 'aria-labelledby': this.element.id + '_dialog-header'\n });\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n if (this.allowDragging && !isNullOrUndefined(this.headerContent)) {\n this.setAllowDragging();\n }\n };\n Dialog.prototype.setFooterTemplate = function () {\n if (this.ftrTemplateContent) {\n this.ftrTemplateContent.innerHTML = '';\n } else {\n this.ftrTemplateContent = this.createElement('div', {\n className: DLG_FOOTER_CONTENT\n });\n }\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setTemplate(this.footerTemplate, this.ftrTemplateContent, 'footerTemplate');\n } else {\n this.ftrTemplateContent.innerHTML = this.buttonContent.join('');\n }\n this.element.appendChild(this.ftrTemplateContent);\n };\n Dialog.prototype.createHeaderContent = function () {\n if (isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.createElement('div', {\n id: this.element.id + '_dialog-header',\n className: DLG_HEADER_CONTENT\n });\n }\n };\n Dialog.prototype.renderCloseIcon = function () {\n if (this.showCloseIcon) {\n this.closeIcon = this.createElement('button', {\n className: DLG_CLOSE_ICON_BTN,\n attrs: {\n type: 'button'\n }\n });\n this.closeIconBtnObj = new Button({\n cssClass: 'e-flat',\n iconCss: DLG_CLOSE_ICON + ' ' + ICON\n });\n this.closeIconTitle();\n if (!isNullOrUndefined(this.headerContent)) {\n prepend([this.closeIcon], this.headerContent);\n } else {\n this.createHeaderContent();\n prepend([this.closeIcon], this.headerContent);\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n }\n this.closeIconBtnObj.appendTo(this.closeIcon);\n }\n };\n Dialog.prototype.closeIconTitle = function () {\n this.l10n.setLocale(this.locale);\n var closeIconTitle = this.l10n.getConstant('close');\n this.closeIcon.setAttribute('title', closeIconTitle);\n this.closeIcon.setAttribute('aria-label', closeIconTitle);\n };\n Dialog.prototype.setCSSClass = function (oldCSSClass) {\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n if (this.isModal && !isNullOrUndefined(this.dlgContainer)) {\n removeClass([this.dlgContainer], oldCSSClass.split(' '));\n }\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n if (this.isModal && !isNullOrUndefined(this.dlgContainer)) {\n addClass([this.dlgContainer], this.cssClass.split(' '));\n }\n }\n };\n Dialog.prototype.setIsModal = function () {\n this.dlgContainer = this.createElement('div', {\n className: DLG_CONTAINER\n });\n this.setCSSClass();\n this.element.classList.remove(DLG_SHOW);\n this.element.parentNode.insertBefore(this.dlgContainer, this.element);\n this.dlgContainer.appendChild(this.element);\n addClass([this.element], MODAL_DLG);\n this.dlgOverlay = this.createElement('div', {\n className: DLG_OVERLAY\n });\n this.dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.dlgContainer.appendChild(this.dlgOverlay);\n };\n Dialog.prototype.getValidFocusNode = function (items) {\n var node;\n for (var u = 0; u < items.length; u++) {\n node = items[u];\n if ((node.clientHeight > 0 || node.tagName.toLowerCase() === 'a' && node.hasAttribute('href')) && node.tabIndex > -1 && !node.disabled && !this.disableElement(node, '[disabled],[aria-disabled=\"true\"],[type=\"hidden\"]')) {\n return node;\n } else {\n node = null;\n }\n }\n return node;\n };\n Dialog.prototype.focusableElements = function (content) {\n if (!isNullOrUndefined(content)) {\n var value = 'input,select,textarea,button,a,[contenteditable=\"true\"],[tabindex]';\n var items = content.querySelectorAll(value);\n return this.getValidFocusNode(items);\n }\n return null;\n };\n Dialog.prototype.getAutoFocusNode = function (container) {\n var node = container.querySelector('.' + DLG_CLOSE_ICON_BTN);\n var value = '[autofocus]';\n var items = container.querySelectorAll(value);\n var validNode = this.getValidFocusNode(items);\n if (isBlazor()) {\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n if (!isNullOrUndefined(validNode)) {\n node = validNode;\n } else {\n validNode = this.focusableElements(this.contentEle);\n if (!isNullOrUndefined(validNode)) {\n return node = validNode;\n } else if (!isNullOrUndefined(this.primaryButtonEle)) {\n return this.element.querySelector('.' + DLG_PRIMARY_BUTTON);\n }\n }\n return node;\n };\n Dialog.prototype.disableElement = function (element, t) {\n var elementMatch = element ? element.matches || element.webkitMatchesSelector || element.msGetRegionContent : null;\n if (elementMatch) {\n for (; element; element = element.parentNode) {\n if (element instanceof Element && elementMatch.call(element, t)) {\n /* istanbul ignore next */\n return element;\n }\n }\n }\n return null;\n };\n Dialog.prototype.focusContent = function () {\n var element = this.getAutoFocusNode(this.element);\n var node = !isNullOrUndefined(element) ? element : this.element;\n var userAgent = Browser.userAgent;\n if (userAgent.indexOf('MSIE ') > 0 || userAgent.indexOf('Trident/') > 0) {\n this.element.focus();\n }\n node.focus();\n this.unBindEvent(this.element);\n this.bindEvent(this.element);\n };\n Dialog.prototype.bindEvent = function (element) {\n EventHandler.add(element, 'keydown', this.keyDown, this);\n };\n Dialog.prototype.unBindEvent = function (element) {\n EventHandler.remove(element, 'keydown', this.keyDown);\n };\n Dialog.prototype.updateSanitizeContent = function () {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = this.sanitizeHelper(this.content);\n }\n };\n Dialog.prototype.isBlazorServerRender = function () {\n return isBlazor() && this.isServerRendered;\n };\n /**\n * Module required function\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.getModuleName = function () {\n return 'dialog';\n };\n /**\n * Called internally if any of the property value changed\n *\n * @param {DialogModel} newProp - specifies the new property\n * @param {DialogModel} oldProp - specifies the old property\n * @private\n * @returns {void}\n */\n Dialog.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (!isNullOrUndefined(this.content) && this.content !== '') {\n if (this.isBlazorServerRender()) {\n this.contentEle = this.element.querySelector('.e-dlg-content');\n }\n if (!isNullOrUndefined(this.contentEle) && this.contentEle.getAttribute('role') !== 'dialog') {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = '';\n }\n if (typeof this.content === 'function') {\n this.clearTemplate(['content']);\n detach(this.contentEle);\n this.contentEle = null;\n this.setContent();\n } else {\n if (typeof this.content === 'string') {\n this.updateSanitizeContent();\n } else {\n this.contentEle.appendChild(this.content);\n }\n }\n this.setMaxHeight();\n } else {\n this.setContent();\n }\n } else if (!isNullOrUndefined(this.contentEle)) {\n detach(this.contentEle);\n this.contentEle = null;\n }\n break;\n case 'header':\n if (this.header === '' || isNullOrUndefined(this.header)) {\n if (this.headerEle) {\n detach(this.headerEle);\n this.headerEle = null;\n }\n } else {\n this.setHeader();\n }\n break;\n case 'footerTemplate':\n if (this.footerTemplate === '' || isNullOrUndefined(this.footerTemplate)) {\n if (!this.ftrTemplateContent) {\n return;\n }\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n this.buttons = [{}];\n } else {\n this.setFooterTemplate();\n this.buttons = [{}];\n }\n break;\n case 'showCloseIcon':\n if (this.element.getElementsByClassName(DLG_CLOSE_ICON).length > 0) {\n if (!this.showCloseIcon && (this.header === '' || isNullOrUndefined(this.header))) {\n detach(this.headerContent);\n this.headerContent = null;\n } else if (!this.showCloseIcon) {\n detach(this.closeIcon);\n }\n } else {\n this.renderCloseIcon();\n this.wireEvents();\n }\n break;\n case 'locale':\n if (this.showCloseIcon) {\n this.closeIconTitle();\n }\n break;\n case 'visible':\n if (this.visible) {\n this.show();\n } else {\n this.hide();\n }\n break;\n case 'isModal':\n this.updateIsModal();\n break;\n case 'height':\n setStyleAttribute(this.element, {\n 'height': formatUnit(newProp.height)\n });\n this.updatePersistData();\n break;\n case 'width':\n setStyleAttribute(this.element, {\n 'width': formatUnit(newProp.width)\n });\n this.updatePersistData();\n break;\n case 'zIndex':\n this.popupObj.zIndex = this.zIndex;\n if (this.isModal) {\n this.setOverlayZindex(this.zIndex);\n }\n if (this.element.style.zIndex !== this.zIndex.toString()) {\n this.calculatezIndex = false;\n }\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'buttons':\n {\n this.unWireButtonEvents();\n this.destroyButtons();\n if (!isNullOrUndefined(this.ftrTemplateContent)) {\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n }\n this.footerTemplate = '';\n this.setButton();\n break;\n }\n case 'allowDragging':\n if (this.allowDragging && !isNullOrUndefined(this.headerContent)) {\n this.setAllowDragging();\n } else {\n this.dragObj.destroy();\n }\n break;\n case 'target':\n this.setTarget(newProp.target);\n break;\n case 'position':\n this.checkPositionData();\n if (this.isModal) {\n var positionX = this.position.X;\n var positionY = this.position.Y;\n if (!isNullOrUndefined(oldProp.position)) {\n if (!isNullOrUndefined(oldProp.position.X)) {\n positionX = oldProp.position.X;\n }\n if (!isNullOrUndefined(oldProp.position.Y)) {\n positionY = oldProp.position.Y;\n }\n }\n if (this.dlgContainer.classList.contains('e-dlg-' + positionX + '-' + positionY)) {\n this.dlgContainer.classList.remove('e-dlg-' + positionX + '-' + positionY);\n }\n }\n this.positionChange();\n this.updatePersistData();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'enableResize':\n this.setResize();\n this.isModelResize = this.enableResize && this.isModal;\n if (this.enableResize && this.dialogOpen) {\n this.resetResizeIcon();\n }\n break;\n case 'minHeight':\n if (this.minHeight !== '') {\n this.element.style.minHeight = formatUnit(this.minHeight);\n }\n break;\n }\n }\n };\n Dialog.prototype.setTarget = function (target) {\n this.popupObj.relateTo = target;\n this.target = target;\n this.targetEle = typeof this.target === 'string' ? document.querySelector(this.target) : this.target;\n if (this.dragObj) {\n this.dragObj.dragArea = this.targetEle;\n }\n this.setMaxHeight();\n if (this.isModal) {\n this.updateIsModal();\n }\n if (this.enableResize) {\n this.setResize();\n }\n if (!isNullOrUndefined(this.targetEle)) {\n if (this.isModal && !isNullOrUndefined(this.dlgContainer)) {\n this.targetEle.appendChild(this.dlgContainer);\n } else if (!isNullOrUndefined(this.element)) {\n this.targetEle.appendChild(this.element);\n }\n }\n };\n Dialog.prototype.updateIsModal = function () {\n this.element.setAttribute('aria-modal', this.isModal ? 'true' : 'false');\n if (this.isModal) {\n if (isNullOrUndefined(this.dlgOverlay)) {\n this.setIsModal();\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n if (!isNullOrUndefined(this.targetEle)) {\n this.targetEle.appendChild(this.dlgContainer);\n }\n }\n } else {\n removeClass([this.element], MODAL_DLG);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n detach(this.dlgOverlay);\n while (this.dlgContainer.firstChild) {\n this.dlgContainer.parentElement.insertBefore(this.dlgContainer.firstChild, this.dlgContainer);\n }\n this.dlgContainer.parentElement.removeChild(this.dlgContainer);\n }\n if (this.visible) {\n this.show();\n }\n this.positionChange();\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n Dialog.prototype.setzIndex = function (zIndexElement, setPopupZindex) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n var currentzIndex = getZindexPartial(zIndexElement);\n this.zIndex = currentzIndex > this.zIndex ? currentzIndex : this.zIndex;\n this.isProtectedOnChange = prevOnChange;\n if (setPopupZindex) {\n this.popupObj.zIndex = this.zIndex;\n }\n };\n Dialog.prototype.windowResizeHandler = function () {\n setMaxWidth(this.targetEle.clientWidth);\n setMaxHeight(this.targetEle.clientHeight);\n this.setMaxHeight();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.getPersistData = function () {\n return this.addOnPersist(['width', 'height', 'position']);\n };\n Dialog.prototype.removeAllChildren = function (element) {\n while (element.children[0]) {\n this.removeAllChildren(element.children[0]);\n element.removeChild(element.children[0]);\n }\n };\n /**\n * To destroy the widget\n *\n * @returns {void}\n */\n Dialog.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n var classArray = [RTL, MODAL_DLG, DLG_RESIZABLE, DLG_RESTRICT_LEFT_VALUE, FULLSCREEN, DEVICE];\n var attrs = ['role', 'aria-modal', 'aria-labelledby', 'aria-describedby', 'aria-grabbed', 'tabindex', 'style'];\n removeClass([this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n if (!isNullOrUndefined(this.element) && this.element.classList.contains(FULLSCREEN)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n if (this.isModal) {\n removeClass([!isNullOrUndefined(this.targetEle) ? this.targetEle : document.body], SCROLL_DISABLED);\n }\n this.unWireEvents();\n this.unWireButtonEvents();\n this.destroyButtons();\n if (!isNullOrUndefined(this.closeIconBtnObj)) {\n this.closeIconBtnObj.destroy();\n }\n if (!isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n if (!isNullOrUndefined(this.popupObj.element) && this.popupObj.element.classList.contains(POPUP_ROOT)) {\n this.popupObj.destroy();\n }\n removeClass([this.element], classArray);\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n removeClass([this.element], this.cssClass.split(' '));\n }\n if (!isNullOrUndefined(this.refElement) && !isNullOrUndefined(this.refElement.parentElement)) {\n this.refElement.parentElement.insertBefore(this.isModal ? this.dlgContainer : this.element, this.refElement);\n detach(this.refElement);\n this.refElement = undefined;\n }\n if (this.isModal) {\n detach(this.dlgOverlay);\n this.dlgContainer.parentNode.insertBefore(this.element, this.dlgContainer);\n detach(this.dlgContainer);\n }\n this.element.innerHTML = this.clonedEle.innerHTML;\n for (var i = 0; i < attrs.length; i++) {\n this.element.removeAttribute(attrs[i]);\n }\n this.ftrTemplateContent = null;\n this.headerContent = null;\n if (!this.isReact && !this.isVue && !isNullOrUndefined(this.contentEle)) {\n this.removeAllChildren(this.contentEle);\n }\n this.contentEle = null;\n resizeDestroy();\n _super.prototype.destroy.call(this);\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n };\n Dialog.prototype.wireWindowResizeEvent = function () {\n this.boundWindowResizeHandler = this.windowResizeHandler.bind(this);\n window.addEventListener('resize', this.boundWindowResizeHandler);\n };\n Dialog.prototype.unWireWindowResizeEvent = function () {\n window.removeEventListener('resize', this.boundWindowResizeHandler);\n this.boundWindowResizeHandler = null;\n };\n /**\n * Binding event to the element while widget creation\n *\n * @returns {void}\n * @hidden\n */\n Dialog.prototype.wireEvents = function () {\n if (this.showCloseIcon) {\n EventHandler.add(this.closeIcon, 'click', this.closeIconClickEventHandler, this);\n }\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n /**\n * Unbinding event to the element while widget destroy\n *\n * @returns {void}\n * @hidden\n */\n Dialog.prototype.unWireEvents = function () {\n if (this.showCloseIcon) {\n EventHandler.remove(this.closeIcon, 'click', this.closeIconClickEventHandler);\n }\n if (this.isModal) {\n EventHandler.remove(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler);\n }\n };\n /**\n * Refreshes the dialog's position when the user changes its header and footer height/width dynamically.\n *\n * @returns {void}\n */\n Dialog.prototype.refreshPosition = function () {\n this.popupObj.refreshPosition();\n if (this.element.classList.contains(MODAL_DLG)) {\n this.positionChange();\n }\n };\n /**\n * Returns the current width and height of the Dialog\n *\n * @returns {DialogDimension}- returns the dialog element Dimension.\n * @public\n */\n Dialog.prototype.getDimension = function () {\n var dialogWidth = this.element.offsetWidth;\n var dialogHeight = this.element.offsetHeight;\n return {\n width: dialogWidth,\n height: dialogHeight\n };\n };\n /**\n * Opens the dialog if it is in hidden state.\n * To open the dialog with full screen width, set the parameter to true.\n *\n * @param { boolean } isFullScreen - Enable the fullScreen Dialog.\n * @returns {void}\n */\n Dialog.prototype.show = function (isFullScreen) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (!this.element.classList.contains(DLG_SHOW) || !isNullOrUndefined(isFullScreen)) {\n if (!isNullOrUndefined(isFullScreen)) {\n this.fullScreen(isFullScreen);\n }\n var eventArgs_1 = isBlazor() ? {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n maxHeight: this.element.style.maxHeight\n } : {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n target: this.target,\n maxHeight: this.element.style.maxHeight\n };\n this.trigger('beforeOpen', eventArgs_1, function (beforeOpenArgs) {\n if (!beforeOpenArgs.cancel) {\n if (_this.element.style.maxHeight !== eventArgs_1.maxHeight) {\n _this.allowMaxHeight = false;\n _this.element.style.maxHeight = eventArgs_1.maxHeight;\n }\n if (_this.enableResize && _this.boundWindowResizeHandler == null && !_this.initialRender) {\n _this.wireWindowResizeEvent();\n }\n _this.storeActiveElement = document.activeElement;\n _this.element.tabIndex = -1;\n if (_this.isModal && !isNullOrUndefined(_this.dlgOverlay)) {\n _this.dlgOverlay.style.display = 'block';\n _this.dlgContainer.style.display = 'flex';\n removeClass([_this.dlgOverlay], 'e-fade');\n if (!isNullOrUndefined(_this.targetEle)) {\n if (_this.targetEle === document.body) {\n _this.dlgContainer.style.position = 'fixed';\n } else {\n _this.dlgContainer.style.position = 'absolute';\n }\n _this.dlgOverlay.style.position = 'absolute';\n var targetType = _this.getTargetContainer(_this.target);\n if (targetType instanceof Element) {\n var computedStyle = window.getComputedStyle(targetType);\n if (computedStyle.getPropertyValue('direction') === 'rtl') {\n _this.element.style.position = 'absolute';\n } else {\n _this.element.style.position = 'relative';\n }\n } else {\n _this.element.style.position = 'relative';\n }\n addClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n } else {\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n var openAnimation = {\n name: _this.animationSettings.effect === 'None' && animationMode === 'Enable' ? 'Zoom' + 'In' : _this.animationSettings.effect + 'In',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n var zIndexElement = _this.isModal ? _this.element.parentElement : _this.element;\n if (_this.calculatezIndex) {\n _this.setzIndex(zIndexElement, true);\n setStyleAttribute(_this.element, {\n 'zIndex': _this.zIndex\n });\n if (_this.isModal) {\n _this.setOverlayZindex(_this.zIndex);\n }\n }\n // eslint-disable-next-line\n _this.animationSettings.effect === 'None' && animationMode === 'Enable' ? _this.popupObj.show(openAnimation) : _this.animationSettings.effect === 'None' ? _this.popupObj.show() : _this.popupObj.show(openAnimation);\n if (_this.isModal) {\n var targetType = _this.getTargetContainer(_this.target);\n if (targetType instanceof Element) {\n var computedStyle = window.getComputedStyle(targetType);\n if (computedStyle.getPropertyValue('direction') === 'rtl' && !_this.IsDragStop) {\n _this.setPopupPosition();\n }\n }\n }\n _this.dialogOpen = true;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = true;\n _this.preventVisibility = true;\n _this.isProtectedOnChange = prevOnChange;\n }\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Closes the dialog if it is in visible state.\n *\n * @param { Event } event - specifies the event\n * @returns {void}\n */\n Dialog.prototype.hide = function (event) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (this.preventVisibility) {\n var eventArgs = isBlazor() ? {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event\n } : {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n target: this.target,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event,\n closedBy: this.dlgClosedBy\n };\n this.closeArgs = eventArgs;\n this.trigger('beforeClose', eventArgs, function (beforeCloseArgs) {\n if (!beforeCloseArgs.cancel) {\n if (_this.enableResize) {\n _this.unWireWindowResizeEvent();\n }\n var closeAnimation = {\n name: _this.animationSettings.effect === 'None' && animationMode === 'Enable' ? 'Zoom' + 'Out' : _this.animationSettings.effect + 'Out',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n if (_this.animationSettings.effect === 'None' && animationMode === 'Enable') {\n _this.popupObj.hide(closeAnimation);\n } else if (_this.animationSettings.effect === 'None') {\n _this.popupObj.hide();\n } else {\n _this.popupObj.hide(closeAnimation);\n }\n setTimeout(function () {\n if (_this.isModal) {\n if (!isNullOrUndefined(_this.targetEle) && _this.targetEle.classList.contains(DLG_TARGET) && _this.targetEle.classList.contains(SCROLL_DISABLED)) {\n removeClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n if (document.body.classList.contains(DLG_TARGET) && document.body.classList.contains(SCROLL_DISABLED)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }, _this.animationSettings.duration + _this.animationSettings.delay);\n _this.dialogOpen = false;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = false;\n _this.preventVisibility = false;\n _this.isProtectedOnChange = prevOnChange;\n }\n _this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n });\n }\n };\n /**\n * Specifies to view the Full screen Dialog.\n *\n * @param {boolean} args - specifies the arguments\n * @returns {boolean} - returns the boolean value\n * @private\n */\n Dialog.prototype.fullScreen = function (args) {\n /* eslint-disable */\n var top = this.element.offsetTop;\n var left = this.element.offsetLeft;\n /* eslint-enable */\n if (args) {\n if (!this.isModal) {\n this.element.style.top = document.scrollingElement.scrollTop + 'px';\n }\n addClass([this.element], FULLSCREEN);\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = !isNullOrUndefined(this.target) ? this.targetEle.offsetHeight + 'px' : window.innerHeight + 'px';\n this.element.style.display = display;\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && !isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n } else {\n removeClass([this.element], FULLSCREEN);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && !isNullOrUndefined(this.headerContent)) {\n this.setAllowDragging();\n }\n }\n return args;\n };\n /**\n * Returns the dialog button instances.\n * Based on that, you can dynamically change the button states.\n *\n * @param { number } index - Index of the button.\n * @returns {Button} - returns the button element\n */\n Dialog.prototype.getButtons = function (index) {\n if (!isNullOrUndefined(index)) {\n return this.btnObj[index];\n }\n return this.btnObj;\n };\n Dialog.prototype.unWireButtonEvents = function () {\n if (this.buttons.length > 0 && this.footerTemplate === '' && this.ftrTemplateContent) {\n for (var i = 0; i < this.buttons.length; i++) {\n if (this.buttons[i].click && typeof this.buttons[i].click === 'function' && this.ftrTemplateContent.children[i]) {\n EventHandler.remove(this.ftrTemplateContent.children[i], 'click', this.buttons[i].click);\n }\n }\n }\n };\n Dialog.prototype.destroyButtons = function () {\n if (!isNullOrUndefined(this.btnObj)) {\n for (var i = 0; i < this.btnObj.length; i++) {\n if (this.btnObj[i] && !this.btnObj[i].isDestroyed) {\n this.btnObj[i].destroy();\n }\n }\n }\n };\n __decorate([Property('')], Dialog.prototype, \"content\", void 0);\n __decorate([Property(true)], Dialog.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([Property(false)], Dialog.prototype, \"enablePersistence\", void 0);\n __decorate([Property(false)], Dialog.prototype, \"showCloseIcon\", void 0);\n __decorate([Property(false)], Dialog.prototype, \"isModal\", void 0);\n __decorate([Property('')], Dialog.prototype, \"header\", void 0);\n __decorate([Property(true)], Dialog.prototype, \"visible\", void 0);\n __decorate([Property(false)], Dialog.prototype, \"enableResize\", void 0);\n __decorate([Property(['South-East'])], Dialog.prototype, \"resizeHandles\", void 0);\n __decorate([Property('auto')], Dialog.prototype, \"height\", void 0);\n __decorate([Property('')], Dialog.prototype, \"minHeight\", void 0);\n __decorate([Property('100%')], Dialog.prototype, \"width\", void 0);\n __decorate([Property('')], Dialog.prototype, \"cssClass\", void 0);\n __decorate([Property(1000)], Dialog.prototype, \"zIndex\", void 0);\n __decorate([Property(null)], Dialog.prototype, \"target\", void 0);\n __decorate([Property('')], Dialog.prototype, \"footerTemplate\", void 0);\n __decorate([Property(false)], Dialog.prototype, \"allowDragging\", void 0);\n __decorate([Collection([{}], ButtonProps)], Dialog.prototype, \"buttons\", void 0);\n __decorate([Property(true)], Dialog.prototype, \"closeOnEscape\", void 0);\n __decorate([Complex({}, AnimationSettings)], Dialog.prototype, \"animationSettings\", void 0);\n __decorate([Complex({\n X: 'center',\n Y: 'center'\n }, PositionData)], Dialog.prototype, \"position\", void 0);\n __decorate([Event()], Dialog.prototype, \"created\", void 0);\n __decorate([Event()], Dialog.prototype, \"open\", void 0);\n __decorate([Event()], Dialog.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([Event()], Dialog.prototype, \"beforeOpen\", void 0);\n __decorate([Event()], Dialog.prototype, \"close\", void 0);\n __decorate([Event()], Dialog.prototype, \"beforeClose\", void 0);\n __decorate([Event()], Dialog.prototype, \"dragStart\", void 0);\n __decorate([Event()], Dialog.prototype, \"dragStop\", void 0);\n __decorate([Event()], Dialog.prototype, \"drag\", void 0);\n __decorate([Event()], Dialog.prototype, \"overlayClick\", void 0);\n __decorate([Event()], Dialog.prototype, \"resizeStart\", void 0);\n __decorate([Event()], Dialog.prototype, \"resizing\", void 0);\n __decorate([Event()], Dialog.prototype, \"resizeStop\", void 0);\n __decorate([Event()], Dialog.prototype, \"destroyed\", void 0);\n Dialog = __decorate([NotifyPropertyChanges], Dialog);\n return Dialog;\n}(Component);\nexport { Dialog };\n/**\n * Base for creating Alert and Confirmation Dialog through util method.\n */\n// eslint-disable-next-line\nexport var DialogUtility;\n(function (DialogUtility) {\n /**\n * An alert dialog box is used to display warning like messages to the users.\n * ```\n * Eg : DialogUtility.alert('Alert message');\n *\n * ```\n */\n /* istanbul ignore next */\n /**\n *\n * @param {AlertDialogArgs} args - specifies the string\n * @returns {Dialog} - returns the dialog element.\n */\n function alert(args) {\n var dialogElement = createElement('div', {\n 'className': DLG_UTIL_ALERT\n });\n document.body.appendChild(dialogElement);\n var alertDialogObj;\n var okButtonModel = [{\n buttonModel: {\n isPrimary: true,\n content: 'OK'\n },\n click: function () {\n this.hide();\n }\n }];\n if (typeof args === 'string') {\n alertDialogObj = createDialog({\n content: args,\n position: {\n X: 'center',\n Y: 'top'\n },\n isModal: true,\n header: DLG_UTIL_DEFAULT_TITLE,\n buttons: okButtonModel\n }, dialogElement);\n } else {\n alertDialogObj = createDialog(alertOptions(args), dialogElement);\n }\n alertDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(alertDialogObj);\n }\n alertDialogObj.destroy();\n if (alertDialogObj.element.classList.contains('e-dlg-modal')) {\n alertDialogObj.element.parentElement.remove();\n alertDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n } else {\n alertDialogObj.element.remove();\n }\n };\n return alertDialogObj;\n }\n DialogUtility.alert = alert;\n /**\n * A confirm dialog displays a specified message along with ‘OK’ and ‘Cancel’ button.\n * ```\n * Eg : DialogUtility.confirm('Confirm dialog message');\n *\n * ```\n */\n /* istanbul ignore next */\n /**\n *\n * @param {ConfirmDialogArgs} args - specifies the args\n * @returns {Dialog} - returns te element\n */\n function confirm(args) {\n var dialogElement = createElement('div', {\n 'className': DLG_UTIL_CONFIRM\n });\n document.body.appendChild(dialogElement);\n var confirmDialogObj;\n var okCancelButtonModel = [{\n buttonModel: {\n isPrimary: true,\n content: 'OK'\n },\n click: function () {\n this.hide();\n }\n }, {\n buttonModel: {\n content: 'Cancel'\n },\n click: function () {\n this.hide();\n }\n }];\n if (typeof args === 'string') {\n confirmDialogObj = createDialog({\n position: {\n X: 'center',\n Y: 'top'\n },\n content: args,\n isModal: true,\n header: DLG_UTIL_DEFAULT_TITLE,\n buttons: okCancelButtonModel\n }, dialogElement);\n } else {\n confirmDialogObj = createDialog(confirmOptions(args), dialogElement);\n }\n confirmDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(confirmDialogObj);\n }\n confirmDialogObj.destroy();\n if (confirmDialogObj.element.classList.contains('e-dlg-modal')) {\n confirmDialogObj.element.parentElement.remove();\n confirmDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n } else {\n confirmDialogObj.element.remove();\n }\n };\n return confirmDialogObj;\n }\n DialogUtility.confirm = confirm;\n // eslint-disable-next-line\n function createDialog(options, element) {\n var dialogObject = new Dialog(options);\n dialogObject.appendTo(element);\n return dialogObject;\n }\n // eslint-disable-next-line\n function alertOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setAlertButtonModel(options, option);\n return options;\n }\n // eslint-disable-next-line\n function confirmOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setConfirmButtonModel(options, option);\n return options;\n }\n // eslint-disable-next-line\n function formOptions(options, option) {\n options.header = !isNullOrUndefined(option.title) ? option.title : null;\n options.content = !isNullOrUndefined(option.content) ? option.content : '';\n options.isModal = !isNullOrUndefined(option.isModal) ? option.isModal : true;\n options.showCloseIcon = !isNullOrUndefined(option.showCloseIcon) ? option.showCloseIcon : false;\n options.allowDragging = !isNullOrUndefined(option.isDraggable) ? option.isDraggable : false;\n options.closeOnEscape = !isNullOrUndefined(option.closeOnEscape) ? option.closeOnEscape : false;\n options.position = !isNullOrUndefined(option.position) ? option.position : {\n X: 'center',\n Y: 'top'\n };\n options.animationSettings = !isNullOrUndefined(option.animationSettings) ? option.animationSettings : {\n effect: 'Fade',\n duration: 400,\n delay: 0\n };\n options.cssClass = !isNullOrUndefined(option.cssClass) ? option.cssClass : '';\n options.zIndex = !isNullOrUndefined(option.zIndex) ? option.zIndex : 1000;\n options.open = !isNullOrUndefined(option.open) ? option.open : null;\n options.width = !isNullOrUndefined(option.width) ? option.width : 'auto';\n options.height = !isNullOrUndefined(option.height) ? option.height : 'auto';\n return options;\n }\n // eslint-disable-next-line\n function setAlertButtonModel(options, option) {\n var alertButtonModel = [{\n buttonModel: {\n isPrimary: true,\n content: 'OK'\n },\n click: function () {\n this.hide();\n }\n }];\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, alertButtonModel[0]);\n } else {\n options.buttons = alertButtonModel;\n }\n return options;\n }\n // eslint-disable-next-line\n function setConfirmButtonModel(options, option) {\n var okButtonModel = {\n buttonModel: {\n isPrimary: true,\n content: 'OK'\n },\n click: function () {\n this.hide();\n }\n };\n var cancelButtonModel = {\n buttonModel: {\n content: 'Cancel'\n },\n click: function () {\n this.hide();\n }\n };\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, okButtonModel);\n } else {\n options.buttons[0] = okButtonModel;\n }\n if (!isNullOrUndefined(option.cancelButton)) {\n options.buttons[1] = formButtonModel(options.buttons[1], option.cancelButton, cancelButtonModel);\n } else {\n options.buttons[1] = cancelButtonModel;\n }\n return options;\n }\n // eslint-disable-next-line\n function formButtonModel(buttonModel, option, buttonPropModel) {\n var buttonProps = buttonPropModel;\n if (!isNullOrUndefined(option.text)) {\n buttonProps.buttonModel.content = option.text;\n }\n if (!isNullOrUndefined(option.icon)) {\n buttonProps.buttonModel.iconCss = option.icon;\n }\n if (!isNullOrUndefined(option.cssClass)) {\n buttonProps.buttonModel.cssClass = option.cssClass;\n }\n if (!isNullOrUndefined(option.click)) {\n buttonProps.click = option.click;\n }\n if (!isNullOrUndefined(option.isFlat)) {\n buttonProps.isFlat = option.isFlat;\n }\n return buttonProps;\n }\n})(DialogUtility || (DialogUtility = {}));","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};\nimport { Component, Property, ChildProperty, Event, append, compile } from '@syncfusion/ej2-base';\nimport { EventHandler, Touch, Browser, Animation as PopupAnimation, animationMode } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getUniqueID, formatUnit, select, selectAll } from '@syncfusion/ej2-base';\nimport { attributes, closest, removeClass, addClass, remove } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Complex, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '../popup/popup';\nimport { calculatePosition } from '../common/position';\nimport { isCollide, fit, destroy as collisionDestroy } from '../common/collision';\nvar TOUCHEND_HIDE_DELAY = 1500;\nvar TAPHOLD_THRESHOLD = 500;\nvar SHOW_POINTER_TIP_GAP = 0;\nvar HIDE_POINTER_TIP_GAP = 8;\nvar MOUSE_TRAIL_GAP = 2;\nvar POINTER_ADJUST = 2;\nvar ROOT = 'e-tooltip';\nvar RTL = 'e-rtl';\nvar DEVICE = 'e-bigger';\nvar ICON = 'e-icons';\nvar CLOSE = 'e-tooltip-close';\nvar TOOLTIP_WRAP = 'e-tooltip-wrap';\nvar CONTENT = 'e-tip-content';\nvar ARROW_TIP = 'e-arrow-tip';\nvar ARROW_TIP_OUTER = 'e-arrow-tip-outer';\nvar ARROW_TIP_INNER = 'e-arrow-tip-inner';\nvar TIP_BOTTOM = 'e-tip-bottom';\nvar TIP_TOP = 'e-tip-top';\nvar TIP_LEFT = 'e-tip-left';\nvar TIP_RIGHT = 'e-tip-right';\nvar POPUP_ROOT = 'e-popup';\nvar POPUP_OPEN = 'e-popup-open';\nvar POPUP_CLOSE = 'e-popup-close';\nvar POPUP_LIB = 'e-lib';\nvar HIDE_POPUP = 'e-hidden';\nvar POPUP_CONTAINER = 'e-tooltip-popup-container';\nvar Animation = /** @class */function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property({\n effect: 'FadeIn',\n duration: 150,\n delay: 0\n })], Animation.prototype, \"open\", void 0);\n __decorate([Property({\n effect: 'FadeOut',\n duration: 150,\n delay: 0\n })], Animation.prototype, \"close\", void 0);\n return Animation;\n}(ChildProperty);\nexport { Animation };\n/**\n * Represents the Tooltip component that displays a piece of information about the target element on mouse hover.\n * ```html\n * <div id=\"tooltip\">Show Tooltip</div>\n * ```\n * ```typescript\n * <script>\n * var tooltipObj = new Tooltip({ content: 'Tooltip text' });\n * tooltipObj.appendTo(\"#tooltip\");\n * </script>\n * ```\n */\nvar Tooltip = /** @class */function (_super) {\n __extends(Tooltip, _super);\n /**\n * Constructor for creating the Tooltip Component\n *\n * @param {TooltipModel} options - specifies the options for the constructor\n * @param {string| HTMLElement} element - specifies the element for the constructor\n *\n */\n function Tooltip(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseMoveEvent = null;\n _this.mouseMoveTarget = null;\n _this.containerElement = null;\n _this.isBodyContainer = true;\n return _this;\n }\n Tooltip.prototype.initialize = function () {\n this.formatPosition();\n addClass([this.element], ROOT);\n };\n Tooltip.prototype.formatPosition = function () {\n var _a, _b;\n if (!this.position) {\n return;\n }\n if (this.position.indexOf('Top') === 0 || this.position.indexOf('Bottom') === 0) {\n _a = this.position.split(/(?=[A-Z])/), this.tooltipPositionY = _a[0], this.tooltipPositionX = _a[1];\n } else {\n _b = this.position.split(/(?=[A-Z])/), this.tooltipPositionX = _b[0], this.tooltipPositionY = _b[1];\n }\n };\n Tooltip.prototype.renderArrow = function () {\n this.setTipClass(this.position);\n var tip = this.createElement('div', {\n className: ARROW_TIP + ' ' + this.tipClass\n });\n tip.appendChild(this.createElement('div', {\n className: ARROW_TIP_OUTER + ' ' + this.tipClass\n }));\n tip.appendChild(this.createElement('div', {\n className: ARROW_TIP_INNER + ' ' + this.tipClass\n }));\n this.tooltipEle.appendChild(tip);\n };\n Tooltip.prototype.setTipClass = function (position) {\n if (position.indexOf('Right') === 0) {\n this.tipClass = TIP_LEFT;\n } else if (position.indexOf('Bottom') === 0) {\n this.tipClass = TIP_TOP;\n } else if (position.indexOf('Left') === 0) {\n this.tipClass = TIP_RIGHT;\n } else {\n this.tipClass = TIP_BOTTOM;\n }\n };\n Tooltip.prototype.renderPopup = function (target) {\n var elePos = this.mouseTrail ? {\n top: 0,\n left: 0\n } : this.getTooltipPosition(target);\n this.tooltipEle.classList.remove(POPUP_LIB);\n this.popupObj = new Popup(this.tooltipEle, {\n height: this.height,\n width: this.width,\n position: {\n X: elePos.left,\n Y: elePos.top\n },\n enableRtl: this.enableRtl,\n open: this.openPopupHandler.bind(this),\n close: this.closePopupHandler.bind(this)\n });\n };\n Tooltip.prototype.getScalingFactor = function (target) {\n if (!target) {\n return {\n x: 1,\n y: 1\n };\n }\n var scalingFactors = {\n x: 1,\n y: 1\n };\n var elementsWithTransform = target.closest('[style*=\"transform: scale\"]');\n if (elementsWithTransform && elementsWithTransform !== this.tooltipEle && elementsWithTransform.contains(this.tooltipEle)) {\n var computedStyle = window.getComputedStyle(elementsWithTransform);\n var transformValue = computedStyle.getPropertyValue('transform');\n var matrixValues = transformValue.match(/matrix\\(([^)]+)\\)/)[1].split(',').map(parseFloat);\n scalingFactors.x = matrixValues[0];\n scalingFactors.y = matrixValues[3];\n }\n return scalingFactors;\n };\n Tooltip.prototype.getTooltipPosition = function (target) {\n this.tooltipEle.style.display = 'block';\n var parentWithZoomStyle = this.element.closest('[style*=\"zoom\"]');\n if (parentWithZoomStyle) {\n if (!parentWithZoomStyle.contains(this.tooltipEle)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.tooltipEle.style.zoom = getComputedStyle(parentWithZoomStyle).zoom;\n }\n }\n var pos = calculatePosition(target, this.tooltipPositionX, this.tooltipPositionY, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n var scalingFactors = this.getScalingFactor(target);\n var offsetPos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var collisionPosition = this.calculateElementPosition(pos, offsetPos);\n var collisionLeft = collisionPosition[0];\n var collisionTop = collisionPosition[1];\n var elePos = this.collisionFlipFit(target, collisionLeft, collisionTop);\n elePos.left = elePos.left / scalingFactors.x;\n elePos.top = elePos.top / scalingFactors.y;\n this.tooltipEle.style.display = '';\n return elePos;\n };\n Tooltip.prototype.windowResize = function () {\n this.reposition(this.findTarget());\n };\n Tooltip.prototype.reposition = function (target) {\n if (this.popupObj && target) {\n var elePos = this.getTooltipPosition(target);\n this.popupObj.position = {\n X: elePos.left,\n Y: elePos.top\n };\n this.popupObj.dataBind();\n }\n };\n Tooltip.prototype.openPopupHandler = function () {\n if (!this.mouseTrail && this.needTemplateReposition()) {\n this.reposition(this.findTarget());\n }\n this.trigger('afterOpen', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.closePopupHandler = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && !(this.opensOn === 'Click' || typeof this.content === 'function')) {\n this.clearTemplate(['content']);\n }\n this.clear();\n var tooltipAfterCloseEventArgs = {\n type: this.tooltipEventArgs.event ? this.tooltipEventArgs.event.type : null,\n cancel: false,\n target: this.tooltipEventArgs.target,\n event: this.tooltipEventArgs.event ? this.tooltipEventArgs.event : null,\n element: this.tooltipEle,\n isInteracted: !isNullOrUndefined(this.tooltipEventArgs.event)\n };\n this.trigger('afterClose', tooltipAfterCloseEventArgs);\n tooltipAfterCloseEventArgs = null;\n };\n Tooltip.prototype.calculateTooltipOffset = function (position, xScalingFactor, yScalingFactor) {\n if (xScalingFactor === void 0) {\n xScalingFactor = 1;\n }\n if (yScalingFactor === void 0) {\n yScalingFactor = 1;\n }\n var pos = {\n top: 0,\n left: 0\n };\n var tipWidth;\n var tipHeight;\n var tooltipEleWidth;\n var tooltipEleHeight;\n var arrowEle;\n var tipAdjust;\n var tipHeightAdjust;\n var tipWidthAdjust;\n if (xScalingFactor !== 1 || yScalingFactor !== 1) {\n var tooltipEleRect = this.tooltipEle.getBoundingClientRect();\n var arrowEleRect = void 0;\n tooltipEleWidth = Math.round(tooltipEleRect.width);\n tooltipEleHeight = Math.round(tooltipEleRect.height);\n arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (arrowEle) {\n arrowEleRect = arrowEle.getBoundingClientRect();\n }\n tipWidth = arrowEle ? Math.round(arrowEleRect.width) : 0;\n tipHeight = arrowEle ? Math.round(arrowEleRect.height) : 0;\n tipAdjust = this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP;\n tipHeightAdjust = tipHeight / 2 + POINTER_ADJUST + (tooltipEleHeight - this.tooltipEle.clientHeight * yScalingFactor);\n tipWidthAdjust = tipWidth / 2 + POINTER_ADJUST + (tooltipEleWidth - this.tooltipEle.clientWidth * xScalingFactor);\n } else {\n tooltipEleWidth = this.tooltipEle.offsetWidth;\n tooltipEleHeight = this.tooltipEle.offsetHeight;\n arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n tipWidth = arrowEle ? arrowEle.offsetWidth : 0;\n tipHeight = arrowEle ? arrowEle.offsetHeight : 0;\n tipAdjust = this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP;\n tipHeightAdjust = tipHeight / 2 + POINTER_ADJUST + (this.tooltipEle.offsetHeight - this.tooltipEle.clientHeight);\n tipWidthAdjust = tipWidth / 2 + POINTER_ADJUST + (this.tooltipEle.offsetWidth - this.tooltipEle.clientWidth);\n }\n if (this.mouseTrail) {\n tipAdjust += MOUSE_TRAIL_GAP;\n }\n switch (position) {\n case 'RightTop':\n pos.left += tipWidth + tipAdjust;\n pos.top -= tooltipEleHeight - tipHeightAdjust;\n break;\n case 'RightCenter':\n pos.left += tipWidth + tipAdjust;\n pos.top -= tooltipEleHeight / 2;\n break;\n case 'RightBottom':\n pos.left += tipWidth + tipAdjust;\n pos.top -= tipHeightAdjust;\n break;\n case 'BottomRight':\n pos.top += tipHeight + tipAdjust;\n pos.left -= tipWidthAdjust;\n break;\n case 'BottomCenter':\n pos.top += tipHeight + tipAdjust;\n pos.left -= tooltipEleWidth / 2;\n break;\n case 'BottomLeft':\n pos.top += tipHeight + tipAdjust;\n pos.left -= tooltipEleWidth - tipWidthAdjust;\n break;\n case 'LeftBottom':\n pos.left -= tipWidth + tooltipEleWidth + tipAdjust;\n pos.top -= tipHeightAdjust;\n break;\n case 'LeftCenter':\n pos.left -= tipWidth + tooltipEleWidth + tipAdjust;\n pos.top -= tooltipEleHeight / 2;\n break;\n case 'LeftTop':\n pos.left -= tipWidth + tooltipEleWidth + tipAdjust;\n pos.top -= tooltipEleHeight - tipHeightAdjust;\n break;\n case 'TopLeft':\n pos.top -= tooltipEleHeight + tipHeight + tipAdjust;\n pos.left -= tooltipEleWidth - tipWidthAdjust;\n break;\n case 'TopRight':\n pos.top -= tooltipEleHeight + tipHeight + tipAdjust;\n pos.left -= tipWidthAdjust;\n break;\n default:\n pos.top -= tooltipEleHeight + tipHeight + tipAdjust;\n pos.left -= tooltipEleWidth / 2;\n break;\n }\n pos.left += this.offsetX;\n pos.top += this.offsetY;\n return pos;\n };\n Tooltip.prototype.updateTipPosition = function (position) {\n var selEle = selectAll('.' + ARROW_TIP + ',.' + ARROW_TIP_OUTER + ',.' + ARROW_TIP_INNER, this.tooltipEle);\n var removeList = [TIP_BOTTOM, TIP_TOP, TIP_LEFT, TIP_RIGHT];\n removeClass(selEle, removeList);\n this.setTipClass(position);\n addClass(selEle, this.tipClass);\n };\n Tooltip.prototype.adjustArrow = function (target, position, tooltipPositionX, tooltipPositionY) {\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (this.showTipPointer === false || arrowEle === null) {\n return;\n }\n this.updateTipPosition(position);\n var leftValue;\n var topValue;\n this.tooltipEle.style.display = 'block';\n var tooltipWidth = this.tooltipEle.clientWidth;\n var tooltipHeight = this.tooltipEle.clientHeight;\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n var tipWidth = arrowEle.offsetWidth;\n var tipHeight = arrowEle.offsetHeight;\n this.tooltipEle.style.display = '';\n if (this.tipClass === TIP_BOTTOM || this.tipClass === TIP_TOP) {\n if (this.tipClass === TIP_BOTTOM) {\n topValue = '99.9%';\n // Arrow icon aligned -2px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 2) + 'px';\n } else {\n topValue = -(tipHeight - 1) + 'px';\n // Arrow icon aligned -6px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 6) + 'px';\n }\n if (target) {\n var tipPosExclude = tooltipPositionX !== 'Center' || tooltipWidth > target.offsetWidth || this.mouseTrail;\n if (tipPosExclude && tooltipPositionX === 'Left' || !tipPosExclude && this.tipPointerPosition === 'End') {\n leftValue = tooltipWidth - tipWidth - POINTER_ADJUST + 'px';\n } else if (tipPosExclude && tooltipPositionX === 'Right' || !tipPosExclude && this.tipPointerPosition === 'Start') {\n leftValue = POINTER_ADJUST + 'px';\n } else if (tipPosExclude && (this.tipPointerPosition === 'End' || this.tipPointerPosition === 'Start')) {\n leftValue = this.tipPointerPosition === 'End' ? target.offsetWidth + (this.tooltipEle.offsetWidth - target.offsetWidth) / 2 - tipWidth / 2 - POINTER_ADJUST + 'px' : (this.tooltipEle.offsetWidth - target.offsetWidth) / 2 - tipWidth / 2 + POINTER_ADJUST + 'px';\n } else {\n leftValue = tooltipWidth / 2 - tipWidth / 2 + 'px';\n }\n }\n } else {\n if (this.tipClass === TIP_RIGHT) {\n leftValue = '99.9%';\n // Arrow icon aligned -2px left from ArrowOuterTip div\n arrowInnerELe.style.left = '-' + (tipWidth - 2) + 'px';\n } else {\n leftValue = -(tipWidth - 1) + 'px';\n // Arrow icon aligned -2px from ArrowOuterTip width\n arrowInnerELe.style.left = -tipWidth + (tipWidth - 2) + 'px';\n }\n var tipPosExclude = tooltipPositionY !== 'Center' || tooltipHeight > target.offsetHeight || this.mouseTrail;\n if (tipPosExclude && tooltipPositionY === 'Top' || !tipPosExclude && this.tipPointerPosition === 'End') {\n topValue = tooltipHeight - tipHeight - POINTER_ADJUST + 'px';\n } else if (tipPosExclude && tooltipPositionY === 'Bottom' || !tipPosExclude && this.tipPointerPosition === 'Start') {\n topValue = POINTER_ADJUST + 'px';\n } else {\n topValue = tooltipHeight / 2 - tipHeight / 2 + 'px';\n }\n }\n arrowEle.style.top = topValue;\n arrowEle.style.left = leftValue;\n };\n Tooltip.prototype.renderContent = function (target) {\n var _this = this;\n var tooltipContent = select('.' + CONTENT, this.tooltipEle);\n if (this.cssClass) {\n addClass([this.tooltipEle], this.cssClass.split(' '));\n }\n if (target && !isNullOrUndefined(target.getAttribute('title'))) {\n target.setAttribute('data-content', target.getAttribute('title'));\n target.removeAttribute('title');\n }\n if (!isNullOrUndefined(this.content)) {\n tooltipContent.innerHTML = '';\n if (this.content instanceof HTMLElement) {\n tooltipContent.appendChild(this.content);\n } else if (typeof this.content === 'string') {\n if (this.isAngular) {\n this.setProperties({\n content: SanitizeHtmlHelper.sanitize(this.content)\n }, true);\n } else {\n this.content = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(this.content) : this.content;\n }\n if (this.enableHtmlParse) {\n var tempFunction = compile(this.content);\n var tempArr = tempFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent, this.root);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n } else {\n tooltipContent['textContent'] = this.content;\n }\n } else {\n var templateFunction = compile(this.content);\n var tempArr = templateFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n if (this.isAngular) {\n setTimeout(function () {\n _this.reposition(target);\n }, 1);\n }\n append(tempArr, tooltipContent);\n }\n this.renderReactTemplates();\n }\n } else {\n if (target && !isNullOrUndefined(target.getAttribute('data-content'))) {\n tooltipContent.innerHTML = target.getAttribute('data-content');\n }\n }\n };\n Tooltip.prototype.renderCloseIcon = function () {\n if (!this.isSticky) {\n var existingCloseIcon = this.tooltipEle.querySelector('.' + ICON + '.' + CLOSE);\n if (existingCloseIcon) {\n remove(existingCloseIcon);\n }\n return;\n }\n var tipClose = this.createElement('div', {\n className: ICON + ' ' + CLOSE,\n attrs: {\n role: 'button',\n 'aria-label': 'Press escape to close the Tooltip'\n }\n });\n this.tooltipEle.appendChild(tipClose);\n EventHandler.add(tipClose, Browser.touchStartEvent, this.onStickyClose, this);\n };\n Tooltip.prototype.addDescribedBy = function (target, id) {\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n if (describedby.indexOf(id) < 0) {\n describedby.push(id);\n }\n attributes(target, {\n 'aria-describedby': describedby.join(' ').trim(),\n 'data-tooltip-id': id\n });\n };\n Tooltip.prototype.removeDescribedBy = function (target) {\n var id = target.getAttribute('data-tooltip-id');\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n var index = describedby.indexOf(id);\n if (index !== -1) {\n describedby.splice(index, 1);\n }\n target.removeAttribute('data-tooltip-id');\n var orgdescribedby = describedby.join(' ').trim();\n if (orgdescribedby) {\n target.setAttribute('aria-describedby', orgdescribedby);\n } else {\n target.removeAttribute('aria-describedby');\n }\n };\n Tooltip.prototype.tapHoldHandler = function (evt) {\n clearTimeout(this.autoCloseTimer);\n this.targetHover(evt.originalEvent);\n };\n Tooltip.prototype.touchEndHandler = function () {\n var _this = this;\n if (this.isSticky) {\n return;\n }\n var close = function () {\n _this.close();\n };\n this.autoCloseTimer = setTimeout(close, TOUCHEND_HIDE_DELAY);\n };\n Tooltip.prototype.targetClick = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n } else {\n target = this.element;\n }\n if (isNullOrUndefined(target)) {\n return;\n }\n var mouseEvent = e;\n if (target.getAttribute('data-tooltip-id') === null) {\n if (!(mouseEvent.type === 'mousedown' && mouseEvent.button === 2)) {\n this.targetHover(e);\n }\n } else if (!this.isSticky) {\n this.hideTooltip(this.animation.close, e, target);\n }\n };\n Tooltip.prototype.targetHover = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n } else {\n target = this.element;\n }\n if (isNullOrUndefined(target) || target.getAttribute('data-tooltip-id') !== null && this.closeDelay === 0) {\n return;\n }\n var targetList = [].slice.call(selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document));\n for (var _i = 0, targetList_1 = targetList; _i < targetList_1.length; _i++) {\n var target_1 = targetList_1[_i];\n this.restoreElement(target_1);\n }\n this.showTooltip(target, this.animation.open, e);\n };\n Tooltip.prototype.mouseMoveBeforeOpen = function (e) {\n this.mouseMoveEvent = e;\n };\n Tooltip.prototype.mouseMoveBeforeRemove = function () {\n if (this.mouseMoveTarget) {\n EventHandler.remove(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen);\n }\n };\n Tooltip.prototype.showTooltip = function (target, showAnimation, e) {\n var _this = this;\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n if (this.openDelay && this.mouseTrail) {\n this.mouseMoveBeforeRemove();\n this.mouseMoveTarget = target;\n EventHandler.add(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen, this);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null,\n cancel: false,\n target: target,\n event: e ? e : null,\n element: this.tooltipEle,\n isInteracted: !isNullOrUndefined(e)\n };\n var observeCallback = function (beforeRenderArgs) {\n _this.beforeRenderCallback(beforeRenderArgs, target, e, showAnimation);\n };\n this.trigger('beforeRender', this.tooltipEventArgs, observeCallback.bind(this));\n };\n Tooltip.prototype.beforeRenderCallback = function (beforeRenderArgs, target, e, showAnimation) {\n if (beforeRenderArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n } else {\n this.isHidden = false;\n if (isNullOrUndefined(this.tooltipEle)) {\n this.ctrlId = this.element.getAttribute('id') ? getUniqueID(this.element.getAttribute('id')) : getUniqueID('tooltip');\n this.tooltipEle = this.createElement('div', {\n className: TOOLTIP_WRAP + ' ' + POPUP_ROOT + ' ' + POPUP_LIB,\n attrs: {\n role: 'tooltip',\n 'aria-hidden': 'false',\n 'id': this.ctrlId + '_content'\n }\n });\n this.tooltipEle.style.width = formatUnit(this.width);\n this.tooltipEle.style.height = formatUnit(this.height);\n this.tooltipEle.style.position = 'absolute';\n this.tooltipBeforeRender(target, this);\n this.tooltipAfterRender(target, e, showAnimation, this);\n } else {\n if (target) {\n this.adjustArrow(target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n this.addDescribedBy(target, this.ctrlId + '_content');\n this.renderContent(target);\n PopupAnimation.stop(this.tooltipEle);\n this.reposition(target);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n }\n }\n };\n Tooltip.prototype.appendContainer = function (ctrlObj) {\n if (typeof this.container == 'string') {\n if (this.container === 'body') {\n this.containerElement = document.body;\n } else {\n this.isBodyContainer = false;\n this.containerElement = select(this.container, document);\n }\n } else if (this.container instanceof HTMLElement) {\n this.containerElement = this.container;\n this.isBodyContainer = this.containerElement.tagName === 'BODY';\n }\n if (!this.isBodyContainer) {\n addClass([this.containerElement], POPUP_CONTAINER);\n }\n this.containerElement.appendChild(ctrlObj.tooltipEle);\n };\n Tooltip.prototype.tooltipBeforeRender = function (target, ctrlObj) {\n if (target) {\n if (Browser.isDevice) {\n addClass([ctrlObj.tooltipEle], DEVICE);\n }\n if (ctrlObj.width !== 'auto') {\n ctrlObj.tooltipEle.style.maxWidth = formatUnit(ctrlObj.width);\n }\n ctrlObj.tooltipEle.appendChild(ctrlObj.createElement('div', {\n className: CONTENT\n }));\n this.appendContainer(ctrlObj);\n removeClass([ctrlObj.tooltipEle], HIDE_POPUP);\n ctrlObj.addDescribedBy(target, ctrlObj.ctrlId + '_content');\n ctrlObj.renderContent(target);\n addClass([ctrlObj.tooltipEle], POPUP_OPEN);\n if (ctrlObj.showTipPointer) {\n ctrlObj.renderArrow();\n }\n ctrlObj.renderCloseIcon();\n ctrlObj.renderPopup(target);\n ctrlObj.adjustArrow(target, ctrlObj.position, ctrlObj.tooltipPositionX, ctrlObj.tooltipPositionY);\n PopupAnimation.stop(ctrlObj.tooltipEle);\n ctrlObj.reposition(target);\n }\n };\n Tooltip.prototype.tooltipAfterRender = function (target, e, showAnimation, ctrlObj) {\n if (target) {\n removeClass([ctrlObj.tooltipEle], POPUP_OPEN);\n addClass([ctrlObj.tooltipEle], POPUP_CLOSE);\n ctrlObj.tooltipEventArgs = {\n type: e ? e.type : null,\n cancel: false,\n target: target,\n event: e ? e : null,\n element: ctrlObj.tooltipEle,\n isInteracted: !isNullOrUndefined(e)\n };\n if (ctrlObj.needTemplateReposition() && !ctrlObj.mouseTrail && (showAnimation.effect === 'None' || showAnimation.effect === 'FadeIn' ||\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.isReact && typeof ctrlObj.content != 'string')) {\n ctrlObj.tooltipEle.style.display = 'none';\n }\n var observeCallback = function (observedArgs) {\n ctrlObj.beforeOpenCallback(observedArgs, target, showAnimation, e);\n };\n ctrlObj.trigger('beforeOpen', ctrlObj.tooltipEventArgs, observeCallback.bind(ctrlObj));\n }\n };\n Tooltip.prototype.beforeOpenCallback = function (observedArgs, target, showAnimation, e) {\n var _this = this;\n if (observedArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n this.restoreElement(target);\n } else {\n var openAnimation_1 = {\n name: showAnimation.effect === 'None' && animationMode === 'Enable' ? 'FadeIn' : this.animation.open.effect,\n duration: showAnimation.duration,\n delay: showAnimation.delay,\n timingFunction: 'easeOut'\n };\n if (showAnimation.effect === 'None') {\n openAnimation_1 = undefined;\n }\n if (this.openDelay > 0) {\n var show = function () {\n if (_this.mouseTrail) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', _this.onMouseMove, _this);\n }\n if (_this.popupObj) {\n _this.popupObj.show(openAnimation_1, target);\n if (_this.mouseMoveEvent && _this.mouseTrail) {\n _this.onMouseMove(_this.mouseMoveEvent);\n }\n }\n };\n this.showTimer = setTimeout(show, this.openDelay);\n } else {\n if (this.popupObj) {\n this.popupObj.show(openAnimation_1, target);\n }\n }\n }\n if (e) {\n this.wireMouseEvents(e, target);\n }\n };\n Tooltip.prototype.needTemplateReposition = function () {\n // eslint-disable-next-line\n var tooltip = this;\n return !isNullOrUndefined(tooltip.viewContainerRef)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n && typeof tooltip.viewContainerRef !== 'string' || this.isReact;\n };\n Tooltip.prototype.checkCollision = function (target, x, y) {\n var elePos = {\n left: x,\n top: y,\n position: this.position,\n horizontal: this.tooltipPositionX,\n vertical: this.tooltipPositionY\n };\n var affectedPos = isCollide(this.tooltipEle, this.checkCollideTarget(), x, y);\n if (affectedPos.length > 0) {\n elePos.horizontal = affectedPos.indexOf('left') >= 0 ? 'Right' : affectedPos.indexOf('right') >= 0 ? 'Left' : this.tooltipPositionX;\n elePos.vertical = affectedPos.indexOf('top') >= 0 ? 'Bottom' : affectedPos.indexOf('bottom') >= 0 ? 'Top' : this.tooltipPositionY;\n }\n return elePos;\n };\n Tooltip.prototype.calculateElementPosition = function (pos, offsetPos) {\n return [this.isBodyContainer ? pos.left + offsetPos.left : pos.left - this.containerElement.getBoundingClientRect().left + offsetPos.left + window.pageXOffset + this.containerElement.scrollLeft, this.isBodyContainer ? pos.top + offsetPos.top : pos.top - this.containerElement.getBoundingClientRect().top + offsetPos.top + window.pageYOffset + this.containerElement.scrollTop];\n };\n Tooltip.prototype.collisionFlipFit = function (target, x, y) {\n var elePos = this.checkCollision(target, x, y);\n var newpos = elePos.position;\n if (this.tooltipPositionY !== elePos.vertical) {\n newpos = this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0 ? elePos.vertical + this.tooltipPositionX : this.tooltipPositionX + elePos.vertical;\n }\n if (this.tooltipPositionX !== elePos.horizontal) {\n if (newpos.indexOf('Left') === 0) {\n elePos.vertical = newpos === 'LeftTop' || newpos === 'LeftCenter' ? 'Top' : 'Bottom';\n newpos = elePos.vertical + 'Left';\n }\n if (newpos.indexOf('Right') === 0) {\n elePos.vertical = newpos === 'RightTop' || newpos === 'RightCenter' ? 'Top' : 'Bottom';\n newpos = elePos.vertical + 'Right';\n }\n elePos.horizontal = this.tooltipPositionX;\n }\n this.tooltipEventArgs = {\n type: null,\n cancel: false,\n target: target,\n event: null,\n element: this.tooltipEle,\n collidedPosition: newpos\n };\n this.trigger('beforeCollision', this.tooltipEventArgs);\n if (this.tooltipEventArgs.cancel) {\n newpos = this.position;\n } else {\n var elePosVertical = elePos.vertical;\n var elePosHorizontal = elePos.horizontal;\n if (elePos.position !== newpos) {\n var pos = calculatePosition(target, elePosHorizontal, elePosVertical, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n var scalingFactors = this.getScalingFactor(target);\n var offsetPos = this.calculateTooltipOffset(newpos, scalingFactors.x, scalingFactors.y);\n offsetPos.top -= this.getOffSetPosition('TopBottom', newpos, this.offsetY);\n offsetPos.left -= this.getOffSetPosition('RightLeft', newpos, this.offsetX);\n elePos.position = newpos;\n var elePosition = this.calculateElementPosition(pos, offsetPos);\n elePos.left = elePosition[0];\n elePos.top = elePosition[1];\n } else {\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n }\n }\n var eleOffset = {\n left: elePos.left,\n top: elePos.top\n };\n var position = this.isBodyContainer ? fit(this.tooltipEle, this.checkCollideTarget(), {\n X: true,\n Y: this.windowCollision\n }, eleOffset) : eleOffset;\n this.tooltipEle.style.display = 'block';\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (this.showTipPointer && arrowEle != null && (newpos.indexOf('Bottom') === 0 || newpos.indexOf('Top') === 0)) {\n var arrowleft = parseInt(arrowEle.style.left, 10) - (position.left - elePos.left);\n if (arrowleft < 0) {\n arrowleft = 0;\n } else if (arrowleft + arrowEle.offsetWidth > this.tooltipEle.clientWidth) {\n arrowleft = this.tooltipEle.clientWidth - arrowEle.offsetWidth;\n }\n arrowEle.style.left = arrowleft.toString() + 'px';\n }\n this.tooltipEle.style.display = '';\n eleOffset.left = position.left;\n eleOffset.top = position.top;\n return eleOffset;\n };\n Tooltip.prototype.getOffSetPosition = function (positionString, newPos, offsetType) {\n return positionString.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1 && positionString.indexOf(newPos.split(/(?=[A-Z])/)[0]) !== -1 ? 2 * offsetType : 0;\n };\n Tooltip.prototype.checkCollideTarget = function () {\n return !this.windowCollision && this.target ? this.element : null;\n };\n Tooltip.prototype.hideTooltip = function (hideAnimation, e, targetElement) {\n var _this = this;\n if (this.closeDelay > 0) {\n clearTimeout(this.hideTimer);\n clearTimeout(this.showTimer);\n var hide = function () {\n if (_this.closeDelay && _this.tooltipEle && _this.isTooltipOpen) {\n return;\n }\n _this.tooltipHide(hideAnimation, e, targetElement);\n };\n this.hideTimer = setTimeout(hide, this.closeDelay);\n } else {\n this.tooltipHide(hideAnimation, e, targetElement);\n }\n };\n Tooltip.prototype.tooltipHide = function (hideAnimation, e, targetElement) {\n var _this = this;\n var target;\n if (e) {\n target = this.target ? targetElement || e.target : this.element;\n } else {\n target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null,\n cancel: false,\n target: target,\n event: e ? e : null,\n element: this.tooltipEle,\n isInteracted: !isNullOrUndefined(e)\n };\n // this line commented for close the tooltip popup element even the target element destroyed in a page.\n //if (isNullOrUndefined(target)) { return; }\n this.trigger('beforeClose', this.tooltipEventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.mouseMoveBeforeRemove();\n _this.popupHide(hideAnimation, target, e);\n } else {\n _this.isHidden = false;\n }\n });\n };\n Tooltip.prototype.popupHide = function (hideAnimation, target, e) {\n if (target && e) {\n this.restoreElement(target);\n }\n this.isHidden = true;\n var closeAnimation = {\n name: hideAnimation.effect === 'None' && animationMode === 'Enable' ? 'FadeOut' : this.animation.close.effect,\n duration: hideAnimation.duration,\n delay: hideAnimation.delay,\n timingFunction: 'easeIn'\n };\n if (hideAnimation.effect === 'None') {\n closeAnimation = undefined;\n }\n if (this.popupObj) {\n this.popupObj.hide(closeAnimation);\n }\n };\n Tooltip.prototype.restoreElement = function (target) {\n this.unwireMouseEvents(target);\n if (!isNullOrUndefined(target.getAttribute('data-content'))) {\n target.setAttribute('title', target.getAttribute('data-content'));\n target.removeAttribute('data-content');\n }\n this.removeDescribedBy(target);\n };\n Tooltip.prototype.clear = function () {\n var target = this.findTarget();\n if (target) {\n this.restoreElement(target);\n }\n if (this.tooltipEle) {\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n }\n if (this.isHidden) {\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n this.tooltipEle = null;\n this.popupObj = null;\n }\n };\n Tooltip.prototype.tooltipHover = function () {\n if (this.tooltipEle) {\n this.isTooltipOpen = true;\n }\n };\n Tooltip.prototype.tooltipMouseOut = function (e) {\n this.isTooltipOpen = false;\n this.hideTooltip(this.animation.close, e, this.findTarget());\n };\n Tooltip.prototype.onMouseOut = function (e) {\n var enteredElement = e.relatedTarget;\n // don't close the tooltip only if it is tooltip content element\n if (enteredElement && !this.mouseTrail) {\n var checkForTooltipElement = closest(enteredElement, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT);\n if (checkForTooltipElement) {\n EventHandler.add(checkForTooltipElement, 'mouseleave', this.tooltipElementMouseOut, this);\n } else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.closeDelay === 0 && (this.animation.close.effect === 'None' || this.isReact && typeof this.content != 'string')) {\n this.clear();\n }\n }\n } else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n this.clear();\n }\n if (this.popupObj && !this.popupObj.element.classList.contains(POPUP_OPEN)) {\n this.clear();\n }\n };\n Tooltip.prototype.tooltipElementMouseOut = function (e) {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n EventHandler.remove(this.element, 'mouseleave', this.tooltipElementMouseOut);\n this.clear();\n };\n Tooltip.prototype.onStickyClose = function () {\n this.close();\n };\n Tooltip.prototype.onMouseMove = function (event) {\n var eventPageX = 0;\n var eventPageY = 0;\n if (event.type.indexOf('touch') > -1) {\n event.preventDefault();\n eventPageX = event.touches[0].pageX;\n eventPageY = event.touches[0].pageY;\n } else {\n eventPageX = event.pageX;\n eventPageY = event.pageY;\n }\n if (isNullOrUndefined(this.tooltipEle)) {\n return;\n }\n PopupAnimation.stop(this.tooltipEle);\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n this.adjustArrow(event.target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n var scalingFactors = this.getScalingFactor(event.target);\n var pos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var x = eventPageX + pos.left + this.offsetX;\n var y = eventPageY + pos.top + this.offsetY;\n var elePos = this.checkCollision(event.target, x, y);\n if (this.tooltipPositionX !== elePos.horizontal || this.tooltipPositionY !== elePos.vertical) {\n var newpos = this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0 ? elePos.vertical + elePos.horizontal : elePos.horizontal + elePos.vertical;\n elePos.position = newpos;\n this.adjustArrow(event.target, elePos.position, elePos.horizontal, elePos.vertical);\n var colpos = this.calculateTooltipOffset(elePos.position, scalingFactors.x, scalingFactors.y);\n elePos.left = eventPageX + colpos.left - this.offsetX;\n elePos.top = eventPageY + colpos.top - this.offsetY;\n }\n this.tooltipEle.style.left = elePos.left + 'px';\n this.tooltipEle.style.top = elePos.top + 'px';\n };\n Tooltip.prototype.keyDown = function (event) {\n if (this.tooltipEle && event.keyCode === 27) {\n this.close();\n }\n };\n Tooltip.prototype.touchEnd = function (e) {\n if (this.tooltipEle && closest(e.target, '.' + ROOT) === null && !this.isSticky) {\n this.close();\n }\n };\n Tooltip.prototype.scrollHandler = function (e) {\n if (this.tooltipEle && !this.isSticky) {\n if (!closest(e.target, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT) && !this.isSticky) {\n this.close();\n }\n }\n };\n /**\n * Core method that initializes the control rendering.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.render = function () {\n this.initialize();\n this.wireEvents(this.opensOn);\n this.renderComplete();\n };\n /**\n * Initializes the values of private members.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.preRender = function () {\n this.tipClass = TIP_BOTTOM;\n this.tooltipPositionX = 'Center';\n this.tooltipPositionY = 'Top';\n this.isHidden = true;\n };\n /**\n * Binding events to the Tooltip element.\n *\n * @hidden\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.wireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_1 = triggerList; _i < triggerList_1.length; _i++) {\n var opensOn = triggerList_1[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.wireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.add(this.element, Browser.touchStartEvent, this.targetClick, this);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n this.touchModule = new Touch(this.element, {\n tapHoldThreshold: TAPHOLD_THRESHOLD,\n tapHold: this.tapHoldHandler.bind(this)\n });\n EventHandler.add(this.element, Browser.touchEndEvent, this.touchEndHandler, this);\n } else {\n EventHandler.add(this.element, 'mouseover', this.targetHover, this);\n }\n }\n }\n this.windowResizeBound = this.windowResize.bind(this);\n this.keyDownBound = this.keyDown.bind(this);\n this.touchEndBound = this.touchEnd.bind(this);\n this.scrollWheelBound = this.scrollHandler.bind(this);\n document.addEventListener('wheel', this.scrollWheelBound);\n document.addEventListener('scroll', this.scrollWheelBound);\n document.addEventListener('touchend', this.touchEndBound);\n document.addEventListener('keydown', this.keyDownBound);\n window.addEventListener('resize', this.windowResizeBound);\n };\n Tooltip.prototype.getTriggerList = function (trigger) {\n if (!trigger) {\n return [];\n }\n if (trigger === 'Auto') {\n trigger = Browser.isDevice ? 'Hover' : 'Hover Focus';\n }\n return trigger.split(' ');\n };\n Tooltip.prototype.wireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n this.targetsList = targetList;\n if (!isNullOrUndefined(this.targetsList) && this.targetsList.length > 0) {\n for (var _i = 0, targetList_2 = targetList; _i < targetList_2.length; _i++) {\n var target = targetList_2[_i];\n EventHandler.add(target, 'focus', this.targetHover, this);\n }\n } else {\n EventHandler.add(this.element, 'focusin', this.targetHover, this);\n }\n } else {\n EventHandler.add(this.element, 'focusin', this.targetHover, this);\n }\n };\n Tooltip.prototype.wireMouseEvents = function (e, target) {\n if (this.tooltipEle) {\n if (!this.isSticky) {\n if (e.type === 'focus') {\n EventHandler.add(target, 'blur', this.onMouseOut, this);\n }\n if (e.type === 'focusin') {\n EventHandler.add(target, 'focusout', this.onMouseOut, this);\n }\n if (e.type === 'mouseover') {\n EventHandler.add(target, 'mouseleave', this.onMouseOut, this);\n }\n if (this.closeDelay) {\n EventHandler.add(this.tooltipEle, 'mouseenter', this.tooltipHover, this);\n EventHandler.add(this.tooltipEle, 'mouseleave', this.tooltipMouseOut, this);\n }\n }\n if (this.mouseTrail && this.openDelay === 0) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', this.onMouseMove, this);\n }\n }\n };\n /**\n * Unbinding events from the element on widget destroy.\n *\n * @hidden\n *\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.unwireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_2 = triggerList; _i < triggerList_2.length; _i++) {\n var opensOn = triggerList_2[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.unwireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.targetClick);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n EventHandler.remove(this.element, Browser.touchEndEvent, this.touchEndHandler);\n } else {\n EventHandler.remove(this.element, 'mouseover', this.targetHover);\n }\n }\n }\n document.removeEventListener('touchend', this.touchEndBound);\n this.touchEndBound = null;\n document.removeEventListener('wheel', this.scrollWheelBound);\n document.removeEventListener('scroll', this.scrollWheelBound);\n this.scrollWheelBound = null;\n window.removeEventListener('resize', this.windowResizeBound);\n this.windowResizeBound = null;\n document.removeEventListener('keydown', this.keyDownBound);\n this.keyDownBound = null;\n };\n Tooltip.prototype.unwireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n if (!isNullOrUndefined(this.targetsList) && this.targetsList.length > 0) {\n for (var _i = 0, targetList_3 = targetList; _i < targetList_3.length; _i++) {\n var target = targetList_3[_i];\n EventHandler.remove(target, 'focus', this.targetHover);\n }\n } else {\n EventHandler.remove(this.element, 'focusin', this.targetHover);\n }\n } else {\n EventHandler.remove(this.element, 'focusin', this.targetHover);\n }\n };\n Tooltip.prototype.unwireMouseEvents = function (target) {\n if (!this.isSticky) {\n var triggerList = this.getTriggerList(this.opensOn);\n for (var _i = 0, triggerList_3 = triggerList; _i < triggerList_3.length; _i++) {\n var opensOn = triggerList_3[_i];\n if (opensOn === 'Focus') {\n EventHandler.remove(target, 'blur', this.onMouseOut);\n EventHandler.remove(target, 'focusout', this.onMouseOut);\n }\n if (opensOn === 'Hover' && !Browser.isDevice) {\n EventHandler.remove(target, 'mouseleave', this.onMouseOut);\n }\n }\n if (this.closeDelay) {\n EventHandler.remove(target, 'mouseenter', this.tooltipHover);\n EventHandler.remove(target, 'mouseleave', this.tooltipMouseOut);\n }\n }\n if (this.mouseTrail) {\n EventHandler.remove(target, 'mousemove touchstart mouseenter', this.onMouseMove);\n }\n };\n Tooltip.prototype.findTarget = function () {\n var target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n return target;\n };\n /**\n * Core method to return the component name.\n *\n * @private\n *\n * @returns {string} - this method returns module name.\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * Returns the properties to be maintained in the persisted state.\n *\n * @private\n *\n * @returns {string} - this method returns persisted data.\n */\n Tooltip.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Called internally, if any of the property value changed.\n *\n * @private\n *\n * @param {TooltipModel} newProp - this param gives new property values to the method\n * @param {TooltipModel} oldProp - this param gives old property values to the method\n * @returns {void}\n *\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n var targetElement = this.findTarget();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.width = this.tooltipEle.style.maxWidth = formatUnit(newProp.width);\n this.reposition(targetElement);\n }\n break;\n case 'height':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.height = formatUnit(newProp.height);\n this.reposition(targetElement);\n }\n break;\n case 'content':\n if (this.tooltipEle) {\n this.renderContent();\n }\n break;\n case 'opensOn':\n this.unwireEvents(oldProp.opensOn);\n this.wireEvents(newProp.opensOn);\n break;\n case 'position':\n this.formatPosition();\n if (this.tooltipEle && targetElement) {\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n if (arrowInnerELe) {\n arrowInnerELe.style.top = arrowInnerELe.style.left = null;\n }\n this.reposition(targetElement);\n }\n break;\n case 'tipPointerPosition':\n if (this.tooltipEle && targetElement) {\n this.reposition(targetElement);\n }\n break;\n case 'offsetX':\n if (this.tooltipEle) {\n var x = newProp.offsetX - oldProp.offsetX;\n this.tooltipEle.style.left = (parseInt(this.tooltipEle.style.left, 10) + x).toString() + 'px';\n }\n break;\n case 'offsetY':\n if (this.tooltipEle) {\n var y = newProp.offsetY - oldProp.offsetY;\n this.tooltipEle.style.top = (parseInt(this.tooltipEle.style.top, 10) + y).toString() + 'px';\n }\n break;\n case 'cssClass':\n if (this.tooltipEle) {\n if (oldProp.cssClass) {\n removeClass([this.tooltipEle], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.tooltipEle], newProp.cssClass.split(' '));\n }\n }\n break;\n case 'enableRtl':\n if (this.tooltipEle) {\n if (this.enableRtl) {\n addClass([this.tooltipEle], RTL);\n } else {\n removeClass([this.tooltipEle], RTL);\n }\n }\n break;\n case 'isSticky':\n if (this.tooltipEle && targetElement) {\n this.renderCloseIcon();\n this.reposition(targetElement);\n }\n break;\n case 'container':\n if (!isNullOrUndefined(this.containerElement)) {\n removeClass([this.containerElement], POPUP_CONTAINER);\n }\n this.container = newProp.container;\n if (this.tooltipEle && targetElement) {\n this.appendContainer(this);\n this.reposition(targetElement);\n }\n }\n }\n };\n /**\n * It is used to show the Tooltip on the specified target with specific animation settings.\n *\n * @param {HTMLElement} element - Target element where the Tooltip is to be displayed. (It is an optional parameter)\n * @param {TooltipAnimationSettings} animation - Sets the specific animation, while showing the Tooltip on the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.open = function (element, animation) {\n if (isNullOrUndefined(animation)) {\n animation = this.animation.open;\n }\n if (isNullOrUndefined(element)) {\n element = this.element;\n }\n if (element.style.display === 'none') {\n return;\n }\n this.showTooltip(element, animation);\n };\n /**\n * It is used to hide the Tooltip with specific animation effect.\n *\n * @param {TooltipAnimationSettings} animation - Sets the specific animation when hiding Tooltip from the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.close = function (animation) {\n if (!animation) {\n animation = this.animation.close;\n }\n this.hideTooltip(animation);\n };\n /**\n * It is used to refresh the Tooltip content and its position.\n *\n * @param {HTMLElement} target - Target element where the Tooltip content or position needs to be refreshed.\n * @returns {void}\n */\n Tooltip.prototype.refresh = function (target) {\n if (this.tooltipEle) {\n this.renderContent(target);\n }\n if (this.popupObj && target) {\n this.reposition(target);\n }\n if (!isNullOrUndefined(this.targetsList) && !isNullOrUndefined(this.target)) {\n var target_2 = selectAll(this.target, this.element);\n if (target_2.length !== this.targetsList.length) {\n this.unwireEvents(this.opensOn);\n this.wireEvents(this.opensOn);\n }\n }\n };\n /**\n *\n * It is used to destroy the Tooltip component.\n *\n * @method destroy\n * @returns {void}\n * @memberof Tooltip\n */\n Tooltip.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n collisionDestroy();\n removeClass([this.element], ROOT);\n this.unwireEvents(this.opensOn);\n this.unwireMouseEvents(this.element);\n this.tooltipEle = null;\n this.popupObj = null;\n var currentTarget = selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', this.element);\n for (var _i = 0, currentTarget_1 = currentTarget; _i < currentTarget_1.length; _i++) {\n var target = currentTarget_1[_i];\n this.restoreElement(target);\n }\n this.containerElement = null;\n this.tipClass = null;\n this.tooltipPositionX = null;\n this.tooltipPositionY = null;\n this.ctrlId = null;\n this.tooltipEventArgs = null;\n this.touchModule = null;\n this.mouseMoveEvent = null;\n this.mouseMoveTarget = null;\n this.containerElement = null;\n this.targetsList = null;\n };\n __decorate([Property('auto')], Tooltip.prototype, \"width\", void 0);\n __decorate([Property('auto')], Tooltip.prototype, \"height\", void 0);\n __decorate([Property()], Tooltip.prototype, \"content\", void 0);\n __decorate([Property('body')], Tooltip.prototype, \"container\", void 0);\n __decorate([Property()], Tooltip.prototype, \"target\", void 0);\n __decorate([Property('TopCenter')], Tooltip.prototype, \"position\", void 0);\n __decorate([Property(0)], Tooltip.prototype, \"offsetX\", void 0);\n __decorate([Property(0)], Tooltip.prototype, \"offsetY\", void 0);\n __decorate([Property(true)], Tooltip.prototype, \"showTipPointer\", void 0);\n __decorate([Property(true)], Tooltip.prototype, \"enableHtmlParse\", void 0);\n __decorate([Property(false)], Tooltip.prototype, \"windowCollision\", void 0);\n __decorate([Property('Auto')], Tooltip.prototype, \"tipPointerPosition\", void 0);\n __decorate([Property('Auto')], Tooltip.prototype, \"opensOn\", void 0);\n __decorate([Property(false)], Tooltip.prototype, \"mouseTrail\", void 0);\n __decorate([Property(false)], Tooltip.prototype, \"isSticky\", void 0);\n __decorate([Complex({}, Animation)], Tooltip.prototype, \"animation\", void 0);\n __decorate([Property(0)], Tooltip.prototype, \"openDelay\", void 0);\n __decorate([Property(0)], Tooltip.prototype, \"closeDelay\", void 0);\n __decorate([Property()], Tooltip.prototype, \"cssClass\", void 0);\n __decorate([Property(true)], Tooltip.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([Property('')], Tooltip.prototype, \"htmlAttributes\", void 0);\n __decorate([Event()], Tooltip.prototype, \"beforeRender\", void 0);\n __decorate([Event()], Tooltip.prototype, \"beforeOpen\", void 0);\n __decorate([Event()], Tooltip.prototype, \"afterOpen\", void 0);\n __decorate([Event()], Tooltip.prototype, \"beforeClose\", void 0);\n __decorate([Event()], Tooltip.prototype, \"afterClose\", void 0);\n __decorate([Event()], Tooltip.prototype, \"beforeCollision\", void 0);\n __decorate([Event()], Tooltip.prototype, \"created\", void 0);\n __decorate([Event()], Tooltip.prototype, \"destroyed\", void 0);\n Tooltip = __decorate([NotifyPropertyChanges], Tooltip);\n return Tooltip;\n}(Component);\nexport { Tooltip };","import { isNullOrUndefined, classList, createElement, Browser } from '@syncfusion/ej2-base';\nvar globalTimeOut = {};\nvar DEFT_MAT_WIDTH = 30;\nvar DEFT_MAT3_WIDTH = 30;\nvar DEFT_FAB_WIDTH = 30;\nvar DEFT_FLUENT_WIDTH = 30;\nvar DEFT_FLUENT2_WIDTH = 30;\nvar DEFT_BOOT_WIDTH = 30;\nvar DEFT_BOOT4_WIDTH = 36;\nvar DEFT_BOOT5_WIDTH = 36;\nvar CLS_SHOWSPIN = 'e-spin-show';\nvar CLS_HIDESPIN = 'e-spin-hide';\nvar CLS_MATERIALSPIN = 'e-spin-material';\nvar CLS_MATERIAL3SPIN = 'e-spin-material3';\nvar CLS_TAILWIND3SPIN = 'e-spin-tailwind3';\nvar CLS_FABRICSPIN = 'e-spin-fabric';\nvar CLS_FLUENTSPIN = 'e-spin-fluent';\nvar CLS_FLUENT2SPIN = 'e-spin-fluent2';\nvar CLS_TAILWINDSPIN = 'e-spin-tailwind';\nvar CLS_BOOTSPIN = 'e-spin-bootstrap';\nvar CLS_BOOT4SPIN = 'e-spin-bootstrap4';\nvar CLS_BOOT5SPIN = 'e-spin-bootstrap5';\nvar CLS_HIGHCONTRASTSPIN = 'e-spin-high-contrast';\nvar CLS_SPINWRAP = 'e-spinner-pane';\nvar CLS_SPININWRAP = 'e-spinner-inner';\nvar CLS_SPINCIRCLE = 'e-path-circle';\nvar CLS_SPINARC = 'e-path-arc';\nvar CLS_SPINLABEL = 'e-spin-label';\nvar CLS_SPINTEMPLATE = 'e-spin-template';\nvar spinTemplate = null;\nvar spinCSSClass = null;\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : blazorSpinner({ action: \"Create\", options: {target: targetElement}, type: \"\" });\n * ```\n *\n * @param {string} action - specifies the string\n * @param {CreateArgs} options - specifies the args\n * @param {string} target - specifies the target\n * @param {string} type - specifes the type\n * @returns {void}\n * @private\n */\nexport function Spinner(action, options, target, type) {\n switch (action) {\n case 'Create':\n /* eslint-disable */\n var element = document.querySelector(options.target);\n var args = {\n type: type,\n target: element,\n cssClass: options.cssClass,\n label: options.label,\n width: options.width\n };\n /* eslint-enable */\n createSpinner(args);\n break;\n case 'Show':\n showSpinner(document.querySelector(target));\n break;\n case 'Hide':\n hideSpinner(document.querySelector(target));\n break;\n case 'Set':\n {\n var setArgs = {\n cssClass: options.cssClass,\n type: type\n };\n setSpinner(setArgs);\n break;\n }\n }\n}\n/**\n * Create a spinner for the specified target element.\n * ```\n * E.g : createSpinner({ target: targetElement, width: '34px', label: 'Loading..' });\n * ```\n *\n * @param {SpinnerArgs} args - specifies the args\n * @param {CreateElementArgs} internalCreateElement - specifis the element args\n * @returns {void}\n * @private\n */\nexport function createSpinner(args, internalCreateElement) {\n var _a;\n if (!args.target) {\n return;\n }\n var radius;\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n // eslint-disable-next-line\n var container = create_spinner_container(args.target, makeElement);\n if (!isNullOrUndefined(args.cssClass)) {\n var classNames = args.cssClass.split(' ').filter(function (className) {\n return className.trim() !== '';\n });\n (_a = container.wrap.classList).add.apply(_a, classNames);\n }\n if (!isNullOrUndefined(args.template) || !isNullOrUndefined(spinTemplate)) {\n var template = !isNullOrUndefined(args.template) ? args.template : spinTemplate;\n container.wrap.classList.add(CLS_SPINTEMPLATE);\n replaceContent(container.wrap, template, spinCSSClass);\n } else {\n var theme = !isNullOrUndefined(args.type) ? args.type : getTheme(container.wrap);\n var width = !isNullOrUndefined(args.width) ? args.width : undefined;\n radius = calculateRadius(width, theme);\n setTheme(theme, container.wrap, radius, makeElement);\n if (!isNullOrUndefined(args.label)) {\n createLabel(container.inner_wrap, args.label, makeElement);\n }\n }\n container.wrap.classList.add(CLS_HIDESPIN);\n container = null;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} label - specifies the string\n * @param {createElementParams} makeElement - specifies the element\n * @returns {HTMLElement} - returns the element\n */\nfunction createLabel(container, label, makeElement) {\n var labelEle = makeElement('div', {});\n labelEle.classList.add(CLS_SPINLABEL);\n labelEle.innerHTML = label;\n container.appendChild(labelEle);\n return labelEle;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createMaterialSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = {\n timeOut: 0,\n type: 'Material',\n radius: radius\n };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIALSPIN);\n mat_calculate_attributes(radius, container, 'Material', CLS_MATERIALSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createTailwind3Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = {\n timeOut: 0,\n type: 'Tailwind3',\n radius: radius\n };\n create_material_element(container, uniqueID, makeElement, CLS_TAILWIND3SPIN);\n mat_calculate_attributes(radius, container, 'Tailwind3', CLS_TAILWIND3SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createMaterial3Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = {\n timeOut: 0,\n type: 'Material3',\n radius: radius\n };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIAL3SPIN);\n mat_calculate_attributes(radius, container, 'Material3', CLS_MATERIAL3SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrap4Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = {\n timeOut: 0,\n type: 'Bootstrap4',\n radius: radius\n };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT4SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap4', CLS_BOOT4SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrap5Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = {\n timeOut: 0,\n type: 'Bootstrap5',\n radius: radius\n };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT5SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap5', CLS_BOOT5SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} uniqueID - specifies the id.\n * @param {number} radius - specifies the radius\n * @returns {void}\n */\nfunction startMatAnimate(container, uniqueID, radius) {\n var globalObject = {};\n var timeOutVar = 0;\n globalTimeOut[\"\" + uniqueID].timeOut = 0;\n globalObject[\"\" + uniqueID] = globalVariables(uniqueID, radius, 0, 0);\n var spinnerInfo = {\n uniqueID: uniqueID,\n container: container,\n globalInfo: globalObject,\n timeOutVar: timeOutVar\n };\n animateMaterial(spinnerInfo);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createFabricSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = {\n timeOut: 0,\n type: 'Fabric',\n radius: radius\n };\n create_fabric_element(container, uniqueID, CLS_FABRICSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FABRICSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createFluentSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = {\n timeOut: 0,\n type: 'Fluent',\n radius: radius\n };\n create_fabric_element(container, uniqueID, CLS_FLUENTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FLUENTSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createFluent2Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = {\n timeOut: 0,\n type: 'Fluent2',\n radius: radius\n };\n create_fabric_element(container, uniqueID, CLS_FLUENT2SPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FLUENT2SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createTailwindSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = {\n timeOut: 0,\n type: 'Tailwind',\n radius: radius\n };\n create_fabric_element(container, uniqueID, CLS_TAILWINDSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_TAILWINDSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createHighContrastSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = {\n timeOut: 0,\n type: 'HighContrast',\n radius: radius\n };\n create_fabric_element(container, uniqueID, CLS_HIGHCONTRASTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_HIGHCONTRASTSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @returns {string} - returns the string\n */\nfunction getTheme(container) {\n var theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n}\n/**\n *\n * @param {string} theme - specifies the theme\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction setTheme(theme, container, radius, makeElement) {\n var innerContainer = container.querySelector('.' + CLS_SPININWRAP);\n var svg = innerContainer.querySelector('svg');\n if (!isNullOrUndefined(svg)) {\n innerContainer.removeChild(svg);\n }\n switch (theme) {\n case 'Material':\n createMaterialSpinner(innerContainer, radius, makeElement);\n break;\n case 'Material3':\n createMaterial3Spinner(innerContainer, radius, makeElement);\n break;\n case 'Fabric':\n createFabricSpinner(innerContainer, radius, makeElement);\n break;\n case 'Fluent':\n createFluentSpinner(innerContainer, radius, makeElement);\n break;\n case 'Fluent2':\n createFluent2Spinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap':\n createBootstrapSpinner(innerContainer, radius, makeElement);\n break;\n case 'HighContrast':\n createHighContrastSpinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap4':\n createBootstrap4Spinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap5':\n createBootstrap5Spinner(innerContainer, radius, makeElement);\n break;\n case 'Tailwind':\n case 'Tailwind-dark':\n createTailwindSpinner(innerContainer, radius, makeElement);\n break;\n case 'Tailwind3':\n createTailwind3Spinner(innerContainer, radius, makeElement);\n break;\n }\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrapSpinner(innerContainer, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = {\n timeOut: 0,\n type: 'Bootstrap',\n radius: radius\n };\n create_bootstrap_element(innerContainer, uniqueID, makeElement);\n boot_calculate_attributes(innerContainer, radius);\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {string} uniqueID - specifies the id\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_bootstrap_element(innerContainer, uniqueID, makeElement) {\n var svgBoot = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var viewBoxValue = 64;\n var trans = 32;\n var defaultRadius = 2;\n svgBoot.setAttribute('id', uniqueID);\n svgBoot.setAttribute('class', CLS_BOOTSPIN);\n svgBoot.setAttribute('viewBox', '0 0 ' + viewBoxValue + ' ' + viewBoxValue);\n innerContainer.insertBefore(svgBoot, innerContainer.firstChild);\n for (var item = 0; item <= 7; item++) {\n var bootCircle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n bootCircle.setAttribute('class', CLS_SPINCIRCLE + '_' + item);\n bootCircle.setAttribute('r', defaultRadius + '');\n bootCircle.setAttribute('transform', 'translate(' + trans + ',' + trans + ')');\n svgBoot.appendChild(bootCircle);\n }\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {number} radius - specifies the radius\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction boot_calculate_attributes(innerContainer, radius) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var x = 0;\n var y = 0;\n var rad = 24;\n svg.style.width = svg.style.height = radius + 'px';\n var startArc = 90;\n for (var item = 0; item <= 7; item++) {\n var start = defineArcPoints(x, y, rad, startArc);\n var circleEle = svg.querySelector('.' + CLS_SPINCIRCLE + '_' + item);\n circleEle.setAttribute('cx', start.x + '');\n circleEle.setAttribute('cy', start.y + '');\n startArc = startArc >= 360 ? 0 : startArc;\n startArc = startArc + 45;\n }\n}\n/**\n *\n * @param {number} begin - specifies the number\n * @param {number} stop - specifirs the number\n * @returns {number[]} - returns the array of number\n */\nfunction generateSeries(begin, stop) {\n var series = [];\n var start = begin;\n var end = stop;\n var increment = false;\n var count = 1;\n formSeries(start);\n /**\n *\n * @param {number} i - specifies the number\n * @returns {void}\n */\n function formSeries(i) {\n series.push(i);\n if (i !== end || count === 1) {\n if (i <= start && i > 1 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n } else if (i === 1) {\n i = 7;\n i = parseFloat((i + 0.2).toFixed(2));\n increment = true;\n } else if (i < 8 && increment) {\n i = parseFloat((i + 0.2).toFixed(2));\n if (i === 8) {\n increment = false;\n }\n } else if (i <= 8 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n ++count;\n formSeries(i);\n }\n }\n return series;\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @returns {void}\n */\nfunction animateBootstrap(innerContainer) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var id = svg.getAttribute('id');\n for (var i = 1; i <= 8; i++) {\n var circleEle = innerContainer.getElementsByClassName('e-path-circle_' + (i === 8 ? 0 : i))[0];\n rotation(circleEle, i, i, generateSeries(i, i), id);\n }\n /**\n *\n * @param {SVGCircleElement} circle - specifies the circl element\n * @param {number} start - specifies the number\n * @param {number} end - specifies the end number\n * @param {number} series - specifies the series\n * @param {string} id - specifies the id\n * @returns {void}\n */\n function rotation(circle, start, end, series, id) {\n var count = 0;\n boot_animate(start);\n // eslint-disable-next-line\n function boot_animate(radius) {\n if (globalTimeOut[\"\" + id].isAnimate) {\n ++count;\n circle.setAttribute('r', radius + '');\n if (count >= series.length) {\n count = 0;\n }\n // eslint-disable-next-line\n globalTimeOut[id].timeOut = setTimeout(boot_animate.bind(null, series[count]), 18);\n }\n }\n }\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} template - specifies the template\n * @param {string} cssClass - specifies the css class.\n * @returns {void}\n */\nfunction replaceContent(container, template, cssClass) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var inner = container.querySelector('.e-spinner-inner');\n inner.innerHTML = template;\n}\n/**\n *\n * @param {string} width - specifies the width\n * @param {string} theme - specifies the string\n * @returns {number} - returns the number\n */\nfunction calculateRadius(width, theme) {\n var defaultSize;\n switch (theme) {\n case 'Material':\n defaultSize = DEFT_MAT_WIDTH;\n break;\n case 'Material3':\n defaultSize = DEFT_MAT3_WIDTH;\n break;\n case 'Fabric':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Tailwind':\n case 'Tailwind-dark':\n case 'Tailwind3':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Fluent':\n defaultSize = DEFT_FLUENT_WIDTH;\n break;\n case 'Fluent2':\n defaultSize = DEFT_FLUENT2_WIDTH;\n break;\n case 'Bootstrap4':\n defaultSize = DEFT_BOOT4_WIDTH;\n break;\n case 'Bootstrap5':\n defaultSize = DEFT_BOOT5_WIDTH;\n break;\n default:\n defaultSize = DEFT_BOOT_WIDTH;\n }\n width = width ? parseFloat(width + '') : defaultSize;\n return theme === 'Bootstrap' ? width : width / 2;\n}\n/**\n *\n * @param {string} id - specifies the id\n * @param {number} radius - specifies the radius\n * @param {number} count - specifies the number count\n * @param {number} previousId - specifies the previous id\n * @returns {GlobalVariables} - returns the variables\n */\nfunction globalVariables(id, radius, count, previousId) {\n return {\n radius: radius,\n count: count,\n previousId: previousId\n };\n}\n/**\n * @returns {string} - returns the string\n */\n// eslint-disable-next-line\nfunction random_generator() {\n var random = '';\n var combine = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n for (var i = 0; i < 5; i++) {\n random += combine.charAt(Math.floor(Math.random() * combine.length));\n }\n return random;\n}\n/**\n *\n * @param {HTMLElement} innerCon - specifies the element\n * @param {string} uniqueID - specifies the unique id\n * @param {string} themeClass - specifies the string\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_fabric_element(innerCon, uniqueID, themeClass, makeElement) {\n var svgFabric = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgFabric.setAttribute('id', uniqueID);\n svgFabric.setAttribute('class', themeClass);\n var fabricCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n var fabricCircleArc = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCircleArc.setAttribute('class', CLS_SPINARC);\n innerCon.insertBefore(svgFabric, innerCon.firstChild);\n svgFabric.appendChild(fabricCirclePath);\n svgFabric.appendChild(fabricCircleArc);\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {string} uniqueID - specifies the unique id\n * @param {createElementParams} makeElement - specifies the element\n * @param {string} cls - specifies the string\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_material_element(innerContainer, uniqueID, makeElement, cls) {\n var svgMaterial = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var matCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n svgMaterial.setAttribute('class', cls);\n svgMaterial.setAttribute('id', uniqueID);\n matCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n innerContainer.insertBefore(svgMaterial, innerContainer.firstChild);\n svgMaterial.appendChild(matCirclePath);\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_spinner_container(target, makeElement) {\n var spinnerContainer = makeElement('div', {});\n var spinnerInnerContainer = makeElement('div', {});\n spinnerContainer.classList.add(CLS_SPINWRAP);\n spinnerInnerContainer.classList.add(CLS_SPININWRAP);\n spinnerInnerContainer.setAttribute('aria-disabled', 'true');\n target.appendChild(spinnerContainer);\n spinnerContainer.appendChild(spinnerInnerContainer);\n // eslint-disable-next-line\n return {\n wrap: spinnerContainer,\n inner_wrap: spinnerInnerContainer\n };\n}\n/**\n *\n * @param {SpinnerInfo} spinnerInfo - specifies the spinner\n * @returns {void}\n */\nfunction animateMaterial(spinnerInfo) {\n var start = 1;\n var end = 149;\n var duration = 1333;\n var max = 75;\n createCircle(start, end, easeAnimation, duration, spinnerInfo.globalInfo[spinnerInfo.uniqueID].count, max, spinnerInfo);\n spinnerInfo.globalInfo[spinnerInfo.uniqueID].count = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].count % 4;\n}\n/**\n *\n * @param {number} start - specifies the number\n * @param {number} end - specifies the end number\n * @param {Function} easing - specifies the function\n * @param {number} duration - specifies the duration\n * @param {number} count - specifies the count\n * @param {number} max - specifies the max number\n * @param {SpinnerInfo} spinnerInfo - specifies the spinner info\n * @returns {void}\n */\nfunction createCircle(start, end, easing, duration, count, max, spinnerInfo) {\n var id = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId;\n var startTime = new Date().getTime();\n var change = end - start;\n var diameter = getSize(spinnerInfo.globalInfo[spinnerInfo.uniqueID].radius * 2 + '');\n var strokeSize = getStrokeSize(diameter);\n var rotate = -90 * (spinnerInfo.globalInfo[spinnerInfo.uniqueID].count || 0);\n mat_animation(spinnerInfo);\n // eslint-disable-next-line\n function mat_animation(spinnerInfo) {\n var currentTime = Math.max(0, Math.min(new Date().getTime() - startTime, duration));\n updatePath(easing(currentTime, start, change, duration), spinnerInfo.container);\n if (id === spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId && currentTime < duration) {\n // eslint-disable-next-line\n globalTimeOut[spinnerInfo.uniqueID].timeOut = setTimeout(mat_animation.bind(null, spinnerInfo), 1);\n } else {\n animateMaterial(spinnerInfo);\n }\n }\n /**\n *\n * @param {number} value - specifies the number value\n * @param {HTMLElement} container - specifies the container\n * @returns {void}\n */\n function updatePath(value, container) {\n if (!isNullOrUndefined(container.querySelector('svg.e-spin-material')) || !isNullOrUndefined(container.querySelector('svg.e-spin-material3')) || !isNullOrUndefined(container.querySelector('svg.e-spin-tailwind3'))) {\n var svg = void 0;\n if (!isNullOrUndefined(container.querySelector('svg.e-spin-material')) && !isNullOrUndefined(container.querySelector('svg.e-spin-material').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-material');\n } else if (!isNullOrUndefined(container.querySelector('svg.e-spin-material3')) && !isNullOrUndefined(container.querySelector('svg.e-spin-material3').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-material3');\n } else if (!isNullOrUndefined(container.querySelector('svg.e-spin-tailwind3')) && !isNullOrUndefined(container.querySelector('svg.e-spin-tailwind3').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-tailwind3');\n }\n if (!isNullOrUndefined(svg)) {\n var path = svg.querySelector('path.e-path-circle');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, value, max) + '');\n path.setAttribute('transform', 'rotate(' + rotate + ' ' + diameter / 2 + ' ' + diameter / 2 + ')');\n }\n }\n }\n}\n/**\n *\n * @param {number} radius - specifies the number\n * @param {HTMLElement} container - specifies the element\n * @param {string} type - specifies the string type\n * @param {string} cls - specifies the string\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction mat_calculate_attributes(radius, container, type, cls) {\n var diameter = radius * 2;\n var svg = container.querySelector('svg.' + cls);\n var path = svg.querySelector('path.e-path-circle');\n var strokeSize = getStrokeSize(diameter);\n var transformOrigin = diameter / 2 + 'px';\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.width = svg.style.height = diameter + 'px';\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n path.setAttribute('d', drawArc(diameter, strokeSize));\n if (type === 'Material' || type === 'Material3' || type === 'Fluent2' || type === 'Tailwind3') {\n path.setAttribute('stroke-width', strokeSize + '');\n path.setAttribute('stroke-dasharray', (diameter - strokeSize) * Math.PI * 0.75 + '');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, 1, 75) + '');\n }\n}\n/**\n *\n * @param {string} value - specifies the value\n * @returns {number} - returns the number\n */\nfunction getSize(value) {\n var parsed = parseFloat(value);\n return parsed;\n}\n/**\n *\n * @param {number} diameter - specifies the diameter\n * @param {number} strokeSize - specifies the size\n * @returns {string} - returns the string\n */\nfunction drawArc(diameter, strokeSize) {\n var radius = diameter / 2;\n var offset = strokeSize / 2;\n return 'M' + radius + ',' + offset + 'A' + (radius - offset) + ',' + (radius - offset) + ' 0 1 1 ' + offset + ',' + radius;\n}\n/**\n *\n * @param {number} diameter - specifies the number\n * @returns {number} - returns the number\n */\nfunction getStrokeSize(diameter) {\n return 10 / 100 * diameter;\n}\n/**\n *\n * @param {number} diameter - specifies the number\n * @param {number} strokeSize - specifies the stroke size\n * @param {number} value - specifies the value\n * @param {number} max - specifies the max number\n * @returns {number} - returns the number\n */\nfunction getDashOffset(diameter, strokeSize, value, max) {\n return (diameter - strokeSize) * Math.PI * (3 * max / 100 - value / 100);\n}\n/**\n *\n * @param {number} current - specifies the number\n * @param {number} start - specifies the stroke size\n * @param {number} change - specifies the value\n * @param {number} duration - specifies the max number\n * @returns {number} - returns the number\n */\nfunction easeAnimation(current, start, change, duration) {\n var timestamp = (current /= duration) * current;\n var timecount = timestamp * current;\n return start + change * (6 * timecount * timestamp + -15 * timestamp * timestamp + 10 * timecount);\n}\n/**\n *\n * @param {number} radius - specifies the number\n * @param {HTMLElement} innerConainer - specifies the element\n * @param {string} trgClass - specifies the class\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction fb_calculate_attributes(radius, innerConainer, trgClass) {\n var centerX = radius;\n var centerY = radius;\n var diameter = radius * 2;\n var startArc = 315;\n var endArc = 45;\n var svg = innerConainer.querySelector('.' + trgClass);\n var circle = svg.querySelector('.e-path-circle');\n var path = svg.querySelector('.e-path-arc');\n var transformOrigin = diameter / 2 + 'px';\n circle.setAttribute('d', defineCircle(centerX, centerY, radius));\n path.setAttribute('d', defineArc(centerX, centerY, radius, startArc, endArc));\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n svg.style.width = svg.style.height = diameter + 'px';\n}\n/**\n *\n * @param {number} centerX - specifies the number\n * @param {number} centerY - specifies the stroke size\n * @param {number} radius - specifies the value\n * @param {number} angle - specifies the max number\n * @returns {number} - returns the number\n */\nfunction defineArcPoints(centerX, centerY, radius, angle) {\n var radians = (angle - 90) * Math.PI / 180.0;\n return {\n x: centerX + radius * Math.cos(radians),\n y: centerY + radius * Math.sin(radians)\n };\n}\n/**\n *\n * @param {number} x - specifies the number\n * @param {number} y - specifies the stroke size\n * @param {number} radius - specifies the radius\n * @param {number} startArc - specifies the value\n * @param {number} endArc - specifies the max number\n * @returns {number} - returns the number\n */\nfunction defineArc(x, y, radius, startArc, endArc) {\n var start = defineArcPoints(x, y, radius, endArc);\n var end = defineArcPoints(x, y, radius, startArc);\n var d = ['M', start.x, start.y, 'A', radius, radius, 0, 0, 0, end.x, end.y].join(' ');\n return d;\n}\n/**\n *\n * @param {number} x - specifies the number\n * @param {number} y - specifies the stroke size\n * @param {number} radius - specifies the value\n * @returns {string} - returns the string\n */\nfunction defineCircle(x, y, radius) {\n var d = ['M', x, y, 'm', -radius, 0, 'a', radius, radius, 0, 1, 0, radius * 2, 0, 'a', radius, radius, 0, 1, 0, -radius * 2, 0].join(' ');\n return d;\n}\n/**\n * Function to show the Spinner.\n *\n * @param {HTMLElement} container - Specify the target of the Spinner.\n * @returns {void}\n * @private\n */\nexport function showSpinner(container) {\n showHideSpinner(container, false);\n container = null;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {boolean} isHide - specifies the boolean\n * @returns {void}\n */\nfunction showHideSpinner(container, isHide) {\n var spinnerWrap;\n if (container) {\n if (container.classList.contains(CLS_SPINWRAP)) {\n spinnerWrap = container;\n } else {\n var spinWrapCollection = container.querySelectorAll('.' + CLS_SPINWRAP);\n if (Browser.isIE) {\n for (var i = 0; i < spinWrapCollection.length; i++) {\n if (spinWrapCollection[i].parentElement && spinWrapCollection[i].parentElement === container) {\n spinnerWrap = spinWrapCollection[i];\n break;\n }\n }\n } else {\n spinnerWrap = Array.from(spinWrapCollection).find(function (wrap) {\n return wrap.parentElement === container;\n }) || null;\n }\n }\n }\n if (container && spinnerWrap) {\n var inner = spinnerWrap.querySelector('.' + CLS_SPININWRAP);\n var spinCheck = isHide ? !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_HIDESPIN) : !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_SHOWSPIN);\n if (spinCheck) {\n var svgEle = spinnerWrap.querySelector('svg');\n if (isNullOrUndefined(svgEle)) {\n return;\n }\n var id = svgEle.getAttribute('id');\n globalTimeOut[\"\" + id].isAnimate = !isHide;\n switch (globalTimeOut[\"\" + id].type) {\n case 'Material':\n case 'Material3':\n case 'Tailwind3':\n if (isHide) {\n clearTimeout(globalTimeOut[id].timeOut);\n } else {\n startMatAnimate(inner, id, globalTimeOut[id].radius);\n }\n break;\n case 'Bootstrap':\n if (isHide) {\n clearTimeout(globalTimeOut[id].timeOut);\n } else {\n animateBootstrap(inner);\n }\n break;\n }\n }\n if (isHide) {\n classList(spinnerWrap, [CLS_HIDESPIN], [CLS_SHOWSPIN]);\n } else {\n classList(spinnerWrap, [CLS_SHOWSPIN], [CLS_HIDESPIN]);\n }\n container = null;\n }\n}\n/**\n * Function to hide the Spinner.\n *\n * @param {HTMLElement} container - Specify the target of the Spinner.\n * @returns {void}\n * @private\n */\nexport function hideSpinner(container) {\n showHideSpinner(container, true);\n container = null;\n}\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : setSpinner({ cssClass: 'custom-css'; type: 'Material' });\n * ```\n *\n * @param {SetSpinnerArgs} args - specifies the args\n * @param {createElementParams} internalCreateElement - specifies the element params\n * @returns {void}\n * @private\n */\nexport function setSpinner(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.template !== undefined) {\n spinTemplate = args.template;\n if (args.template !== undefined) {\n spinCSSClass = args.cssClass;\n }\n }\n var container = document.querySelectorAll('.' + CLS_SPINWRAP);\n for (var index = 0; index < container.length; index++) {\n ensureTemplate(args.template, container[index], args.type, args.cssClass, makeElement);\n }\n}\n/**\n *\n * @param {string} template - specifies the string\n * @param {HTMLElement} container - specifies the container\n * @param {string} theme - specifies the theme\n * @param {string} cssClass - specifies the string class\n * @param {createElementParams} makeEle - specifies the params\n * @returns {void}\n */\nfunction ensureTemplate(template, container, theme, cssClass, makeEle) {\n if (isNullOrUndefined(template) && !container.classList.contains(CLS_SPINTEMPLATE)) {\n replaceTheme(container, theme, cssClass, makeEle);\n if (container.classList.contains(CLS_SHOWSPIN)) {\n container.classList.remove(CLS_SHOWSPIN);\n showSpinner(container);\n } else {\n container.classList.remove(CLS_HIDESPIN);\n hideSpinner(container);\n }\n } else {\n spinTemplate = template;\n if (!isNullOrUndefined(cssClass)) {\n spinCSSClass = cssClass;\n }\n if (!isNullOrUndefined(spinTemplate)) {\n replaceContent(container, spinTemplate, spinCSSClass);\n }\n }\n}\n/**\n *\n * @param {HTMLElement} container - specifies the container\n * @param {string} theme - specifies the theme\n * @param {string} cssClass - specifies the string class\n * @param {createElementParams} makeEle - specifies the params\n * @returns {void}\n */\nfunction replaceTheme(container, theme, cssClass, makeEle) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var svgElement = container.querySelector('svg');\n if (!isNullOrUndefined(svgElement)) {\n var radius = theme === 'Bootstrap' ? parseFloat(svgElement.style.height) : parseFloat(svgElement.style.height) / 2;\n var classNames = svgElement.getAttribute('class');\n var svgClassList = classNames.split(/\\s/);\n if (svgClassList.indexOf('e-spin-material') >= 0) {\n var id = svgElement.getAttribute('id');\n clearTimeout(globalTimeOut[\"\" + id].timeOut);\n }\n setTheme(theme, container, radius, makeEle);\n }\n}","/**\n * FloatLable Moduel\n * Specifies whether to display the floating label above the input element.\n */\nimport { removeClass, addClass, detach } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, createElement, getUniqueID } from '@syncfusion/ej2-base';\nvar FLOATLINE = 'e-float-line';\nvar FLOATTEXT = 'e-float-text';\nvar LABELTOP = 'e-label-top';\nvar LABELBOTTOM = 'e-label-bottom';\n/* eslint-disable valid-jsdoc */\n/**\n * Function to create Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLElement} element - The given html element.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function createFloatLabel(overAllWrapper, searchWrapper, element, inputElement, value, floatLabelType, placeholder) {\n var floatLinelement = createElement('span', {\n className: FLOATLINE\n });\n var floatLabelElement = createElement('label', {\n className: FLOATTEXT\n });\n var id = element.getAttribute('id') ? element.getAttribute('id') : getUniqueID('ej2_multiselect');\n element.id = id;\n if (!isNullOrUndefined(element.id) && element.id !== '') {\n floatLabelElement.id = 'label_' + element.id.replace(/ /g, '_');\n floatLabelElement.setAttribute('for', element.id);\n attributes(inputElement, {\n 'aria-labelledby': floatLabelElement.id\n });\n }\n if (!isNullOrUndefined(inputElement.placeholder) && inputElement.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceholder(inputElement.placeholder);\n inputElement.removeAttribute('placeholder');\n }\n floatLabelElement.innerText = encodePlaceholder(placeholder);\n searchWrapper.appendChild(floatLinelement);\n searchWrapper.appendChild(floatLabelElement);\n overAllWrapper.classList.add('e-float-input');\n updateFloatLabelState(value, floatLabelElement);\n if (floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(LABELBOTTOM)) {\n removeClass([floatLabelElement], LABELBOTTOM);\n }\n addClass([floatLabelElement], LABELTOP);\n }\n}\n/**\n * Function to update status of the Float Label element.\n *\n * @param {string[] | number[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLElement} label - Float label element.\n */\nexport function updateFloatLabelState(value, label) {\n if (value && value.length > 0) {\n addClass([label], LABELTOP);\n removeClass([label], LABELBOTTOM);\n } else {\n removeClass([label], LABELTOP);\n addClass([label], LABELBOTTOM);\n }\n}\n/**\n * Function to remove Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function removeFloating(overAllWrapper, componentWrapper, searchWrapper, inputElement, value, floatLabelType, placeholder) {\n var placeholderElement = componentWrapper.querySelector('.' + FLOATTEXT);\n var floatLine = componentWrapper.querySelector('.' + FLOATLINE);\n var placeholderText;\n if (!isNullOrUndefined(placeholderElement)) {\n placeholderText = placeholderElement.innerText;\n detach(searchWrapper.querySelector('.' + FLOATTEXT));\n setPlaceHolder(value, inputElement, placeholderText);\n if (!isNullOrUndefined(floatLine)) {\n detach(searchWrapper.querySelector('.' + FLOATLINE));\n }\n } else {\n placeholderText = placeholder !== null ? placeholder : '';\n setPlaceHolder(value, inputElement, placeholderText);\n }\n overAllWrapper.classList.remove('e-float-input');\n}\n/**\n * Function to set the placeholder to the element.\n *\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function setPlaceHolder(value, inputElement, placeholder) {\n if (value && value.length) {\n inputElement.placeholder = '';\n } else {\n inputElement.placeholder = placeholder;\n }\n}\n/**\n * Function for focusing the Float Element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n */\nexport function floatLabelFocus(overAllWrapper, componentWrapper) {\n overAllWrapper.classList.add('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (!isNullOrUndefined(label)) {\n addClass([label], LABELTOP);\n if (label.classList.contains(LABELBOTTOM)) {\n removeClass([label], LABELBOTTOM);\n }\n }\n}\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n * Function to focus the Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function floatLabelBlur(overAllWrapper, componentWrapper, value, floatLabelType, placeholder) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n overAllWrapper.classList.remove('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (value && value.length <= 0 && floatLabelType === 'Auto' && !isNullOrUndefined(label)) {\n if (label.classList.contains(LABELTOP)) {\n removeClass([label], LABELTOP);\n }\n addClass([label], LABELBOTTOM);\n }\n}\nexport function encodePlaceholder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanElement = document.createElement('span');\n spanElement.innerHTML = '<input placeholder=\"' + placeholder + '\"/>';\n var hiddenInput = spanElement.children[0];\n result = hiddenInput.placeholder;\n }\n return result;\n}\n/* eslint-enable valid-jsdoc */","import hyphenate from 'fbjs/lib/hyphenateStyleName';\nimport React, { cloneElement, Component, createElement } from 'react';\nimport Stylis from 'stylis';\nimport _insertRulePlugin from 'stylis-rule-sheet';\nimport PropTypes from 'prop-types';\nimport hoistStatics from 'hoist-non-react-statics';\nimport { isValidElementType } from 'react-is';\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n return target;\n};\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n// \nvar isPlainObject = function (x) {\n return (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' && x.constructor === Object;\n};\n\n// \n\n/**\n * Parse errors.md and turn it into a simple hash of code: message\n */\nvar ERRORS = process.env.NODE_ENV !== 'production' ? {\n \"1\": \"Cannot create styled-component for component: %s.\\n\\n\",\n \"2\": \"Can't collect styles once you've consumed a `ServerStyleSheet`'s styles! `ServerStyleSheet` is a one off instance for each server-side render cycle.\\n\\n* Are you trying to reuse it across renders?\\n* Are you accidentally calling collectStyles twice?\\n\\n\",\n \"3\": \"Streaming SSR is only supported in a Node.js environment; Please do not try to call this method in the browser.\\n\\n\",\n \"4\": \"The `StyleSheetManager` expects a valid target or sheet prop!\\n\\n* Does this error occur on the client and is your target falsy?\\n* Does this error occur on the server and is the sheet falsy?\\n\\n\",\n \"5\": \"The clone method cannot be used on the client!\\n\\n* Are you running in a client-like environment on the server?\\n* Are you trying to run SSR on the client?\\n\\n\",\n \"6\": \"Trying to insert a new style tag, but the given Node is unmounted!\\n\\n* Are you using a custom target that isn't mounted?\\n* Does your document not have a valid head element?\\n* Have you accidentally removed a style tag manually?\\n\\n\",\n \"7\": \"ThemeProvider: Please return an object from your \\\"theme\\\" prop function, e.g.\\n\\n```js\\ntheme={() => ({})}\\n```\\n\\n\",\n \"8\": \"ThemeProvider: Please make your \\\"theme\\\" prop an object.\\n\\n\",\n \"9\": \"Missing document `<head>`\\n\\n\",\n \"10\": \"Cannot find a StyleSheet instance. Usually this happens if there are multiple copies of styled-components loaded at once. Check out this issue for how to troubleshoot and fix the common cases where this situation can happen: https://github.com/styled-components/styled-components/issues/1941#issuecomment-417862021\\n\\n\",\n \"11\": \"A plain React class (%s) has been interpolated into styles, probably as a component selector (https://www.styled-components.com/docs/advanced#referring-to-other-components). Only styled-component classes can be targeted in this fashion.\"\n} : {};\n\n/**\n * super basic version of sprintf\n */\nfunction format() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var a = args[0];\n var b = [];\n var c = void 0;\n for (c = 1; c < args.length; c += 1) {\n b.push(args[c]);\n }\n b.forEach(function (d) {\n a = a.replace(/%[a-z]/, d);\n });\n return a;\n}\n\n/**\n * Create an error file out of errors.md for development and a simple web link to the full errors\n * in production mode.\n */\n\nvar StyledComponentsError = function (_Error) {\n inherits(StyledComponentsError, _Error);\n function StyledComponentsError(code) {\n classCallCheck(this, StyledComponentsError);\n for (var _len2 = arguments.length, interpolations = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n interpolations[_key2 - 1] = arguments[_key2];\n }\n if (process.env.NODE_ENV === 'production') {\n var _this = possibleConstructorReturn(this, _Error.call(this, 'An error occurred. See https://github.com/styled-components/styled-components/blob/master/src/utils/errors.md#' + code + ' for more information. ' + (interpolations ? 'Additional arguments: ' + interpolations.join(', ') : '')));\n } else {\n var _this = possibleConstructorReturn(this, _Error.call(this, format.apply(undefined, [ERRORS[code]].concat(interpolations))));\n }\n return possibleConstructorReturn(_this);\n }\n return StyledComponentsError;\n}(Error);\n\n// \n\nvar objToCss = function objToCss(obj, prevKey) {\n var css = Object.keys(obj).filter(function (key) {\n var chunk = obj[key];\n return chunk !== undefined && chunk !== null && chunk !== false && chunk !== '';\n }).map(function (key) {\n if (isPlainObject(obj[key])) return objToCss(obj[key], key);\n return hyphenate(key) + ': ' + obj[key] + ';';\n }).join(' ');\n return prevKey ? prevKey + ' {\\n ' + css + '\\n}' : css;\n};\nvar flatten = function flatten(chunks, executionContext) {\n return chunks.reduce(function (ruleSet, chunk) {\n /* Remove falsey values */\n if (chunk === undefined || chunk === null || chunk === false || chunk === '') {\n return ruleSet;\n }\n\n /* Flatten ruleSet */\n if (Array.isArray(chunk)) {\n ruleSet.push.apply(ruleSet, flatten(chunk, executionContext));\n return ruleSet;\n }\n\n /* Handle other components */\n if (chunk.hasOwnProperty('styledComponentId')) {\n // $FlowFixMe not sure how to make this pass\n ruleSet.push('.' + chunk.styledComponentId);\n return ruleSet;\n }\n\n /* Either execute or defer the function */\n if (typeof chunk === 'function') {\n if (executionContext) {\n var nextChunk = chunk(executionContext);\n /* Throw if a React Element was given styles */\n if (React.isValidElement(nextChunk)) {\n var elementName = chunk.displayName || chunk.name;\n throw new StyledComponentsError(11, elementName);\n }\n ruleSet.push.apply(ruleSet, flatten([nextChunk], executionContext));\n } else ruleSet.push(chunk);\n return ruleSet;\n }\n\n /* Handle objects */\n ruleSet.push(\n // $FlowFixMe have to add %checks somehow to isPlainObject\n isPlainObject(chunk) ? objToCss(chunk) : chunk.toString());\n return ruleSet;\n }, []);\n};\n\n// \n\nvar COMMENT_REGEX = /^\\s*\\/\\/.*$/gm;\n\n// NOTE: This stylis instance is only used to split rules from SSR'd style tags\nvar stylisSplitter = new Stylis({\n global: false,\n cascade: true,\n keyframe: false,\n prefix: false,\n compress: false,\n semicolon: true\n});\nvar stylis = new Stylis({\n global: false,\n cascade: true,\n keyframe: false,\n prefix: true,\n compress: false,\n semicolon: false // NOTE: This means \"autocomplete missing semicolons\"\n});\n\n// Wrap `insertRulePlugin to build a list of rules,\n// and then make our own plugin to return the rules. This\n// makes it easier to hook into the existing SSR architecture\n\nvar parsingRules = [];\n// eslint-disable-next-line consistent-return\nvar returnRulesPlugin = function returnRulesPlugin(context) {\n if (context === -2) {\n var parsedRules = parsingRules;\n parsingRules = [];\n return parsedRules;\n }\n};\nvar parseRulesPlugin = _insertRulePlugin(function (rule) {\n parsingRules.push(rule);\n});\nstylis.use([parseRulesPlugin, returnRulesPlugin]);\nstylisSplitter.use([parseRulesPlugin, returnRulesPlugin]);\nvar stringifyRules = function stringifyRules(rules, selector, prefix) {\n var flatCSS = rules.join('').replace(COMMENT_REGEX, ''); // replace JS comments\n\n var cssStr = selector && prefix ? prefix + ' ' + selector + ' { ' + flatCSS + ' }' : flatCSS;\n return stylis(prefix || !selector ? '' : selector, cssStr);\n};\nvar splitByRules = function splitByRules(css) {\n return stylisSplitter('', css);\n};\n\n// \n\nfunction isStyledComponent(target) /* : %checks */{\n return (\n // $FlowFixMe TODO: flow for styledComponentId\n typeof target === 'function' && typeof target.styledComponentId === 'string'\n );\n}\n\n// \n\n/* This function is DEPRECATED and will be removed on the next major version release.\n * It was needed to rehydrate all style blocks prepended to chunks before React\n * tries to rehydrate its HTML stream. Since the master StyleSheet will now detect\n * the use of streamed style tags and will perform the rehydration earlier when needed\n * this function will not be needed anymore */\nfunction consolidateStreamedStyles() {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn('styled-components automatically does streaming SSR rehydration now.\\n' + 'Calling consolidateStreamedStyles manually is no longer necessary and a noop now.\\n' + '- Please remove the consolidateStreamedStyles call from your client.');\n }\n}\n\n// \n/* eslint-disable no-bitwise */\n\n/* This is the \"capacity\" of our alphabet i.e. 2x26 for all letters plus their capitalised\n * counterparts */\nvar charsLength = 52;\n\n/* start at 75 for 'a' until 'z' (25) and then start at 65 for capitalised letters */\nvar getAlphabeticChar = function getAlphabeticChar(code) {\n return String.fromCharCode(code + (code > 25 ? 39 : 97));\n};\n\n/* input a number, usually a hash and convert it to base-52 */\nvar generateAlphabeticName = function generateAlphabeticName(code) {\n var name = '';\n var x = void 0;\n\n /* get a char and divide by alphabet-length */\n for (x = code; x > charsLength; x = Math.floor(x / charsLength)) {\n name = getAlphabeticChar(x % charsLength) + name;\n }\n return getAlphabeticChar(x % charsLength) + name;\n};\n\n// \n\nvar interleave = function (strings, interpolations) {\n var result = [strings[0]];\n for (var i = 0, len = interpolations.length; i < len; i += 1) {\n result.push(interpolations[i], strings[i + 1]);\n }\n return result;\n};\n\n// \nvar EMPTY_ARRAY = Object.freeze([]);\nvar EMPTY_OBJECT = Object.freeze({});\n\n// \n\nvar css = function (styles) {\n for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n interpolations[_key - 1] = arguments[_key];\n }\n if (typeof styles === 'function' || isPlainObject(styles)) {\n // $FlowFixMe\n return flatten(interleave(EMPTY_ARRAY, [styles].concat(interpolations)));\n }\n\n // $FlowFixMe\n return flatten(interleave(styles, interpolations));\n};\n\n// \n\nvar SC_ATTR = typeof process !== 'undefined' && process.env.SC_ATTR || 'data-styled-components';\nvar SC_STREAM_ATTR = 'data-styled-streamed';\nvar CONTEXT_KEY = '__styled-components-stylesheet__';\nvar IS_BROWSER = typeof window !== 'undefined' && 'HTMLElement' in window;\nvar DISABLE_SPEEDY = process.env.NODE_ENV !== 'production';\n\n// \nvar SC_COMPONENT_ID = /^[^\\S\\n]*?\\/\\* sc-component-id:\\s*(\\S+)\\s+\\*\\//gm;\nvar extractComps = function (maybeCSS) {\n var css = '' + (maybeCSS || ''); // Definitely a string, and a clone\n var existingComponents = [];\n css.replace(SC_COMPONENT_ID, function (match, componentId, matchIndex) {\n existingComponents.push({\n componentId: componentId,\n matchIndex: matchIndex\n });\n return match;\n });\n return existingComponents.map(function (_ref, i) {\n var componentId = _ref.componentId,\n matchIndex = _ref.matchIndex;\n var nextComp = existingComponents[i + 1];\n var cssFromDOM = nextComp ? css.slice(matchIndex, nextComp.matchIndex) : css.slice(matchIndex);\n return {\n componentId: componentId,\n cssFromDOM: cssFromDOM\n };\n });\n};\n\n// \n/* eslint-disable camelcase, no-undef */\n\nvar getNonce = function () {\n return typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n};\n\n// \n// Helper to call a given function, only once\nvar once = function (cb) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n cb();\n }\n };\n};\n\n// \n/* These are helpers for the StyleTags to keep track of the injected\n * rule names for each (component) ID that they're keeping track of.\n * They're crucial for detecting whether a name has already been\n * injected.\n * (This excludes rehydrated names) */\n\n/* adds a new ID:name pairing to a names dictionary */\nvar addNameForId = function addNameForId(names, id, name) {\n if (name) {\n // eslint-disable-next-line no-param-reassign\n var namesForId = names[id] || (names[id] = Object.create(null));\n namesForId[name] = true;\n }\n};\n\n/* resets an ID entirely by overwriting it in the dictionary */\nvar resetIdNames = function resetIdNames(names, id) {\n // eslint-disable-next-line no-param-reassign\n names[id] = Object.create(null);\n};\n\n/* factory for a names dictionary checking the existance of an ID:name pairing */\nvar hasNameForId = function hasNameForId(names) {\n return function (id, name) {\n return names[id] !== undefined && names[id][name];\n };\n};\n\n/* stringifies names for the html/element output */\nvar stringifyNames = function stringifyNames(names) {\n var str = '';\n // eslint-disable-next-line guard-for-in\n for (var id in names) {\n str += Object.keys(names[id]).join(' ') + ' ';\n }\n return str.trim();\n};\n\n/* clones the nested names dictionary */\nvar cloneNames = function cloneNames(names) {\n var clone = Object.create(null);\n // eslint-disable-next-line guard-for-in\n for (var id in names) {\n clone[id] = _extends({}, names[id]);\n }\n return clone;\n};\n\n// \n\n/* These are helpers that deal with the insertRule (aka speedy) API\n * They are used in the StyleTags and specifically the speedy tag\n */\n\n/* retrieve a sheet for a given style tag */\nvar sheetForTag = function sheetForTag(tag) {\n // $FlowFixMe\n if (tag.sheet) return tag.sheet;\n\n /* Firefox quirk requires us to step through all stylesheets to find one owned by the given tag */\n var size = document.styleSheets.length;\n for (var i = 0; i < size; i += 1) {\n var sheet = document.styleSheets[i];\n // $FlowFixMe\n if (sheet.ownerNode === tag) return sheet;\n }\n\n /* we should always be able to find a tag */\n throw new StyledComponentsError(10);\n};\n\n/* insert a rule safely and return whether it was actually injected */\nvar safeInsertRule = function safeInsertRule(sheet, cssRule, index) {\n /* abort early if cssRule string is falsy */\n if (!cssRule) return false;\n var maxIndex = sheet.cssRules.length;\n try {\n /* use insertRule and cap passed index with maxIndex (no of cssRules) */\n sheet.insertRule(cssRule, index <= maxIndex ? index : maxIndex);\n } catch (err) {\n /* any error indicates an invalid rule */\n return false;\n }\n return true;\n};\n\n/* deletes `size` rules starting from `removalIndex` */\nvar deleteRules = function deleteRules(sheet, removalIndex, size) {\n var lowerBound = removalIndex - size;\n for (var i = removalIndex; i > lowerBound; i -= 1) {\n sheet.deleteRule(i);\n }\n};\n\n// \n\n/* this marker separates component styles and is important for rehydration */\nvar makeTextMarker = function makeTextMarker(id) {\n return '\\n/* sc-component-id: ' + id + ' */\\n';\n};\n\n/* add up all numbers in array up until and including the index */\nvar addUpUntilIndex = function addUpUntilIndex(sizes, index) {\n var totalUpToIndex = 0;\n for (var i = 0; i <= index; i += 1) {\n totalUpToIndex += sizes[i];\n }\n return totalUpToIndex;\n};\n\n/* create a new style tag after lastEl */\nvar makeStyleTag = function makeStyleTag(target, tagEl, insertBefore) {\n var el = document.createElement('style');\n el.setAttribute(SC_ATTR, '');\n var nonce = getNonce();\n if (nonce) {\n el.setAttribute('nonce', nonce);\n }\n\n /* Work around insertRule quirk in EdgeHTML */\n el.appendChild(document.createTextNode(''));\n if (target && !tagEl) {\n /* Append to target when no previous element was passed */\n target.appendChild(el);\n } else {\n if (!tagEl || !target || !tagEl.parentNode) {\n throw new StyledComponentsError(6);\n }\n\n /* Insert new style tag after the previous one */\n tagEl.parentNode.insertBefore(el, insertBefore ? tagEl : tagEl.nextSibling);\n }\n return el;\n};\n\n/* takes a css factory function and outputs an html styled tag factory */\nvar wrapAsHtmlTag = function wrapAsHtmlTag(css, names) {\n return function (additionalAttrs) {\n var nonce = getNonce();\n var attrs = [nonce && 'nonce=\"' + nonce + '\"', SC_ATTR + '=\"' + stringifyNames(names) + '\"', additionalAttrs];\n var htmlAttr = attrs.filter(Boolean).join(' ');\n return '<style ' + htmlAttr + '>' + css() + '</style>';\n };\n};\n\n/* takes a css factory function and outputs an element factory */\nvar wrapAsElement = function wrapAsElement(css, names) {\n return function () {\n var _props;\n var props = (_props = {}, _props[SC_ATTR] = stringifyNames(names), _props);\n var nonce = getNonce();\n if (nonce) {\n // $FlowFixMe\n props.nonce = nonce;\n }\n\n // eslint-disable-next-line react/no-danger\n return React.createElement('style', _extends({}, props, {\n dangerouslySetInnerHTML: {\n __html: css()\n }\n }));\n };\n};\nvar getIdsFromMarkersFactory = function getIdsFromMarkersFactory(markers) {\n return function () {\n return Object.keys(markers);\n };\n};\n\n/* speedy tags utilise insertRule */\nvar makeSpeedyTag = function makeSpeedyTag(el, getImportRuleTag) {\n var names = Object.create(null);\n var markers = Object.create(null);\n var sizes = [];\n var extractImport = getImportRuleTag !== undefined;\n /* indicates whther getImportRuleTag was called */\n var usedImportRuleTag = false;\n var insertMarker = function insertMarker(id) {\n var prev = markers[id];\n if (prev !== undefined) {\n return prev;\n }\n markers[id] = sizes.length;\n sizes.push(0);\n resetIdNames(names, id);\n return markers[id];\n };\n var insertRules = function insertRules(id, cssRules, name) {\n var marker = insertMarker(id);\n var sheet = sheetForTag(el);\n var insertIndex = addUpUntilIndex(sizes, marker);\n var injectedRules = 0;\n var importRules = [];\n var cssRulesSize = cssRules.length;\n for (var i = 0; i < cssRulesSize; i += 1) {\n var cssRule = cssRules[i];\n var mayHaveImport = extractImport; /* @import rules are reordered to appear first */\n if (mayHaveImport && cssRule.indexOf('@import') !== -1) {\n importRules.push(cssRule);\n } else if (safeInsertRule(sheet, cssRule, insertIndex + injectedRules)) {\n mayHaveImport = false;\n injectedRules += 1;\n }\n }\n if (extractImport && importRules.length > 0) {\n usedImportRuleTag = true;\n // $FlowFixMe\n getImportRuleTag().insertRules(id + '-import', importRules);\n }\n sizes[marker] += injectedRules; /* add up no of injected rules */\n addNameForId(names, id, name);\n };\n var removeRules = function removeRules(id) {\n var marker = markers[id];\n if (marker === undefined) return;\n var size = sizes[marker];\n var sheet = sheetForTag(el);\n var removalIndex = addUpUntilIndex(sizes, marker);\n deleteRules(sheet, removalIndex, size);\n sizes[marker] = 0;\n resetIdNames(names, id);\n if (extractImport && usedImportRuleTag) {\n // $FlowFixMe\n getImportRuleTag().removeRules(id + '-import');\n }\n };\n var css = function css() {\n var _sheetForTag = sheetForTag(el),\n cssRules = _sheetForTag.cssRules;\n var str = '';\n\n // eslint-disable-next-line guard-for-in\n for (var id in markers) {\n str += makeTextMarker(id);\n var marker = markers[id];\n var end = addUpUntilIndex(sizes, marker);\n var size = sizes[marker];\n for (var i = end - size; i < end; i += 1) {\n var rule = cssRules[i];\n if (rule !== undefined) {\n str += rule.cssText;\n }\n }\n }\n return str;\n };\n return {\n clone: function clone() {\n throw new StyledComponentsError(5);\n },\n css: css,\n getIds: getIdsFromMarkersFactory(markers),\n hasNameForId: hasNameForId(names),\n insertMarker: insertMarker,\n insertRules: insertRules,\n removeRules: removeRules,\n sealed: false,\n styleTag: el,\n toElement: wrapAsElement(css, names),\n toHTML: wrapAsHtmlTag(css, names)\n };\n};\nvar makeTextNode = function makeTextNode(id) {\n return document.createTextNode(makeTextMarker(id));\n};\nvar makeBrowserTag = function makeBrowserTag(el, getImportRuleTag) {\n var names = Object.create(null);\n var markers = Object.create(null);\n var extractImport = getImportRuleTag !== undefined;\n\n /* indicates whther getImportRuleTag was called */\n var usedImportRuleTag = false;\n var insertMarker = function insertMarker(id) {\n var prev = markers[id];\n if (prev !== undefined) {\n return prev;\n }\n markers[id] = makeTextNode(id);\n el.appendChild(markers[id]);\n names[id] = Object.create(null);\n return markers[id];\n };\n var insertRules = function insertRules(id, cssRules, name) {\n var marker = insertMarker(id);\n var importRules = [];\n var cssRulesSize = cssRules.length;\n for (var i = 0; i < cssRulesSize; i += 1) {\n var rule = cssRules[i];\n var mayHaveImport = extractImport;\n if (mayHaveImport && rule.indexOf('@import') !== -1) {\n importRules.push(rule);\n } else {\n mayHaveImport = false;\n var separator = i === cssRulesSize - 1 ? '' : ' ';\n marker.appendData('' + rule + separator);\n }\n }\n addNameForId(names, id, name);\n if (extractImport && importRules.length > 0) {\n usedImportRuleTag = true;\n // $FlowFixMe\n getImportRuleTag().insertRules(id + '-import', importRules);\n }\n };\n var removeRules = function removeRules(id) {\n var marker = markers[id];\n if (marker === undefined) return;\n\n /* create new empty text node and replace the current one */\n var newMarker = makeTextNode(id);\n el.replaceChild(newMarker, marker);\n markers[id] = newMarker;\n resetIdNames(names, id);\n if (extractImport && usedImportRuleTag) {\n // $FlowFixMe\n getImportRuleTag().removeRules(id + '-import');\n }\n };\n var css = function css() {\n var str = '';\n // eslint-disable-next-line guard-for-in\n for (var id in markers) {\n str += markers[id].data;\n }\n return str;\n };\n return {\n clone: function clone() {\n throw new StyledComponentsError(5);\n },\n css: css,\n getIds: getIdsFromMarkersFactory(markers),\n hasNameForId: hasNameForId(names),\n insertMarker: insertMarker,\n insertRules: insertRules,\n removeRules: removeRules,\n sealed: false,\n styleTag: el,\n toElement: wrapAsElement(css, names),\n toHTML: wrapAsHtmlTag(css, names)\n };\n};\nvar makeServerTagInternal = function makeServerTagInternal(namesArg, markersArg) {\n var names = namesArg === undefined ? Object.create(null) : namesArg;\n var markers = markersArg === undefined ? Object.create(null) : markersArg;\n var insertMarker = function insertMarker(id) {\n var prev = markers[id];\n if (prev !== undefined) {\n return prev;\n }\n return markers[id] = [''];\n };\n var insertRules = function insertRules(id, cssRules, name) {\n var marker = insertMarker(id);\n marker[0] += cssRules.join(' ');\n addNameForId(names, id, name);\n };\n var removeRules = function removeRules(id) {\n var marker = markers[id];\n if (marker === undefined) return;\n marker[0] = '';\n resetIdNames(names, id);\n };\n var css = function css() {\n var str = '';\n // eslint-disable-next-line guard-for-in\n for (var id in markers) {\n var cssForId = markers[id][0];\n if (cssForId) {\n str += makeTextMarker(id) + cssForId;\n }\n }\n return str;\n };\n var clone = function clone() {\n var namesClone = cloneNames(names);\n var markersClone = Object.create(null);\n\n // eslint-disable-next-line guard-for-in\n for (var id in markers) {\n markersClone[id] = [markers[id][0]];\n }\n return makeServerTagInternal(namesClone, markersClone);\n };\n var tag = {\n clone: clone,\n css: css,\n getIds: getIdsFromMarkersFactory(markers),\n hasNameForId: hasNameForId(names),\n insertMarker: insertMarker,\n insertRules: insertRules,\n removeRules: removeRules,\n sealed: false,\n styleTag: null,\n toElement: wrapAsElement(css, names),\n toHTML: wrapAsHtmlTag(css, names)\n };\n return tag;\n};\nvar makeServerTag = function makeServerTag() {\n return makeServerTagInternal();\n};\nvar makeTag = function makeTag(target, tagEl, forceServer, insertBefore, getImportRuleTag) {\n if (IS_BROWSER && !forceServer) {\n var el = makeStyleTag(target, tagEl, insertBefore);\n if (DISABLE_SPEEDY) {\n return makeBrowserTag(el, getImportRuleTag);\n } else {\n return makeSpeedyTag(el, getImportRuleTag);\n }\n }\n return makeServerTag();\n};\n\n/* wraps a given tag so that rehydration is performed once when necessary */\nvar makeRehydrationTag = function makeRehydrationTag(tag, els, extracted, immediateRehydration) {\n /* rehydration function that adds all rules to the new tag */\n var rehydrate = once(function () {\n /* add all extracted components to the new tag */\n for (var i = 0, len = extracted.length; i < len; i += 1) {\n var _extracted$i = extracted[i],\n componentId = _extracted$i.componentId,\n cssFromDOM = _extracted$i.cssFromDOM;\n var cssRules = splitByRules(cssFromDOM);\n tag.insertRules(componentId, cssRules);\n }\n\n /* remove old HTMLStyleElements, since they have been rehydrated */\n for (var _i = 0, _len = els.length; _i < _len; _i += 1) {\n var el = els[_i];\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n }\n });\n if (immediateRehydration) rehydrate();\n return _extends({}, tag, {\n /* add rehydration hook to insertion methods */\n insertMarker: function insertMarker(id) {\n rehydrate();\n return tag.insertMarker(id);\n },\n insertRules: function insertRules(id, cssRules, name) {\n rehydrate();\n return tag.insertRules(id, cssRules, name);\n }\n });\n};\n\n// \n\nvar SPLIT_REGEX = /\\s+/;\n\n/* determine the maximum number of components before tags are sharded */\nvar MAX_SIZE = void 0;\nif (IS_BROWSER) {\n /* in speedy mode we can keep a lot more rules in a sheet before a slowdown can be expected */\n MAX_SIZE = DISABLE_SPEEDY ? 40 : 1000;\n} else {\n /* for servers we do not need to shard at all */\n MAX_SIZE = -1;\n}\nvar sheetRunningId = 0;\nvar master = void 0;\nvar StyleSheet = function () {\n /* a map from ids to tags */\n /* deferred rules for a given id */\n /* this is used for not reinjecting rules via hasNameForId() */\n /* when rules for an id are removed using remove() we have to ignore rehydratedNames for it */\n /* a list of tags belonging to this StyleSheet */\n /* a tag for import rules */\n /* current capacity until a new tag must be created */\n /* children (aka clones) of this StyleSheet inheriting all and future injections */\n\n function StyleSheet() {\n var _this = this;\n var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : IS_BROWSER ? document.head : null;\n var forceServer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n classCallCheck(this, StyleSheet);\n this.getImportRuleTag = function () {\n var importRuleTag = _this.importRuleTag;\n if (importRuleTag !== undefined) {\n return importRuleTag;\n }\n var firstTag = _this.tags[0];\n var insertBefore = true;\n return _this.importRuleTag = makeTag(_this.target, firstTag ? firstTag.styleTag : null, _this.forceServer, insertBefore);\n };\n sheetRunningId += 1;\n this.id = sheetRunningId;\n this.forceServer = forceServer;\n this.target = forceServer ? null : target;\n this.tagMap = {};\n this.deferred = {};\n this.rehydratedNames = {};\n this.ignoreRehydratedNames = {};\n this.tags = [];\n this.capacity = 1;\n this.clones = [];\n }\n\n /* rehydrate all SSR'd style tags */\n\n StyleSheet.prototype.rehydrate = function rehydrate() {\n if (!IS_BROWSER || this.forceServer) {\n return this;\n }\n var els = [];\n var extracted = [];\n var isStreamed = false;\n\n /* retrieve all of our SSR style elements from the DOM */\n var nodes = document.querySelectorAll('style[' + SC_ATTR + ']');\n var nodesSize = nodes.length;\n\n /* abort rehydration if no previous style tags were found */\n if (nodesSize === 0) {\n return this;\n }\n for (var i = 0; i < nodesSize; i += 1) {\n // $FlowFixMe: We can trust that all elements in this query are style elements\n var el = nodes[i];\n\n /* check if style tag is a streamed tag */\n if (!isStreamed) isStreamed = !!el.getAttribute(SC_STREAM_ATTR);\n\n /* retrieve all component names */\n var elNames = (el.getAttribute(SC_ATTR) || '').trim().split(SPLIT_REGEX);\n var elNamesSize = elNames.length;\n for (var j = 0; j < elNamesSize; j += 1) {\n var name = elNames[j];\n /* add rehydrated name to sheet to avoid readding styles */\n this.rehydratedNames[name] = true;\n }\n\n /* extract all components and their CSS */\n extracted.push.apply(extracted, extractComps(el.textContent));\n\n /* store original HTMLStyleElement */\n els.push(el);\n }\n\n /* abort rehydration if nothing was extracted */\n var extractedSize = extracted.length;\n if (extractedSize === 0) {\n return this;\n }\n\n /* create a tag to be used for rehydration */\n var tag = this.makeTag(null);\n var rehydrationTag = makeRehydrationTag(tag, els, extracted, isStreamed);\n\n /* reset capacity and adjust MAX_SIZE by the initial size of the rehydration */\n this.capacity = Math.max(1, MAX_SIZE - extractedSize);\n this.tags.push(rehydrationTag);\n\n /* retrieve all component ids */\n for (var _j = 0; _j < extractedSize; _j += 1) {\n this.tagMap[extracted[_j].componentId] = rehydrationTag;\n }\n return this;\n };\n\n /* retrieve a \"master\" instance of StyleSheet which is typically used when no other is available\n * The master StyleSheet is targeted by injectGlobal, keyframes, and components outside of any\n * StyleSheetManager's context */\n\n /* reset the internal \"master\" instance */\n StyleSheet.reset = function reset() {\n var forceServer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n master = new StyleSheet(undefined, forceServer).rehydrate();\n };\n\n /* adds \"children\" to the StyleSheet that inherit all of the parents' rules\n * while their own rules do not affect the parent */\n\n StyleSheet.prototype.clone = function clone() {\n var sheet = new StyleSheet(this.target, this.forceServer);\n\n /* add to clone array */\n this.clones.push(sheet);\n\n /* clone all tags */\n sheet.tags = this.tags.map(function (tag) {\n var ids = tag.getIds();\n var newTag = tag.clone();\n\n /* reconstruct tagMap */\n for (var i = 0; i < ids.length; i += 1) {\n sheet.tagMap[ids[i]] = newTag;\n }\n return newTag;\n });\n\n /* clone other maps */\n sheet.rehydratedNames = _extends({}, this.rehydratedNames);\n sheet.deferred = _extends({}, this.deferred);\n return sheet;\n };\n\n /* force StyleSheet to create a new tag on the next injection */\n\n StyleSheet.prototype.sealAllTags = function sealAllTags() {\n this.capacity = 1;\n this.tags.forEach(function (tag) {\n // eslint-disable-next-line no-param-reassign\n tag.sealed = true;\n });\n };\n StyleSheet.prototype.makeTag = function makeTag$$1(tag) {\n var lastEl = tag ? tag.styleTag : null;\n var insertBefore = false;\n return makeTag(this.target, lastEl, this.forceServer, insertBefore, this.getImportRuleTag);\n };\n\n /* get a tag for a given componentId, assign the componentId to one, or shard */\n StyleSheet.prototype.getTagForId = function getTagForId(id) {\n /* simply return a tag, when the componentId was already assigned one */\n var prev = this.tagMap[id];\n if (prev !== undefined && !prev.sealed) {\n return prev;\n }\n var tag = this.tags[this.tags.length - 1];\n\n /* shard (create a new tag) if the tag is exhausted (See MAX_SIZE) */\n this.capacity -= 1;\n if (this.capacity === 0) {\n this.capacity = MAX_SIZE;\n tag = this.makeTag(tag);\n this.tags.push(tag);\n }\n return this.tagMap[id] = tag;\n };\n\n /* mainly for injectGlobal to check for its id */\n\n StyleSheet.prototype.hasId = function hasId(id) {\n return this.tagMap[id] !== undefined;\n };\n\n /* caching layer checking id+name to already have a corresponding tag and injected rules */\n\n StyleSheet.prototype.hasNameForId = function hasNameForId(id, name) {\n /* exception for rehydrated names which are checked separately */\n if (this.ignoreRehydratedNames[id] === undefined && this.rehydratedNames[name]) {\n return true;\n }\n var tag = this.tagMap[id];\n return tag !== undefined && tag.hasNameForId(id, name);\n };\n\n /* registers a componentId and registers it on its tag */\n\n StyleSheet.prototype.deferredInject = function deferredInject(id, cssRules) {\n /* don't inject when the id is already registered */\n if (this.tagMap[id] !== undefined) return;\n var clones = this.clones;\n for (var i = 0; i < clones.length; i += 1) {\n clones[i].deferredInject(id, cssRules);\n }\n this.getTagForId(id).insertMarker(id);\n this.deferred[id] = cssRules;\n };\n\n /* injects rules for a given id with a name that will need to be cached */\n\n StyleSheet.prototype.inject = function inject(id, cssRules, name) {\n var clones = this.clones;\n for (var i = 0; i < clones.length; i += 1) {\n clones[i].inject(id, cssRules, name);\n }\n var tag = this.getTagForId(id);\n\n /* add deferred rules for component */\n if (this.deferred[id] !== undefined) {\n // Combine passed cssRules with previously deferred CSS rules\n // NOTE: We cannot mutate the deferred array itself as all clones\n // do the same (see clones[i].inject)\n var rules = this.deferred[id].concat(cssRules);\n tag.insertRules(id, rules, name);\n this.deferred[id] = undefined;\n } else {\n tag.insertRules(id, cssRules, name);\n }\n };\n\n /* removes all rules for a given id, which doesn't remove its marker but resets it */\n\n StyleSheet.prototype.remove = function remove(id) {\n var tag = this.tagMap[id];\n if (tag === undefined) return;\n var clones = this.clones;\n for (var i = 0; i < clones.length; i += 1) {\n clones[i].remove(id);\n }\n\n /* remove all rules from the tag */\n tag.removeRules(id);\n /* ignore possible rehydrated names */\n this.ignoreRehydratedNames[id] = true;\n /* delete possible deferred rules */\n this.deferred[id] = undefined;\n };\n StyleSheet.prototype.toHTML = function toHTML() {\n return this.tags.map(function (tag) {\n return tag.toHTML();\n }).join('');\n };\n StyleSheet.prototype.toReactElements = function toReactElements() {\n var id = this.id;\n return this.tags.map(function (tag, i) {\n var key = 'sc-' + id + '-' + i;\n return cloneElement(tag.toElement(), {\n key: key\n });\n });\n };\n createClass(StyleSheet, null, [{\n key: 'master',\n get: function get$$1() {\n return master || (master = new StyleSheet().rehydrate());\n }\n\n /* NOTE: This is just for backwards-compatibility with jest-styled-components */\n }, {\n key: 'instance',\n get: function get$$1() {\n return StyleSheet.master;\n }\n }]);\n return StyleSheet;\n}();\nvar _StyleSheetManager$ch;\nvar StyleSheetManager = function (_Component) {\n inherits(StyleSheetManager, _Component);\n function StyleSheetManager() {\n classCallCheck(this, StyleSheetManager);\n return possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n StyleSheetManager.prototype.getChildContext = function getChildContext() {\n var _ref;\n return _ref = {}, _ref[CONTEXT_KEY] = this.sheetInstance, _ref;\n };\n StyleSheetManager.prototype.componentWillMount = function componentWillMount() {\n if (this.props.sheet) {\n this.sheetInstance = this.props.sheet;\n } else if (this.props.target) {\n this.sheetInstance = new StyleSheet(this.props.target);\n } else {\n throw new StyledComponentsError(4);\n }\n };\n StyleSheetManager.prototype.render = function render() {\n /* eslint-disable react/prop-types */\n // Flow v0.43.1 will report an error accessing the `children` property,\n // but v0.47.0 will not. It is necessary to use a type cast instead of\n // a \"fixme\" comment to satisfy both Flow versions.\n return React.Children.only(this.props.children);\n };\n return StyleSheetManager;\n}(Component);\nStyleSheetManager.childContextTypes = (_StyleSheetManager$ch = {}, _StyleSheetManager$ch[CONTEXT_KEY] = PropTypes.oneOfType([PropTypes.instanceOf(StyleSheet), PropTypes.instanceOf(ServerStyleSheet)]).isRequired, _StyleSheetManager$ch);\nprocess.env.NODE_ENV !== \"production\" ? StyleSheetManager.propTypes = {\n sheet: PropTypes.oneOfType([PropTypes.instanceOf(StyleSheet), PropTypes.instanceOf(ServerStyleSheet)]),\n target: PropTypes.shape({\n appendChild: PropTypes.func.isRequired\n })\n} : void 0;\n\n// \n\nvar ServerStyleSheet = function () {\n function ServerStyleSheet() {\n classCallCheck(this, ServerStyleSheet);\n\n /* The master sheet might be reset, so keep a reference here */\n this.masterSheet = StyleSheet.master;\n this.instance = this.masterSheet.clone();\n this.closed = false;\n }\n ServerStyleSheet.prototype.complete = function complete() {\n if (!this.closed) {\n /* Remove closed StyleSheets from the master sheet */\n var index = this.masterSheet.clones.indexOf(this.instance);\n this.masterSheet.clones.splice(index, 1);\n this.closed = true;\n }\n };\n ServerStyleSheet.prototype.collectStyles = function collectStyles(children) {\n if (this.closed) {\n throw new StyledComponentsError(2);\n }\n return React.createElement(StyleSheetManager, {\n sheet: this.instance\n }, children);\n };\n ServerStyleSheet.prototype.getStyleTags = function getStyleTags() {\n this.complete();\n return this.instance.toHTML();\n };\n ServerStyleSheet.prototype.getStyleElement = function getStyleElement() {\n this.complete();\n return this.instance.toReactElements();\n };\n ServerStyleSheet.prototype.interleaveWithNodeStream = function interleaveWithNodeStream(readableStream) {\n var _this = this;\n {\n throw new StyledComponentsError(3);\n }\n\n /* the tag index keeps track of which tags have already been emitted */\n var instance = this.instance;\n var instanceTagIndex = 0;\n var streamAttr = SC_STREAM_ATTR + '=\"true\"';\n var transformer = new stream.Transform({\n transform: function appendStyleChunks(chunk, /* encoding */_, callback) {\n var tags = instance.tags;\n var html = '';\n\n /* retrieve html for each new style tag */\n for (; instanceTagIndex < tags.length; instanceTagIndex += 1) {\n var tag = tags[instanceTagIndex];\n html += tag.toHTML(streamAttr);\n }\n\n /* force our StyleSheets to emit entirely new tags */\n instance.sealAllTags();\n\n /* prepend style html to chunk */\n this.push(html + chunk);\n callback();\n }\n });\n readableStream.on('end', function () {\n return _this.complete();\n });\n readableStream.on('error', function (err) {\n _this.complete();\n\n // forward the error to the transform stream\n transformer.emit('error', err);\n });\n return readableStream.pipe(transformer);\n };\n return ServerStyleSheet;\n}();\n\n// \n\nvar LIMIT = 200;\nvar createWarnTooManyClasses = function (displayName) {\n var generatedClasses = {};\n var warningSeen = false;\n return function (className) {\n if (!warningSeen) {\n generatedClasses[className] = true;\n if (Object.keys(generatedClasses).length >= LIMIT) {\n // Unable to find latestRule in test environment.\n /* eslint-disable no-console, prefer-template */\n console.warn('Over ' + LIMIT + ' classes were generated for component ' + displayName + '. \\n' + 'Consider using the attrs method, together with a style object for frequently changed styles.\\n' + 'Example:\\n' + ' const Component = styled.div.attrs({\\n' + ' style: ({ background }) => ({\\n' + ' background,\\n' + ' }),\\n' + ' })`width: 100%;`\\n\\n' + ' <Component />');\n warningSeen = true;\n generatedClasses = {};\n }\n }\n };\n};\n\n// \n\nvar determineTheme = function (props, fallbackTheme, defaultProps) {\n // Props should take precedence over ThemeProvider, which should take precedence over\n // defaultProps, but React automatically puts defaultProps on props.\n\n /* eslint-disable react/prop-types */\n var isDefaultTheme = defaultProps && props.theme === defaultProps.theme;\n var theme = props.theme && !isDefaultTheme ? props.theme : fallbackTheme;\n /* eslint-enable */\n\n return theme;\n};\n\n// \nvar escapeRegex = /[[\\].#*$><+~=|^:(),\"'`-]+/g;\nvar dashesAtEnds = /(^-|-$)/g;\n\n/**\n * TODO: Explore using CSS.escape when it becomes more available\n * in evergreen browsers.\n */\nfunction escape(str) {\n return str\n // Replace all possible CSS selectors\n .replace(escapeRegex, '-')\n\n // Remove extraneous hyphens at the start and end\n .replace(dashesAtEnds, '');\n}\n\n// \n\nfunction getComponentName(target) {\n return target.displayName || target.name || 'Component';\n}\n\n// \n\nfunction isTag(target) /* : %checks */{\n return typeof target === 'string';\n}\n\n// \n\nfunction generateDisplayName(target) {\n return isTag(target) ? 'styled.' + target : 'Styled(' + getComponentName(target) + ')';\n}\n\n// \n/* eslint-disable max-len */\n/**\n * Trying to avoid the unknown-prop errors on styled components by filtering by\n * React's attribute whitelist.\n *\n * To regenerate this regex:\n *\n * 1. `npm i -g regexgen` (https://github.com/devongovett/regexgen)\n * 2. Run `regexgen` with the list of space-separated words below as input\n * 3. Surround the emitted regex with this: `/^(GENERATED_REGEX)$/` -- this will ensure a full string match\n * and no false positives from partials\n * */\n/*\nchildren dangerouslySetInnerHTML key ref autoFocus defaultValue valueLink defaultChecked checkedLink innerHTML suppressContentEditableWarning onFocusIn onFocusOut className onCopy onCut onPaste onCompositionEnd onCompositionStart onCompositionUpdate onKeyDown onKeyPress onKeyUp onFocus onBlur onChange onInput onInvalid onSubmit onReset onClick onContextMenu onDoubleClick onDrag onDragEnd onDragEnter onDragExit onDragLeave onDragOver onDragStart onDrop onMouseDown onMouseEnter onMouseLeave onMouseMove onMouseOut onMouseOver onMouseUp onSelect onTouchCancel onTouchEnd onTouchMove onTouchStart onScroll onWheel onAbort onCanPlay onCanPlayThrough onDurationChange onEmptied onEncrypted onEnded onError onLoadedData onLoadedMetadata onLoadStart onPause onPlay onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend onTimeUpdate onVolumeChange onWaiting onLoad onAnimationStart onAnimationEnd onAnimationIteration onTransitionEnd onCopyCapture onCutCapture onPasteCapture onCompositionEndCapture onCompositionStartCapture onCompositionUpdateCapture onKeyDownCapture onKeyPressCapture onKeyUpCapture onFocusCapture onBlurCapture onChangeCapture onInputCapture onSubmitCapture onResetCapture onClickCapture onContextMenuCapture onDoubleClickCapture onDragCapture onDragEndCapture onDragEnterCapture onDragExitCapture onDragLeaveCapture onDragOverCapture onDragStartCapture onDropCapture onMouseDownCapture onMouseEnterCapture onMouseLeaveCapture onMouseMoveCapture onMouseOutCapture onMouseOverCapture onMouseUpCapture onSelectCapture onTouchCancelCapture onTouchEndCapture onTouchMoveCapture onTouchStartCapture onScrollCapture onWheelCapture onAbortCapture onCanPlayCapture onCanPlayThroughCapture onDurationChangeCapture onEmptiedCapture onEncryptedCapture onEndedCapture onErrorCapture onLoadedDataCapture onLoadedMetadataCapture onLoadStartCapture onPauseCapture onPlayCapture onPlayingCapture onProgressCapture onRateChangeCapture onSeekedCapture onSeekingCapture onStalledCapture onSuspendCapture onTimeUpdateCapture onVolumeChangeCapture onWaitingCapture onLoadCapture onAnimationStartCapture onAnimationEndCapture onAnimationIterationCapture onTransitionEndCapture accept acceptCharset accessKey action allowFullScreen allowTransparency alt as async autoComplete autoPlay capture cellPadding cellSpacing charSet challenge checked cite classID className cols colSpan content contentEditable contextMenu controlsList controls coords crossOrigin data dateTime default defer dir disabled download draggable encType form formAction formEncType formMethod formNoValidate formTarget frameBorder headers height hidden high href hrefLang htmlFor httpEquiv icon id inputMode integrity is keyParams keyType kind label lang list loop low manifest marginHeight marginWidth max maxLength media mediaGroup method min minLength multiple muted name nonce noValidate open optimum pattern placeholder playsInline poster preload profile radioGroup readOnly referrerPolicy rel required reversed role rows rowSpan sandbox scope scoped scrolling seamless selected shape size sizes span spellCheck src srcDoc srcLang srcSet start step style summary tabIndex target title type useMap value width wmode wrap about datatype inlist prefix property resource typeof vocab autoCapitalize autoCorrect autoSave color itemProp itemScope itemType itemID itemRef results security unselectable accentHeight accumulate additive alignmentBaseline allowReorder alphabetic amplitude arabicForm ascent attributeName attributeType autoReverse azimuth baseFrequency baseProfile baselineShift bbox begin bias by calcMode capHeight clip clipPath clipRule clipPathUnits colorInterpolation colorInterpolationFilters colorProfile colorRendering contentScriptType contentStyleType cursor cx cy d decelerate descent diffuseConstant direction display divisor dominantBaseline dur dx dy edgeMode elevation enableBackground end exponent externalResourcesRequired fill fillOpacity fillRule filter filterRes filterUnits floodColor floodOpacity focusable fontFamily fontSize fontSizeAdjust fontStretch fontStyle fontVariant fontWeight format from fx fy g1 g2 glyphName glyphOrientationHorizontal glyphOrientationVertical glyphRef gradientTransform gradientUnits hanging horizAdvX horizOriginX ideographic imageRendering in in2 intercept k k1 k2 k3 k4 kernelMatrix kernelUnitLength kerning keyPoints keySplines keyTimes lengthAdjust letterSpacing lightingColor limitingConeAngle local markerEnd markerMid markerStart markerHeight markerUnits markerWidth mask maskContentUnits maskUnits mathematical mode numOctaves offset opacity operator order orient orientation origin overflow overlinePosition overlineThickness paintOrder panose1 pathLength patternContentUnits patternTransform patternUnits pointerEvents points pointsAtX pointsAtY pointsAtZ preserveAlpha preserveAspectRatio primitiveUnits r radius refX refY renderingIntent repeatCount repeatDur requiredExtensions requiredFeatures restart result rotate rx ry scale seed shapeRendering slope spacing specularConstant specularExponent speed spreadMethod startOffset stdDeviation stemh stemv stitchTiles stopColor stopOpacity strikethroughPosition strikethroughThickness string stroke strokeDasharray strokeDashoffset strokeLinecap strokeLinejoin strokeMiterlimit strokeOpacity strokeWidth surfaceScale systemLanguage tableValues targetX targetY textAnchor textDecoration textRendering textLength to transform u1 u2 underlinePosition underlineThickness unicode unicodeBidi unicodeRange unitsPerEm vAlphabetic vHanging vIdeographic vMathematical values vectorEffect version vertAdvY vertOriginX vertOriginY viewBox viewTarget visibility widths wordSpacing writingMode x xHeight x1 x2 xChannelSelector xlinkActuate xlinkArcrole xlinkHref xlinkRole xlinkShow xlinkTitle xlinkType xmlBase xmlns xmlnsXlink xmlLang xmlSpace y y1 y2 yChannelSelector z zoomAndPan onPointerDown onPointerMove onPointerUp onPointerCancel onGotPointerCapture onLostPointerCapture onPointerEnter onPointerLeave onPointerOver onPointerOut class for autofocus allow allowUserMedia allowPaymentRequest\n*/\n/* eslint-enable max-len */\n\nvar ATTRIBUTE_REGEX = /^((?:s(?:uppressContentEditableWarn|croll|pac)|(?:shape|image|text)Render|(?:letter|word)Spac|vHang|hang)ing|(?:on(?:AnimationIteration|C(?:o(?:mposition(?:Update|Start|End)|ntextMenu|py)|anPlayThrough|anPlay|hange|lick|ut)|(?:Animation|Touch|Load|Drag)Start|(?:(?:Duration|Volume|Rate)Chang|(?:MouseLea|(?:Touch|Mouse)Mo|DragLea)v|Paus)e|Loaded(?:Metad|D)ata|(?:(?:T(?:ransition|ouch)|Animation)E|Suspe)nd|DoubleClick|(?:TouchCanc|Whe)el|Lo(?:stPointer|ad)|TimeUpdate|(?:Mouse(?:Ent|Ov)e|Drag(?:Ent|Ov)e|Erro)r|GotPointer|MouseDown|(?:E(?:n(?:crypt|d)|mpti)|S(?:tall|eek))ed|KeyPress|(?:MouseOu|DragExi|S(?:elec|ubmi)|Rese|Inpu)t|P(?:rogress|laying)|DragEnd|Key(?:Down|Up)|(?:MouseU|Dro)p|(?:Wait|Seek)ing|Scroll|Focus|Paste|Abort|Drag|Play|Blur)Captur|alignmentBaselin|(?:limitingConeAng|xlink(?:(?:Arcr|R)o|Tit)|s(?:urfaceSca|ty|ca)|unselectab|baseProfi|fontSty|(?:focus|dragg)ab|multip|profi|tit)l|d(?:ominantBaselin|efaultValu)|onPointerLeav|a(?:uto(?:Capitaliz|Revers|Sav)|dditiv)|(?:(?:formNoValid|xlinkActu|noValid|accumul|rot)a|autoComple|decelera)t|(?:(?:attribute|item)T|datat)yp|onPointerMov|(?:attribute|glyph)Nam|playsInlin|(?:writing|input|edge)Mod|(?:formE|e)ncTyp|(?:amplitu|mo)d|(?:xlinkTy|itemSco|keyTy|slo)p|(?:xmlSpa|non)c|fillRul|(?:dateTi|na)m|r(?:esourc|ol)|xmlBas|wmod)e|(?:glyphOrientationHorizont|loc)al|(?:externalResourcesRequir|select|revers|mut)ed|c(?:o(?:lorInterpolationFilter|ord)s|o(?:lor(?:Interpolation)?|nt(?:rols|ent))|(?:ontentS(?:cript|tyle)Typ|o(?:ntentEditab|lorProfi)l|l(?:assNam|ipRul)|a(?:lcMod|ptur)|it)e|olorRendering|l(?:ipPathUnits|assID)|(?:ontrolsLis|apHeigh)t|h(?:eckedLink|a(?:llenge|rSet)|ildren|ecked)|ell(?:Spac|Padd)ing|o(?:ntextMenu|ls)|(?:rossOrigi|olSpa)n|l(?:ip(?:Path)?|ass)|ursor|[xy])|glyphOrientationVertical|d(?:angerouslySetInnerHTML|efaultChecked|ownload|isabled|isplay|[xy])|(?:s(?:trikethroughThickn|eaml)es|(?:und|ov)erlineThicknes|r(?:equiredExtension|adiu)|(?:requiredFeatur|tableValu|stitchTil|numOctav|filterR)e|key(?:(?:Splin|Tim)e|Param)|auto[Ff]ocu|header|bia)s|(?:(?:st(?:rikethroughPosi|dDevia)|(?:und|ov)erlinePosi|(?:textDecor|elev)a|orienta)tio|(?:strokeLinejo|orig)i|on(?:PointerDow|FocusI)|formActio|zoomAndPa|directio|(?:vers|act)io|rowSpa|begi|ico)n|o(?:n(?:AnimationIteration|C(?:o(?:mposition(?:Update|Start|End)|ntextMenu|py)|anPlayThrough|anPlay|hange|lick|ut)|(?:(?:Duration|Volume|Rate)Chang|(?:MouseLea|(?:Touch|Mouse)Mo|DragLea)v|Paus)e|Loaded(?:Metad|D)ata|(?:Animation|Touch|Load|Drag)Start|(?:(?:T(?:ransition|ouch)|Animation)E|Suspe)nd|DoubleClick|(?:TouchCanc|Whe)el|(?:Mouse(?:Ent|Ov)e|Drag(?:Ent|Ov)e|Erro)r|TimeUpdate|(?:E(?:n(?:crypt|d)|mpti)|S(?:tall|eek))ed|MouseDown|P(?:rogress|laying)|(?:MouseOu|DragExi|S(?:elec|ubmi)|Rese|Inpu)t|KeyPress|DragEnd|Key(?:Down|Up)|(?:Wait|Seek)ing|(?:MouseU|Dro)p|Scroll|Paste|Focus|Abort|Drag|Play|Load|Blur)|rient)|p(?:reserveAspectRatio|ointsAt[X-Z]|anose1)|(?:(?:allowPaymentReque|(?:fontSize|length)Adju|manife)s|strokeMiterlimi|(?:(?:specularE|e)xpon|renderingInt|asc)en|(?:specularConsta|repeatCou|fontVaria)n|d(?:iffuseConsta|esce)n|baselineShif|vectorEffec|onPointerOu|(?:(?:mar(?:ker|gin)|x)H|accentH|fontW)eigh|markerStar|a(?:utoCorrec|bou)|onFocusOu|intercep|restar|forma|inlis|heigh|lis)t|(?:patternContent|ma(?:sk(?:Content)?|rker)|primitive|gradient|pattern|filter)Units|(?:(?:allowTranspar|baseFrequ)enc|re(?:ferrerPolic|adOnl)|(?:(?:st(?:roke|op)O|floodO|fillO|o)pac|integr|secur)it|visibilit|fontFamil|accessKe|propert|summar)y|(?:gradientT|patternT|t)ransform|(?:(?:st(?:rokeDasho|artO)|o)ffs|acceptChars|formTarg|viewTarg|srcS)et|(?:[xy]ChannelSelect|lightingCol|textAnch|floodCol|stopCol|operat|htmlF)or|(?:(?:enableBackgrou|markerE)n|s(?:p(?:readMetho|ee)|ee)|formMetho|(?:markerM|onInval)i|preloa|metho|kin)d|k(?:ernel(?:UnitLength|Matrix)|[1-4])|strokeDasharray|(?:onPointerCanc|lab)el|(?:allowFullScre|hidd)en|a(?:l(?:lowUserMedia|phabetic|t)|rabicForm|sync)|systemLanguage|(?:(?:o(?:nPointer(?:Ent|Ov)|rd)|allowReord|placehold|frameBord|paintOrd|post)e|repeatDu|d(?:efe|u))r|(?:pointerEve|keyPoi)nts|preserveAlpha|(?:strokeLineca|onPointerU|itemPro|useMa|wra|loo)p|v(?:Mathematical|ert(?:Origin[XY]|AdvY)|alues|ocab)|unicodeRange|h(?:oriz(?:Origin|Adv)X|ttpEquiv)|(?:vI|i)deographic|mathematical|u(?:nicodeBidi|[12])|(?:fontStretc|hig)h|vAlphabetic|(?:(?:mar(?:ker|gin)W|strokeW)id|azimu)th|(?:xmlnsXl|valueL)ink|mediaGroup|spellCheck|(?:text|m(?:in|ax))Length|(?:unitsPerE|optimu|fro)m|r(?:adioGroup|e(?:sults|f[XY]|l)|ows|[xy])|pathLength|(?:xlinkHr|glyphR)ef|innerHTML|xlinkShow|f(?:o(?:ntSize|rm?)|il(?:ter|l))|(?:tabInde|(?:sand|b)bo|viewBo)x|autoPlay|r(?:e(?:quired|sult|f))?|(?:(?:href|xml|src)La|kerni)ng|o(?:verflow|pen)|i(?:temRef|n2|s)|p(?:attern|oints)|unicode|d(?:efault|ata|ir)?|divisor|t(?:arget[XY]|o)|(?:stri|la)ng|(?:width|size)s|prefix|typeof|srcDoc|s(?:coped|te(?:m[hv]|p)|pan)|s(?:t(?:roke|art)|hape|cope|rc)|a(?:ccept|llow|s)|itemID|t(?:arget|ype)|m(?:edia|a(?:sk|x)|in)|value|width|x(?:mlns)?|size|href|k(?:ey)?|end|low|by|x[12]|y[12]|g[12]|i[dn]|f[xy]|[yz])$/;\n/* From DOMProperty */\nvar ATTRIBUTE_NAME_START_CHAR = ':A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nvar ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + '\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nvar isCustomAttribute = RegExp.prototype.test.bind(new RegExp('^(x|data|aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$'));\nvar validAttr = function (name) {\n return ATTRIBUTE_REGEX.test(name) || isCustomAttribute(name.toLowerCase());\n};\n\n// \n\nfunction hasInInheritanceChain(child, parent) {\n var target = child;\n while (target) {\n target = Object.getPrototypeOf(target);\n if (target && target === parent) {\n return true;\n }\n }\n return false;\n}\n\n// \n/**\n * Creates a broadcast that can be listened to, i.e. simple event emitter\n *\n * @see https://github.com/ReactTraining/react-broadcast\n */\n\nvar createBroadcast = function createBroadcast(initialState) {\n var listeners = {};\n var id = 0;\n var state = initialState;\n function publish(nextState) {\n state = nextState;\n\n // eslint-disable-next-line guard-for-in, no-restricted-syntax\n for (var key in listeners) {\n var listener = listeners[key];\n if (listener === undefined) {\n // eslint-disable-next-line no-continue\n continue;\n }\n listener(state);\n }\n }\n function subscribe(listener) {\n var currentId = id;\n listeners[currentId] = listener;\n id += 1;\n listener(state);\n return currentId;\n }\n function unsubscribe(unsubID) {\n listeners[unsubID] = undefined;\n }\n return {\n publish: publish,\n subscribe: subscribe,\n unsubscribe: unsubscribe\n };\n};\nvar _contextShape, _ThemeProvider$contex;\n\n// NOTE: DO NOT CHANGE, changing this is a semver major change!\nvar CHANNEL = '__styled-components__';\nvar CHANNEL_NEXT = CHANNEL + 'next__';\nvar CONTEXT_CHANNEL_SHAPE = PropTypes.shape({\n getTheme: PropTypes.func,\n subscribe: PropTypes.func,\n unsubscribe: PropTypes.func\n});\nvar contextShape = (_contextShape = {}, _contextShape[CHANNEL] = PropTypes.func, _contextShape[CHANNEL_NEXT] = CONTEXT_CHANNEL_SHAPE, _contextShape);\nvar warnChannelDeprecated = void 0;\nif (process.env.NODE_ENV !== 'production') {\n warnChannelDeprecated = once(function () {\n // eslint-disable-next-line no-console\n console.warn('Warning: Usage of `context.' + CHANNEL + '` as a function is deprecated. It will be replaced with the object on `.context.' + CHANNEL_NEXT + '` in a future version.');\n });\n}\nvar isFunction = function isFunction(test) {\n return typeof test === 'function';\n};\n\n/**\n * Provide a theme to an entire react component tree via context and event listeners (have to do\n * both context and event emitter as pure components block context updates)\n */\n\nvar ThemeProvider = function (_Component) {\n inherits(ThemeProvider, _Component);\n function ThemeProvider() {\n classCallCheck(this, ThemeProvider);\n var _this = possibleConstructorReturn(this, _Component.call(this));\n _this.unsubscribeToOuterId = -1;\n _this.getTheme = _this.getTheme.bind(_this);\n return _this;\n }\n ThemeProvider.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n\n // If there is a ThemeProvider wrapper anywhere around this theme provider, merge this theme\n // with the outer theme\n var outerContext = this.context[CHANNEL_NEXT];\n if (outerContext !== undefined) {\n this.unsubscribeToOuterId = outerContext.subscribe(function (theme) {\n _this2.outerTheme = theme;\n if (_this2.broadcast !== undefined) {\n _this2.publish(_this2.props.theme);\n }\n });\n }\n this.broadcast = createBroadcast(this.getTheme());\n };\n ThemeProvider.prototype.getChildContext = function getChildContext() {\n var _this3 = this,\n _babelHelpers$extends;\n return _extends({}, this.context, (_babelHelpers$extends = {}, _babelHelpers$extends[CHANNEL_NEXT] = {\n getTheme: this.getTheme,\n subscribe: this.broadcast.subscribe,\n unsubscribe: this.broadcast.unsubscribe\n }, _babelHelpers$extends[CHANNEL] = function (subscriber) {\n if (process.env.NODE_ENV !== 'production') {\n warnChannelDeprecated();\n }\n\n // Patch the old `subscribe` provide via `CHANNEL` for older clients.\n var unsubscribeId = _this3.broadcast.subscribe(subscriber);\n return function () {\n return _this3.broadcast.unsubscribe(unsubscribeId);\n };\n }, _babelHelpers$extends));\n };\n ThemeProvider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.theme !== nextProps.theme) {\n this.publish(nextProps.theme);\n }\n };\n ThemeProvider.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.unsubscribeToOuterId !== -1) {\n this.context[CHANNEL_NEXT].unsubscribe(this.unsubscribeToOuterId);\n }\n };\n\n // Get the theme from the props, supporting both (outerTheme) => {} as well as object notation\n\n ThemeProvider.prototype.getTheme = function getTheme(passedTheme) {\n var theme = passedTheme || this.props.theme;\n if (isFunction(theme)) {\n var mergedTheme = theme(this.outerTheme);\n if (process.env.NODE_ENV !== 'production' && (mergedTheme === null || Array.isArray(mergedTheme) || (typeof mergedTheme === 'undefined' ? 'undefined' : _typeof(mergedTheme)) !== 'object')) {\n throw new StyledComponentsError(7);\n }\n return mergedTheme;\n }\n if (theme === null || Array.isArray(theme) || (typeof theme === 'undefined' ? 'undefined' : _typeof(theme)) !== 'object') {\n throw new StyledComponentsError(8);\n }\n return _extends({}, this.outerTheme, theme);\n };\n ThemeProvider.prototype.publish = function publish(theme) {\n this.broadcast.publish(this.getTheme(theme));\n };\n ThemeProvider.prototype.render = function render() {\n if (!this.props.children) {\n return null;\n }\n return React.Children.only(this.props.children);\n };\n return ThemeProvider;\n}(Component);\nThemeProvider.childContextTypes = contextShape;\nThemeProvider.contextTypes = (_ThemeProvider$contex = {}, _ThemeProvider$contex[CHANNEL_NEXT] = CONTEXT_CHANNEL_SHAPE, _ThemeProvider$contex);\nvar _babelHelpers$extends;\n\n// HACK for generating all static styles without needing to allocate\n// an empty execution context every single time...\nvar STATIC_EXECUTION_CONTEXT = {};\nvar modifiedContextShape = _extends({}, contextShape, (_babelHelpers$extends = {}, _babelHelpers$extends[CONTEXT_KEY] = PropTypes.oneOfType([PropTypes.instanceOf(StyleSheet), PropTypes.instanceOf(ServerStyleSheet)]), _babelHelpers$extends));\nvar identifiers = {};\n\n/* We depend on components having unique IDs */\nvar generateId = function generateId(ComponentStyle, _displayName, parentComponentId) {\n var displayName = typeof _displayName !== 'string' ? 'sc' : escape(_displayName);\n\n /**\n * This ensures uniqueness if two components happen to share\n * the same displayName.\n */\n var nr = (identifiers[displayName] || 0) + 1;\n identifiers[displayName] = nr;\n var componentId = displayName + '-' + ComponentStyle.generateName(displayName + nr);\n return parentComponentId !== undefined ? parentComponentId + '-' + componentId : componentId;\n};\nvar warnExtendDeprecated = function warnExtendDeprecated() {};\nif (process.env.NODE_ENV !== 'production') {\n warnExtendDeprecated = once(function () {\n // eslint-disable-next-line no-console\n console.warn('Warning: The \"extend\" API will be removed in the upcoming v4.0 release. Use styled(StyledComponent) instead. You can find more information here: https://github.com/styled-components/styled-components/issues/1546');\n });\n}\n\n// $FlowFixMe\n\nvar BaseStyledComponent = function (_Component) {\n inherits(BaseStyledComponent, _Component);\n function BaseStyledComponent() {\n var _temp, _this, _ret;\n classCallCheck(this, BaseStyledComponent);\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _ret = (_temp = (_this = possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.attrs = {}, _this.state = {\n theme: null,\n generatedClassName: ''\n }, _this.unsubscribeId = -1, _temp), possibleConstructorReturn(_this, _ret);\n }\n BaseStyledComponent.prototype.unsubscribeFromContext = function unsubscribeFromContext() {\n if (this.unsubscribeId !== -1) {\n this.context[CHANNEL_NEXT].unsubscribe(this.unsubscribeId);\n }\n };\n BaseStyledComponent.prototype.buildExecutionContext = function buildExecutionContext(theme, props) {\n var attrs = this.constructor.attrs;\n var context = _extends({}, props, {\n theme: theme\n });\n if (attrs === undefined) {\n return context;\n }\n this.attrs = Object.keys(attrs).reduce(function (acc, key) {\n var attr = attrs[key];\n\n // eslint-disable-next-line no-param-reassign\n acc[key] = typeof attr === 'function' && !hasInInheritanceChain(attr, Component) ? attr(context) : attr;\n return acc;\n }, {});\n return _extends({}, context, this.attrs);\n };\n BaseStyledComponent.prototype.generateAndInjectStyles = function generateAndInjectStyles(theme, props) {\n var _constructor = this.constructor,\n attrs = _constructor.attrs,\n componentStyle = _constructor.componentStyle,\n warnTooManyClasses = _constructor.warnTooManyClasses;\n var styleSheet = this.context[CONTEXT_KEY] || StyleSheet.master;\n\n // statically styled-components don't need to build an execution context object,\n // and shouldn't be increasing the number of class names\n if (componentStyle.isStatic && attrs === undefined) {\n return componentStyle.generateAndInjectStyles(STATIC_EXECUTION_CONTEXT, styleSheet);\n } else {\n var executionContext = this.buildExecutionContext(theme, props);\n var className = componentStyle.generateAndInjectStyles(executionContext, styleSheet);\n if (process.env.NODE_ENV !== 'production' && warnTooManyClasses !== undefined) {\n warnTooManyClasses(className);\n }\n return className;\n }\n };\n BaseStyledComponent.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n var componentStyle = this.constructor.componentStyle;\n var styledContext = this.context[CHANNEL_NEXT];\n\n // If this is a statically-styled component, we don't need to the theme\n // to generate or build styles.\n if (componentStyle.isStatic) {\n var generatedClassName = this.generateAndInjectStyles(STATIC_EXECUTION_CONTEXT, this.props);\n this.setState({\n generatedClassName: generatedClassName\n });\n // If there is a theme in the context, subscribe to the event emitter. This\n // is necessary due to pure components blocking context updates, this circumvents\n // that by updating when an event is emitted\n } else if (styledContext !== undefined) {\n var subscribe = styledContext.subscribe;\n this.unsubscribeId = subscribe(function (nextTheme) {\n // This will be called once immediately\n var theme = determineTheme(_this2.props, nextTheme, _this2.constructor.defaultProps);\n var generatedClassName = _this2.generateAndInjectStyles(theme, _this2.props);\n _this2.setState({\n theme: theme,\n generatedClassName: generatedClassName\n });\n });\n } else {\n // eslint-disable-next-line react/prop-types\n var theme = this.props.theme || EMPTY_OBJECT;\n var _generatedClassName = this.generateAndInjectStyles(theme, this.props);\n this.setState({\n theme: theme,\n generatedClassName: _generatedClassName\n });\n }\n };\n BaseStyledComponent.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var _this3 = this;\n\n // If this is a statically-styled component, we don't need to listen to\n // props changes to update styles\n var componentStyle = this.constructor.componentStyle;\n if (componentStyle.isStatic) {\n return;\n }\n this.setState(function (prevState) {\n var theme = determineTheme(nextProps, prevState.theme, _this3.constructor.defaultProps);\n var generatedClassName = _this3.generateAndInjectStyles(theme, nextProps);\n return {\n theme: theme,\n generatedClassName: generatedClassName\n };\n });\n };\n BaseStyledComponent.prototype.componentWillUnmount = function componentWillUnmount() {\n this.unsubscribeFromContext();\n };\n BaseStyledComponent.prototype.render = function render() {\n // eslint-disable-next-line react/prop-types\n var innerRef = this.props.innerRef;\n var generatedClassName = this.state.generatedClassName;\n var _constructor2 = this.constructor,\n styledComponentId = _constructor2.styledComponentId,\n target = _constructor2.target;\n var isTargetTag = isTag(target);\n var className = [\n // eslint-disable-next-line react/prop-types\n this.props.className, styledComponentId, this.attrs.className, generatedClassName].filter(Boolean).join(' ');\n var baseProps = _extends({}, this.attrs, {\n className: className\n });\n if (isStyledComponent(target)) {\n baseProps.innerRef = innerRef;\n } else {\n baseProps.ref = innerRef;\n }\n var propsForElement = baseProps;\n var key = void 0;\n for (key in this.props) {\n // Don't pass through non HTML tags through to HTML elements\n // always omit innerRef\n if (key !== 'innerRef' && key !== 'className' && (!isTargetTag || validAttr(key))) {\n propsForElement[key] = key === 'style' && key in this.attrs ? _extends({}, this.attrs[key], this.props[key]) : this.props[key];\n }\n }\n return createElement(target, propsForElement);\n };\n return BaseStyledComponent;\n}(Component);\nvar _StyledComponent = function (ComponentStyle, constructWithOptions) {\n var createStyledComponent = function createStyledComponent(target, options, rules) {\n var _options$isClass = options.isClass,\n isClass = _options$isClass === undefined ? !isTag(target) : _options$isClass,\n _options$displayName = options.displayName,\n displayName = _options$displayName === undefined ? generateDisplayName(target) : _options$displayName,\n _options$componentId = options.componentId,\n componentId = _options$componentId === undefined ? generateId(ComponentStyle, options.displayName, options.parentComponentId) : _options$componentId,\n _options$ParentCompon = options.ParentComponent,\n ParentComponent = _options$ParentCompon === undefined ? BaseStyledComponent : _options$ParentCompon,\n extendingRules = options.rules,\n attrs = options.attrs;\n var styledComponentId = options.displayName && options.componentId ? escape(options.displayName) + '-' + options.componentId : options.componentId || componentId;\n var componentStyle = new ComponentStyle(extendingRules === undefined ? rules : extendingRules.concat(rules), attrs, styledComponentId);\n var StyledComponent = function (_ParentComponent) {\n inherits(StyledComponent, _ParentComponent);\n function StyledComponent() {\n classCallCheck(this, StyledComponent);\n return possibleConstructorReturn(this, _ParentComponent.apply(this, arguments));\n }\n StyledComponent.withComponent = function withComponent(tag) {\n var previousComponentId = options.componentId,\n optionsToCopy = objectWithoutProperties(options, ['componentId']);\n var newComponentId = previousComponentId && previousComponentId + '-' + (isTag(tag) ? tag : escape(getComponentName(tag)));\n var newOptions = _extends({}, optionsToCopy, {\n componentId: newComponentId,\n ParentComponent: StyledComponent\n });\n return createStyledComponent(tag, newOptions, rules);\n };\n createClass(StyledComponent, null, [{\n key: 'extend',\n get: function get$$1() {\n var rulesFromOptions = options.rules,\n parentComponentId = options.componentId,\n optionsToCopy = objectWithoutProperties(options, ['rules', 'componentId']);\n var newRules = rulesFromOptions === undefined ? rules : rulesFromOptions.concat(rules);\n var newOptions = _extends({}, optionsToCopy, {\n rules: newRules,\n parentComponentId: parentComponentId,\n ParentComponent: StyledComponent\n });\n warnExtendDeprecated();\n return constructWithOptions(createStyledComponent, target, newOptions);\n }\n }]);\n return StyledComponent;\n }(ParentComponent);\n StyledComponent.attrs = attrs;\n StyledComponent.componentStyle = componentStyle;\n StyledComponent.contextTypes = modifiedContextShape;\n StyledComponent.displayName = displayName;\n StyledComponent.styledComponentId = styledComponentId;\n StyledComponent.target = target;\n if (process.env.NODE_ENV !== 'production') {\n StyledComponent.warnTooManyClasses = createWarnTooManyClasses(displayName);\n }\n if (isClass) {\n hoistStatics(StyledComponent, target, {\n // all SC-specific things should not be hoisted\n attrs: true,\n componentStyle: true,\n displayName: true,\n extend: true,\n styledComponentId: true,\n target: true,\n warnTooManyClasses: true,\n withComponent: true\n });\n }\n return StyledComponent;\n };\n return createStyledComponent;\n};\n\n// Source: https://github.com/garycourt/murmurhash-js/blob/master/murmurhash2_gc.js\nfunction murmurhash(str) {\n var l = str.length | 0,\n h = l | 0,\n i = 0,\n k;\n while (l >= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n k ^= k >>> 24;\n k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16) ^ k;\n l -= 4;\n ++i;\n }\n switch (l) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n }\n h ^= h >>> 13;\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n h ^= h >>> 15;\n return h >>> 0;\n}\n\n// \n\nvar areStylesCacheable = IS_BROWSER;\nvar isStaticRules = function isStaticRules(rules, attrs) {\n for (var i = 0, len = rules.length; i < len; i += 1) {\n var rule = rules[i];\n\n // recursive case\n if (Array.isArray(rule) && !isStaticRules(rule)) {\n return false;\n } else if (typeof rule === 'function' && !isStyledComponent(rule)) {\n // functions are allowed to be static if they're just being\n // used to get the classname of a nested styled component\n return false;\n }\n }\n if (attrs !== undefined) {\n // eslint-disable-next-line guard-for-in, no-restricted-syntax\n for (var key in attrs) {\n if (typeof attrs[key] === 'function') {\n return false;\n }\n }\n }\n return true;\n};\nvar isHMREnabled = typeof module !== 'undefined' && module.hot && process.env.NODE_ENV !== 'production';\n\n/*\n ComponentStyle is all the CSS-specific stuff, not\n the React-specific stuff.\n */\nvar _ComponentStyle = function (nameGenerator, flatten, stringifyRules) {\n /* combines hashStr (murmurhash) and nameGenerator for convenience */\n var generateRuleHash = function generateRuleHash(str) {\n return nameGenerator(murmurhash(str));\n };\n var ComponentStyle = function () {\n function ComponentStyle(rules, attrs, componentId) {\n classCallCheck(this, ComponentStyle);\n this.rules = rules;\n this.isStatic = !isHMREnabled && isStaticRules(rules, attrs);\n this.componentId = componentId;\n if (!StyleSheet.master.hasId(componentId)) {\n var placeholder = process.env.NODE_ENV !== 'production' ? ['.' + componentId + ' {}'] : [];\n StyleSheet.master.deferredInject(componentId, placeholder);\n }\n }\n\n /*\n * Flattens a rule set into valid CSS\n * Hashes it, wraps the whole chunk in a .hash1234 {}\n * Returns the hash to be injected on render()\n * */\n\n ComponentStyle.prototype.generateAndInjectStyles = function generateAndInjectStyles(executionContext, styleSheet) {\n var isStatic = this.isStatic,\n componentId = this.componentId,\n lastClassName = this.lastClassName;\n if (areStylesCacheable && isStatic && lastClassName !== undefined && styleSheet.hasNameForId(componentId, lastClassName)) {\n return lastClassName;\n }\n var flatCSS = flatten(this.rules, executionContext);\n var name = generateRuleHash(this.componentId + flatCSS.join(''));\n if (!styleSheet.hasNameForId(componentId, name)) {\n styleSheet.inject(this.componentId, stringifyRules(flatCSS, '.' + name), name);\n }\n this.lastClassName = name;\n return name;\n };\n ComponentStyle.generateName = function generateName(str) {\n return generateRuleHash(str);\n };\n return ComponentStyle;\n }();\n return ComponentStyle;\n};\n\n// \n// Thanks to ReactDOMFactories for this handy list!\n\nvar domElements = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr',\n// SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\n// \n\nvar _styled = function (styledComponent, constructWithOptions) {\n var styled = function styled(tag) {\n return constructWithOptions(styledComponent, tag);\n };\n\n // Shorthands for all valid HTML Elements\n domElements.forEach(function (domElement) {\n styled[domElement] = styled(domElement);\n });\n return styled;\n};\n\n// \n\nvar replaceWhitespace = function replaceWhitespace(str) {\n return str.replace(/\\s|\\\\n/g, '');\n};\nvar _keyframes = function (nameGenerator, stringifyRules, css) {\n return function () {\n var styleSheet = StyleSheet.master;\n var rules = css.apply(undefined, arguments);\n var name = nameGenerator(murmurhash(replaceWhitespace(JSON.stringify(rules))));\n var id = 'sc-keyframes-' + name;\n if (!styleSheet.hasNameForId(id, name)) {\n styleSheet.inject(id, stringifyRules(rules, name, '@keyframes'), name);\n }\n return name;\n };\n};\n\n// \n\nvar _injectGlobal = function (stringifyRules, css) {\n var injectGlobal = function injectGlobal() {\n var styleSheet = StyleSheet.master;\n var rules = css.apply(undefined, arguments);\n var hash = murmurhash(JSON.stringify(rules));\n var id = 'sc-global-' + hash;\n if (!styleSheet.hasId(id)) {\n styleSheet.inject(id, stringifyRules(rules));\n }\n };\n return injectGlobal;\n};\n\n// \n\nvar _constructWithOptions = function (css) {\n var constructWithOptions = function constructWithOptions(componentConstructor, tag) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : EMPTY_OBJECT;\n if (!isValidElementType(tag)) {\n throw new StyledComponentsError(1, String(tag));\n }\n\n /* This is callable directly as a template function */\n // $FlowFixMe: Not typed to avoid destructuring arguments\n var templateFunction = function templateFunction() {\n return componentConstructor(tag, options, css.apply(undefined, arguments));\n };\n\n /* If config methods are called, wrap up a new template function and merge options */\n templateFunction.withConfig = function (config) {\n return constructWithOptions(componentConstructor, tag, _extends({}, options, config));\n };\n templateFunction.attrs = function (attrs) {\n return constructWithOptions(componentConstructor, tag, _extends({}, options, {\n attrs: _extends({}, options.attrs || EMPTY_OBJECT, attrs)\n }));\n };\n return templateFunction;\n };\n return constructWithOptions;\n};\n\n// \n\nvar withTheme = function (Component$$1) {\n var isStatelessFunctionalComponent = typeof Component$$1 === 'function' &&\n // $FlowFixMe TODO: flow for prototype\n !(Component$$1.prototype && 'isReactComponent' in Component$$1.prototype);\n\n // NOTE: We can't pass a ref to a stateless functional component\n var shouldSetInnerRef = isStyledComponent(Component$$1) || isStatelessFunctionalComponent;\n var WithTheme = function (_React$Component) {\n inherits(WithTheme, _React$Component);\n function WithTheme() {\n var _temp, _this, _ret;\n classCallCheck(this, WithTheme);\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _ret = (_temp = (_this = possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = EMPTY_OBJECT, _this.unsubscribeId = -1, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n // NOTE: This is so that isStyledComponent passes for the innerRef unwrapping\n\n WithTheme.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n var defaultProps = this.constructor.defaultProps;\n var styledContext = this.context[CHANNEL_NEXT];\n var themeProp = determineTheme(this.props, undefined, defaultProps);\n if (styledContext === undefined && themeProp === undefined && process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn('[withTheme] You are not using a ThemeProvider nor passing a theme prop or a theme in defaultProps');\n } else if (styledContext === undefined && themeProp !== undefined) {\n this.setState({\n theme: themeProp\n });\n } else {\n var subscribe = styledContext.subscribe;\n this.unsubscribeId = subscribe(function (nextTheme) {\n var theme = determineTheme(_this2.props, nextTheme, defaultProps);\n _this2.setState({\n theme: theme\n });\n });\n }\n };\n WithTheme.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var defaultProps = this.constructor.defaultProps;\n this.setState(function (oldState) {\n var theme = determineTheme(nextProps, oldState.theme, defaultProps);\n return {\n theme: theme\n };\n });\n };\n WithTheme.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.unsubscribeId !== -1) {\n this.context[CHANNEL_NEXT].unsubscribe(this.unsubscribeId);\n }\n };\n WithTheme.prototype.render = function render() {\n var props = _extends({\n theme: this.state.theme\n }, this.props);\n if (!shouldSetInnerRef) {\n props.ref = props.innerRef;\n delete props.innerRef;\n }\n return React.createElement(Component$$1, props);\n };\n return WithTheme;\n }(React.Component);\n WithTheme.contextTypes = contextShape;\n WithTheme.displayName = 'WithTheme(' + getComponentName(Component$$1) + ')';\n WithTheme.styledComponentId = 'withTheme';\n return hoistStatics(WithTheme, Component$$1);\n};\n\n// \n\n/* eslint-disable */\nvar __DO_NOT_USE_OR_YOU_WILL_BE_HAUNTED_BY_SPOOKY_GHOSTS = {\n StyleSheet: StyleSheet\n};\n\n// \n\n/* Warning if you've imported this file on React Native */\nif (process.env.NODE_ENV !== 'production' && typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n // eslint-disable-next-line no-console\n console.warn(\"It looks like you've imported 'styled-components' on React Native.\\n\" + \"Perhaps you're looking to import 'styled-components/native'?\\n\" + 'Read more about this at https://www.styled-components.com/docs/basics#react-native');\n}\n\n/* Warning if there are several instances of styled-components */\nif (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test' && typeof window !== 'undefined' && typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string' && navigator.userAgent.indexOf('Node.js') === -1 && navigator.userAgent.indexOf('jsdom') === -1) {\n window['__styled-components-init__'] = window['__styled-components-init__'] || 0;\n if (window['__styled-components-init__'] === 1) {\n // eslint-disable-next-line no-console\n console.warn(\"It looks like there are several instances of 'styled-components' initialized in this application. \" + 'This may cause dynamic styles not rendering properly, errors happening during rehydration process ' + 'and makes your application bigger without a good reason.\\n\\n' + 'See https://s-c.sh/2BAXzed for more info.');\n }\n window['__styled-components-init__'] += 1;\n}\n\n/* Instantiate singletons */\nvar ComponentStyle = _ComponentStyle(generateAlphabeticName, flatten, stringifyRules);\nvar constructWithOptions = _constructWithOptions(css);\nvar StyledComponent = _StyledComponent(ComponentStyle, constructWithOptions);\n\n/* Instantiate exported singletons */\nvar keyframes = _keyframes(generateAlphabeticName, stringifyRules, css);\nvar injectGlobal = _injectGlobal(stringifyRules, css);\nvar styled = _styled(StyledComponent, constructWithOptions);\nexport default styled;\nexport { css, keyframes, injectGlobal, isStyledComponent, consolidateStreamedStyles, ThemeProvider, withTheme, ServerStyleSheet, StyleSheetManager, __DO_NOT_USE_OR_YOU_WILL_BE_HAUNTED_BY_SPOOKY_GHOSTS };","'use strict';\n\nfunction _interopDefault(ex) {\n return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;\n}\nvar React = require('react');\nvar React__default = _interopDefault(React);\nvar shallowEqual = _interopDefault(require('shallowequal'));\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n var mountedInstances = [];\n var state;\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n var SideEffect = /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(SideEffect, _Component);\n function SideEffect() {\n return _Component.apply(this, arguments) || this;\n }\n\n // Try to use displayName of wrapped component\n // Expose canUseDOM so tests can monkeypatch it\n SideEffect.peek = function peek() {\n return state;\n };\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n var _proto = SideEffect.prototype;\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !shallowEqual(nextProps, this.props);\n };\n _proto.componentWillMount = function componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n _proto.render = function render() {\n return React__default.createElement(WrappedComponent, this.props);\n };\n return SideEffect;\n }(React.Component);\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n return SideEffect;\n };\n}\nmodule.exports = withSideEffect;","var instances = 'ej2_instances';\nvar uid = 0;\nvar isBlazorPlatform = false;\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function disableBlazorMode() {\n isBlazorPlatform = false;\n}\n/**\n * Create Instance from constructor function with desired parameters.\n *\n * @param {Function} classFunction - Class function to which need to create instance\n * @param {any[]} params - Parameters need to passed while creating instance\n * @returns {any} ?\n * @private\n */\nexport function createInstance(classFunction, params) {\n var arrayParam = params;\n arrayParam.unshift(undefined);\n return new (Function.prototype.bind.apply(classFunction, arrayParam))();\n}\n/**\n * To run a callback function immediately after the browser has completed other operations.\n *\n * @param {Function} handler - callback function to be triggered.\n * @returns {Function} ?\n * @private\n */\nexport function setImmediate(handler) {\n var unbind;\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n intCrypto.getRandomValues(num);\n var secret = 'ej2' + combineArray(num);\n var messageHandler = function (event) {\n if (event.source === window && typeof event.data === 'string' && event.data.length <= 32 && event.data === secret) {\n handler();\n unbind();\n }\n };\n window.addEventListener('message', messageHandler, false);\n window.postMessage(secret, '*');\n return unbind = function () {\n window.removeEventListener('message', messageHandler);\n handler = messageHandler = secret = undefined;\n };\n}\n/**\n * To get nameSpace value from the desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\nexport function getValue(nameSpace, obj) {\n var value = obj;\n var splits = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n for (var i = 0; i < splits.length && !isUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n }\n return value;\n}\n/**\n * To set value for the nameSpace in desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} value - Value that you need to set.\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\nexport function setValue(nameSpace, value, obj) {\n var keys = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n var start = obj || {};\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[parseInt(i.toString(), 10)];\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n continue;\n }\n if (i + 1 === length) {\n fromObj[\"\" + key] = value === undefined ? {} : value;\n } else if (isNullOrUndefined(fromObj[\"\" + key])) {\n fromObj[\"\" + key] = {};\n }\n fromObj = fromObj[\"\" + key];\n }\n return start;\n}\n/**\n * Delete an item from Object\n *\n * @param {any} obj - Object in which we need to delete an item.\n * @param {string} key - String value to the get the inner object\n * @returns {void} ?\n * @private\n */\nexport function deleteObject(obj, key) {\n delete obj[\"\" + key];\n}\n/**\n *@private\n */\nexport var containerObject = typeof window !== 'undefined' ? window : {};\n/**\n * Check weather the given argument is only object.\n *\n * @param {any} obj - Object which is need to check.\n * @returns {boolean} ?\n * @private\n */\nexport function isObject(obj) {\n var objCon = {};\n return !isNullOrUndefined(obj) && obj.constructor === objCon.constructor;\n}\n/**\n * To get enum value by giving the string.\n *\n * @param {any} enumObject - Enum object.\n * @param {string} enumValue - Enum value to be searched\n * @returns {any} ?\n * @private\n */\nexport function getEnumValue(enumObject, enumValue) {\n return enumObject[\"\" + enumValue];\n}\n/**\n * Merge the source object into destination object.\n *\n * @param {any} source - source object which is going to merge with destination object\n * @param {any} destination - object need to be merged\n * @returns {void} ?\n * @private\n */\nexport function merge(source, destination) {\n if (!isNullOrUndefined(destination)) {\n var temrObj = source;\n var tempProp = destination;\n var keys = Object.keys(destination);\n var deepmerge = 'deepMerge';\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!isNullOrUndefined(temrObj[\"\" + deepmerge]) && temrObj[\"\" + deepmerge].indexOf(key) !== -1 && (isObject(tempProp[\"\" + key]) || Array.isArray(tempProp[\"\" + key]))) {\n extend(temrObj[\"\" + key], temrObj[\"\" + key], tempProp[\"\" + key], true);\n } else {\n temrObj[\"\" + key] = tempProp[\"\" + key];\n }\n }\n }\n}\n/**\n * Extend the two object with newer one.\n *\n * @param {any} copied - Resultant object after merged\n * @param {Object} first - First object need to merge\n * @param {Object} second - Second object need to merge\n * @param {boolean} deep ?\n * @returns {Object} ?\n * @private\n */\nexport function extend(copied, first, second, deep) {\n var result = copied && typeof copied === 'object' ? copied : {};\n var length = arguments.length;\n var args = [copied, first, second, deep];\n if (deep) {\n length = length - 1;\n }\n var _loop_1 = function (i) {\n if (!args[parseInt(i.toString(), 10)]) {\n return \"continue\";\n }\n var obj1 = args[parseInt(i.toString(), 10)];\n Object.keys(obj1).forEach(function (key) {\n var src = result[\"\" + key];\n var copy = obj1[\"\" + key];\n var clone;\n var isArrayChanged = Array.isArray(copy) && Array.isArray(src) && copy.length !== src.length;\n var blazorEventExtend = isBlazor() ? !(src instanceof Event) && !isArrayChanged : true;\n if (deep && blazorEventExtend && (isObject(copy) || Array.isArray(copy))) {\n if (isObject(copy)) {\n clone = src ? src : {};\n if (Array.isArray(clone) && Object.prototype.hasOwnProperty.call(clone, 'isComplexArray')) {\n extend(clone, {}, copy, deep);\n } else {\n result[\"\" + key] = extend(clone, {}, copy, deep);\n }\n } else {\n /* istanbul ignore next */\n clone = isBlazor() ? src && Object.keys(copy).length : src ? src : [];\n result[\"\" + key] = extend([], clone, copy, clone && clone.length || copy && copy.length);\n }\n } else {\n result[\"\" + key] = copy;\n }\n });\n };\n for (var i = 1; i < length; i++) {\n _loop_1(i);\n }\n return result;\n}\n/**\n * To check whether the object is null or undefined.\n *\n * @param {any} value - To check the object is null or undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isNullOrUndefined(value) {\n return value === undefined || value === null;\n}\n/**\n * To check whether the object is undefined.\n *\n * @param {any} value - To check the object is undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isUndefined(value) {\n return 'undefined' === typeof value;\n}\n/**\n * To return the generated unique name\n *\n * @param {string} definedName - To concatenate the unique id to provided name\n * @returns {string} ?\n * @private\n */\nexport function getUniqueID(definedName) {\n return definedName + '_' + uid++;\n}\n/**\n * It limits the rate at which a function can fire. The function will fire only once every provided second instead of as quickly.\n *\n * @param {Function} eventFunction - Specifies the function to run when the event occurs\n * @param {number} delay - A number that specifies the milliseconds for function delay call option\n * @returns {Function} ?\n * @private\n */\nexport function debounce(eventFunction, delay) {\n var out;\n return function () {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var later = function () {\n out = null;\n return eventFunction.apply(_this, args);\n };\n clearTimeout(out);\n out = setTimeout(later, delay);\n };\n}\n/**\n * To convert the object to string for query url\n *\n * @param {Object} data ?\n * @returns {string} ?\n * @private\n */\nexport function queryParams(data) {\n var array = [];\n var keys = Object.keys(data);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n array.push(encodeURIComponent(key) + '=' + encodeURIComponent('' + data[\"\" + key]));\n }\n return array.join('&');\n}\n/**\n * To check whether the given array contains object.\n *\n * @param {any} value - Specifies the T type array to be checked.\n * @returns {boolean} ?\n * @private\n */\nexport function isObjectArray(value) {\n var parser = Object.prototype.toString;\n if (parser.call(value) === '[object Array]') {\n if (parser.call(value[0]) === '[object Object]') {\n return true;\n }\n }\n return false;\n}\n/**\n * To check whether the child element is descendant to parent element or parent and child are same element.\n *\n * @param {Element} child - Specifies the child element to compare with parent.\n * @param {Element} parent - Specifies the parent element.\n * @returns {boolean} ?\n * @private\n */\nexport function compareElementParent(child, parent) {\n var node = child;\n if (node === parent) {\n return true;\n } else if (node === document || !node) {\n return false;\n } else {\n return compareElementParent(node.parentNode, parent);\n }\n}\n/**\n * To throw custom error message.\n *\n * @param {string} message - Specifies the error message to be thrown.\n * @returns {void} ?\n * @private\n */\nexport function throwError(message) {\n try {\n throw new Error(message);\n } catch (e) {\n throw new Error(e.message + '\\n' + e.stack);\n }\n}\n/**\n * This function is used to print given element\n *\n * @param {Element} element - Specifies the print content element.\n * @param {Window} printWindow - Specifies the print window.\n * @returns {Window} ?\n * @private\n */\nexport function print(element, printWindow) {\n var div = document.createElement('div');\n var links = [].slice.call(document.getElementsByTagName('head')[0].querySelectorAll('base, link, style'));\n var blinks = [].slice.call(document.getElementsByTagName('body')[0].querySelectorAll('link, style'));\n if (blinks.length) {\n for (var l = 0, len = blinks.length; l < len; l++) {\n links.push(blinks[parseInt(l.toString(), 10)]);\n }\n }\n var reference = '';\n if (isNullOrUndefined(printWindow)) {\n printWindow = window.open('', 'print', 'height=452,width=1024,tabbar=no');\n }\n div.appendChild(element.cloneNode(true));\n for (var i = 0, len = links.length; i < len; i++) {\n reference += links[parseInt(i.toString(), 10)].outerHTML;\n }\n printWindow.document.write('<!DOCTYPE html> <html><head>' + reference + '</head><body>' + div.innerHTML + '<script> (function() { window.ready = true; })(); </script>' + '</body></html>');\n printWindow.document.close();\n printWindow.focus();\n var interval = setInterval(function () {\n if (printWindow.ready) {\n printWindow.print();\n printWindow.close();\n clearInterval(interval);\n }\n }, 500);\n return printWindow;\n}\n/**\n * Function to normalize the units applied to the element.\n *\n * @param {number|string} value ?\n * @returns {string} result\n * @private\n */\nexport function formatUnit(value) {\n var result = value + '';\n if (result.match(/auto|cm|mm|in|px|pt|pc|%|em|ex|ch|rem|vw|vh|vmin|vmax/)) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {boolean} result\n * @private\n */\nexport function isBlazor() {\n return isBlazorPlatform;\n}\n/**\n * Function to convert xPath to DOM element in blazor platform\n *\n * @returns {HTMLElement} result\n * @param {HTMLElement | object} element ?\n * @private\n */\nexport function getElement(element) {\n var xPath = 'xPath';\n if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[\"\" + xPath])) {\n return document.evaluate(element[\"\" + xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n return element;\n}\n/**\n * Function to fetch the Instances of a HTML element for the given component.\n *\n * @param {string | HTMLElement} element ?\n * @param {any} component ?\n * @returns {Object} ?\n * @private\n */\nexport function getInstance(element, component) {\n var elem = typeof element === 'string' ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n for (var _i = 0, _a = elem[\"\" + instances]; _i < _a.length; _i++) {\n var inst = _a[_i];\n if (inst instanceof component) {\n return inst;\n }\n }\n }\n return null;\n}\n/**\n * Function to add instances for the given element.\n *\n * @param {string | HTMLElement} element ?\n * @param {Object} instance ?\n * @returns {void} ?\n * @private\n */\nexport function addInstance(element, instance) {\n var elem = typeof element === 'string' ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n elem[\"\" + instances].push(instance);\n } else {\n elem[\"\" + instances] = [instance];\n }\n}\n/**\n * Function to generate the unique id.\n *\n * @returns {any} ?\n * @private\n */\nexport function uniqueID() {\n if (typeof window === 'undefined') {\n return;\n }\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\n/**\n *\n * @param {Int16Array} num ?\n * @returns {string} ?\n */\nfunction combineArray(num) {\n var ret = '';\n for (var i = 0; i < 5; i++) {\n ret += (i ? ',' : '') + num[parseInt(i.toString(), 10)];\n }\n return ret;\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Parser\n */\nvar defaultNumberingSystem = {\n 'latn': {\n '_digits': '0123456789',\n '_type': 'numeric'\n }\n};\nimport { isUndefined, getValue, isBlazor } from '../util';\nvar defaultNumberSymbols = {\n 'decimal': '.',\n 'group': ',',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'exponential': 'E'\n};\nvar latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n/**\n * Interface for parser base\n *\n * @private\n */\nvar ParserBase = /** @class */function () {\n function ParserBase() {}\n /**\n * Returns the cldr object for the culture specifies\n *\n * @param {Object} obj - Specifies the object from which culture object to be acquired.\n * @param {string} cName - Specifies the culture name.\n * @returns {Object} ?\n */\n ParserBase.getMainObject = function (obj, cName) {\n var value = isBlazor() ? cName : 'main.' + cName;\n return getValue(value, obj);\n };\n /**\n * Returns the numbering system object from given cldr data.\n *\n * @param {Object} obj - Specifies the object from which number system is acquired.\n * @returns {Object} ?\n */\n ParserBase.getNumberingSystem = function (obj) {\n return getValue('supplemental.numberingSystems', obj) || this.numberingSystems;\n };\n /**\n * Returns the reverse of given object keys or keys specified.\n *\n * @param {Object} prop - Specifies the object to be reversed.\n * @param {number[]} keys - Optional parameter specifies the custom keyList for reversal.\n * @returns {Object} ?\n */\n ParserBase.reverseObject = function (prop, keys) {\n var propKeys = keys || Object.keys(prop);\n var res = {};\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var key = propKeys_1[_i];\n if (!Object.prototype.hasOwnProperty.call(res, prop[\"\" + key])) {\n res[prop[\"\" + key]] = key;\n }\n }\n return res;\n };\n /**\n * Returns the symbol regex by skipping the escape sequence.\n *\n * @param {string[]} props - Specifies the array values to be skipped.\n * @returns {RegExp} ?\n */\n ParserBase.getSymbolRegex = function (props) {\n var regexStr = props.map(function (str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n }).join('|');\n var regExp = RegExp;\n return new regExp(regexStr, 'g');\n };\n /**\n *\n * @param {Object} prop ?\n * @returns {Object} ?\n */\n ParserBase.getSymbolMatch = function (prop) {\n var matchKeys = Object.keys(defaultNumberSymbols);\n var ret = {};\n for (var _i = 0, matchKeys_1 = matchKeys; _i < matchKeys_1.length; _i++) {\n var key = matchKeys_1[_i];\n ret[prop[\"\" + key]] = defaultNumberSymbols[\"\" + key];\n }\n return ret;\n };\n /**\n * Returns regex string for provided value\n *\n * @param {string} val ?\n * @returns {string} ?\n */\n ParserBase.constructRegex = function (val) {\n var len = val.length;\n var ret = '';\n for (var i = 0; i < len; i++) {\n if (i !== len - 1) {\n ret += val[parseInt(i.toString(), 10)] + '|';\n } else {\n ret += val[parseInt(i.toString(), 10)];\n }\n }\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {string} value - Specifies the values to be replaced.\n * @param {RegExp} regex - Specifies the regex to search.\n * @param {Object} obj - Specifies the object matcher to be replace value parts.\n * @returns {string} ?\n */\n ParserBase.convertValueParts = function (value, regex, obj) {\n return value.replace(regex, function (str) {\n return obj[\"\" + str];\n });\n };\n /**\n * Returns default numbering system object for formatting from cldr data\n *\n * @param {Object} obj ?\n * @returns {NumericObject} ?\n */\n ParserBase.getDefaultNumberingSystem = function (obj) {\n var ret = {};\n ret.obj = getValue('numbers', obj);\n ret.nSystem = getValue('defaultNumberingSystem', ret.obj);\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} needSymbols ?\n * @param {boolean} blazorMode ?\n * @returns {Object} ?\n */\n ParserBase.getCurrentNumericOptions = function (curObj, numberSystem, needSymbols, blazorMode) {\n var ret = {};\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem) || blazorMode) {\n var digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n ret.numericPair = this.reverseObject(digits, latnNumberSystem);\n var regExp = RegExp;\n ret.numberParseRegex = new regExp(this.constructRegex(digits), 'g');\n ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']';\n if (needSymbols) {\n ret.numericRegex = digits[0] + '-' + digits[9];\n ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem);\n ret.numberSystem = cur.nSystem;\n }\n }\n }\n return ret;\n };\n /**\n * Returns number mapper object for the provided cldr data\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} isNumber ?\n * @returns {NumberMapper} ?\n */\n ParserBase.getNumberMapper = function (curObj, numberSystem, isNumber) {\n var ret = {\n mapper: {}\n };\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem)) {\n ret.numberSystem = cur.nSystem;\n ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols);\n var digits = getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n for (var _i = 0, latnNumberSystem_1 = latnNumberSystem; _i < latnNumberSystem_1.length; _i++) {\n var i = latnNumberSystem_1[_i];\n ret.mapper[parseInt(i.toString(), 10)] = digits[parseInt(i.toString(), 10)];\n }\n }\n }\n return ret;\n };\n ParserBase.nPair = 'numericPair';\n ParserBase.nRegex = 'numericRegex';\n ParserBase.numberingSystems = defaultNumberingSystem;\n return ParserBase;\n}();\nexport { ParserBase };\n/**\n * @private\n */\nvar blazorCurrencyData = {\n 'DJF': 'Fdj',\n 'ERN': 'Nfk',\n 'ETB': 'Br',\n 'NAD': '$',\n 'ZAR': 'R',\n 'XAF': 'FCFA',\n 'GHS': 'GH₵',\n 'XDR': 'XDR',\n 'AED': 'د.Ø¥.',\n 'BHD': 'د.ب.',\n 'DZD': 'د.ج.',\n 'EGP': 'ج.Ù….',\n 'ILS': '₪',\n 'IQD': 'د.ع.',\n 'JOD': 'د.ا.',\n 'KMF': 'CF',\n 'KWD': 'د.Ùƒ.',\n 'LBP': 'Ù„.Ù„.',\n 'LYD': 'د.Ù„.',\n 'MAD': 'د.Ù….',\n 'MRU': 'Ø£.Ù….',\n 'OMR': 'ر.ع.',\n 'QAR': 'ر.Ù‚.',\n 'SAR': 'ر.س.',\n 'SDG': 'ج.س.',\n 'SOS': 'S',\n 'SSP': '£',\n 'SYP': 'Ù„.س.',\n 'TND': 'د.ت.',\n 'YER': 'ر.ÙŠ.',\n 'CLP': '$',\n 'INR': '₹',\n 'TZS': 'TSh',\n 'EUR': '€',\n 'AZN': '₼',\n 'RUB': '₽',\n 'BYN': 'Br',\n 'ZMW': 'K',\n 'BGN': 'лв.',\n 'NGN': '₦',\n 'XOF': 'CFA',\n 'BDT': '৳',\n 'CNY': 'Â¥',\n 'BAM': 'КМ',\n 'UGX': 'USh',\n 'USD': '$',\n 'CZK': 'KÄ',\n 'GBP': '£',\n 'DKK': 'kr.',\n 'KES': 'Ksh',\n 'CHF': 'CHF',\n 'MVR': 'Þƒ.',\n 'BTN': 'Nu.',\n 'XCD': 'EC$',\n 'AUD': '$',\n 'BBD': '$',\n 'BIF': 'FBu',\n 'BMD': '$',\n 'BSD': '$',\n 'BWP': 'P',\n 'BZD': '$',\n 'CAD': '$',\n 'NZD': '$',\n 'FJD': '$',\n 'FKP': '£',\n 'GIP': '£',\n 'GMD': 'D',\n 'GYD': '$',\n 'HKD': '$',\n 'IDR': 'Rp',\n 'JMD': '$',\n 'KYD': '$',\n 'LRD': '$',\n 'MGA': 'Ar',\n 'MOP': 'MOP$',\n 'MUR': 'Rs',\n 'MWK': 'MK',\n 'MYR': 'RM',\n 'PGK': 'K',\n 'PHP': '₱',\n 'PKR': 'Rs',\n 'RWF': 'RF',\n 'SBD': '$',\n 'SCR': 'SR',\n 'SEK': 'kr',\n 'SGD': '$',\n 'SHP': '£',\n 'SLL': 'Le',\n 'ANG': 'NAf.',\n 'SZL': 'E',\n 'TOP': 'T$',\n 'TTD': '$',\n 'VUV': 'VT',\n 'WST': 'WS$',\n 'ARS': '$',\n 'BOB': 'Bs',\n 'BRL': 'R$',\n 'COP': '$',\n 'CRC': 'â‚¡',\n 'CUP': '$',\n 'DOP': '$',\n 'GTQ': 'Q',\n 'HNL': 'L',\n 'MXN': '$',\n 'NIO': 'C$',\n 'PAB': 'B/.',\n 'PEN': 'S/',\n 'PYG': '₲',\n 'UYU': '$',\n 'VES': 'Bs.S',\n 'IRR': 'ريال',\n 'GNF': 'FG',\n 'CDF': 'FC',\n 'HTG': 'G',\n 'XPF': 'FCFP',\n 'HRK': 'kn',\n 'HUF': 'Ft',\n 'AMD': 'Ö',\n 'ISK': 'kr',\n 'JPY': 'Â¥',\n 'GEL': '₾',\n 'CVE': '​',\n 'KZT': '₸',\n 'KHR': '៛',\n 'KPW': 'â‚©',\n 'KRW': 'â‚©',\n 'KGS': 'Ñом',\n 'AOA': 'Kz',\n 'LAK': 'â‚',\n 'MZN': 'MTn',\n 'MKD': 'ден',\n 'MNT': 'â‚®',\n 'BND': '$',\n 'MMK': 'K',\n 'NOK': 'kr',\n 'NPR': 'रà¥',\n 'AWG': 'Afl.',\n 'SRD': '$',\n 'PLN': 'zÅ‚',\n 'AFN': 'Ø‹',\n 'STN': 'Db',\n 'MDL': 'L',\n 'RON': 'lei',\n 'UAH': 'â‚´',\n 'LKR': 'රු.',\n 'ALL': 'Lekë',\n 'RSD': 'дин.',\n 'TJS': 'Ñмн',\n 'THB': '฿',\n 'TMT': 'm.',\n 'TRY': '₺',\n 'UZS': 'Ñўм',\n 'VND': 'â‚«',\n 'TWD': 'NT$'\n};\n/**\n *\n * @param {string} currencyCode ?\n * @returns {string} ?\n */\nexport function getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}","import { getValue, isNullOrUndefined, extend, isBlazor } from '../util';\nimport { ParserBase as parser, getBlazorCurrencySymbol } from './parser-base';\nimport { isUndefined } from '../util';\n/**\n * Specifies default currency code to be considered\n *\n * @private\n */\nexport var defaultCurrencyCode = 'USD';\nvar NumberFormat = null;\nvar DateFormat = null;\nexport function setDefaultCurrencyCode(value) {\n defaultCurrencyCode = value;\n}\nexport function setNumberFormat(value) {\n NumberFormat = value;\n}\nexport function setDateFormat(value) {\n DateFormat = value;\n}\nvar regExp = RegExp;\nexport var blazorCultureFormats = {\n 'en-US': {\n 'd': 'M/d/y',\n 'D': 'EEEE, MMMM d, y',\n 'f': 'EEEE, MMMM d, y h:mm a',\n 'F': 'EEEE, MMMM d, y h:mm:s a',\n 'g': 'M/d/y h:mm a',\n 'G': 'M/d/yyyy h:mm:ss tt',\n 'm': 'MMMM d',\n 'M': 'MMMM d',\n 'r': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 'R': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 's': 'yyyy\\'-\\'MM\\'-\\'dd\\'T\\'HH\\':\\'mm\\':\\'ss',\n 't': 'h:mm tt',\n 'T': 'h:m:s tt',\n 'u': 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n 'U': 'dddd, MMMM d, yyyy h:mm:ss tt',\n 'y': 'MMMM yyyy',\n 'Y': 'MMMM yyyy'\n }\n};\n/**\n * Date base common constants and function for date parser and formatter.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var IntlBase;\n(function (IntlBase) {\n // eslint-disable-next-line security/detect-unsafe-regex\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n // eslint-disable-next-line security/detect-unsafe-regex\n IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*[0# ]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;\n var fractionRegex = /[0-9]/g;\n IntlBase.defaultCurrency = '$';\n var mapper = ['infinity', 'nan', 'group', 'decimal'];\n var patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;\n var patternMatch = {\n 'G': '',\n 'M': 'm',\n 'L': 'm',\n 'H': 'h',\n 'c': 'd',\n '\\'': '\"',\n ' a': ' AM/PM',\n 'yy': 'yy',\n 'y': 'yyyy',\n 'EEEE': 'dddd',\n 'E': 'ddd'\n };\n IntlBase.dateConverterMapper = /dddd|ddd/ig;\n var defaultFirstDay = 'sun';\n IntlBase.islamicRegex = /^islamic/;\n var firstDayMapper = {\n 'sun': 0,\n 'mon': 1,\n 'tue': 2,\n 'wed': 3,\n 'thu': 4,\n 'fri': 5,\n 'sat': 6\n };\n IntlBase.formatRegex = new regExp('(^[ncpae]{1})([0-1]?[0-9]|20)?$', 'i');\n IntlBase.currencyFormatRegex = new regExp('(^[ca]{1})([0-1]?[0-9]|20)?$', 'i');\n IntlBase.curWithoutNumberRegex = /(c|a)$/ig;\n var typeMapper = {\n '$': 'isCurrency',\n '%': 'isPercent',\n '-': 'isNegative',\n 0: 'nlead',\n 1: 'nend'\n };\n IntlBase.dateParseRegex = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];\n IntlBase.defaultObject = {\n 'dates': {\n 'calendars': {\n 'gregorian': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'narrow': {\n '1': 'J',\n '2': 'F',\n '3': 'M',\n '4': 'A',\n '5': 'M',\n '6': 'J',\n '7': 'J',\n '8': 'A',\n '9': 'S',\n '10': 'O',\n '11': 'N',\n '12': 'D'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'Before Christ',\n '0-alt-variant': 'Before Common Era',\n '1': 'Anno Domini',\n '1-alt-variant': 'Common Era'\n },\n 'eraAbbr': {\n '0': 'BC',\n '0-alt-variant': 'BCE',\n '1': 'AD',\n '1-alt-variant': 'CE'\n },\n 'eraNarrow': {\n '0': 'B',\n '0-alt-variant': 'BCE',\n '1': 'A',\n '1-alt-variant': 'CE'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y',\n 'long': 'MMMM d, y',\n 'medium': 'MMM d, y',\n 'short': 'M/d/yy'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'hmsv': 'h:mm:ss a v',\n 'Hmsv': 'HH:mm:ss v',\n 'hmv': 'h:mm a v',\n 'Hmv': 'HH:mm v',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y',\n 'yM': 'M/y',\n 'yMd': 'M/d/y',\n 'yMEd': 'E, M/d/y',\n 'yMMM': 'MMM y',\n 'yMMMd': 'MMM d, y',\n 'yMMMEd': 'E, MMM d, y',\n 'yMMMM': 'MMMM y'\n }\n }\n },\n 'islamic': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Muh.',\n '2': 'Saf.',\n '3': 'Rab. I',\n '4': 'Rab. II',\n '5': 'Jum. I',\n '6': 'Jum. II',\n '7': 'Raj.',\n '8': 'Sha.',\n '9': 'Ram.',\n '10': 'Shaw.',\n '11': 'DhuÊ»l-Q.',\n '12': 'DhuÊ»l-H.'\n },\n 'narrow': {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '10': '10',\n '11': '11',\n '12': '12'\n },\n 'wide': {\n '1': 'Muharram',\n '2': 'Safar',\n '3': 'RabiÊ» I',\n '4': 'RabiÊ» II',\n '5': 'Jumada I',\n '6': 'Jumada II',\n '7': 'Rajab',\n '8': 'ShaÊ»ban',\n '9': 'Ramadan',\n '10': 'Shawwal',\n '11': 'DhuÊ»l-QiÊ»dah',\n '12': 'DhuÊ»l-Hijjah'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'AH'\n },\n 'eraAbbr': {\n '0': 'AH'\n },\n 'eraNarrow': {\n '0': 'AH'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y G',\n 'long': 'MMMM d, y G',\n 'medium': 'MMM d, y G',\n 'short': 'M/d/y GGGGG'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y G',\n 'yyyy': 'y G',\n 'yyyyM': 'M/y GGGGG',\n 'yyyyMd': 'M/d/y GGGGG',\n 'yyyyMEd': 'E, M/d/y GGGGG',\n 'yyyyMMM': 'MMM y G',\n 'yyyyMMMd': 'MMM d, y G',\n 'yyyyMMMEd': 'E, MMM d, y G',\n 'yyyyMMMM': 'MMMM y G',\n 'yyyyQQQ': 'QQQ y G',\n 'yyyyQQQQ': 'QQQQ y G'\n }\n }\n }\n },\n 'timeZoneNames': {\n 'hourFormat': '+HH:mm;-HH:mm',\n 'gmtFormat': 'GMT{0}',\n 'gmtZeroFormat': 'GMT'\n }\n },\n 'numbers': {\n 'currencies': {\n 'USD': {\n 'displayName': 'US Dollar',\n 'symbol': '$',\n 'symbol-alt-narrow': '$'\n },\n 'EUR': {\n 'displayName': 'Euro',\n 'symbol': '€',\n 'symbol-alt-narrow': '€'\n },\n 'GBP': {\n 'displayName': 'British Pound',\n 'symbol-alt-narrow': '£'\n }\n },\n 'defaultNumberingSystem': 'latn',\n 'minimumGroupingDigits': '1',\n 'symbols-numberSystem-latn': {\n 'decimal': '.',\n 'group': ',',\n 'list': ';',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'exponential': 'E',\n 'superscriptingExponent': '×',\n 'perMille': '‰',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'timeSeparator': ':'\n },\n 'decimalFormats-numberSystem-latn': {\n 'standard': '#,##0.###'\n },\n 'percentFormats-numberSystem-latn': {\n 'standard': '#,##0%'\n },\n 'currencyFormats-numberSystem-latn': {\n 'standard': '¤#,##0.00',\n 'accounting': '¤#,##0.00;(¤#,##0.00)'\n },\n 'scientificFormats-numberSystem-latn': {\n 'standard': '#E0'\n }\n }\n };\n IntlBase.blazorDefaultObject = {\n 'numbers': {\n 'mapper': {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9'\n },\n 'mapperDigits': '0123456789',\n 'numberSymbols': {\n 'decimal': '.',\n 'group': ',',\n 'plusSign': '+',\n 'minusSign': '-',\n 'percentSign': '%',\n 'nan': 'NaN',\n 'timeSeparator': ':',\n 'infinity': '∞'\n },\n 'timeSeparator': ':',\n 'currencySymbol': '$',\n 'currencypData': {\n 'nlead': '$',\n 'nend': '',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentpData': {\n 'nlead': '',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentnData': {\n 'nlead': '-',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'currencynData': {\n 'nlead': '($',\n 'nend': ')',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalnData': {\n 'nlead': '-',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalpData': {\n 'nlead': '',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n }\n },\n 'dates': {\n 'dayPeriods': {\n 'am': 'AM',\n 'pm': 'PM'\n },\n 'dateSeperator': '/',\n 'days': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n },\n 'months': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n },\n 'eras': {\n '1': 'AD'\n }\n }\n };\n IntlBase.monthIndex = {\n 3: 'abbreviated',\n 4: 'wide',\n 5: 'narrow',\n 1: 'abbreviated'\n };\n /**\n *\n */\n IntlBase.month = 'months';\n IntlBase.days = 'days';\n /**\n * Default numerber Object\n */\n IntlBase.patternMatcher = {\n C: 'currency',\n P: 'percent',\n N: 'decimal',\n A: 'currency',\n E: 'scientific'\n };\n /**\n * Returns the resultant pattern based on the skeleton, dateObject and the type provided\n *\n * @private\n * @param {string} skeleton ?\n * @param {Object} dateObject ?\n * @param {string} type ?\n * @param {boolean} isIslamic ?\n * @param {string} blazorCulture ?\n * @returns {string} ?\n */\n function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {\n var resPattern;\n var iType = type || 'date';\n if (blazorCulture) {\n resPattern = compareBlazorDateFormats({\n skeleton: skeleton\n }, blazorCulture).format || compareBlazorDateFormats({\n skeleton: 'd'\n }, 'en-US').format;\n } else {\n if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {\n resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);\n if (iType === 'dateTime') {\n var dPattern = getValue('dateFormats.' + skeleton, dateObject);\n var tPattern = getValue('timeFormats.' + skeleton, dateObject);\n resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);\n }\n } else {\n resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);\n }\n if (isUndefined(resPattern) && skeleton === 'yMd') {\n resPattern = 'M/d/y';\n }\n }\n return resPattern;\n }\n IntlBase.getResultantPattern = getResultantPattern;\n /**\n * Returns the dependable object for provided cldr data and culture\n *\n * @private\n * @param {Object} cldr ?\n * @param {string} culture ?\n * @param {string} mode ?\n * @param {boolean} isNumber ?\n * @returns {any} ?\n */\n function getDependables(cldr, culture, mode, isNumber) {\n var ret = {};\n var calendartype = mode || 'gregorian';\n ret.parserObject = parser.getMainObject(cldr, culture) || (isBlazor() ? IntlBase.blazorDefaultObject : IntlBase.defaultObject);\n if (isNumber) {\n ret.numericObject = getValue('numbers', ret.parserObject);\n } else {\n var dateString = isBlazor() ? 'dates' : 'dates.calendars.' + calendartype;\n ret.dateObject = getValue(dateString, ret.parserObject);\n }\n return ret;\n }\n IntlBase.getDependables = getDependables;\n /**\n * Returns the symbol pattern for provided parameters\n *\n * @private\n * @param {string} type ?\n * @param {string} numSystem ?\n * @param {Object} obj ?\n * @param {boolean} isAccount ?\n * @returns {string} ?\n */\n function getSymbolPattern(type, numSystem, obj, isAccount) {\n return getValue(type + 'Formats-numberSystem-' + numSystem + (isAccount ? '.accounting' : '.standard'), obj) || (isAccount ? getValue(type + 'Formats-numberSystem-' + numSystem + '.standard', obj) : '');\n }\n IntlBase.getSymbolPattern = getSymbolPattern;\n /**\n *\n * @param {string} format ?\n * @returns {string} ?\n */\n function ConvertDateToWeekFormat(format) {\n var convertMapper = format.match(IntlBase.dateConverterMapper);\n if (convertMapper && isBlazor()) {\n var tempString = convertMapper[0].length === 3 ? 'EEE' : 'EEEE';\n return format.replace(IntlBase.dateConverterMapper, tempString);\n }\n return format;\n }\n IntlBase.ConvertDateToWeekFormat = ConvertDateToWeekFormat;\n /**\n *\n * @param {DateFormatOptions} formatOptions ?\n * @param {string} culture ?\n * @returns {DateFormatOptions} ?\n */\n function compareBlazorDateFormats(formatOptions, culture) {\n var format = formatOptions.format || formatOptions.skeleton;\n var curFormatMapper = getValue((culture || 'en-US') + '.' + format, blazorCultureFormats);\n if (!curFormatMapper) {\n curFormatMapper = getValue('en-US.' + format, blazorCultureFormats);\n }\n if (curFormatMapper) {\n curFormatMapper = ConvertDateToWeekFormat(curFormatMapper);\n formatOptions.format = curFormatMapper.replace(/tt/, 'a');\n }\n return formatOptions;\n }\n IntlBase.compareBlazorDateFormats = compareBlazorDateFormats;\n /**\n * Returns proper numeric skeleton\n *\n * @private\n * @param {string} skeleton ?\n * @returns {any} ?\n */\n function getProperNumericSkeleton(skeleton) {\n var matches = skeleton.match(IntlBase.formatRegex);\n var ret = {};\n var pattern = matches[1].toUpperCase();\n ret.isAccount = pattern === 'A';\n ret.type = IntlBase.patternMatcher[\"\" + pattern];\n if (skeleton.length > 1) {\n ret.fractionDigits = parseInt(matches[2], 10);\n }\n return ret;\n }\n IntlBase.getProperNumericSkeleton = getProperNumericSkeleton;\n /**\n * Returns format data for number formatting like minimum fraction, maximum fraction, etc..,\n *\n * @private\n * @param {string} pattern ?\n * @param {boolean} needFraction ?\n * @param {string} cSymbol ?\n * @param {boolean} fractionOnly ?\n * @returns {any} ?\n */\n function getFormatData(pattern, needFraction, cSymbol, fractionOnly) {\n var nData = fractionOnly ? {} : {\n nlead: '',\n nend: ''\n };\n var match = pattern.match(IntlBase.customRegex);\n if (match) {\n if (!fractionOnly) {\n nData.nlead = changeCurrencySymbol(match[1], cSymbol);\n nData.nend = changeCurrencySymbol(match[10], cSymbol);\n nData.groupPattern = match[4];\n }\n var fraction = match[7];\n if (fraction && needFraction) {\n var fmatch = fraction.match(fractionRegex);\n if (!isNullOrUndefined(fmatch)) {\n nData.minimumFraction = fmatch.length;\n } else {\n nData.minimumFraction = 0;\n }\n nData.maximumFraction = fraction.length - 1;\n }\n }\n return nData;\n }\n IntlBase.getFormatData = getFormatData;\n /**\n * Changes currency symbol\n *\n * @private\n * @param {string} val ?\n * @param {string} sym ?\n * @returns {string} ?\n */\n function changeCurrencySymbol(val, sym) {\n if (val) {\n val = val.replace(IntlBase.defaultCurrency, sym);\n return sym === '' ? val.trim() : val;\n }\n return '';\n }\n IntlBase.changeCurrencySymbol = changeCurrencySymbol;\n /**\n * Returns currency symbol based on currency code ?\n *\n * @private\n * @param {Object} numericObject ?\n * @param {string} currencyCode ?\n * @param {string} altSymbol ?\n * @param {string} ignoreCurrency ?\n * @returns {string} ?\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol, ignoreCurrency) {\n var symbol = altSymbol ? '.' + altSymbol : '.symbol';\n var getCurrency = ignoreCurrency ? '$' : getValue('currencies.' + currencyCode + symbol, numericObject) || getValue('currencies.' + currencyCode + '.symbol-alt-narrow', numericObject) || '$';\n return getCurrency;\n }\n IntlBase.getCurrencySymbol = getCurrencySymbol;\n /**\n * Returns formatting options for custom number format\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {any} obj ?\n * @returns {any} ?\n */\n function customFormat(format, dOptions, obj) {\n var options = {};\n var formatSplit = format.split(';');\n var data = ['pData', 'nData', 'zeroData'];\n for (var i = 0; i < formatSplit.length; i++) {\n options[\"\" + data[parseInt(i.toString(), 10)]] = customNumberFormat(formatSplit[parseInt(i.toString(), 10)], dOptions, obj);\n }\n if (isNullOrUndefined(options.nData)) {\n options.nData = extend({}, options.pData);\n options.nData.nlead = isNullOrUndefined(dOptions) ? '-' + options.nData.nlead : dOptions.minusSymbol + options.nData.nlead;\n }\n return options;\n }\n IntlBase.customFormat = customFormat;\n /**\n * Returns custom formatting options\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {Object} numObject ?\n * @returns {any} ?\n */\n function customNumberFormat(format, dOptions, numObject) {\n var cOptions = {\n type: 'decimal',\n minimumFractionDigits: 0,\n maximumFractionDigits: 0\n };\n var pattern = format.match(IntlBase.customRegex);\n if (isNullOrUndefined(pattern) || pattern[5] === '' && format !== 'N/A') {\n cOptions.type = undefined;\n return cOptions;\n }\n cOptions.nlead = pattern[1];\n cOptions.nend = pattern[10];\n var integerPart = pattern[6];\n var spaceCapture = integerPart.match(/ $/g) ? true : false;\n var spaceGrouping = integerPart.replace(/ $/g, '').indexOf(' ') !== -1;\n cOptions.useGrouping = integerPart.indexOf(',') !== -1 || spaceGrouping;\n integerPart = integerPart.replace(/,/g, '');\n integerPart = /\\s$/.test(integerPart) ? integerPart.replace(/ /g, '') : integerPart;\n var fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n dOptions.isCustomFormat = true;\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n } else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n var symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n cOptions.groupSeparator = spaceGrouping ? ' ' : dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/'/g, '');\n cOptions.nend = spaceCapture ? ' ' + cOptions.nend.replace(/'/g, '') : cOptions.nend.replace(/'/g, '');\n }\n return cOptions;\n }\n IntlBase.customNumberFormat = customNumberFormat;\n /**\n * Returns formatting options for currency or percent type\n *\n * @private\n * @param {string[]} parts ?\n * @param {string} actual ?\n * @param {string} symbol ?\n * @returns {any} ?\n */\n function isCurrencyPercent(parts, actual, symbol) {\n var options = {\n nlead: parts[0],\n nend: parts[1]\n };\n for (var i = 0; i < 2; i++) {\n var part = parts[parseInt(i.toString(), 10)];\n var loc = part.indexOf(actual);\n if (loc !== -1 && (loc < part.indexOf('\\'') || loc > part.lastIndexOf('\\''))) {\n options[\"\" + typeMapper[parseInt(i.toString(), 10)]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n options[\"\" + typeMapper[\"\" + actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n *\n * @private\n * @param {Object} dateObj ?\n * @returns {string} ?\n */\n function getDateSeparator(dateObj) {\n var value = (getValue('dateFormats.short', dateObj) || '').match(/[dM]([^dM])[dM]/i);\n return value ? value[1] : '/';\n }\n IntlBase.getDateSeparator = getDateSeparator;\n /**\n * Returns Native Date Time pattern\n *\n * @private\n * @param {string} culture ?\n * @param {DateFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcelFormat ?\n * @returns {string} ?\n */\n function getActualDateTimeFormat(culture, options, cldr, isExcelFormat) {\n var dependable = getDependables(cldr, culture, options.calendar);\n if (isBlazor()) {\n options = compareBlazorDateFormats(options, culture);\n }\n var actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);\n if (isExcelFormat) {\n actualPattern = actualPattern.replace(patternRegex, function (pattern) {\n return patternMatch[\"\" + pattern];\n });\n if (actualPattern.indexOf('z') !== -1) {\n var tLength = actualPattern.match(/z/g).length;\n var timeZonePattern = void 0;\n var options_1 = {\n 'timeZone': {}\n };\n options_1.numMapper = parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n options_1.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n var value = new Date();\n var timezone = value.getTimezoneOffset();\n var pattern = tLength < 4 ? '+H;-H' : options_1.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options_1.numMapper.timeSeparator);\n if (timezone === 0) {\n timeZonePattern = options_1.timeZone.gmtZeroFormat;\n } else {\n timeZonePattern = DateFormat.getTimeZoneValue(timezone, pattern);\n timeZonePattern = options_1.timeZone.gmtFormat.replace(/\\{0\\}/, timeZonePattern);\n }\n actualPattern = actualPattern.replace(/[z]+/, '\"' + timeZonePattern + '\"');\n }\n actualPattern = actualPattern.replace(/ $/, '');\n }\n return actualPattern;\n }\n IntlBase.getActualDateTimeFormat = getActualDateTimeFormat;\n /**\n *\n * @param {string} actual ?\n * @param {any} option ?\n * @returns {any} ?\n */\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n var split = actual.split(',');\n actual = split[0] + getValue('numberMapper.numberSymbols.group', option) + split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n } else {\n actual = actual.replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n }\n return actual;\n }\n IntlBase.processSymbol = processSymbol;\n /**\n * Returns Native Number pattern\n *\n * @private\n * @param {string} culture ?\n * @param {NumberFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcel ?\n * @returns {string} ?\n */\n function getActualNumberFormat(culture, options, cldr, isExcel) {\n var dependable = getDependables(cldr, culture, '', true);\n var parseOptions = {\n custom: true\n };\n var numrericObject = dependable.numericObject;\n var minFrac;\n var curObj = {};\n var curMatch = (options.format || '').match(IntlBase.currencyFormatRegex);\n var type = IntlBase.formatRegex.test(options.format) ? getProperNumericSkeleton(options.format || 'N') : {};\n var dOptions = {};\n if (curMatch) {\n dOptions.numberMapper = isBlazor() ? extend({}, dependable.numericObject) : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n var curCode = isBlazor() ? getValue('currencySymbol', dependable.numericObject) : getCurrencySymbol(dependable.numericObject, options.currency || defaultCurrencyCode, options.altSymbol);\n var symbolPattern = getSymbolPattern('currency', dOptions.numberMapper.numberSystem, dependable.numericObject, /a/i.test(options.format));\n symbolPattern = symbolPattern.replace(/\\u00A4/g, curCode);\n var split = symbolPattern.split(';');\n curObj.hasNegativePattern = isBlazor() ? true : split.length > 1;\n curObj.nData = isBlazor() ? getValue(type.type + 'nData', numrericObject) : getFormatData(split[1] || '-' + split[0], true, curCode);\n curObj.pData = isBlazor() ? getValue(type.type + 'pData', numrericObject) : getFormatData(split[0], false, curCode);\n if (!curMatch[2] && !options.minimumFractionDigits && !options.maximumFractionDigits) {\n minFrac = getFormatData(symbolPattern.split(';')[0], true, '', true).minimumFraction;\n }\n }\n var actualPattern;\n if (IntlBase.formatRegex.test(options.format) || !options.format) {\n extend(parseOptions, getProperNumericSkeleton(options.format || 'N'));\n parseOptions.custom = false;\n actualPattern = '###0';\n if (parseOptions.fractionDigits || options.minimumFractionDigits || options.maximumFractionDigits || minFrac) {\n var defaultMinimum = 0;\n if (parseOptions.fractionDigits) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseOptions.fractionDigits;\n }\n actualPattern = fractionDigitsPattern(actualPattern, minFrac || parseOptions.fractionDigits || options.minimumFractionDigits || defaultMinimum, options.maximumFractionDigits || defaultMinimum);\n }\n if (options.minimumIntegerDigits) {\n actualPattern = minimumIntegerPattern(actualPattern, options.minimumIntegerDigits);\n }\n if (options.useGrouping) {\n actualPattern = groupingPattern(actualPattern);\n }\n if (parseOptions.type === 'currency' || parseOptions.type && isBlazor()) {\n if (isBlazor() && parseOptions.type !== 'currency') {\n curObj.pData = getValue(parseOptions.type + 'pData', numrericObject);\n curObj.nData = getValue(parseOptions.type + 'nData', numrericObject);\n }\n var cPattern = actualPattern;\n actualPattern = curObj.pData.nlead + cPattern + curObj.pData.nend;\n if (curObj.hasNegativePattern || isBlazor()) {\n actualPattern += ';' + curObj.nData.nlead + cPattern + curObj.nData.nend;\n }\n }\n if (parseOptions.type === 'percent' && !isBlazor()) {\n actualPattern += ' %';\n }\n } else {\n actualPattern = options.format.replace(/'/g, '\"');\n }\n if (Object.keys(dOptions).length > 0) {\n actualPattern = !isExcel ? processSymbol(actualPattern, dOptions) : actualPattern;\n }\n return actualPattern;\n }\n IntlBase.getActualNumberFormat = getActualNumberFormat;\n /**\n *\n * @param {string} pattern ?\n * @param {number} minDigits ?\n * @param {number} maxDigits ?\n * @returns {string} ?\n */\n function fractionDigitsPattern(pattern, minDigits, maxDigits) {\n pattern += '.';\n for (var a = 0; a < minDigits; a++) {\n pattern += '0';\n }\n if (minDigits < maxDigits) {\n var diff = maxDigits - minDigits;\n for (var b = 0; b < diff; b++) {\n pattern += '#';\n }\n }\n return pattern;\n }\n IntlBase.fractionDigitsPattern = fractionDigitsPattern;\n /**\n *\n * @param {string} pattern ?\n * @param {number} digits ?\n * @returns {string} ?\n */\n function minimumIntegerPattern(pattern, digits) {\n var temp = pattern.split('.');\n var integer = '';\n for (var x = 0; x < digits; x++) {\n integer += '0';\n }\n return temp[1] ? integer + '.' + temp[1] : integer;\n }\n IntlBase.minimumIntegerPattern = minimumIntegerPattern;\n /**\n *\n * @param {string} pattern ?\n * @returns {string} ?\n */\n function groupingPattern(pattern) {\n var temp = pattern.split('.');\n var integer = temp[0];\n var no = 3 - integer.length % 3;\n var hash = no && no === 1 ? '#' : no === 2 ? '##' : '';\n integer = hash + integer;\n pattern = '';\n for (var x = integer.length - 1; x > 0; x = x - 3) {\n pattern = ',' + integer[x - 2] + integer[x - 1] + integer[parseInt(x.toString(), 10)] + pattern;\n }\n pattern = pattern.slice(1);\n return temp[1] ? pattern + '.' + temp[1] : pattern;\n }\n IntlBase.groupingPattern = groupingPattern;\n /**\n *\n * @param {string} culture ?\n * @param {Object} cldr ?\n * @returns {number} ?\n */\n function getWeekData(culture, cldr) {\n var firstDay = defaultFirstDay;\n var mapper = getValue('supplemental.weekData.firstDay', cldr);\n var iCulture = culture;\n if (/en-/.test(iCulture)) {\n iCulture = iCulture.slice(3);\n }\n iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);\n if (mapper) {\n firstDay = mapper[\"\" + iCulture] || mapper[iCulture.slice(0, 2)] || defaultFirstDay;\n }\n return firstDayMapper[\"\" + firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param {any} pData ?\n * @param {string} aCurrency ?\n * @param {string} rCurrency ?\n * @returns {void} ?\n */\n function replaceBlazorCurrency(pData, aCurrency, rCurrency) {\n var iCurrency = getBlazorCurrencySymbol(rCurrency);\n if (aCurrency !== iCurrency) {\n for (var _i = 0, pData_1 = pData; _i < pData_1.length; _i++) {\n var data = pData_1[_i];\n data.nend = data.nend.replace(aCurrency, iCurrency);\n data.nlead = data.nlead.replace(aCurrency, iCurrency);\n }\n }\n }\n IntlBase.replaceBlazorCurrency = replaceBlazorCurrency;\n /**\n * @private\n * @param {Date} date ?\n * @param {number} firstDayOfWeek ?\n * @returns {number} ?\n */\n function getWeekOfYear(date, firstDayOfWeek) {\n var newYear = new Date(date.getFullYear(), 0, 1);\n var day = newYear.getDay();\n var weeknum;\n day = day >= 0 ? day : day + 7;\n var daynum = Math.floor((date.getTime() - newYear.getTime() - (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\n if (day < 4) {\n weeknum = Math.floor((daynum + day - firstDayOfWeek - 1) / 7) + 1;\n if (weeknum > 52) {\n var nYear = new Date(date.getFullYear() + 1, 0, 1);\n var nday = nYear.getDay();\n nday = nday >= 0 ? nday : nday + 7;\n weeknum = nday < 4 ? 1 : 53;\n }\n } else {\n weeknum = Math.floor((daynum + day - firstDayOfWeek - 1) / 7);\n }\n return weeknum;\n }\n IntlBase.getWeekOfYear = getWeekOfYear;\n})(IntlBase || (IntlBase = {}));","import { isNullOrUndefined, merge } from './util';\nvar headerRegex = /^(.*?):[ \\t]*([^\\r\\n]*)$/gm;\nvar defaultType = 'GET';\n/**\n * Ajax class provides ability to make asynchronous HTTP request to the server\n * ```typescript\n * var ajax = new Ajax(\"index.html\", \"GET\", true);\n * ajax.send().then(\n * function (value) {\n * console.log(value);\n * },\n * function (reason) {\n * console.log(reason);\n * });\n * ```\n */\nvar Ajax = /** @class */function () {\n /**\n * Constructor for Ajax class\n *\n * @param {string|Object} options ?\n * @param {string} type ?\n * @param {boolean} async ?\n * @returns defaultType any\n */\n function Ajax(options, type, async, contentType) {\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n *\n * @default true\n */\n this.mode = true;\n /**\n * A boolean value indicating whether to ignore the promise reject.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n this.options = {};\n if (typeof options === 'string') {\n this.url = options;\n this.type = type ? type.toUpperCase() : defaultType;\n this.mode = !isNullOrUndefined(async) ? async : true;\n } else if (typeof options === 'object') {\n this.options = options;\n merge(this, this.options);\n }\n this.type = this.type ? this.type.toUpperCase() : defaultType;\n this.contentType = this.contentType !== undefined ? this.contentType : contentType;\n }\n /**\n *\n * Send the request to server.\n *\n * @param {any} data - To send the user data\n * @returns {Promise} ?\n */\n Ajax.prototype.send = function (data) {\n var _this = this;\n this.data = isNullOrUndefined(data) ? this.data : data;\n var eventArgs = {\n cancel: false,\n httpRequest: null\n };\n var promise = new Promise(function (resolve, reject) {\n _this.httpRequest = new XMLHttpRequest();\n _this.httpRequest.onreadystatechange = function () {\n _this.stateChange(resolve, reject);\n };\n if (!isNullOrUndefined(_this.onLoad)) {\n _this.httpRequest.onload = _this.onLoad;\n }\n if (!isNullOrUndefined(_this.onProgress)) {\n _this.httpRequest.onprogress = _this.onProgress;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onAbort)) {\n _this.httpRequest.onabort = _this.onAbort;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onError)) {\n _this.httpRequest.onerror = _this.onError;\n }\n //** Upload Events **/\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onUploadProgress)) {\n _this.httpRequest.upload.onprogress = _this.onUploadProgress;\n }\n _this.httpRequest.open(_this.type, _this.url, _this.mode);\n // Set default headers\n if (!isNullOrUndefined(_this.data) && _this.contentType !== null) {\n _this.httpRequest.setRequestHeader('Content-Type', _this.contentType || 'application/json; charset=utf-8');\n }\n if (_this.beforeSend) {\n eventArgs.httpRequest = _this.httpRequest;\n _this.beforeSend(eventArgs);\n }\n if (!eventArgs.cancel) {\n _this.httpRequest.send(!isNullOrUndefined(_this.data) ? _this.data : null);\n }\n });\n return promise;\n };\n Ajax.prototype.successHandler = function (data) {\n if (this.onSuccess) {\n this.onSuccess(data, this);\n }\n return data;\n };\n Ajax.prototype.failureHandler = function (reason) {\n if (this.onFailure) {\n this.onFailure(this.httpRequest);\n }\n return reason;\n };\n Ajax.prototype.stateChange = function (resolve, reject) {\n var data = this.httpRequest.responseText;\n if (this.dataType && this.dataType.toLowerCase() === 'json') {\n if (data === '') {\n data = undefined;\n } else {\n try {\n data = JSON.parse(data);\n } catch (error) {\n // no exception handle\n }\n }\n }\n if (this.httpRequest.readyState === 4) {\n //success range should be 200 to 299\n if (this.httpRequest.status >= 200 && this.httpRequest.status <= 299 || this.httpRequest.status === 304) {\n resolve(this.successHandler(data));\n } else {\n if (this.emitError) {\n reject(new Error(this.failureHandler(this.httpRequest.statusText)));\n } else {\n resolve();\n }\n }\n }\n };\n /**\n * To get the response header from XMLHttpRequest\n *\n * @param {string} key Key to search in the response header\n * @returns {string} ?\n */\n Ajax.prototype.getResponseHeader = function (key) {\n var responseHeaders = {};\n var headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n while (headers) {\n responseHeaders[headers[1].toLowerCase()] = headers[2];\n headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n }\n var header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n };\n return Ajax;\n}();\nexport { Ajax };","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isNullOrUndefined as isNOU, isObject, merge } from './util';\n/**\n * The Fetch class provides a way to make asynchronous network requests, typically to retrieve resources from a server.\n * ```typescript\n * var fetchApi = new Fetch('index.html', 'GET');\n * fetchApi.send()\n * .then((value) => {\n * console.log(value);\n * }).catch((error) => {\n * console.log(error);\n * });\n * ```\n */\nvar Fetch = /** @class */function () {\n /**\n * Constructor for Fetch class.\n *\n * @param {string|Object} options - Specifies the URL or Request object with URL to which the request is to be sent.\n * @param {string} type - Specifies which request method is to be used, such as GET, POST, etc.\n * @param {string} contentType - Specifies the content type of the request, which is used to indicate the original media type of the resource.\n */\n function Fetch(options, type, contentType) {\n /**\n * Specifies which request method is to be used, such as GET, POST, etc.\n *\n * @default GET\n */\n this.type = 'GET';\n /**\n * A boolean value indicating whether to reject the promise or not.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n if (typeof options === 'string') {\n this.url = options;\n this.type = !isNOU(type) ? type.toUpperCase() : this.type;\n this.contentType = contentType;\n } else if (isObject(options) && Object.keys(options).length > 0) {\n merge(this, options);\n }\n this.contentType = !isNOU(this.contentType) ? this.contentType : 'application/json; charset=utf-8';\n }\n /**\n * Send the request to server.\n *\n * @param {string|Object} data - Specifies the data that needs to be added to the request.\n * @returns {Promise<Response>} - Returns the response to a request.\n */\n Fetch.prototype.send = function (data) {\n var _this = this;\n var contentTypes = {\n 'application/json': 'json',\n 'multipart/form-data': 'formData',\n 'application/octet-stream': 'blob',\n 'application/x-www-form-urlencoded': 'formData'\n };\n try {\n if (isNOU(this.fetchRequest) && this.type === 'GET') {\n this.fetchRequest = new Request(this.url, {\n method: this.type\n });\n } else if (isNOU(this.fetchRequest)) {\n this.data = !isNOU(data) ? data : this.data;\n this.fetchRequest = new Request(this.url, {\n method: this.type,\n headers: {\n 'Content-Type': this.contentType\n },\n body: this.data\n });\n }\n var eventArgs = {\n cancel: false,\n fetchRequest: this.fetchRequest\n };\n this.triggerEvent(this['beforeSend'], eventArgs);\n if (eventArgs.cancel) {\n return null;\n }\n this.fetchResponse = fetch(this.fetchRequest);\n return this.fetchResponse.then(function (response) {\n _this.triggerEvent(_this['onLoad'], response);\n if (!response.ok) {\n throw response;\n }\n var responseType = 'text';\n for (var _i = 0, _a = Object.keys(contentTypes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (response.headers.get('Content-Type') && response.headers.get('Content-Type').indexOf(key) !== -1) {\n responseType = contentTypes[key];\n }\n }\n return response[responseType]();\n }).then(function (data) {\n _this.triggerEvent(_this['onSuccess'], data, _this);\n return data;\n }).catch(function (error) {\n var returnVal = {};\n if (_this.emitError) {\n _this.triggerEvent(_this['onFailure'], error);\n returnVal = Promise.reject(error);\n }\n return returnVal;\n });\n } catch (error) {\n return error;\n }\n };\n Fetch.prototype.triggerEvent = function (callback, data, instance) {\n if (!isNOU(callback) && typeof callback === 'function') {\n callback(data, instance);\n }\n };\n return Fetch;\n}();\nexport { Fetch };","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isUndefined } from './util';\nvar REGX_MOBILE = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i;\nvar REGX_IE = /msie|trident/i;\nvar REGX_IE11 = /Trident\\/7\\./;\nvar REGX_IOS = /(ipad|iphone|ipod touch)/i;\nvar REGX_IOS7 = /(ipad|iphone|ipod touch);.*os 7_\\d|(ipad|iphone|ipod touch);.*os 8_\\d/i;\nvar REGX_ANDROID = /android/i;\nvar REGX_WINDOWS = /trident|windows phone|edge/i;\nvar REGX_VERSION = /(version)[ /]([\\w.]+)/i;\nvar REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ /]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ /]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ /]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ /]([\\w.]+)/i,\n SAFARI: /(safari)[ /]([\\w.]+)/i,\n WEBKIT: /(webkit)[ /]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.browserDetails = window.browserDetails || {};\n}\n/**\n * Get configuration details for Browser\n *\n * @private\n */\nvar Browser = /** @class */function () {\n function Browser() {}\n Browser.extractBrowserDetail = function () {\n var browserInfo = {\n culture: {}\n };\n var keys = Object.keys(REGX_BROWSER);\n var clientInfo = [];\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n clientInfo = Browser.userAgent.match(REGX_BROWSER[\"\" + key]);\n if (clientInfo) {\n browserInfo.name = clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase();\n browserInfo.name = clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name;\n browserInfo.version = clientInfo[2];\n browserInfo.culture.name = browserInfo.culture.language = navigator.language;\n if (Browser.userAgent.match(REGX_IE11)) {\n browserInfo.name = 'msie';\n break;\n }\n var version = Browser.userAgent.match(REGX_VERSION);\n if (browserInfo.name === 'safari' && version) {\n browserInfo.version = version[2];\n }\n break;\n }\n }\n return browserInfo;\n };\n /**\n * To get events from the browser\n *\n * @param {string} event - type of event triggered.\n * @returns {string} ?\n */\n Browser.getEvent = function (event) {\n var events = {\n start: {\n isPointer: 'pointerdown',\n isTouch: 'touchstart',\n isDevice: 'mousedown'\n },\n move: {\n isPointer: 'pointermove',\n isTouch: 'touchmove',\n isDevice: 'mousemove'\n },\n end: {\n isPointer: 'pointerup',\n isTouch: 'touchend',\n isDevice: 'mouseup'\n },\n cancel: {\n isPointer: 'pointercancel',\n isTouch: 'touchcancel',\n isDevice: 'mouseleave'\n }\n };\n return Browser.isPointer ? events[\"\" + event].isPointer : Browser.isTouch ? events[\"\" + event].isTouch + (!Browser.isDevice ? ' ' + events[\"\" + event].isDevice : '') : events[\"\" + event].isDevice;\n };\n /**\n * To get the Touch start event from browser\n *\n * @returns {string}\n */\n Browser.getTouchStartEvent = function () {\n return Browser.getEvent('start');\n };\n /**\n * To get the Touch end event from browser\n *\n * @returns {string}\n */\n Browser.getTouchEndEvent = function () {\n return Browser.getEvent('end');\n };\n /**\n * To get the Touch move event from browser\n *\n * @returns {string}\n */\n Browser.getTouchMoveEvent = function () {\n return Browser.getEvent('move');\n };\n /**\n * To cancel the touch event from browser\n *\n * @returns {string}\n */\n Browser.getTouchCancelEvent = function () {\n return Browser.getEvent('cancel');\n };\n /**\n * Check whether the browser on the iPad device is Safari or not\n *\n * @returns {boolean}\n */\n Browser.isSafari = function () {\n return Browser.isDevice && Browser.isIos && Browser.isTouch && typeof window !== 'undefined' && window.navigator.userAgent.toLowerCase().indexOf('iphone') === -1 && window.navigator.userAgent.toLowerCase().indexOf('safari') > -1;\n };\n /**\n * To get the value based on provided key and regX\n *\n * @param {string} key ?\n * @param {RegExp} regX ?\n * @returns {Object} ?\n */\n Browser.getValue = function (key, regX) {\n var browserDetails = typeof window !== 'undefined' ? window.browserDetails : {};\n if (typeof navigator !== 'undefined' && navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && Browser.isTouch === true && !REGX_BROWSER.CHROME.test(navigator.userAgent)) {\n browserDetails['isIos'] = true;\n browserDetails['isDevice'] = true;\n browserDetails['isTouch'] = true;\n browserDetails['isPointer'] = true;\n // Set 'isPointer' for pointer-enabled devices (e.g., iPad on Safari)\n browserDetails['isPointer'] = 'pointerEnabled' in window.navigator;\n }\n if (typeof window !== 'undefined' && window.Capacitor && window.Capacitor.getPlatform() === 'ios') {\n browserDetails['isPointer'] = false;\n }\n if ('undefined' === typeof browserDetails[\"\" + key]) {\n return browserDetails[\"\" + key] = regX.test(Browser.userAgent);\n }\n return browserDetails[\"\" + key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties\n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n *\n * @param {string} uA ?\n */\n set: function (uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"info\", {\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n *\n * @returns {BrowserInfo} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIE\", {\n /**\n * Property is to get whether the userAgent is based IE.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIE', REGX_IE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isTouch\", {\n /**\n * Property is to get whether the browser has touch support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isTouch)) {\n return window.browserDetails.isTouch = 'ontouchstart' in window.navigator || window && window.navigator && window.navigator.maxTouchPoints > 0 || 'ontouchstart' in window;\n }\n return window.browserDetails.isTouch;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isPointer\", {\n /**\n * Property is to get whether the browser has Pointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = 'pointerEnabled' in window.navigator;\n }\n return window.browserDetails.isPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isMSPointer\", {\n /**\n * Property is to get whether the browser has MSPointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = 'msPointerEnabled' in window.navigator;\n }\n return window.browserDetails.isMSPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isDevice\", {\n /**\n * Property is to get whether the userAgent is device based.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isDevice', REGX_MOBILE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos\", {\n /**\n * Property is to get whether the userAgent is IOS.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos', REGX_IOS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos7\", {\n /**\n * Property is to get whether the userAgent is Ios7.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos7', REGX_IOS7);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isAndroid\", {\n /**\n * Property is to get whether the userAgent is Android.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWebView\", {\n /**\n * Property is to identify whether application ran in web view.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap) && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWindows\", {\n /**\n * Property is to get whether the userAgent is Windows.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchStartEvent\", {\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchMoveEvent\", {\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchEndEvent\", {\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchCancelEvent\", {\n /**\n * Property is to cancel the touch end event.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n },\n enumerable: true,\n configurable: true\n });\n /* istanbul ignore next */\n Browser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n return Browser;\n}();\nexport { Browser };","import { debounce, extend } from './util';\nimport { Browser } from './browser';\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * ```html\n * <div id=\"Eventdiv\"> </div>\n * <script>\n * let node: HTMLElement = document.querySelector(\"#Eventdiv\");\n * EventHandler.addEventListener(node, \"click\", function(){\n * // click handler function code\n * });\n * EventHandler.addEventListener(node, \"onmouseover\", function(){\n * // mouseover handler function code\n * });\n * EventHandler.removeEventListener(node, \"click\", function(){\n * // click handler function code\n * });\n * eventObj.clearEvents();\n * </script>\n * ```\n */\nvar EventHandler = /** @class */function () {\n function EventHandler() {}\n // to get the event data based on element\n EventHandler.addOrGetEventData = function (element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n } else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n };\n /**\n * Add an event to the specified DOM element.\n *\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} intDebounce - Specifies at what interval given event listener should be triggered.\n * @returns {Function} ?\n */\n EventHandler.add = function (element, eventName, listener, bindTo, intDebounce) {\n var eventData = EventHandler.addOrGetEventData(element);\n var debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n } else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n var event = eventName.split(' ');\n for (var i = 0; i < event.length; i++) {\n eventData.push({\n name: event[parseInt(i.toString(), 10)],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener);\n } else {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener, {\n passive: false\n });\n }\n }\n return debounceListener;\n };\n /**\n * Remove an event listener that has been attached before.\n *\n * @param {any} element - Specifies the target html element to remove the event\n * @param {string} eventName - A string that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @returns {void} ?\n */\n EventHandler.remove = function (element, eventName, listener) {\n var eventData = EventHandler.addOrGetEventData(element);\n var event = eventName.split(' ');\n var _loop_1 = function (j) {\n var index = -1;\n var debounceListener;\n if (eventData && eventData.length !== 0) {\n eventData.some(function (x, i) {\n return x.name === event[parseInt(j.toString(), 10)] && x.listener === listener ? (index = i, debounceListener = x.debounce, true) : false;\n });\n }\n if (index !== -1) {\n eventData.splice(index, 1);\n }\n if (debounceListener) {\n element.removeEventListener(event[parseInt(j.toString(), 10)], debounceListener);\n }\n };\n for (var j = 0; j < event.length; j++) {\n _loop_1(j);\n }\n };\n /**\n * Clear all the event listeners that has been previously attached to the element.\n *\n * @param {any} element - Specifies the target html element to clear the events\n * @returns {void} ?\n */\n EventHandler.clearEvents = function (element) {\n var eventData = EventHandler.addOrGetEventData(element);\n var copyData = extend([], undefined, eventData);\n for (var i = 0; i < copyData.length; i++) {\n var parseValue = copyData[parseInt(i.toString(), 10)];\n element.removeEventListener(parseValue.name, parseValue.debounce);\n eventData.shift();\n }\n };\n /**\n * Trigger particular event of the element.\n *\n * @param {any} element - Specifies the target html element to trigger the events\n * @param {string} eventName - Specifies the event to trigger for the specified element.\n * Can be a custom event, or any of the standard events.\n * @param {any} eventProp - Additional parameters to pass on to the event properties\n * @returns {void} ?\n */\n EventHandler.trigger = function (element, eventName, eventProp) {\n var eventData = EventHandler.addOrGetEventData(element);\n for (var _i = 0, eventData_1 = eventData; _i < eventData_1.length; _i++) {\n var event_1 = eventData_1[_i];\n if (event_1.name === eventName) {\n event_1.debounce.call(this, eventProp);\n }\n }\n };\n return EventHandler;\n}();\nexport { EventHandler };","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Functions related to dom operations.\n */\nimport { EventHandler } from './event-handler';\nimport { isNullOrUndefined, getValue, setValue, isObject, extend } from './util';\nvar SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n *\n * @param {string} tagName - Name of the tag, id and class names.\n * @param {ElementProperties} properties - Object to set properties in the element.\n * @param {ElementProperties} properties.id - To set the id to the created element.\n * @param {ElementProperties} properties.className - To add classes to the element.\n * @param {ElementProperties} properties.innerHTML - To set the innerHTML to element.\n * @param {ElementProperties} properties.styles - To set the some custom styles to element.\n * @param {ElementProperties} properties.attrs - To set the attributes to element.\n * @returns {any} ?\n * @private\n */\nexport function createElement(tagName, properties) {\n var element = SVG_REG.test(tagName) ? document.createElementNS('http://www.w3.org/2000/svg', tagName) : document.createElement(tagName);\n if (typeof properties === 'undefined') {\n return element;\n }\n element.innerHTML = properties.innerHTML ? properties.innerHTML : '';\n if (properties.className !== undefined) {\n element.className = properties.className;\n }\n if (properties.id !== undefined) {\n element.id = properties.id;\n }\n if (properties.styles !== undefined) {\n element.style.cssText = properties.styles;\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\n}\n/**\n * Updates the CSS text of an element by merging new styles with existing styles.\n *\n * @param {HTMLElement} element - The element whose styles need to be updated.\n * @param {string} cssText - The new CSS styles to be added or updated.\n * @returns {void}\n */\nexport function updateCSSText(element, cssText) {\n var existingStyles = element.style.cssText.split(';').reduce(function (styles, style) {\n var _a = style.split(':'),\n key = _a[0],\n value = _a[1];\n if (key && value) {\n styles[key.trim()] = value.trim();\n }\n return styles;\n }, {});\n var newStyles = cssText.split(';').reduce(function (styles, style) {\n var _a = style.split(':'),\n key = _a[0],\n value = _a[1];\n if (key && value) {\n styles[key.trim()] = value.trim();\n }\n return styles;\n }, {});\n var styleElement = document.createElement('div');\n // Use safe iteration over keys using Object.keys\n Object.keys(__assign({}, existingStyles, newStyles)).forEach(function (key) {\n styleElement.style.setProperty(key, newStyles[key] || existingStyles[key]);\n });\n element.style.cssText = styleElement.style.cssText;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to add a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function addClass(elements, classes) {\n var classList = getClassList(classes);\n var regExp = RegExp;\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, classList_1 = classList; _b < classList_1.length; _b++) {\n var className = classList_1[_b];\n if (isObject(ele)) {\n var curClass = getValue('attributes.className', ele);\n if (isNullOrUndefined(curClass)) {\n setValue('attributes.className', className, ele);\n } else if (!new regExp('\\\\b' + className + '\\\\b', 'i').test(curClass)) {\n setValue('attributes.className', curClass + ' ' + className, ele);\n }\n } else {\n if (!ele.classList.contains(className)) {\n ele.classList.add(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function removeClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n var flag = isObject(ele);\n var canRemove = flag ? getValue('attributes.className', ele) : ele.className !== '';\n if (canRemove) {\n for (var _b = 0, classList_2 = classList; _b < classList_2.length; _b++) {\n var className = classList_2[_b];\n if (flag) {\n var classes_1 = getValue('attributes.className', ele);\n var classArr = classes_1.split(' ');\n var index = classArr.indexOf(className);\n if (index !== -1) {\n classArr.splice(index, 1);\n }\n setValue('attributes.className', classArr.join(' '), ele);\n } else {\n ele.classList.remove(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to get classlist.\n *\n * @param {string | string[]} classes - An element the need to check visibility\n * @returns {string[]} ?\n * @private\n */\nfunction getClassList(classes) {\n var classList = [];\n if (typeof classes === 'string') {\n classList.push(classes);\n } else {\n classList = classes;\n }\n return classList;\n}\n/**\n * The function used to check element is visible or not.\n *\n * @param {Element|Node} element - An element the need to check visibility\n * @returns {boolean} ?\n * @private\n */\nexport function isVisible(element) {\n var ele = element;\n return ele.style.visibility === '' && ele.offsetWidth > 0;\n}\n/**\n * The function used to insert an array of elements into a first of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to prepend.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function prepend(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.insertBefore(docFrag, toElement.firstElementChild);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to append.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function append(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n if (fromElements instanceof NodeList) {\n while (fromElements.length > 0) {\n docFrag.appendChild(fromElements[0]);\n }\n } else {\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n *\n * @param {Element} ele - An element is going to evaluate the script\n * @returns {void} ?\n */\nfunction executeScript(ele) {\n var eleArray = ele.querySelectorAll('script');\n eleArray.forEach(function (element) {\n var script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from parentnode\n *\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @returns {any} ?\n * @private\n */\nexport function detach(element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n}\n/**\n * The function used to remove the element from Dom also clear the bounded events\n *\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @returns {void} ?\n * @private\n */\nexport function remove(element) {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n}\n/**\n * The function helps to set multiple attributes to an element\n *\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {string} attributes - JSON Object that is going to as attributes.\n * @returns {Element} ?\n * @private\n */\nexport function attributes(element, attributes) {\n var keys = Object.keys(attributes);\n var ele = element;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (isObject(ele)) {\n var iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[\"\" + iKey] = attributes[\"\" + key];\n } else {\n ele.setAttribute(key, attributes[\"\" + key]);\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {any} ?\n * @private\n */\nexport function select(selector, context, needsVDOM) {\n if (context === void 0) {\n context = document;\n }\n selector = querySelectId(selector);\n return context.querySelector(selector);\n}\n/**\n * The function selects an array of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {HTMLElement[]} ?\n * @private\n */\nexport function selectAll(selector, context, needsVDOM) {\n if (context === void 0) {\n context = document;\n }\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n}\n/**\n * The function selects an id of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @returns {string} ?\n * @private\n */\nfunction querySelectId(selector) {\n var charRegex = /(!|\"|\\$|%|&|'|\\(|\\)|\\*|\\/|:|;|<|=|\\?|@|\\]|\\^|`|{|}|\\||\\+|~)/g;\n if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {\n var idList = selector.split(',');\n for (var i = 0; i < idList.length; i++) {\n var list = idList[parseInt(i.toString(), 10)].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[parseInt(j.toString(), 10)].indexOf('#') > -1) {\n if (!list[parseInt(j.toString(), 10)].match(/\\[.*\\]/)) {\n var splitId = list[parseInt(j.toString(), 10)].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[parseInt(j.toString(), 10)].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[parseInt(j.toString(), 10)] = setId.join('.');\n }\n }\n }\n }\n idList[parseInt(i.toString(), 10)] = list.join(' ');\n }\n return idList.join(',');\n }\n return selector;\n}\n/**\n * Returns single closest parent element based on class selector.\n *\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @returns {Element} ?\n * @private\n */\nexport function closest(element, selector) {\n var el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n *\n * @param {Element|Node} element - An element that need to get siblings.\n * @returns {Element[]} ?\n * @private\n */\nexport function siblings(element) {\n var siblings = [];\n var childNodes = Array.prototype.slice.call(element.parentNode.childNodes);\n for (var _i = 0, childNodes_1 = childNodes; _i < childNodes_1.length; _i++) {\n var curNode = childNodes_1[_i];\n if (curNode.nodeType === Node.ELEMENT_NODE && element !== curNode) {\n siblings.push(curNode);\n }\n }\n return siblings;\n}\n/**\n * set the value if not exist. Otherwise set the existing value\n *\n * @param {HTMLElement} element - An element to which we need to set value.\n * @param {string} property - Property need to get or set.\n * @param {string} value - value need to set.\n * @returns {string} ?\n * @private\n */\nexport function getAttributeOrDefault(element, property, value) {\n var attrVal;\n var isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n } else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n } else {\n element.attributes[\"\" + property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n *\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @returns {void} ?\n * @private\n */\nexport function setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n Object.keys(attrs).forEach(function (key) {\n element.style[\"\" + key] = attrs[\"\" + key];\n });\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n *\n * @param {Element} element - Element for add and remove classes\n * @param {string[]} addClasses - List of classes need to be add to the element\n * @param {string[]} removeClasses - List of classes need to be remove from the element\n * @returns {void} ?\n * @private\n */\nexport function classList(element, addClasses, removeClasses) {\n addClass([element], addClasses);\n removeClass([element], removeClasses);\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function matches(element, selector) {\n var matches = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (matches) {\n return matches.call(element, selector);\n } else {\n return [].indexOf.call(document.querySelectorAll(selector), element) !== -1;\n }\n}\n/**\n * Method to get the html text from DOM.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} innerHTML - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function includeInnerHTML(ele, innerHTML) {\n ele.innerHTML = innerHTML;\n}\n/**\n * Method to get the containsclass.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} className - String selector which element will satisfy.\n * @returns {any} ?\n * @private\n */\nexport function containsClass(ele, className) {\n if (isObject(ele)) {\n var regExp = RegExp;\n return new regExp('\\\\b' + className + '\\\\b', 'i').test(ele.attributes.className);\n } else {\n return ele.classList.contains(className);\n }\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Object} element - Element to compare with the selector.\n * @param {boolean} deep ?\n * @returns {any} ?\n * @private\n */\nexport function cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\n }\n } else {\n return element.cloneNode(deep);\n }\n}","/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\nimport { isNullOrUndefined, getValue, extend, isBlazor } from './util';\nvar Observer = /** @class */function () {\n function Observer(context) {\n this.ranArray = [];\n this.boundedEvents = {};\n if (isNullOrUndefined(context)) {\n return;\n }\n this.context = context;\n }\n /**\n * To attach handler for given property in current context.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Specifies the handler function to be called while event notified.\n * @param {Object} context - Specifies the context binded to the handler.\n * @param {string} id - specifies the random generated id.\n * @returns {void}\n */\n Observer.prototype.on = function (property, handler, context, id) {\n if (isNullOrUndefined(handler)) {\n return;\n }\n var cntxt = context || this.context;\n if (this.notExist(property)) {\n this.boundedEvents[\"\" + property] = [{\n handler: handler,\n context: cntxt,\n id: id\n }];\n return;\n }\n if (!isNullOrUndefined(id)) {\n if (this.ranArray.indexOf(id) === -1) {\n this.ranArray.push(id);\n this.boundedEvents[\"\" + property].push({\n handler: handler,\n context: cntxt,\n id: id\n });\n }\n } else if (!this.isHandlerPresent(this.boundedEvents[\"\" + property], handler)) {\n this.boundedEvents[\"\" + property].push({\n handler: handler,\n context: cntxt\n });\n }\n };\n /**\n * To remove handlers from a event attached using on() function.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Optional argument specifies the handler function to be called while event notified.\n * @param {string} id - specifies the random generated id.\n * @returns {void} ?\n */\n Observer.prototype.off = function (property, handler, id) {\n if (this.notExist(property)) {\n return;\n }\n var curObject = getValue(property, this.boundedEvents);\n if (handler) {\n for (var i = 0; i < curObject.length; i++) {\n if (id) {\n if (curObject[parseInt(i.toString(), 10)].id === id) {\n curObject.splice(i, 1);\n var indexLocation = this.ranArray.indexOf(id);\n if (indexLocation !== -1) {\n this.ranArray.splice(indexLocation, 1);\n }\n break;\n }\n } else if (handler === curObject[parseInt(i.toString(), 10)].handler) {\n curObject.splice(i, 1);\n break;\n }\n }\n } else {\n delete this.boundedEvents[\"\" + property];\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it was failure to call.\n * @returns {void} ?\n */\n Observer.prototype.notify = function (property, argument, successHandler, errorHandler) {\n if (this.notExist(property)) {\n if (successHandler) {\n successHandler.call(this, argument);\n }\n return;\n }\n if (argument) {\n argument.name = property;\n }\n var blazor = 'Blazor';\n var curObject = getValue(property, this.boundedEvents).slice(0);\n if (window[\"\" + blazor]) {\n return this.blazorCallback(curObject, argument, successHandler, errorHandler, 0);\n } else {\n for (var _i = 0, curObject_1 = curObject; _i < curObject_1.length; _i++) {\n var cur = curObject_1[_i];\n cur.handler.call(cur.context, argument);\n }\n if (successHandler) {\n successHandler.call(this, argument);\n }\n }\n };\n Observer.prototype.blazorCallback = function (objs, argument, successHandler, errorHandler, index) {\n var _this = this;\n var isTrigger = index === objs.length - 1;\n if (index < objs.length) {\n var obj_1 = objs[parseInt(index.toString(), 10)];\n var promise = obj_1.handler.call(obj_1.context, argument);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n return promise;\n }\n promise.then(function (data) {\n data = typeof data === 'string' && _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data;\n extend(argument, argument, data, true);\n if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n } else {\n return _this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }).catch(function (data) {\n if (errorHandler) {\n errorHandler.call(obj_1.context, typeof data === 'string' && _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data);\n }\n });\n } else if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n } else {\n return this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }\n };\n Observer.prototype.dateReviver = function (key, value) {\n var dPattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\n if (isBlazor && typeof value === 'string' && value.match(dPattern) !== null) {\n return new Date(value);\n }\n return value;\n };\n Observer.prototype.isJson = function (value) {\n try {\n JSON.parse(value);\n } catch (e) {\n return false;\n }\n return true;\n };\n /**\n * To destroy handlers in the event\n *\n * @returns {void} ?\n */\n Observer.prototype.destroy = function () {\n this.boundedEvents = this.context = undefined;\n };\n /**\n * To remove internationalization events\n *\n * @returns {void} ?\n */\n Observer.prototype.offIntlEvents = function () {\n var eventsArr = this.boundedEvents['notifyExternalChange'];\n if (eventsArr) {\n for (var i = 0; i < eventsArr.length; i++) {\n var curContext = eventsArr[parseInt(i.toString(), 10)].context;\n if (curContext && curContext.detectFunction && curContext.randomId && curContext.isReactMock) {\n this.off('notifyExternalChange', curContext.detectFunction, curContext.randomId);\n i--;\n }\n }\n if (!this.boundedEvents['notifyExternalChange'].length) {\n delete this.boundedEvents['notifyExternalChange'];\n }\n }\n };\n /**\n * Returns if the property exists.\n *\n * @param {string} prop ?\n * @returns {boolean} ?\n */\n Observer.prototype.notExist = function (prop) {\n return Object.prototype.hasOwnProperty.call(this.boundedEvents, prop) === false || this.boundedEvents[\"\" + prop].length <= 0;\n };\n /**\n * Returns if the handler is present.\n *\n * @param {BoundOptions[]} boundedEvents ?\n * @param {Function} handler ?\n * @returns {boolean} ?\n */\n Observer.prototype.isHandlerPresent = function (boundedEvents, handler) {\n for (var _i = 0, boundedEvents_1 = boundedEvents; _i < boundedEvents_1.length; _i++) {\n var cur = boundedEvents_1[_i];\n if (cur.handler === handler) {\n return true;\n }\n }\n return false;\n };\n return Observer;\n}();\nexport { Observer };","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isUndefined, isNullOrUndefined, merge, setImmediate, setValue, isBlazor, getValue, extend } from './util';\nimport { addClass, removeClass } from './dom';\nimport { Observer } from './observer';\nvar isColEName = new RegExp(']');\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n *\n * @private\n * @returns {void} ?\n */\nvar Base = /** @class */function () {\n /**\n * Base constructor accept options and element\n *\n * @param {Object} options ?\n * @param {string} element ?\n */\n function Base(options, element) {\n this.isRendered = false;\n this.isComplexArraySetter = false;\n this.isServerRendered = false;\n this.allowServerDataBinding = true;\n this.isProtectedOnChange = true;\n this.properties = {};\n this.changedProperties = {};\n this.oldProperties = {};\n this.bulkChanges = {};\n this.refreshing = false;\n this.ignoreCollectionWatch = false;\n this.finalUpdate = function () {};\n this.childChangedProperties = {};\n this.modelObserver = new Observer(this);\n if (!isUndefined(element)) {\n if ('string' === typeof element) {\n this.element = document.querySelector(element);\n } else {\n this.element = element;\n }\n if (!isNullOrUndefined(this.element)) {\n this.isProtectedOnChange = false;\n this.addInstance();\n }\n }\n if (!isUndefined(options)) {\n this.setProperties(options, true);\n }\n this.isDestroyed = false;\n }\n /** Property base section */\n /**\n * Function used to set bunch of property at a time.\n *\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange ? - Specifies to true when we set properties.\n * @returns {void} ?\n */\n Base.prototype.setProperties = function (prop, muteOnChange) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = !!muteOnChange;\n merge(this, prop);\n if (muteOnChange !== true) {\n merge(this.changedProperties, prop);\n this.dataBind();\n } else if (isBlazor() && this.isRendered) {\n this.serverDataBind(prop);\n }\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.isProtectedOnChange = prevDetection;\n };\n /**\n * Calls for child element data bind\n *\n * @param {Object} obj ?\n * @param {Object} parent ?\n * @returns {void} ?\n */\n Base.callChildDataBind = function (obj, parent) {\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (parent[\"\" + key] instanceof Array) {\n for (var _a = 0, _b = parent[\"\" + key]; _a < _b.length; _a++) {\n var obj_1 = _b[_a];\n if (obj_1.dataBind !== undefined) {\n obj_1.dataBind();\n }\n }\n } else {\n parent[\"\" + key].dataBind();\n }\n }\n };\n Base.prototype.clearChanges = function () {\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.childChangedProperties = {};\n };\n /**\n * Bind property changes immediately to components\n *\n * @returns {void} ?\n */\n Base.prototype.dataBind = function () {\n Base.callChildDataBind(this.childChangedProperties, this);\n if (Object.getOwnPropertyNames(this.changedProperties).length) {\n var prevDetection = this.isProtectedOnChange;\n var newChanges = this.changedProperties;\n var oldChanges = this.oldProperties;\n this.clearChanges();\n this.isProtectedOnChange = true;\n this.onPropertyChanged(newChanges, oldChanges);\n this.isProtectedOnChange = prevDetection;\n }\n };\n Base.prototype.serverDataBind = function (newChanges) {\n if (!isBlazor()) {\n return;\n }\n newChanges = newChanges ? newChanges : {};\n extend(this.bulkChanges, {}, newChanges, true);\n var sfBlazor = 'sfBlazor';\n if (this.allowServerDataBinding && window[\"\" + sfBlazor].updateModel) {\n window[\"\" + sfBlazor].updateModel(this);\n this.bulkChanges = {};\n }\n };\n Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\n var newChanges = {};\n newChanges[\"\" + key] = newValue;\n this.serverDataBind(newChanges);\n }\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.finalUpdate();\n this.finalUpdate = setImmediate(this.dataBind.bind(this));\n };\n /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} handler - Specifies the call to run when the event occurs.\n * @returns {void} ?\n */\n Base.prototype.addEventListener = function (eventName, handler) {\n this.modelObserver.on(eventName, handler);\n };\n /**\n * Removes the handler from the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} handler - Specifies the function to remove\n * @returns {void} ?\n */\n Base.prototype.removeEventListener = function (eventName, handler) {\n this.modelObserver.off(eventName, handler);\n };\n /**\n * Triggers the handlers in the specified event.\n *\n * @private\n * @param {string} eventName - Specifies the event to trigger for the specified component properties.\n * Can be a custom event, or any of the standard events.\n * @param {Event} eventProp - Additional parameters to pass on to the event properties\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it failured to call.\n * @returns {void} ?\n */\n Base.prototype.trigger = function (eventName, eventProp, successHandler, errorHandler) {\n var _this = this;\n if (this.isDestroyed !== true) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n var data = this.modelObserver.notify(eventName, eventProp, successHandler, errorHandler);\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n var blazor = 'Blazor';\n if (window[\"\" + blazor]) {\n var promise = handler.call(this, eventProp);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n data = promise;\n } else {\n promise.then(function (data) {\n if (successHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n successHandler.call(_this, data);\n }\n }).catch(function (data) {\n if (errorHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n errorHandler.call(_this, data);\n }\n });\n }\n } else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n } else {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n } else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n this.isProtectedOnChange = prevDetection;\n return data;\n }\n };\n /**\n * To maintain instance in base class\n *\n * @returns {void} ?\n */\n Base.prototype.addInstance = function () {\n // Add module class to the root element\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-lib', moduleClass]);\n if (!isNullOrUndefined(this.element.ej2_instances)) {\n this.element.ej2_instances.push(this);\n } else {\n setValue('ej2_instances', [this], this.element);\n }\n };\n /**\n * To remove the instance from the element\n *\n * @returns {void} ?\n */\n Base.prototype.destroy = function () {\n var _this = this;\n // eslint-disable-next-line camelcase\n this.element.ej2_instances = this.element.ej2_instances ? this.element.ej2_instances.filter(function (i) {\n if (proxyToRaw) {\n return proxyToRaw(i) !== proxyToRaw(_this);\n }\n return i !== _this;\n }) : [];\n removeClass([this.element], ['e-' + this.getModuleName()]);\n if (this.element.ej2_instances.length === 0) {\n // Remove module class from the root element\n removeClass([this.element], ['e-lib']);\n }\n this.clearChanges();\n this.modelObserver.destroy();\n this.isDestroyed = true;\n };\n return Base;\n}();\nexport { Base };\n/**\n * Global function to get the component instance from the rendered element.\n *\n * @param {HTMLElement} elem Specifies the HTMLElement or element id string.\n * @param {string} comp Specifies the component module name or Component.\n * @returns {any} ?\n */\nexport function getComponent(elem, comp) {\n var instance;\n var i;\n var ele = typeof elem === 'string' ? document.getElementById(elem) : elem;\n for (i = 0; i < ele.ej2_instances.length; i++) {\n instance = ele.ej2_instances[parseInt(i.toString(), 10)];\n if (typeof comp === 'string') {\n var compName = instance.getModuleName();\n if (comp === compName) {\n return instance;\n }\n } else {\n if (instance instanceof comp) {\n return instance;\n }\n }\n }\n return undefined;\n}\n/**\n * Function to remove the child instances.\n *\n * @param {HTMLElement} element ?\n * @returns {void} ?\n * @private\n */\nexport function removeChildInstance(element) {\n var childEle = [].slice.call(element.getElementsByClassName('e-control'));\n for (var i = 0; i < childEle.length; i++) {\n var compName = childEle[parseInt(i.toString(), 10)].classList[1].split('e-')[1];\n var compInstance = getComponent(childEle[parseInt(i.toString(), 10)], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\nexport var proxyToRaw;\nexport var setProxyToRaw = function (toRaw) {\n proxyToRaw = toRaw;\n};","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { createInstance, isUndefined, merge, extend, getValue } from './util';\n/**\n * Returns the Class Object\n *\n * @param {ClassObject} instance - instance of ClassObject\n * @param {string} curKey - key of the current instance\n * @param {Object} defaultValue - default Value\n * @param {Object[]} type ?\n * @returns {ClassObject} ?\n */\nfunction getObject(instance, curKey, defaultValue, type) {\n if (!Object.prototype.hasOwnProperty.call(instance.properties, curKey) || !(instance.properties[\"\" + curKey] instanceof type)) {\n instance.properties[\"\" + curKey] = createInstance(type, [instance, curKey, defaultValue]);\n }\n return instance.properties[\"\" + curKey];\n}\n/**\n * Returns object array\n *\n * @param {ClassObject} instance ?\n * @param {string} curKey ?\n * @param {Object[]} defaultValue ?\n * @param {Object} type ?\n * @param {boolean} isSetter ?\n * @param {boolean} isFactory ?\n * @returns {Object[]} ?\n */\nfunction getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactory) {\n var result = [];\n var len = defaultValue ? defaultValue.length : 0;\n for (var i = 0; i < len; i++) {\n var curType = type;\n if (isFactory) {\n curType = type(defaultValue[parseInt(i.toString(), 10)], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[parseInt(i.toString(), 10)], true);\n result.push(inst);\n } else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[parseInt(i.toString(), 10)], false]));\n }\n }\n return result;\n}\n/**\n * Returns the properties of the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n if (!Object.prototype.hasOwnProperty.call(this.properties, curKey)) {\n this.properties[\"\" + curKey] = defaultValue;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n * Set the properties for the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[\"\" + curKey] !== newValue) {\n var oldVal = Object.prototype.hasOwnProperty.call(this.properties, curKey) ? this.properties[\"\" + curKey] : defaultValue;\n this.saveChanges(curKey, newValue, oldVal);\n this.properties[\"\" + curKey] = newValue;\n }\n };\n}\n/**\n * Returns complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n if (Object.prototype.hasOwnProperty.call(this.properties, curKey)) {\n return this.properties[\"\" + curKey];\n } else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var curType = type(newValue, this);\n getObject(this, curKey, defaultValue, curType).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n var _this = this;\n if (!Object.prototype.hasOwnProperty.call(this.properties, curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, type, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n var ignore = this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch || this.ignoreCollectionWatch;\n if (!Object.prototype.hasOwnProperty.call(this.properties[\"\" + curKey], 'push') && !ignore) {\n ['push', 'pop'].forEach(function (extendFunc) {\n var descriptor = {\n value: complexArrayDefinedCallback(extendFunc, curKey, type, _this.properties[\"\" + curKey]).bind(_this),\n configurable: true\n };\n Object.defineProperty(_this.properties[\"\" + curKey], extendFunc, descriptor);\n });\n }\n if (!Object.prototype.hasOwnProperty.call(this.properties[\"\" + curKey], 'isComplexArray')) {\n Object.defineProperty(this.properties[\"\" + curKey], 'isComplexArray', {\n value: true\n });\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArraySetter(defaultValue, curKey, type) {\n return function (newValue) {\n this.isComplexArraySetter = true;\n var oldValueCollection = getObjectArray(this, curKey, defaultValue, type, false);\n var newValCollection = getObjectArray(this, curKey, newValue, type, true);\n this.isComplexArraySetter = false;\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var oldValueCollection = Object.prototype.hasOwnProperty.call(this.properties, curKey) ? this.properties[\"\" + curKey] : defaultValue;\n var newValCollection = getObjectArray(this, curKey, newValue, type, true, true);\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n if (!Object.prototype.hasOwnProperty.call(this.properties, curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, curType, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {string} dFunc ?\n * @param {string} curKey ?\n * @param {Object} type ?\n * @param {Object} prop ?\n * @returns {Object} ?\n */\nfunction complexArrayDefinedCallback(dFunc, curKey, type, prop) {\n return function () {\n var newValue = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newValue[_i] = arguments[_i];\n }\n var keyString = this.propName ? this.getParentKey() + '.' + curKey + '-' : curKey + '-';\n switch (dFunc) {\n case 'push':\n for (var i = 0; i < newValue.length; i++) {\n var newValueParse = newValue[parseInt(i.toString(), 10)];\n Array.prototype[\"\" + dFunc].apply(prop, [newValueParse]);\n var model = getArrayModel(keyString + (prop.length - 1), newValueParse, !this.controlParent, dFunc);\n this.serverDataBind(model, newValue[parseInt(i.toString(), 10)], false, dFunc);\n }\n break;\n case 'pop':\n {\n Array.prototype[\"\" + dFunc].apply(prop);\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, {\n ejsAction: 'pop'\n }, false, dFunc);\n break;\n }\n }\n return prop;\n };\n}\n/**\n *\n * @param {string} keyString ?\n * @param {Object} value ?\n * @param {boolean} isControlParent ?\n * @param {string} arrayFunction ?\n * @returns {Object} ?\n */\nfunction getArrayModel(keyString, value, isControlParent, arrayFunction) {\n var modelObject = keyString;\n if (isControlParent) {\n modelObject = {};\n modelObject[\"\" + keyString] = value;\n if (value && typeof value === 'object') {\n var action = 'ejsAction';\n modelObject[\"\" + keyString][\"\" + action] = arrayFunction;\n }\n }\n return modelObject;\n}\n/**\n * Method used to create property. General syntax below.\n *\n * @param {Object} defaultValue - Specifies the default value of property.\n * @returns {PropertyDecorator} ?\n * @private\n */\nexport function Property(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: propertySetter(defaultValue, key),\n get: propertyGetter(defaultValue, key),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'prop', defaultValue);\n };\n}\n/**\n * Method used to create complex property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Complex<Type>({},Type)\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Complex(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexSetter(defaultValue, key, type),\n get: complexGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex Factory property. General syntax below.\n *\n * @param {Function} type - Specifies the class factory type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @ComplexFactory(defaultType, factoryFunction)\n * propertyName: Type1 | Type2;\n * ```\n * @private\n */\nexport function ComplexFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexFactorySetter({}, key, type),\n get: complexFactoryGetter({}, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', {}, type);\n };\n}\n/**\n * Method used to create complex array property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Collection(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArraySetter(defaultValue, key, type),\n get: complexArrayGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex factory array property. General syntax below.\n *\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyCollectionInfo} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function CollectionFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArrayFactorySetter([], key, type),\n get: complexArrayFactoryGetter([], key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', {}, type);\n };\n}\n/**\n * Method used to create event property. General syntax below.\n *\n * @returns {PropertyDecorator} ?\n * ```\n * @Event(()=>{return true;})\n * ```\n * @private\n */\nexport function Event() {\n return function (target, key) {\n var eventDescriptor = {\n set: function (newValue) {\n var oldValue = this.properties[\"\" + key];\n if (oldValue !== newValue) {\n var finalContext = getParentContext(this, key);\n if (isUndefined(oldValue) === false) {\n finalContext.context.removeEventListener(finalContext.prefix, oldValue);\n }\n finalContext.context.addEventListener(finalContext.prefix, newValue);\n this.properties[\"\" + key] = newValue;\n }\n },\n get: propertyGetter(undefined, key),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, eventDescriptor);\n addPropertyCollection(target, key, 'event');\n };\n}\n/**\n * NotifyPropertyChanges is triggers the call back when the property has been changed.\n *\n * @param {Function} classConstructor ?\n * @returns {void} ?\n * @private\n */\nexport function NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n *\n * @param {BuildInfo} target ?\n * @param {string} key ?\n * @param {string} propertyType ?\n * @param {Object} defaultValue ?\n * @param {Function} type ?\n * @returns {void} ?\n * @private\n */\nfunction addPropertyCollection(target, key, propertyType, defaultValue, type) {\n if (isUndefined(target.propList)) {\n target.propList = {\n props: [],\n complexProps: [],\n colProps: [],\n events: [],\n propNames: [],\n complexPropNames: [],\n colPropNames: [],\n eventNames: []\n };\n }\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n target.propList[propertyType + 'Names'].push(key);\n}\n/**\n * Returns an object containing the builder properties\n *\n * @param {Function} component ?\n * @returns {Object} ?\n * @private\n */\nfunction getBuilderProperties(component) {\n if (isUndefined(component.prototype.builderObject)) {\n component.prototype.builderObject = {\n properties: {},\n propCollections: [],\n add: function () {\n this.isPropertyArray = true;\n this.propCollections.push(extend({}, this.properties, {}));\n }\n };\n var rex = /complex/;\n for (var _i = 0, _a = Object.keys(component.prototype.propList); _i < _a.length; _i++) {\n var key = _a[_i];\n var _loop_1 = function (prop) {\n if (rex.test(key)) {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n var childType = {};\n merge(childType, getBuilderProperties(prop.type));\n value(childType);\n var tempValue;\n if (!childType.isPropertyArray) {\n tempValue = extend({}, childType.properties, {});\n } else {\n tempValue = childType.propCollections;\n }\n this.properties[prop.propertyName] = tempValue;\n childType.properties = {};\n childType.propCollections = [];\n childType.isPropertyArray = false;\n return this;\n };\n } else {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n this.properties[prop.propertyName] = value;\n return this;\n };\n }\n };\n for (var _b = 0, _c = component.prototype.propList[\"\" + key]; _b < _c.length; _b++) {\n var prop = _c[_b];\n _loop_1(prop);\n }\n }\n }\n return component.prototype.builderObject;\n}\n/**\n * Method used to create builder for the components\n *\n * @param {any} component -specifies the target component for which builder to be created.\n * @returns {Object} ?\n * @private\n */\nexport function CreateBuilder(component) {\n var builderFunction = function (element) {\n this.element = element;\n return this;\n };\n var instanceFunction = function (element) {\n if (!Object.prototype.hasOwnProperty.call(builderFunction, 'create')) {\n builderFunction.prototype = getBuilderProperties(component);\n builderFunction.prototype.create = function () {\n var temp = extend({}, {}, this.properties);\n this.properties = {};\n return new component(temp, this.element);\n };\n }\n return new builderFunction(element);\n };\n return instanceFunction;\n}\n/**\n * Returns parent options for the object\n *\n * @param {Object} context ?\n * @param {string} prefix ?\n * @returns {ParentOption} ?\n * @private\n */\nfunction getParentContext(context, prefix) {\n if (Object.prototype.hasOwnProperty.call(context, 'parentObj') === false) {\n return {\n context: context,\n prefix: prefix\n };\n } else {\n var curText = getValue('propName', context);\n if (curText) {\n prefix = curText + '-' + prefix;\n }\n return getParentContext(getValue('parentObj', context), prefix);\n }\n}","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};\nimport { createElement, selectAll, closest } from './dom';\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { EventHandler } from './event-handler';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\n/**\n * The Animation framework provide options to animate the html DOM elements\n * ```typescript\n * let animeObject = new Animation({\n * name: 'SlideLeftIn',\n * duration: 1000\n * });\n * animeObject.animate('#anime1');\n * animeObject.animate('#anime2', { duration: 500 });\n * ```\n */\nvar Animation = /** @class */function (_super) {\n __extends(Animation, _super);\n function Animation(options) {\n var _this = _super.call(this, options, undefined) || this;\n /**\n * @private\n */\n _this.easing = {\n ease: 'cubic-bezier(0.250, 0.100, 0.250, 1.000)',\n linear: 'cubic-bezier(0.250, 0.250, 0.750, 0.750)',\n easeIn: 'cubic-bezier(0.420, 0.000, 1.000, 1.000)',\n easeOut: 'cubic-bezier(0.000, 0.000, 0.580, 1.000)',\n easeInOut: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',\n elasticInOut: 'cubic-bezier(0.5,-0.58,0.38,1.81)',\n elasticIn: 'cubic-bezier(0.17,0.67,0.59,1.81)',\n elasticOut: 'cubic-bezier(0.7,-0.75,0.99,1.01)'\n };\n return _this;\n }\n Animation_1 = Animation;\n /**\n * Applies animation to the current element.\n *\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @returns {void} ?\n */\n Animation.prototype.animate = function (element, options) {\n options = !options ? {} : options;\n var model = this.getModel(options);\n if (typeof element === 'string') {\n var elements = Array.prototype.slice.call(selectAll(element, document));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element_1 = elements_1[_i];\n model.element = element_1;\n Animation_1.delayAnimation(model);\n }\n } else {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n };\n /**\n * Stop the animation effect on animated element.\n *\n * @param {HTMLElement} element - Element which needs to be stop the animation.\n * @param {AnimationOptions} model - Handling the animation model at stop function.\n * @returns {void}\n */\n Animation.stop = function (element, model) {\n element.style.animation = '';\n element.removeAttribute('e-animate');\n var animationId = element.getAttribute('e-animation-id');\n if (animationId) {\n var frameId = parseInt(animationId, 10);\n cancelAnimationFrame(frameId);\n element.removeAttribute('e-animation-id');\n }\n if (model && model.end) {\n model.end.call(this, model);\n }\n };\n /**\n * Set delay to animation element\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.delayAnimation = function (model) {\n if (animationMode === 'Disable' || animationMode === GlobalAnimationMode.Disable) {\n if (model.begin) {\n model.begin.call(this, model);\n }\n if (model.end) {\n model.end.call(this, model);\n }\n } else {\n if (model.delay) {\n setTimeout(function () {\n Animation_1.applyAnimation(model);\n }, model.delay);\n } else {\n Animation_1.applyAnimation(model);\n }\n }\n };\n /**\n * Triggers animation\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.applyAnimation = function (model) {\n var _this = this;\n model.timeStamp = 0;\n var step = 0;\n var timerId = 0;\n var prevTimeStamp = 0;\n var duration = model.duration;\n model.element.setAttribute('e-animate', 'true');\n var startAnimation = function (timeStamp) {\n try {\n if (timeStamp) {\n // let step: number = model.timeStamp = timeStamp - startTime;\n /** phantomjs workaround for timestamp fix */\n prevTimeStamp = prevTimeStamp === 0 ? timeStamp : prevTimeStamp;\n model.timeStamp = timeStamp + model.timeStamp - prevTimeStamp;\n prevTimeStamp = timeStamp;\n /** phantomjs workaround end */\n // trigger animation begin event\n if (!step && model.begin) {\n model.begin.call(_this, model);\n }\n step = step + 1;\n var avg = model.timeStamp / step;\n if (model.timeStamp < duration && model.timeStamp + avg < duration && model.element.getAttribute('e-animate')) {\n // apply animation effect to the current element\n model.element.style.animation = model.name + ' ' + model.duration + 'ms ' + model.timingFunction;\n if (model.progress) {\n model.progress.call(_this, model);\n }\n // repeat requestAnimationFrame\n requestAnimationFrame(startAnimation);\n } else {\n // clear requestAnimationFrame\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n model.element.removeAttribute('e-animate');\n model.element.style.animation = '';\n if (model.end) {\n model.end.call(_this, model);\n }\n }\n } else {\n //startTime = performance.now();\n // set initial requestAnimationFrame\n timerId = requestAnimationFrame(startAnimation);\n model.element.setAttribute('e-animation-id', timerId.toString());\n }\n } catch (e) {\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n if (model.fail) {\n model.fail.call(_this, e);\n }\n }\n };\n startAnimation();\n };\n /**\n * Returns Animation Model\n *\n * @param {AnimationModel} options ?\n * @returns {AnimationModel} ?\n */\n Animation.prototype.getModel = function (options) {\n return {\n name: options.name || this.name,\n delay: options.delay || this.delay,\n duration: options.duration !== undefined ? options.duration : this.duration,\n begin: options.begin || this.begin,\n end: options.end || this.end,\n fail: options.fail || this.fail,\n progress: options.progress || this.progress,\n timingFunction: this.easing[options.timingFunction] ? this.easing[options.timingFunction] : options.timingFunction || this.easing[this.timingFunction]\n };\n };\n /**\n * @private\n * @param {AnimationModel} newProp ?\n * @param {AnimationModel} oldProp ?\n * @returns {void} ?\n */\n Animation.prototype.onPropertyChanged = function (newProp, oldProp) {\n // no code needed\n };\n /**\n * Returns module name as animation\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.getModuleName = function () {\n return 'animation';\n };\n /**\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.destroy = function () {\n //Override base destroy;\n };\n var Animation_1;\n __decorate([Property('FadeIn')], Animation.prototype, \"name\", void 0);\n __decorate([Property(400)], Animation.prototype, \"duration\", void 0);\n __decorate([Property('ease')], Animation.prototype, \"timingFunction\", void 0);\n __decorate([Property(0)], Animation.prototype, \"delay\", void 0);\n __decorate([Event()], Animation.prototype, \"progress\", void 0);\n __decorate([Event()], Animation.prototype, \"begin\", void 0);\n __decorate([Event()], Animation.prototype, \"end\", void 0);\n __decorate([Event()], Animation.prototype, \"fail\", void 0);\n Animation = Animation_1 = __decorate([NotifyPropertyChanges], Animation);\n return Animation;\n}(Base);\nexport { Animation };\n/**\n * Ripple provides material theme's wave effect when an element is clicked\n * ```html\n * <div id='ripple'></div>\n * <script>\n * rippleEffect(document.getElementById('ripple'));\n * </script>\n * ```\n *\n * @private\n * @param {HTMLElement} element - Target element\n * @param {RippleOptions} rippleOptions - Ripple options .\n * @param {Function} done .\n * @returns {void} .\n */\nexport function rippleEffect(element, rippleOptions, done) {\n var rippleModel = getRippleModel(rippleOptions);\n if (rippleModel.rippleFlag === false || rippleModel.rippleFlag === undefined && !isRippleEnabled) {\n return function () {\n // do nothing.\n };\n }\n element.setAttribute('data-ripple', 'true');\n EventHandler.add(element, 'mousedown', rippleHandler, {\n parent: element,\n rippleOptions: rippleModel\n });\n EventHandler.add(element, 'mouseup', rippleUpHandler, {\n parent: element,\n rippleOptions: rippleModel,\n done: done\n });\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, {\n parent: element,\n rippleOptions: rippleModel\n });\n if (Browser.isPointer) {\n EventHandler.add(element, 'transitionend', rippleLeaveHandler, {\n parent: element,\n rippleOptions: rippleModel\n });\n }\n return function () {\n element.removeAttribute('data-ripple');\n EventHandler.remove(element, 'mousedown', rippleHandler);\n EventHandler.remove(element, 'mouseup', rippleUpHandler);\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n EventHandler.remove(element, 'transitionend', rippleLeaveHandler);\n };\n}\n/**\n * Handler for ripple model\n *\n * @param {RippleOptions} rippleOptions ?\n * @returns {RippleOptions} ?\n */\nfunction getRippleModel(rippleOptions) {\n var rippleModel = {\n selector: rippleOptions && rippleOptions.selector ? rippleOptions.selector : null,\n ignore: rippleOptions && rippleOptions.ignore ? rippleOptions.ignore : null,\n rippleFlag: rippleOptions && rippleOptions.rippleFlag,\n isCenterRipple: rippleOptions && rippleOptions.isCenterRipple,\n duration: rippleOptions && rippleOptions.duration ? rippleOptions.duration : 350\n };\n return rippleModel;\n}\n/**\n * Handler for ripple event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleHandler(e) {\n var target = e.target;\n var selector = this.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || this.rippleOptions && closest(target, this.rippleOptions.ignore)) {\n return;\n }\n var offset = element.getBoundingClientRect();\n var offsetX = e.pageX - document.body.scrollLeft;\n var offsetY = e.pageY - (!document.body.scrollTop && document.documentElement ? document.documentElement.scrollTop : document.body.scrollTop);\n var pageX = Math.max(Math.abs(offsetX - offset.left), Math.abs(offsetX - offset.right));\n var pageY = Math.max(Math.abs(offsetY - offset.top), Math.abs(offsetY - offset.bottom));\n var radius = Math.sqrt(pageX * pageX + pageY * pageY);\n var diameter = radius * 2 + 'px';\n var x = offsetX - offset.left - radius;\n var y = offsetY - offset.top - radius;\n if (this.rippleOptions && this.rippleOptions.isCenterRipple) {\n x = 0;\n y = 0;\n diameter = '100%';\n }\n element.classList.add('e-ripple');\n var duration = this.rippleOptions.duration.toString();\n var styles = 'width: ' + diameter + ';height: ' + diameter + ';left: ' + x + 'px;top: ' + y + 'px;' + 'transition-duration: ' + duration + 'ms;';\n var rippleElement = createElement('div', {\n className: 'e-ripple-element',\n styles: styles\n });\n element.appendChild(rippleElement);\n window.getComputedStyle(rippleElement).getPropertyValue('opacity');\n rippleElement.style.transform = 'scale(1)';\n if (element !== this.parent) {\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, {\n parent: this.parent,\n rippleOptions: this.rippleOptions\n });\n }\n}\n/**\n * Handler for ripple element mouse up event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleUpHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for ripple element mouse move event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleLeaveHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for removing ripple element\n *\n * @param {MouseEvent} e ?\n * @param {RippleArgs} eventArgs ?\n * @returns {void} ?\n * @private\n */\nfunction removeRipple(e, eventArgs) {\n var duration = eventArgs.rippleOptions.duration;\n var target = e.target;\n var selector = eventArgs.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || element && element.className.indexOf('e-ripple') === -1) {\n return;\n }\n var rippleElements = selectAll('.e-ripple-element', element);\n var rippleElement = rippleElements[rippleElements.length - 1];\n if (rippleElement) {\n rippleElement.style.opacity = '0.5';\n }\n if (eventArgs.parent !== element) {\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n }\n setTimeout(function () {\n if (rippleElement && rippleElement.parentNode) {\n rippleElement.parentNode.removeChild(rippleElement);\n }\n if (!element.getElementsByClassName('e-ripple-element').length) {\n element.classList.remove('e-ripple');\n }\n if (eventArgs.done) {\n eventArgs.done(e);\n }\n }, duration);\n}\nexport var isRippleEnabled = false;\n/**\n * Animation Module provides support to enable ripple effect functionality to Essential JS 2 components.\n *\n * @param {boolean} isRipple Specifies the boolean value to enable or disable ripple effect.\n * @returns {boolean} ?\n */\nexport function enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n/**\n * Defines the Modes of Global animation.\n *\n * @private\n */\nexport var animationMode;\n/**\n * This method is used to enable or disable the animation for all components.\n *\n * @param {string|GlobalAnimationMode} value - Specifies the value to enable or disable the animation for all components. When set to 'enable', it enables the animation for all components, regardless of the individual component's animation settings. When set to 'disable', it disables the animation for all components, regardless of the individual component's animation settings.\n * @returns {void}\n */\nexport function setGlobalAnimation(value) {\n animationMode = value;\n}\n/**\n * Defines the global animation modes for all components.\n */\nexport var GlobalAnimationMode;\n(function (GlobalAnimationMode) {\n /**\n * Defines the global animation mode as Default. Animation is enabled or disabled based on the component's animation settings.\n */\n GlobalAnimationMode[\"Default\"] = \"Default\";\n /**\n * Defines the global animation mode as Enable. Enables the animation for all components, regardless of the individual component's animation settings.\n */\n GlobalAnimationMode[\"Enable\"] = \"Enable\";\n /**\n * Defines the global animation mode as Disable. Disables the animation for all components, regardless of the individual component's animation settings.\n */\n GlobalAnimationMode[\"Disable\"] = \"Disable\";\n})(GlobalAnimationMode || (GlobalAnimationMode = {}));","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Module loading operations\n */\nimport { createInstance, setValue, getValue, deleteObject } from './util';\nvar MODULE_SUFFIX = 'Module';\nvar ModuleLoader = /** @class */function () {\n function ModuleLoader(parent) {\n this.loadedModules = [];\n this.parent = parent;\n }\n /**\n * Inject required modules in component library\n *\n * @returns {void} ?\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @param {Function[]} moduleList - Array of modules to be injected from sample side\n */\n ModuleLoader.prototype.inject = function (requiredModules, moduleList) {\n var reqLength = requiredModules.length;\n if (reqLength === 0) {\n this.clean();\n return;\n }\n if (this.loadedModules.length) {\n this.clearUnusedModule(requiredModules);\n }\n for (var i = 0; i < reqLength; i++) {\n var modl = requiredModules[parseInt(i.toString(), 10)];\n for (var _i = 0, moduleList_1 = moduleList; _i < moduleList_1.length; _i++) {\n var module = moduleList_1[_i];\n var modName = modl.member;\n if (module && module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {\n var moduleObject = createInstance(module, modl.args);\n var memberName = this.getMemberName(modName);\n if (modl.isProperty) {\n setValue(memberName, module, this.parent);\n } else {\n setValue(memberName, moduleObject, this.parent);\n }\n var loadedModule = modl;\n loadedModule.member = memberName;\n this.loadedModules.push(loadedModule);\n }\n }\n }\n };\n /**\n * To remove the created object while destroying the control\n *\n * @returns {void}\n */\n ModuleLoader.prototype.clean = function () {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var modules = _a[_i];\n if (!modules.isProperty) {\n getValue(modules.member, this.parent).destroy();\n }\n }\n this.loadedModules = [];\n };\n /**\n * Returns the array of modules that are not loaded in the component library.\n *\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @returns {ModuleDeclaration[]} ?\n * @private\n */\n ModuleLoader.prototype.getNonInjectedModules = function (requiredModules) {\n var _this = this;\n return requiredModules.filter(function (module) {\n return !_this.isModuleLoaded(module.member);\n });\n };\n /**\n * Removes all unused modules\n *\n * @param {ModuleDeclaration[]} moduleList ?\n * @returns {void} ?\n */\n ModuleLoader.prototype.clearUnusedModule = function (moduleList) {\n var _this = this;\n var usedModules = moduleList.map(function (arg) {\n return _this.getMemberName(arg.member);\n });\n var removableModule = this.loadedModules.filter(function (module) {\n return usedModules.indexOf(module.member) === -1;\n });\n for (var _i = 0, removableModule_1 = removableModule; _i < removableModule_1.length; _i++) {\n var mod = removableModule_1[_i];\n if (!mod.isProperty) {\n getValue(mod.member, this.parent).destroy();\n }\n this.loadedModules.splice(this.loadedModules.indexOf(mod), 1);\n deleteObject(this.parent, mod.member);\n }\n };\n /**\n * To get the name of the member.\n *\n * @param {string} name ?\n * @returns {string} ?\n */\n ModuleLoader.prototype.getMemberName = function (name) {\n return name[0].toLowerCase() + name.substring(1) + MODULE_SUFFIX;\n };\n /**\n * Returns boolean based on whether the module specified is loaded or not\n *\n * @param {string} modName ?\n * @returns {boolean} ?\n */\n ModuleLoader.prototype.isModuleLoaded = function (modName) {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var mod = _a[_i];\n if (mod.member === this.getMemberName(modName)) {\n return true;\n }\n }\n return false;\n };\n return ModuleLoader;\n}();\nexport { ModuleLoader };","/***\n * Hijri parser\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var HijriParser;\n(function (HijriParser) {\n var dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990, 29019, 29049, 29078, 29108, 29137, 29167, 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522, 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759, 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053, 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348, 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585, 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939, 30968, 30998, 31027, 31057, 31086, 31116, 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530, 31559, 31589, 31618, 31648, 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120, 32150, 32180, 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711, 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243, 33272, 33302, 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775, 33804, 33834, 33863, 33893, 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306, 34336, 34365, 34395, 34424, 34454, 34483, 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837, 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074, 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370, 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665, 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901, 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254, 36284, 36314, 36343, 36373, 36403, 36433, 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845, 36875, 36904, 36934, 36963, 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436, 37465, 37495, 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027, 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558, 38587, 38617, 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089, 39118, 39148, 39178, 39208, 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621, 39650, 39680, 39709, 39739, 39768, 39798, 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153, 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389, 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685, 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980, 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216, 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570, 41599, 41629, 41658, 41688, 41718, 41748, 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161, 42190, 42220, 42249, 42279, 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751, 42780, 42810, 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342, 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873, 43903, 43932, 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405, 44434, 44464, 44493, 44523, 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936, 44966, 44996, 45025, 45055, 45084, 45114, 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468, 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704, 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999, 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295, 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531, 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885, 46915, 46944, 46974, 47003, 47033, 47063, 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476, 47506, 47535, 47565, 47594, 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066, 48096, 48125, 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657, 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189, 49218, 49248, 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720, 49749, 49779, 49809, 49838, 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252, 50281, 50311, 50340, 50370, 50400, 50429, 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784, 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019, 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315, 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611, 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846, 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200, 52230, 52260, 52290, 52319, 52349, 52379, 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792, 52822, 52851, 52881, 52910, 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383, 53412, 53441, 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973, 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505, 54535, 54564, 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036, 55066, 55095, 55125, 55154, 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567, 55597, 55627, 55657, 55686, 55716, 55745, 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100, 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335, 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631, 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926, 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162, 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517, 57546, 57576, 57605, 57634, 57664, 57694, 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107, 58137, 58167, 58196, 58226, 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698, 58727, 58757, 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288, 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820, 59850, 59879, 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352, 60381, 60411, 60440, 60469, 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883, 60912, 60942, 60972, 61002, 61031, 61061, 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415, 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651, 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947, 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242, 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478, 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832, 62862, 62891, 62921, 62950, 62980, 63009, 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423, 63453, 63482, 63512, 63541, 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014, 64043, 64073, 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603, 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136, 65166, 65195, 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667, 65697, 65726, 65755, 65785, 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199, 66228, 66258, 66287, 66317, 66346, 66376, 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730, 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967, 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262, 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557, 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793, 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148, 68177, 68207, 68236, 68266, 68295, 68325, 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738, 68768, 68797, 68827, 68857, 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330, 69359, 69388, 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919, 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451, 70481, 70510, 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983, 71013, 71042, 71071, 71101, 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514, 71543, 71573, 71602, 71632, 71662, 71691, 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046, 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282, 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577, 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872, 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109, 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464, 73493, 73523, 73552, 73581, 73611, 73640, 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053, 74083, 74113, 74142, 74172, 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645, 74675, 74704, 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235, 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766, 75796, 75826, 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299, 76328, 76358, 76387, 76416, 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830, 76859, 76889, 76918, 76948, 76977, 77007, 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361, 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598, 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893, 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188, 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425, 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779, 78808, 78838, 78867, 78897, 78926, 78956, 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369, 79399, 79428, 79458, 79487, 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960, 79990];\n /**\n *\n * @param {Date} gDate ?\n * @returns {Object} ?\n */\n function getHijriDate(gDate) {\n var day = gDate.getDate();\n var month = gDate.getMonth();\n var year = gDate.getFullYear();\n var tMonth = month + 1;\n var tYear = year;\n if (tMonth < 3) {\n tYear -= 1;\n tMonth += 12;\n }\n var yPrefix = Math.floor(tYear / 100);\n var julilanOffset = yPrefix - Math.floor(yPrefix / 4.) - 2;\n var julianNumber = Math.floor(365.25 * (tYear + 4716)) + Math.floor(30.6001 * (tMonth + 1)) + day - julilanOffset - 1524;\n yPrefix = Math.floor((julianNumber - 1867216.25) / 36524.25);\n julilanOffset = yPrefix - Math.floor(yPrefix / 4.) + 1;\n var b = julianNumber + julilanOffset + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var tempMonth = Math.floor((b - d) / 30.6001);\n day = b - d - Math.floor(30.6001 * tempMonth);\n month = Math.floor((b - d) / 20.6001);\n if (month > 13) {\n c += 1;\n month -= 12;\n }\n month -= 1;\n year = c - 4716;\n var modifiedJulianDate = julianNumber - 2400000;\n // date calculation for year after 2077\n var iyear = 10631 / 30;\n var z = julianNumber - 1948084;\n var cyc = Math.floor(z / 10631.);\n z = z - 10631 * cyc;\n var j = Math.floor((z - 0.1335) / iyear);\n var iy = 30 * cyc + j;\n z = z - Math.floor(j * iyear + 0.1335);\n var im = Math.floor((z + 28.5001) / 29.5);\n /* istanbul ignore next */\n if (im === 13) {\n im = 12;\n }\n var tempDay = z - Math.floor(29.5001 * im - 29);\n var i = 0;\n for (; i < dateCorrection.length; i++) {\n if (dateCorrection[parseInt(i.toString(), 10)] > modifiedJulianDate) {\n break;\n }\n }\n var iln = i + 16260;\n var ii = Math.floor((iln - 1) / 12);\n var hYear = ii + 1;\n var hmonth = iln - 12 * ii;\n var hDate = modifiedJulianDate - dateCorrection[i - 1] + 1;\n if ((hDate + '').length > 2) {\n hDate = tempDay;\n hmonth = im;\n hYear = iy;\n }\n return {\n year: hYear,\n month: hmonth,\n date: hDate\n };\n }\n HijriParser.getHijriDate = getHijriDate;\n /**\n *\n * @param {number} year ?\n * @param {number} month ?\n * @param {number} day ?\n * @returns {Date} ?\n */\n function toGregorian(year, month, day) {\n var iy = year;\n var im = month;\n var id = day;\n var ii = iy - 1;\n var iln = ii * 12 + 1 + (im - 1);\n var i = iln - 16260;\n var mcjdn = id + dateCorrection[i - 1] - 1;\n var julianDate = mcjdn + 2400000;\n var z = Math.floor(julianDate + 0.5);\n var a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var gDay = b - d - Math.floor(e * 30.6001);\n var gMonth = e - (e > 13.5 ? 13 : 1);\n var gYear = c - (gMonth > 2.5 ? 4716 : 4715);\n /* istanbul ignore next */\n if (gYear <= 0) {\n gMonth--;\n } // No year zero\n return new Date(gYear + '/' + gMonth + '/' + gDay);\n }\n HijriParser.toGregorian = toGregorian;\n})(HijriParser || (HijriParser = {}));","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { getValue, setValue, merge, isBlazor } from './util';\nimport { Base } from './base';\n/**\n * To detect the changes for inner properties.\n *\n * @private\n * @returns {void} ?\n */\nvar ChildProperty = /** @class */function () {\n function ChildProperty(parent, propName, defaultValue, isArray) {\n this.isComplexArraySetter = false;\n this.properties = {};\n this.changedProperties = {};\n this.childChangedProperties = {};\n this.oldProperties = {};\n this.finalUpdate = function () {};\n this.callChildDataBind = getValue('callChildDataBind', Base);\n this.parentObj = parent;\n this.controlParent = this.parentObj.controlParent || this.parentObj;\n this.propName = propName;\n this.isParentArray = isArray;\n this.setProperties(defaultValue, true);\n }\n /**\n * Updates the property changes\n *\n * @param {boolean} val ?\n * @param {string} propName ?\n * @returns {void} ?\n */\n ChildProperty.prototype.updateChange = function (val, propName) {\n if (val === true) {\n this.parentObj.childChangedProperties[\"\" + propName] = val;\n } else {\n delete this.parentObj.childChangedProperties[\"\" + propName];\n }\n if (this.parentObj.updateChange) {\n this.parentObj.updateChange(val, this.parentObj.propName);\n }\n };\n /**\n * Updates time out duration\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.updateTimeOut = function () {\n if (this.parentObj.updateTimeOut) {\n this.parentObj.finalUpdate();\n this.parentObj.updateTimeOut();\n } else {\n var changeTime_1 = setTimeout(this.parentObj.dataBind.bind(this.parentObj));\n var clearUpdate = function () {\n clearTimeout(changeTime_1);\n };\n this.finalUpdate = clearUpdate;\n }\n };\n /**\n * Clears changed properties\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.clearChanges = function () {\n this.finalUpdate();\n this.updateChange(false, this.propName);\n this.oldProperties = {};\n this.changedProperties = {};\n };\n /**\n * Set property changes\n *\n * @param {Object} prop ?\n * @param {boolean} muteOnChange ?\n * @returns {void} ?\n */\n ChildProperty.prototype.setProperties = function (prop, muteOnChange) {\n if (muteOnChange === true) {\n merge(this, prop);\n this.updateChange(false, this.propName);\n this.clearChanges();\n } else {\n merge(this, prop);\n }\n };\n /**\n * Binds data\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.dataBind = function () {\n this.callChildDataBind(this.childChangedProperties, this);\n if (this.isParentArray) {\n var curIndex = this.parentObj[this.propName].indexOf(this);\n if (Object.keys(this.changedProperties).length) {\n setValue(this.propName + '.' + curIndex, this.changedProperties, this.parentObj.changedProperties);\n setValue(this.propName + '.' + curIndex, this.oldProperties, this.parentObj.oldProperties);\n }\n } else {\n this.parentObj.changedProperties[this.propName] = this.changedProperties;\n this.parentObj.oldProperties[this.propName] = this.oldProperties;\n }\n this.clearChanges();\n };\n /**\n * Saves changes to newer values\n *\n * @param {string} key ?\n * @param {Object} newValue ?\n * @param {Object} oldValue ?\n * @param {boolean} restrictServerDataBind ?\n * @returns {void} ?\n */\n ChildProperty.prototype.saveChanges = function (key, newValue, oldValue, restrictServerDataBind) {\n if (this.controlParent.isProtectedOnChange) {\n return;\n }\n if (!restrictServerDataBind) {\n this.serverDataBind(key, newValue, true);\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.updateChange(true, this.propName);\n this.finalUpdate();\n this.updateTimeOut();\n };\n ChildProperty.prototype.serverDataBind = function (key, value, isSaveChanges, action) {\n if (isBlazor() && !this.parentObj.isComplexArraySetter) {\n var parent_1;\n var newChanges = {};\n var parentKey = isSaveChanges ? this.getParentKey(true) + '.' + key : key;\n /* istanbul ignore else */\n if (parentKey.indexOf('.') !== -1) {\n var complexKeys = parentKey.split('.');\n parent_1 = newChanges;\n for (var i = 0; i < complexKeys.length; i++) {\n var isFinal = i === complexKeys.length - 1;\n parent_1[complexKeys[parseInt(i.toString(), 10)]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[parseInt(i.toString(), 10)]];\n }\n } else {\n newChanges[\"\" + parentKey] = {};\n parent_1 = newChanges[\"\" + parentKey];\n newChanges[\"\" + parentKey][\"\" + key] = value;\n }\n /* istanbul ignore next */\n if (this.isParentArray) {\n var actionProperty = 'ejsAction';\n parent_1[\"\" + actionProperty] = action ? action : 'none';\n }\n this.controlParent.serverDataBind(newChanges);\n }\n };\n ChildProperty.prototype.getParentKey = function (isSaveChanges) {\n var index = '';\n var propName = this.propName;\n /* istanbul ignore next */\n if (this.isParentArray) {\n index = this.parentObj[this.propName].indexOf(this);\n var valueLength = this.parentObj[this.propName].length;\n valueLength = isSaveChanges ? valueLength : valueLength > 0 ? valueLength - 1 : 0;\n index = index !== -1 ? '-' + index : '-' + valueLength;\n propName = propName + index;\n }\n if (this.controlParent !== this.parentObj) {\n propName = this.parentObj.getParentKey() + '.' + this.propName + index;\n }\n return propName;\n };\n return ChildProperty;\n}();\nexport { ChildProperty };","import { ParserBase as parser } from './parser-base';\nimport { IntlBase as base, setDateFormat } from './intl-base';\nimport { isUndefined, throwError, getValue, isBlazor } from '../util';\nimport { HijriParser } from '../hijri-parser';\nimport { isNullOrUndefined, extend } from '../util';\nvar abbreviateRegexGlobal = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|K|cccc|ccc|WW|W|G+|z+/gi;\nvar standalone = 'stand-alone';\nvar weekdayKey = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nexport var basicPatterns = ['short', 'medium', 'long', 'full'];\nvar timeSetter = {\n m: 'getMinutes',\n h: 'getHours',\n H: 'getHours',\n s: 'getSeconds',\n d: 'getDate',\n f: 'getMilliseconds'\n};\nexport var datePartMatcher = {\n 'M': 'month',\n 'd': 'day',\n 'E': 'weekday',\n 'c': 'weekday',\n 'y': 'year',\n 'm': 'minute',\n 'h': 'hour',\n 'H': 'hour',\n 's': 'second',\n 'L': 'month',\n 'a': 'designator',\n 'z': 'timeZone',\n 'Z': 'timeZone',\n 'G': 'era',\n 'f': 'milliseconds'\n};\nvar timeSeparator = 'timeSeparator';\n/**\n * Date Format is a framework provides support for date formatting.\n *\n * @private\n */\nvar DateFormat = /** @class */function () {\n function DateFormat() {}\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which date will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateFormat.dateFormat = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numObject = getValue('parserObject.numbers', dependable);\n var dateObject = dependable.dateObject;\n var formatOptions = {\n isIslamic: base.islamicRegex.test(option.calendar)\n };\n formatOptions.firstDayOfWeek = base.getWeekData(culture, cldr);\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format || base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n formatOptions.dateSeperator = isBlazor() ? getValue('dateSeperator', dateObject) : base.getDateSeparator(dependable.dateObject);\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n } else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n if (isBlazor()) {\n resPattern = resPattern.replace(/tt/, 'a');\n }\n formatOptions.pattern = resPattern;\n formatOptions.numMapper = isBlazor() ? extend({}, numObject) : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n var patternMatch = resPattern.match(abbreviateRegexGlobal) || [];\n for (var _i = 0, patternMatch_1 = patternMatch; _i < patternMatch_1.length; _i++) {\n var str = patternMatch_1[_i];\n var len = str.length;\n var char = str[0];\n if (char === 'K') {\n char = 'h';\n }\n switch (char) {\n case 'E':\n case 'c':\n if (isBlazor()) {\n formatOptions.weekday = getValue('days.' + base.monthIndex[\"\" + len], dateObject);\n } else {\n formatOptions.weekday = dependable.dateObject[\"\" + base.days][\"\" + standalone][base.monthIndex[\"\" + len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n formatOptions.month = getValue('months.' + base.monthIndex[\"\" + len], dateObject);\n } else {\n formatOptions.month = dependable.dateObject[\"\" + base.month][\"\" + standalone][base.monthIndex[\"\" + len]];\n }\n break;\n case 'a':\n formatOptions.designator = isBlazor() ? getValue('dayPeriods', dateObject) : getValue('dayPeriods.format.wide', dateObject);\n break;\n case 'G':\n {\n var eText = len <= 3 ? 'eraAbbr' : len === 4 ? 'eraNames' : 'eraNarrow';\n formatOptions.era = isBlazor() ? getValue('eras', dateObject) : getValue('eras.' + eText, dependable.dateObject);\n break;\n }\n case 'z':\n formatOptions.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n break;\n }\n }\n }\n return function (value) {\n if (isNaN(value.getDate())) {\n return null;\n }\n return _this.intDateFormatter(value, formatOptions);\n };\n };\n /**\n * Returns formatted date string based on options passed.\n *\n * @param {Date} value ?\n * @param {FormatOptions} options ?\n * @returns {string} ?\n */\n DateFormat.intDateFormatter = function (value, options) {\n var pattern = options.pattern;\n var ret = '';\n var matches = pattern.match(base.dateParseRegex);\n var dObject = this.getCurrentDateValue(value, options.isIslamic);\n for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) {\n var match = matches_1[_i];\n var length_1 = match.length;\n var char = match[0];\n if (char === 'K') {\n char = 'h';\n }\n var curval = void 0;\n var curvalstr = '';\n var isNumber = void 0;\n var processNumber = void 0;\n var curstr = '';\n switch (char) {\n case 'M':\n case 'L':\n curval = dObject.month;\n if (length_1 > 2) {\n ret += options.month[\"\" + curval];\n } else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n ret += options.weekday[\"\" + weekdayKey[value.getDay()]];\n break;\n case 'H':\n case 'h':\n case 'm':\n case 's':\n case 'd':\n case 'f':\n isNumber = true;\n if (char === 'd') {\n curval = dObject.date;\n } else if (char === 'f') {\n isNumber = false;\n processNumber = true;\n curvalstr = value[\"\" + timeSetter[\"\" + char]]().toString();\n curvalstr = curvalstr.substring(0, length_1);\n var curlength = curvalstr.length;\n if (length_1 !== curlength) {\n if (length_1 > 3) {\n continue;\n }\n for (var i = 0; i < length_1 - curlength; i++) {\n curvalstr = '0' + curvalstr.toString();\n }\n }\n curstr += curvalstr;\n } else {\n curval = value[\"\" + timeSetter[\"\" + char]]();\n }\n if (char === 'h') {\n curval = curval % 12 || 12;\n }\n break;\n case 'y':\n processNumber = true;\n curstr += dObject.year;\n if (length_1 === 2) {\n curstr = curstr.substr(curstr.length - 2);\n }\n break;\n case 'a':\n {\n var desig = value.getHours() < 12 ? 'am' : 'pm';\n ret += options.designator[\"\" + desig];\n break;\n }\n case 'G':\n {\n var dec = value.getFullYear() < 0 ? 0 : 1;\n var retu = options.era[\"\" + dec];\n if (isNullOrUndefined(retu)) {\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n }\n case '\\'':\n ret += match === '\\'\\'' ? '\\'' : match.replace(/'/g, '');\n break;\n case 'z':\n {\n var timezone = value.getTimezoneOffset();\n var pattern_1 = length_1 < 4 ? '+H;-H' : options.timeZone.hourFormat;\n pattern_1 = pattern_1.replace(/:/g, options.numMapper.timeSeparator);\n if (timezone === 0) {\n ret += options.timeZone.gmtZeroFormat;\n } else {\n processNumber = true;\n curstr = this.getTimeZoneValue(timezone, pattern_1);\n }\n curstr = options.timeZone.gmtFormat.replace(/\\{0\\}/, curstr);\n break;\n }\n case ':':\n ret += options.numMapper.numberSymbols[\"\" + timeSeparator];\n break;\n case '/':\n ret += options.dateSeperator;\n break;\n case 'W':\n isNumber = true;\n curval = base.getWeekOfYear(value, options.firstDayOfWeek);\n break;\n default:\n ret += match;\n }\n if (isNumber) {\n processNumber = true;\n curstr = this.checkTwodigitNumber(curval, length_1);\n }\n if (processNumber) {\n ret += parser.convertValueParts(curstr, base.latnParseRegex, options.numMapper.mapper);\n }\n }\n return ret;\n };\n DateFormat.getCurrentDateValue = function (value, isIslamic) {\n if (isIslamic) {\n return HijriParser.getHijriDate(value);\n }\n return {\n year: value.getFullYear(),\n month: value.getMonth() + 1,\n date: value.getDate()\n };\n };\n /**\n * Returns two digit numbers for given value and length\n *\n * @param {number} val ?\n * @param {number} len ?\n * @returns {string} ?\n */\n DateFormat.checkTwodigitNumber = function (val, len) {\n var ret = val + '';\n if (len === 2 && ret.length !== 2) {\n return '0' + ret;\n }\n return ret;\n };\n /**\n * Returns the value of the Time Zone.\n *\n * @param {number} tVal ?\n * @param {string} pattern ?\n * @returns {string} ?\n * @private\n */\n DateFormat.getTimeZoneValue = function (tVal, pattern) {\n var _this = this;\n var splt = pattern.split(';');\n var curPattern = splt[tVal > 0 ? 1 : 0];\n var no = Math.abs(tVal);\n return curPattern = curPattern.replace(/HH?|mm/g, function (str) {\n var len = str.length;\n var ishour = str.indexOf('H') !== -1;\n return _this.checkTwodigitNumber(Math.floor(ishour ? no / 60 : no % 60), len);\n });\n };\n return DateFormat;\n}();\nexport { DateFormat };\nsetDateFormat(DateFormat);","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isUndefined, throwError, isNullOrUndefined, extend, isBlazor, getValue } from '../util';\nimport { IntlBase as base, setNumberFormat, defaultCurrencyCode } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nvar errorText = {\n 'ms': 'minimumSignificantDigits',\n 'ls': 'maximumSignificantDigits',\n 'mf': 'minimumFractionDigits',\n 'lf': 'maximumFractionDigits'\n};\nvar percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar mapper = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\n/**\n * Module for number formatting.\n *\n * @private\n */\nvar NumberFormat = /** @class */function () {\n function NumberFormat() {}\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberFormat.numberFormatter = function (culture, option, cldr) {\n var _this = this;\n var fOptions = extend({}, option);\n var cOptions = {};\n var dOptions = {};\n var symbolPattern;\n var dependable = base.getDependables(cldr, culture, '', true);\n var numObject = dependable.numericObject;\n dOptions.numberMapper = isBlazor() ? extend({}, numObject) : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : base.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol, option.ignoreCurrency);\n dOptions.percentSymbol = isBlazor() ? getValue('numberSymbols.percentSign', numObject) : dOptions.numberMapper.numberSymbols[\"\" + percentSign];\n dOptions.minusSymbol = isBlazor() ? getValue('numberSymbols.minusSign', numObject) : dOptions.numberMapper.numberSymbols[\"\" + minusSign];\n var symbols = dOptions.numberMapper.numberSymbols;\n if (option.format && !base.formatRegex.test(option.format)) {\n cOptions = base.customFormat(option.format, dOptions, dependable.numericObject);\n if (!isUndefined(fOptions.useGrouping) && fOptions.useGrouping) {\n fOptions.useGrouping = cOptions.pData.useGrouping;\n }\n } else {\n extend(fOptions, base.getProperNumericSkeleton(option.format || 'N'));\n fOptions.isCurrency = fOptions.type === 'currency';\n fOptions.isPercent = fOptions.type === 'percent';\n if (!isBlazor()) {\n symbolPattern = base.getSymbolPattern(fOptions.type, dOptions.numberMapper.numberSystem, dependable.numericObject, fOptions.isAccount);\n }\n fOptions.groupOne = this.checkValueRange(fOptions.maximumSignificantDigits, fOptions.minimumSignificantDigits, true);\n this.checkValueRange(fOptions.maximumFractionDigits, fOptions.minimumFractionDigits, false, true);\n if (!isUndefined(fOptions.fractionDigits)) {\n fOptions.minimumFractionDigits = fOptions.maximumFractionDigits = fOptions.fractionDigits;\n }\n if (isUndefined(fOptions.useGrouping)) {\n fOptions.useGrouping = true;\n }\n if (fOptions.isCurrency && !isBlazor()) {\n symbolPattern = symbolPattern.replace(/\\u00A4/g, base.defaultCurrency);\n }\n if (!isBlazor()) {\n var split = symbolPattern.split(';');\n cOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, dOptions.currencySymbol);\n cOptions.pData = base.getFormatData(split[0], false, dOptions.currencySymbol);\n if (fOptions.useGrouping) {\n fOptions.groupSeparator = symbols[mapper[2]];\n fOptions.groupData = this.getGroupingDetails(split[0]);\n }\n } else {\n cOptions.nData = extend({}, {}, getValue(fOptions.type + 'nData', numObject));\n cOptions.pData = extend({}, {}, getValue(fOptions.type + 'pData', numObject));\n if (fOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([cOptions.pData, cOptions.nData], dOptions.currencySymbol, option.currency);\n }\n }\n var minFrac = isUndefined(fOptions.minimumFractionDigits);\n if (minFrac) {\n fOptions.minimumFractionDigits = cOptions.nData.minimumFraction;\n }\n if (isUndefined(fOptions.maximumFractionDigits)) {\n var mval = cOptions.nData.maximumFraction;\n fOptions.maximumFractionDigits = isUndefined(mval) && fOptions.isPercent ? 0 : mval;\n }\n var mfrac = fOptions.minimumFractionDigits;\n var lfrac = fOptions.maximumFractionDigits;\n if (!isUndefined(mfrac) && !isUndefined(lfrac)) {\n if (mfrac > lfrac) {\n fOptions.maximumFractionDigits = mfrac;\n }\n }\n }\n extend(cOptions.nData, fOptions);\n extend(cOptions.pData, fOptions);\n return function (value) {\n if (isNaN(value)) {\n return symbols[mapper[1]];\n } else if (!isFinite(value)) {\n return symbols[mapper[0]];\n }\n return _this.intNumberFormatter(value, cOptions, dOptions, option);\n };\n };\n /**\n * Returns grouping details for the pattern provided\n *\n * @param {string} pattern ?\n * @returns {GroupDetails} ?\n */\n NumberFormat.getGroupingDetails = function (pattern) {\n var ret = {};\n var match = pattern.match(base.negativeDataRegex);\n if (match && match[4]) {\n var pattern_1 = match[4];\n var p = pattern_1.lastIndexOf(',');\n if (p !== -1) {\n var temp = pattern_1.split('.')[0];\n ret.primary = temp.length - p - 1;\n var s = pattern_1.lastIndexOf(',', p - 1);\n if (s !== -1) {\n ret.secondary = p - 1 - s;\n }\n }\n }\n return ret;\n };\n /**\n * Returns if the provided integer range is valid.\n *\n * @param {number} val1 ?\n * @param {number} val2 ?\n * @param {boolean} checkbothExist ?\n * @param {boolean} isFraction ?\n * @returns {boolean} ?\n */\n NumberFormat.checkValueRange = function (val1, val2, checkbothExist, isFraction) {\n var decide = isFraction ? 'f' : 's';\n var dint = 0;\n var str1 = errorText['l' + decide];\n var str2 = errorText['m' + decide];\n if (!isUndefined(val1)) {\n this.checkRange(val1, str1, isFraction);\n dint++;\n }\n if (!isUndefined(val2)) {\n this.checkRange(val2, str2, isFraction);\n dint++;\n }\n if (dint === 2) {\n if (val1 < val2) {\n throwError(str2 + 'specified must be less than the' + str1);\n } else {\n return true;\n }\n } else if (checkbothExist && dint === 1) {\n throwError('Both' + str2 + 'and' + str2 + 'must be present');\n }\n return false;\n };\n /**\n * Check if the provided fraction range is valid\n *\n * @param {number} val ?\n * @param {string} text ?\n * @param {boolean} isFraction ?\n * @returns {void} ?\n */\n NumberFormat.checkRange = function (val, text, isFraction) {\n var range = isFraction ? [0, 20] : [1, 21];\n if (val < range[0] || val > range[1]) {\n throwError(text + 'value must be within the range' + range[0] + 'to' + range[1]);\n }\n };\n /**\n * Returns formatted numeric string for provided formatting options\n *\n * @param {number} value ?\n * @param {base.GenericFormatOptions} fOptions ?\n * @param {CommonOptions} dOptions ?\n * @param {NumberFormatOptions} [option] ?\n * @returns {string} ?\n */\n NumberFormat.intNumberFormatter = function (value, fOptions, dOptions, option) {\n var curData;\n if (isUndefined(fOptions.nData.type)) {\n return undefined;\n } else {\n if (value < 0) {\n value = value * -1;\n curData = fOptions.nData;\n } else if (value === 0) {\n curData = fOptions.zeroData || fOptions.pData;\n } else {\n curData = fOptions.pData;\n }\n var fValue = '';\n if (curData.isPercent) {\n value = value * 100;\n }\n if (curData.groupOne) {\n fValue = this.processSignificantDigits(value, curData.minimumSignificantDigits, curData.maximumSignificantDigits);\n } else {\n fValue = this.processFraction(value, curData.minimumFractionDigits, curData.maximumFractionDigits, option);\n if (curData.minimumIntegerDigits) {\n fValue = this.processMinimumIntegers(fValue, curData.minimumIntegerDigits);\n }\n if (dOptions.isCustomFormat && curData.minimumFractionDigits < curData.maximumFractionDigits && /\\d+\\.\\d+/.test(fValue)) {\n var temp = fValue.split('.');\n var decimalPart = temp[1];\n var len = decimalPart.length;\n for (var i = len - 1; i >= 0; i--) {\n if (decimalPart[parseInt(i.toString(), 10)] === '0' && i >= curData.minimumFractionDigits) {\n decimalPart = decimalPart.slice(0, i);\n } else {\n break;\n }\n }\n fValue = temp[0] + '.' + decimalPart;\n }\n }\n if (curData.type === 'scientific') {\n fValue = value.toExponential(curData.maximumFractionDigits);\n fValue = fValue.replace('e', dOptions.numberMapper.numberSymbols[mapper[4]]);\n }\n fValue = fValue.replace('.', dOptions.numberMapper.numberSymbols[mapper[3]]);\n fValue = curData.format === '#,###,,;(#,###,,)' ? this.customPivotFormat(parseInt(fValue, 10)) : fValue;\n if (curData.useGrouping) {\n fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper[3]] || '.', curData.groupData.secondary);\n }\n fValue = parser.convertValueParts(fValue, base.latnParseRegex, dOptions.numberMapper.mapper);\n if (curData.nlead === 'N/A') {\n return curData.nlead;\n } else {\n if (fValue === '0' && option && option.format === '0') {\n return fValue + curData.nend;\n }\n return curData.nlead + fValue + curData.nend;\n }\n }\n };\n /**\n * Returns significant digits processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @returns {string} ?\n */\n NumberFormat.processSignificantDigits = function (value, min, max) {\n var temp = value + '';\n var tn;\n var length = temp.length;\n if (length < min) {\n return value.toPrecision(min);\n } else {\n temp = value.toPrecision(max);\n tn = +temp;\n return tn + '';\n }\n };\n /**\n * Returns grouped numeric string\n *\n * @param {string} val ?\n * @param {number} level1 ?\n * @param {string} sep ?\n * @param {string} decimalSymbol ?\n * @param {number} level2 ?\n * @returns {string} ?\n */\n NumberFormat.groupNumbers = function (val, level1, sep, decimalSymbol, level2) {\n var flag = !isNullOrUndefined(level2) && level2 !== 0;\n var split = val.split(decimalSymbol);\n var prefix = split[0];\n var length = prefix.length;\n var str = '';\n while (length > level1) {\n str = prefix.slice(length - level1, length) + (str.length ? sep + str : '');\n length -= level1;\n if (flag) {\n level1 = level2;\n flag = false;\n }\n }\n split[0] = prefix.slice(0, length) + (str.length ? sep : '') + str;\n return split.join(decimalSymbol);\n };\n /**\n * Returns fraction processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @param {NumberFormatOptions} [option] ?\n * @returns {string} ?\n */\n NumberFormat.processFraction = function (value, min, max, option) {\n var temp = (value + '').split('.')[1];\n var length = temp ? temp.length : 0;\n if (min && length < min) {\n var ret = '';\n if (length === 0) {\n ret = value.toFixed(min);\n } else {\n ret += value;\n for (var j = 0; j < min - length; j++) {\n ret += '0';\n }\n return ret;\n }\n return value.toFixed(min);\n } else if (!isNullOrUndefined(max) && (length > max || max === 0)) {\n return value.toFixed(max);\n }\n var str = value + '';\n if (str[0] === '0' && option && option.format === '###.00') {\n str = str.slice(1);\n }\n return str;\n };\n /**\n * Returns integer processed numeric string\n *\n * @param {string} value ?\n * @param {number} min ?\n * @returns {string} ?\n */\n NumberFormat.processMinimumIntegers = function (value, min) {\n var temp = value.split('.');\n var lead = temp[0];\n var len = lead.length;\n if (len < min) {\n for (var i = 0; i < min - len; i++) {\n lead = '0' + lead;\n }\n temp[0] = lead;\n }\n return temp.join('.');\n };\n /**\n * Returns custom format for pivot table\n *\n * @param {number} value ?\n * @returns {string} ?\n */\n NumberFormat.customPivotFormat = function (value) {\n if (value >= 500000) {\n value /= 1000000;\n var _a = value.toString().split('.'),\n integer = _a[0],\n decimal = _a[1];\n return decimal && +decimal.substring(0, 1) >= 5 ? Math.ceil(value).toString() : Math.floor(value).toString();\n }\n return '';\n };\n return NumberFormat;\n}();\nexport { NumberFormat };\nsetNumberFormat(NumberFormat);","import { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nimport { isUndefined, throwError, getValue, isNullOrUndefined, isBlazor } from '../util';\nimport { datePartMatcher } from './date-formatter';\nimport { HijriParser } from '../hijri-parser';\nvar standalone = 'stand-alone';\nvar latnRegex = /^[0-9]*$/;\nvar timeSetter = {\n minute: 'setMinutes',\n hour: 'setHours',\n second: 'setSeconds',\n day: 'setDate',\n month: 'setMonth',\n milliseconds: 'setMilliseconds'\n};\nvar month = 'months';\n/**\n * Date Parser.\n *\n * @private\n */\nvar DateParser = /** @class */function () {\n function DateParser() {}\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which string date will be parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateParser.dateParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), false, isBlazor());\n var parseOptions = {};\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format || base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n var regexString = '';\n var hourOnly;\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n } else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n parseOptions = {\n isIslamic: base.islamicRegex.test(option.calendar),\n pattern: resPattern,\n evalposition: {},\n culture: culture\n };\n var patternMatch = resPattern.match(base.dateParseRegex) || [];\n var length_1 = patternMatch.length;\n var gmtCorrection = 0;\n var zCorrectTemp = 0;\n var isgmtTraversed = false;\n var nRegx = numOptions.numericRegex;\n var numMapper = isBlazor() ? dependable.parserObject.numbers : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n for (var i = 0; i < length_1; i++) {\n var str = patternMatch[parseInt(i.toString(), 10)];\n var len = str.length;\n var char = str[0] === 'K' ? 'h' : str[0];\n var isNumber = void 0;\n var canUpdate = void 0;\n var charKey = datePartMatcher[\"\" + char];\n var optional = len === 2 ? '' : '?';\n if (isgmtTraversed) {\n gmtCorrection = zCorrectTemp;\n isgmtTraversed = false;\n }\n switch (char) {\n case 'E':\n case 'c':\n {\n var weekData = void 0;\n if (isBlazor()) {\n weekData = getValue('days.' + base.monthIndex[\"\" + len], dependable.dateObject);\n } else {\n weekData = dependable.dateObject[\"\" + base.days][\"\" + standalone][base.monthIndex[\"\" + len]];\n }\n var weekObject = parser.reverseObject(weekData);\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\n }\n case 'M':\n case 'L':\n case 'd':\n case 'm':\n case 's':\n case 'h':\n case 'H':\n case 'f':\n canUpdate = true;\n if ((char === 'M' || char === 'L') && len > 2) {\n var monthData = void 0;\n if (isBlazor()) {\n monthData = getValue('months.' + base.monthIndex[\"\" + len], dependable.dateObject);\n } else {\n monthData = dependable.dateObject[\"\" + month][\"\" + standalone][base.monthIndex[\"\" + len]];\n }\n parseOptions[\"\" + charKey] = parser.reverseObject(monthData);\n regexString += '(' + Object.keys(parseOptions[\"\" + charKey]).join('|') + ')';\n } else if (char === 'f') {\n if (len > 3) {\n continue;\n }\n isNumber = true;\n regexString += '(' + nRegx + nRegx + '?' + nRegx + '?' + ')';\n } else {\n isNumber = true;\n regexString += '(' + nRegx + nRegx + optional + ')';\n }\n if (char === 'h') {\n parseOptions.hour12 = true;\n }\n break;\n case 'W':\n {\n var opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\n }\n case 'y':\n canUpdate = isNumber = true;\n if (len === 2) {\n regexString += '(' + nRegx + nRegx + ')';\n } else {\n regexString += '(' + nRegx + '{' + len + ',})';\n }\n break;\n case 'a':\n {\n canUpdate = true;\n var periodValur = isBlazor() ? getValue('dayPeriods', dependable.dateObject) : getValue('dayPeriods.format.wide', dependable.dateObject);\n parseOptions[\"\" + charKey] = parser.reverseObject(periodValur);\n regexString += '(' + Object.keys(parseOptions[\"\" + charKey]).join('|') + ')';\n break;\n }\n case 'G':\n {\n canUpdate = true;\n var eText = len <= 3 ? 'eraAbbr' : len === 4 ? 'eraNames' : 'eraNarrow';\n parseOptions[\"\" + charKey] = parser.reverseObject(isBlazor() ? getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n regexString += '(' + Object.keys(parseOptions[\"\" + charKey]).join('|') + '?)';\n break;\n }\n case 'z':\n {\n var tval = new Date().getTimezoneOffset();\n canUpdate = tval !== 0;\n parseOptions[\"\" + charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n var tzone = parseOptions[\"\" + charKey];\n hourOnly = len < 4;\n var hpattern = hourOnly ? '+H;-H' : tzone.hourFormat;\n hpattern = hpattern.replace(/:/g, numMapper.timeSeparator);\n regexString += '(' + this.parseTimeZoneRegx(hpattern, tzone, nRegx) + ')?';\n isgmtTraversed = true;\n zCorrectTemp = hourOnly ? 6 : 12;\n break;\n }\n case '\\'':\n {\n var iString = str.replace(/'/g, '');\n regexString += '(' + iString + ')?';\n break;\n }\n default:\n regexString += '([\\\\D])';\n break;\n }\n if (canUpdate) {\n parseOptions.evalposition[\"\" + charKey] = {\n isNumber: isNumber,\n pos: i + 1 + gmtCorrection,\n hourOnly: hourOnly\n };\n }\n if (i === length_1 - 1 && !isNullOrUndefined(regexString)) {\n var regExp = RegExp;\n parseOptions.parserRegex = new regExp('^' + regexString + '$', 'i');\n }\n }\n }\n return function (value) {\n var parsedDateParts = _this.internalDateParse(value, parseOptions, numOptions);\n if (isNullOrUndefined(parsedDateParts) || !Object.keys(parsedDateParts).length) {\n return null;\n }\n if (parseOptions.isIslamic) {\n var dobj = {};\n var tYear = parsedDateParts.year;\n var tDate = parsedDateParts.day;\n var tMonth = parsedDateParts.month;\n var ystrig = tYear ? tYear + '' : '';\n var is2DigitYear = ystrig.length === 2;\n if (!tYear || !tMonth || !tDate || is2DigitYear) {\n dobj = HijriParser.getHijriDate(new Date());\n }\n if (is2DigitYear) {\n tYear = parseInt((dobj.year + '').slice(0, 2) + ystrig, 10);\n }\n var dateObject = HijriParser.toGregorian(tYear || dobj.year, tMonth || dobj.month, tDate || dobj.date);\n parsedDateParts.year = dateObject.getFullYear();\n parsedDateParts.month = dateObject.getMonth() + 1;\n parsedDateParts.day = dateObject.getDate();\n }\n return _this.getDateObject(parsedDateParts);\n };\n };\n /**\n * Returns date object for provided date options\n *\n * @param {DateParts} options ?\n * @param {Date} value ?\n * @returns {Date} ?\n */\n DateParser.getDateObject = function (options, value) {\n var res = value || new Date();\n res.setMilliseconds(0);\n var tKeys = ['hour', 'minute', 'second', 'milliseconds', 'month', 'day'];\n var y = options.year;\n var desig = options.designator;\n var tzone = options.timeZone;\n if (!isUndefined(y)) {\n var len = (y + '').length;\n if (len <= 2) {\n var century = Math.floor(res.getFullYear() / 100) * 100;\n y += century;\n }\n res.setFullYear(y);\n }\n for (var _i = 0, tKeys_1 = tKeys; _i < tKeys_1.length; _i++) {\n var key = tKeys_1[_i];\n var tValue = options[\"\" + key];\n if (isUndefined(tValue) && key === 'day') {\n res.setDate(1);\n }\n if (!isUndefined(tValue)) {\n if (key === 'month') {\n tValue -= 1;\n if (tValue < 0 || tValue > 11) {\n return new Date('invalid');\n }\n var pDate = res.getDate();\n res.setDate(1);\n res[timeSetter[\"\" + key]](tValue);\n var lDate = new Date(res.getFullYear(), tValue + 1, 0).getDate();\n res.setDate(pDate < lDate ? pDate : lDate);\n } else {\n if (key === 'day') {\n var lastDay = new Date(res.getFullYear(), res.getMonth() + 1, 0).getDate();\n if (tValue < 1 || tValue > lastDay) {\n return null;\n }\n }\n res[\"\" + timeSetter[\"\" + key]](tValue);\n }\n }\n }\n if (!isUndefined(desig)) {\n var hour = res.getHours();\n if (desig === 'pm') {\n res.setHours(hour + (hour === 12 ? 0 : 12));\n } else if (hour === 12) {\n res.setHours(0);\n }\n }\n if (!isUndefined(tzone)) {\n var tzValue = tzone - res.getTimezoneOffset();\n if (tzValue !== 0) {\n res.setMinutes(res.getMinutes() + tzValue);\n }\n }\n return res;\n };\n /**\n * Returns date parsing options for provided value along with parse and numeric options\n *\n * @param {string} value ?\n * @param {ParseOptions} parseOptions ?\n * @param {NumericOptions} num ?\n * @returns {DateParts} ?\n */\n DateParser.internalDateParse = function (value, parseOptions, num) {\n var matches = value.match(parseOptions.parserRegex);\n var retOptions = {\n 'hour': 0,\n 'minute': 0,\n 'second': 0\n };\n if (isNullOrUndefined(matches)) {\n return null;\n } else {\n var props = Object.keys(parseOptions.evalposition);\n for (var _i = 0, props_1 = props; _i < props_1.length; _i++) {\n var prop = props_1[_i];\n var curObject = parseOptions.evalposition[\"\" + prop];\n var matchString = matches[curObject.pos];\n if (curObject.isNumber) {\n retOptions[\"\" + prop] = this.internalNumberParser(matchString, num);\n } else {\n if (prop === 'timeZone' && !isUndefined(matchString)) {\n var pos = curObject.pos;\n var val = void 0;\n var tmatch = matches[pos + 1];\n var flag = !isUndefined(tmatch);\n if (curObject.hourOnly) {\n val = this.getZoneValue(flag, tmatch, matches[pos + 4], num) * 60;\n } else {\n val = this.getZoneValue(flag, tmatch, matches[pos + 7], num) * 60;\n val += this.getZoneValue(flag, matches[pos + 4], matches[pos + 10], num);\n }\n if (!isNullOrUndefined(val)) {\n retOptions[\"\" + prop] = val;\n }\n } else {\n var cultureOptions = ['en-US', 'en-MH', 'en-MP'];\n matchString = prop === 'month' && !parseOptions.isIslamic && (parseOptions.culture === 'en' || parseOptions.culture === 'en-GB' || parseOptions.culture === 'en-US') ? matchString[0].toUpperCase() + matchString.substring(1).toLowerCase() : matchString;\n matchString = prop !== 'month' && prop === 'designator' && parseOptions.culture && parseOptions.culture.indexOf('en-') !== -1 && cultureOptions.indexOf(parseOptions.culture) === -1 ? matchString.toLowerCase() : matchString;\n retOptions[\"\" + prop] = parseOptions[\"\" + prop][\"\" + matchString];\n }\n }\n }\n if (parseOptions.hour12) {\n retOptions.hour12 = true;\n }\n }\n return retOptions;\n };\n /**\n * Returns parsed number for provided Numeric string and Numeric Options\n *\n * @param {string} value ?\n * @param {NumericOptions} option ?\n * @returns {number} ?\n */\n DateParser.internalNumberParser = function (value, option) {\n value = parser.convertValueParts(value, option.numberParseRegex, option.numericPair);\n if (latnRegex.test(value)) {\n return +value;\n }\n return null;\n };\n /**\n * Returns parsed time zone RegExp for provided hour format and time zone\n *\n * @param {string} hourFormat ?\n * @param {base.TimeZoneOptions} tZone ?\n * @param {string} nRegex ?\n * @returns {string} ?\n */\n DateParser.parseTimeZoneRegx = function (hourFormat, tZone, nRegex) {\n var pattern = tZone.gmtFormat;\n var ret;\n var cRegex = '(' + nRegex + ')' + '(' + nRegex + ')';\n ret = hourFormat.replace('+', '\\\\+');\n if (hourFormat.indexOf('HH') !== -1) {\n ret = ret.replace(/HH|mm/g, '(' + cRegex + ')');\n } else {\n ret = ret.replace(/H|m/g, '(' + cRegex + '?)');\n }\n var splitStr = ret.split(';').map(function (str) {\n return pattern.replace('{0}', str);\n });\n ret = splitStr.join('|') + '|' + tZone.gmtZeroFormat;\n return ret;\n };\n /**\n * Returns zone based value.\n *\n * @param {boolean} flag ?\n * @param {string} val1 ?\n * @param {string} val2 ?\n * @param {NumericOptions} num ?\n * @returns {number} ?\n */\n DateParser.getZoneValue = function (flag, val1, val2, num) {\n var ival = flag ? val1 : val2;\n if (!ival) {\n return 0;\n }\n var value = this.internalNumberParser(ival, num);\n if (flag) {\n return -value;\n }\n return value;\n };\n return DateParser;\n}();\nexport { DateParser };","import { extend, isNullOrUndefined, isBlazor, getValue } from '../util';\nimport { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nvar regExp = RegExp;\nvar parseRegex = new regExp('^([^0-9]*)' + '(([0-9,]*[0-9]+)(.[0-9]+)?)' + '([Ee][+-]?[0-9]+)?([^0-9]*)$');\nvar groupRegex = /,/g;\nvar keys = ['minusSign', 'infinity'];\n/**\n * Module for Number Parser.\n *\n * @private\n */\nvar NumberParser = /** @class */function () {\n function NumberParser() {}\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberParser.numberParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, '', true);\n var parseOptions = {\n custom: true\n };\n if (base.formatRegex.test(option.format) || !option.format) {\n extend(parseOptions, base.getProperNumericSkeleton(option.format || 'N'));\n parseOptions.custom = false;\n if (!parseOptions.fractionDigits) {\n if (option.maximumFractionDigits) {\n parseOptions.maximumFractionDigits = option.maximumFractionDigits;\n }\n }\n } else {\n extend(parseOptions, base.customFormat(option.format, null, null));\n }\n var numbers = getValue('numbers', dependable.parserObject);\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = parser.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n parseOptions.infinity = numOptions.symbolNumberSystem[keys[1]];\n var symbolpattern;\n if (!isBlazor()) {\n symbolpattern = base.getSymbolPattern(parseOptions.type, numOptions.numberSystem, dependable.numericObject, parseOptions.isAccount);\n if (symbolpattern) {\n symbolpattern = symbolpattern.replace(/\\u00A4/g, base.defaultCurrency);\n var split = symbolpattern.split(';');\n parseOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, '');\n parseOptions.pData = base.getFormatData(split[0], true, '');\n }\n } else {\n parseOptions.nData = extend({}, {}, getValue(parseOptions.type + 'nData', numbers));\n parseOptions.pData = extend({}, {}, getValue(parseOptions.type + 'pData', numbers));\n if (parseOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([parseOptions.pData, parseOptions.nData], getValue('currencySymbol', numbers), option.currency);\n }\n }\n return function (value) {\n return _this.getParsedNumber(value, parseOptions, numOptions);\n };\n };\n /**\n * Returns parsed number for the provided formatting options\n *\n * @param {string} value ?\n * @param {NumericParts} options ?\n * @param {NumericOptions} numOptions ?\n * @returns {number} ?\n */\n NumberParser.getParsedNumber = function (value, options, numOptions) {\n var isNegative;\n var isPercent;\n var tempValue;\n var lead;\n var end;\n var ret;\n if (value.indexOf(options.infinity) !== -1) {\n return Infinity;\n } else {\n value = parser.convertValueParts(value, options.symbolRegex, numOptions.symbolMatch);\n value = parser.convertValueParts(value, numOptions.numberParseRegex, numOptions.numericPair);\n value = value.indexOf('-') !== -1 ? value.replace('-.', '-0.') : value;\n if (value.indexOf('.') === 0) {\n value = '0' + value;\n }\n var matches = value.match(parseRegex);\n if (isNullOrUndefined(matches)) {\n return NaN;\n }\n lead = matches[1];\n tempValue = matches[2];\n var exponent = matches[5];\n end = matches[6];\n isNegative = options.custom ? lead === options.nData.nlead && end === options.nData.nend : lead.indexOf(options.nData.nlead) !== -1 && end.indexOf(options.nData.nend) !== -1;\n isPercent = isNegative ? options.nData.isPercent : options.pData.isPercent;\n tempValue = tempValue.replace(groupRegex, '');\n if (exponent) {\n tempValue += exponent;\n }\n ret = +tempValue;\n if (options.type === 'percent' || isPercent) {\n ret = ret / 100;\n }\n if (options.custom || options.fractionDigits) {\n ret = parseFloat(ret.toFixed(options.custom ? isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits : options.fractionDigits));\n }\n if (options.maximumFractionDigits) {\n ret = this.convertMaxFracDigits(tempValue, options, ret, isNegative);\n }\n if (isNegative) {\n ret *= -1;\n }\n return ret;\n }\n };\n NumberParser.convertMaxFracDigits = function (value, options, ret, isNegative) {\n var decimalSplitValue = value.split('.');\n if (decimalSplitValue[1] && decimalSplitValue[1].length > options.maximumFractionDigits) {\n ret = +ret.toFixed(options.custom ? isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits : options.maximumFractionDigits);\n }\n return ret;\n };\n return NumberParser;\n}();\nexport { NumberParser };","import { DateFormat } from './intl/date-formatter';\nimport { NumberFormat } from './intl/number-formatter';\nimport { DateParser } from './intl/date-parser';\nimport { NumberParser } from './intl/number-parser';\nimport { IntlBase, defaultCurrencyCode, setDefaultCurrencyCode } from './intl/intl-base';\nimport { extend, getValue, isBlazor } from './util';\nimport { Observer } from './observer';\n/**\n * Specifies the observer used for external change detection.\n */\nexport var onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nexport var rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n *\n * @private\n */\nexport var cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n *\n * @private\n */\nexport var defaultCulture = 'en-US';\nvar mapper = ['numericObject', 'dateObject'];\n/**\n * Internationalization class provides support to parse and format the number and date object to the desired format.\n * ```typescript\n * // To set the culture globally\n * setCulture('en-GB');\n *\n * // To set currency code globally\n * setCurrencyCode('EUR');\n *\n * //Load cldr data\n * loadCldr(gregorainData);\n * loadCldr(timeZoneData);\n * loadCldr(numbersData);\n * loadCldr(numberSystemData);\n *\n * // To use formatter in component side\n * let Intl:Internationalization = new Internationalization();\n *\n * // Date formatting\n * let dateFormatter: Function = Intl.getDateFormat({skeleton:'long',type:'dateTime'});\n * dateFormatter(new Date('11/2/2016'));\n * dateFormatter(new Date('25/2/2030'));\n * Intl.formatDate(new Date(),{skeleton:'E'});\n *\n * //Number formatting\n * let numberFormatter: Function = Intl.getNumberFormat({skeleton:'C5'})\n * numberFormatter(24563334);\n * Intl.formatNumber(123123,{skeleton:'p2'});\n *\n * // Date parser\n * let dateParser: Function = Intl.getDateParser({skeleton:'short',type:'time'});\n * dateParser('10:30 PM');\n * Intl.parseDate('10',{skeleton:'H'});\n * ```\n */\nvar Internationalization = /** @class */function () {\n function Internationalization(cultureName) {\n if (cultureName) {\n this.culture = cultureName;\n }\n }\n /**\n * Returns the format function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateFormat = function (options) {\n return DateFormat.dateFormat(this.getCulture(), options || {\n type: 'date',\n skeleton: 'short'\n }, cldrData);\n };\n /**\n * Returns the format function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberFormat = function (options) {\n if (options && !options.currency) {\n options.currency = defaultCurrencyCode;\n }\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberFormat.numberFormatter(this.getCulture(), options || {}, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateParser = function (options) {\n return DateParser.dateParser(this.getCulture(), options || {\n skeleton: 'short',\n type: 'date'\n }, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberParser = function (options) {\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberParser.numberParser(this.getCulture(), options || {\n format: 'N'\n }, cldrData);\n };\n /**\n * Returns the formatted string based on format options.\n *\n * @param {number} value - Specifies the number to format.\n * @param {NumberFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatNumber = function (value, option) {\n return this.getNumberFormat(option)(value);\n };\n /**\n * Returns the formatted date string based on format options.\n *\n * @param {Date} value - Specifies the number to format.\n * @param {DateFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatDate = function (value, option) {\n return this.getDateFormat(option)(value);\n };\n /**\n * Returns the date object for given date string and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {DateFormatOptions} option - Specifies the parse options in which the date string will be parsed.\n * @returns {Date} ?\n */\n Internationalization.prototype.parseDate = function (value, option) {\n return this.getDateParser(option)(value);\n };\n /**\n * Returns the number object from the given string value and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {NumberFormatOptions} option - Specifies the parse options in which the string number will be parsed.\n * @returns {number} ?\n */\n Internationalization.prototype.parseNumber = function (value, option) {\n return this.getNumberParser(option)(value);\n };\n /**\n * Returns Native Date Time Pattern\n *\n * @param {DateFormatOptions} option - Specifies the parse options for resultant date time pattern.\n * @param {boolean} isExcelFormat - Specifies format value to be converted to excel pattern.\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getDatePattern = function (option, isExcelFormat) {\n return IntlBase.getActualDateTimeFormat(this.getCulture(), option, cldrData, isExcelFormat);\n };\n /**\n * Returns Native Number Pattern\n *\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @param {boolean} isExcel ?\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getNumberPattern = function (option, isExcel) {\n return IntlBase.getActualNumberFormat(this.getCulture(), option, cldrData, isExcel);\n };\n /**\n * Returns the First Day of the Week\n *\n * @returns {number} ?\n */\n Internationalization.prototype.getFirstDayOfWeek = function () {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n };\n /**\n * Returns the culture\n *\n * @returns {string} ?\n */\n Internationalization.prototype.getCulture = function () {\n return this.culture || defaultCulture;\n };\n return Internationalization;\n}();\nexport { Internationalization };\n/**\n * Set the default culture to all EJ2 components\n *\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCulture(cultureName) {\n defaultCulture = cultureName;\n onIntlChange.notify('notifyExternalChange', {\n 'locale': defaultCulture\n });\n}\n/**\n * Set the default currency code to all EJ2 components\n *\n * @param {string} currencyCode Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCurrencyCode(currencyCode) {\n setDefaultCurrencyCode(currencyCode);\n onIntlChange.notify('notifyExternalChange', {\n 'currencyCode': defaultCurrencyCode\n });\n}\n/**\n * Load the CLDR data into context\n *\n * @param {Object[]} data Specifies the CLDR data's to be used for formatting and parser.\n * @returns {void} ?\n */\nexport function loadCldr() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var obj = data_1[_a];\n extend(cldrData, obj, {}, true);\n }\n}\n/**\n * To enable or disable RTL functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable rtl option.\n * @returns {void} ?\n */\nexport function enableRtl(status) {\n if (status === void 0) {\n status = true;\n }\n rightToLeft = status;\n onIntlChange.notify('notifyExternalChange', {\n enableRtl: rightToLeft\n });\n}\n/**\n * To get the numeric CLDR object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} type ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getNumericObject(locale, type) {\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n var dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper[1]];\n var numSystem = getValue('defaultNumberingSystem', numObject);\n var symbPattern = isBlazor() ? getValue('numberSymbols', numObject) : getValue('symbols-numberSystem-' + numSystem, numObject);\n var pattern = IntlBase.getSymbolPattern(type || 'decimal', numSystem, numObject, false);\n return extend(symbPattern, IntlBase.getFormatData(pattern, true, '', true), {\n 'dateSeparator': IntlBase.getDateSeparator(dateObject)\n });\n}\n/**\n * To get the numeric CLDR number base object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} currency - Specifies the currency for which numericObject to be returned.\n * @returns {string} ?\n * @ignore\n * @private\n */\nexport function getNumberDependable(locale, currency) {\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n *\n * @param {string} mode ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getDefaultDateObject(mode) {\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}","import { createElement } from './dom';\nimport { getValue, containerObject, setValue, isNullOrUndefined } from './util';\nexport var componentList = ['grid', 'pivotview', 'treegrid', 'spreadsheet', 'rangeNavigator', 'DocumentEditor', 'listbox', 'inplaceeditor', 'PdfViewer', 'richtexteditor', 'DashboardLayout', 'chart', 'stockChart', 'circulargauge', 'diagram', 'heatmap', 'lineargauge', 'maps', 'slider', 'smithchart', 'barcode', 'sparkline', 'treemap', 'bulletChart', 'kanban', 'daterangepicker', 'schedule', 'gantt', 'signature', 'query-builder', 'drop-down-tree', 'carousel', 'filemanager', 'uploader', 'accordion', 'tab', 'treeview'];\nvar bypassKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46, 105, 115, 76, 105, 99, 86, 97, 108, 105, 100, 97, 116, 101, 100];\nvar accountURL;\n/**\n * License validation module\n *\n * @private\n */\nvar LicenseValidator = /** @class */function () {\n function LicenseValidator(key) {\n this.isValidated = false;\n this.isLicensed = true;\n this.version = '29';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats|essentialstudio/i;\n this.errors = {\n noLicense: '<span>This application was built using a trial version of Syncfusion<sup>®</sup> Essential Studio<sup>®</sup>.' + ' To remove the license validation message permanently, a valid license key must be included.</span>',\n trailExpired: '<span>This application was built using a trial version of Syncfusion<sup>®</sup> Essential Studio<sup>®</sup>.' + ' To remove the license validation message permanently, a valid license key must be included.</span>',\n versionMismatched: '<span>The included Syncfusion<sup>®</sup> license key is invalid.</span>',\n platformMismatched: '<span>The included Syncfusion<sup>®</sup> license key is invalid.</span>',\n invalidKey: '<span>The included Syncfusion<sup>®</sup> license key is invalid.</span>'\n };\n this.minVersion = null;\n /**\n * To manage licensing operation.\n */\n this.manager = function () {\n var licKey = null;\n /**\n * Sets the license key.\n *\n * @param {string} key - Specifies the license key.\n * @returns {void}\n */\n function set(key) {\n licKey = key;\n }\n /**\n * Gets the license key.\n *\n * @returns {string} -Gets the license key.\n */\n function get() {\n return licKey;\n }\n return {\n setKey: set,\n getKey: get\n };\n }();\n /**\n * To manage npx licensing operation.\n */\n this.npxManager = function () {\n var npxLicKey = 'npxKeyReplace';\n /**\n * Gets the license key.\n *\n * @returns {string} - Gets the license key.\n */\n function get() {\n return npxLicKey;\n }\n return {\n getKey: get\n };\n }();\n this.manager.setKey(key);\n }\n /**\n * To validate the provided license key.\n *\n * @returns {boolean} ?\n */\n LicenseValidator.prototype.validate = function () {\n var contentKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46, 108, 105, 99, 101, 110, 115, 101, 67, 111, 110, 116, 101, 110, 116];\n var URLKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46, 99, 108, 97, 105, 109, 65, 99, 99, 111, 117, 110, 116, 85, 82, 76];\n if (!this.isValidated && containerObject && !getValue(convertToChar(bypassKey), containerObject) && !getValue('Blazor', containerObject)) {\n var validateMsg = void 0;\n var validateURL = void 0;\n if (this.manager && this.manager.getKey() || this.npxManager && this.npxManager.getKey() !== 'npxKeyReplace') {\n var result = this.getInfoFromKey();\n if (result && result.length) {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n if (!this.platform.test(res.platform) || res.invalidPlatform) {\n validateMsg = this.errors.platformMismatched;\n } else {\n if (res.minVersion >= res.lastValue && res.minVersion !== res.lastValue || res.lastValue < parseInt(this.version, 10)) {\n validateMsg = this.errors.versionMismatched;\n validateMsg = validateMsg.replace('##LicenseVersion', res.version);\n validateMsg = validateMsg.replace('##Requireversion', this.version + '.x');\n } else {\n if (res.lastValue == null || isNaN(res.lastValue)) {\n validateMsg = this.errors.versionMismatched;\n validateMsg = validateMsg.replace('##LicenseVersion', res.version);\n validateMsg = validateMsg.replace('##Requireversion', this.version + '.x');\n }\n }\n if (res.expiryDate) {\n var expDate = new Date(res.expiryDate);\n var currDate = new Date();\n if (expDate !== currDate && expDate < currDate) {\n validateMsg = this.errors.trailExpired;\n } else {\n break;\n }\n }\n }\n }\n } else {\n validateMsg = this.errors.invalidKey;\n }\n } else {\n var licenseContent = getValue(convertToChar(contentKey), containerObject);\n validateURL = getValue(convertToChar(URLKey), containerObject);\n if (licenseContent && licenseContent !== '') {\n validateMsg = licenseContent;\n } else {\n validateMsg = this.errors.noLicense;\n }\n }\n if (validateMsg && typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n accountURL = validateURL && validateURL !== '' ? validateURL : 'https://www.syncfusion.com/account/claim-license-key?pl=SmF2YVNjcmlwdA==&vs=Mjk=&utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information';\n var errorDiv = createElement('div', {\n innerHTML: \"<img src='data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzE5OV80KSI+CjxwYXRoIGQ9Ik0xMiAyMUMxNi45NzA2IDIxIDIxIDE2Ljk3MDYgMjEgMTJDMjEgNy4wMjk0NCAxNi45NzA2IDMgMTIgM0M3LjAyOTQ0IDMgMyA3LjAyOTQ0IDMgMTJDMyAxNi45NzA2IDcuMDI5NDQgMjEgMTIgMjFaIiBzdHJva2U9IiM3MzczNzMiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0xMS4yNSAxMS4yNUgxMlYxNi41SDEyLjc1IiBmaWxsPSIjNjE2MDYzIi8+CjxwYXRoIGQ9Ik0xMS4yNSAxMS4yNUgxMlYxNi41SDEyLjc1IiBzdHJva2U9IiM3MzczNzMiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0xMS44MTI1IDlDMTIuNDMzOCA5IDEyLjkzNzUgOC40OTYzMiAxMi45Mzc1IDcuODc1QzEyLjkzNzUgNy4yNTM2OCAxMi40MzM4IDYuNzUgMTEuODEyNSA2Ljc1QzExLjE5MTIgNi43NSAxMC42ODc1IDcuMjUzNjggMTAuNjg3NSA3Ljg3NUMxMC42ODc1IDguNDk2MzIgMTEuMTkxMiA5IDExLjgxMjUgOVoiIGZpbGw9IiM3MzczNzMiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xOTlfNCI+CjxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K' style=\\\"top: 6px;\\n position: absolute;\\n left: 16px;\\n width: 24px;\\n height: 24px;\\\"/>\" + validateMsg + ' ' + '<a style=\"text-decoration: none;color: #0D6EFD;font-weight: 500;\" href=' + accountURL + '>Claim your free account</a>'\n });\n errorDiv.setAttribute('style', \"position: fixed;\\n top: 10px;\\n left: 10px;\\n right: 10px;\\n font-size: 14px;\\n background: #EEF2FF;\\n color: #222222;\\n z-index: 999999999;\\n text-align: left;\\n border: 1px solid #EEEEEE;\\n padding: 10px 11px 10px 50px;\\n border-radius: 8px;\\n font-family: Helvetica Neue, Helvetica, Arial;\");\n document.body.appendChild(errorDiv);\n this.isLicensed = false;\n }\n this.isValidated = true;\n setValue(convertToChar(bypassKey), this.isValidated, containerObject);\n }\n return this.isLicensed;\n };\n LicenseValidator.prototype.getDecryptedData = function (key) {\n try {\n return atob(key);\n } catch (error) {\n return '';\n }\n };\n /**\n * Get license information from key.\n *\n * @returns {IValidator} - Get license information from key.\n */\n LicenseValidator.prototype.getInfoFromKey = function () {\n try {\n var licKey = '';\n var pkey = [5439488, 7929856, 5111808, 6488064, 4587520, 7667712, 5439488, 6881280, 5177344, 7208960, 4194304, 4456448, 6619136, 7733248, 5242880, 7077888, 6356992, 7602176, 4587520, 7274496, 7471104, 7143424];\n var decryptedStr = [];\n var resultArray = [];\n var invalidPlatform = false;\n var isNpxKey = false;\n if (this.manager.getKey()) {\n licKey = this.manager.getKey();\n } else {\n isNpxKey = true;\n licKey = this.npxManager.getKey().split('npxKeyReplace')[1];\n }\n var licKeySplit = licKey.split(';');\n for (var _i = 0, licKeySplit_1 = licKeySplit; _i < licKeySplit_1.length; _i++) {\n var lKey = licKeySplit_1[_i];\n var decodeStr = this.getDecryptedData(lKey);\n if (!decodeStr) {\n continue;\n }\n var k = 0;\n var buffr = '';\n if (!isNpxKey) {\n for (var i = 0; i < decodeStr.length; i++, k++) {\n if (k === pkey.length) {\n k = 0;\n }\n var c = decodeStr.charCodeAt(i);\n buffr += String.fromCharCode(c ^ pkey[parseInt(k.toString(), 10)] >> 16);\n }\n } else {\n var charKey = decodeStr[decodeStr.length - 1];\n var decryptedKey = [];\n for (var i = 0; i < decodeStr.length; i++) {\n decryptedKey[parseInt(i.toString(), 10)] = decodeStr[parseInt(i.toString(), 10)].charCodeAt(0) - charKey.charCodeAt(0);\n }\n for (var i = 0; i < decryptedKey.length; i++) {\n buffr += String.fromCharCode(decryptedKey[parseInt(i.toString(), 10)]);\n }\n }\n if (this.platform.test(buffr)) {\n decryptedStr = buffr.split(';');\n invalidPlatform = false;\n // checked the length to verify the key in proper strucutre\n if (decryptedStr.length > 3) {\n var minVersion = parseInt(decryptedStr[1].split('.')[0], 10);\n var lastValue = parseInt(decryptedStr[4], 10);\n resultArray.push({\n platform: decryptedStr[0],\n version: decryptedStr[1],\n expiryDate: decryptedStr[2],\n lastValue: lastValue,\n minVersion: minVersion\n });\n }\n } else if (buffr && buffr.split(';').length > 3) {\n invalidPlatform = true;\n }\n }\n if (invalidPlatform && !resultArray.length) {\n return [{\n invalidPlatform: invalidPlatform\n }];\n } else {\n return resultArray.length ? resultArray : null;\n }\n } catch (error) {\n return null;\n }\n };\n return LicenseValidator;\n}();\nvar licenseValidator = new LicenseValidator();\n/**\n * Converts the given number to characters.\n *\n * @param {number} cArr - Specifies the license key as number.\n * @returns {string} ?\n */\nfunction convertToChar(cArr) {\n var ret = '';\n for (var _i = 0, cArr_1 = cArr; _i < cArr_1.length; _i++) {\n var arr = cArr_1[_i];\n ret += String.fromCharCode(arr);\n }\n return ret;\n}\n/**\n * To set license key.\n *\n * @param {string} key - license key\n * @returns {void}\n */\nexport function registerLicense(key) {\n licenseValidator = new LicenseValidator(key);\n}\nexport var validateLicense = function (key) {\n if (key) {\n registerLicense(key);\n }\n return licenseValidator.validate();\n};\nexport var getVersion = function () {\n return licenseValidator.version;\n};\n// Method for create overlay over the sample\nexport var createLicenseOverlay = function () {\n var bannerTemplate = \"\\n <div style=\\\"\\n position: fixed;\\n width: 100%;\\n height: 100%;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background-color: rgba(0, 0, 0, 0.5);\\n z-index: 99999;\\n \\\">\\n <div style=\\\"\\n background: #FFFFFF;\\n height: 455px;\\n width: 840px;\\n font-family: Helvetica Neue, Helvetica, Arial;\\n color: #000000;\\n box-shadow: 0px 4.8px 14.4px rgb(0 0 0 / 18%), 0px 25.6px 57.6px rgb(0 0 0 / 22%);\\n display: block;\\n margin: 8% auto;\\n border-radius: 20px;\\n \\\">\\n <div style=\\\"\\n position: absolute;\\nwidth: 838px;\\nheight: 62px;\\nbackground-color: #F9F9F9;\\nborder: 1px solid #EEEEEE;\\nborder-top-left-radius: 20px;\\nborder-top-right-radius: 20px;\\n\\\">\\n <img src=\\\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjMyIiB2aWV3Qm94PSIwIDAgMTQ2IDMyIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNNDAuNTk2NSAxNS4wMDc4SDMyLjQyNUMzMS41NTU3IDE1LjAwNzggMzAuOTAzNyAxNS4xODEyIDMwLjUxMjUgMTUuNDg0NkMzMC4xMjEzIDE1LjgzMTQgMjkuOTA0IDE2LjMwODIgMjkuOTA0IDE3LjA0NTFDMjkuOTA0IDE3LjYwODYgMzAuMDc3OCAxOC4wNDIxIDMwLjQyNTYgMTguMzAyMkMzMC43NzMzIDE4LjYwNTYgMzEuMjk0OSAxOC43MzU2IDMxLjk5MDMgMTguNzM1NkgzNi4zMzY5QzM4LjExODkgMTguNzM1NiAzOS40MjI5IDE5LjA4MjQgNDAuMTYxOCAxOS43MzI2QzQwLjk0NDIgMjAuNDI2MiA0MS4yOTE5IDIxLjU1MzIgNDEuMjkxOSAyMy4xMTM3QzQxLjI5MTkgMjQuNzE3NiA0MC44NTcyIDI1Ljg4OCAzOS45ODc5IDI2LjY2ODJDMzkuMTE4NiAyNy40MDUxIDM3LjcyNzcgMjcuNzk1MyAzNS44NTg3IDI3Ljc5NTNIMjcuMDc4N1YyNS4wMjFIMzUuMzM3MkMzNi4yOTM0IDI1LjAyMSAzNi45NDU0IDI0Ljg5MSAzNy4zMzY2IDI0LjYzMDlDMzcuNzI3NyAyNC4zNzA4IDM3LjkwMTYgMjMuODk0IDM3LjkwMTYgMjMuMjg3MUMzNy45MDE2IDIyLjYzNjkgMzcuNzI3NyAyMi4xNjAxIDM3LjM4IDIxLjlDMzcuMDMyMyAyMS42Mzk5IDM2LjQyMzggMjEuNDY2NSAzNS41NTQ1IDIxLjQ2NjVIMzEuNjQyNkMyOS44NjA1IDIxLjQ2NjUgMjguNTEzMSAyMS4xMTk4IDI3LjY4NzMgMjAuMzgyOEMyNi44NjE0IDE5LjY0NTkgMjYuNDI2OCAxOC41MTg5IDI2LjQyNjggMTcuMDAxN0MyNi40MjY4IDE1LjM1NDUgMjYuODYxNCAxNC4xNDA4IDI3LjczMDcgMTMuMzYwNkMyOC42IDEyLjU4MDMgMjkuOTkwOSAxMi4yMzM1IDMxLjkwMzQgMTIuMjMzNUg0MC41OTY1VjE1LjAwNzhaIiBmaWxsPSIjMzU0M0E4Ii8+CjxwYXRoIGQ9Ik00OC4wNzI3IDI1LjI4MTFINTAuNTA2OFYxNi4zOTQ5SDUzLjU0OTNWMjcuNTM1MkM1My41NDkzIDI5LjA1MjQgNTMuMjAxNiAzMC4xNzk0IDUyLjUwNjIgMzAuOTE2M0M1MS44MTA3IDMxLjY1MzIgNTAuNzI0MSAzMiA0OS4yNDYzIDMySDQzLjMzNVYyOS42NTkySDQ4LjcyNDdDNDkuMjg5NyAyOS42NTkyIDQ5Ljc2NzkgMjkuNTI5MiA1MC4wNzIxIDI5LjIyNThDNTAuMzc2NCAyOC45NjU3IDUwLjU1MDIgMjguNTMyMiA1MC41NTAyIDI4LjAxMlYyNy44Mzg2SDQ3Ljg5ODlDNDYuMjAzNyAyNy44Mzg2IDQ0Ljk0MzIgMjcuNDkxOSA0NC4yNDc4IDI2Ljg0MTZDNDMuNTA4OSAyNi4xNDgxIDQzLjE2MTEgMjUuMDY0NCA0My4xNjExIDIzLjQ2MDVWMTYuMzk0OUg0Ni4xNjAyVjIzLjIwMDVDNDYuMTYwMiAyNC4wNjc0IDQ2LjI5MDYgMjQuNjMwOSA0Ni41NTE0IDI0Ljg5MUM0Ni43MjUzIDI1LjE1MTEgNDcuMjQ2OSAyNS4yODExIDQ4LjA3MjcgMjUuMjgxMVoiIGZpbGw9IiMzNTQzQTgiLz4KPHBhdGggZD0iTTU1Ljg5NjUgMTYuMzk0OUg2MS41OTA0QzYzLjMyOTEgMTYuMzk0OSA2NC41NDYxIDE2LjY5ODMgNjUuMjg1IDE3LjM0ODVDNjYuMDIzOSAxNy45OTg4IDY2LjM3MTYgMTkuMDgyNCA2Ni4zNzE2IDIwLjU1NjNWMjcuNzk1M0g2My4zMjkxVjIwLjk0NjRDNjMuMzI5MSAyMC4wNzk0IDYzLjE5ODcgMTkuNTE1OSA2Mi45Mzc5IDE5LjI5OTJDNjIuNjc3MSAxOS4wMzkxIDYyLjE1NTUgMTguOTA5MSA2MS4zMjk3IDE4LjkwOTFINTguODk1NlYyNy44Mzg2SDU1Ljg1M1YxNi4zOTQ5SDU1Ljg5NjVaIiBmaWxsPSIjMzU0M0E4Ii8+CjxwYXRoIGQ9Ik03NC45MzQyIDI1LjM2NzhINzguMTUwNlYyNy43OTUySDc0LjAyMTRDNzIuOTc4MiAyNy43OTUyIDcyLjEwODkgMjcuNjY1MiA3MS40NTcgMjcuNDkxOEM3MC44MDUgMjcuMjc1IDcwLjE5NjUgMjYuOTI4MyA2OS43MTgzIDI2LjQ1MTRDNjkuMTk2OCAyNS45MzEzIDY4Ljc2MjEgMjUuMjgxMSA2OC40NTc4IDI0LjU0NDJDNjguMTUzNiAyMy44MDcyIDY4LjAyMzIgMjIuOTgzNiA2OC4wMjMyIDIyLjE2QzY4LjAyMzIgMjEuMjkzMSA2OC4xNTM2IDIwLjQ2OTUgNjguNDU3OCAxOS42ODkyQzY4Ljc2MjEgMTguOTA5IDY5LjE1MzMgMTguMzAyMSA2OS43MTgzIDE3Ljc4MTlDNzAuMjM5OSAxNy4zMDUxIDcwLjgwNSAxNi45NTgzIDcxLjUwMDQgMTYuNzQxNkM3Mi4xOTU5IDE2LjUyNDkgNzMuMDIxNyAxNi40MzgyIDc0LjA2NDkgMTYuNDM4Mkg3OC4xOTQxVjE4LjkwOUg3NC45MzQyQzczLjQ5OTggMTguOTA5IDcyLjU0MzYgMTkuMTY5MSA3MS45Nzg1IDE5LjY0NTlDNzEuNDU2OSAyMC4xMjI3IDcxLjE1MjcgMjAuOTg5NyA3MS4xNTI3IDIyLjIwMzRDNzEuMTUyNyAyMi44OTY5IDcxLjI4MzEgMjMuNDYwNSA3MS41MDA0IDIzLjkzNzNDNzEuNzE3NyAyNC40MTQxIDcyLjA2NTUgMjQuNzYwOSA3Mi41MDAxIDI1LjA2NDNDNzIuNzE3NCAyNS4xOTQ0IDcyLjk3ODIgMjUuMjgxMSA3My4yODI1IDI1LjM2NzhDNzMuNjMwMiAyNS4zMjQ0IDc0LjE1MTggMjUuMzY3OCA3NC45MzQyIDI1LjM2NzhaIiBmaWxsPSIjMzU0M0E4Ii8+CjxwYXRoIGQ9Ik04MC44NDU2IDE4LjY0ODlINzguNjcyNFYxNi4zNTE1SDgwLjg0NTZWMTUuMTgxMUM4MC44NDU2IDE0LjAxMDggODEuMDYzIDEzLjIzMDUgODEuNDk3NiAxMi44NDA0QzgxLjkzMjMgMTIuNDUwMyA4Mi43NTgxIDEyLjIzMzUgODMuOTc1MSAxMi4yMzM1SDg2Ljg0MzhWMTQuNDAwOUg4NS40MDk1Qzg0Ljg4NzkgMTQuNDAwOSA4NC41NDAyIDE0LjQ4NzYgODQuMzIyOSAxNC42NjFDODQuMTA1NSAxNC44MzQ0IDgzLjk3NTEgMTUuMDk0NSA4My45NzUxIDE1LjQ0MTJWMTYuMzUxNUg4Ni44NDM4VjE4LjY0ODlIODMuOTc1MVYyNy43OTUzSDgwLjg0NTZWMTguNjQ4OVoiIGZpbGw9IiMzNTQzQTgiLz4KPHBhdGggZD0iTTk4LjQwNTYgMjcuNzk1M0g5Mi43MTE2QzkxLjAxNjUgMjcuNzk1MyA4OS44NDI5IDI3LjQ0ODUgODkuMDYwNSAyNi43OTgzQzg4LjMyMTYgMjYuMTQ4MSA4Ny45MzA0IDI1LjA2NDQgODcuOTMwNCAyMy41OTA2VjE2LjM5NDlIOTAuOTI5NVYyMy40MTcyQzkwLjkyOTUgMjQuMTk3NCA5MS4wNTk5IDI0LjY3NDMgOTEuMzIwNyAyNC45MzQ0QzkxLjU4MTUgMjUuMTk0NCA5Mi4xMDMxIDI1LjMyNDUgOTIuOTI4OSAyNS4zMjQ1SDk1LjM2M1YxNi4zOTQ5SDk4LjQwNTZWMjcuNzk1M1oiIGZpbGw9IiMzNTQzQTgiLz4KPHBhdGggZD0iTTEwMC42MjIgMjUuNDExMkgxMDcuMDExQzEwNy41NzcgMjUuNDExMiAxMDguMDExIDI1LjMyNDUgMTA4LjI3MiAyNS4xNTExQzEwOC41MzMgMjQuOTc3NyAxMDguNjYzIDI0LjY3NDMgMTA4LjY2MyAyNC4zMjc1QzEwOC42NjMgMjMuOTM3NCAxMDguNTMzIDIzLjY3NzMgMTA4LjI3MiAyMy40NjA1QzEwOC4wMTEgMjMuMjg3MSAxMDcuNTc3IDIzLjIwMDUgMTA3LjA1NSAyMy4yMDA1SDEwNC40NDdDMTAyLjg4MiAyMy4yMDA1IDEwMS44MzkgMjIuOTgzNyAxMDEuMzE4IDIyLjUwNjlDMTAwLjc1MiAyMi4wMzAxIDEwMC40OTIgMjEuMjA2NSAxMDAuNDkyIDE5Ljk5MjdDMTAwLjQ5MiAxOC43NzkgMTAwLjgzOSAxNy44Njg3IDEwMS40OTEgMTcuMjYxOEMxMDIuMTQzIDE2LjY5ODMgMTAzLjE4NyAxNi4zOTQ5IDEwNC41MzQgMTYuMzk0OUgxMTEuMDU0VjE4Ljc3OUgxMDUuNzA4QzEwNC44MzggMTguNzc5IDEwNC4yNzMgMTguODY1NyAxMDQuMDEyIDE4Ljk5NTdDMTAzLjc1MiAxOS4xNjkxIDEwMy42MjEgMTkuNDI5MiAxMDMuNjIxIDE5LjgxOTRDMTAzLjYyMSAyMC4xNjYxIDEwMy43NTIgMjAuNDI2MiAxMDMuOTY5IDIwLjU5OTZDMTA0LjE4NiAyMC43NzMgMTA0LjU3NyAyMC44NTk3IDEwNS4wNTYgMjAuODU5N0gxMDcuNzk0QzEwOS4wNTQgMjAuODU5NyAxMTAuMDExIDIxLjE2MzEgMTEwLjY2MyAyMS43MjY2QzExMS4zMTUgMjIuMjkwMiAxMTEuNjYyIDIzLjE1NzEgMTExLjY2MiAyNC4yNDA4QzExMS42NjIgMjUuMjgxMSAxMTEuMzU4IDI2LjE0ODEgMTEwLjc5MyAyNi43OTgzQzExMC4yMjggMjcuNDQ4NSAxMDkuNDQ2IDI3Ljc5NTMgMTA4LjUzMyAyNy43OTUzSDEwMC43MDlWMjUuNDExMkgxMDAuNjIyWiIgZmlsbD0iIzM1NDNBOCIvPgo8cGF0aCBkPSJNMTE2LjU3NCAxNS4wOTQ0SDExMy40MDFWMTIuMjc2OUgxMTYuNTc0VjE1LjA5NDRaTTExNi41NzQgMjcuNzk1M0gxMTMuNDAxVjE2LjM5NDlIMTE2LjU3NFYyNy43OTUzWiIgZmlsbD0iIzM1NDNBOCIvPgo8cGF0aCBkPSJNMTMwLjMwOSAyMi4xMTY3QzEzMC4zMDkgMjMuODkzOSAxMjkuNzQ0IDI1LjMyNDQgMTI4LjY1NyAyNi40MDgxQzEyNy41NzEgMjcuNDkxOCAxMjYuMDkzIDI4LjAxMiAxMjQuMjI0IDI4LjAxMkMxMjIuMzU1IDI4LjAxMiAxMjAuODc3IDI3LjQ5MTggMTE5Ljc5IDI2LjQwODFDMTE4LjcwNCAyNS4zMjQ0IDExOC4xMzkgMjMuODkzOSAxMTguMTM5IDIyLjExNjdDMTE4LjEzOSAyMC4zMzk0IDExOC43MDQgMTguOTA5IDExOS43OSAxNy44MjUzQzEyMC44NzcgMTYuNzQxNiAxMjIuMzk4IDE2LjIyMTQgMTI0LjIyNCAxNi4yMjE0QzEyNi4wNDkgMTYuMjIxNCAxMjcuNTI3IDE2Ljc0MTYgMTI4LjY1NyAxNy44MjUzQzEyOS43NDQgMTguODY1NiAxMzAuMzA5IDIwLjI5NjEgMTMwLjMwOSAyMi4xMTY3Wk0xMjEuMjY4IDIyLjExNjdDMTIxLjI2OCAyMy4yMDA0IDEyMS41MjkgMjQuMDY3MyAxMjIuMDUxIDI0LjY3NDJDMTIyLjU3MiAyNS4yODExIDEyMy4yNjggMjUuNTg0NSAxMjQuMTggMjUuNTg0NUMxMjUuMDkzIDI1LjU4NDUgMTI1Ljc4OSAyNS4yODExIDEyNi4zMSAyNC42NzQyQzEyNi44MzIgMjQuMDY3MyAxMjcuMDkzIDIzLjIwMDQgMTI3LjA5MyAyMi4xMTY3QzEyNy4wOTMgMjEuMDMzIDEyNi44MzIgMjAuMTY2MSAxMjYuMzEgMTkuNjAyNUMxMjUuNzg5IDE4Ljk5NTcgMTI1LjA5MyAxOC42OTIyIDEyNC4xMzcgMTguNjkyMkMxMjMuMjI0IDE4LjY5MjIgMTIyLjUyOSAxOC45OTU3IDEyMi4wMDcgMTkuNjAyNUMxMjEuNTI5IDIwLjE2NjEgMTIxLjI2OCAyMS4wMzMgMTIxLjI2OCAyMi4xMTY3WiIgZmlsbD0iIzM1NDNBOCIvPgo8cGF0aCBkPSJNMTMxLjc4NyAxNi4zOTQ5SDEzNy40ODFDMTM5LjIxOSAxNi4zOTQ5IDE0MC40MzYgMTYuNjk4MyAxNDEuMTc1IDE3LjM0ODVDMTQxLjkxNCAxNy45OTg4IDE0Mi4yNjIgMTkuMDgyNCAxNDIuMjYyIDIwLjU1NjNWMjcuNzk1M0gxMzkuMjE5VjIwLjk0NjRDMTM5LjIxOSAyMC4wNzk0IDEzOS4wODkgMTkuNTE1OSAxMzguODI4IDE5LjI5OTJDMTM4LjU2NyAxOS4wMzkxIDEzOC4wNDYgMTguOTA5MSAxMzcuMjIgMTguOTA5MUgxMzQuNzg2VjI3LjgzODZIMTMxLjc0M1YxNi4zOTQ5SDEzMS43ODdaIiBmaWxsPSIjMzU0M0E4Ii8+CjxwYXRoIGQ9Ik03LjEyODMxIDMuNzM3NDNIMFYxMC44NDY0SDcuMTI4MzFWMy43Mzc0M1oiIGZpbGw9IiMzNTQzQTgiLz4KPHBhdGggZD0iTTIzLjI1MTMgLTIuMTU3MjVlLTA1TDE4LjU1MTMgNS41MTY4NUwyNC4wODMxIDEwLjIwNDFMMjguNzgzMSA0LjY4NzI1TDIzLjI1MTMgLTIuMTU3MjVlLTA1WiIgZmlsbD0iI0ZGODYwMCIvPgo8cGF0aCBkPSJNMTUuNjA0MSAzLjczNzQzSDguNDc1ODNWMTAuODQ2NEgxNS42MDQxVjMuNzM3NDNaIiBmaWxsPSIjMzU0M0E4Ii8+CjxwYXRoIGQ9Ik03LjEyODMxIDEyLjE5MDJIMFYxOS4yOTkySDcuMTI4MzFWMTIuMTkwMloiIGZpbGw9IiMzNTQzQTgiLz4KPHBhdGggZD0iTTE1LjYwNDEgMTIuMTkwMkg4LjQ3NTgzVjE5LjI5OTJIMTUuNjA0MVYxMi4xOTAyWiIgZmlsbD0iIzM1NDNBOCIvPgo8cGF0aCBkPSJNMjQuMDc5NyAxMi4xOTAySDE2Ljk1MTRWMTkuMjk5MkgyNC4wNzk3VjEyLjE5MDJaIiBmaWxsPSIjRkY4NjAwIi8+CjxwYXRoIGQ9Ik03LjEyODMxIDIwLjY4NjNIMFYyNy43OTUzSDcuMTI4MzFWMjAuNjg2M1oiIGZpbGw9IiMzNTQzQTgiLz4KPHBhdGggZD0iTTE1LjYwNDEgMjAuNjg2M0g4LjQ3NTgzVjI3Ljc5NTNIMTUuNjA0MVYyMC42ODYzWiIgZmlsbD0iIzM1NDNBOCIvPgo8cGF0aCBkPSJNMjQuMTIzMiAyMC42ODYzSDE2Ljk5NDlWMjcuNzk1M0gyNC4xMjMyVjIwLjY4NjNaIiBmaWxsPSIjMzU0M0E4Ii8+CjxwYXRoIGQ9Ik0xNDYgMTUuODMxM0MxNDYgMTYuODcxNyAxNDUuMTc0IDE3LjY5NTMgMTQ0LjEzMSAxNy42OTUzQzE0My4wODggMTcuNjk1MyAxNDIuMjYyIDE2Ljg3MTcgMTQyLjI2MiAxNS44MzEzQzE0Mi4yNjIgMTQuNzkxIDE0My4wODggMTQuMDEwNyAxNDQuMTMxIDE0LjAxMDdDMTQ1LjEzMSAxMy45Njc0IDE0NiAxNC43OTEgMTQ2IDE1LjgzMTNaTTE0Mi45NTcgMTQuNzkxQzE0Mi42OTcgMTUuMDUxMSAxNDIuNTY2IDE1LjQ0MTIgMTQyLjU2NiAxNS44MzEzQzE0Mi41NjYgMTYuNjk4MyAxNDMuMjYyIDE3LjM5MTggMTQ0LjEzMSAxNy4zOTE4QzE0NSAxNy4zOTE4IDE0NS42OTYgMTYuNjk4MyAxNDUuNjk2IDE1LjgzMTNDMTQ1LjY5NiAxNS4wMDc3IDE0NSAxNC4yNzA4IDE0NC4xNzQgMTQuMjcwOEMxNDMuNjUzIDE0LjI3MDggMTQzLjI2MiAxNC40NDQyIDE0Mi45NTcgMTQuNzkxWk0xNDQuODcgMTYuOTE1SDE0NC40NzlMMTQzLjkxNCAxNi4wOTE0VjE2LjkxNUgxNDMuNjA5VjE0Ljc0NzZIMTQzLjk1N0MxNDQuNDM1IDE0Ljc0NzYgMTQ0LjY1MyAxNC45NjQ0IDE0NC42NTMgMTUuMzU0NUMxNDQuNjUzIDE1LjY1NzkgMTQ0LjQ3OSAxNS44NzQ3IDE0NC4xNzQgMTUuOTYxNEwxNDQuODcgMTYuOTE1Wk0xNDQuMDQ0IDE1LjY1NzlDMTQ0LjI2MSAxNS42NTc5IDE0NC4zOTIgMTUuNTI3OSAxNDQuMzkyIDE1LjM1NDVDMTQ0LjM5MiAxNS4xMzc4IDE0NC4yNjEgMTUuMDUxMSAxNDQuMDAxIDE1LjA1MTFIMTQzLjkxNFYxNS42NTc5SDE0NC4wNDRaIiBmaWxsPSIjMzU0M0E4Ii8+Cjwvc3ZnPgo=\\\" style=\\\"\\n text-align: left;\\n width: 146px;\\n position: absolute;\\n top: 14px;\\n left: 31px;\\n\\\">\\n </div>\\n <div style=\\\"\\n position: relative;\\n top: 80px;\\n left: 32px;\\n font-size: 20px;\\n text-align: left;\\n font-weight: 700;\\n letter-spacing: 0.02em;\\n font-style: normal;\\n line-height: 125%;\\n \\\">Claim your FREE account and get a key in less than a minute</div>\\n <ul style=\\\"\\n font-size: 15px;\\n font-weight: 400;\\n color: #333333;\\n letter-spacing: 0.01em;\\n position: relative;\\n left: 32px;\\n top: 88px;\\n line-height: 180%;\\n \\\">\\n <li><span>Access to a 30-day free trial of any of our products.</span></li>\\n <li><span>Access to 24x5 support by developers via the <a href=\\\"https://support.syncfusion.com/create?utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information\\\" style=\\\"text-decoration: none;\\n color: #0D6EFD;\\n font-weight: 500;\\\">support tickets</a>, <a href=\\\"https://www.syncfusion.com/forums?utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information\\\" style=\\\"text-decoration: none;\\n color: #0D6EFD;\\n font-weight: 500;\\\">forum</a>, <a href=\\\"https://www.syncfusion.com/feedback?utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information\\n \\\" style=\\\"text-decoration: none;\\n color: #0D6EFD;\\n font-weight: 500;\\\">feature & feedback page</a> and chat.</span></li>\\n <li><span>200+ <a href=\\\"https://www.syncfusion.com/succinctly-free-ebooks?utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information\\\" style=\\\"text-decoration: none;\\n color: #0D6EFD;\\n font-weight: 500;\\\">ebooks </a>on the latest technologies, industry trends, and research topics.</span>\\n </li>\\n <li><span>Largest collection of over 7500 flat and wireframe icons for free with Syncfusion<sup>\\u00AE</sup> <a href=\\\"https://www.syncfusion.com/downloads/metrostudio?utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information\\n \\\" style=\\\"text-decoration: none;\\n color: #0D6EFD;\\n font-weight: 500;\\\">Metro Studio.</a></span></li>\\n <li><span>Free and unlimited access to Syncfusion<sup>\\u00AE</sup> technical <a href=\\\"https://www.syncfusion.com/blogs/?utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information\\n \\\" style=\\\"text-decoration: none;\\n color: #0D6EFD;\\n font-weight: 500;\\\">blogs</a> and <a href=\\\"https://www.syncfusion.com/resources/techportal/whitepapers?utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information\\\" style=\\\"text-decoration: none;\\n color: #0D6EFD;\\n font-weight: 500;\\\">whitepapers.</a></span></li>\\n </ul>\\n <div style=\\\"\\n font-size: 18px;\\n font-weight: 700;\\n position: relative;\\n line-height: 125%;\\n letter-spacing: 0.02em;\\n top: 90px;\\n left: 32px;\\n \\\">Syncfusion is trusted by 29,000+ businesses worldwide</div>\\n <img src=\\\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjIyMzAiIGhlaWdodD0iMTU2Ij4KPHBhdGggZD0iTTAgMCBDMTAuMjAxNTE3OTEgOC44MjE1MTgwNSAxNi4yMjU4NjAxNyAxOS4zODQ1MTIyMiAxNy4yODEyNSAzMi45NzI2NTYyNSBDMTcuNDE3OTUwMTYgNDUuOTc2MjU4NTUgMTMuMTkyNTE4MDQgNTcuNjM2ODk1NzMgNC4yNDYwOTM3NSA2Ny4xMzI4MTI1IEMtNS44MzQzNzk4NyA3Ni42NDQzNzA1IC0xNi43MjM2MTUyMyA4MC40NzU4MTc3IC0zMC40MTAxNTYyNSA4MC4yMjI2NTYyNSBDLTQzLjEyNjA0NDAyIDc5LjI2MTgzMzU2IC01NC4yMDMwOTQ1MyA3My40MDM0NzMyNCAtNjIuNzE4NzUgNjMuOTcyNjU2MjUgQy03MS4xNDgwNjkyNSA1MS44OTg2NTk5MiAtNzMuMTk0NzM3MSA0MC4zOTM3NzYxNCAtNzEuNzE4NzUgMjUuOTcyNjU2MjUgQy02OS4wOTkxNjQzNyAxNC41NTg3NDc0NCAtNjIuMzc0NTczNzggNC42NDI1NDI1NiAtNTIuNzE4NzUgLTIuMDI3MzQzNzUgQy0zNS45MDE4NDE2MSAtMTEuOTUyMDc2NTcgLTE1Ljg5MjUyMDU5IC0xMi4xNTE1ODYzNiAwIDAgWiAiIGZpbGw9IiMwODY4NDIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzODguNzE4NzUsNDIuMDI3MzQzNzUpIi8+CjxwYXRoIGQ9Ik0wIDAgQzcuMzY3MjM5MTYgNC4wNDIzMjQxMSAxMS4xMDI1Mzc1MyAxMS4zOTA0MDEzMyAxNCAxOSBDMTQuMzg5NjU4MjYgMjAuOTg5NzkzMzQgMTQuNzQwMDUyODkgMjIuOTg5MTQ0ODEgMTUgMjUgQzE1LjY2IDI1IDE2LjMyIDI1IDE3IDI1IEMxNy4xMDA1NDY4NyAyNC4xNDQwNjI1IDE3LjIwMTA5Mzc1IDIzLjI4ODEyNSAxNy4zMDQ2ODc1IDIyLjQwNjI1IEMxOC45MTc0Mjc1NSAxNC41MDU2MzU4IDIzLjYwODM5NDI3IDUuNzcxNDMyNzMgMzAuMTc5Njg3NSAwLjg5NDUzMTI1IEMzMy43MzEzMzY1NCAtMC44NTA4MDcwMSAzNi4wNzI1NTM3NiAtMC42MjM0MDQxNyA0MCAwIEM0Ny43ODg2NDkxMyAzLjU4Mjc3ODYgNTEuMzQ3MDc2MTEgMTAuOTI1MDE3NDYgNTQuMzUyNzgzMiAxOC41ODg4NjcxOSBDNjAuNjYxMjYyNjMgMzUuNzMzMjUxOTkgNjMuMjM3ODY0ODggNTQuNDE0MDMxNTkgNjMuMDYyNSA3Mi42MjUgQzYzLjA1Nzk4ODI4IDczLjUzMzc4OTA2IDYzLjA1MzQ3NjU2IDc0LjQ0MjU3ODEyIDYzLjA0ODgyODEyIDc1LjM3ODkwNjI1IEM2My4wMzcyMTIwMiA3Ny41ODU5NjY5NSA2My4wMTkyODQ1MyA3OS43OTI5OTI5OSA2MyA4MiBDNTkuMDQgODIgNTUuMDggODIgNTEgODIgQzUwLjkzMDA2ODM2IDgwLjkwMzQ5MTIxIDUwLjg2MDEzNjcyIDc5LjgwNjk4MjQyIDUwLjc4ODA4NTk0IDc4LjY3NzI0NjA5IEM1MC4zMzA4MzIxNSA0MS45ODYzMDU3MyA1MC4zMzA4MzIxNSA0MS45ODYzMDU3MyAzOSA4IEMzOC4wMSA3LjY3IDM3LjAyIDcuMzQgMzYgNyBDMjUuMTQyMTkxNjggMTYuMjQ0MTIxMzEgMjQuODI2NDcwMzkgMzguNDA3NTg2NzUgMjMuNjgzNTkzNzUgNTEuNjcyMzYzMjggQzIzLjA0MTM0NzcxIDU5Ljc3NjY1NDY5IDIyLjUwMDE0OTM2IDY3Ljg4NTgxMjE3IDIyIDc2IEMxOC4wNCA3NiAxNC4wOCA3NiAxMCA3NiBDOS44OTUxMDI1NCA3NC40NzU4NDQ3MyA5Ljg5NTEwMjU0IDc0LjQ3NTg0NDczIDkuNzg4MDg1OTQgNzIuOTIwODk4NDQgQzkuMjg4Njk2MTIgMzkuNjQwNjkzMTMgOS4yODg2OTYxMiAzOS42NDA2OTMxMyAtMSA5IEMtMy4wMzU2NDA0IDcuNzQxNDM2NTkgLTMuMDM1NjQwNCA3Ljc0MTQzNjU5IC01IDcgQy0xNS44NDgzODY5NyAxNi40OTIzMzg2IC0xNi4wNTg3MjYyNSA0MC4yNTk3NTY0MSAtMTcgNTQgQy0xNy40NzQyMTEwMiA2My4zMjgyOTc4NCAtMTcuNzQ3NjYxNTkgNzIuNjYzNDc4NzQgLTE4IDgyIEMtMjIuMjkgODIgLTI2LjU4IDgyIC0zMSA4MiBDLTMxLjg5MjU5MjA1IDU1LjgxNzI5OTc3IC0yOS45NTA2NDQ2MiAyMi44Mzc1NTI0MSAtMTIgMiBDLTguNDczMzg5NDMgLTAuNjQ0OTU3OTMgLTQuMjE5NTgzOTggLTAuOTU4OTk2MzYgMCAwIFogIiBmaWxsPSIjRkZDQzAwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg4MjgsMzcpIi8+CjxwYXRoIGQ9Ik0wIDAgQzUuODg3MjkwNzMgMS40NDk4NTUxOCA5LjE2NjM4NTEzIDEuMjgxNTYyNTYgMTQuNzUgLTAuODM5ODQzNzUgQzIwLjM1Nzc0OTYyIC0yLjU0NjE0OTE0IDI1LjU0MDY3MjkyIC0xLjM4Mjk1NTEgMzAuNjI1IDEuMjUgQzMyLjkzNzM1MDYzIDMuMjczMzA2OCAzNC4xMDM0MzU0MiA0LjU3NzExOTE4IDM1LjEyNSA3LjQzNzUgQzM0LjM0MTI1IDguMTggMzMuNTU3NSA4LjkyMjUgMzIuNzUgOS42ODc1IEMyOS4xMTkwMTcwMyAxMy40OTEzODY5MiAyOC4yMzgzODk0NyAxNS4wMzE0NzA1OCAyNy44MTI1IDIwLjMxMjUgQzI3Ljk2MDg4MjA0IDI1LjAxNzA4MzQ0IDI5LjE5MzUzOTM2IDI4LjU3NDg0NDU4IDMyLjY2MDE1NjI1IDMxLjkxNzk2ODc1IEMzNC4xMDgzOTEwMSAzMy4xNDAyMzc4IDM1LjYxMjk3ODE1IDM0LjI5NTA4MzQ5IDM3LjEyNSAzNS40Mzc1IEMzNi4wNzAxOTM1MiA0Mi40Njk1NDMyIDMyLjAzNjA5MDQ5IDQ3Ljk3MzE5OTEgMjcuNzUgNTMuNSBDMjQuMjczODU5MzcgNTYuMDY1NzIyODUgMjEuNDA5Njc2NTkgNTYuNjI0MTU5MTggMTcuMTI1IDU2LjQzNzUgQzE1LjExMjc3OTUzIDU1LjgwODY4MTEgMTMuMTEyMjMyNjggNTUuMTQxMzExNTcgMTEuMTI1IDU0LjQzNzUgQzcuMTMyMjAwNjEgNTQuMDEwODUwMDcgMy44Njk5NzIwNCA1NC4xNzkwNDAzMSAwLjA2MjUgNTUuNSBDLTMuNzQ1OTgyNzYgNTYuNzE1NDczMjIgLTYuMDIwMDcxMDYgNTYuNDcwMDcwMjUgLTkuODc1IDU1LjQzNzUgQy0xNy44OTY4MjA0OCA1MC4zNjI0NzA3MiAtMjMuMjI0ODkxNjcgNDAuMjQ1NjM5MjYgLTI1LjQzMzU5Mzc1IDMxLjEzMjgxMjUgQy0yNi42OTE4Nzk2IDIzLjQ0OTQ3NDE1IC0yNy4zMTA4Njc4MiAxNC4yMDI1NjkzMiAtMjIuODc1IDcuNDM3NSBDLTE5LjE4NzExNTEzIDMuMTY0NjQwMjkgLTE0Ljk1ODc1MDk1IC0wLjQ2NDczMTYxIC05LjI2NTYyNSAtMS41NzQyMTg3NSBDLTYuMDIyMDAxNTYgLTEuNTU4MzE4NjQgLTMuMTQ1MDkxMDYgLTAuNzc5NDY1MjEgMCAwIFogIiBmaWxsPSIjMDAwMDAwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMjIuODc1LDU1LjU2MjUpIi8+CjxwYXRoIGQ9Ik0wIDAgQzYuOTk4NjY1NzYgNi41NjU2MTQ1OCAxMy4yMzU0MjQ3IDEzLjIxNDc1OTU1IDE0LjE3OTY4NzUgMjMuMTg3NSBDMTMuOTYxMTk2MzQgMjguMjczOTc0MSAxMi4yNTY2NDk1NCAzMi4wNjY5ODMyNiA5LjAzNTE1NjI1IDM1Ljk3NjU2MjUgQzAuNTMzMzg4MDQgNDMuNTgzNDA3NzQgLTguOTc3NTY4MjUgNDUuMDAzODkwNjcgLTE5Ljg1NTQ2ODc1IDQ0Ljg5ODQzNzUgQy0yMS4xODA5NDcyNyA0NC44OTE2Njk5MiAtMjEuMTgwOTQ3MjcgNDQuODkxNjY5OTIgLTIyLjUzMzIwMzEyIDQ0Ljg4NDc2NTYyIEMtMjQuNzAzMTU0MzQgNDQuODczMDM2MTYgLTI2Ljg3MzA3MDQ3IDQ0Ljg1NTEwMjQ1IC0yOS4wNDI5Njg3NSA0NC44MzU5Mzc1IEMtMjkuMzcyOTY4NzUgNDUuNDk1OTM3NSAtMjkuNzAyOTY4NzUgNDYuMTU1OTM3NSAtMzAuMDQyOTY4NzUgNDYuODM1OTM3NSBDLTMyLjQxNzk2ODc1IDQ2Ljk2MDkzNzUgLTMyLjQxNzk2ODc1IDQ2Ljk2MDkzNzUgLTM1LjA0Mjk2ODc1IDQ2LjgzNTkzNzUgQy0zNy4wNDI5Njg3NSA0NC44MzU5Mzc1IC0zNy4wNDI5Njg3NSA0NC44MzU5Mzc1IC0zNy40MTQwNjI1IDQyLjM1NTQ2ODc1IEMtMzcuNzgyMzI5OTcgMzkuNzMzNjQ1MzEgLTM3Ljc4MjMyOTk3IDM5LjczMzY0NTMxIC0zOS44MjgxMjUgMzguNTM1MTU2MjUgQy00MC41Nzk2NDg0NCAzOC4yMDEyODkwNiAtNDEuMzMxMTcxODcgMzcuODY3NDIxODcgLTQyLjEwNTQ2ODc1IDM3LjUyMzQzNzUgQy00Ny4zNTI0NjU4MyAzNC44NTM3NjUzOCAtNTEuNDU1NzUyNzEgMzEuNTMwNDMxOTUgLTU1LjA0Mjk2ODc1IDI2LjgzNTkzNzUgQy01Ni4wNDI5Njg3NSAyMy4zMzU5Mzc1IC01Ni4wNDI5Njg3NSAyMy4zMzU5Mzc1IC01Ni4wNDI5Njg3NSAyMC44MzU5Mzc1IEMtNTEuMzM2NTk3OTUgMTYuMTI5NTY2NyAtNDUuMzAzOTE4MTcgMTQuNTc0NTc2MzMgLTM5LjA0Mjk2ODc1IDEyLjgzNTkzNzUgQy0zOC4zODI5Njg3NSAxMi44MzU5Mzc1IC0zNy43MjI5Njg3NSAxMi44MzU5Mzc1IC0zNy4wNDI5Njg3NSAxMi44MzU5Mzc1IEMtMzYuOTIxNzk2ODggMTEuOTA5MTAxNTYgLTM2LjgwMDYyNSAxMC45ODIyNjU2MiAtMzYuNjc1NzgxMjUgMTAuMDI3MzQzNzUgQy0zNi41MDgyMDMxMyA4LjgyOTgwNDY5IC0zNi4zNDA2MjUgNy42MzIyNjU2MyAtMzYuMTY3OTY4NzUgNi4zOTg0Mzc1IEMtMzYuMDA1NTQ2ODggNS4yMDM0NzY1NiAtMzUuODQzMTI1IDQuMDA4NTE1NjMgLTM1LjY3NTc4MTI1IDIuNzc3MzQzNzUgQy0zNS40NjY5NTMxMyAxLjgwNjY3OTY5IC0zNS4yNTgxMjUgMC44MzYwMTU2MyAtMzUuMDQyOTY4NzUgLTAuMTY0MDYyNSBDLTM0LjM4Mjk2ODc1IC0wLjQ5NDA2MjUgLTMzLjcyMjk2ODc1IC0wLjgyNDA2MjUgLTMzLjA0Mjk2ODc1IC0xLjE2NDA2MjUgQy0zMC4wNzc2OTExNyAxLjI4MTI3NiAtMjkuNDg3MTQ2NjEgMy4yODE5NjA5NyAtMjguODU1NDY4NzUgNy4wMjM0Mzc1IEMtMjguNjk2OTE0MDYgNy45MjQ0OTIxOSAtMjguNTM4MzU5MzggOC44MjU1NDY4OCAtMjguMzc1IDkuNzUzOTA2MjUgQy0yOC4yNjU0Mjk2OSAxMC40NDA5NzY1NiAtMjguMTU1ODU5MzcgMTEuMTI4MDQ2ODcgLTI4LjA0Mjk2ODc1IDExLjgzNTkzNzUgQy0yNy4xMjUxNTYyNSAxMS45MzM5MDYyNSAtMjYuMjA3MzQzNzUgMTIuMDMxODc1IC0yNS4yNjE3MTg3NSAxMi4xMzI4MTI1IEMtMTguMDQ1MDgyNTkgMTMuMDEyMTUwNTIgLTEyLjIzNzYzMDI1IDEzLjk0OTA5MTA3IC02LjA0Mjk2ODc1IDE3LjgzNTkzNzUgQy00LjY2MTcxODU3IDIwLjU5ODQzNzg2IC00Ljg1MjE3NTY5IDIyLjc4MzI0ODQ5IC01LjA0Mjk2ODc1IDI1LjgzNTkzNzUgQy03LjA0Mjk2ODc1IDI3LjgzNTkzNzUgLTcuMDQyOTY4NzUgMjcuODM1OTM3NSAtMTAuNjY3OTY4NzUgMjcuOTYwOTM3NSBDLTExLjc4MTcxODc1IDI3LjkxOTY4NzUgLTEyLjg5NTQ2ODc1IDI3Ljg3ODQzNzUgLTE0LjA0Mjk2ODc1IDI3LjgzNTkzNzUgQy0xMy4zODI5Njg3NSAyNi41MTU5Mzc1IC0xMi43MjI5Njg3NSAyNS4xOTU5Mzc1IC0xMi4wNDI5Njg3NSAyMy44MzU5Mzc1IEMtMTUuNzk1MjI3MTUgMjIuMTc5MDk2MTMgLTE5LjMwNjQ5OTM2IDIxLjMzMzg1NTg3IC0yMy4zNTU0Njg3NSAyMC43MTA5Mzc1IEMtMjUuMjMyMzQzNzUgMjAuNDIyMTg3NSAtMjcuMTA5MjE4NzUgMjAuMTMzNDM3NSAtMjkuMDQyOTY4NzUgMTkuODM1OTM3NSBDLTI4LjU0Nzk2ODc1IDI4LjI1MDkzNzUgLTI4LjU0Nzk2ODc1IDI4LjI1MDkzNzUgLTI4LjA0Mjk2ODc1IDM2LjgzNTkzNzUgQy0xMi4wNjE3Nzk5MSAzNy4zODI2NDE3MiAtMTIuMDYxNzc5OTEgMzcuMzgyNjQxNzIgMi4wODIwMzEyNSAzMC42NDg0Mzc1IEM0Ljc2MDcwNTQxIDI2LjYzMDQyNjI2IDQuNzc1MjY3NDcgMjMuNTI1MDYwNDMgMy45NTcwMzEyNSAxOC44MzU5Mzc1IEMxLjAxMTM1NTYzIDguNTI2MDcyODEgLTguODY3NTEyMiAyLjM4NDg3MDU4IC0xNy43MzQzNzUgLTIuNTYyNSBDLTMxLjY3NjMzMzk0IC05LjMxMTI2NDA3IC00NS42NDMxNzQyMiAtMTEuNTY4NzI4NjMgLTYxLjA0Mjk2ODc1IC0xMS4xNjQwNjI1IEMtNjEuMDQyOTY4NzUgLTEwLjE3NDA2MjUgLTYxLjA0Mjk2ODc1IC05LjE4NDA2MjUgLTYxLjA0Mjk2ODc1IC04LjE2NDA2MjUgQy02My4wMjI5Njg3NSAtOC4xNjQwNjI1IC02NS4wMDI5Njg3NSAtOC4xNjQwNjI1IC02Ny4wNDI5Njg3NSAtOC4xNjQwNjI1IEMtNjcuNzkyOTY4NzUgLTkuOTE0MDYyNSAtNjcuNzkyOTY4NzUgLTkuOTE0MDYyNSAtNjguMDQyOTY4NzUgLTEyLjE2NDA2MjUgQy02NS45Njg1NDMxOCAtMTUuNTIyNjU2MjggLTYzLjQ3ODY1NTM5IC0xNi41NTA0NzkzNSAtNTkuNzkyOTY4NzUgLTE3LjQ3NjU2MjUgQy0zOS4xODA0NTMyNSAtMjAuODM2MzExNzIgLTE1Ljg1MjQ2NDU2IC0xMy4zOTczMDI3NCAwIDAgWiBNLTQ3LjM1NTQ2ODc1IDIwLjgzNTkzNzUgQy00OC4yMzg0NzY1NiAyMS4wMjE1NjI1IC00OS4xMjE0ODQzOCAyMS4yMDcxODc1IC01MC4wMzEyNSAyMS4zOTg0Mzc1IEMtNTAuNjk1MTE3MTkgMjEuNTQyODEyNSAtNTEuMzU4OTg0MzcgMjEuNjg3MTg3NSAtNTIuMDQyOTY4NzUgMjEuODM1OTM3NSBDLTUyLjUwMDI0MDQ0IDI1LjcyNDc4Mzk5IC01Mi41MDAyNDA0NCAyNS43MjQ3ODM5OSAtNTAuNTAzOTA2MjUgMjcuNDY4NzUgQy00Ni40NjI2MDg1IDMwLjM1OTcxNTgxIC00Mi45NDE1MjEwNyAzMi42MTEyOTk0MiAtMzguMDQyOTY4NzUgMzMuODM1OTM3NSBDLTM2LjcwMzk1MDgzIDMyLjcyNDY3MDkxIC0zNi43MDM5NTA4MyAzMi43MjQ2NzA5MSAtMzYuOTQ1MzEyNSAyOS44OTQ1MzEyNSBDLTM2Ljk1NjkxNDA2IDI4LjY5OTU3MDMxIC0zNi45Njg1MTU2MyAyNy41MDQ2MDkzOCAtMzYuOTgwNDY4NzUgMjYuMjczNDM3NSBDLTM2Ljk4OTQ5MjE5IDI1LjA3NTg5ODQ0IC0zNi45OTg1MTU2MiAyMy44NzgzNTkzOCAtMzcuMDA3ODEyNSAyMi42NDQ1MzEyNSBDLTM3LjAxOTQxNDA2IDIxLjcxNzY5NTMxIC0zNy4wMzEwMTU2MyAyMC43OTA4NTkzNyAtMzcuMDQyOTY4NzUgMTkuODM1OTM3NSBDLTQwLjYzODE2MTY3IDE5LjczMjI5MjMgLTQzLjg0MDg2MTA3IDIwLjA4NjE1NDUzIC00Ny4zNTU0Njg3NSAyMC44MzU5Mzc1IFogIiBmaWxsPSIjMjIxRTIwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1NTEuMDQyOTY4NzUsNTguMTY0MDYyNSkiLz4KPHBhdGggZD0iTTAgMCBDMy4zIDAgNi42IDAgMTAgMCBDMTMuOTk1NTQ4MTcgOC40NTIxMjExMyAxNi45NDE0Njg4MSAxNy4xNzE5NjY3OSAyMCAyNiBDMjAuMzMgMTcuNDIgMjAuNjYgOC44NCAyMSAwIEMyNC42MyAwIDI4LjI2IDAgMzIgMCBDMzIgMTguNDggMzIgMzYuOTYgMzIgNTYgQzI4IDU3IDI4IDU3IDIwIDU3IEMxNy4zNiA0OS40MSAxNC43MiA0MS44MiAxMiAzNCBDMTEuNjcgNDIuMjUgMTEuMzQgNTAuNSAxMSA1OSBDNS41NTUgNTkuNDk1IDUuNTU1IDU5LjQ5NSAwIDYwIEMwIDQwLjIgMCAyMC40IDAgMCBaICIgZmlsbD0iI0Q4MUYyNSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOTk1LDUyKSIvPgo8cGF0aCBkPSJNMCAwIEMxLjE3MDQ2ODc1IDAuMDI3MDcwMzEgMi4zNDA5Mzc1IDAuMDU0MTQwNjMgMy41NDY4NzUgMC4wODIwMzEyNSBDNC40Mzg5MDYyNSAwLjExNjgzNTk0IDUuMzMwOTM3NSAwLjE1MTY0MDYyIDYuMjUgMC4xODc1IEM3LjUzODE4NzMxIDYuMjE4NDU0OTcgOC44MTk3NDQ4OSAxMi4yNTA3NjY0NyAxMC4wOTUyMTQ4NCAxOC4yODQ0MjM4MyBDMTAuNTI5OTIzMzUgMjAuMzM2MjQxNDggMTAuOTY2NDMxOTEgMjIuMzg3Njc4NjMgMTEuNDA0Nzg1MTYgMjQuNDM4NzIwNyBDMTIuMDM1MDI5NTggMjcuMzg5MTUwNjYgMTIuNjU4NzU5NzQgMzAuMzQwODk0MzcgMTMuMjgxMjUgMzMuMjkyOTY4NzUgQzEzLjQ3ODExNDAxIDM0LjIwNzczNDgzIDEzLjY3NDk3ODAzIDM1LjEyMjUwMDkyIDEzLjg3NzgwNzYyIDM2LjA2NDk4NzE4IEMxNC4wNTc5OTQzOCAzNi45MjU1MDE4NiAxNC4yMzgxODExNSAzNy43ODYwMTY1NCAxNC40MjM4MjgxMiAzOC42NzI2MDc0MiBDMTQuNTgzNzEyMTYgMzkuNDI1Mzk0NzQgMTQuNzQzNTk2MTkgNDAuMTc4MTgyMDcgMTQuOTA4MzI1MiA0MC45NTM3ODExMyBDMTUuMjUgNDMuMTg3NSAxNS4yNSA0My4xODc1IDE1LjI1IDQ4LjE4NzUgQzExLjI5IDQ4LjE4NzUgNy4zMyA0OC4xODc1IDMuMjUgNDguMTg3NSBDMi45MiA0NS44Nzc1IDIuNTkgNDMuNTY3NSAyLjI1IDQxLjE4NzUgQy0yLjcgNDEuNTE3NSAtNy42NSA0MS44NDc1IC0xMi43NSA0Mi4xODc1IEMtMTMuNDEgNDQuMTY3NSAtMTQuMDcgNDYuMTQ3NSAtMTQuNzUgNDguMTg3NSBDLTE5LjM3IDQ4LjE4NzUgLTIzLjk5IDQ4LjE4NzUgLTI4Ljc1IDQ4LjE4NzUgQy0yNi44MDgzMTEyNiA0Mi4yMDY0MzQ4NSAtMjQuNzAyMzE0NTggMzYuMzU1OTk3NzMgLTIyLjMxNjQwNjI1IDMwLjUzOTA2MjUgQy0yMS45OTcxOTcxMSAyOS43NTk4NTQ0MyAtMjEuNjc3OTg3OTggMjguOTgwNjQ2MzYgLTIxLjM0OTEwNTgzIDI4LjE3NzgyNTkzIEMtMjAuNjc5NDY4MTMgMjYuNTQ4NjI2IC0yMC4wMDc5ODYzNCAyNC45MjAxODI4OSAtMTkuMzM0NzE2OCAyMy4yOTI0ODA0NyBDLTE4LjY0OTcxMDY3IDIxLjYzMDYwMDMgLTE3Ljk3MDA3MDg4IDE5Ljk2NjQ5ODY1IC0xNy4yOTU2NTQzIDE4LjMwMDI5Mjk3IEMtMTYuMzEzOTk1MTggMTUuODc1MDE3NSAtMTUuMzE3MDg2OTUgMTMuNDU2NTQxMzggLTE0LjMxNjQwNjI1IDExLjAzOTA2MjUgQy0xNC4wMTgzNTU4NyAxMC4yOTUzMjM3OSAtMTMuNzIwMzA1NDggOS41NTE1ODUwOCAtMTMuNDEzMjIzMjcgOC43ODUzMDg4NCBDLTEwLjMyNjYxNzczIDEuNDMzOTIzMTMgLTcuOTE5NDc2MjUgLTAuMjM3NTg0MjkgMCAwIFogTS0zLjc1IDE1LjE4NzUgQy01LjQgMjAuMTM3NSAtNy4wNSAyNS4wODc1IC04Ljc1IDMwLjE4NzUgQy02LjExIDMwLjE4NzUgLTMuNDcgMzAuMTg3NSAtMC43NSAzMC4xODc1IEMtMS40MDM0OTYzMyAyMi42MzcxMTU3OCAtMS40MDM0OTYzMyAyMi42MzcxMTU3OCAtMi43NSAxNS4xODc1IEMtMy4wOCAxNS4xODc1IC0zLjQxIDE1LjE4NzUgLTMuNzUgMTUuMTg3NSBaICIgZmlsbD0iIzIzNDM5QSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTcwLjc1LDUzLjgxMjUpIi8+CjxwYXRoIGQ9Ik0wIDAgQzIuNzg5Mjg3NzggMi4zMDgzNzYwOSAzLjc1MTc2ODg4IDQuMjY1OTI4MzQgNC4yNzM0Mzc1IDcuOTEwMTU2MjUgQzQuNjM2ODE4NzQgMTUuNjExMDQzMzQgMS45NDAyMDM5IDIxLjI4NjM5NDY0IC0yLjc5Njg3NSAyNy4yNjk1MzEyNSBDLTkuMDAxNDUwMzQgMzMuOTU4MDYzNDcgLTE1LjA5NjEwOTIxIDM3LjE0MTAyMzg5IC0yNC4yNSAzNy41IEMtMjguMDQyMTE1NTYgMzcuMzY0OTExOTEgLTI5Ljc2NDgxODA0IDM3LjEzMTcwMTkgLTMzLjEyNSAzNS4yNSBDLTM2LjYxNDUyNjY5IDMxLjA2MjU2Nzk3IC0zNy40NTgyNTE2IDI3Ljc5OTc2MzM3IC0zNy4zMDg1OTM3NSAyMi40Mjk2ODc1IEMtMzYuMzE4MDI0MjMgMTQuNjMwNTE5ODYgLTMxLjc1MTQwMDU4IDguMTU2MDQwNzUgLTI2IDMgQy0xNy42OTY1MDc2NiAtMi42NTI1NDYzMSAtOS4yMjAwNTQ5MyAtNS42NTc3NjA5OCAwIDAgWiAiIGZpbGw9IiMwNjg4MkYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIwNDUsNzkpIi8+CjxwYXRoIGQ9Ik0wIDAgQzMuNzQ5ODUzMjUgLTAuMDg3MTc0NyA3LjQ5OTQ0NTU1IC0wLjE0MDQ1MDAzIDExLjI1IC0wLjE4NzUgQzEyLjMxMzQ3NjU2IC0wLjIxMjYzNjcyIDEzLjM3Njk1MzEyIC0wLjIzNzc3MzQ0IDE0LjQ3MjY1NjI1IC0wLjI2MzY3MTg4IEMxNS40OTc0NjA5NCAtMC4yNzMzMzk4NCAxNi41MjIyNjU2MyAtMC4yODMwMDc4MSAxNy41NzgxMjUgLTAuMjkyOTY4NzUgQzE4LjUyMDc1MTk1IC0wLjMwODY3OTIgMTkuNDYzMzc4OTEgLTAuMzI0Mzg5NjUgMjAuNDM0NTcwMzEgLTAuMzQwNTc2MTcgQzIzLjU2MjEwMzM5IDAuMDc0NjIyNTkgMjQuODI1NjM1MDMgMC43MTY2NzQ2NSAyNyAzIEMyNy45MTMwODU5NCA1LjYzNTQ5ODA1IDI3LjkxMzA4NTk0IDUuNjM1NDk4MDUgMjguNDg0Mzc1IDguNzYxNzE4NzUgQzI4LjgwMzQxNzk3IDEwLjQzOTExMTMzIDI4LjgwMzQxNzk3IDEwLjQzOTExMTMzIDI5LjEyODkwNjI1IDEyLjE1MDM5MDYyIEMyOS4zMzM4NjcxOSAxMy4zMTc2MzY3MiAyOS41Mzg4MjgxMiAxNC40ODQ4ODI4MSAyOS43NSAxNS42ODc1IEMyOS45NzA0Mjk2OSAxNi44NjYzNDc2NiAzMC4xOTA4NTkzOCAxOC4wNDUxOTUzMSAzMC40MTc5Njg3NSAxOS4yNTk3NjU2MiBDMzAuOTYwMTAyNjQgMjIuMTcwNzg4OTEgMzEuNDg2NzY4MjIgMjUuMDgzNzY2MzEgMzIgMjggQzM1LjA3NTc1MDg3IDIxLjMyMzQ4NDU3IDM4LjA0NTYyMTcyIDE0LjYyMjgwNzQ2IDQwLjgxMjUgNy44MTI1IEM0MS4xMjM4MDg1OSA3LjA1MTMwODU5IDQxLjQzNTExNzE5IDYuMjkwMTE3MTkgNDEuNzU1ODU5MzggNS41MDU4NTkzOCBDNDIuNTA1ODE1MTcgMy42NzEzNTIxMyA0My4yNTMxOTk4MiAxLjgzNTc5NDExIDQ0IDAgQzQ4LjI5IDAgNTIuNTggMCA1NyAwIEM1NS44NzQ5NzQ1OCA2Ljc1MDE1MjU0IDU1Ljg3NDk3NDU4IDYuNzUwMTUyNTQgNTQuMzQxNzk2ODggMTAuMzIxMjg5MDYgQzU0LjAwNDc0NzMxIDExLjExNTIxMDU3IDUzLjY2NzY5Nzc1IDExLjkwOTEzMjA4IDUzLjMyMDQzNDU3IDEyLjcyNzExMTgyIEM1Mi45NTY4Nzg2NiAxMy41NjQ4MjExNyA1Mi41OTMzMjI3NSAxNC40MDI1MzA1MiA1Mi4yMTg3NSAxNS4yNjU2MjUgQzUxLjg0NTIwMzg2IDE2LjE0MDIzMzc2IDUxLjQ3MTY1NzcxIDE3LjAxNDg0MjUzIDUxLjA4Njc5MTk5IDE3LjkxNTk1NDU5IEM0OS44OTczNDQ2IDIwLjY5NjY1Mjc4IDQ4LjY5ODc0NTQ1IDIzLjQ3MzI5OTM5IDQ3LjUgMjYuMjUgQzQ2LjY5MzQyMDAxIDI4LjEzMjU1OTY1IDQ1Ljg4NzQyNDAyIDMwLjAxNTM2OTYzIDQ1LjA4MjAzMTI1IDMxLjg5ODQzNzUgQzQzLjYxMDkxMDIyIDM1LjMzMjU2NDA1IDQyLjEzODAzMjE4IDM4Ljc2NTkwNDg3IDQwLjY1ODIwMzEyIDQyLjE5NjI4OTA2IEM0MC4zNjE0MzY3NyA0Mi44ODQzNDYzMSA0MC4wNjQ2NzA0MSA0My41NzI0MDM1NiAzOS43NTg5MTExMyA0NC4yODEzMTEwNCBDMzkuMjA1MDIxMiA0NS41MzU2OTMxMSAzOC42MTMyMzIxNyA0Ni43NzM1MzU2NyAzOCA0OCBDMzMuMzggNDggMjguNzYgNDggMjQgNDggQzIzLjcxODAxNzU4IDQ2Ljg2OTgxNDQ1IDIzLjQzNjAzNTE2IDQ1LjczOTYyODkxIDIzLjE0NTUwNzgxIDQ0LjU3NTE5NTMxIEMyMi4wOTM1MjM1MyA0MC4zNzQ2MTE1MyAyMS4wMjMxNzA3NiAzNi4xNzg4ODk2NSAxOS45NDcyNjU2MiAzMS45ODQzNzUgQzE5LjQ4NDU3MjAzIDMwLjE2OTg5MDMxIDE5LjAyNjgzOTQ1IDI4LjM1NDEzMjkyIDE4LjU3NDIxODc1IDI2LjUzNzEwOTM4IEMxNy45MjE5MzU4OSAyMy45MjIyNTYxNiAxNy4yNTE4MjE4MSAyMS4zMTI1MzE3MyAxNi41NzgxMjUgMTguNzAzMTI1IEMxNi4yODA5ODYwMiAxNy40ODcyODcyOSAxNi4yODA5ODYwMiAxNy40ODcyODcyOSAxNS45Nzc4NDQyNCAxNi4yNDY4ODcyMSBDMTQuODEwMjA5MzQgMTEuODA0OTMzNDYgMTMuNzk5Njc2MzYgOC44OTA1NzQxMSAxMCA2IEM3LjQ0MzcyNDc1IDQuODk3OTA2NjcgNy40NDM3MjQ3NSA0Ljg5NzkwNjY3IDQuNzUgNC4yNSBDMy44NTc5Njg3NSA0LjAwNzY1NjI1IDIuOTY1OTM3NSAzLjc2NTMxMjUgMi4wNDY4NzUgMy41MTU2MjUgQzEuMzcxNDA2MjUgMy4zNDU0Njg3NSAwLjY5NTkzNzUgMy4xNzUzMTI1IDAgMyBDMCAyLjAxIDAgMS4wMiAwIDAgWiAiIGZpbGw9IiMyMTI5NjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM2LDU0KSIvPgo8cGF0aCBkPSJNMCAwIEMzLjYzIDAgNy4yNiAwIDExIDAgQzE1IDkuNjI1IDE1IDkuNjI1IDE1IDEzIEMxNS42NiAxMyAxNi4zMiAxMyAxNyAxMyBDMTcuMTkzMzU5MzggMTIuMzk2NzE4NzUgMTcuMzg2NzE4NzUgMTEuNzkzNDM3NSAxNy41ODU5Mzc1IDExLjE3MTg3NSBDMTcuODQ2MzI4MTIgMTAuMzcyNjU2MjUgMTguMTA2NzE4NzUgOS41NzM0Mzc1IDE4LjM3NSA4Ljc1IEMxOC43NTc4NTE1NiA3LjU2NjY0MDYyIDE4Ljc1Nzg1MTU2IDcuNTY2NjQwNjIgMTkuMTQ4NDM3NSA2LjM1OTM3NSBDMjAgNCAyMCA0IDIyIDAgQzI1LjYzIDAgMjkuMjYgMCAzMyAwIEMzMS42MTIzNzc3OCA0LjQ4OTM2NjAxIDMwLjA5OTAyNzU4IDguODM1MTMyMDUgMjguMjA3MDMxMjUgMTMuMTM2NzE4NzUgQzI3LjcyNjY1NDA1IDE0LjI0Mjg1NTIyIDI3LjcyNjY1NDA1IDE0LjI0Mjg1NTIyIDI3LjIzNjU3MjI3IDE1LjM3MTMzNzg5IEMyNi41ODgzNzkzNiAxNi44NTIwMjc5OSAyNS45MjY0NjI4MyAxOC4zMjY4MDAwNiAyNS4yNDk3NTU4NiAxOS43OTQ2Nzc3MyBDMjEuMjM0Nzg2MTQgMjkuMDI3NTEyNzMgMjUuMDc1MDY3NzkgMzYuMzYzMTg5NTkgMjguNTYyNSA0NS4yNSBDMjkuNDAxNTk1MTQgNDcuMzk5MzA1OTEgMzAuMjM2NDQwNzggNDkuNTUwMjc3MTYgMzEuMDY2NDA2MjUgNTEuNzAzMTI1IEMzMS40MzcwOTIyOSA1Mi42NDgzMzAwOCAzMS44MDc3NzgzMiA1My41OTM1MzUxNiAzMi4xODk2OTcyNyA1NC41NjczODI4MSBDMzMgNTcgMzMgNTcgMzMgNjAgQzMxLjU2MTYzMjQ5IDU5Ljg4NTQxMzA3IDMwLjEyNDI5MDM0IDU5Ljc1NzkwODg0IDI4LjY4NzUgNTkuNjI1IEMyNy44ODY5OTIxOSA1OS41NTUzOTA2MyAyNy4wODY0ODQzOCA1OS40ODU3ODEyNSAyNi4yNjE3MTg3NSA1OS40MTQwNjI1IEMyNCA1OSAyNCA1OSAyMSA1NyBDMTkuNjEzMjgxMjUgNTMuOTYwOTM3NSAxOS42MTMyODEyNSA1My45NjA5Mzc1IDE4LjMxMjUgNTAuMzc1IEMxNy44NzU1MDc4MSA0OS4xODY0ODQzNyAxNy40Mzg1MTU2MyA0Ny45OTc5Njg3NSAxNi45ODgyODEyNSA0Ni43NzM0Mzc1IEMxNi42NjIxNDg0NCA0NS44NTgyMDMxMyAxNi4zMzYwMTU2MyA0NC45NDI5Njg3NSAxNiA0NCBDMTQuMjExNzgyMjYgNDYuNjgyMzI2NjEgMTIuNzk4NTczOTYgNDkuMzAyODg5NjEgMTEuMzc1IDUyLjE4NzUgQzEwLjkyODk4NDM4IDUzLjA4ODU1NDY5IDEwLjQ4Mjk2ODc1IDUzLjk4OTYwOTM4IDEwLjAyMzQzNzUgNTQuOTE3OTY4NzUgQzkuNjg1NzAzMTIgNTUuNjA1MDM5MDYgOS4zNDc5Njg3NSA1Ni4yOTIxMDkzNyA5IDU3IEM1LjcgNTYuNjcgMi40IDU2LjM0IC0xIDU2IEMtMC4zOTQ5ODQ5MyA0OS4xNzY3NzQ1NCAyLjkyNjY1MjAyIDQzLjQ2Njc3Nzg3IDUuOTM3NSAzNy40MzE2NDA2MiBDOC40NDU2MTQ0IDMyLjE0NzgyNjM3IDkuNzA2Nzk0NDIgMjguODM0MjUxNjYgOCAyMyBDNi43NTQ5MDE0NiAxOS41MzQxMTc5NSA1LjM3Mjc0NjExIDE2LjE0MTA0NzgxIDMuOTM3NSAxMi43NSBDMy4xOTE5Mjc4NyAxMC45NzU5MjA2OSAyLjQ1MDgyOTQ5IDkuMTk5OTUyNjcgMS43MTQ4NDM3NSA3LjQyMTg3NSBDMS4zODYwNTIyNSA2LjY0NDI0ODA1IDEuMDU3MjYwNzQgNS44NjY2MjEwOSAwLjcxODUwNTg2IDUuMDY1NDI5NjkgQzAgMyAwIDMgMCAwIFogIiBmaWxsPSIjRDgxRTI1IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMTgzLDUyKSIvPgo8cGF0aCBkPSJNMCAwIEMtMC42NiAzLjYzIC0xLjMyIDcuMjYgLTIgMTEgQy0yLjgyNSAxMC44MzUgLTMuNjUgMTAuNjcgLTQuNSAxMC41IEMtMTEuNDA5NDk0MjQgOS40MzI1NTU0MyAtMTEuNDA5NDk0MjQgOS40MzI1NTU0MyAtMTggMTEgQy0xNy45MDQ4MDU0NiAxMi44OTU3NjM2NiAtMTcuOTA0ODA1NDYgMTIuODk1NzYzNjYgLTE3IDE1IEMtMTQuNTcyODYxMyAxNi44NzM4MTgyMSAtMTQuNTcyODYxMyAxNi44NzM4MTgyMSAtMTEuNjI1IDE4LjUgQy03LjkzODczNzE5IDIwLjYzOTc4MzE2IC01LjIyOTM2OTIyIDIyLjMxNTc1MDIyIC0zIDI2IEMtMS41MDg4MTc1MSAzMS42NDUxOTA4NSAtMi4xNzg0MTgzNiAzNC45MjExNTMwNiAtNSA0MCBDLTkuMzQ2NDcyNTcgNDUuMTQ3MTM4NTcgLTEzLjQ5MjA4MjkgNDcuMDc2ODA4NDEgLTIwLjEyNSA0Ny43NSBDLTI1Ljk4NTQzMDQyIDQ4LjIyMDQyOTExIC0zMS4zMDM1NDk3NiA0Ny4zMzMyMTE3NiAtMzcgNDYgQy0zOC4wOTg5ODcwMiA0Mi43MDMwMzg5NSAtMzcuODcxMjQ0NDQgNDEuNTk1MDUwOTcgLTM3LjA2MjUgMzguMzEyNSBDLTM2Ljg2Nzg1MTU2IDM3LjUwNDI1NzgxIC0zNi42NzMyMDMxMyAzNi42OTYwMTU2MyAtMzYuNDcyNjU2MjUgMzUuODYzMjgxMjUgQy0zNi4zMTY2Nzk2OSAzNS4yNDgzOTg0NCAtMzYuMTYwNzAzMTIgMzQuNjMzNTE1NjMgLTM2IDM0IEMtMzQuODQ1IDM0LjMzIC0zMy42OSAzNC42NiAtMzIuNSAzNSBDLTI4LjE4MjA3NzU3IDM2LjA3MzcyODQ5IC0yNC40NDM3NDM0NCAzNi4zMDEyNzA3NCAtMjAgMzYgQy0xOS4wMSAzNS4zNCAtMTguMDIgMzQuNjggLTE3IDM0IEMtMTcuMTc4MjU1OTkgMzIuMDY3MDg1MjEgLTE3LjE3ODI1NTk5IDMyLjA2NzA4NTIxIC0xOCAzMCBDLTE5LjkwMzM3ODEzIDI4LjYwODcxNTU2IC0xOS45MDMzNzgxMyAyOC42MDg3MTU1NiAtMjIuMjUgMjcuNTYyNSBDLTMxLjA3MTA4MzE3IDIyLjkxMzE3MTEzIC0zMS4wNzEwODMxNyAyMi45MTMxNzExMyAtMzIuNjYwMTU2MjUgMTcuOTI5Njg3NSBDLTMzLjUwOTcyNjg3IDEzLjA2MzIxNTAxIC0zMy4wODExMzgwMSA5LjYxMDg4NDM3IC0zMC4yOTI5Njg3NSA1LjUgQy0yMi4zNjg4Mzc3IC0zLjY5Mjk0OTYyIC0xMC42NjIyMzUzMyAtMi42NjU1NTg4MyAwIDAgWiAiIGZpbGw9IiMyMjM5ODUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE0Niw1NSkiLz4KPHBhdGggZD0iTTAgMCBDNC4yNTM4MDEzOCAxLjUxOTIxNDc4IDUuODUwNjA1NjkgNC4xMzEwOTAyNCA4IDggQzEwLjIxNjIxNjM0IDE0LjEzODE3MjIyIDExLjE3ODUwNDM3IDIwLjIzMzA3NjcgOC41NjI1IDI2LjM3NSBDNyAyOSA3IDI5IDYgMzAgQzMuNjM2NzE4NzUgMzAuMjk2ODc1IDMuNjM2NzE4NzUgMzAuMjk2ODc1IDEgMzAgQy0wLjczMDQ2ODc1IDI4LjM5MDYyNSAtMC43MzA0Njg3NSAyOC4zOTA2MjUgLTIuMTg3NSAyNi4yNSBDLTIuOTIwMzMyMDMgMjUuMjA1ODU5MzggLTIuOTIwMzMyMDMgMjUuMjA1ODU5MzggLTMuNjY3OTY4NzUgMjQuMTQwNjI1IEMtNC45MTMwODMwNCAyMi4xMzk2Nzg4OCAtNS45ODkwNDQ2MiAyMC4xMjczMTg0MyAtNyAxOCBDLTcuMTk5MTYwMTYgMTkuMjY0NTcwMzEgLTcuMTk5MTYwMTYgMTkuMjY0NTcwMzEgLTcuNDAyMzQzNzUgMjAuNTU0Njg3NSBDLTcuNTc4OTQ1MzEgMjEuNjUwMzkwNjIgLTcuNzU1NTQ2ODggMjIuNzQ2MDkzNzUgLTcuOTM3NSAyMy44NzUgQy04LjExMTUyMzQ0IDI0Ljk2NTU0Njg4IC04LjI4NTU0Njg4IDI2LjA1NjA5Mzc1IC04LjQ2NDg0Mzc1IDI3LjE3OTY4NzUgQy05IDMwIC05IDMwIC0xMCAzMiBDLTExLjg3NSAzMS43NSAtMTEuODc1IDMxLjc1IC0xNCAzMSBDLTE1LjI1IDI4LjkzNzUgLTE1LjI1IDI4LjkzNzUgLTE2IDI3IEMtMTYuNDMzMTI1IDI3LjQ3NDM3NSAtMTYuODY2MjUgMjcuOTQ4NzUgLTE3LjMxMjUgMjguNDM3NSBDLTIxLjI2ODUzMTg1IDMyLjEwMDQ5MjQ1IC0yNi43NTQ4NDI1IDMxLjMyNjM3NjY4IC0zMS44MjAzMTI1IDMxLjI4MTI1IEMtMzYuMjA3MDY0MDkgMzAuODkzMjMyNjYgLTM3LjkwMzMwOTI4IDMwLjA5NjY5MDcyIC00MSAyNyBDLTQyLjU2MjUgMjQuNSAtNDIuNTYyNSAyNC41IC00MyAyMiBDLTQxLjYyNSAxOS42ODc1IC00MS42MjUgMTkuNjg3NSAtNDAgMTggQy00MS4zMiAxNy4wMSAtNDIuNjQgMTYuMDIgLTQ0IDE1IEMtNDQgMTEuNzUgLTQ0IDExLjc1IC00MyA4IEMtMzcuODIzNzMwOTQgMy44MDUyMDc0OSAtMzIuMDE2MTEwNTQgMy40NTA1OTcyMiAtMjUuNjI1IDMuNjg3NSBDLTI0LjgxOTMzNTk0IDMuNjk3MTY3OTcgLTI0LjAxMzY3MTg4IDMuNzA2ODM1OTQgLTIzLjE4MzU5Mzc1IDMuNzE2Nzk2ODggQy0xNy4zNDEzMjczMSAzLjgyOTMzNjM1IC0xNy4zNDEzMjczMSAzLjgyOTMzNjM1IC0xNSA1IEMtMTUuMzEyNSA2LjkzNzUgLTE1LjMxMjUgNi45Mzc1IC0xNiA5IEMtMjAuMjg5NzAxMzQgMTAuNDI5OTAwNDUgLTI0LjU3MTM0MzI0IDEwLjQzODEyMTc2IC0yOS4wNjY0MDYyNSAxMC43MTg3NSBDLTMxLjkzMTY1NzQ2IDEwLjgxNTkwNjYxIC0zMS45MzE2NTc0NiAxMC44MTU5MDY2MSAtMzQgMTIgQy0zMy4wMzU3ODEyNSAxMi4xMDk1NzAzMSAtMzIuMDcxNTYyNSAxMi4yMTkxNDA2MiAtMzEuMDc4MTI1IDEyLjMzMjAzMTI1IEMtMjkuODE0ODQzNzUgMTIuNDkwNTg1OTQgLTI4LjU1MTU2MjUgMTIuNjQ5MTQwNjMgLTI3LjI1IDEyLjgxMjUgQy0yNS4zNzA1NDY4NyAxMy4wMzg3MzA0NyAtMjUuMzcwNTQ2ODcgMTMuMDM4NzMwNDcgLTIzLjQ1MzEyNSAxMy4yNjk1MzEyNSBDLTIwLjA1NDQ1OTUzIDEzLjk4ODQ3OTcxIC0xOC40MjUxMDM5MSAxNC41NjkwMDk5MSAtMTYgMTcgQy0xNS42NyAxNy45OSAtMTUuMzQgMTguOTggLTE1IDIwIEMtMTQuODc4ODI4MTMgMTkuMzI0NTMxMjUgLTE0Ljc1NzY1NjI1IDE4LjY0OTA2MjUgLTE0LjYzMjgxMjUgMTcuOTUzMTI1IEMtMTQuNDY1MjM0MzggMTcuMDYxMDkzNzUgLTE0LjI5NzY1NjI1IDE2LjE2OTA2MjUgLTE0LjEyNSAxNS4yNSBDLTEzLjk2MjU3ODEzIDE0LjM2ODI4MTI1IC0xMy44MDAxNTYyNSAxMy40ODY1NjI1IC0xMy42MzI4MTI1IDEyLjU3ODEyNSBDLTEzLjAzMjAzNzM2IDEwLjEzMDUyMjU2IC0xMi4yMjAwMjg4MyA4LjE5NDAwMTQzIC0xMSA2IEMtOC43Njk1MzEyNSA2LjEyMTA5Mzc1IC04Ljc2OTUzMTI1IDYuMTIxMDkzNzUgLTYgNyBDLTMuNzYxNzE4NzUgOS43MjI2NTYyNSAtMy43NjE3MTg3NSA5LjcyMjY1NjI1IC0xLjY4NzUgMTMuMDYyNSBDLTAuOTkwMTE3MTkgMTQuMTY3MjI2NTYgLTAuMjkyNzM0MzggMTUuMjcxOTUzMTIgMC40MjU3ODEyNSAxNi40MTAxNTYyNSBDMS4yMDUwMTk1MyAxNy42OTIxMjg5MSAxLjIwNTAxOTUzIDE3LjY5MjEyODkxIDIgMTkgQzEuODAwODM5ODQgMTcuODA1MDM5MDYgMS44MDA4Mzk4NCAxNy44MDUwMzkwNiAxLjU5NzY1NjI1IDE2LjU4NTkzNzUgQzEuMDY1MTA0MTcgMTMuMzkwNjI1IDAuNTMyNTUyMDggMTAuMTk1MzEyNSAwIDcgQy0wLjIwNzUzOTA2IDUuODk5MTQwNjMgLTAuNDE1MDc4MTMgNC43OTgyODEyNSAtMC42Mjg5MDYyNSAzLjY2NDA2MjUgQy0wLjc1MTM2NzE5IDIuNzg0OTIxODcgLTAuODczODI4MTMgMS45MDU3ODEyNSAtMSAxIEMtMC42NyAwLjY3IC0wLjM0IDAuMzQgMCAwIFogTS0yOCAxOCBDLTI2LjE4Nzc3NDY2IDIwLjA2MjQ5OTQgLTI2LjE4Nzc3NDY2IDIwLjA2MjQ5OTQgLTI0IDIyIEMtMjMuMDEgMjIgLTIyLjAyIDIyIC0yMSAyMiBDLTIxLjMzIDIxLjAxIC0yMS42NiAyMC4wMiAtMjIgMTkgQy0yNC45NyAxOC41MDUgLTI0Ljk3IDE4LjUwNSAtMjggMTggWiBNLTM5IDIyIEMtMzkgMjIuNjYgLTM5IDIzLjMyIC0zOSAyNCBDLTM2LjAzIDI0LjMzIC0zMy4wNiAyNC42NiAtMzAgMjUgQy0zMi4zNTk2ODc0NCAyMi45MDI1MDAwNSAtMzMuNTQ2MTY5OTQgMjIuMDMwOTQyOTYgLTM2Ljc1IDIxLjgxMjUgQy0zNy40OTI1IDIxLjg3NDM3NSAtMzguMjM1IDIxLjkzNjI1IC0zOSAyMiBaICIgZmlsbD0iIzIyMUUyMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjIwLDY3KSIvPgo8cGF0aCBkPSJNMCAwIEMyLjA1NDY4NzUgLTAuMTk5MjE4NzUgMi4wNTQ2ODc1IC0wLjE5OTIxODc1IDUuODY3MTg3NSAwLjM2MzI4MTI1IEM4LjI4Mjg5NDcyIDIuNDI4NzM2NjggMTAuMDk2NDE2NDkgNC43MzM5NTQ2IDExLjg2NzE4NzUgNy4zNjMyODEyNSBDMTIuMTQ5NDkyMTkgNi44NDYzNjcxOSAxMi40MzE3OTY4NyA2LjMyOTQ1MzEzIDEyLjcyMjY1NjI1IDUuNzk2ODc1IEMxNC4yNzE2ODgxMyAzLjQ3NTU5ODQ4IDE1LjU3MTg3NDIgMS45NzEyNTAyOCAxNy44NjcxODc1IDAuMzYzMjgxMjUgQzI2LjQ3NDM3MzUgLTAuNzg0MzQzNTUgMzQuOTQxNzAyNzcgMi4yOTMwNDg0MyA0Mi44NjcxODc1IDUuMzYzMjgxMjUgQzQxLjE2MTc1MzAxIDkuMTA0MjM0MzIgMzkuMjkzODYwOCAxMS4wMjMxMTQxMiAzNS44NjcxODc1IDEzLjM2MzI4MTI1IEMzNC44NzcxODc1IDEzLjM2MzI4MTI1IDMzLjg4NzE4NzUgMTMuMzYzMjgxMjUgMzIuODY3MTg3NSAxMy4zNjMyODEyNSBDMzIuMjA3MTg3NSAxMi4zNzMyODEyNSAzMS41NDcxODc1IDExLjM4MzI4MTI1IDMwLjg2NzE4NzUgMTAuMzYzMjgxMjUgQzI4LjY3MjY0MDY5IDkuNzgzMzQ0MjYgMjguNjcyNjQwNjkgOS43ODMzNDQyNiAyNi4yNDIxODc1IDkuNjc1NzgxMjUgQzI1LjQyNDkyMTg4IDkuNjEwMDM5MDYgMjQuNjA3NjU2MjUgOS41NDQyOTY4OCAyMy43NjU2MjUgOS40NzY1NjI1IEMyMi44MjU4OTg0NCA5LjQyMDQ4ODI4IDIyLjgyNTg5ODQ0IDkuNDIwNDg4MjggMjEuODY3MTg3NSA5LjM2MzI4MTI1IEMyMS43NTg4NzYwNCA5Ljk5OTk5MjUyIDIxLjY1MDU2NDU4IDEwLjYzNjcwMzggMjEuNTM4OTcwOTUgMTEuMjkyNzA5MzUgQzIwLjQxMzg1NTQzIDE3Ljg5NjI5MTI1IDE5LjI3NjQ4MDM1IDI0LjQ5NzY3NjE0IDE4LjEzMTgzNTk0IDMxLjA5NzkwMDM5IEMxNy43MDU4MDczNiAzMy41NjQxNTA1NiAxNy4yODI5NDkwNyAzNi4wMzA5NTA1MSAxNi44NjMyODEyNSAzOC40OTgyOTEwMiBDMTYuMjYwODYwODcgNDIuMDM2ODAwMzYgMTUuNjQ3MjEwNTMgNDUuNTczMjAwOSAxNS4wMzEyNSA0OS4xMDkzNzUgQzE0Ljg0NDcwODU2IDUwLjIxOTc3NjQ2IDE0LjY1ODE2NzExIDUxLjMzMDE3NzkyIDE0LjQ2NTk3MjkgNTIuNDc0MjI3OTEgQzE0LjI4NTkzNzE5IDUzLjQ5NTIxMDcyIDE0LjEwNTkwMTQ5IDU0LjUxNjE5MzU0IDEzLjkyMDQxMDE2IDU1LjU2ODExNTIzIEMxMy42ODcyNDU5NCA1Ni45MjM3OTg2IDEzLjY4NzI0NTk0IDU2LjkyMzc5ODYgMTMuNDQ5MzcxMzQgNTguMzA2ODY5NTEgQzEzLjI1NzI1MDY3IDU4Ljk4NTQ4NTM4IDEzLjA2NTEzIDU5LjY2NDEwMTI2IDEyLjg2NzE4NzUgNjAuMzYzMjgxMjUgQzExLjg3NzE4NzUgNjAuODU4MjgxMjUgMTEuODc3MTg3NSA2MC44NTgyODEyNSAxMC44NjcxODc1IDYxLjM2MzI4MTI1IEM5LjU4MDQ1Mjg0IDU0LjQ1OTA5MjQzIDguMjk5Mjc3MDIgNDcuNTUzODg4ODYgNy4wMjE5NzI2NiA0MC42NDc5NDkyMiBDNi41ODY3MzE3NyAzOC4yOTg0Mjc0MSA2LjE1MDIxNTc5IDM1Ljk0OTE0MTQ1IDUuNzEyNDAyMzQgMzMuNjAwMDk3NjYgQzUuMDgzNTYyMzcgMzAuMjI0ODk1MzcgNC40NTkzMDI5NCAyNi44NDg4NzMzNSAzLjgzNTkzNzUgMjMuNDcyNjU2MjUgQzMuNTQwNjQxNDggMjEuODk1OTAxMTggMy41NDA2NDE0OCAyMS44OTU5MDExOCAzLjIzOTM3OTg4IDIwLjI4NzI5MjQ4IEMzLjA1OTE5MzEyIDE5LjMwNjU3Nzc2IDIuODc5MDA2MzUgMTguMzI1ODYzMDQgMi42OTMzNTkzOCAxNy4zMTU0Mjk2OSBDMi41MzM0NzUzNCAxNi40NTM4MzI0IDIuMzczNTkxMzEgMTUuNTkyMjM1MTEgMi4yMDg4NjIzIDE0LjcwNDUyODgxIEMxLjg2NzE4NzUgMTIuMzYzMjgxMjUgMS44NjcxODc1IDEyLjM2MzI4MTI1IDEuODY3MTg3NSA4LjM2MzI4MTI1IEMtMS43NjI4MTI1IDkuMDIzMjgxMjUgLTUuMzkyODEyNSA5LjY4MzI4MTI1IC05LjEzMjgxMjUgMTAuMzYzMjgxMjUgQy05LjQ2MjgxMjUgMTEuMzUzMjgxMjUgLTkuNzkyODEyNSAxMi4zNDMyODEyNSAtMTAuMTMyODEyNSAxMy4zNjMyODEyNSBDLTE1LjA4OTc3ODMxIDEyLjEyNDAzOTggLTE3LjI0OTM5NzE2IDEwLjU3NzUwMzY3IC0yMC4xMzI4MTI1IDYuMzYzMjgxMjUgQy0xMy40NzU0Nzc3IDMuMTIxMTc0OTQgLTcuMjY2ODA3MzkgMS4yMzc3NTI5MSAwIDAgWiAiIGZpbGw9IiNFODIwMjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3NzUuMTMyODEyNSwzNS42MzY3MTg3NSkiLz4KPHBhdGggZD0iTTAgMCBDOC41OCAwIDE3LjE2IDAgMjYgMCBDMjYgMy4zIDI2IDYuNiAyNiAxMCBDMjAuNzIgMTAgMTUuNDQgMTAgMTAgMTAgQzEwIDEzLjYzIDEwIDE3LjI2IDEwIDIxIEMxMy45NiAyMSAxNy45MiAyMSAyMiAyMSBDMjIgMjQuMyAyMiAyNy42IDIyIDMxIEMxOC4wNCAzMSAxNC4wOCAzMSAxMCAzMSBDMTAgMzUuMjkgMTAgMzkuNTggMTAgNDQgQzE3LjkyIDQzLjUwNSAxNy45MiA0My41MDUgMjYgNDMgQzI2IDQ2LjMgMjYgNDkuNiAyNiA1MyBDMjIuODY0NjI0MDIgNTQuMDQ1MTI1MzMgMjAuMjI4NTQ5MDIgNTQuMzE1Mzc3MTMgMTYuOTM3NSA1NC41NjI1IEMxNS44NzQwMjM0NCA1NC42NDYyODkwNiAxNC44MTA1NDY4OCA1NC43MzAwNzgxMyAxMy43MTQ4NDM3NSA1NC44MTY0MDYyNSBDOS4xNDgzOTI5NSA1NS4wNDIwODc4NCA0LjU3MjAyNDE4IDU1IDAgNTUgQzAgMzYuODUgMCAxOC43IDAgMCBaICIgZmlsbD0iI0Q4MUUyNiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAzNSw1MikiLz4KPHBhdGggZD0iTTAgMCBDMS45MTAxNTYyNSAwLjgyMDMxMjUgMS45MTAxNTYyNSAwLjgyMDMxMjUgNC41MzUxNTYyNSAyLjMyMDMxMjUgQzQuNTM1MTU2MjUgNC45NjAzMTI1IDQuNTM1MTU2MjUgNy42MDAzMTI1IDQuNTM1MTU2MjUgMTAuMzIwMzEyNSBDMS43NzIzOTQ0OCA5Ljc5NzYyNzg0IC0wLjc5MDkzMTM1IDkuMjExNjE2NjMgLTMuNDY0ODQzNzUgOC4zMjAzMTI1IEMtNS4wMjYwMjgwMyA4LjI1MjkwMzg1IC02LjU4OTg2ODk1IDguMjM1MTY3OTQgLTguMTUyMzQzNzUgOC4yNTc4MTI1IEMtOC45NjA1ODU5NCA4LjI2NjgzNTk0IC05Ljc2ODgyODEzIDguMjc1ODU5MzcgLTEwLjYwMTU2MjUgOC4yODUxNTYyNSBDLTExLjIxNjQ0NTMxIDguMjk2NzU3ODEgLTExLjgzMTMyODEzIDguMzA4MzU5MzggLTEyLjQ2NDg0Mzc1IDguMzIwMzEyNSBDLTEyLjc5NDg0Mzc1IDkuMzEwMzEyNSAtMTMuMTI0ODQzNzUgMTAuMzAwMzEyNSAtMTMuNDY0ODQzNzUgMTEuMzIwMzEyNSBDLTEyLjU4NDQxNDA2IDExLjcwNzAzMTI1IC0xMS43MDM5ODQzNyAxMi4wOTM3NSAtMTAuNzk2ODc1IDEyLjQ5MjE4NzUgQy05LjYzNTQyOTY5IDEzLjAxMjk2ODc1IC04LjQ3Mzk4NDM4IDEzLjUzMzc1IC03LjI3NzM0Mzc1IDE0LjA3MDMxMjUgQy01LjU1NDUxMTcyIDE0LjgzNjAxNTYzIC01LjU1NDUxMTcyIDE0LjgzNjAxNTYzIC0zLjc5Njg3NSAxNS42MTcxODc1IEMwLjI0MTM3MzEyIDE3LjY4MTI4NjE5IDMuNTY0NTg1NyAxOS42ODc5ODkzIDUuOTEwMTU2MjUgMjMuNjMyODEyNSBDNi45OTYzOTk0NiAyOC4zMDM2NTgzIDYuMzE4NTczOSAzMS44ODQwNDY4MSA0LjAzNTE1NjI1IDM2LjA3MDMxMjUgQy0wLjE5NDIwMDc5IDM5Ljg3NjczMzg0IC00LjYxMjE4MDA4IDQxLjI1NzA5NTU4IC0xMC4yODUxNTYyNSA0MS4zODI4MTI1IEMtMTUuNjc4ODQ0MzEgNDEuMDMwMDkxNzUgLTE5Ljg2NjQ0MTQ4IDQwLjE3ODc3ODc4IC0yNC40NjQ4NDM3NSAzNy4zMjAzMTI1IEMtMjQuNDY0ODQzNzUgMzQuMDIwMzEyNSAtMjQuNDY0ODQzNzUgMzAuNzIwMzEyNSAtMjQuNDY0ODQzNzUgMjcuMzIwMzEyNSBDLTIzLjE2NTQ2ODc1IDI3Ljk4MDMxMjUgLTIxLjg2NjA5Mzc1IDI4LjY0MDMxMjUgLTIwLjUyNzM0Mzc1IDI5LjMyMDMxMjUgQy0xNS41OTQwNTE2OSAzMS41NDQyMDkyNCAtMTEuODI1MTI2MDMgMzEuNjYwNjQ3ODggLTYuNDY0ODQzNzUgMzEuMzIwMzEyNSBDLTYuNDY0ODQzNzUgMzAuMDAwMzEyNSAtNi40NjQ4NDM3NSAyOC42ODAzMTI1IC02LjQ2NDg0Mzc1IDI3LjMyMDMxMjUgQy03LjQxNzQ2MDk0IDI2Ljk1Njc5Njg3IC04LjM3MDA3ODEyIDI2LjU5MzI4MTI1IC05LjM1MTU2MjUgMjYuMjE4NzUgQy0yMi40OTU3MTQwNSAyMS4wMzAxNzczIC0yMi40OTU3MTQwNSAyMS4wMzAxNzczIC0yNS40NjQ4NDM3NSAxNS4zMjAzMTI1IEMtMjYuMjE3MDIwNTkgMTEuNDI4OTQ4NjQgLTI1LjgyMjM5NTM5IDguMjE0MTkxNTkgLTI0LjMzOTg0Mzc1IDQuNTA3ODEyNSBDLTE4LjQ5MTUxODczIC0yLjMxNTIzMzM1IC04LjEzNzk4MzIgLTIuMjQ0MDcxNDQgMCAwIFogIiBmaWxsPSIjMDA4NDI5IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxOTY5LjQ2NDg0Mzc1LDQwLjY3OTY4NzUpIi8+CjxwYXRoIGQ9Ik0wIDAgQzguOTEgMCAxNy44MiAwIDI3IDAgQzI3IDMuMyAyNyA2LjYgMjcgMTAgQzIxLjM5IDEwIDE1Ljc4IDEwIDEwIDEwIEMxMCAxMy42MyAxMCAxNy4yNiAxMCAyMSBDMTQuMjkgMjEgMTguNTggMjEgMjMgMjEgQzIzIDI0LjMgMjMgMjcuNiAyMyAzMSBDMTguNzEgMzEgMTQuNDIgMzEgMTAgMzEgQzEwIDM3LjkzIDEwIDQ0Ljg2IDEwIDUyIEM2LjcgNTIgMy40IDUyIDAgNTIgQzAgMzQuODQgMCAxNy42OCAwIDAgWiAiIGZpbGw9IiNEODFFMjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDExMDEsNTIpIi8+CjxwYXRoIGQ9Ik0wIDAgQzIuOTcgMCA1Ljk0IDAgOSAwIEM5IDEzLjUzIDkgMjcuMDYgOSA0MSBDNS4zNyA0MSAxLjc0IDQxIC0yIDQxIEMtMy4yMTY4NzUgNDEuMjQ3NSAtNC40MzM3NSA0MS40OTUgLTUuNjg3NSA0MS43NSBDLTEwLjMxMDAyNjQxIDQyLjA5ODg2OTkyIC0xMy4zMDg5OTE4NSA0MC43MzUwMDM3OSAtMTcgMzggQy0yMC42ODY4MTg5NSAzMy4xNjEwNTAxMyAtMjAuNjk0NzYzNjEgMjcuODUzMTQ1NTEgLTIwIDIyIEMtMTguNzI2MDcyMzggMTguMzEyMzE0NzcgLTE3Ljc0NDY5MDYyIDE2LjU4MzY3NjQzIC0xNC42ODc1IDE0LjE4NzUgQy05LjYzMTE5NDU5IDExLjk1MzMxODU0IC02LjQ1NjIyNjA3IDExLjkwODc1NDc5IC0xIDEzIEMtMC42NyA4LjcxIC0wLjM0IDQuNDIgMCAwIFogTS05LjQzNzUgMjEuMDYyNSBDLTExLjI1OTI1OTU5IDI0LjQ4NzQwODAyIC0xMS42MzY3NDE4MyAyNi4xNzk1NDkgLTExIDMwIEMtOS40NTY2NDk3MSAzMi45NTA0NzU1MyAtOS40NTY2NDk3MSAzMi45NTA0NzU1MyAtNyAzNSBDLTQuNDE0MTc4NzIgMzUuNTg0MDIxMzMgLTQuNDE0MTc4NzIgMzUuNTg0MDIxMzMgLTIgMzUgQzAuMzI4NjYyMjkgMzMuMTExNTM4MTcgMC4zMjg2NjIyOSAzMy4xMTE1MzgxNyAwLjE5NTMxMjUgMjkuOTYwOTM3NSBDMC4xNzIxMDkzOCAyOC43Nzc1NzgxMiAwLjE0ODkwNjI1IDI3LjU5NDIxODc1IDAuMTI1IDI2LjM3NSBDMC4xMDY5NTMxMyAyNS4xODY0ODQzNyAwLjA4ODkwNjI1IDIzLjk5Nzk2ODc1IDAuMDcwMzEyNSAyMi43NzM0Mzc1IEMwLjA0NzEwOTM4IDIxLjg1ODIwMzEzIDAuMDIzOTA2MjUgMjAuOTQyOTY4NzUgMCAyMCBDLTUuMTAxNDUzNyAxOC41Nzg2MzU2MiAtNS4xMDE0NTM3IDE4LjU3ODYzNTYyIC05LjQzNzUgMjEuMDYyNSBaICIgZmlsbD0iIzAwODQyOSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjEzMSw0MCkiLz4KPHBhdGggZD0iTTAgMCBDOS45IDAgMTkuOCAwIDMwIDAgQzMwIDMuMyAzMCA2LjYgMzAgMTAgQzI2LjcgMTAgMjMuNCAxMCAyMCAxMCBDMjAgMjMuODYgMjAgMzcuNzIgMjAgNTIgQzE1LjA1IDUyLjQ5NSAxNS4wNSA1Mi40OTUgMTAgNTMgQzEwIDM4LjgxIDEwIDI0LjYyIDEwIDEwIEM2LjcgMTAgMy40IDEwIDAgMTAgQzAgNi43IDAgMy40IDAgMCBaICIgZmlsbD0iI0Q4MUUyNiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTA2Niw1MikiLz4KPHBhdGggZD0iTTAgMCBDLTAuNDgxMTQ5MSA1Ljc3Mzc4OTI1IC0yLjE4NDY3MTgxIDkuOTU4NTk4MzYgLTUgMTUgQy00LjMxOTM3NSAxNC4yOTg3NSAtMy42Mzg3NSAxMy41OTc1IC0yLjkzNzUgMTIuODc1IEMtMS45NjMyMDUxNCAxMS45MTE3MTQxMyAtMC45ODM1MTk0NiAxMC45NTM4NjU2MSAwIDEwIEMwLjU1NDI5Njg3IDkuNDYxMTcxODggMS4xMDg1OTM3NSA4LjkyMjM0Mzc1IDEuNjc5Njg3NSA4LjM2NzE4NzUgQzUuMjUwOTM2OCA1LjA4MTYzODE0IDcuODk2NjgzMzIgMi44ODQwMTU1MyAxMyAzIEMxNS4wMDY0OTYwNyA0LjUzNjM3NTAxIDE1Ljg3Mzg5MDQ5IDUuNTg4MTQ4NyAxNi42MTcxODc1IDguMDE1NjI1IEMxNy4yNTE1NjExIDEzLjUxMzUyOTUzIDE2Ljg0OTMwMTA3IDE3LjA2MTIxMTQ3IDE0IDIyIEMxMS4wNTUwNzk0MyAyNS40MDk5MDgwMyA4LjEyMTcwMjE1IDI4LjEzNTQyMDQ2IDQgMzAgQzEuNjY3MTQ1MiAzMC4wNDcyNTM5OSAtMC42NjcyNDM5MyAzMC4wNTE4OTk3MyAtMyAzMCBDLTMuMjY1NTQ2ODggMzEuMDczNzg5MDYgLTMuNTMxMDkzNzUgMzIuMTQ3NTc4MTIgLTMuODA0Njg3NSAzMy4yNTM5MDYyNSBDLTQuMTYxMzk0MjEgMzQuNjkwMTIwMSAtNC41MTgxNjg2NiAzNi4xMjYzMTcxMiAtNC44NzUgMzcuNTYyNSBDLTUuMDQ5MDIzNDQgMzguMjY2OTcyNjYgLTUuMjIzMDQ2ODggMzguOTcxNDQ1MzEgLTUuNDAyMzQzNzUgMzkuNjk3MjY1NjIgQy02LjUxMjk0ODE1IDQ0LjE2MDI0OTk4IC03LjcxMjAxMjE2IDQ4LjU4NDg3MDUyIC05IDUzIEMtMTMuODc1IDUxLjI1IC0xMy44NzUgNTEuMjUgLTE1IDQ5IEMtMTUuODA3NzM2NjkgNDEuNjExMTk1NTcgLTE0LjQ0MzM4Mzc0IDM1LjkyMzE3NjkzIC0xMS44NzEwOTM3NSAyOS4wNDI5Njg3NSBDLTEwLjkzNjk5MDk5IDI1Ljc3OTg5MjMxIC0xMC44OTM4OTA4MiAyMy4yNTE1MDY5MSAtMTEuMDYyNSAxOS44NzUgQy0xMS4zNDcwMDEzMyAxMi4zOTk0ODI0MiAtOC41MjkxMDMxNSA3LjAzNDkyMzc4IC0zLjgxMjUgMS4zNzUgQy0yIDAgLTIgMCAwIDAgWiBNMTAgMTAgQzcuOTU1NDM5NDEgMTIuMTcyNjQ2NTUgNy45NTU0Mzk0MSAxMi4xNzI2NDY1NSA1Ljg3NSAxNC44NzUgQzUuMTUwNTQ2ODggMTUuNzc5OTIxODcgNC40MjYwOTM3NSAxNi42ODQ4NDM3NSAzLjY3OTY4NzUgMTcuNjE3MTg3NSBDMS44MDc5NDc2NiAxOS43ODY1NTgxMSAxLjgwNzk0NzY2IDE5Ljc4NjU1ODExIDIgMjIgQzYuMDE1MzA1MDUgMjEuMDg3NDMwNjcgNy43MTEyODI3NSAyMC4zNDk0OTk4MyAxMC4zNzUgMTcuMTI1IEMxMi4zMDc1Njg0OSAxMy45OTU1NjM5MiAxMi4zMDc1Njg0OSAxMy45OTU1NjM5MiAxMiAxMCBDMTEuMzQgMTAgMTAuNjggMTAgMTAgMTAgWiAiIGZpbGw9IiMyMjFFMjAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY2NSw3MCkiLz4KPHBhdGggZD0iTTAgMCBDMy4zIDAgNi42IDAgMTAgMCBDMTAgMTQuMTkgMTAgMjguMzggMTAgNDMgQzEzLjk2IDQzIDE3LjkyIDQzIDIyIDQzIEMyMy4zMiA0My4zMyAyNC42NCA0My42NiAyNiA0NCBDMjYgNDcuMyAyNiA1MC42IDI2IDU0IEMxMy4xMyA1My41MDUgMTMuMTMgNTMuNTA1IDAgNTMgQzAgMzUuNTEgMCAxOC4wMiAwIDAgWiAiIGZpbGw9IiNEODFFMjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDExMzMsNTIpIi8+CjxwYXRoIGQ9Ik0wIDAgQzMuMyAwIDYuNiAwIDEwIDAgQzEwLjMzIDQuNjIgMTAuNjYgOS4yNCAxMSAxNCBDMTIuNTQ2ODc1IDEzLjQ0MzEyNSAxMi41NDY4NzUgMTMuNDQzMTI1IDE0LjEyNSAxMi44NzUgQzE4LjM5OTA1MzgzIDExLjkwOTg5MTA3IDIwLjEwMjI4MDU4IDEyLjEzOTcyNDgyIDI0IDE0IEMyNS45NTA0Njk0MiAxNS42MTQxODE1OSAyNi44NzAxODY5MyAxNi43NDAzNzM4NiAyOCAxOSBDMjguMDcxODE4MjEgMjEuNzE3NjAxMDggMjguMDkyOTk1MDYgMjQuNDA4NTkzODggMjguMDYyNSAyNy4xMjUgQzI4LjA1Nzk4ODI4IDI3Ljg3OTEwMTU2IDI4LjA1MzQ3NjU2IDI4LjYzMzIwMzEyIDI4LjA0ODgyODEyIDI5LjQxMDE1NjI1IEMyOC4wMzcwMzQ5OSAzMS4yNzM0NzEyNyAyOC4wMTkwOTk0MiAzMy4xMzY3NDU1NSAyOCAzNSBDMjMuNTQ1IDM1LjQ5NSAyMy41NDUgMzUuNDk1IDE5IDM2IEMxOC45Mzk0MTQwNiAzNS4wODQ3NjU2MyAxOC44Nzg4MjgxMiAzNC4xNjk1MzEyNSAxOC44MTY0MDYyNSAzMy4yMjY1NjI1IEMxOC43MzI2MTcxOSAzMi4wMzgwNDY4NyAxOC42NDg4MjgxMiAzMC44NDk1MzEyNSAxOC41NjI1IDI5LjYyNSBDMTguNDgxMjg5MDYgMjguNDQxNjQwNjMgMTguNDAwMDc4MTIgMjcuMjU4MjgxMjUgMTguMzE2NDA2MjUgMjYuMDM5MDYyNSBDMTguMTg5MTUwNjQgMjMuMDg0ODEwOTkgMTguMTg5MTUwNjQgMjMuMDg0ODEwOTkgMTcgMjEgQzE1LjMzMzg4MDk1IDIwLjk1NzI3OSAxMy42NjYxNzExNSAyMC45NTkzNjE2OCAxMiAyMSBDMTAuNDUwNDk3MzIgMjIuNTQ5NTAyNjggMTAuNzgzNDQ4MDcgMjQuMDk5OTA1OTQgMTAuNjgzNTkzNzUgMjYuMjUzOTA2MjUgQzEwLjY0MTY5OTIyIDI3LjEwNzkxMDE2IDEwLjU5OTgwNDY5IDI3Ljk2MTkxNDA2IDEwLjU1NjY0MDYyIDI4Ljg0MTc5Njg4IEMxMC41MTczMjQyMiAyOS43Mzk2Mjg5MSAxMC40NzgwMDc4MSAzMC42Mzc0NjA5NCAxMC40Mzc1IDMxLjU2MjUgQzEwLjM5NDMxNjQxIDMyLjQ2NDE5OTIyIDEwLjM1MTEzMjgxIDMzLjM2NTg5ODQ0IDEwLjMwNjY0MDYyIDM0LjI5NDkyMTg4IEMxMC4yMDAyMjAxNiAzNi41Mjk3NTE1NiAxMC4wOTk1NzUxOSAzOC43NjQ4NTQ4NiAxMCA0MSBDNi43IDQxIDMuNCA0MSAwIDQxIEMwIDI3LjQ3IDAgMTMuOTQgMCAwIFogIiBmaWxsPSIjMDA4NDI5IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMDA1LDQwKSIvPgo8cGF0aCBkPSJNMCAwIEM0LjI5IDAgOC41OCAwIDEzIDAgQzkuOTk1NDE0NiAxNi4wODQxMjA5OCA2Ljc1MDQyOTQ2IDMyLjA3MjY0NDI3IDMgNDggQy0xLjI5IDQ4IC01LjU4IDQ4IC0xMCA0OCBDLTkuMzUyMDc5OTYgNDIuMjQzMTY0OTggLTguMzkyNDE1OTEgMzYuNjQxMDIxMyAtNy4xODc1IDMwLjk3NjU2MjUgQy03LjAxMzcxODI2IDMwLjE0OTE3NTcyIC02LjgzOTkzNjUyIDI5LjMyMTc4ODk0IC02LjY2MDg4ODY3IDI4LjQ2OTMyOTgzIEMtNi4yOTYwMjY4NiAyNi43MzYyMTU3NCAtNS45Mjk1NTA3IDI1LjAwMzQ0MDc3IC01LjU2MTUyMzQ0IDIzLjI3MDk5NjA5IEMtNC45OTczNjgxOSAyMC42MTI1OTg0NyAtNC40Mzk3NTU1NCAxNy45NTI4ODU2NSAtMy44ODI4MTI1IDE1LjI5Mjk2ODc1IEMtMy41MjY0Mjg0MSAxMy42MDQwODUwMSAtMy4xNjk2NzA5OSAxMS45MTUyOCAtMi44MTI1IDEwLjIyNjU2MjUgQy0yLjY0NTgwODExIDkuNDMwNzc3ODkgLTIuNDc5MTE2MjEgOC42MzQ5OTMyOSAtMi4zMDczNzMwNSA3LjgxNTA5Mzk5IEMtMS4xMTUxOTMxMyAyLjIzMDM4NjI2IC0xLjExNTE5MzEzIDIuMjMwMzg2MjYgMCAwIFogIiBmaWxsPSIjMjIzMTc1IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg5OCw1NCkiLz4KPHBhdGggZD0iTTAgMCBDMCAzIDAgMyAtMSA1IEMtMS4yMTM3NzcyMSAxMC42MDcwMzIxMyAtMS4yMTM3NzcyMSAxMC42MDcwMzIxMyAwIDE2IEMwLjc1NDE0MjM1IDIyLjQ5MDU2OTM3IC0wLjI2NzY1MDE5IDI1LjU4MjA3Mjg1IC00IDMxIEMtMy45Mjc0OTIxNCAzNC41NTI4ODQ5NCAtMy4zMTc3NDE2NCAzNi40OTE2MTMzNyAtMS40Mzc1IDM5LjUgQzAuNDMyMjMyNTQgNDIuNzUxNzA4NzYgMC40OTI4MjA0OCA0NC4yNjg2NDQ5NCAwIDQ4IEMtMS4xNzkwNDA1IDUxLjQwNDQxNTYzIC0yLjU0MTk2MzU0IDU0LjcwNjM5OTc4IC00IDU4IEMtMTMuMDQyMzMyOTIgNTUuOTEzMzA3NzkgLTE5LjIzMTExMzk5IDQ5LjIyNDI2NTc5IC0yNC42ODc1IDQyLjExMzI4MTI1IEMtMjUuOTc2NzY1MDIgNDAuMDM3NDExMDkgLTI2LjU2ODUwMjU3IDM4LjM4OTQxNzA0IC0yNyAzNiBDLTIyLjM3NSAzMyAtMjIuMzc1IDMzIC0xOSAzMyBDLTE5IDMzLjk5IC0xOSAzNC45OCAtMTkgMzYgQy0xNi4wMjk4MjMwNiAzNS4zNzE4OTgyNyAtMTYuMDI5ODIzMDYgMzUuMzcxODk4MjcgLTEzIDM0IEMtMTEuODAxNjE3OTEgMzEuNjcxNDU1MzcgLTExLjgwMTYxNzkxIDMxLjY3MTQ1NTM3IC0xMSAyOSBDLTEwLjMyMzI0MjE5IDI4LjI5NDg4MjgxIC05LjY0NjQ4NDM4IDI3LjU4OTc2NTYyIC04Ljk0OTIxODc1IDI2Ljg2MzI4MTI1IEMtNi4yODY2NTkzNyAyMi45NTIxNDY5MyAtNi42NDc5NDA5OCAyMC4wOTMyNzg3OCAtNi45Mzc1IDE1LjUgQy03LjQ2Nzc4NzQgNi4zMzQ3MzQyNSAtNy40Njc3ODc0IDYuMzM0NzM0MjUgLTQgMiBDLTEuODEyNSAwLjY4NzUgLTEuODEyNSAwLjY4NzUgMCAwIFogIiBmaWxsPSIjMTg3MjRFIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzQ4LDYwKSIvPgo8cGF0aCBkPSJNMCAwIEM0LjIyNzM1OTE0IDUuMDI2MTMzNCA0LjM0Mzc1IDYuNjc1NjQ0OTEgNC4zNDM3NSAxMy41OTc2NTYyNSBDLTEuOTI2MjUgMTMuNTk3NjU2MjUgLTguMTk2MjUgMTMuNTk3NjU2MjUgLTE0LjY1NjI1IDEzLjU5NzY1NjI1IEMtMTIuMzAwNDg3NzkgMTguNzcwMzg3NjYgLTEyLjMwMDQ4Nzc5IDE4Ljc3MDM4NzY2IC04LjUzMTI1IDE5LjU5NzY1NjI1IEMtMy43NTI5OTc1NyAxOS41OTc2NTYyNSAtMC4wNTEzNDIxNSAxOC4zNjE2NzI4MyA0LjM0Mzc1IDE2LjU5NzY1NjI1IEM0LjY1NjI1IDE5LjQxMDE1NjI1IDQuNjU2MjUgMTkuNDEwMTU2MjUgNC4zNDM3NSAyMi41OTc2NTYyNSBDMC45MDEyMjIwNSAyNS45MjU0MzMyNyAtMy40MTQ1NjU0OCAyNi4zMjk5Njg0IC04LjAyMzQzNzUgMjYuNjYwMTU2MjUgQy0xMy42ODcyNjY0IDI2LjUyNTcwMzM0IC0xOC4xMzQxNTE4MiAyNS4xMTk3NTQ0MyAtMjIuMTU2MjUgMjEuMDk3NjU2MjUgQy0yNC43NzM1ODM1MyAxNi43MzU0MzM3IC0yNS4zMTY1NTAzOCAxMi41OTU3NjMyOCAtMjQuNjU2MjUgNy41OTc2NTYyNSBDLTIzLjI5NDg1NjcgMy44NjEyMjM1NSAtMjEuNDAxMzMxNDIgMS4xNzA3OTU4IC0xOC4yMTg3NSAtMS4yNzczNDM3NSBDLTEyLjMxODQ0Njg5IC0zLjg2NzcyMDcyIC01LjI1NTA1Mjk0IC00LjQ0OTQ0MzQxIDAgMCBaIE0tMTMuNjU2MjUgNC41OTc2NTYyNSBDLTEzLjk4NjI1IDUuOTE3NjU2MjUgLTE0LjMxNjI1IDcuMjM3NjU2MjUgLTE0LjY1NjI1IDguNTk3NjU2MjUgQy0xMS4wMjYyNSA4LjU5NzY1NjI1IC03LjM5NjI1IDguNTk3NjU2MjUgLTMuNjU2MjUgOC41OTc2NTYyNSBDLTQuOTgzMjM1NTkgMy42NzQ2NDYzMyAtNC45ODMyMzU1OSAzLjY3NDY0NjMzIC03LjUzMTI1IDIuNjYwMTU2MjUgQy0xMC4yMTA5NzMzNSAyLjU4MTM0MDg2IC0xMS40ODU2NTkxNSAzLjAyNTg0OTA4IC0xMy42NTYyNSA0LjU5NzY1NjI1IFogIiBmaWxsPSIjMDA4NDI5IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMDkxLjY1NjI1LDU1LjQwMjM0Mzc1KSIvPgo8cGF0aCBkPSJNMCAwIEMzLjUyMDkwNTk1IDQuNTExMTYwNzUgMyA2LjQxMTcwNDg5IDMgMTIuNTYyNSBDLTMuMjcgMTIuNTYyNSAtOS41NCAxMi41NjI1IC0xNiAxMi41NjI1IEMtMTMuNjQ0MjM3NzkgMTcuNzM1MjMxNDEgLTEzLjY0NDIzNzc5IDE3LjczNTIzMTQxIC05Ljg3NSAxOC41NjI1IEMtNS4wOTY3NDc1NyAxOC41NjI1IC0xLjM5NTA5MjE1IDE3LjMyNjUxNjU4IDMgMTUuNTYyNSBDMy4zMTI1IDE4LjM3NSAzLjMxMjUgMTguMzc1IDMgMjEuNTYyNSBDLTAuNDQyNTI3OTUgMjQuODkwMjc3MDIgLTQuNzU4MzE1NDggMjUuMjk0ODEyMTUgLTkuMzY3MTg3NSAyNS42MjUgQy0xNS4wMzEwMTY0IDI1LjQ5MDU0NzA5IC0xOS40Nzc5MDE4MiAyNC4wODQ1OTgxOCAtMjMuNSAyMC4wNjI1IEMtMjYuMTE3MzMzNTMgMTUuNzAwMjc3NDUgLTI2LjY2MDMwMDM4IDExLjU2MDYwNzAzIC0yNiA2LjU2MjUgQy0yNC42Mzg2MDY3IDIuODI2MDY3MyAtMjIuNzQ1MDgxNDIgMC4xMzU2Mzk1NSAtMTkuNTYyNSAtMi4zMTI1IEMtMTIuNjA1NTU1NjYgLTUuMzY2NzY4MjUgLTUuOTgyNDU3MiAtNC44NjA3NDY0OCAwIDAgWiBNLTE1IDMuNTYyNSBDLTE1LjMzIDQuODgyNSAtMTUuNjYgNi4yMDI1IC0xNiA3LjU2MjUgQy0xMi4zNyA3LjU2MjUgLTguNzQgNy41NjI1IC01IDcuNTYyNSBDLTYuMzI2OTg1NTkgMi42Mzk0OTAwOCAtNi4zMjY5ODU1OSAyLjYzOTQ5MDA4IC04Ljg3NSAxLjYyNSBDLTExLjU1NDcyMzM1IDEuNTQ2MTg0NjEgLTEyLjgyOTQwOTE1IDEuOTkwNjkyODMgLTE1IDMuNTYyNSBaICIgZmlsbD0iIzAwODQyOSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjE2OSw1Ni40Mzc1KSIvPgo8cGF0aCBkPSJNMCAwIEMzLjMgMCA2LjYgMCAxMCAwIEMxMCAxOC4xNSAxMCAzNi4zIDEwIDU1IEM3LjAzIDU1IDQuMDYgNTUgMSA1NSBDMCA1NCAwIDU0IC0wLjEyMDI1NDUyIDUxLjgyOTY5NjY2IEMtMC4xMTgwMzM5MSA1MC44NzI2MTMwNyAtMC4xMTU4MTMyOSA0OS45MTU1Mjk0OCAtMC4xMTM1MjUzOSA0OC45Mjk0NDMzNiBDLTAuMTEzNDQ5ODYgNDcuODQ4Mzk4MjggLTAuMTEzMzc0MzMgNDYuNzY3MzUzMjEgLTAuMTEzMjk2NTEgNDUuNjUzNTQ5MTkgQy0wLjEwODEzNTIyIDQ0LjQ3NzUyNjQgLTAuMTAyOTczOTQgNDMuMzAxNTAzNiAtMC4wOTc2NTYyNSA0Mi4wODk4NDM3NSBDLTAuMDk2MjQxMyA0MC44OTI2NzIyNyAtMC4wOTQ4MjYzNSAzOS42OTU1MDA3OSAtMC4wOTMzNjg1MyAzOC40NjIwNTEzOSBDLTAuMDg3NzQ5NzkgMzQuNjIwNTA5MzQgLTAuMDc1MTk0MTEgMzAuNzc5MDI0NTcgLTAuMDYyNSAyNi45Mzc1IEMtMC4wNTc0ODc0MSAyNC4zNDA0OTU2MyAtMC4wNTI5MjQwOSAyMS43NDM0OTAzNSAtMC4wNDg4MjgxMiAxOS4xNDY0ODQzOCBDLTAuMDM3Nzc0MjcgMTIuNzY0MzAwNjggLTAuMDIwNDk3MDggNi4zODIxNjAwNyAwIDAgWiAiIGZpbGw9IiNEODFGMjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDExNjYsNTIpIi8+CjxwYXRoIGQ9Ik0wIDAgQzMuMyAwIDYuNiAwIDEwIDAgQzEwIDAuNjYgMTAgMS4zMiAxMCAyIEMxMC45OSAxLjM0IDExLjk4IDAuNjggMTMgMCBDMTYuMzkyMTAyODcgLTAuNTQ2MTg2MDYgMTkuNjA2NTQzNSAtMC41MzU4MDg5MiAyMyAwIEMyNi42MTk5NTgyMSAyLjY1OTU2MTEzIDI4LjIwNjgzODE3IDQuNjQ4NDIzNTEgMjkgOSBDMjkuMDc4MTg2MzYgMTAuNTEzOTU2OTYgMjkuMTA3ODk5MDkgMTIuMDMwOTM1MDcgMjkuMDk3NjU2MjUgMTMuNTQ2ODc1IEMyOS4wOTQ0MzM1OSAxNC4zOTEyMTA5NCAyOS4wOTEyMTA5NCAxNS4yMzU1NDY4NyAyOS4wODc4OTA2MiAxNi4xMDU0Njg3NSBDMjkuMDc5NTExNzIgMTYuOTc4MTY0MDYgMjkuMDcxMTMyODEgMTcuODUwODU5MzcgMjkuMDYyNSAxOC43NSBDMjkuMDU3OTg4MjggMTkuNjM4MTY0MDYgMjkuMDUzNDc2NTYgMjAuNTI2MzI4MTIgMjkuMDQ4ODI4MTIgMjEuNDQxNDA2MjUgQzI5LjAzNzA3NDIyIDIzLjYyNzYzMzE2IDI5LjAxOTEzOTY2IDI1LjgxMzgyNTI4IDI5IDI4IEMyNS43IDI4IDIyLjQgMjggMTkgMjggQzE4LjUwNSAxOC4xIDE4LjUwNSAxOC4xIDE4IDggQzE2LjY4IDcuNjcgMTUuMzYgNy4zNCAxNCA3IEMxMy4wMSA3LjY2IDEyLjAyIDguMzIgMTEgOSBDMTAuNDE0MDczNjYgMTIuMTE2MTA1NTQgMTAuNDE0MDczNjYgMTIuMTE2MTA1NTQgMTAuMzEyNSAxNS42MjUgQzEwLjI0Njc1NzgxIDE2LjgxMzUxNTYzIDEwLjE4MTAxNTYzIDE4LjAwMjAzMTI1IDEwLjExMzI4MTI1IDE5LjIyNjU2MjUgQzEwLjA3NTg5ODQ0IDIwLjE0MTc5Njg3IDEwLjAzODUxNTYyIDIxLjA1NzAzMTI1IDEwIDIyIEM2LjcgMjEuNjcgMy40IDIxLjM0IDAgMjEgQzAgMTQuMDcgMCA3LjE0IDAgMCBaICIgZmlsbD0iIzAwODQyOSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjAzNiw1MykiLz4KPHBhdGggZD0iTTAgMCBDNy44MjQzNDA1OCAtMC4xMTcwMzA3NCA3LjgyNDM0MDU4IC0wLjExNzAzMDc0IDEwLjQ4ODI4MTI1IDIuNDE0MDYyNSBDMTIuNzg3NDM3MTMgNi4yMDk3NTk4NSAxMy43NDA2OTg2IDkuNTU1ODA4MzkgMTMgMTQgQzExLjk1MTAwNjYgMTUuNzE2NTM0NjYgMTAuOTAxMjc3MjcgMTcuNDMyNzI1OTggOS44MzIwMzEyNSAxOS4xMzY3MTg3NSBDOC4yODEzNDc3OCAyMi42MDkzNzYxMSA5LjE2NDUxNTkyIDI1LjM1OTY3NjUzIDEwIDI5IEMxMC4zNTA2MjUgMjkuNzAxMjUgMTAuNzAxMjUgMzAuNDAyNSAxMS4wNjI1IDMxLjEyNSBDMTIuMzk2NjM0OTIgMzMuNzkzMjY5ODUgMTIuMTk1NTczOTMgMzYuMDY2MzkwOTggMTIgMzkgQzExIDQwIDExIDQwIDguMTI4OTA2MjUgNDAuMTMyODEyNSBDNi45NTE5OTIxOSA0MC4xMzAyMzQzOCA1Ljc3NTA3ODEyIDQwLjEyNzY1NjI1IDQuNTYyNSA0MC4xMjUgQzMuMzg4MTY0MDYgNDAuMTI3NTc4MTIgMi4yMTM4MjgxMiA0MC4xMzAxNTYyNSAxLjAwMzkwNjI1IDQwLjEzMjgxMjUgQy0yIDQwIC0yIDQwIC00IDM5IEMtMy4yNDgxNzUxOCAzMS40ODE3NTE4MiAtMy4yNDgxNzUxOCAzMS40ODE3NTE4MiAtMS45Mzc1IDI4LjkzNzUgQy0wLjQzNzQ4NjY0IDI1LjgzNzQ3MjM5IC0wLjY0OTM5MDYgMjMuMzg5MjI0MiAtMSAyMCBDLTIuMzE0MzE2OTUgMTcuOTg3NDUyMTggLTMuNjQ3MjE4ODUgMTUuOTg2ODk3MzEgLTUgMTQgQy01Ljg1NTE0NzQgOS42MjkyNDY2MSAtNC43NjA4MzQzNiA3LjI4MzU1ODE3IC0yLjUgMy42MjUgQy0xLjY3OTQ5NTggMi40MDc5MTg3NiAtMC44NTAyODE2NCAxLjE5NjQ2NzczIDAgMCBaICIgZmlsbD0iI0ZBRkJGQiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTM1Nyw4MikiLz4KPHBhdGggZD0iTTAgMCBDMy45MDkzODcwMyAzLjczOTQxMzY4IDMuOTA5Mzg3MDMgMy43Mzk0MTM2OCA0LjEzMjgxMjUgNi44NDc2NTYyNSBDNC4xMzAyMzQzOCA3LjU3ODU1NDY5IDQuMTI3NjU2MjUgOC4zMDk0NTMxMyA0LjEyNSA5LjA2MjUgQzQuMTIzNzEwOTQgOS44NjU1ODU5NCA0LjEyMjQyMTg4IDEwLjY2ODY3MTg4IDQuMTIxMDkzNzUgMTEuNDk2MDkzNzUgQzQuMDAyNzk5MjggMTMuOTQyMTE4MSAzLjYyMDk4NDQgMTYuMjE4MTI5NDkgMy4xODc1IDE4LjYyNSBDMi43MDMyNTg3MiAyMi4yNzU5MjQ0MiAzLjIxMzk4MTIzIDIzLjg4MzIwMTQgNS40Mzc1IDI2LjgxMjUgQzUuOTEwNTg1OTQgMjcuMzM0NTcwMzEgNi4zODM2NzE4NyAyNy44NTY2NDA2MiA2Ljg3MTA5Mzc1IDI4LjM5NDUzMTI1IEM4IDMwIDggMzAgOCAzNCBDOC42NiAzNCA5LjMyIDM0IDEwIDM0IEM3Ljk4MzAzMjM0IDI5LjA1NjczNDA2IDcuOTgzMDMyMzQgMjkuMDU2NzM0MDYgNS4yNSAyNC41IEMzLjUwMjExMTMyIDIxLjAwNDIyMjYzIDQuMzAxODA1ODYgMTguODA4MzMxNjUgNSAxNSBDNS4yMjA5MzE1MSAxMC40OTc1NjgxMyA1LjIzOTU1NzQ5IDYuMzU4MTI2NzUgNCAyIEM3LjQ0NTAwNjYgNC45MzU2NjQyMyA3LjU3NDgyNDY0IDcuMjU3NDQyOTQgNy45Njg3NSAxMS41OTc2NTYyNSBDNy45OTg4MzUyIDEzLjkxMDQ1NTggNy43MDc4ODYzOCAxNS44NjYzODczNSA3LjI1IDE4LjEyNSBDNi45ODQxMjA2MSAyMi4yNDYxMzA1MyA3LjEwOTg0MDQyIDIyLjY4NTU3NDIyIDkuNDM3NSAyNS43NSBDOS45MTA1ODU5NCAyNi4yODEwOTM3NSAxMC4zODM2NzE4NyAyNi44MTIxODc1IDEwLjg3MTA5Mzc1IDI3LjM1OTM3NSBDMTIgMjkgMTIgMjkgMTIgMzMgQzE0LjMxIDMzLjY2IDE2LjYyIDM0LjMyIDE5IDM1IEMxOSAzNS45OSAxOSAzNi45OCAxOSAzOCBDMTkuNjM5Mzc1IDM4LjI4ODc1IDIwLjI3ODc1IDM4LjU3NzUgMjAuOTM3NSAzOC44NzUgQzIzIDQwIDIzIDQwIDI0IDQyIEMxOS4yNDAwNTc5OSA0OC4wNjgxMzc5OSAxMy45MjU3ODgzNiA1My40MjgxMzM2MyA3IDU3IEM0IDU2IDQgNTYgMi43OTY4NzUgNTMuOTI1NzgxMjUgQy0wLjc2MDI4NTczIDQ1LjA0NjE1MjQyIC0wLjc2MDI4NTczIDQ1LjA0NjE1MjQyIDEgNDAgQzEuNTE1NjI1IDM5LjE3NSAyLjAzMTI1IDM4LjM1IDIuNTYyNSAzNy41IEM0LjM4NzAyNzU2IDM0LjMyNjkwODU4IDQuNTE2NDQxMTggMzIuNjE1MDg4MjUgNCAyOSBDMy4zNCAyOC4wMzA2MjUgMi42OCAyNy4wNjEyNSAyIDI2LjA2MjUgQy0wLjQxMDU3NzgyIDIyLjM3MTMwMjcyIC0wLjQwODMyNzU1IDIwLjMyODI3MTk5IDAgMTYgQzAuMzMgMTUuMDEgMC42NiAxNC4wMiAxIDEzIEMxLjA5MjQ3MzgxIDExLjUyMzEzODg5IDEuMTI5OTkwNzEgMTAuMDQyMjQ0OTkgMS4xMjUgOC41NjI1IEMxLjEyODg2NzE5IDcuNDE5NzQ2MDkgMS4xMjg4NjcxOSA3LjQxOTc0NjA5IDEuMTMyODEyNSA2LjI1MzkwNjI1IEMxLjAwMjc2MDE1IDQuMDQ2ODQxNDEgMC42MDg1NjE5OSAyLjEyMDMwNzI0IDAgMCBaICIgZmlsbD0iIzI5N0Q1QiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTM3NCw2MSkiLz4KPHBhdGggZD0iTTAgMCBDMCAyLjY0IDAgNS4yOCAwIDggQy0wLjk5IDcuNjcgLTEuOTggNy4zNCAtMyA3IEMtNi41NTg4MDA1MSA2LjYyNjg5OTk1IC05LjgyNzU4NTIyIDYuMzQwNTE2NjkgLTEzIDguMTI1IEMtMTQuNDYyMjEyMTcgMTAuODY2NjQ3ODEgLTE0LjMxODMzNzMzIDEyLjk0Mzk2MTYyIC0xNCAxNiBDLTEyLjMyMDg1NTg1IDE5LjIyNTQwMTU2IC0xMi4zMjA4NTU4NSAxOS4yMjU0MDE1NiAtOS4zMTI1IDE5Ljc1IEMtNS43MDcwOTgyNCAyMC4wMjIxMDU3OSAtMi41NTAxMDA2NiAxOS42MzkwMTgxMiAxIDE5IEMxIDIxLjMxIDEgMjMuNjIgMSAyNiBDLTYuMzQ1MjM2NzIgMjguMjcwMzQ1ODkgLTEyLjM4MTY4ODY4IDI4Ljg3NjE2MTQyIC0xOS4zNzUgMjUuMjUgQy0yMi44MjkzNDgyMSAyMi4yODkxMzAxIC0yNC42OTA4NzcyNCAyMC4yNzgzNDkyMiAtMjUuMzE2NDA2MjUgMTUuNjY3OTY4NzUgQy0yNS41ODIxMzY1MiA5Ljk1MDQ4MTkxIC0yNC45Njg0NzE1MiA2LjM5NzQ5NTQ3IC0yMSAyIEMtMTQuMTcwMDE0MTEgLTMuMjEyMzU3NjUgLTcuODE4OTkzNjcgLTEuODY5NzU5MzYgMCAwIFogIiBmaWxsPSIjMDA4NDI5IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMDAyLDU0KSIvPgo8cGF0aCBkPSJNMCAwIEMzIDMuMTkwMzcxOTkgMyAzLjE5MDM3MTk5IDMgNiBDLTAuMDkyNjI3NjcgNy41NDYzMTM4NCAtMy4zNjcwODkxIDcuMzkwNjA3MTYgLTYuNzg1MTU2MjUgNy42MjEwOTM3NSBDLTcuODgxNTAzOTEgNy44MDg2NTIzNCAtNy44ODE1MDM5MSA3LjgwODY1MjM0IC05IDggQy05LjMzIDguNjYgLTkuNjYgOS4zMiAtMTAgMTAgQy03LjY5IDEwLjMzIC01LjM4IDEwLjY2IC0zIDExIEMtMi40Mzc1IDEyLjkzNzUgLTIuNDM3NSAxMi45Mzc1IC0yIDE1IEMtMyAxNiAtMyAxNiAtNS4yODUxNTYyNSAxNi4wOTc2NTYyNSBDLTYuNjU5OTQxNDEgMTYuMDgwMjUzOTEgLTYuNjU5OTQxNDEgMTYuMDgwMjUzOTEgLTguMDYyNSAxNi4wNjI1IEMtOC45ODE2MDE1NiAxNi4wNTM0NzY1NiAtOS45MDA3MDMxMiAxNi4wNDQ0NTMxMyAtMTAuODQ3NjU2MjUgMTYuMDM1MTU2MjUgQy0xMS41NTc5Mjk2OSAxNi4wMjM1NTQ2OSAtMTIuMjY4MjAzMTMgMTYuMDExOTUzMTMgLTEzIDE2IEMtMTMuMzMgMTcuNjUgLTEzLjY2IDE5LjMgLTE0IDIxIEMtMTIuNzYyNSAyMC42NDkzNzUgLTExLjUyNSAyMC4yOTg3NSAtMTAuMjUgMTkuOTM3NSBDLTcuMDk2NzA4IDE5LjA0NDA2NzI3IC01LjEzMjI1ODM2IDE4Ljk5MTE4NzA2IC0yIDIwIEMtMS42NyAyMS4zMiAtMS4zNCAyMi42NCAtMSAyNCBDLTcuMDgzMDUwMzggMjguMTkwNTQ1ODIgLTExLjYyMjE1Nzc3IDI5Ljk3NTQ2ODkgLTE5IDI5IEMtMjEuMDYyNSAyNy4zNzUgLTIxLjA2MjUgMjcuMzc1IC0yMiAyNSBDLTIyLjU2NDA4OTkgMjAuMDM2MDA4OTIgLTIxLjQ2ODAwNjg0IDE1LjcxMzA3NDU4IC0yMCAxMSBDLTE4LjM3NSA5IC0xOC4zNzUgOSAtMTcgOCBDLTE3LjQ5NSA3LjU2Njg3NSAtMTcuOTkgNy4xMzM3NSAtMTguNSA2LjY4NzUgQy0yMCA1IC0yMCA1IC0yMCAyIEMtNi4wODE1NDUwNiAtMS4zMTY3MzgyIC02LjA4MTU0NTA2IC0xLjMxNjczODIgMCAwIFogIiBmaWxsPSIjMjIxRTIwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2NTIsNzEpIi8+CjxwYXRoIGQ9Ik0wIDAgQzIgMiAyIDIgMi4zMTI1IDUuMTg3NSBDMS45Njk4MjgxOCA5LjM2ODA5NjIyIDAuNjY2NjA4NjQgMTIuMTgwNjg4NTMgLTEgMTYgQy0xLjU4NzYzMjQ0IDIwLjExMzQyNzEgLTEuMzMwNDM1NTggMjEuNTA0MzQ2NjQgMSAyNSBDMy4zMzQ1ODYzNSAyOC41MDE4Nzk1MyAzLjY3MjYwNzI3IDI5Ljg4MDI4MDQ3IDMgMzQgQzEuOTUxMDA2NiAzNS43MTY1MzQ2NiAwLjkwMTI3NzI3IDM3LjQzMjcyNTk4IC0wLjE2Nzk2ODc1IDM5LjEzNjcxODc1IEMtMS43MTg2NTIyMiA0Mi42MDkzNzYxMSAtMC44MzU0ODQwOCA0NS4zNTk2NzY1MyAwIDQ5IEMwLjM1MDYyNSA0OS43MDEyNSAwLjcwMTI1IDUwLjQwMjUgMS4wNjI1IDUxLjEyNSBDMi4zODM4NTAwOCA1My43Njc3MDAxNyAyLjEzMjA5ODM3IDU2LjA5MzgzNTkxIDIgNTkgQzEuMDEgNTkgMC4wMiA1OSAtMSA1OSBDLTEuMjg4NzUgNTcuNzgzMTI1IC0xLjU3NzUgNTYuNTY2MjUgLTEuODc1IDU1LjMxMjUgQy0yLjQ4MDE5MTExIDUyLjgzMDc4MTA3IC0zLjEwNzk3MDM0IDUwLjc2NzAxMTM3IC00LjE4NzUgNDguNDM3NSBDLTUuMzQyMzE4NDQgNDQuOTczMDQ0NjggLTQuODE4NjU2ODYgNDIuNTI2NTIxODcgLTQgMzkgQy0zLjIyNjU2MjUgMzcuNzMxNTYyNSAtMy4yMjY1NjI1IDM3LjczMTU2MjUgLTIuNDM3NSAzNi40Mzc1IEMtMC42MTEwNTMyMSAzMy4zNDA0ODE1MiAtMC41NTY2MDA4MSAzMS41NDcxOTM1MyAtMSAyOCBDLTIuNDI2MjE2ODQgMjUuMjg4NzM2MTYgLTIuNDI2MjE2ODQgMjUuMjg4NzM2MTYgLTQgMjMgQy00IDIyLjM0IC00IDIxLjY4IC00IDIxIEMtNi45NyAyMSAtOS45NCAyMSAtMTMgMjEgQy0xNi44OTY3Nzg1MSAyNy4wMDIyMTQ0NSAtMTYuODk2Nzc4NTEgMjcuMDAyMjE0NDUgLTE3IDM0IEMtMTYuMzQgMzQuOTY5Mzc1IC0xNS42OCAzNS45Mzg3NSAtMTUgMzYuOTM3NSBDLTEyLjUzNTY0NjkzIDQwLjcxMTA0MDY0IC0xMi40NTUwODUxNiA0Mi41NjI4MzYyOCAtMTMgNDcgQy0xMy45MzU3ODk5NSA0OS4zNTk4MTgxMyAtMTQuOTMzNDc4MDggNTEuNjk2MzEyNjQgLTE2IDU0IEMtMTYuNjkxNDA1MjIgNTYuNzc4ODg2MTMgLTE2LjY5MTQwNTIyIDU2Ljc3ODg4NjEzIC0xNyA1OSBDLTE3Ljk5IDU5IC0xOC45OCA1OSAtMjAgNTkgQy0yMC4yNTgxMzMwMiA1NS4zODYxMzc3NCAtMjAuMTY4MTU2NjcgNTMuMzI5MzA2OCAtMTguNSA1MC4wNjI1IEMtMTYuNjczNDE0OTMgNDYuMzMzMjIyMTUgLTE2LjQ4NjE3MTMzIDQ0LjExMDYyOTM5IC0xNyA0MCBDLTE4LjMxNDMxNjk1IDM3Ljk4NzQ1MjE4IC0xOS42NDcyMTg4NSAzNS45ODY4OTczMSAtMjEgMzQgQy0yMS41IDMxIC0yMS41IDMxIC0yMSAyOCBDLTIwLjMxOTM3NSAyNy4wNzE4NzUgLTE5LjYzODc1IDI2LjE0Mzc1IC0xOC45Mzc1IDI1LjE4NzUgQy0xNi4yOTQzMTIzNCAyMC44MzkwMjk5NyAtMTYuODYxMjA4MTUgMTcuODI0MTczMzMgLTE4IDEzIEMtMTguNjU5OTY3OSAxMS4zMzA2Njk0MiAtMTkuMzI1NTg4NjkgOS42NjM1NDc5IC0yMCA4IEMtMjAuMTI1IDQuNjg3NSAtMjAuMTI1IDQuNjg3NSAtMjAgMiBDLTE5LjM0IDIgLTE4LjY4IDIgLTE4IDIgQy0xOCAyLjY2IC0xOCAzLjMyIC0xOCA0IEMtMTYuNjggNCAtMTUuMzYgNCAtMTQgNCBDLTE0IDQuNjYgLTE0IDUuMzIgLTE0IDYgQy0xNC45OSA2IC0xNS45OCA2IC0xNyA2IEMtMTUuOTcwMjgxNCAxMS4yMzU1MDE3NyAtMTUuOTcwMjgxNCAxMS4yMzU1MDE3NyAtMTMuNzUgMTYgQy0xMC45NzQxNDAxOSAxNy41ODYyMDU2MSAtOS4xMjcxMzUyNSAxNy41MTA1NTI2OSAtNiAxNyBDLTIuMzk2ODM5NzggMTMuNjg4OTg3OTEgLTEuNDQ3Mjk0NzYgMTAuODA4NDE4NyAtMSA2IEMtMy4zMSA2LjMzIC01LjYyIDYuNjYgLTggNyBDLTguMDQyNzIxIDUuMzMzODgwOTUgLTguMDQwNjM4MzIgMy42NjYxNzExNSAtOCAyIEMtNS45NTQ0Nzk1OCAtMC4wNDU1MjA0MiAtMi43Mjk0MTkxNCAwLjIzOTQyMjczIDAgMCBaICIgZmlsbD0iIzIyNzg1NSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTM3MCw2MikiLz4KPHBhdGggZD0iTTAgMCBDMC45NDg3NSAwLjY2IDEuODk3NSAxLjMyIDIuODc1IDIgQzMuMzAxNTM3MjcgNi4zNTA2ODAxOCAzLjQ1MjcyODcyIDguMjkzODg3MTIgMC42MjUgMTEuNzUgQy0wLjI4MjUgMTIuNDkyNSAtMS4xOSAxMy4yMzUgLTIuMTI1IDE0IEMtMi43MDYzNjcxOSAxNC41MTY5MTQwNiAtMy4yODc3MzQzOCAxNS4wMzM4MjgxMiAtMy44ODY3MTg3NSAxNS41NjY0MDYyNSBDLTYuNzk2MjA2MzYgMTcuNDI5OTAwMDYgLTkuMjc0ODQ0NzUgMTcuNzMzMjU1NzkgLTEyLjY4NzUgMTguMTg3NSBDLTEzLjgyMzE2NDA2IDE4LjM0NjA1NDY5IC0xNC45NTg4MjgxMiAxOC41MDQ2MDkzOCAtMTYuMTI4OTA2MjUgMTguNjY3OTY4NzUgQy0xOS4xMjUgMTkgLTE5LjEyNSAxOSAtMjIuMTI1IDE5IEMtMjMuOTMxNDYxMTggMTUuMzg3MDc3NjQgLTI1LjEyNSAxMi45OTMwMDYgLTI1LjEyNSA4LjkzNzUgQy0yMy41NjkwNzIyNyA0LjM2Njk2MjI5IC0yMS4wMzM3Mjg5IDEuMTk5NzcyNDUgLTE2LjkzNzUgLTEuMzc1IEMtMTEuMDE1MDAyNTMgLTIuNjkxMTEwNTUgLTUuMzkzODE5MTMgLTMuMDkxNTc5MjYgMCAwIFogTS0xOC4xMjUgNSBDLTE4Ljc4NSA2LjMyIC0xOS40NDUgNy42NCAtMjAuMTI1IDkgQy0xOC44MDUgNy42OCAtMTcuNDg1IDYuMzYgLTE2LjEyNSA1IEMtMTYuNzg1IDUgLTE3LjQ0NSA1IC0xOC4xMjUgNSBaIE0tMTIuMTI1IDkgQy0xMy45NTgwMDkwOSAxMS4xMDU3NTY0MyAtMTMuOTU4MDA5MDkgMTEuMTA1NzU2NDMgLTE1LjEyNSAxMyBDLTkuMzI4NzM4OTMgMTIuNjAwMjU3ODYgLTUuNzEwMjc1MzcgMTEuODk3NDg0MDcgLTEuMTI1IDggQy0xLjEyNSA3LjAxIC0xLjEyNSA2LjAyIC0xLjEyNSA1IEMtNS45NTc3NzI2OCA0LjQzMTQzODUxIC04LjM2ODA4Njg2IDYuMDU5ODA3MTEgLTEyLjEyNSA5IFogIiBmaWxsPSIjMjIxRTIwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1ODUuMTI1LDQ5KSIvPgo8cGF0aCBkPSJNMCAwIEMyLjk3IDAgNS45NCAwIDkgMCBDOS4zMyAxLjMyIDkuNjYgMi42NCAxMCA0IEMxMC41MTU2MjUgMy4zNCAxMS4wMzEyNSAyLjY4IDExLjU2MjUgMiBDMTQuODI2NDEzMTkgLTAuNjc4MDgyNjIgMTYuODgzOTk1MjUgLTAuMzgxMTExNTUgMjEgMCBDMjEuNjYgMC4zMyAyMi4zMiAwLjY2IDIzIDEgQzIyLjY3IDMuNjQgMjIuMzQgNi4yOCAyMiA5IEMxOSAxMCAxOSAxMCAxNy4wNjI1IDkuMzEyNSBDMTYuMzgxODc1IDkuMjA5Mzc1IDE1LjcwMTI1IDkuMTA2MjUgMTUgOSBDMTEuNjQ5OTE3OTUgMTEuNzc1NzgyMjcgMTAuMTM2Mzk1ODYgMTMuNjg5OTI2MiA5LjY4MzU5Mzc1IDE4LjAzOTA2MjUgQzkuNjAyMzgyODEgMTkuMjIyNDIxODcgOS41MjExNzE4OCAyMC40MDU3ODEyNSA5LjQzNzUgMjEuNjI1IEM5LjM1MzcxMDk0IDIyLjgxMzUxNTYzIDkuMjY5OTIxODcgMjQuMDAyMDMxMjUgOS4xODM1OTM3NSAyNS4yMjY1NjI1IEM5LjEyMzAwNzgxIDI2LjE0MTc5Njg3IDkuMDYyNDIxODcgMjcuMDU3MDMxMjUgOSAyOCBDNi4wMyAyOCAzLjA2IDI4IDAgMjggQzAgMTguNzYgMCA5LjUyIDAgMCBaICIgZmlsbD0iIzAwODQyOSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjE3Niw1MykiLz4KPHBhdGggZD0iTTAgMCBDMC40OTUgMS40ODUgMC40OTUgMS40ODUgMSAzIEMwLjAxIDMuOTkgLTAuOTggNC45OCAtMiA2IEMtMi43MjcwMzEyNSA1LjczNDQ1MzEzIC0zLjQ1NDA2MjUgNS40Njg5MDYyNSAtNC4yMDMxMjUgNS4xOTUzMTI1IEMtMjUuMTQ4Njk1MTMgLTIuMTYyNDkwMzQgLTQ1LjE2MzM2MjQ5IC0xLjA2MjQxOCAtNjYgNiBDLTY2LjMzIDQuMzUgLTY2LjY2IDIuNyAtNjcgMSBDLTQ4Ljc3Mzk1ODUzIC05LjkzNTYyNDg4IC0xOC43MTE0Nzg5MyAtOC4zODU4NDYyMiAwIDAgWiAiIGZpbGw9IiNFODIwMjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4MjAsMzUpIi8+CjxwYXRoIGQ9Ik0wIDAgQzAuNjYgMCAxLjMyIDAgMiAwIEMyLjMzIDEuNjUgMi42NiAzLjMgMyA1IEM0LjY1IDUgNi4zIDUgOCA1IEM3LjAxIDYuNDg1IDcuMDEgNi40ODUgNiA4IEM1LjgzMjg2NDMxIDEwLjYyNTMxNTI0IDUuODMyODY0MzEgMTAuNjI1MzE1MjQgNiAxMyBDNi45MDc1IDEyLjQ4NDM3NSA3LjgxNSAxMS45Njg3NSA4Ljc1IDExLjQzNzUgQzEyIDEwIDEyIDEwIDE0LjM3NSAxMC4zMTI1IEMxNC45MTEyNSAxMC41MzkzNzUgMTUuNDQ3NSAxMC43NjYyNSAxNiAxMSBDMTUuNjcgMTIuMzIgMTUuMzQgMTMuNjQgMTUgMTUgQzE2Ljk4IDE0LjY3IDE4Ljk2IDE0LjM0IDIxIDE0IEMxOS42OCAxNi42NCAxOC4zNiAxOS4yOCAxNyAyMiBDMTYuMjM4MTY0MDYgMjEuNzgzNDM3NSAxNS40NzYzMjgxMyAyMS41NjY4NzUgMTQuNjkxNDA2MjUgMjEuMzQzNzUgQzMuNTQ5MjExNDUgMTguMzM5MTEzMiAtMy45OTQ5NjA1MyAxOC41NDQyMTE5MSAtMTUgMjIgQy0xNi4zMiAxOS4zNiAtMTcuNjQgMTYuNzIgLTE5IDE0IEMtMTYuNjkgMTQuMzMgLTE0LjM4IDE0LjY2IC0xMiAxNSBDLTEyLjY2IDEzLjM1IC0xMy4zMiAxMS43IC0xNCAxMCBDLTEwLjI4MTExNzYxIDEwLjUwNzEyMDMzIC03LjI2NTQ1NzYxIDExLjExNjA4MjE1IC00IDEzIEMtMy43OTkxMzU1NyA5LjI4NDAwODA5IC0zLjg0ODA1NjMgOC4yMjc5MTU1NSAtNiA1IEMtNC4zNSA1IC0yLjcgNSAtMSA1IEMtMC42NyAzLjM1IC0wLjM0IDEuNyAwIDAgWiAiIGZpbGw9IiNGM0Y4RjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzNjAsMzcpIi8+CjxwYXRoIGQ9Ik0wIDAgQzEuNzQyMTY3OTcgMC4wNTQxNDA2MyAxLjc0MjE2Nzk3IDAuMDU0MTQwNjMgMy41MTk1MzEyNSAwLjEwOTM3NSBDNC4zOTk5NjA5NCAwLjE1NTc4MTI1IDUuMjgwMzkwNjMgMC4yMDIxODc1IDYuMTg3NSAwLjI1IEM1Ljg1NzUgMS45IDUuNTI3NSAzLjU1IDUuMTg3NSA1LjI1IEMzLjIwNzUgNS41OCAxLjIyNzUgNS45MSAtMC44MTI1IDYuMjUgQy0xLjA1MDMzMjAzIDcuMzU0MDgyMDMgLTEuMDUwMzMyMDMgNy4zNTQwODIwMyAtMS4yOTI5Njg3NSA4LjQ4MDQ2ODc1IEMtMi43NDE2MTc3NyAxNC41MzkxODMxOCAtMy44MTM2MDk0MSAxOC40MDQ2OTk1NSAtOC44MTI1IDIyLjI1IEMtMTEuNTc3MDIwMzMgMjMuNjMyMjYwMTYgLTEzLjg1ODYzNjMgMjMuMzQ1MjUzODcgLTE2LjkzNzUgMjMuMzEyNSBDLTE4LjAzMzIwMzEyIDIzLjMwMzQ3NjU2IC0xOS4xMjg5MDYyNSAyMy4yOTQ0NTMxMyAtMjAuMjU3ODEyNSAyMy4yODUxNTYyNSBDLTIxLjUyMjM4MjgxIDIzLjI2Nzc1MzkxIC0yMS41MjIzODI4MSAyMy4yNjc3NTM5MSAtMjIuODEyNSAyMy4yNSBDLTIyLjQ4MjUgMjEuNiAtMjIuMTUyNSAxOS45NSAtMjEuODEyNSAxOC4yNSBDLTE5LjgzMjUgMTcuOTIgLTE3Ljg1MjUgMTcuNTkgLTE1LjgxMjUgMTcuMjUgQy0xNS41ODE3NTc4MSAxNi4zNTc5Njg3NSAtMTUuMzUxMDE1NjIgMTUuNDY1OTM3NSAtMTUuMTEzMjgxMjUgMTQuNTQ2ODc1IEMtMTQuNzg3MTQ4NDQgMTMuMzc2NDA2MjUgLTE0LjQ2MTAxNTYzIDEyLjIwNTkzNzUgLTE0LjEyNSAxMSBDLTEzLjgxMTc1NzgxIDkuODM5ODQzNzUgLTEzLjQ5ODUxNTYyIDguNjc5Njg3NSAtMTMuMTc1NzgxMjUgNy40ODQzNzUgQy0xMC40NDExMzY5OSAwLjk5NjQ1MTA5IC02Ljc2ODAwODc1IC0wLjI3MzQ1NDkgMCAwIFogIiBmaWxsPSIjRjVGOUY2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMDM2LjgxMjUsODQuNzUpIi8+CjxwYXRoIGQ9Ik0wIDAgQzIuOTcgMCA1Ljk0IDAgOSAwIEM5IDkuMjQgOSAxOC40OCA5IDI4IEM2LjAzIDI4IDMuMDYgMjggMCAyOCBDMCAxOC43NiAwIDkuNTIgMCAwIFogIiBmaWxsPSIjMDA4NDJBIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMDk5LDUzKSIvPgo8cGF0aCBkPSJNMCAwIEM0LjgwODE5NTIyIDAuMDEzNzU3MzUgNC44MDgxOTUyMiAwLjAxMzc1NzM1IDcuODEyNSAyLjg3NSBDOC40OTMxMjUgNC4xMTI1IDguNDkzMTI1IDQuMTEyNSA5LjE4NzUgNS4zNzUgQzYuODc3NSA1LjcwNSA0LjU2NzUgNi4wMzUgMi4xODc1IDYuMzc1IEMxLjg1NzUgOC4wMjUgMS41Mjc1IDkuNjc1IDEuMTg3NSAxMS4zNzUgQzQuNjUyNSAxMC44OCA0LjY1MjUgMTAuODggOC4xODc1IDEwLjM3NSBDOC42ODA5ODE3NSAxNC41MjAyNDY3MSA4LjMyNjA0MzA3IDE2LjE1NDk2MSA2LjA2MjUgMTkuNzUgQzMuMTg3NSAyMi4zNzUgMy4xODc1IDIyLjM3NSAwLjE4NzUgMjMuMTI1IEMtNC4xMzU1MDE1OSAyMi4wNDQyNDk2IC01LjQ3Mjc4ODMxIDIwLjA5MTAxMjY4IC03LjgxMjUgMTYuMzc1IEMtOC4xMjUgMTMgLTguMTI1IDEzIC03LjgxMjUgMTAuMzc1IEMtNS41MDI1IDEwLjM3NSAtMy4xOTI1IDEwLjM3NSAtMC44MTI1IDEwLjM3NSBDLTEuMTQyNSA5LjA1NSAtMS40NzI1IDcuNzM1IC0xLjgxMjUgNi4zNzUgQy00Ljc4MjUgNS44OCAtNC43ODI1IDUuODggLTcuODEyNSA1LjM3NSBDLTUuNjI4MjEwMTUgMC44NjA4MDA5NyAtNS4wOTkzMDg2NyAwLjE5NDExNzE3IDAgMCBaICIgZmlsbD0iI0U1RUZFQiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTM2MC44MTI1LDU3LjYyNSkiLz4KPHBhdGggZD0iTTAgMCBDMTUuNTEgMCAzMS4wMiAwIDQ3IDAgQzQ3IDEuNjUgNDcgMy4zIDQ3IDUgQzMxLjQ5IDUgMTUuOTggNSAwIDUgQzAgMy4zNSAwIDEuNyAwIDAgWiAiIGZpbGw9IiMxRTcwQzAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1OTUsNzIpIi8+CjxwYXRoIGQ9Ik0wIDAgQzQuNjIgMCA5LjI0IDAgMTQgMCBDMTQgMS4zMiAxNCAyLjY0IDE0IDQgQzEwLjcgNCA3LjQgNCA0IDQgQzQgNS45OCA0IDcuOTYgNCAxMCBDNy4zIDEwIDEwLjYgMTAgMTQgMTAgQzE0IDExLjMyIDE0IDEyLjY0IDE0IDE0IEMxMC43IDE0IDcuNCAxNCA0IDE0IEM0IDE1Ljk4IDQgMTcuOTYgNCAyMCBDNy4zIDIwIDEwLjYgMjAgMTQgMjAgQzE0LjMzIDIxLjMyIDE0LjY2IDIyLjY0IDE1IDI0IEMxMC4wNSAyNCA1LjEgMjQgMCAyNCBDMCAxNi4wOCAwIDguMTYgMCAwIFogIiBmaWxsPSIjMDA4NDI5IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMDU2LDg1KSIvPgo8cGF0aCBkPSJNMCAwIEMxNC41MiAwIDI5LjA0IDAgNDQgMCBDNDMuMzQgMS42NSA0Mi42OCAzLjMgNDIgNSBDMjguMTQgNSAxNC4yOCA1IDAgNSBDMCAzLjM1IDAgMS43IDAgMCBaICIgZmlsbD0iIzFFNzBDMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTU0MSw5NCkiLz4KPHBhdGggZD0iTTAgMCBDMTMuODYgMCAyNy43MiAwIDQyIDAgQzQyLjY2IDEuNjUgNDMuMzIgMy4zIDQ0IDUgQzI5LjQ4IDUgMTQuOTYgNSAwIDUgQzAgMy4zNSAwIDEuNyAwIDAgWiAiIGZpbGw9IiMxRTcwQzAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1NDEsNTcpIi8+CjxwYXRoIGQ9Ik0wIDAgQzEuOTUxOTMyMjEgNS44NTU3OTY2MyAzLjYyOTIyNzk1IDE1LjU1OTg2NzYxIDAuOTE0MDYyNSAyMS4yOTI5Njg3NSBDMC40NDc0MjE4NyAyMS44MzU2NjQwNiAtMC4wMTkyMTg3NSAyMi4zNzgzNTkzOCAtMC41IDIyLjkzNzUgQy0zLjIyMjkwNTM0IDI1LjY1Mjg1NDI2IC0zLjIyMjkwNTM0IDI1LjY1Mjg1NDI2IC0zLjExMzI4MTI1IDI4LjQwNjI1IEMtMi44NDc1MjI1NiAzMC42NDI3NjQ2OSAtMi41MDI2MTIyNCAzMi44MDU0MjU3OCAtMiAzNSBDLTYuNjI1IDM4IC02LjYyNSAzOCAtMTAgMzggQy0xMC4zMyAzOS4zMiAtMTAuNjYgNDAuNjQgLTExIDQyIEMtMTIuMzIgNDIgLTEzLjY0IDQyIC0xNSA0MiBDLTE2LjcwMzEyNSA0MC4xMDE1NjI1IC0xNi43MDMxMjUgNDAuMTAxNTYyNSAtMTguMjUgMzcuNjI1IEMtMTguNzcwNzgxMjUgMzYuODEyODkwNjIgLTE5LjI5MTU2MjUgMzYuMDAwNzgxMjUgLTE5LjgyODEyNSAzNS4xNjQwNjI1IEMtMjEgMzMgLTIxIDMzIC0yMSAzMSBDLTE4LjA5NDUxMTE4IDI4Ljk1ODMwNTE1IC0xNi41OTg1Nzk1NCAyOCAtMTMgMjggQy0xMyAyOC45OSAtMTMgMjkuOTggLTEzIDMxIEMtMTAuMDI5ODIzMDYgMzAuMzcxODk4MjcgLTEwLjAyOTgyMzA2IDMwLjM3MTg5ODI3IC03IDI5IEMtNS44MDE2MTc5MSAyNi42NzE0NTUzNyAtNS44MDE2MTc5MSAyNi42NzE0NTUzNyAtNSAyNCBDLTQuMzI1ODIwMzEgMjMuMjk4NzUgLTMuNjUxNjQwNjMgMjIuNTk3NSAtMi45NTcwMzEyNSAyMS44NzUgQy0wLjI3MTkxNzk2IDE3LjkzMDQwMjQ0IC0wLjU4MDIxNDc2IDE0Ljk1NDI2NzczIC0wLjgxMjUgMTAuMzEyNSBDLTEuMDkwOTg5MDUgMi4xODE5NzgxMSAtMS4wOTA5ODkwNSAyLjE4MTk3ODExIDAgMCBaICIgZmlsbD0iI0VCRjNFRiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTM0Miw2NSkiLz4KPHBhdGggZD0iTTAgMCBDLTAuNDAyODE3NzEgNS44NDA4NTY3NCAtMS4xMTI3NzkgOS4zNzczNTg4MSAtNSAxNCBDLTguMjkwNzY2NiAxNi43MTg0NTkzNyAtMTAuMDk2NDA4NjQgMTcuOTMzMDY3MzEgLTE0LjM3NSAxOC4yNSBDLTE1LjI0MTI1IDE4LjE2NzUgLTE2LjEwNzUgMTguMDg1IC0xNyAxOCBDLTE2LjY2ODA5NTE4IDExLjY5MzgwODQyIC0xNS41MDUxNjQ5NyA3LjU2NTU1NTkzIC0xMSAzIEMtNy4yMTg5MzIxOCAwLjU1ODA2MDM3IC00LjQ5MzYzOTc2IC0wLjM5NjQ5NzYzIDAgMCBaICIgZmlsbD0iIzAwMDAwMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzQ1LDM3KSIvPgo8cGF0aCBkPSJNMCAwIEM0Ljc1MDUzNTExIC0wLjA3NDM1MjIyIDkuNTAwNzI4ODcgLTAuMTI4Njk2OTEgMTQuMjUxNzA4OTggLTAuMTY0Nzk0OTIgQzE1Ljg2NjY3Nzg5IC0wLjE3OTg0ODc2IDE3LjQ4MTYwNjEzIC0wLjIwMDI5NjQ4IDE5LjA5NjQzNTU1IC0wLjIyNjMxODM2IEMyMS40MjI0NjU1NSAtMC4yNjI4NTI4NiAyMy43NDc5NTM0MSAtMC4yNzk3NjAxNSAyNi4wNzQyMTg3NSAtMC4yOTI5Njg3NSBDMjcuMTUxMDcxODUgLTAuMzE2MTk0NTMgMjcuMTUxMDcxODUgLTAuMzE2MTk0NTMgMjguMjQ5Njc5NTcgLTAuMzM5ODg5NTMgQzMyLjY1ODMwNTk5IC0wLjM0MTM1Nzg4IDM1LjUyNjI3Nzc5IDAuMjE1ODYwOTQgMzkgMyBDMzkgMy42NiAzOSA0LjMyIDM5IDUgQzI2LjEzIDUgMTMuMjYgNSAwIDUgQzAgMy4zNSAwIDEuNyAwIDAgWiAiIGZpbGw9IiMxRTcwQzAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1NDEsNTApIi8+CjxwYXRoIGQ9Ik0wIDAgQzAuNjYgMCAxLjMyIDAgMiAwIEM1LjE4NDE5OTU5IDMuNzk2NTQ1NjcgNS4zODczNDU0OCA3LjExNjc2MjIgNS4yMzgyODEyNSAxMS44NjMyODEyNSBDNC45NDYwNDkxMyAxNC40ODM3ODg5NyA0LjA0MjM4MTk1IDE2LjU4OTQ5MTczIDMgMTkgQzIuNDgyMDk2ODIgMjMuMDU2OTA4MjUgMi42OTk5NDI5NCAyNC41NDk5MTQ0MSA1IDI4IEM3LjMzNDU4NjM1IDMxLjUwMTg3OTUzIDcuNjcyNjA3MjcgMzIuODgwMjgwNDcgNyAzNyBDNi4zNDg5OTE3IDM4LjE2Njk1MjY0IDUuNjU4MzE0NjEgMzkuMzEyMzI1OTggNC45Mzc1IDQwLjQzNzUgQzMuMTY4MTQxMTcgNDMuMjg2MDQyMjIgMi45OTk2OTkxNiA0My45ODI4NTIyOSAzLjA2MjUgNDcuNTYyNSBDNC4wMDI5NTg2MSA1MS4wMTA4NDgyMyA1LjM3ODg4Njc3IDUzLjgyODI1NjcyIDcgNTcgQzcgNTguMzIgNyA1OS42NCA3IDYxIEM1LjAyIDYxLjQ5NSA1LjAyIDYxLjQ5NSAzIDYyIEMyLjcxMTI1IDYwLjc4MzEyNSAyLjQyMjUgNTkuNTY2MjUgMi4xMjUgNTguMzEyNSBDMS41MTk4MDg4OSA1NS44MzA3ODEwNyAwLjg5MjAyOTY2IDUzLjc2NzAxMTM3IC0wLjE4NzUgNTEuNDM3NSBDLTEuMzQyMzE4NDQgNDcuOTczMDQ0NjggLTAuODE4NjU2ODYgNDUuNTI2NTIxODcgMCA0MiBDMC43NzM0Mzc1IDQwLjczMTU2MjUgMC43NzM0Mzc1IDQwLjczMTU2MjUgMS41NjI1IDM5LjQzNzUgQzMuNDExMzY2MjEgMzYuMzAyNDY1OTkgMy41MTMyNzU5MiAzNC41OTI5MzE0MSAzIDMxIEMyLjM0IDMwLjAxIDEuNjggMjkuMDIgMSAyOCBDLTEuMzMwNDM1NTggMjQuNTA0MzQ2NjQgLTEuNTg3NjMyNDQgMjMuMTEzNDI3MSAtMSAxOSBDLTAuNTA1IDE3Ljg2NTYyNSAtMC4wMSAxNi43MzEyNSAwLjUgMTUuNTYyNSBDMi41NDM3NjAwOCAxMC43MDg1Njk4MSAyLjY5NzAxMDU0IDcuMDQ3NDY4NDUgMSAyLjA2MjUgQzAuNjcgMS4zODE4NzUgMC4zNCAwLjcwMTI1IDAgMCBaICIgZmlsbD0iI0U5RjFFRSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTM2OSw1OSkiLz4KPHBhdGggZD0iTTAgMCBDMS4zMiAwLjMzIDIuNjQgMC42NiA0IDEgQzUuMTU2NjQ3MzcgNi40ODI2OTA2OSA1LjExNDE2MjU1IDExLjgwMzM5Mjc0IDUuMDYyNSAxNy4zNzUgQzUuMDU3OTg4MjggMTguMzAxODM1OTQgNS4wNTM0NzY1NiAxOS4yMjg2NzE4OCA1LjA0ODgyODEyIDIwLjE4MzU5Mzc1IEM1LjAzNzExNTc0IDIyLjQ1NTc5NzA5IDUuMDIwNzEzNzIgMjQuNzI3ODYzODggNSAyNyBDMy4zNSAyNy4zMyAxLjcgMjcuNjYgMCAyOCBDLTIuNjA1MTM5NTkgMjQuMDkyMjkwNjIgLTIuMjkzNjc1NjUgMjAuNzc3NzA5MjEgLTIuMjUgMTYuMjUgQy0yLjI1NzczNDM4IDE1LjQ2MzY3MTg4IC0yLjI2NTQ2ODc1IDE0LjY3NzM0Mzc1IC0yLjI3MzQzNzUgMTMuODY3MTg3NSBDLTIuMjU2ODM4MzYgOC44NzA4NDc1NSAtMS41OTU2NjE5NSA0LjczNjMyOTkxIDAgMCBaICIgZmlsbD0iIzIyMUUyMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTY5LDcxKSIvPgo8cGF0aCBkPSJNMCAwIEMxLjY3NTQyOTc2IDAuMjg2MDQ4OTggMy4zNDM4NTM0MyAwLjYxNzgxMjMzIDUgMSBDNi4wNjgwODM3NCA3LjI3NDk5MTk3IDcuMDQzNjc4MzkgMTMuODY4OTY0ODMgNSAyMCBDNC40NDQ5NTIwOSAyNS44ODM1MDc4OCA1Ljc0ODA2MTcyIDI4LjIyMzcxNTY1IDkgMzMgQzkuNjgyNDU2MDcgMzcuMDA5NDI5NCA5LjA2MjU0MzA2IDM5LjEyMDM1OTYxIDYuOTM3NSA0Mi40Mzc1IEM1LjE4NzQ3ODQxIDQ1LjI2MTExNjM5IDQuOTk5MzU1NTggNDUuOTYzOTEyNyA1LjA2MjUgNDkuNSBDNi4wNjQxNTYzNSA1My4yMzk1MTcwMiA3LjQxMDgyMDg0IDU2LjQ3NjE2Nzk1IDkgNjAgQzkgNjAuNjYgOSA2MS4zMiA5IDYyIEM4LjAxIDYyIDcuMDIgNjIgNiA2MiBDNS4xMjcyMDEzOCA2MC4xMzM2MDAxOSA0LjI3NzQ4OTczIDU4LjI1NjM5Mzg5IDMuNDM3NSA1Ni4zNzUgQzIuOTYxODM1OTQgNTUuMzMwODU5MzggMi40ODYxNzE4OCA1NC4yODY3MTg3NSAxLjk5NjA5Mzc1IDUzLjIxMDkzNzUgQzAuODc4NDcyMzMgNDkuNjA4MjUxOTcgMS4wMTg2Mjk2NiA0Ny42MDg1ODA1MSAyIDQ0IEMyLjUxNTYyNSA0My4xNzUgMy4wMzEyNSA0Mi4zNSAzLjU2MjUgNDEuNSBDNS4zODcwMjc1NiAzOC4zMjY5MDg1OCA1LjUxNjQ0MTE4IDM2LjYxNTA4ODI1IDUgMzMgQzQuMzE5Mzc1IDMyLjA3MTg3NSAzLjYzODc1IDMxLjE0Mzc1IDIuOTM3NSAzMC4xODc1IEMwLjMyMzM1MDI2IDI1Ljg4NjgwMjA0IDAuODgyMTgxNzcgMjIuNzc3MDAxIDIgMTggQzIuMzMgMTcuMzQgMi42NiAxNi42OCAzIDE2IEMzLjQxNzQwMjY4IDExLjA1OTExNzE1IDMuNDg3NDY4NzMgNi40MjIxNjY2NCAxIDIgQzAuMzQgMS42NyAtMC4zMiAxLjM0IC0xIDEgQy0wLjY3IDAuNjcgLTAuMzQgMC4zNCAwIDAgWiAiIGZpbGw9IiMxRDc1NTIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzNzAsNTcpIi8+CjxwYXRoIGQ9Ik0wIDAgQzAuMzMgMC42NiAwLjY2IDEuMzIgMSAyIEMwLjY3IDIuNjYgMC4zNCAzLjMyIDAgNCBDMC4wMjM3OTA0IDYuMzExMDc4NzggMC4wMjM3OTA0IDYuMzExMDc4NzggMC4zMTI1IDguODc1IEMwLjM5MTEzMjgxIDkuNzM4NjcxODcgMC40Njk3NjU2MyAxMC42MDIzNDM3NSAwLjU1MDc4MTI1IDExLjQ5MjE4NzUgQzEuMDAzMjA3MjQgMTQuMDE3OTA0NzUgMS44MTI2MDgzMyAxNS43NDgyMTM0IDMgMTggQzMuNzA0NDkyODkgMjMuNDAxMTEyMTcgMS45Mjk0NDIzOSAyNS42MDU4MzY0MiAtMSAzMCBDLTEuNjc4NzgwNTkgMzQuMDcyNjgzNTYgLTEuMzQxNzI0MDYgMzUuNDk4MDkyNzkgMSAzOC45Mzc1IEMzLjQ1MjU5MTI5IDQyLjY5MzAzMDQxIDMuNTUxNTQyOTEgNDQuNTg3NjU2NyAzIDQ5IEMyLjA2NTUzNDY1IDUxLjAzMTQ0NjQxIDEuMDY3NzUyMjQgNTMuMDM1MzM1ODcgMCA1NSBDLTAuNjk5MDc0MTQgNTcuNzM1NzI1ODUgLTAuNjk5MDc0MTQgNTcuNzM1NzI1ODUgLTEgNjAgQy0yLjMyIDU5LjY3IC0zLjY0IDU5LjM0IC01IDU5IEMtNC41MjI2OTE2MiA1Ny41NDEwNTc0IC00LjA0MzA4OTU4IDU2LjA4Mjg2NTA0IC0zLjU2MjUgNTQuNjI1IEMtMy4xNjIyNDYwOSA1My40MDY4MzU5NCAtMy4xNjIyNDYwOSA1My40MDY4MzU5NCAtMi43NTM5MDYyNSA1Mi4xNjQwNjI1IEMtMiA1MCAtMiA1MCAtMSA0OCBDLTAuNTQzMTA3NzYgNDQuMDcwNzI2NzUgLTAuOTU5NzA3MDkgNDEuNzM5NDU4MTMgLTMgMzguNDM3NSBDLTUuNzU4MjkzODQgMzMuNjk2NjgyNDYgLTUuNzU4MjkzODQgMzMuNjk2NjgyNDYgLTUgMzAgQy00LjM0IDI5LjA1MTI1IC0zLjY4IDI4LjEwMjUgLTMgMjcuMTI1IEMtMC41ODgzOTUzIDIzLjM1Njg2NzY2IC0wLjUyMDEwNzIzIDIxLjM5OTAxNzAyIC0xIDE3IEMtMS4zMyAxNi4xOTU2MjUgLTEuNjYgMTUuMzkxMjUgLTIgMTQuNTYyNSBDLTMuNDY1MDU4MjkgMTAuODA4Mjg4MTIgLTMuMzIwMjAxNTkgOC4wMzQ1NDAwMiAtMyA0IEMtMS41IDEuNSAtMS41IDEuNSAwIDAgWiAiIGZpbGw9IiNGMUY2RjQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzNTEsNjApIi8+CjxwYXRoIGQ9Ik0wIDAgQzMgMSAzIDEgNSA0IEM1IDQuOTkgNSA1Ljk4IDUgNyBDNS42NiA2LjY3IDYuMzIgNi4zNCA3IDYgQzguNTQwMjM5OTYgNS45MzA0OTQ1OSAxMC4wODMzNDk4OCA1LjkxNTQ3NjQzIDExLjYyNSA1LjkzNzUgQzEyLjg1MDg5ODQ0IDUuOTUxMDM1MTYgMTIuODUwODk4NDQgNS45NTEwMzUxNiAxNC4xMDE1NjI1IDUuOTY0ODQzNzUgQzE1LjA0MTI4OTA2IDUuOTgyMjQ2MDkgMTUuMDQxMjg5MDYgNS45ODIyNDYwOSAxNiA2IEMxNS4yMzY4NzUgNi43NDI1IDE0LjQ3Mzc1IDcuNDg1IDEzLjY4NzUgOC4yNSBDMTEuMDU1OTU5NzIgMTAuNzU4MDE3NDUgMTEuMDU1OTU5NzIgMTAuNzU4MDE3NDUgOS42NTIzNDM3NSAxMy4wOTc2NTYyNSBDNy41MTM0ODk4OSAxNS41NjAxMTkyIDYuMDYwMDUxNDUgMTUuNzE4NTYzODUgMi44NzUgMTYuMTg3NSBDLTAuMzYzMTQzNTQgMTYuNDU4MzM3OTMgLTAuMzYzMTQzNTQgMTYuNDU4MzM3OTMgLTMgMTggQy00LjY2NjE3MTE1IDE4LjA0MDYzODMyIC02LjMzMzg4MDk1IDE4LjA0MjcyMSAtOCAxOCBDLTcuMjU5NDMzNTkgMTYuOTMwNzIyNjYgLTcuMjU5NDMzNTkgMTYuOTMwNzIyNjYgLTYuNTAzOTA2MjUgMTUuODM5ODQzNzUgQy0xLjU0NzYwNyA4LjUwMTAxOTAzIC0xLjU0NzYwNyA4LjUwMTAxOTAzIDAgMCBaICIgZmlsbD0iI0VGRjVGMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTMyNiw1NSkiLz4KPHBhdGggZD0iTTAgMCBDMS44NzUgMS4xMjUgMS44NzUgMS4xMjUgMyAzIEMzLjY4NzUgNi4xODc1IDMuNjg3NSA2LjE4NzUgNCA5IEMwLjM3IDkgLTMuMjYgOSAtNyA5IEMtNi4wMSA5Ljk5IC01LjAyIDEwLjk4IC00IDEyIEMtMC4zNTQ1ODE1NSAxMS43NjUyMjgwMSAtMC4zNTQ1ODE1NSAxMS43NjUyMjgwMSAzIDExIEMyLjY3IDEyLjY1IDIuMzQgMTQuMyAyIDE2IEMtNC4yNDE1OTc5NyAxNy4zNDYyMjcwMSAtNC4yNDE1OTc5NyAxNy4zNDYyMjcwMSAtNy44NzUgMTUuNjg3NSBDLTEwIDE0IC0xMCAxNCAtMTEgMTIgQy0xMS41NzE0Mjg1NyA0LjkxNDI4NTcxIC0xMS41NzE0Mjg1NyA0LjkxNDI4NTcxIC05LjQzNzUgMS41IEMtNi4wODk2NTY1MSAtMC41NjAyMTEzOCAtMy44NTk4NTc1MyAtMC40OTEyNTQ1OSAwIDAgWiBNLTUgMyBDLTUuOTkgNC40ODUgLTUuOTkgNC40ODUgLTcgNiBDLTQuNjkgNiAtMi4zOCA2IDAgNiBDLTAuNjYgNS4wMSAtMS4zMiA0LjAyIC0yIDMgQy0yLjk5IDMgLTMuOTggMyAtNSAzIFogIiBmaWxsPSIjMDA4NDI5IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMTAwLDkzKSIvPgo8cGF0aCBkPSJNMCAwIEMxMC44OSAwIDIxLjc4IDAgMzMgMCBDMzIuNjcgMS4zMiAzMi4zNCAyLjY0IDMyIDQgQzI5LjA3ODAyMzEgNS40NjA5ODg0NSAyNi41MDEwNjUyNSA1LjExMTM0OTAxIDIzLjI0MjE4NzUgNS4wOTc2NTYyNSBDMjIuMjQ3NjEwMzIgNS4wOTU1MzM4MyAyMi4yNDc2MTAzMiA1LjA5NTUzMzgzIDIxLjIzMjk0MDY3IDUuMDkzMzY4NTMgQzE5LjExMzU4MTM3IDUuMDg3NzY3NTQgMTYuOTk0MzI3NDEgNS4wNzUyMTUgMTQuODc1IDUuMDYyNSBDMTMuNDM4ODAzNjEgNS4wNTc0ODUxMiAxMi4wMDI2MDU1NiA1LjA1MjkyMjE5IDEwLjU2NjQwNjI1IDUuMDQ4ODI4MTIgQzcuMDQ0MjM2NTUgNS4wMzc3OTc4MiAzLjUyMjEyODU1IDUuMDIwNTMyNTkgMCA1IEMwIDMuMzUgMCAxLjcgMCAwIFogIiBmaWxsPSIjMUU3MEMwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNTQ5LDcyKSIvPgo8cGF0aCBkPSJNMCAwIEM0LjIxNzQ5MjE5IC0wLjA3NDE5MTM0IDguNDM0NjM4MTEgLTAuMTI4NjIwNCAxMi42NTI1ODc4OSAtMC4xNjQ3OTQ5MiBDMTQuMDg3MjI1NTIgLTAuMTc5ODc1ODkgMTUuNTIxODE3MDggLTAuMjAwMzQzOCAxNi45NTYyOTg4MyAtMC4yMjYzMTgzNiBDMTkuMDE5MTU4NTkgLTAuMjYyNzM0MzcgMjEuMDgxNDA4NTggLTAuMjc5NzMyNDMgMjMuMTQ0NTMxMjUgLTAuMjkyOTY4NzUgQzI1LjAwNjIxOTQ4IC0wLjMxNjUzNDQyIDI1LjAwNjIxOTQ4IC0wLjMxNjUzNDQyIDI2LjkwNTUxNzU4IC0wLjM0MDU3NjE3IEMzMCAwIDMwIDAgMzEuOTI4NDY2OCAxLjM5MzMxMDU1IEMzMyAzIDMzIDMgMzMgNSBDMjIuMTEgNSAxMS4yMiA1IDAgNSBDMCAzLjM1IDAgMS43IDAgMCBaICIgZmlsbD0iIzFGNzBDMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTU0OSw3OSkiLz4KPHBhdGggZD0iTTAgMCBDMC42NiAwIDEuMzIgMCAyIDAgQzIuMDg2MzY3MTkgMC41Njg0NzY1NiAyLjE3MjczNDM3IDEuMTM2OTUzMTIgMi4yNjE3MTg3NSAxLjcyMjY1NjI1IEMzLjM1MjcwNTM2IDcuNzE4MDc4MSA1LjI4MTQzMTU2IDExLjIwNTAwMzg1IDkgMTYgQzkgMTYuNjYgOSAxNy4zMiA5IDE4IEM4LjI3NTU0Njg3IDE3Ljg0NjYwMTU2IDcuNTUxMDkzNzUgMTcuNjkzMjAzMTIgNi44MDQ2ODc1IDE3LjUzNTE1NjI1IEM0LjA3MzM2NjA3IDE2Ljk3MzE0OTc3IDQuMDczMzY2MDcgMTYuOTczMTQ5NzcgMS41NzAzMTI1IDE2Ljc0NjA5Mzc1IEMtNC45MDkwNjM1OCAxNS45Mjg0MDg5MSAtNy44MDY5NTYzOCAxMy44OTExMzYyMyAtMTEuODIwMzEyNSA4Ljc3NzM0Mzc1IEMtMTMgNyAtMTMgNyAtMTMgNiBDLTYuMzc1IDUuODc1IC02LjM3NSA1Ljg3NSAtMyA3IEMtMi44NzYyNSA2LjQwMTg3NSAtMi43NTI1IDUuODAzNzUgLTIuNjI1IDUuMTg3NSBDLTIgMyAtMiAzIDAgMCBaICIgZmlsbD0iI0YyRjdGNSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTM5NCw1NSkiLz4KPHBhdGggZD0iTTAgMCBDMSAyIDEgMiAwLjkzNzUgNS44MTI1IEMwLjg3OTY0ODA4IDkuMzg2NDYzMTggMS42NDA2MzE3NyAxMS42ODY1Mzk5NCAzIDE1IEMzLjQ3NzIyODgxIDE5LjM3NDU5NzM5IDMuNDk4NjQwNDQgMjEuMjg5ODE1MTMgMC45Mzc1IDI0LjkzNzUgQy0xLjA1MTY1MDY5IDI4LjA4MTY0MTQxIC0xLjI4MzkwMDM2IDI4LjY1NDU4MTU5IC0wLjkzNzUgMzIuMTI1IEMtMC4wNDE1OTEyMiAzNS44MjgwODk2MSAwLjc4Mzk2MDg3IDM3LjEwOTUxNDE4IDMgNDAgQzMuNjQwNzA0NzggNDQuOTEyMDY5OTQgMi4yODAwNjUxNiA0Ny43MTM0Nzc1IDAgNTIgQy0wLjY5OTA3NDE0IDU0LjczNTcyNTg1IC0wLjY5OTA3NDE0IDU0LjczNTcyNTg1IC0xIDU3IEMtMS45OSA1NyAtMi45OCA1NyAtNCA1NyBDLTMuMjQ3ODEzNDEgNTAuNDgxMDQ5NTYgLTMuMjQ3ODEzNDEgNTAuNDgxMDQ5NTYgLTEuOTM3NSA0Ny45Mzc1IEMtMC41NTU0NjYzNyA0NS4wODEyOTcxNyAtMC42Mjk3ODY4MiA0My4xNDY4MTIgLTEgNDAgQy0xLjkyMzQ0MjExIDM4LjIzNzkyNDggLTEuOTIzNDQyMTEgMzguMjM3OTI0OCAtMy4wNjI1IDM2LjUgQy00LjcyOTM3MDExIDMzLjgyMjM2ODIyIC01LjAwMjU5OTI2IDMzLjEzMjU2MjEgLTQuOTM3NSAyOS44MTI1IEMtNCAyNyAtNCAyNyAtMi40Mzc1IDI1LjE4NzUgQy0wLjE2NjczOTU4IDIxLjczMTk5NTAyIC0wLjYxNDU0MzE5IDE4LjAyNTA1ODY1IC0xIDE0IEMtMS4zMyAxMy4wMSAtMS42NiAxMi4wMiAtMiAxMSBDLTIuMTY3OTY4NzUgOS4wNjI1IC0yLjE2Nzk2ODc1IDkuMDYyNSAtMi4xODc1IDcgQy0yLjIwMTY3OTY5IDYuMzE5Mzc1IC0yLjIxNTg1OTM4IDUuNjM4NzUgLTIuMjMwNDY4NzUgNC45Mzc1IEMtMiAzIC0yIDMgMCAwIFogIiBmaWxsPSIjMTQ3MDRCIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzQ4LDYyKSIvPgo8cGF0aCBkPSJNMCAwIEMxMi44NyAwIDI1Ljc0IDAgMzkgMCBDMzUuMDM1MDk2OTkgMy45NjQ5MDMwMSAzNS4wMzUwOTY5OSAzLjk2NDkwMzAxIDMwLjY1MTg1NTQ3IDQuMTEzNTI1MzkgQzI5LjIyMzYyMzAzIDQuMTEzMzY2ODggMjcuNzk1Mzg0NTggNC4xMDc3MDczNSAyNi4zNjcxODc1IDQuMDk3NjU2MjUgQzI1LjIzOTQzNDA1IDQuMDk1NTMzODMgMjUuMjM5NDM0MDUgNC4wOTU1MzM4MyAyNC4wODg4OTc3MSA0LjA5MzM2ODUzIEMyMS42ODQyMjQ5IDQuMDg3NzY0NjUgMTkuMjc5NjQ0NzMgNC4wNzUyMTE1NyAxNi44NzUgNC4wNjI1IEMxNS4yNDYwOTUwOSA0LjA1NzQ4NTUgMTMuNjE3MTg4NzMgNC4wNTI5MjI1IDExLjk4ODI4MTI1IDQuMDQ4ODI4MTIgQzcuOTkyMTUxNzMgNC4wMzc3OTM5NyAzLjk5NjA5MTU4IDQuMDIwNTI2NzkgMCA0IEMwIDIuNjggMCAxLjM2IDAgMCBaICIgZmlsbD0iIzFGNzBDMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTU0MSwxMDIpIi8+CjxwYXRoIGQ9Ik0wIDAgQzMuNDQ1MDA2NiAyLjkzNTY2NDIzIDMuNTc0ODI0NjQgNS4yNTc0NDI5NCAzLjk2ODc1IDkuNTk3NjU2MjUgQzMuOTk4ODM1MiAxMS45MTA0NTU4IDMuNzA3ODg2MzggMTMuODY2Mzg3MzUgMy4yNSAxNi4xMjUgQzIuOTg0MTIwNjEgMjAuMjQ2MTMwNTMgMy4xMDk4NDA0MiAyMC42ODU1NzQyMiA1LjQzNzUgMjMuNzUgQzUuOTEwNTg1OTQgMjQuMjgxMDkzNzUgNi4zODM2NzE4NyAyNC44MTIxODc1IDYuODcxMDkzNzUgMjUuMzU5Mzc1IEM4IDI3IDggMjcgOCAzMSBDMTAuMzEgMzEuNjYgMTIuNjIgMzIuMzIgMTUgMzMgQzE1IDMzLjk5IDE1IDM0Ljk4IDE1IDM2IEMxNi4zMiAzNi42NiAxNy42NCAzNy4zMiAxOSAzOCBDMTkgMzguOTkgMTkgMzkuOTggMTkgNDEgQzE3LjkxNzE4NzUgNDAuNDc0MDYyNSAxNy45MTcxODc1IDQwLjQ3NDA2MjUgMTYuODEyNSAzOS45Mzc1IEMxNC4wNzY4ODc3IDM4Ljc1NjQ4MjEyIDE0LjA3Njg4NzcgMzguNzU2NDgyMTIgMTEuNSAzOS41NjI1IEM5IDQwIDkgNDAgNi4xODc1IDM4LjU2MjUgQzUuNDY1NjI1IDM4LjA0Njg3NSA0Ljc0Mzc1IDM3LjUzMTI1IDQgMzcgQzQuMTk1MjkyOTcgMzYuMTY0Njg3NSA0LjE5NTI5Mjk3IDM2LjE2NDY4NzUgNC4zOTQ1MzEyNSAzNS4zMTI1IEM1LjMwMzg2MTMxIDMwLjQ2NzI5MzAxIDUuMzAzODYxMzEgMzAuNDY3MjkzMDEgMy45MTc5Njg3NSAyNS44NjcxODc1IEMyLjk3NDUwMDc2IDI0LjU0MTY1Mzk2IDIuMDI5MTkzNjQgMjMuMjE3NDI3NDggMS4wODIwMzEyNSAyMS44OTQ1MzEyNSBDLTAuNjgwNTA5NzQgMTguODA4NDkzNzggMC4yMzQyODE5NyAxNi4zNTczNzkwNyAxIDEzIEMxLjA4MjI5MTcgMTEuNDM5MTEyMjkgMS4xMjI0NDU5OSA5Ljg3NTU1MzM3IDEuMTI1IDguMzEyNSBDMS4xMjg4NjcxOSA3LjIyMzg4NjcyIDEuMTI4ODY3MTkgNy4yMjM4ODY3MiAxLjEzMjgxMjUgNi4xMTMyODEyNSBDMC45OTc4MDczMiAzLjk2NTExMDU5IDAuNTg3NzI5NCAyLjA2NjM4MTk1IDAgMCBaICIgZmlsbD0iI0VGRjVGMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTM3OCw2MykiLz4KPHBhdGggZD0iTTAgMCBDOS4yNCAwIDE4LjQ4IDAgMjggMCBDMjggMS42NSAyOCAzLjMgMjggNSBDMTguNzYgNSA5LjUyIDUgMCA1IEMwIDMuMzUgMCAxLjcgMCAwIFogIiBmaWxsPSIjMUU3MEMxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNTEwLDk0KSIvPgo8cGF0aCBkPSJNMCAwIEM5LjI0IDAgMTguNDggMCAyOCAwIEMyOCAxLjY1IDI4IDMuMyAyOCA1IEMxOC43NiA1IDkuNTIgNSAwIDUgQzAgMy4zNSAwIDEuNyAwIDAgWiAiIGZpbGw9IiMxRTcwQzEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1MTAsNTcpIi8+CjxwYXRoIGQ9Ik0wIDAgQzkuMjQgMCAxOC40OCAwIDI4IDAgQzI4IDEuNjUgMjggMy4zIDI4IDUgQzE4Ljc2IDUgOS41MiA1IDAgNSBDMCAzLjM1IDAgMS43IDAgMCBaICIgZmlsbD0iIzFGNzBDMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTUxMCw1MCkiLz4KPHBhdGggZD0iTTAgMCBDMCAzIDAgMyAtMSA1IEMtMS4yMTM3NzcyMSAxMC42MDcwMzIxMyAtMS4yMTM3NzcyMSAxMC42MDcwMzIxMyAwIDE2IEMwLjc1NDE0MjM1IDIyLjQ5MDU2OTM3IC0wLjI2NzY1MDE5IDI1LjU4MjA3Mjg1IC00IDMxIEMtMy45Mjc0OTIxNCAzNC41NTI4ODQ5NCAtMy4zMTc3NDE2NCAzNi40OTE2MTMzNyAtMS40Mzc1IDM5LjUgQzAuNDMyMjMyNTQgNDIuNzUxNzA4NzYgMC40OTI4MjA0OCA0NC4yNjg2NDQ5NCAwIDQ4IEMtMS4xNzkwNDA1IDUxLjQwNDQxNTYzIC0yLjU0MTk2MzU0IDU0LjcwNjM5OTc4IC00IDU4IEMtNC45OSA1Ny42NyAtNS45OCA1Ny4zNCAtNyA1NyBDLTYuNTc1MjcyMSA1NC40NTE2MzI2IC02LjE4NjYwNjY3IDUyLjM0MDI4Mjc1IC00LjkzNzUgNTAuMDYyNSBDLTMuNjI5MDkzODEgNDcuMTg0MDA2MzkgLTMuNjg2MTgxNDMgNDUuMTM4MTg1NzMgLTQgNDIgQy00LjQ5NSA0MS4wMSAtNC45OSA0MC4wMiAtNS41IDM5IEMtNy4yMTc0NTA3IDM1LjU2NTA5ODYgLTcuNTUyMzU3MzMgMzMuNzg3NTkzMTMgLTcgMzAgQy01Ljk4MjkyOTY5IDI4LjY2Nzc1MzkxIC01Ljk4MjkyOTY5IDI4LjY2Nzc1MzkxIC00Ljk0NTMxMjUgMjcuMzA4NTkzNzUgQy0yLjU3NzgwMDU3IDIzLjI4MTkyMTg1IC0yLjgyMDAzNjc0IDIwLjUwMjM1NDg2IC0zLjQzNzUgMTYuMDYyNSBDLTQuMjQwNTQ3MzkgMTAuMDc2NjY0NDYgLTMuNzgyNzc2OTMgNi4zMjc0MTg5MSAtMSAxIEMtMC42NyAwLjY3IC0wLjM0IDAuMzQgMCAwIFogIiBmaWxsPSIjRTRFRUVBIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzQ4LDYwKSIvPgo8cGF0aCBkPSJNMCAwIEMzLjkwOTM4NzAzIDMuNzM5NDEzNjggMy45MDkzODcwMyAzLjczOTQxMzY4IDQuMTMyODEyNSA2Ljg0NzY1NjI1IEM0LjEzMDIzNDM4IDcuNTc4NTU0NjkgNC4xMjc2NTYyNSA4LjMwOTQ1MzEzIDQuMTI1IDkuMDYyNSBDNC4xMjI0MjE4OCA5Ljg2MzAwNzgxIDQuMTE5ODQzNzUgMTAuNjYzNTE1NjMgNC4xMTcxODc1IDExLjQ4ODI4MTI1IEM0LjAwMTcwMTk1IDEzLjk2MzUyMTY0IDMuNjUxMDI0NzkgMTYuMzA3MDIyNDggMy4yNSAxOC43NSBDMi43NjIwMjY5NSAyMi40MjA4OTQxOCAyLjc2MjAyNjk1IDIyLjQyMDg5NDE4IDQuOTM3NSAyNS41NjI1IEM1Ljk1ODQzNzUgMjYuNzY5MDYyNSA1Ljk1ODQzNzUgMjYuNzY5MDYyNSA3IDI4IEM4LjA0NzU1MTk0IDMzLjMxNDE0MzcgNi44NDIyMzI0NCAzNi40OTk3OTg2MyA0IDQxIEMzLjM3MDk3MDM5IDQ1LjkyNzM5ODU3IDQuNzQ3ODkzNDUgNDguNjgzNDYyNDQgNyA1MyBDNyA1NC4zMiA3IDU1LjY0IDcgNTcgQzQgNTYgNCA1NiAyLjc5Njg3NSA1My45MjU3ODEyNSBDLTAuNzYwMjg1NzMgNDUuMDQ2MTUyNDIgLTAuNzYwMjg1NzMgNDUuMDQ2MTUyNDIgMSA0MCBDMS41MTU2MjUgMzkuMTc1IDIuMDMxMjUgMzguMzUgMi41NjI1IDM3LjUgQzQuMzg3MDI3NTYgMzQuMzI2OTA4NTggNC41MTY0NDExOCAzMi42MTUwODgyNSA0IDI5IEMzLjM0IDI4LjAzMDYyNSAyLjY4IDI3LjA2MTI1IDIgMjYuMDYyNSBDLTAuNDEwNTc3ODIgMjIuMzcxMzAyNzIgLTAuNDA4MzI3NTUgMjAuMzI4MjcxOTkgMCAxNiBDMC4zMyAxNS4wMSAwLjY2IDE0LjAyIDEgMTMgQzEuMDkyNDczODEgMTEuNTIzMTM4ODkgMS4xMjk5OTA3MSAxMC4wNDIyNDQ5OSAxLjEyNSA4LjU2MjUgQzEuMTI4ODY3MTkgNy40MTk3NDYwOSAxLjEyODg2NzE5IDcuNDE5NzQ2MDkgMS4xMzI4MTI1IDYuMjUzOTA2MjUgQzEuMDAyNzYwMTUgNC4wNDY4NDE0MSAwLjYwODU2MTk5IDIuMTIwMzA3MjQgMCAwIFogIiBmaWxsPSIjRTZGMEVDIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzc0LDYxKSIvPgo8cGF0aCBkPSJNMCAwIEM4LjI1IDAgMTYuNSAwIDI1IDAgQzI1LjY2IDEuNjUgMjYuMzIgMy4zIDI3IDUgQzE4LjA5IDUgOS4xOCA1IDAgNSBDMCAzLjM1IDAgMS43IDAgMCBaICIgZmlsbD0iIzFFNzBDMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTU4Nyw1NykiLz4KPHBhdGggZD0iTTAgMCBDOC4yNSAwIDE2LjUgMCAyNSAwIEMyNSAxLjY1IDI1IDMuMyAyNSA1IEMxNi40MiA1IDcuODQgNSAtMSA1IEMtMC42NyAzLjM1IC0wLjM0IDEuNyAwIDAgWiAiIGZpbGw9IiMxRTcwQzAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MjQsNTcpIi8+CjxwYXRoIGQ9Ik0wIDAgQzAuNjYgMCAxLjMyIDAgMiAwIEMyLjMzIDEuNjUgMi42NiAzLjMgMyA1IEM0LjY1IDUgNi4zIDUgOCA1IEM3LjAxIDYuNDg1IDcuMDEgNi40ODUgNiA4IEM1LjgzMjg2NDMxIDEwLjYyNTMxNTI0IDUuODMyODY0MzEgMTAuNjI1MzE1MjQgNiAxMyBDNi42NiAxMy4zMyA3LjMyIDEzLjY2IDggMTQgQzcuMzQgMTQgNi42OCAxNCA2IDE0IEM2IDE0LjY2IDYgMTUuMzIgNiAxNiBDMi43IDE2IC0wLjYgMTYgLTQgMTYgQy00IDE1LjM0IC00IDE0LjY4IC00IDE0IEMtNC42NiAxMy42NyAtNS4zMiAxMy4zNCAtNiAxMyBDLTUuMzQgMTMgLTQuNjggMTMgLTQgMTMgQy0zLjc5OTEzNTU3IDkuMjg0MDA4MDkgLTMuODQ4MDU2MyA4LjIyNzkxNTU1IC02IDUgQy00LjM1IDUgLTIuNyA1IC0xIDUgQy0wLjY3IDMuMzUgLTAuMzQgMS43IDAgMCBaICIgZmlsbD0iI0Q4RTdFMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTM2MCwzNykiLz4KPHBhdGggZD0iTTAgMCBDMCAxLjY1IDAgMy4zIDAgNSBDLTAuNzYzMTI1IDQuNzczMTI1IC0xLjUyNjI1IDQuNTQ2MjUgLTIuMzEyNSA0LjMxMjUgQy0zLjE5OTM3NSA0LjIwOTM3NSAtNC4wODYyNSA0LjEwNjI1IC01IDQgQy02LjgzNTQ3OTkgNS4zMzM3ODU3NSAtNi44MzU0Nzk5IDUuMzMzNzg1NzUgLTggNyBDLTcuMzQgOC42NSAtNi42OCAxMC4zIC02IDEyIEMtMy42OSAxMiAtMS4zOCAxMiAxIDEyIEMxIDEzLjMyIDEgMTQuNjQgMSAxNiBDLTUuMjAwODE5NjcgMTcuMzM3NDMxNjkgLTUuMjAwODE5NjcgMTcuMzM3NDMxNjkgLTguODEyNSAxNS44MTI1IEMtMTEuMTQwMzY2MTcgMTMuODgzNjk2NiAtMTIuMTcyMjU2MTEgMTIuODk3MTAzNjEgLTEzIDEwIEMtMTIuODU1NzAyNCA2LjUzNjg1NzUgLTEyLjM0NTYyNDk3IDQuNTI1MzQ5OTYgLTEwLjQzNzUgMS42MjUgQy02Ljg1NzUyODY3IC0wLjc2MTY0NzU1IC00LjI0ODUyOTc0IC0wLjI4MzIzNTMyIDAgMCBaICIgZmlsbD0iIzAwODQyOSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjE5Miw5MykiLz4KPHBhdGggZD0iTTAgMCBDMCAwLjk5IDAgMS45OCAwIDMgQzEuNjUgMyAzLjMgMyA1IDMgQzUgNC4zMiA1IDUuNjQgNSA3IEMzLjM1IDcgMS43IDcgMCA3IEMwIDkuOTcgMCAxMi45NCAwIDE2IEMxLjY1IDE1LjY3IDMuMyAxNS4zNCA1IDE1IEM1IDE2LjMyIDUgMTcuNjQgNSAxOSBDMS43MTMwMzc2NyAxOS43OTk1MzEzOCAwLjI4OTc2ODA4IDIwLjA5NjU4OTM2IC0zIDE5IEMtNC4yNjIzNzczMSAxNi40NzUyNDUzOCAtNC4wOTg1NjQwNCAxNC42ODc5OTUzNCAtNC4wNjI1IDExLjg3NSBDLTQuMDUzNDc2NTYgMTAuOTY0OTIxODggLTQuMDQ0NDUzMTMgMTAuMDU0ODQzNzUgLTQuMDM1MTU2MjUgOS4xMTcxODc1IEMtNC4wMjM1NTQ2OSA4LjQxODUxNTYyIC00LjAxMTk1MzEzIDcuNzE5ODQzNzUgLTQgNyBDLTQuOTkgNyAtNS45OCA3IC03IDcgQy0zLjg2MjA2ODk3IDAgLTMuODYyMDY4OTcgMCAwIDAgWiAiIGZpbGw9IiMwMDg0MjkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIxMzcsOTApIi8+CjxwYXRoIGQ9Ik0wIDAgQzAuMzMgMS42NSAwLjY2IDMuMyAxIDUgQzAuMDUxMjUgNC43OTM3NSAtMC44OTc1IDQuNTg3NSAtMS44NzUgNC4zNzUgQy0zLjQyMTg3NSA0LjE4OTM3NSAtMy40MjE4NzUgNC4xODkzNzUgLTUgNCBDLTcuMzQ5NzM4MTggNS44OTc1NTE0NCAtNy4zNDk3MzgxOCA1Ljg5NzU1MTQ0IC03LjEyNSA5LjEyNSBDLTcuMDYzMTI1IDEwLjU0ODEyNSAtNy4wNjMxMjUgMTAuNTQ4MTI1IC03IDEyIEMtNC4zNiAxMiAtMS43MiAxMiAxIDEyIEMxIDEzLjMyIDEgMTQuNjQgMSAxNiBDLTUuMzI5OTc5ODggMTcuMjE3MzAzODIgLTUuMzI5OTc5ODggMTcuMjE3MzAzODIgLTguMzEyNSAxNi4yNSBDLTEwIDE1IC0xMCAxNSAtMTIgMTIgQy0xMi40NDUwNTU3NiA3Ljk5NDQ5ODEzIC0xMi4zNDMxOTE2NyA1LjY3MjA4MzY5IC0xMC41IDIuMDYyNSBDLTYuODg4MjI0MDkgLTAuOTE3MjE1MTMgLTQuNTg5MTk0MjEgLTAuMzgyNDMyODUgMCAwIFogIiBmaWxsPSIjMDA4NDI5IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMTIyLDkzKSIvPgo8cGF0aCBkPSJNMCAwIEM3LjU5IDAgMTUuMTggMCAyMyAwIEMyMy4zMyAxLjY1IDIzLjY2IDMuMyAyNCA1IEMxNi4wOCA1IDguMTYgNSAwIDUgQzAgMy4zNSAwIDEuNyAwIDAgWiAiIGZpbGw9IiMxRjcwQzAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1ODcsNTApIi8+CjxwYXRoIGQ9Ik0wIDAgQzcuMjYgMCAxNC41MiAwIDIyIDAgQzIyIDEuNjUgMjIgMy4zIDIyIDUgQzE0LjQxIDUgNi44MiA1IC0xIDUgQy0wLjY3IDMuMzUgLTAuMzQgMS43IDAgMCBaICIgZmlsbD0iIzFGNzBDMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTYyNyw1MCkiLz4KPHBhdGggZD0iTTAgMCBDMy45NiAwIDcuOTIgMCAxMiAwIEMxMiAzLjY2NjY2NjY3IDEyIDcuMzMzMzMzMzMgMTIgMTEgQzguMDQgMTEgNC4wOCAxMSAwIDExIEMwIDcuMzMzMzMzMzMgMCAzLjY2NjY2NjY3IDAgMCBaICIgZmlsbD0iI0U4MjAyNiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTc4MiwxMTYpIi8+CjxwYXRoIGQ9Ik0wIDAgQzkuMjQgMCAxOC40OCAwIDI4IDAgQzI4IDEuMzIgMjggMi42NCAyOCA0IEMxOC43NiA0IDkuNTIgNCAwIDQgQzAgMi42OCAwIDEuMzYgMCAwIFogIiBmaWxsPSIjMUU3MEMwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNTEwLDEwMikiLz4KPHBhdGggZD0iTTAgMCBDMCAxLjY1IDAgMy4zIDAgNSBDLTAuNTU1NTg1OTQgNC41MTQwMjM0NCAtMS4xMTExNzE4OCA0LjAyODA0Njg4IC0xLjY4MzU5Mzc1IDMuNTI3MzQzNzUgQy00LjM3OTY1MzUgMS43NDk2NzE5NyAtNS44NjQwNjM4NiAxLjU2NzMyNDE5IC05LjA2MjUgMS41NjI1IEMtOS45MTk3MjY1NiAxLjU0MzE2NDA2IC0xMC43NzY5NTMxMyAxLjUyMzgyODEzIC0xMS42NjAxNTYyNSAxLjUwMzkwNjI1IEMtMTQuMTc3NTgwNDEgMS43OTY0NDEzNyAtMTQuMTc3NTgwNDEgMS43OTY0NDEzNyAtMTUuODA4NTkzNzUgNC4wMjczNDM3NSBDLTE2LjM5ODMzOTg0IDUuMDAzODA4NTkgLTE2LjM5ODMzOTg0IDUuMDAzODA4NTkgLTE3IDYgQy0xNS4wMiA2IC0xMy4wNCA2IC0xMSA2IEMtMTAuNjcgNy42NSAtMTAuMzQgOS4zIC0xMCAxMSBDLTExLjMyIDExIC0xMi42NCAxMSAtMTQgMTEgQy0xNCAxMC4zNCAtMTQgOS42OCAtMTQgOSBDLTE1LjMyIDkgLTE2LjY0IDkgLTE4IDkgQy0xOC4zMyA3LjM1IC0xOC42NiA1LjcgLTE5IDQgQy0xOS42NiA0LjY2IC0yMC4zMiA1LjMyIC0yMSA2IEMtMjEgNC4wMiAtMjEgMi4wNCAtMjEgMCBDLTEzLjk3OTM2NDY0IC0yLjM5MDAwMzUzIC02Ljg1MjIxNDU0IC0zLjUzNjYyNjg2IDAgMCBaICIgZmlsbD0iIzE5NzM0RiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTM3MCw1NykiLz4KPHBhdGggZD0iTTAgMCBDNi45MyAwIDEzLjg2IDAgMjEgMCBDMjEgMS42NSAyMSAzLjMgMjEgNSBDMTQuMDcgNSA3LjE0IDUgMCA1IEMwIDMuMzUgMCAxLjcgMCAwIFogIiBmaWxsPSIjMUU3MEMwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjI5LDk0KSIvPgo8cGF0aCBkPSJNMCAwIEMwIDAuOTkgMCAxLjk4IDAgMyBDLTAuOTkgMyAtMS45OCAzIC0zIDMgQy0zIDMuNjYgLTMgNC4zMiAtMyA1IEMtMi4wMSA1LjMzIC0xLjAyIDUuNjYgMCA2IEMwIDcuMzIgMCA4LjY0IDAgMTAgQy02LjYyNSAxMi44NzUgLTYuNjI1IDEyLjg3NSAtMTAgMTQgQy0xMS4xOTI4NzQxMSAxMC4xMjMxNTkxMyAtMTIgNy4wODM3ODA3NyAtMTIgMyBDLTEwLjc1MzM2NjY5IDIuNDkxNjY0MDkgLTkuNTAyNTA2MTMgMS45OTM2ODg1NSAtOC4yNSAxLjUgQy03LjU1MzkwNjI1IDEuMjIxNTYyNSAtNi44NTc4MTI1IDAuOTQzMTI1IC02LjE0MDYyNSAwLjY1NjI1IEMtNCAwIC00IDAgMCAwIFogIiBmaWxsPSIjMUM3NTUxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzI5LDgwKSIvPgo8cGF0aCBkPSJNMCAwIEM2LjYgMCAxMy4yIDAgMjAgMCBDMjAgMS42NSAyMCAzLjMgMjAgNSBDMTMuNCA1IDYuOCA1IDAgNSBDMCAzLjM1IDAgMS43IDAgMCBaICIgZmlsbD0iIzFFNzBDMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTU4Nyw5NCkiLz4KPHBhdGggZD0iTTAgMCBDMS4zMiAwIDIuNjQgMCA0IDAgQzQgNy45MiA0IDE1Ljg0IDQgMjQgQzIuNjggMjQgMS4zNiAyNCAwIDI0IEMwIDE2LjA4IDAgOC4xNiAwIDAgWiAiIGZpbGw9IiMwMDg0MjkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIwNzcsODUpIi8+CjxwYXRoIGQ9Ik0wIDAgQzEuNjA4NzUgLTAuMDIwNjI1IDMuMjE3NSAtMC4wNDEyNSA0Ljg3NSAtMC4wNjI1IEM1Ljc3OTkyMTg4IC0wLjA3NDEwMTU2IDYuNjg0ODQzNzUgLTAuMDg1NzAzMTIgNy42MTcxODc1IC0wLjA5NzY1NjI1IEMxMCAwIDEwIDAgMTIgMSBDMTEuMzQgMi4zMiAxMC42OCAzLjY0IDEwIDUgQzguMzUgNSA2LjcgNSA1IDUgQzQuNjcgOC42MyA0LjM0IDEyLjI2IDQgMTYgQzIuNjggMTYgMS4zNiAxNiAwIDE2IEMwIDEwLjcyIDAgNS40NCAwIDAgWiAiIGZpbGw9IiMwMDg0MjkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIxNDksOTMpIi8+CjxwYXRoIGQ9Ik0wIDAgQzYuMjcgMCAxMi41NCAwIDE5IDAgQzE4LjY3IDEuNjUgMTguMzQgMy4zIDE4IDUgQzEyLjM5IDUgNi43OCA1IDEgNSBDMC42NyAzLjM1IDAuMzQgMS43IDAgMCBaICIgZmlsbD0iIzFGNzBDMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTYwOSw3OSkiLz4KPHBhdGggZD0iTTAgMCBDNi45MyAwIDEzLjg2IDAgMjEgMCBDMjEgMS4zMiAyMSAyLjY0IDIxIDQgQzEzLjc0IDQgNi40OCA0IC0xIDQgQy0wLjY3IDIuNjggLTAuMzQgMS4zNiAwIDAgWiAiIGZpbGw9IiMxRTcwQzAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MjEsNjUpIi8+CjxwYXRoIGQ9Ik0wIDAgQzAuODEyNSAyLjE4NzUgMC44MTI1IDIuMTg3NSAxIDUgQy0xLjEyNSA3Ljg3NSAtMS4xMjUgNy44NzUgLTQgMTAgQy02LjgxMjUgOS44MTI1IC02LjgxMjUgOS44MTI1IC05IDkgQy05Ljc1IDYuNzUgLTkuNzUgNi43NSAtMTAgNCBDLTcuMTk2NDEzNTIgLTAuMTQ5MzA3OTkgLTQuODI5NDYzOCAtMC40MzkwNDIxNiAwIDAgWiAiIGZpbGw9IiMwMDg0MjkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIxMDgsNDApIi8+CjxwYXRoIGQ9Ik0wIDAgQzYuOTMgMCAxMy44NiAwIDIxIDAgQzIxIDEuMzIgMjEgMi42NCAyMSA0IEMxNC4wNyA0IDcuMTQgNCAwIDQgQzAgMi42OCAwIDEuMzYgMCAwIFogIiBmaWxsPSIjMUU3MEMwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjI5LDEwMikiLz4KPHBhdGggZD0iTTAgMCBDNi42IDAgMTMuMiAwIDIwIDAgQzIwLjMzIDEuMzIgMjAuNjYgMi42NCAyMSA0IEMxNC4wNyA0IDcuMTQgNCAwIDQgQzAgMi42OCAwIDEuMzYgMCAwIFogIiBmaWxsPSIjMUU3MEMwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNTk1LDY1KSIvPgo8cGF0aCBkPSJNMCAwIEM2LjYgMCAxMy4yIDAgMjAgMCBDMjAgMS4zMiAyMCAyLjY0IDIwIDQgQzEzLjQgNCA2LjggNCAwIDQgQzAgMi42OCAwIDEuMzYgMCAwIFogIiBmaWxsPSIjMUU3MEMxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNTg3LDEwMikiLz4KPHBhdGggZD0iTTAgMCBDMC4zMyAwLjY2IDAuNjYgMS4zMiAxIDIgQzAuNjcgMi42NiAwLjM0IDMuMzIgMCA0IEMwLjAyMzc5MDQgNi4zMTEwNzg3OCAwLjAyMzc5MDQgNi4zMTEwNzg3OCAwLjMxMjUgOC44NzUgQzAuMzkxMTMyODEgOS43Mzg2NzE4NyAwLjQ2OTc2NTYzIDEwLjYwMjM0Mzc1IDAuNTUwNzgxMjUgMTEuNDkyMTg3NSBDMS4wMDMyMDcyNCAxNC4wMTc5MDQ3NSAxLjgxMjYwODMzIDE1Ljc0ODIxMzQgMyAxOCBDMy42ODc1MDI5NCAyMy4yNzA4NTU4NiAyLjE2OTQxODg1IDI1Ljg0MDEzNzc1IC0xIDMwIEMtMS42NiAyOS42NyAtMi4zMiAyOS4zNCAtMyAyOSBDLTIuNTA1IDI3Ljk3OTA2MjUgLTIuNTA1IDI3Ljk3OTA2MjUgLTIgMjYuOTM3NSBDLTAuNTQwNjAwMTQgMjIuNjUwNTEyOSAtMC4yNjA1MDE3MyAxOC44MDI1MjcwNCAtMiAxNC41NjI1IEMtMy40NjUwNTgyOSAxMC44MDgyODgxMiAtMy4zMjAyMDE1OSA4LjAzNDU0MDAyIC0zIDQgQy0xLjUgMS41IC0xLjUgMS41IDAgMCBaICIgZmlsbD0iI0U1RUZFQiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTM1MSw2MCkiLz4KPHBhdGggZD0iTTAgMCBDMC4zMyAwIDAuNjYgMCAxIDAgQzAuOTg4Mzk4NDQgMC43NTAyMzQzNyAwLjk3Njc5Njg3IDEuNTAwNDY4NzUgMC45NjQ4NDM3NSAyLjI3MzQzNzUgQzAuOTE5NjU0NTMgNy4zOTkxODY2NiAwLjk4NDI4NjYxIDEyLjMwMTE4MTk1IDEuNzUgMTcuMzc1IEMyLjE5NjY0NjM5IDIxLjE0NzM1MTI3IDIuMTA3NDI3NTkgMjEuODEwMjExMjYgMC4xMjUgMjUuMzEyNSBDLTAuOTI2ODc1IDI2LjY0MjgxMjUgLTAuOTI2ODc1IDI2LjY0MjgxMjUgLTIgMjggQy0yLjc4MjE1NTg4IDMwLjcyODI1MDQgLTIuNzgyMTU1ODggMzAuNzI4MjUwNCAtMyAzMyBDLTMuOTkgMzMgLTQuOTggMzMgLTYgMzMgQy01LjY2Mzk0OTIgMjkuMzg3NDUzODUgLTUuNDU0NzA0MzIgMjcuNDg1NTg5OSAtMi45Mjk2ODc1IDI0Ljc4OTA2MjUgQy0wLjM4MTE3MzczIDIxLjEwNTU4MzA5IC0wLjgyNDUyNDMzIDE4LjI5NzIzMDcyIC0xLjM3NSAxNC4wNjI1IEMtMS45OTMyNTI0NiA4Ljg4OTQ2NTc5IC0yLjA0NDM3NzU4IDQuOTExMTE3NTYgMCAwIFogIiBmaWxsPSIjMkE3RDVDIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzQ0LDYyKSIvPgo8cGF0aCBkPSJNMCAwIEMzLjE2MTE1Nzc2IDEuMzY5ODM1MDMgMy45OTI3MDkyIDEuOTg5MDYzOCA2IDUgQzYuNTMwNzQ3NDEgMTAuNTE5NzczMDggNS4zMDE0OTUxMSAxNC4wMjg3NzA1NSAzIDE5IEMyLjMwODU5NDc4IDIxLjc3ODg4NjEzIDIuMzA4NTk0NzggMjEuNzc4ODg2MTMgMiAyNCBDMS4wMSAyNCAwLjAyIDI0IC0xIDI0IEMtMS4yNTgxMzMwMiAyMC4zODYxMzc3NCAtMS4xNjgxNTY2NyAxOC4zMjkzMDY4IDAuNSAxNS4wNjI1IEMyLjczMzE5NzQyIDEwLjUwMzA1NTI2IDIuNjIzNDM0NjEgNi44MzEzMzkxNiAxIDIuMDYyNSBDMC42NyAxLjM4MTg3NSAwLjM0IDAuNzAxMjUgMCAwIFogIiBmaWxsPSIjMTc3MjREIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzUxLDk3KSIvPgo8cGF0aCBkPSJNMCAwIEMwLjMzIDAuOTkgMC42NiAxLjk4IDEgMyBDMC41MDUgMy45MDc1IDAuMDEgNC44MTUgLTAuNSA1Ljc1IEMtMi4zNzE1ODI0MSA5LjgwNTA5NTIzIC0yLjA1NTkwNDQyIDExLjcwMDk2MDU3IC0xIDE2IEMtMC4wODA4Mzc4IDE4LjM3NzMwOTU2IDAuOTUxMzM0NzMgMjAuNjc0Njk4NzUgMiAyMyBDMiAyMy42NiAyIDI0LjMyIDIgMjUgQzEuMDEgMjUgMC4wMiAyNSAtMSAyNSBDLTEuODcyNzk4NjIgMjMuMTMzNjAwMTkgLTIuNzIyNTEwMjcgMjEuMjU2MzkzODkgLTMuNTYyNSAxOS4zNzUgQy00LjI3NTk5NjA5IDE3LjgwODc4OTA2IC00LjI3NTk5NjA5IDE3LjgwODc4OTA2IC01LjAwMzkwNjI1IDE2LjIxMDkzNzUgQy02LjEzMjU2NzY4IDEyLjU3MjY2NDE5IC02LjAzOTIzNjQyIDEwLjYzNzMyNzQ1IC01IDcgQy0zLjU1NDMxMTQ1IDQuNDMwOTQwMzUgLTEuODIzMDY5ODYgMi4zMzcyNjkwNSAwIDAgWiAiIGZpbGw9IiMxMzZGNEEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzNzcsOTQpIi8+CjxwYXRoIGQ9Ik0wIDAgQzAuNjYgMCAxLjMyIDAgMiAwIEM1LjE4NDE5OTU5IDMuNzk2NTQ1NjcgNS4zODczNDU0OCA3LjExNjc2MjIgNS4yMzgyODEyNSAxMS44NjMyODEyNSBDNC45NDYwNDkxMyAxNC40ODM3ODg5NyA0LjA0MjM4MTk1IDE2LjU4OTQ5MTczIDMgMTkgQzIuNzkzNDQ5MzQgMjIuNDQyNTEwOTcgMi45MDYxNjA2OSAyNC43MTg0ODIwOCA0IDI4IEMyLjA2MjUgMjcuNjI1IDIuMDYyNSAyNy42MjUgMCAyNyBDLTEuNDIxNTEzNDUgMjQuMTU2OTczMDkgLTEuMjM5MjI2MDYgMjIuMTY5NzQ1MjggLTEgMTkgQy0wLjUwNSAxNy44NjU2MjUgLTAuMDEgMTYuNzMxMjUgMC41IDE1LjU2MjUgQzIuNTQzNzYwMDggMTAuNzA4NTY5ODEgMi42OTcwMTA1NCA3LjA0NzQ2ODQ1IDEgMi4wNjI1IEMwLjY3IDEuMzgxODc1IDAuMzQgMC43MDEyNSAwIDAgWiAiIGZpbGw9IiNEREVBRTUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzNjksNTkpIi8+CjxwYXRoIGQ9Ik0wIDAgQzIgMiAyIDIgMi4yNSA1LjMxMjUgQzIuMDE4NjM0NTIgOC43MjUxNDA4NCAxLjQ3NjUyODggMTAuOTU0NjU5MzUgMCAxNCBDLTAuNjYgMTMuMzQgLTEuMzIgMTIuNjggLTIgMTIgQy0xLjYyNSA4Ljg3NSAtMS42MjUgOC44NzUgLTEgNiBDLTMuMzEgNi4zMyAtNS42MiA2LjY2IC04IDcgQy04LjA0MjcyMSA1LjMzMzg4MDk1IC04LjA0MDYzODMyIDMuNjY2MTcxMTUgLTggMiBDLTUuOTU0NDc5NTggLTAuMDQ1NTIwNDIgLTIuNzI5NDE5MTQgMC4yMzk0MjI3MyAwIDAgWiAiIGZpbGw9IiMwQzZCNDUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzNzAsNjIpIi8+CjxwYXRoIGQ9Ik0wIDAgQzQuMjkgMCA4LjU4IDAgMTMgMCBDMTMgMS42NSAxMyAzLjMgMTMgNSBDOC43MSA1IDQuNDIgNSAwIDUgQzAgMy4zNSAwIDEuNyAwIDAgWiAiIGZpbGw9IiMxRTcwQzEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MjksNzkpIi8+CjxwYXRoIGQ9Ik0wIDAgQzEuMzIgMCAyLjY0IDAgNCAwIEM0IDUuMjggNCAxMC41NiA0IDE2IEMyLjY4IDE2IDEuMzYgMTYgMCAxNiBDMCAxMC43MiAwIDUuNDQgMCAwIFogIiBmaWxsPSIjMDA4NDI5IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMTY5LDkzKSIvPgo8cGF0aCBkPSJNMCAwIEM0LjI5IDAgOC41OCAwIDEzIDAgQzEyLjY3IDAuOTkgMTIuMzQgMS45OCAxMiAzIEMxMC42OCAzIDkuMzYgMyA4IDMgQzggNS42NCA4IDguMjggOCAxMSBDNy4wMSAxMSA2LjAyIDExIDUgMTEgQzUgOC4zNiA1IDUuNzIgNSAzIEMzLjM1IDIuNjcgMS43IDIuMzQgMCAyIEMwIDEuMzQgMCAwLjY4IDAgMCBaICIgZmlsbD0iI0U4MjAyNiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTc0OSwxMTYpIi8+CjxwYXRoIGQ9Ik0wIDAgQzMuOTYgMCA3LjkyIDAgMTIgMCBDMTIgMS42NSAxMiAzLjMgMTIgNSBDOC4wNCA1IDQuMDggNSAwIDUgQzAgMy4zNSAwIDEuNyAwIDAgWiAiIGZpbGw9IiMxRTcwQzEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1OTUsNzkpIi8+CjxwYXRoIGQ9Ik0wIDAgQzMuOTYgMCA3LjkyIDAgMTIgMCBDMTIgMS42NSAxMiAzLjMgMTIgNSBDOC4wNCA1IDQuMDggNSAwIDUgQzAgMy4zNSAwIDEuNyAwIDAgWiAiIGZpbGw9IiMxRTcwQzEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1MTgsNzkpIi8+CjxwYXRoIGQ9Ik0wIDAgQzMuOTYgMCA3LjkyIDAgMTIgMCBDMTIgMS42NSAxMiAzLjMgMTIgNSBDOC4wNCA1IDQuMDggNSAwIDUgQzAgMy4zNSAwIDEuNyAwIDAgWiAiIGZpbGw9IiMxRjcwQzAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1MTgsNzIpIi8+CjxwYXRoIGQ9Ik0wIDAgQzAuOTkgMCAxLjk4IDAgMyAwIEMzIDIuNjQgMyA1LjI4IDMgOCBDNS42NCA4IDguMjggOCAxMSA4IEMxMC42NyA4Ljk5IDEwLjM0IDkuOTggMTAgMTEgQzYuNyAxMSAzLjQgMTEgMCAxMSBDMCA3LjM3IDAgMy43NCAwIDAgWiAiIGZpbGw9IiNFODIwMjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3OTgsMTE2KSIvPgo8cGF0aCBkPSJNMCAwIEMwLjEyMTE3MTg4IDAuNjAzMjgxMjUgMC4yNDIzNDM3NSAxLjIwNjU2MjUgMC4zNjcxODc1IDEuODI4MTI1IEMwLjUzNDc2NTYzIDIuNjI3MzQzNzUgMC43MDIzNDM3NSAzLjQyNjU2MjUgMC44NzUgNC4yNSBDMS4wMzc0MjE4OCA1LjAzODkwNjI1IDEuMTk5ODQzNzUgNS44Mjc4MTI1IDEuMzY3MTg3NSA2LjY0MDYyNSBDMS45MTcxMzYxNyA5LjAxNDkwNDM4IDEuOTE3MTM2MTcgOS4wMTQ5MDQzOCAzLjA2MjUgMTEuMDkzNzUgQzQuMzcxMjUzNjQgMTMuNzU0ODgyNCA0LjEzMjY4NDUxIDE2LjA4MDk0MDc2IDQgMTkgQzMuMDEgMTkgMi4wMiAxOSAxIDE5IEMwLjcxMTI1IDE3Ljc4MzEyNSAwLjQyMjUgMTYuNTY2MjUgMC4xMjUgMTUuMzEyNSBDLTAuNDgzNjM3NyAxMi44NDMxNjk5MSAtMS4xMzkxMzY4MSAxMC42Njc2MTc2MyAtMi4xMjUgOC4zMTI1IEMtMy4xMDE2MzIyIDUuNzMxNDAwNjMgLTMuMTU2Mzg1NjggMy43MzY3NDk0NSAtMyAxIEMtMSAwIC0xIDAgMCAwIFogIiBmaWxsPSIjMEU2QzQ3IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzY4LDEwMikiLz4KPHBhdGggZD0iTTAgMCBDNC45NSAwIDkuOSAwIDE1IDAgQzE0LjM0IDEuMzIgMTMuNjggMi42NCAxMyA0IEM5LjA0IDQgNS4wOCA0IDEgNCBDMC42NyAyLjY4IDAuMzQgMS4zNiAwIDAgWiAiIGZpbGw9IiMxRTcwQzAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MTEsODcpIi8+CjxwYXRoIGQ9Ik0wIDAgQzMuNjI1NDM5MjIgMC41MTc5MTk4OSA3LjI1MDczNjc2IDEuMDM2Mzk3MjcgMTAuODc1IDEuNTYyNSBDMTIuOTMwODIyNzEgMS44NzcxMDUwMiAxMi45MzA4MjI3MSAxLjg3NzEwNTAyIDE1IDIgQzE1IDMuNjUgMTUgNS4zIDE1IDcgQzkuNTQ1MjA4MTUgNi40MzE3OTI1MiA1LjA4OTQwNzQ0IDUuMDUzNjIwNTUgMCAzIEMwIDIuMDEgMCAxLjAyIDAgMCBaICIgZmlsbD0iI0VFRjRGMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTM5MSw3MykiLz4KPHBhdGggZD0iTTAgMCBDMy42MyAwIDcuMjYgMCAxMSAwIEMxMSAyLjMxIDExIDQuNjIgMTEgNyBDMTAuMzQgNyA5LjY4IDcgOSA3IEM5IDUuNjggOSA0LjM2IDkgMyBDNy4wMiAzIDUuMDQgMyAzIDMgQzIuNjcgNC4zMiAyLjM0IDUuNjQgMiA3IEMxLjM0IDcgMC42OCA3IDAgNyBDMCA0LjY5IDAgMi4zOCAwIDAgWiAiIGZpbGw9IiNFODIwMjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4MTMsMTIwKSIvPgo8cGF0aCBkPSJNMCAwIEM0LjI5IDAgOC41OCAwIDEzIDAgQzEzIDEuMzIgMTMgMi42NCAxMyA0IEM4LjcxIDQgNC40MiA0IDAgNCBDMCAyLjY4IDAgMS4zNiAwIDAgWiAiIGZpbGw9IiMxRjcwQzAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MjksODcpIi8+CjxwYXRoIGQ9Ik0wIDAgQzMuOTYgMCA3LjkyIDAgMTIgMCBDMTIuMzMgMS4zMiAxMi42NiAyLjY0IDEzIDQgQzguNzEgNCA0LjQyIDQgMCA0IEMwIDIuNjggMCAxLjM2IDAgMCBaICIgZmlsbD0iIzFFNzBDMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTU3Miw4NykiLz4KPHBhdGggZD0iTTAgMCBDMy40NDQ0NzI5OSAyLjkzNTIwOTUxIDMuNTc3ODc2MSA1LjI1NjU4Mjc0IDMuOTY0ODQzNzUgOS41OTc2NTYyNSBDMy45OTg0NTQwNiAxMS44OTQzNjEgMy43Mzc5MTUwOSAxMy44NzUxMjQzMyAzLjMxMjUgMTYuMTI1IEMyLjkwNDY5NjM3IDIxLjE4MTc2NSA0LjE4MDYwNDkgMjIuODk5MDYxNjcgNyAyNyBDNi4zNCAyNy4zMyA1LjY4IDI3LjY2IDUgMjggQy0wLjA2ODA5Mzg0IDIxLjI0ODM4NzEgLTAuMDY4MDkzODQgMjEuMjQ4Mzg3MSAwLjE4NzUgMTYuNTYyNSBDMC40NTU2MjUgMTUuMzg2ODc1IDAuNzIzNzUgMTQuMjExMjUgMSAxMyBDMS4wODIyOTE3IDExLjQzOTExMjI5IDEuMTIyNDQ1OTkgOS44NzU1NTMzNyAxLjEyNSA4LjMxMjUgQzEuMTI4ODY3MTkgNy4yMjM4ODY3MiAxLjEyODg2NzE5IDcuMjIzODg2NzIgMS4xMzI4MTI1IDYuMTEzMjgxMjUgQzAuOTk3ODA3MzIgMy45NjUxMTA1OSAwLjU4NzcyOTQgMi4wNjYzODE5NSAwIDAgWiAiIGZpbGw9IiNEMEUyREIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzNzgsNjMpIi8+CjxwYXRoIGQ9Ik0wIDAgQzQuMjkgMCA4LjU4IDAgMTMgMCBDMTIuNjcgMS4zMiAxMi4zNCAyLjY0IDEyIDQgQzguMDQgNCA0LjA4IDQgMCA0IEMwIDIuNjggMCAxLjM2IDAgMCBaICIgZmlsbD0iIzFFNzBDMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTU3Miw2NSkiLz4KPHBhdGggZD0iTTAgMCBDMCAwLjk5IDAgMS45OCAwIDMgQy0xLjU3OTY3ODA3IDMuNjc1MjgyMjMgLTMuMTYzOTE5MDMgNC4zMzk4OTY5NCAtNC43NSA1IEMtNi4wNzI1NzgxMyA1LjU1Njg3NSAtNi4wNzI1NzgxMyA1LjU1Njg3NSAtNy40MjE4NzUgNi4xMjUgQy0xMCA3IC0xMCA3IC0xNCA3IEMtMTQgNS42OCAtMTQgNC4zNiAtMTQgMyBDLTQuNTg5OTc3MjIgLTAuNDQ0MTkxMzQgLTQuNTg5OTc3MjIgLTAuNDQ0MTkxMzQgMCAwIFogIiBmaWxsPSIjRUZGNUYzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzMxLDczKSIvPgo8cGF0aCBkPSJNMCAwIEMzLjk2IDAgNy45MiAwIDEyIDAgQzEyIDEuMzIgMTIgMi42NCAxMiA0IEM4LjA0IDQgNC4wOCA0IDAgNCBDMCAyLjY4IDAgMS4zNiAwIDAgWiAiIGZpbGw9IiMxRTcwQzAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1OTUsODcpIi8+CjxwYXRoIGQ9Ik0wIDAgQzMuOTYgMCA3LjkyIDAgMTIgMCBDMTIgMS4zMiAxMiAyLjY0IDEyIDQgQzguMDQgNCA0LjA4IDQgMCA0IEMwIDIuNjggMCAxLjM2IDAgMCBaICIgZmlsbD0iIzFFNzBDMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTU0OSw4NykiLz4KPHBhdGggZD0iTTAgMCBDMy45NiAwIDcuOTIgMCAxMiAwIEMxMiAxLjMyIDEyIDIuNjQgMTIgNCBDOC4wNCA0IDQuMDggNCAwIDQgQzAgMi42OCAwIDEuMzYgMCAwIFogIiBmaWxsPSIjMUU3MEMwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNTE4LDg3KSIvPgo8cGF0aCBkPSJNMCAwIEMzLjk2IDAgNy45MiAwIDEyIDAgQzEyIDEuMzIgMTIgMi42NCAxMiA0IEM4LjA0IDQgNC4wOCA0IDAgNCBDMCAyLjY4IDAgMS4zNiAwIDAgWiAiIGZpbGw9IiMxRTcwQzAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1NDksNjUpIi8+CjxwYXRoIGQ9Ik0wIDAgQzMuOTYgMCA3LjkyIDAgMTIgMCBDMTIgMS4zMiAxMiAyLjY0IDEyIDQgQzguMDQgNCA0LjA4IDQgMCA0IEMwIDIuNjggMCAxLjM2IDAgMCBaICIgZmlsbD0iIzFFNzBDMCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTUxOCw2NSkiLz4KPHBhdGggZD0iTTAgMCBDMy4zNzQ2MjcxNSAwLjU0NzIzNjgzIDUuMDgyMzUgMS4wNTQ5IDggMyBDNy4zNCA0Ljk4IDYuNjggNi45NiA2IDkgQzQgOCAyIDcgMCA2IEMwIDQuMDIgMCAyLjA0IDAgMCBaICIgZmlsbD0iIzFENzY1MiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTM5Myw5MykiLz4KPHBhdGggZD0iTTAgMCBDMCAzIDAgMyAtMSA1IEMtMS4yMTM3NzcyMSAxMC42MDcwMzIxMyAtMS4yMTM3NzcyMSAxMC42MDcwMzIxMyAwIDE2IEMwLjEyNzgxNzg2IDE4LjY3Mzk0OTY0IDAuMDQzOTE4NzEgMjEuMzIwOTU4NTcgMCAyNCBDLTAuNjYgMjQgLTEuMzIgMjQgLTIgMjQgQy0zLjcyNzI5MzA0IDE3LjI5MDY3OTkxIC00Ljc4MjM1NDYyIDEwLjgxODQwMzYgLTMgNCBDLTEuNDQ5MjE4NzUgMS43MTA5Mzc1IC0xLjQ0OTIxODc1IDEuNzEwOTM3NSAwIDAgWiAiIGZpbGw9IiNEOUU4RTIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzNDgsNjApIi8+CjxwYXRoIGQ9Ik0wIDAgQzAuMzMgMCAwLjY2IDAgMSAwIEMxIDEuNjUgMSAzLjMgMSA1IEMxLjg4Njg3NSA0LjY5MDYyNSAyLjc3Mzc1IDQuMzgxMjUgMy42ODc1IDQuMDYyNSBDOS4xNjA2NzE0NiAyLjMwNjk1NDQ0IDkuMTYwNjcxNDYgMi4zMDY5NTQ0NCAxMiAyIEMxMi45OSAyLjY2IDEzLjk4IDMuMzIgMTUgNCBDMTQuNjcgNC42NiAxNC4zNCA1LjMyIDE0IDYgQzExLjY4MDI1NzY2IDYuNDE3NTUzNjIgOS4zNDIxNDIwNyA2LjczNTU2NDYgNyA3IEM1LjA1MDkzNzUgNy4yNzg0Mzc1IDUuMDUwOTM3NSA3LjI3ODQzNzUgMy4wNjI1IDcuNTYyNSBDMi4wNTE4NzUgNy43MDY4NzUgMS4wNDEyNSA3Ljg1MTI1IDAgOCBDMCA1LjM2IDAgMi43MiAwIDAgWiAiIGZpbGw9IiMxODcyNEUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzMTcsNjgpIi8+CjxwYXRoIGQ9Ik0wIDAgQzMuMzMzMzMzMzMgMCA2LjY2NjY2NjY3IDAgMTAgMCBDMTAgMS45OCAxMCAzLjk2IDEwIDYgQzcuMzYgNiA0LjcyIDYgMiA2IEMyIDQuNjggMiAzLjM2IDIgMiBDMS4zNCAyIDAuNjggMiAwIDIgQzAgMS4zNCAwIDAuNjggMCAwIFogIiBmaWxsPSIjMDA2NDNDIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzg1LDExNykiLz4KPHBhdGggZD0iTTAgMCBDMi45NyAwIDUuOTQgMCA5IDAgQzguNjcgMS42NSA4LjM0IDMuMyA4IDUgQzUuNjkgNSAzLjM4IDUgMSA1IEMwLjY3IDMuMzUgMC4zNCAxLjcgMCAwIFogIiBmaWxsPSIjMUU3MEMxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjE0LDk0KSIvPgo8cGF0aCBkPSJNMCAwIEMwIDAuOTkgMCAxLjk4IDAgMyBDLTMuNjMgNC4zMiAtNy4yNiA1LjY0IC0xMSA3IEMtMTEuMzMgNS42OCAtMTEuNjYgNC4zNiAtMTIgMyBDLTEwLjc1MzM2NjY5IDIuNDkxNjY0MDkgLTkuNTAyNTA2MTMgMS45OTM2ODg1NSAtOC4yNSAxLjUgQy03LjU1MzkwNjI1IDEuMjIxNTYyNSAtNi44NTc4MTI1IDAuOTQzMTI1IC02LjE0MDYyNSAwLjY1NjI1IEMtNCAwIC00IDAgMCAwIFogIiBmaWxsPSIjRUZGNUYyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzI5LDgwKSIvPgo8cGF0aCBkPSJNMCAwIEMxLjA3MDc3Mzc1IDMuMjEyMzIxMjUgMSA1LjYzOTM3ODA3IDEgOSBDMS4zMyA5Ljk5IDEuNjYgMTAuOTggMiAxMiBDMS4wMSAxMiAwLjAyIDEyIC0xIDEyIEMtMS4zMyAxMC4zNSAtMS42NiA4LjcgLTIgNyBDLTMuOTggNyAtNS45NiA3IC04IDcgQy03LjIzNjg3NSA2LjQwMTg3NSAtNi40NzM3NSA1LjgwMzc1IC01LjY4NzUgNS4xODc1IEMtMy42NTE2NDI1IDMuNTMwNDA2NjggLTEuODAyMTcyMSAxLjg5NzAyMzI2IDAgMCBaICIgZmlsbD0iIzBENkI0NSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTM2OCw3NSkiLz4KPHBhdGggZD0iTTAgMCBDMS4yMDE1NzEzMSAzLjYwNDcxMzkzIDEuNTQ5ODEzNDggNy4xMTUwMzA4OCAxLjg3NSAxMC44NzUgQzEuOTYwMDc4MTMgMTEuNTgyNjk1MzEgMi4wNDUxNTYyNSAxMi4yOTAzOTA2MyAyLjEzMjgxMjUgMTMuMDE5NTMxMjUgQzIuNDc2OTI2MjggMTcuMjE5MjgzNTEgMi4yMzk3Mzc5MiAxOC43MTA2NjExMyAtMC40OTIxODc1IDIyLjAwNzgxMjUgQy0xLjMxOTc2NTYyIDIyLjY2NTIzNDM3IC0yLjE0NzM0Mzc1IDIzLjMyMjY1NjI1IC0zIDI0IEMtMi4xMjUgMjAuMTI1IC0yLjEyNSAyMC4xMjUgLTEgMTkgQy0wLjkzOTY4OTYzIDE1LjM4NTE0NzQyIC0wLjk4MDA1NDkzIDExLjc4NDEzNTc2IC0xLjAzOTA2MjUgOC4xNjk5MjE4OCBDLTEuMTAwMTMzMTUgMi4yMDAyNjYyOSAtMS4xMDAxMzMxNSAyLjIwMDI2NjI5IDAgMCBaICIgZmlsbD0iI0RERUFFNSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTM0Miw2NSkiLz4KPHBhdGggZD0iTTAgMCBDMSAyIDEgMiAwLjkzNzUgNS42ODc1IEMwLjg2OTQ3NzA3IDkuODIxNzgyMyAxLjY5NjU0Mzg5IDEzLjA4OTYzMTY4IDMgMTcgQzIuMzQgMTcgMS42OCAxNyAxIDE3IEMwLjY3IDE4LjMyIDAuMzQgMTkuNjQgMCAyMSBDLTEuMzk3NzM2NjEgMTQuOTA5ODYxOSAtMi40MzkxOTg3NCA5LjI1ODU4MjExIC0yIDMgQy0xLjM0IDIuMDEgLTAuNjggMS4wMiAwIDAgWiAiIGZpbGw9IiMyMTc4NTUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzNDgsNjIpIi8+CjxwYXRoIGQ9Ik0wIDAgQzQuMTk0Njk1NzEgMC41OTkyNDIyNCA4LjAwOTk5ODM0IDEuNTc0OTk5NDEgMTIgMyBDMTIgMy45OSAxMiA0Ljk4IDEyIDYgQzcuNjgyMjU0MiA1LjQ5MjAyOTkxIDMuOTY2OTc4ODYgNC44MDMxNzIyMSAwIDMgQzAgMi4wMSAwIDEuMDIgMCAwIFogIiBmaWxsPSIjRTdGMEVDIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzkzLDgwKSIvPgo8cGF0aCBkPSJNMCAwIEMxLjY3NTQyOTc2IDAuMjg2MDQ4OTggMy4zNDM4NTM0MyAwLjYxNzgxMjMzIDUgMSBDNS44NDY4MTEzMyA2LjA4MDg2Nzk2IDYuMDkwMzgwOTkgMTAuODQ4MjgzNzcgNiAxNiBDNS4zNCAxNiA0LjY4IDE2IDQgMTYgQzMuOTUxMDE1NjMgMTUuNDA4MzIwMzEgMy45MDIwMzEyNSAxNC44MTY2NDA2MyAzLjg1MTU2MjUgMTQuMjA3MDMxMjUgQzMuMjYxOTU4IDcuODg5NzQ5MDkgMy4yNjE5NTggNy44ODk3NDkwOSAxIDIgQzAuMzQgMS42NyAtMC4zMiAxLjM0IC0xIDEgQy0wLjY3IDAuNjcgLTAuMzQgMC4zNCAwIDAgWiAiIGZpbGw9IiMxNzcyNEUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzNzAsNTcpIi8+CjxwYXRoIGQ9Ik0wIDAgQzMuNjA4ODEzMSAwLjgzNTA2MTE3IDMuNjA4ODEzMSAwLjgzNTA2MTE3IDUuODEyNSAtMC41IEM1LjgxMjUgMS4xNSA1LjgxMjUgMi44IDUuODEyNSA0LjUgQzMuNDc5MTY2NjcgNC4xNjY2NjY2NyAxLjE0NTgzMzMzIDMuODMzMzMzMzMgLTEuMTg3NSAzLjUgQy0yLjQ2NjI1IDMuMzU1NjI1IC0zLjc0NSAzLjIxMTI1IC01LjA2MjUgMy4wNjI1IEMtNi4wOTM3NSAyLjg3Njg3NSAtNy4xMjUgMi42OTEyNSAtOC4xODc1IDIuNSBDLTguNTE3NSAxLjg0IC04Ljg0NzUgMS4xOCAtOS4xODc1IDAuNSBDLTUuOTIyMjU5MDcgLTAuNDE4MzQ5MDEgLTMuMzE1NTMyMDkgLTAuNDc3MDk4NDIgMCAwIFogIiBmaWxsPSIjMUI3NDUxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzk5LjE4NzUsNzEuNSkiLz4KPHBhdGggZD0iTTAgMCBDMi45NyAwIDUuOTQgMCA5IDAgQzguNjcgMS4zMiA4LjM0IDIuNjQgOCA0IEM1LjAzIDQgMi4wNiA0IC0xIDQgQy0wLjY3IDIuNjggLTAuMzQgMS4zNiAwIDAgWiAiIGZpbGw9IiNEQ0VERTIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIwNDAsOTIpIi8+CjxwYXRoIGQ9Ik0wIDAgQzMuOTYgMCA3LjkyIDAgMTIgMCBDMTEuNjcgMC45OSAxMS4zNCAxLjk4IDExIDMgQzcuNyAzIDQuNCAzIDEgMyBDMC42NyAyLjAxIDAuMzQgMS4wMiAwIDAgWiAiIGZpbGw9IiNFNzIwMjYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3NjYsMTIwKSIvPgo8cGF0aCBkPSJNMCAwIEMzLjk2IDAgNy45MiAwIDEyIDAgQzExLjY3IDAuOTkgMTEuMzQgMS45OCAxMSAzIEM3LjcgMyA0LjQgMyAxIDMgQzAuNjcgMi4wMSAwLjM0IDEuMDIgMCAwIFogIiBmaWxsPSIjRTkyMDI2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNzY2LDExNikiLz4KPHBhdGggZD0iTTAgMCBDOS40MTAwMjI3OCAtMC4zNjkwMjA1IDkuNDEwMDIyNzggLTAuMzY5MDIwNSAxNCAyIEMxNCAzLjY1IDE0IDUuMyAxNCA3IEMxMy41MDUgNi41MjU2MjUgMTMuMDEgNi4wNTEyNSAxMi41IDUuNTYyNSBDOS45MzI3MzUyOSAzLjk1Nzk1OTU1IDguODAwMzY5MDkgMy43NDk5ODYwOSA1Ljg3NSAzLjUgQzQuNTk2MjUgMy4zMzUgMy4zMTc1IDMuMTcgMiAzIEMxLjM0IDIuMDEgMC42OCAxLjAyIDAgMCBaICIgZmlsbD0iIzNEODk2QiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTM1Niw1NSkiLz4KPHBhdGggZD0iTTAgMCBDMC4yODQ4ODI4MSAwLjU3NDkyMTg4IDAuNTY5NzY1NjIgMS4xNDk4NDM3NSAwLjg2MzI4MTI1IDEuNzQyMTg3NSBDMS41OTM5MzI5NyAzLjE5MzQ0NzYyIDIuMzQwMTUwNTEgNC42MzcwMzEgMy4xMDU0Njg3NSA2LjA3MDMxMjUgQzMuNDYyNTM5MDYgNi43NDgzNTkzOCAzLjgxOTYwOTM4IDcuNDI2NDA2MjUgNC4xODc1IDguMTI1IEM0LjU1MjMwNDY5IDguODA4MjAzMTMgNC45MTcxMDkzOCA5LjQ5MTQwNjI1IDUuMjkyOTY4NzUgMTAuMTk1MzEyNSBDNS41MjYyODkwNiAxMC43OTA4NTkzNyA1Ljc1OTYwOTM4IDExLjM4NjQwNjI1IDYgMTIgQzUuNjcgMTIuNjYgNS4zNCAxMy4zMiA1IDE0IEM0LjM0IDE0IDMuNjggMTQgMyAxNCBDLTEuMDc4Nzc0NjIgNS45NjQ5ODkwNiAtMS4wNzg3NzQ2MiA1Ljk2NDk4OTA2IC0wLjc1IDEuOTM3NSBDLTAuNTAyNSAxLjI5ODEyNSAtMC4yNTUgMC42NTg3NSAwIDAgWiAiIGZpbGw9IiMwQzZCNDUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzNzgsMTAzKSIvPgo8cGF0aCBkPSJNMCAwIEMzLjk2IDAgNy45MiAwIDEyIDAgQzExLjAxIDEuNDg1IDExLjAxIDEuNDg1IDEwIDMgQzguMTI1IDMuMzI4MTI1IDguMTI1IDMuMzI4MTI1IDYgMy4yNSBDNS4yOTg3NSAzLjIzNDUzMTI1IDQuNTk3NSAzLjIxOTA2MjUgMy44NzUgMy4yMDMxMjUgQzIgMyAyIDMgMCAyIEMwIDEuMzQgMCAwLjY4IDAgMCBaICIgZmlsbD0iI0U4MjAyNiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTc2NiwxMjQpIi8+CjxwYXRoIGQ9Ik0wIDAgQzMuNjMgMCA3LjI2IDAgMTEgMCBDMTAuNjcgMC45OSAxMC4zNCAxLjk4IDEwIDMgQzcuMDMgMyA0LjA2IDMgMSAzIEMwLjY3IDIuMDEgMC4zNCAxLjAyIDAgMCBaICIgZmlsbD0iI0U4MjAyNiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTgxMywxMTYpIi8+CjxwYXRoIGQ9Ik0wIDAgQzAuNDk1IDAuMzkxODc1IDAuOTkgMC43ODM3NSAxLjUgMS4xODc1IEMwLjE2NjY2NjY3IDEuODU0MTY2NjcgLTEuMTY2NjY2NjcgMi41MjA4MzMzMyAtMi41IDMuMTg3NSBDLTMuNDkgMy43NDQzNzUgLTMuNDkgMy43NDQzNzUgLTQuNSA0LjMxMjUgQy02LjUgNS4xODc1IC02LjUgNS4xODc1IC0xMC41IDUuMTg3NSBDLTEwLjUgNC4xOTc1IC0xMC41IDMuMjA3NSAtMTAuNSAyLjE4NzUgQy0zLjI4Nzc0NjE3IC0xLjA2ODUxNzUxIC0zLjI4Nzc0NjE3IC0xLjA2ODUxNzUxIDAgMCBaICIgZmlsbD0iIzEyNkY0QSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTMyNy41LDc3LjgxMjUpIi8+CjxwYXRoIGQ9Ik0wIDAgQzIuNjQgMCA1LjI4IDAgOCAwIEM3LjY3IDEuMzIgNy4zNCAyLjY0IDcgNCBDNC42OSA0IDIuMzggNCAwIDQgQzAgMi42OCAwIDEuMzYgMCAwIFogIiBmaWxsPSIjRDdFQkRFIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMDA5LDk2KSIvPgo8cGF0aCBkPSJNMCAwIEMzLjU1NzgwMTk2IDAuNjA5OTA4OTEgNi42ODI4NTg5IDEuNTc4MzY4MSAxMCAzIEM5LjY3IDMuOTkgOS4zNCA0Ljk4IDkgNiBDNS44NTI2MjgxOCA1LjMwMDU4NDA0IDIuOTc0MTExMjQgNC4yMzkyMTMwMiAwIDMgQzAgMi4wMSAwIDEuMDIgMCAwIFogIiBmaWxsPSIjREZFQkU2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzk0LDg3KSIvPgo8cGF0aCBkPSJNMCAwIEMtMSAzIC0xIDMgLTIuODQ3NjU2MjUgNC4xNjc5Njg3NSBDLTMuNTc4NTU0NjkgNC41MDQ0MTQwNiAtNC4zMDk0NTMxMiA0Ljg0MDg1OTM3IC01LjA2MjUgNS4xODc1IEMtNS43OTU5NzY1NiA1LjUzMTY3OTY5IC02LjUyOTQ1MzEyIDUuODc1ODU5MzggLTcuMjg1MTU2MjUgNi4yMzA0Njg3NSBDLTguMTM0MDAzOTEgNi42MTEzODY3MiAtOC4xMzQwMDM5MSA2LjYxMTM4NjcyIC05IDcgQy05LjMzIDUuNjggLTkuNjYgNC4zNiAtMTAgMyBDLTYuMjcwMzQ4NjEgMC45NjU2NDQ2OSAtNC4zMzA5NDk1OCAwIDAgMCBaICIgZmlsbD0iI0U4RjFFRCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTMyOCw4NykiLz4KPHBhdGggZD0iTTAgMCBDMi4zOTI3MzIzNSAzLjU4OTA5ODUzIDMuMTUzMTA5ODYgNS4yNjMxMzQ3OCAzLjE4NzUgOS41IEMzLjIwMTY3OTY5IDEwLjI5NDA2MjUgMy4yMTU4NTkzOCAxMS4wODgxMjUgMy4yMzA0Njg3NSAxMS45MDYyNSBDMyAxNCAzIDE0IDEgMTYgQy0wLjE1NzAzOTggMTIuNTI4ODgwNTkgLTAuMDMzOTY0ODkgOS43NzM2ODM0NiAwLjA2MjUgNi4xNTYyNSBDMC4wOTg0MjE3OSAzLjgxNDI1MTIzIDAuMDk4NDIxNzkgMy44MTQyNTEyMyAtMSAxIEMtMC42NyAwLjY3IC0wLjM0IDAuMzQgMCAwIFogIiBmaWxsPSIjMjI3OTU2IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzc3LDYyKSIvPgo8cGF0aCBkPSJNMCAwIEMwLjY2IDAuMzMgMS4zMiAwLjY2IDIgMSBDMS4zNCAzLjk3IDAuNjggNi45NCAwIDEwIEMtMC45OSA5LjY3IC0xLjk4IDkuMzQgLTMgOSBDLTIuNDQyNzEwODcgNS42NTYyNjUyNSAtMS42NDgyNjExMSAyLjk2Njg3MDAxIDAgMCBaICIgZmlsbD0iI0RDRUFFNCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTM0NCwxMDgpIi8+CjxwYXRoIGQ9Ik0wIDAgQzMuMjcyODY2ODIgMi43ODE5MzY4IDQuOTY0Mjc2OTcgNi4yNzk1NDA2NyA3IDEwIEM2LjAxIDEwLjMzIDUuMDIgMTAuNjYgNCAxMSBDMy4zMjU5MTY5MiA5LjczMzA4NDkzIDIuNjYwOTk1MDMgOC40NjEyOTI1MSAyIDcuMTg3NSBDMS42Mjg3NSA2LjQ3OTgwNDY5IDEuMjU3NSA1Ljc3MjEwOTM3IDAuODc1IDUuMDQyOTY4NzUgQzAgMyAwIDMgMCAwIFogIiBmaWxsPSIjRDVFNURGIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzc5LDEwNCkiLz4KPHBhdGggZD0iTTAgMCBDMi42NCAwIDUuMjggMCA4IDAgQzcuMzQgMS4zMiA2LjY4IDIuNjQgNiA0IEMzLjAzIDMuNTA1IDMuMDMgMy41MDUgMCAzIEMwIDIuMDEgMCAxLjAyIDAgMCBaICIgZmlsbD0iI0ZDRkRGQyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjAzOCw5OSkiLz4KPHBhdGggZD0iTTAgMCBDMCAwLjk5IDAgMS45OCAwIDMgQy0zLjQ2NSA0LjQ4NSAtMy40NjUgNC40ODUgLTcgNiBDLTcuMzMgNS4wMSAtNy42NiA0LjAyIC04IDMgQy0zLjM3NSAwIC0zLjM3NSAwIDAgMCBaICIgZmlsbD0iI0Q2RTZERiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTMyOSw5MykiLz4KPHBhdGggZD0iTTAgMCBDLTAuNzUgNy43NSAtMC43NSA3Ljc1IC0zIDEwIEMtNC40NzgzMjI2IDcuMDQzMzU0ODEgLTQuMDYwMzI3ODMgNC4yNTc3MDI2MyAtNCAxIEMtMiAwIC0yIDAgMCAwIFogIiBmaWxsPSIjMkM3RTVEIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzcyLDY2KSIvPgo8cGF0aCBkPSJNMCAwIEMwLjkzMDQ1OTMzIDIuNTUxNDQ4MjQgMS4wODU2NDA5MSAzLjc0MDA2NDc4IDAuMjIyNjU2MjUgNi4zNTkzNzUgQy0wLjE2MDE5NTMxIDcuMTQ4MjgxMjUgLTAuNTQzMDQ2ODggNy45MzcxODc1IC0wLjkzNzUgOC43NSBDLTEuNTA3OTEwMTYgOS45NDg4MjgxMyAtMS41MDc5MTAxNiA5Ljk0ODgyODEzIC0yLjA4OTg0Mzc1IDExLjE3MTg3NSBDLTIuMzkwMTk1MzEgMTEuNzc1MTU2MjUgLTIuNjkwNTQ2ODggMTIuMzc4NDM3NSAtMyAxMyBDLTMuNjYgMTIuNjcgLTQuMzIgMTIuMzQgLTUgMTIgQy00LjQ2MjMxMTI4IDguMTI4NjQxMiAtMy40MjI1MjcgNi4wMjgxNTg3NSAtMSAzIEMtMC42NyAyLjAxIC0wLjM0IDEuMDIgMCAwIFogIiBmaWxsPSIjRENFOUU0IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzQyLDEwMykiLz4KPHBhdGggZD0iTTAgMCBDMC45OSAwLjMzIDEuOTggMC42NiAzIDEgQzIuNTQ2MjUgMS43NDI1IDIuMDkyNSAyLjQ4NSAxLjYyNSAzLjI1IEMwLjMxMzU5MjA0IDUuNDY5MzA1NzggLTAuODgyODA4MDMgNy42Nzk2NzgyMiAtMiAxMCBDLTMuMDYzNTE2NzUgNi42MTYwODMwNyAtMy4yMTQ0Mjk4MiA1LjQxOTUzNjYgLTEuNTYyNSAyLjE4NzUgQy0xLjA0Njg3NSAxLjQ2NTYyNSAtMC41MzEyNSAwLjc0Mzc1IDAgMCBaICIgZmlsbD0iI0RCRTlFMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTM3OCw5NikiLz4KPHBhdGggZD0iTTAgMCBDMCAwLjk5IDAgMS45OCAwIDMgQy0yLjUgNC42ODc1IC0yLjUgNC42ODc1IC01IDYgQy01LjY2IDUuMDEgLTYuMzIgNC4wMiAtNyAzIEMtMy4zNzUgMCAtMy4zNzUgMCAwIDAgWiAiIGZpbGw9IiMwRDZDNDYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzMjksOTYpIi8+CjxwYXRoIGQ9Ik0wIDAgQzAuNjYgMCAxLjMyIDAgMiAwIEMyIDAuNjYgMiAxLjMyIDIgMiBDMy4zMiAyIDQuNjQgMiA2IDIgQzYgMi42NiA2IDMuMzIgNiA0IEM0LjY4IDQgMy4zNiA0IDIgNCBDMS42NyA1LjMyIDEuMzQgNi42NCAxIDggQy0wLjM1NDM5NjY4IDUuMjkxMjA2NjUgLTAuMDY1MDE0NTEgMi45OTA2NjczMiAwIDAgWiAiIGZpbGw9IiMxOTczNEYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzNTAsNjQpIi8+CjxwYXRoIGQ9Ik0wIDAgQzEuMzIgMC42NiAyLjY0IDEuMzIgNCAyIEM0IDIuOTkgNCAzLjk4IDQgNSBDMSA1IDEgNSAtMC42ODc1IDMuNSBDLTEuMTIwNjI1IDMuMDA1IC0xLjU1Mzc1IDIuNTEgLTIgMiBDLTEuMzQgMS4zNCAtMC42OCAwLjY4IDAgMCBaICIgZmlsbD0iIzE1NzI0QyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTM5MiwxMDEpIi8+CjxwYXRoIGQ9Ik0wIDAgQzAuOTkgMC4zMyAxLjk4IDAuNjYgMyAxIEMyLjM0IDMuOTcgMS42OCA2Ljk0IDEgMTAgQzAuMDEgOS4wMSAtMC45OCA4LjAyIC0yIDcgQy0xLjM0IDQuNjkgLTAuNjggMi4zOCAwIDAgWiAiIGZpbGw9IiMyOTdENUIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzNzMsNzMpIi8+CjxwYXRoIGQ9Ik0wIDAgQzIgMC42NjY2NjY2NyA0IDEuMzMzMzMzMzMgNiAyIEM1LjY3IDIuNjYgNS4zNCAzLjMyIDUgNCBDMi4zNTEzOTU3MyA0LjU5MzU1NjE0IC0wLjI5MTk3MzIyIDQuNzQyMDkyNjkgLTMgNSBDLTIuNjI1IDMuMDYyNSAtMi42MjUgMy4wNjI1IC0yIDEgQy0xLjM0IDAuNjcgLTAuNjggMC4zNCAwIDAgWiAiIGZpbGw9IiMzMzgzNjMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzMjYsNzApIi8+CjxwYXRoIGQ9Ik0wIDAgQzIuMzEgMCA0LjYyIDAgNyAwIEM3IDEuMzIgNyAyLjY0IDcgNCBDNS42OCA0IDQuMzYgNCAzIDQgQzMgMy4zNCAzIDIuNjggMyAyIEMyLjAxIDIgMS4wMiAyIDAgMiBDMCAxLjM0IDAgMC42OCAwIDAgWiAiIGZpbGw9IiM2N0EyOEEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzNTMsNjQpIi8+CjxwYXRoIGQ9Ik0wIDAgQzAuOTkgMCAxLjk4IDAgMyAwIEMyLjY4NzUgMS44NzUgMi42ODc1IDEuODc1IDIgNCBDMS4wMSA0LjY2IDAuMDIgNS4zMiAtMSA2IEMtMS42MjUgNC4xMjUgLTEuNjI1IDQuMTI1IC0yIDIgQy0xLjM0IDEuMzQgLTAuNjggMC42OCAwIDAgWiAiIGZpbGw9IiMxNDcwNEIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzMjgsMTAxKSIvPgo8cGF0aCBkPSJNMCAwIEM0Ljc1IDEuODc1IDQuNzUgMS44NzUgNyAzIEM2LjY3IDMuOTkgNi4zNCA0Ljk4IDYgNiBDMy45NjE2NjU3NiA0LjcyNjA0MTEgMS45NjE0Nzg3NCAzLjM4OTM4MDc3IDAgMiBDMCAxLjM0IDAgMC42OCAwIDAgWiAiIGZpbGw9IiNFOEYxRUUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzOTQsOTMpIi8+CjxwYXRoIGQ9Ik0wIDAgQzEuOTggMCAzLjk2IDAgNiAwIEM2IDAuOTkgNiAxLjk4IDYgMyBDMy42OSAzIDEuMzggMyAtMSAzIEMtMC42NyAyLjAxIC0wLjM0IDEuMDIgMCAwIFogIiBmaWxsPSIjRjhGQkY5IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMDEyLDkwKSIvPgo8cGF0aCBkPSJNMCAwIEMwLjMzIDEuMzIgMC42NiAyLjY0IDEgNCBDMS42NiA0IDIuMzIgNCAzIDQgQzMuNjYgNS42NSA0LjMyIDcuMyA1IDkgQzMuMDYyNSA4LjYyNSAzLjA2MjUgOC42MjUgMSA4IEMtMC4zNTQzOTY2OCA1LjI5MTIwNjY1IC0wLjA2NTAxNDUxIDIuOTkwNjY3MzIgMCAwIFogIiBmaWxsPSIjRDRFNERFIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMzY4LDc4KSIvPgo8cGF0aCBkPSJNMCAwIEMwLjk5IDAuMzMgMS45OCAwLjY2IDMgMSBDMi4zNCAzLjMxIDEuNjggNS42MiAxIDggQzAuMzQgOCAtMC4zMiA4IC0xIDggQy0xLjEyNSAyLjI1IC0xLjEyNSAyLjI1IDAgMCBaICIgZmlsbD0iI0VGRjVGMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTM3MCw3NCkiLz4KPHBhdGggZD0iTTAgMCBDMi4wMDcyMDkyMyAwLjI4Njc0NDE4IDQuMDA4NTk0NCAwLjYxODY2NzAxIDYgMSBDNiAxLjY2IDYgMi4zMiA2IDMgQzQuMzUgMyAyLjcgMyAxIDMgQzEgMy45OSAxIDQuOTggMSA2IEMwLjM0IDYgLTAuMzIgNiAtMSA2IEMtMS4wNDI3MjEgNC4zMzM4ODA5NSAtMS4wNDA2MzgzMiAyLjY2NjE3MTE1IC0xIDEgQy0wLjY3IDAuNjcgLTAuMzQgMC4zNCAwIDAgWiAiIGZpbGw9IiM3MkE5OTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEzNjMsNjMpIi8+CjxwYXRoIGQ9Ik0wIDAgQzEuOTM3NSAwLjY4NzUgMS45Mzc1IDAuNjg3NSA0IDIgQzQuNzUgNC42MjUgNC43NSA0LjYyNSA1IDcgQzQuMzQgNyAzLjY4IDcgMyA3IEMwIDIuNjE1Mzg0NjIgMCAyLjYxNTM4NDYyIDAgMCBaICIgZmlsbD0iIzBDNkI0NSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTM1MSw5NykiLz4KPHBhdGggZD0iTTAgMCBDMS4zMiAwIDIuNjQgMCA0IDAgQzQgMC45OSA0IDEuOTggNCAzIEMyLjAyIDMuNjYgMC4wNCA0LjMyIC0yIDUgQy0xLjM0IDMuMzUgLTAuNjggMS43IDAgMCBaICIgZmlsbD0iI0U2RjBFQyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTMyNSw4MCkiLz4KPHBhdGggZD0iTTAgMCBDMS4zMiAwIDIuNjQgMCA0IDAgQzMuNjcgMS4zMiAzLjM0IDIuNjQgMyA0IEMyLjAxIDQgMS4wMiA0IDAgNCBDMCAyLjY4IDAgMS4zNiAwIDAgWiAiIGZpbGw9IiMwMDg0MjgiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIxNjksODcpIi8+CjxwYXRoIGQ9Ik0wIDAgQzAuOTkgMCAxLjk4IDAgMyAwIEMyLjM0IDEuMzIgMS42OCAyLjY0IDEgNCBDMC42NyAyLjY4IDAuMzQgMS4zNiAwIDAgWiAiIGZpbGw9IiMxRTcwQzEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MTcsMTAyKSIvPgo8L3N2Zz4K\\\" style=\\\"\\n width: 742.5px;\\n position: relative;\\n top: 107px;\\n left: 32px;\\n \\\">\\n <a href=\" + accountURL + \" style=\\\"\\n float: left;\\n border-radius: 56px;\\n background: #0D6EFD;\\n padding-top: 8px;\\n width: 280px;\\n height: 38px;\\n text-align: center;\\n position: relative;\\n top: 127px;\\n left: 274px;\\n font-size: 16px;\\n color: white;\\n text-decoration: none;\\n letter-spacing: 0.02em;\\n \\\">Claim your FREE account</a>\\n <div style=\\\"\\n font-size: 14px;\\n position: relative;\\n top: 180px;\\n left: 19px;\\n letter-spacing: 0.02em;\\n font-weight: 500;\\n line-height: 125%;\\n\\\">have a Syncfusion<sup>\\u00AE</sup> account? <a href=\\\"https://www.syncfusion.com/account/login?ReturnUrl=/account/login\\\" style=\\\"text-decoration: none;\\ncolor: #0D6EFD;\\nfont-weight: 500;\\\">Sign In</a></div>\\n </div>\\n </div>\";\n if (typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n var errorBackground = createElement('div', {\n innerHTML: bannerTemplate\n });\n document.body.appendChild(errorBackground);\n }\n};","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 @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\nimport { isUndefined, getValue, isNullOrUndefined, setValue, uniqueID, isBlazor } from './util';\nimport { ModuleLoader } from './module-loader';\nimport { Base } from './base';\nimport { Observer } from './observer';\nimport { ChildProperty } from './child-property';\nimport { Property, NotifyPropertyChanges } from './notify-property-change';\nimport { onIntlChange, rightToLeft, defaultCulture } from './internationalization';\nimport { createElement, addClass, removeClass, select } from './dom';\nimport { validateLicense, createLicenseOverlay, componentList } from './validate-lic';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\n// Decalre the static variable to count the instance\nvar instancecount = 0;\n// Decalre the static variable to find if control limit exceed or not\nvar isvalid = true;\n// We have added styles to inline type so here declare the static variable to detect if banner is added or not\nvar isBannerAdded = false;\nexport var versionBasedStatePersistence = false;\n/**\n * To enable or disable version based statePersistence functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable versionBasedStatePersistence option.\n * @returns {void}\n */\nexport function enableVersionBasedPersistence(status) {\n versionBasedStatePersistence = status;\n}\n/**\n * Base class for all Essential JavaScript components\n */\nvar Component = /** @class */function (_super) {\n __extends(Component, _super);\n /**\n * Initialize the constructor for component base\n *\n * @param {Object} options ?\n * @param {string} selector ?\n */\n function Component(options, selector) {\n var _this = _super.call(this, options, selector) || this;\n _this.randomId = uniqueID();\n /**\n * string template option for Blazor template rendering\n *\n * @private\n */\n _this.isStringTemplate = false;\n _this.needsID = false;\n _this.isReactHybrid = false;\n _this.isAngular = false;\n _this.isReact = false;\n _this.isVue = false;\n if (isNullOrUndefined(_this.enableRtl)) {\n _this.setProperties({\n 'enableRtl': rightToLeft\n }, true);\n }\n if (isNullOrUndefined(_this.locale)) {\n _this.setProperties({\n 'locale': defaultCulture\n }, true);\n }\n _this.moduleLoader = new ModuleLoader(_this);\n _this.localObserver = new Observer(_this);\n onIntlChange.on('notifyExternalChange', _this.detectFunction, _this, _this.randomId);\n // Based on the considered control list we have count the instance\n if (typeof window !== 'undefined' && typeof document !== 'undefined' && !true) {\n if (componentList.indexOf(_this.getModuleName()) !== -1) {\n instancecount = instancecount + 1;\n if (instancecount > 5) {\n isvalid = false;\n }\n }\n }\n if (!isUndefined(selector)) {\n _this.appendTo();\n }\n return _this;\n }\n Component.prototype.requiredModules = function () {\n return [];\n };\n /**\n * Destroys the sub modules while destroying the widget\n *\n * @returns {void} ?\n */\n Component.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.enablePersistence) {\n this.setPersistData();\n this.detachUnloadEvent();\n }\n this.localObserver.destroy();\n if (this.refreshing) {\n return;\n }\n removeClass([this.element], ['e-control']);\n this.trigger('destroyed', {\n cancel: false\n });\n _super.prototype.destroy.call(this);\n this.moduleLoader.clean();\n onIntlChange.off('notifyExternalChange', this.detectFunction, this.randomId);\n };\n /**\n * Applies all the pending property changes and render the component again.\n *\n * @returns {void} ?\n */\n Component.prototype.refresh = function () {\n this.refreshing = true;\n this.moduleLoader.clean();\n this.destroy();\n this.clearChanges();\n this.localObserver = new Observer(this);\n this.preRender();\n this.injectModules();\n this.render();\n this.refreshing = false;\n };\n Component.prototype.accessMount = function () {\n if (this.mount && !this.isReactHybrid) {\n this.mount();\n }\n };\n /**\n * Returns the route element of the component\n *\n * @returns {HTMLElement} ?\n */\n Component.prototype.getRootElement = function () {\n if (this.isReactHybrid) {\n return this.actualElement;\n } else {\n return this.element;\n }\n };\n /**\n * Returns the persistence data for component\n *\n * @returns {any} ?\n */\n Component.prototype.getLocalData = function () {\n var eleId = this.getModuleName() + this.element.id;\n if (versionBasedStatePersistence) {\n return window.localStorage.getItem(eleId + this.ej2StatePersistenceVersion);\n } else {\n return window.localStorage.getItem(eleId);\n }\n };\n /**\n * Adding unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.attachUnloadEvent = function () {\n this.handleUnload = this.handleUnload.bind(this);\n window.addEventListener('pagehide', this.handleUnload);\n };\n /**\n * Handling unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.handleUnload = function () {\n this.setPersistData();\n };\n /**\n * Removing unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.detachUnloadEvent = function () {\n window.removeEventListener('pagehide', this.handleUnload);\n };\n /**\n * Appends the control within the given HTML element\n *\n * @param {string | HTMLElement} selector - Target element where control needs to be appended\n * @returns {void} ?\n */\n Component.prototype.appendTo = function (selector) {\n if (!isNullOrUndefined(selector) && typeof selector === 'string') {\n this.element = select(selector, document);\n } else if (!isNullOrUndefined(selector)) {\n this.element = selector;\n }\n if (!isNullOrUndefined(this.element)) {\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-control', moduleClass]);\n this.isProtectedOnChange = false;\n if (this.needsID && !this.element.id) {\n this.element.id = this.getUniqueID(this.getModuleName());\n }\n if (this.enablePersistence) {\n this.mergePersistData();\n this.attachUnloadEvent();\n }\n var inst = getValue('ej2_instances', this.element);\n if (!inst || inst.indexOf(this) === -1) {\n _super.prototype.addInstance.call(this);\n }\n this.preRender();\n this.injectModules();\n // Throw a warning for the required modules to be injected.\n var ignoredComponents = {\n schedule: 'all',\n diagram: 'all',\n PdfViewer: 'all',\n grid: ['logger'],\n richtexteditor: ['link', 'table', 'image', 'audio', 'video', 'formatPainter', 'emojiPicker', 'pasteCleanup', 'htmlEditor', 'toolbar', 'importExport'],\n treegrid: ['filter'],\n gantt: ['tooltip'],\n chart: ['Export', 'Zoom'],\n accumulationchart: ['Export'],\n 'query-builder': 'all'\n };\n var component = this.getModuleName();\n if (this.requiredModules && (!ignoredComponents[\"\" + component] || ignoredComponents[\"\" + component] !== 'all')) {\n var modulesRequired = this.requiredModules();\n for (var _i = 0, _a = this.moduleLoader.getNonInjectedModules(modulesRequired); _i < _a.length; _i++) {\n var module = _a[_i];\n var moduleName = module.name ? module.name : module.member;\n if (ignoredComponents[\"\" + component] && ignoredComponents[\"\" + component].indexOf(module.member) !== -1) {\n continue;\n }\n var componentName = component.charAt(0).toUpperCase() + component.slice(1); // To capitalize the component name\n console.warn(\"[WARNING] :: Module \\\"\" + moduleName + \"\\\" is not available in \" + componentName + \" component! You either misspelled the module name or forgot to load it.\");\n }\n }\n // Checked weather cases are valid or not. If control leads to more than five counts\n if (!isvalid && !isBannerAdded) {\n createLicenseOverlay();\n isBannerAdded = true;\n }\n this.render();\n if (!this.mount) {\n this.trigger('created');\n } else {\n this.accessMount();\n }\n }\n };\n /**\n * It is used to process the post rendering functionalities to a component.\n *\n * @param {Node} wrapperElement ?\n * @returns {void} ?\n */\n Component.prototype.renderComplete = function (wrapperElement) {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n window[\"\" + sfBlazor].renderComplete(this.element, wrapperElement);\n }\n this.isRendered = true;\n };\n /**\n * When invoked, applies the pending property changes immediately to the component.\n *\n * @returns {void} ?\n */\n Component.prototype.dataBind = function () {\n this.injectModules();\n _super.prototype.dataBind.call(this);\n };\n /**\n * Attach one or more event handler to the current component context.\n * It is used for internal handling event internally within the component only.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the handler to run when the event occurs\n * @param {Object} context - optional parameter Specifies the context to be bind in the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.on = function (event, handler, context) {\n if (typeof event === 'string') {\n this.localObserver.on(event, handler, context);\n } else {\n for (var _i = 0, event_1 = event; _i < event_1.length; _i++) {\n var arg = event_1[_i];\n this.localObserver.on(arg.event, arg.handler, arg.context);\n }\n }\n };\n /**\n * To remove one or more event handler that has been attached with the on() method.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the function to run when the event occurs\n * @returns {void} ?\n * @private\n */\n Component.prototype.off = function (event, handler) {\n if (typeof event === 'string') {\n this.localObserver.off(event, handler);\n } else {\n for (var _i = 0, event_2 = event; _i < event_2.length; _i++) {\n var arg = event_2[_i];\n this.localObserver.off(arg.event, arg.handler);\n }\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.notify = function (property, argument) {\n if (this.isDestroyed !== true) {\n this.localObserver.notify(property, argument);\n }\n };\n /**\n * Get injected modules\n *\n * @returns {Function} ?\n * @private\n */\n Component.prototype.getInjectedModules = function () {\n return this.injectedModules;\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @param {Function} moduleList ?\n * @returns {void} ?\n */\n Component.Inject = function () {\n var moduleList = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n moduleList[_i] = arguments[_i];\n }\n if (!this.prototype.injectedModules) {\n this.prototype.injectedModules = [];\n }\n for (var i = 0; i < moduleList.length; i++) {\n if (this.prototype.injectedModules.indexOf(moduleList[parseInt(i.toString(), 10)]) === -1) {\n this.prototype.injectedModules.push(moduleList[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * This is a instance method to create an element.\n *\n * @param {string} tagName ?\n * @param {ElementProperties} prop ?\n * @param {boolean} isVDOM ?\n * @returns {any} ?\n * @private\n */\n Component.prototype.createElement = function (tagName, prop, isVDOM) {\n return createElement(tagName, prop);\n };\n /**\n *\n * @param {Function} handler - handler to be triggered after state Updated.\n * @param {any} argument - Arguments to be passed to caller.\n * @returns {void} .\n * @private\n */\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n this.setState();\n this.currentContext = {\n calls: handler,\n args: argument\n };\n }\n };\n Component.prototype.injectModules = function () {\n if (this.injectedModules && this.injectedModules.length) {\n this.moduleLoader.inject(this.requiredModules(), this.injectedModules);\n }\n };\n Component.prototype.detectFunction = function (args) {\n var prop = Object.keys(args);\n if (prop.length) {\n this[prop[0]] = args[prop[0]];\n }\n };\n Component.prototype.mergePersistData = function () {\n var data;\n if (versionBasedStatePersistence) {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion);\n } else {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n }\n if (!(isNullOrUndefined(data) || data === '')) {\n this.setProperties(JSON.parse(data), true);\n }\n };\n Component.prototype.setPersistData = function () {\n if (!this.isDestroyed) {\n if (versionBasedStatePersistence) {\n window.localStorage.setItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion, this.getPersistData());\n } else {\n window.localStorage.setItem(this.getModuleName() + this.element.id, this.getPersistData());\n }\n }\n };\n Component.prototype.renderReactTemplates = function (callback) {\n if (!isNullOrUndefined(callback)) {\n callback();\n }\n };\n Component.prototype.clearTemplate = function (templateName, index) {\n //No Code\n };\n Component.prototype.getUniqueID = function (definedName) {\n if (this.isHistoryChanged()) {\n componentCount = 0;\n }\n lastPageID = this.pageID(location.href);\n lastHistoryLen = history.length;\n return definedName + '_' + lastPageID + '_' + componentCount++;\n };\n Component.prototype.pageID = function (url) {\n var hash = 0;\n if (url.length === 0) {\n return hash;\n }\n for (var i = 0; i < url.length; i++) {\n var char = url.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n };\n Component.prototype.isHistoryChanged = function () {\n return lastPageID !== this.pageID(location.href) || lastHistoryLen !== history.length;\n };\n Component.prototype.addOnPersist = function (options) {\n var _this = this;\n var persistObj = {};\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var key = options_1[_i];\n var objValue = getValue(key, this);\n if (!isUndefined(objValue)) {\n setValue(key, this.getActualProperties(objValue), persistObj);\n }\n }\n return JSON.stringify(persistObj, function (key, value) {\n return _this.getActualProperties(value);\n });\n };\n Component.prototype.getActualProperties = function (obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n } else {\n return obj;\n }\n };\n Component.prototype.ignoreOnPersist = function (options) {\n return JSON.stringify(this.iterateJsonProperties(this.properties, options));\n };\n Component.prototype.iterateJsonProperties = function (obj, ignoreList) {\n var newObj = {};\n var _loop_1 = function (key) {\n if (ignoreList.indexOf(key) === -1) {\n var value = obj[\"\" + key];\n if (typeof value === 'object' && !(value instanceof Array)) {\n var newList = ignoreList.filter(function (str) {\n var regExp = RegExp;\n return new regExp(key + '.').test(str);\n }).map(function (str) {\n return str.replace(key + '.', '');\n });\n newObj[\"\" + key] = this_1.iterateJsonProperties(this_1.getActualProperties(value), newList);\n } else {\n newObj[\"\" + key] = value;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n return newObj;\n };\n __decorate([Property(false)], Component.prototype, \"enablePersistence\", void 0);\n __decorate([Property()], Component.prototype, \"enableRtl\", void 0);\n __decorate([Property()], Component.prototype, \"locale\", void 0);\n Component = __decorate([NotifyPropertyChanges], Component);\n return Component;\n}(Base);\nexport { Component };\n//Function handling for page navigation detection\n/* istanbul ignore next */\n(function () {\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', /* istanbul ignore next */\n function () {\n componentCount = 0;\n });\n }\n})();","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 @typescript-eslint/no-explicit-any */\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible } from './dom';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { ChildProperty } from './child-property';\nimport { select, closest, setStyleAttribute, addClass, createElement } from './dom';\nimport { extend, isUndefined, isNullOrUndefined, compareElementParent, isBlazor } from './util';\nvar defaultPosition = {\n left: 0,\n top: 0,\n bottom: 0,\n right: 0\n};\nvar isDraggedObject = {\n isDragged: false\n};\n/**\n * Specifies the position coordinates\n */\nvar Position = /** @class */function (_super) {\n __extends(Position, _super);\n function Position() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property(0)], Position.prototype, \"left\", void 0);\n __decorate([Property(0)], Position.prototype, \"top\", void 0);\n return Position;\n}(ChildProperty);\nexport { Position };\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n * <div id='drag'>Draggable</div>\n * <script>\n * var ele = document.getElementById('drag');\n * var drag:Draggable = new Draggable(ele,{\n * clone:false,\n * drag: function(e) {\n * //drag handler code.\n * },\n * handle:'.class'\n * });\n * </script>\n * ```\n */\nvar Draggable = /** @class */function (_super) {\n __extends(Draggable, _super);\n function Draggable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.dragLimit = Draggable_1.getDefaultPosition();\n _this.borderWidth = Draggable_1.getDefaultPosition();\n _this.padding = Draggable_1.getDefaultPosition();\n _this.diffX = 0;\n _this.prevLeft = 0;\n _this.prevTop = 0;\n _this.dragProcessStarted = false;\n _this.eleTop = 0;\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = this.enableTapHold && Browser.isDevice && Browser.isTouch ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler);\n } else {\n EventHandler.add(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = {\n 'vertical': 'scrollHeight',\n 'horizontal': 'scrollWidth'\n };\n var client = {\n 'vertical': 'clientHeight',\n 'horizontal': 'clientWidth'\n };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[\"\" + axis]] > element[client[\"\" + axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY + (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n this.tempScrollHeight = element.scrollHeight;\n } else {\n this.parentScrollX = this.parentScrollX + (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n this.tempScrollWidth = element.scrollWidth;\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n } else {\n return element;\n }\n } else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n } else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n } else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = evt.currentTarget || curTarget;\n this.dragProcessStarted = false;\n if (this.abort) {\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[parseInt(i.toString(), 10)]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches) && evt.type !== 'touchstart') {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n var intCoord = this.getCoordinates(evt);\n this.initialPosition = {\n x: intCoord.pageX,\n y: intCoord.pageY\n };\n if (!this.clone) {\n var pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n } else {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && evt.changedTouches.length !== 1) {\n return;\n }\n var intCordinate = this.getCoordinates(evt);\n var pos;\n var styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10)\n };\n var element = this.element;\n if (this.clone && this.dragTarget) {\n var intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n /* istanbul ignore next */\n if (this.isReplaceDragEle) {\n element = this.currentStateCheck(evt.target, element);\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var x = this.initialPosition.x - intCordinate.pageX;\n var y = this.initialPosition.y - intCordinate.pageY;\n var distance = Math.sqrt(x * x + y * y);\n if (distance >= this.distance || this.externalInitialize) {\n var ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n var dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n var curTarget = this.getProperTargetElement(evt);\n var args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n } else {\n this.dragLimit = {\n left: 0,\n right: 0,\n bottom: 0,\n top: 0\n };\n this.borderWidth = {\n top: 0,\n left: 0\n };\n }\n pos = {\n left: this.position.left - this.parentClientRect.left,\n top: this.position.top - this.parentClientRect.top\n };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n // when drag element has margin-top\n var styles = getComputedStyle(element);\n var marginTop = parseFloat(styles.marginTop);\n /* istanbul ignore next */\n if (this.clone && marginTop !== 0) {\n pos.top += marginTop;\n }\n this.eleTop = !isNaN(parseFloat(styles.top)) ? parseFloat(styles.top) - this.offset.top : 0;\n /* istanbul ignore next */\n // if (this.eleTop > 0) {\n // pos.top += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n pos.top -= this.parentScrollY;\n pos.left -= this.parentScrollX;\n }\n var posValue = this.getProcessedPositionValue({\n top: pos.top - this.diffY + 'px',\n left: pos.left - this.diffX + 'px'\n });\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n pos.top += this.dragArea.scrollTop;\n }\n this.dragElePosition = {\n top: pos.top,\n left: pos.left\n };\n setStyleAttribute(dragTargetElement, this.getDragPosition({\n position: 'absolute',\n left: posValue.left,\n top: posValue.top\n }));\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n };\n Draggable.prototype.bindDragEvents = function (dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n } else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n };\n Draggable.prototype.elementInViewport = function (el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return this.top >= window.pageYOffset && this.left >= window.pageXOffset && this.top + this.height <= window.pageYOffset + window.innerHeight && this.left + this.width <= window.pageXOffset + window.innerWidth;\n };\n Draggable.prototype.getProcessedPositionValue = function (value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n };\n Draggable.prototype.calculateParentPosition = function (ele) {\n if (isNullOrUndefined(ele)) {\n return {\n left: 0,\n top: 0\n };\n }\n var rect = ele.getBoundingClientRect();\n var style = getComputedStyle(ele);\n return {\n left: rect.left + window.pageXOffset - parseInt(style.marginLeft, 10),\n top: rect.top + window.pageYOffset - parseInt(style.marginTop, 10)\n };\n };\n Draggable.prototype.intDrag = function (evt) {\n if (!isUndefined(evt.changedTouches) && evt.changedTouches.length !== 1) {\n return;\n }\n if (this.clone && evt.changedTouches && Browser.isDevice && Browser.isTouch) {\n evt.preventDefault();\n }\n var left;\n var top;\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var docHeight = this.getDocumentWidthHeight('Height');\n if (docHeight < this.position.top) {\n this.position.top = docHeight;\n }\n var docWidth = this.getDocumentWidthHeight('Width');\n if (docWidth < this.position.left) {\n this.position.left = docWidth;\n }\n if (this.drag) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('drag', {\n event: evt,\n element: this.element,\n target: curTarget\n });\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n var flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n } else {\n flag = false;\n }\n }\n if (flag) {\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n } else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n var helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n var tLeft = this.parentClientRect.left;\n var tTop = this.parentClientRect.top;\n var intCoord = this.getCoordinates(evt);\n var pagex = intCoord.pageX;\n var pagey = intCoord.pageY;\n var dLeft = this.position.left - this.diffX;\n var dTop = this.position.top - this.diffY;\n var styles = getComputedStyle(helperElement);\n if (this.dragArea) {\n if (this.enableAutoScroll) {\n this.setDragArea();\n }\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n var helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft) + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n } else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n } else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop) + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n } else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n } else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n } else {\n left = dLeft;\n top = dTop;\n }\n var iTop = tTop + this.borderWidth.top;\n var iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n var draEleTop;\n var draEleLeft;\n if (this.helperElement.classList.contains('e-treeview')) {\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = top - iTop < 0 ? this.dragLimit.top : top - this.borderWidth.top;\n draEleLeft = left - iLeft < 0 ? this.dragLimit.left : left - this.borderWidth.left;\n } else {\n draEleTop = top - this.borderWidth.top;\n draEleLeft = left - this.borderWidth.left;\n }\n } else {\n if (this.dragArea) {\n var isDialogEle = this.helperElement.classList.contains('e-dialog');\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = top - iTop < 0 ? this.dragLimit.top : top - iTop;\n draEleLeft = left - iLeft < 0 ? isDialogEle ? left - (iLeft - this.borderWidth.left) : this.dragElePosition.left : left - iLeft;\n } else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n }\n var marginTop = parseFloat(getComputedStyle(this.element).marginTop);\n // when drag-element has margin-top\n /* istanbul ignore next */\n if (marginTop > 0) {\n if (this.clone) {\n draEleTop += marginTop;\n if (dTop < 0) {\n if (marginTop + dTop >= 0) {\n draEleTop = marginTop + dTop;\n } else {\n draEleTop -= marginTop;\n }\n }\n if (this.dragArea) {\n draEleTop = this.dragLimit.bottom < draEleTop ? this.dragLimit.bottom : draEleTop;\n }\n }\n if (top - iTop < 0) {\n if (dTop + marginTop + (helperElement.offsetHeight - iTop) >= 0) {\n var tempDraEleTop = this.dragLimit.top + dTop - iTop;\n if (tempDraEleTop + marginTop + iTop < 0) {\n draEleTop -= marginTop + iTop;\n } else {\n draEleTop = tempDraEleTop;\n }\n } else {\n draEleTop -= marginTop + iTop;\n }\n }\n }\n if (this.dragArea && this.helperElement.classList.contains('e-treeview')) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop) + parseFloat(styles.marginBottom));\n draEleTop = draEleTop + helperHeight > this.dragLimit.bottom ? this.dragLimit.bottom - helperHeight : draEleTop;\n }\n /* istanbul ignore next */\n // if(this.eleTop > 0) {\n // draEleTop += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n draEleTop -= this.parentScrollY;\n draEleLeft -= this.parentScrollX;\n }\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n draEleTop += this.dragArea.scrollTop;\n }\n var dragValue = this.getProcessedPositionValue({\n top: draEleTop + 'px',\n left: draEleLeft + 'px'\n });\n if (this.isPreventScroll) {\n dragValue = this.getProcessedPositionValue({\n top: this.position.top - this.parentClientRect.top - 2 + 'px',\n left: this.position.left - this.parentClientRect.left - 2 + 'px'\n });\n }\n setStyleAttribute(helperElement, this.getDragPosition(dragValue));\n if (!this.elementInViewport(helperElement) && this.enableAutoScroll && !this.helperElement.classList.contains('e-treeview')) {\n this.helperElement.scrollIntoView();\n }\n var elements = document.querySelectorAll(':hover');\n if (this.enableAutoScroll && this.helperElement.classList.contains('e-treeview')) {\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n var scrollParent = this.getScrollParent(elements, false);\n if (this.elementInViewport(this.helperElement)) {\n this.getScrollPosition(scrollParent, draEleTop);\n } else if (!this.elementInViewport(this.helperElement)) {\n elements = [].slice.call(document.querySelectorAll(':hover'));\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n scrollParent = this.getScrollParent(elements, true);\n this.getScrollPosition(scrollParent, draEleTop);\n }\n }\n this.dragProcessStarted = true;\n this.prevLeft = left;\n this.prevTop = top;\n this.position.left = left;\n this.position.top = top;\n this.pageX = pagex;\n this.pageY = pagey;\n };\n Draggable.prototype.getScrollParent = function (node, reverse) {\n var nodeEl = reverse ? node.reverse() : node;\n var hasScroll;\n for (var i = nodeEl.length - 1; i >= 0; i--) {\n hasScroll = window.getComputedStyle(nodeEl[parseInt(i.toString(), 10)])['overflow-y'];\n if ((hasScroll === 'auto' || hasScroll === 'scroll') && nodeEl[parseInt(i.toString(), 10)].scrollHeight > nodeEl[parseInt(i.toString(), 10)].clientHeight) {\n return nodeEl[parseInt(i.toString(), 10)];\n }\n }\n hasScroll = window.getComputedStyle(document.scrollingElement)['overflow-y'];\n if (hasScroll === 'visible') {\n document.scrollingElement.style.overflow = 'auto';\n return document.scrollingElement;\n }\n };\n Draggable.prototype.getScrollPosition = function (nodeEle, draEleTop) {\n if (nodeEle && nodeEle === document.scrollingElement) {\n if (nodeEle.clientHeight + document.scrollingElement.scrollTop - this.helperElement.clientHeight < draEleTop && nodeEle.getBoundingClientRect().height + this.parentClientRect.top > draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n } else if (nodeEle.scrollTop > draEleTop - this.helperElement.clientHeight) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n } else if (nodeEle && nodeEle !== document.scrollingElement) {\n var docScrollTop = document.scrollingElement.scrollTop;\n var helperClientHeight = this.helperElement.clientHeight;\n if (nodeEle.clientHeight + nodeEle.getBoundingClientRect().top - helperClientHeight + docScrollTop < draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n } else if (nodeEle.getBoundingClientRect().top > draEleTop - helperClientHeight - docScrollTop) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n };\n Draggable.prototype.getPathElements = function (evt) {\n var elementTop = evt.clientX > 0 ? evt.clientX : 0;\n var elementLeft = evt.clientY > 0 ? evt.clientY : 0;\n return document.elementsFromPoint(elementTop, elementLeft);\n };\n Draggable.prototype.triggerOutFunction = function (evt, eleObj) {\n this.hoverObject.instance.intOut(evt, eleObj.target);\n this.hoverObject.instance.dragData[this.scope] = null;\n this.hoverObject = null;\n };\n Draggable.prototype.getDragPosition = function (dragValue) {\n var temp = extend({}, dragValue);\n if (this.axis) {\n if (this.axis === 'x') {\n delete temp.top;\n } else if (this.axis === 'y') {\n delete temp.left;\n }\n }\n return temp;\n };\n Draggable.prototype.getDocumentWidthHeight = function (str) {\n var docBody = document.body;\n var docEle = document.documentElement;\n var returnValue = Math.max(docBody['scroll' + str], docEle['scroll' + str], docBody['offset' + str], docEle['offset' + str], docEle['client' + str]);\n return returnValue;\n };\n Draggable.prototype.intDragStop = function (evt) {\n this.dragProcessStarted = false;\n if (!isUndefined(evt.changedTouches) && evt.changedTouches.length !== 1) {\n return;\n }\n var type = ['touchend', 'pointerup', 'mouseup'];\n if (type.indexOf(evt.type) !== -1) {\n if (this.dragStop) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('dragStop', {\n event: evt,\n element: this.element,\n target: curTarget,\n helper: this.helperElement\n });\n }\n this.intDestroy(evt);\n } else {\n this.element.setAttribute('aria-grabbed', 'false');\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n eleObj.instance.dragStopCalled = true;\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intDrop(evt, eleObj.target);\n }\n this.setGlobalDroppables(true);\n document.body.classList.remove('e-prevent-select');\n };\n /**\n * @param {MouseEvent | TouchEvent} evt ?\n * @returns {void}\n * @private\n */\n Draggable.prototype.intDestroy = function (evt) {\n this.dragProcessStarted = false;\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n this.element.setAttribute('aria-grabbed', 'false');\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n Draggable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Draggable.prototype.getModuleName = function () {\n return 'draggable';\n };\n Draggable.prototype.isDragStarted = function (change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n };\n Draggable.prototype.setDragArea = function () {\n var eleWidthBound;\n var eleHeightBound;\n var top = 0;\n var left = 0;\n var ele;\n var type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n } else {\n ele = this.dragArea;\n }\n if (ele) {\n var elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview') ? ele.clientHeight : ele.scrollHeight : elementArea.bottom - elementArea.top;\n var keys = ['Top', 'Left', 'Bottom', 'Right'];\n var styles = getComputedStyle(ele);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[parseInt(i.toString(), 10)];\n var tborder = styles['border' + key + 'Width'];\n var tpadding = styles['padding' + key];\n var lowerKey = key.toLowerCase();\n this.borderWidth[\"\" + lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);\n this.padding[\"\" + lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);\n }\n if (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) {\n top = elementArea.top + document.scrollingElement.scrollTop;\n } else {\n top = elementArea.top;\n }\n left = elementArea.left;\n this.dragLimit.left = left + this.borderWidth.left + this.padding.left;\n this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;\n this.dragLimit.right = left + eleWidthBound - (this.borderWidth.right + this.padding.right);\n this.dragLimit.bottom = top + eleHeightBound - (this.borderWidth.bottom + this.padding.bottom);\n }\n };\n Draggable.prototype.getProperTargetElement = function (evt) {\n var intCoord = this.getCoordinates(evt);\n var ele;\n var prevStyle = this.helperElement.style.pointerEvents || '';\n var isPointer = evt.type.indexOf('pointer') !== -1 && Browser.info.name === 'safari' && parseInt(Browser.info.version, 10) > 12;\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1 || isPointer) {\n this.helperElement.style.pointerEvents = 'none';\n ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);\n this.helperElement.style.pointerEvents = prevStyle;\n } else {\n ele = evt.target;\n }\n return ele;\n };\n /* istanbul ignore next */\n Draggable.prototype.currentStateCheck = function (ele, oldEle) {\n var elem;\n if (!isNullOrUndefined(this.currentStateTarget) && this.currentStateTarget !== ele) {\n elem = this.currentStateTarget;\n } else {\n elem = !isNullOrUndefined(oldEle) ? oldEle : ele;\n }\n return elem;\n };\n Draggable.prototype.getMousePosition = function (evt, isdragscroll) {\n var dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;\n var intCoord = this.getCoordinates(evt);\n var pageX;\n var pageY;\n var isOffsetParent = isNullOrUndefined(dragEle.offsetParent);\n /* istanbul ignore next */\n if (isdragscroll) {\n pageX = this.clone ? intCoord.pageX : intCoord.pageX + (isOffsetParent ? 0 : dragEle.offsetParent.scrollLeft) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : intCoord.pageY + (isOffsetParent ? 0 : dragEle.offsetParent.scrollTop) - this.relativeYPosition;\n } else {\n pageX = this.clone ? intCoord.pageX : intCoord.pageX + window.pageXOffset - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : intCoord.pageY + window.pageYOffset - this.relativeYPosition;\n }\n if (document.scrollingElement && !isdragscroll && !this.clone) {\n var ele = document.scrollingElement;\n var isVerticalScroll = ele.scrollHeight > 0 && ele.scrollHeight > ele.clientHeight && ele.scrollTop > 0;\n var isHorrizontalScroll = ele.scrollWidth > 0 && ele.scrollWidth > ele.clientWidth && ele.scrollLeft > 0;\n pageX = isHorrizontalScroll ? pageX - ele.scrollLeft : pageX;\n pageY = isVerticalScroll ? pageY - ele.scrollTop : pageY;\n }\n return {\n left: pageX - (this.margin.left + this.cursorAt.left),\n top: pageY - (this.margin.top + this.cursorAt.top)\n };\n };\n Draggable.prototype.getCoordinates = function (evt) {\n if (evt.type.indexOf('touch') > -1) {\n return evt.changedTouches[0];\n }\n return evt;\n };\n Draggable.prototype.getHelperElement = function (evt) {\n var element;\n if (this.clone) {\n if (this.helper) {\n element = this.helper({\n sender: evt,\n element: this.target,\n currentTargetElement: this.currentStateTarget\n });\n } else {\n element = createElement('div', {\n className: 'e-drag-helper e-block-touch',\n innerHTML: 'Draggable'\n });\n document.body.appendChild(element);\n }\n } else {\n element = this.element;\n }\n return element;\n };\n Draggable.prototype.setGlobalDroppables = function (reset, drag, helper) {\n this.droppables[this.scope] = reset ? null : {\n draggable: drag,\n helper: helper,\n draggedElement: this.element\n };\n };\n Draggable.prototype.checkTargetElement = function (evt) {\n var target = this.getProperTargetElement(evt);\n var dropIns = this.getDropInstance(target);\n if (!dropIns && target && !isNullOrUndefined(target.parentNode)) {\n var parent_1 = closest(target.parentNode, '.e-droppable') || target.parentElement;\n if (parent_1) {\n dropIns = this.getDropInstance(parent_1);\n }\n }\n return {\n target: target,\n instance: dropIns\n };\n };\n Draggable.prototype.getDropInstance = function (ele) {\n var name = 'getModuleName';\n var drop;\n var eleInst = ele && ele.ej2_instances;\n if (eleInst) {\n for (var _i = 0, eleInst_1 = eleInst; _i < eleInst_1.length; _i++) {\n var inst = eleInst_1[_i];\n if (inst[\"\" + name]() === 'droppable') {\n drop = inst;\n break;\n }\n }\n }\n return drop;\n };\n Draggable.prototype.destroy = function () {\n this.toggleEvents(true);\n _super.prototype.destroy.call(this);\n };\n var Draggable_1;\n __decorate([Complex({}, Position)], Draggable.prototype, \"cursorAt\", void 0);\n __decorate([Property(true)], Draggable.prototype, \"clone\", void 0);\n __decorate([Property()], Draggable.prototype, \"dragArea\", void 0);\n __decorate([Property()], Draggable.prototype, \"isDragScroll\", void 0);\n __decorate([Property()], Draggable.prototype, \"isReplaceDragEle\", void 0);\n __decorate([Property(true)], Draggable.prototype, \"isPreventSelect\", void 0);\n __decorate([Property(false)], Draggable.prototype, \"isPreventScroll\", void 0);\n __decorate([Event()], Draggable.prototype, \"drag\", void 0);\n __decorate([Event()], Draggable.prototype, \"dragStart\", void 0);\n __decorate([Event()], Draggable.prototype, \"dragStop\", void 0);\n __decorate([Property(1)], Draggable.prototype, \"distance\", void 0);\n __decorate([Property()], Draggable.prototype, \"handle\", void 0);\n __decorate([Property()], Draggable.prototype, \"abort\", void 0);\n __decorate([Property()], Draggable.prototype, \"helper\", void 0);\n __decorate([Property('default')], Draggable.prototype, \"scope\", void 0);\n __decorate([Property('')], Draggable.prototype, \"dragTarget\", void 0);\n __decorate([Property()], Draggable.prototype, \"axis\", void 0);\n __decorate([Property()], Draggable.prototype, \"queryPositionInfo\", void 0);\n __decorate([Property(false)], Draggable.prototype, \"enableTailMode\", void 0);\n __decorate([Property(false)], Draggable.prototype, \"skipDistanceCheck\", void 0);\n __decorate([Property(true)], Draggable.prototype, \"preventDefault\", void 0);\n __decorate([Property(false)], Draggable.prototype, \"enableAutoScroll\", void 0);\n __decorate([Property(false)], Draggable.prototype, \"enableTapHold\", void 0);\n __decorate([Property(750)], Draggable.prototype, \"tapHoldThreshold\", void 0);\n __decorate([Property(false)], Draggable.prototype, \"enableScrollHandler\", void 0);\n Draggable = Draggable_1 = __decorate([NotifyPropertyChanges], Draggable);\n return Draggable;\n}(Base);\nexport { Draggable };","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};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible, matches } from './dom';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { compareElementParent } from './util';\n/**\n * Droppable Module provides support to enable droppable functionality in Dom Elements.\n * ```html\n * <div id='drop'>Droppable</div>\n * <script>\n * let ele:HTMLElement = document.getElementById('drop');\n * var drag:Droppable = new Droppable(ele,{\n * accept:'.drop',\n * drop: function(e) {\n * //drop handler code.\n * }\n * });\n * </script>\n * ```\n */\nvar Droppable = /** @class */function (_super) {\n __extends(Droppable, _super);\n function Droppable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseOver = false;\n _this.dragData = {};\n _this.dragStopCalled = false;\n _this.bind();\n return _this;\n }\n Droppable.prototype.bind = function () {\n this.wireEvents();\n };\n Droppable.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop, this);\n };\n // triggers when property changed\n Droppable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Droppable.prototype.getModuleName = function () {\n return 'droppable';\n };\n Droppable.prototype.intOver = function (event, element) {\n if (!this.mouseOver) {\n var drag = this.dragData[this.scope];\n this.trigger('over', {\n event: event,\n target: element,\n dragData: drag\n });\n this.mouseOver = true;\n }\n };\n Droppable.prototype.intOut = function (event, element) {\n if (this.mouseOver) {\n this.trigger('out', {\n evt: event,\n target: element\n });\n this.mouseOver = false;\n }\n };\n Droppable.prototype.intDrop = function (evt, element) {\n if (!this.dragStopCalled) {\n return;\n } else {\n this.dragStopCalled = false;\n }\n var accept = true;\n var drag = this.dragData[this.scope];\n var isDrag = drag ? drag.helper && isVisible(drag.helper) : false;\n var area;\n if (isDrag) {\n area = this.isDropArea(evt, drag.helper, element);\n if (this.accept) {\n accept = matches(drag.helper, this.accept);\n }\n }\n if (isDrag && this.drop && area.canDrop && accept) {\n this.trigger('drop', {\n event: evt,\n target: area.target,\n droppedElement: drag.helper,\n dragData: drag\n });\n }\n this.mouseOver = false;\n };\n Droppable.prototype.isDropArea = function (evt, helper, element) {\n var area = {\n canDrop: true,\n target: element || evt.target\n };\n var isTouch = evt.type === 'touchend';\n if (isTouch || area.target === helper) {\n helper.style.display = 'none';\n var coord = isTouch ? evt.changedTouches[0] : evt;\n var ele = document.elementFromPoint(coord.clientX, coord.clientY);\n area.canDrop = false;\n area.canDrop = compareElementParent(ele, this.element);\n if (area.canDrop) {\n area.target = ele;\n }\n helper.style.display = '';\n }\n return area;\n };\n Droppable.prototype.destroy = function () {\n EventHandler.remove(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop);\n _super.prototype.destroy.call(this);\n };\n __decorate([Property()], Droppable.prototype, \"accept\", void 0);\n __decorate([Property('default')], Droppable.prototype, \"scope\", void 0);\n __decorate([Event()], Droppable.prototype, \"drop\", void 0);\n __decorate([Event()], Droppable.prototype, \"over\", void 0);\n __decorate([Event()], Droppable.prototype, \"out\", void 0);\n Droppable = __decorate([NotifyPropertyChanges], Droppable);\n return Droppable;\n}(Base);\nexport { Droppable };","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};\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Base } from './base';\nvar keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n * <div id='testEle'> </div>;\n * <script>\n * let node: HTMLElement = document.querySelector('#testEle');\n * let kbInstance = new KeyboardEvents({\n * element: node,\n * keyConfigs:{ selectAll : 'ctrl+a' },\n * keyAction: function (e:KeyboardEvent, action:string) {\n * // handler function code\n * }\n * });\n * </script>\n * ```\n */\nvar KeyboardEvents = /** @class */function (_super) {\n __extends(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n *\n * @param {HTMLElement} element ?\n * @param {KeyboardEventsModel} options ?\n */\n function KeyboardEvents(element, options) {\n var _this = _super.call(this, options, element) || this;\n /**\n * To handle a key press event returns null\n *\n * @param {KeyboardEventArgs} e ?\n * @returns {void} ?\n */\n _this.keyPressHandler = function (e) {\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var curkeyCode = e.which;\n var keys = Object.keys(_this.keyConfigs);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var configCollection = _this.keyConfigs[\"\" + key].split(',');\n for (var _a = 0, configCollection_1 = configCollection; _a < configCollection_1.length; _a++) {\n var rconfig = configCollection_1[_a];\n var rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && isCtrlKey === rKeyObj.ctrlKey && isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n }\n }\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents;\n /**\n * Unwire bound events and destroy the instance.\n *\n * @returns {void} ?\n */\n KeyboardEvents.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * Function can be used to specify certain action if a property is changed\n *\n * @param {KeyboardEventsModel} newProp ?\n * @param {KeyboardEventsModel} oldProp ?\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n KeyboardEvents.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n *\n * @returns {string} ?\n * @private\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n *\n * @param {string} config - configuration data\n * @returns {KeyData} ?\n */\n KeyboardEvents.getKeyConfigData = function (config) {\n if (config in this.configCache) {\n return this.configCache[\"\" + config];\n }\n var keys = config.toLowerCase().split('+');\n var keyData = {\n altKey: keys.indexOf('alt') !== -1 ? true : false,\n ctrlKey: keys.indexOf('ctrl') !== -1 ? true : false,\n shiftKey: keys.indexOf('shift') !== -1 ? true : false,\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n } else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[\"\" + config] = keyData;\n return keyData;\n };\n // Return the keycode value as string\n KeyboardEvents.getKeyCode = function (keyVal) {\n return keyCode[\"\" + keyVal] || keyVal.toUpperCase().charCodeAt(0);\n };\n var KeyboardEvents_1;\n KeyboardEvents.configCache = {};\n __decorate([Property({})], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n __decorate([Property('keyup')], KeyboardEvents.prototype, \"eventName\", void 0);\n __decorate([Event()], KeyboardEvents.prototype, \"keyAction\", void 0);\n KeyboardEvents = KeyboardEvents_1 = __decorate([NotifyPropertyChanges], KeyboardEvents);\n return KeyboardEvents;\n}(Base);\nexport { KeyboardEvents };","import { extend, isNullOrUndefined } from './util';\nimport { defaultCulture } from './internationalization';\n/**\n * L10n modules provides localized text for different culture.\n * ```typescript\n * import {setCulture} from '@syncfusion/ts-base-library';\n * //load global locale object common for all components.\n * L10n.load({\n * 'fr-BE': {\n * 'button': {\n * 'check': 'vérifié'\n * }\n * }\n * });\n * //set globale default locale culture.\n * setCulture('fr-BE');\n * let instance: L10n = new L10n('button', {\n * check: 'checked'\n * });\n * //Get locale text for current property.\n * instance.getConstant('check');\n * //Change locale culture in a component.\n * instance.setLocale('en-US');\n * ```\n */\nvar L10n = /** @class */function () {\n /**\n * Constructor\n *\n * @param {string} controlName ?\n * @param {Object} localeStrings ?\n * @param {string} locale ?\n */\n function L10n(controlName, localeStrings, locale) {\n this.controlName = controlName;\n this.localeStrings = localeStrings;\n this.setLocale(locale || defaultCulture);\n }\n /**\n * Sets the locale text\n *\n * @param {string} locale ?\n * @returns {void} ?\n */\n L10n.prototype.setLocale = function (locale) {\n var intLocale = this.intGetControlConstant(L10n.locale, locale);\n this.currentLocale = intLocale || this.localeStrings;\n };\n /**\n * Sets the global locale for all components.\n *\n * @param {Object} localeObject - specifies the localeObject to be set as global locale.\n * @returns {void} ?\n */\n L10n.load = function (localeObject) {\n this.locale = extend(this.locale, localeObject, {}, true);\n };\n /**\n * Returns current locale text for the property based on the culture name and control name.\n *\n * @param {string} prop - specifies the property for which localize text to be returned.\n * @returns {string} ?\n */\n L10n.prototype.getConstant = function (prop) {\n // Removed conditional operator because this method does not return correct value when passing 0 as value in localization\n if (!isNullOrUndefined(this.currentLocale[\"\" + prop])) {\n return this.currentLocale[\"\" + prop];\n } else {\n return this.localeStrings[\"\" + prop] || '';\n }\n };\n /**\n * Returns the control constant object for current object and the locale specified.\n *\n * @param {Object} curObject ?\n * @param {string} locale ?\n * @returns {Object} ?\n */\n L10n.prototype.intGetControlConstant = function (curObject, locale) {\n if (curObject[\"\" + locale]) {\n return curObject[\"\" + locale][this.controlName];\n }\n return null;\n };\n L10n.locale = {};\n return L10n;\n}();\nexport { L10n };","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 @typescript-eslint/no-explicit-any */\nimport { extend } from './util';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Browser } from './browser';\nimport { Base } from './base';\nimport { ChildProperty } from './child-property';\nimport { EventHandler } from './event-handler';\n/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nvar SwipeSettings = /** @class */function (_super) {\n __extends(SwipeSettings, _super);\n function SwipeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property(50)], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\n return SwipeSettings;\n}(ChildProperty);\nexport { SwipeSettings };\nvar swipeRegex = /(Up|Down)/;\n/**\n * Touch class provides support to handle the touch event like tap, double tap, tap hold, etc..,\n * ```typescript\n * let node: HTMLElement;\n * let touchObj: Touch = new Touch({\n * element: node,\n * tap: function (e) {\n * // tap handler function code\n * }\n * tapHold: function (e) {\n * // tap hold handler function code\n * }\n * scroll: function (e) {\n * // scroll handler function code\n * }\n * swipe: function (e) {\n * // swipe handler function code\n * }\n * });\n * ```\n */\nvar Touch = /** @class */function (_super) {\n __extends(Touch, _super);\n /* End-Properties */\n function Touch(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.touchAction = true;\n _this.tapCount = 0;\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.startEvent = function (evt) {\n if (_this.touchAction === true) {\n var point = _this.updateChangeTouches(evt);\n if (evt.changedTouches !== undefined) {\n _this.touchAction = false;\n }\n _this.isTouchMoved = false;\n _this.movedDirection = '';\n _this.startPoint = _this.lastMovedPoint = {\n clientX: point.clientX,\n clientY: point.clientY\n };\n _this.startEventData = point;\n _this.hScrollLocked = _this.vScrollLocked = false;\n _this.tStampStart = Date.now();\n _this.timeOutTapHold = setTimeout(function () {\n _this.tapHoldEvent(evt);\n }, _this.tapHoldThreshold);\n EventHandler.add(_this.element, Browser.touchMoveEvent, _this.moveEvent, _this);\n EventHandler.add(_this.element, Browser.touchEndEvent, _this.endEvent, _this);\n EventHandler.add(_this.element, Browser.touchCancelEvent, _this.cancelEvent, _this);\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.moveEvent = function (evt) {\n var point = _this.updateChangeTouches(evt);\n _this.movedPoint = point;\n _this.isTouchMoved = !(point.clientX === _this.startPoint.clientX && point.clientY === _this.startPoint.clientY);\n var eScrollArgs = {};\n if (_this.isTouchMoved) {\n clearTimeout(_this.timeOutTapHold);\n _this.calcScrollPoints(evt);\n var scrollArg = {\n startEvents: _this.startEventData,\n originalEvent: evt,\n startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY,\n distanceX: _this.distanceX,\n distanceY: _this.distanceY,\n scrollDirection: _this.scrollDirection,\n velocity: _this.getVelocity(point)\n };\n eScrollArgs = extend(eScrollArgs, {}, scrollArg);\n _this.trigger('scroll', eScrollArgs);\n _this.lastMovedPoint = {\n clientX: point.clientX,\n clientY: point.clientY\n };\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.cancelEvent = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n _this.tapCount = 0;\n _this.swipeFn(evt);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.endEvent = function (evt) {\n _this.swipeFn(evt);\n if (!_this.isTouchMoved) {\n if (typeof _this.tap === 'function') {\n _this.trigger('tap', {\n originalEvent: evt,\n tapCount: ++_this.tapCount\n });\n _this.timeOutTap = setTimeout(function () {\n _this.tapCount = 0;\n }, _this.tapThreshold);\n }\n }\n _this.modeclear();\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.swipeFn = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n var point = _this.updateChangeTouches(evt);\n var diffX = point.clientX - _this.startPoint.clientX;\n var diffY = point.clientY - _this.startPoint.clientY;\n diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);\n diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);\n _this.isTouchMoved = diffX > 1 || diffY > 1;\n var isFirefox = /Firefox/.test(Browser.userAgent);\n if (isFirefox && point.clientX === 0 && point.clientY === 0 && evt.type === 'mouseup') {\n _this.isTouchMoved = false;\n }\n _this.endPoint = point;\n _this.calcPoints(evt);\n var swipeArgs = {\n originalEvent: evt,\n startEvents: _this.startEventData,\n startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY,\n distanceX: _this.distanceX,\n distanceY: _this.distanceY,\n swipeDirection: _this.movedDirection,\n velocity: _this.getVelocity(point)\n };\n if (_this.isTouchMoved) {\n var tDistance = _this.swipeSettings.swipeThresholdDistance;\n var eSwipeArgs = extend(undefined, _this.defaultArgs, swipeArgs);\n var canTrigger = false;\n var ele = _this.element;\n var scrollBool = _this.isScrollable(ele);\n var moved = swipeRegex.test(_this.movedDirection);\n if (tDistance < _this.distanceX && !moved || tDistance < _this.distanceY && moved) {\n if (!scrollBool) {\n canTrigger = true;\n } else {\n canTrigger = _this.checkSwipe(ele, moved);\n }\n }\n if (canTrigger) {\n _this.trigger('swipe', eSwipeArgs);\n }\n }\n _this.modeclear();\n };\n _this.modeclear = function () {\n _this.modeClear = setTimeout(function () {\n _this.touchAction = true;\n }, typeof _this.tap !== 'function' ? 0 : 20);\n _this.lastTapTime = new Date().getTime();\n EventHandler.remove(_this.element, Browser.touchMoveEvent, _this.moveEvent);\n EventHandler.remove(_this.element, Browser.touchEndEvent, _this.endEvent);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.bind();\n return _this;\n }\n // triggers when property changed\n /**\n *\n * @private\n * @param {TouchModel} newProp ?\n * @param {TouchModel} oldProp ?\n * @returns {void} ?\n */\n Touch.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Touch.prototype.bind = function () {\n this.wireEvents();\n if (Browser.isIE) {\n this.element.classList.add('e-block-touch');\n }\n };\n /**\n * To destroy the touch instance.\n *\n * @returns {void}\n */\n Touch.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n // Need to changes the event binding once we updated the event handler.\n Touch.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchStartEvent, this.startEvent, this);\n };\n Touch.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.startEvent);\n };\n /**\n * Returns module name as touch\n *\n * @returns {string} ?\n * @private\n */\n Touch.prototype.getModuleName = function () {\n return 'touch';\n };\n /**\n * Returns if the HTML element is Scrollable.\n *\n * @param {HTMLElement} element - HTML Element to check if Scrollable.\n * @returns {boolean} ?\n */\n Touch.prototype.isScrollable = function (element) {\n var eleStyle = getComputedStyle(element);\n var style = eleStyle.overflow + eleStyle.overflowX + eleStyle.overflowY;\n if (/(auto|scroll)/.test(style)) {\n return true;\n }\n return false;\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n Touch.prototype.tapHoldEvent = function (evt) {\n this.tapCount = 0;\n this.touchAction = true;\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n var eTapArgs = {\n originalEvent: evt\n };\n this.trigger('tapHold', eTapArgs);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n };\n Touch.prototype.calcPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = {\n originalEvent: evt\n };\n this.distanceX = Math.abs(Math.abs(point.clientX) - Math.abs(this.startPoint.clientX));\n this.distanceY = Math.abs(Math.abs(point.clientY) - Math.abs(this.startPoint.clientY));\n if (this.distanceX > this.distanceY) {\n this.movedDirection = point.clientX > this.startPoint.clientX ? 'Right' : 'Left';\n } else {\n this.movedDirection = point.clientY < this.startPoint.clientY ? 'Up' : 'Down';\n }\n };\n Touch.prototype.calcScrollPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = {\n originalEvent: evt\n };\n this.distanceX = Math.abs(Math.abs(point.clientX) - Math.abs(this.lastMovedPoint.clientX));\n this.distanceY = Math.abs(Math.abs(point.clientY) - Math.abs(this.lastMovedPoint.clientY));\n if ((this.distanceX > this.distanceY || this.hScrollLocked === true) && this.vScrollLocked === false) {\n this.scrollDirection = point.clientX > this.lastMovedPoint.clientX ? 'Right' : 'Left';\n this.hScrollLocked = true;\n } else {\n this.scrollDirection = point.clientY < this.lastMovedPoint.clientY ? 'Up' : 'Down';\n this.vScrollLocked = true;\n }\n };\n Touch.prototype.getVelocity = function (pnt) {\n var newX = pnt.clientX;\n var newY = pnt.clientY;\n var newT = Date.now();\n var xDist = newX - this.startPoint.clientX;\n var yDist = newY - this.startPoint.clientX;\n var interval = newT - this.tStampStart;\n return Math.sqrt(xDist * xDist + yDist * yDist) / interval;\n };\n Touch.prototype.checkSwipe = function (ele, flag) {\n var keys = ['scroll', 'offset'];\n var temp = flag ? ['Height', 'Top'] : ['Width', 'Left'];\n if (ele[keys[0] + temp[0]] <= ele[keys[1] + temp[0]]) {\n return true;\n }\n return ele[keys[0] + temp[1]] === 0 || ele[keys[1] + temp[0]] + ele[keys[0] + temp[1]] >= ele[keys[0] + temp[0]];\n };\n Touch.prototype.updateChangeTouches = function (evt) {\n var point = evt.changedTouches && evt.changedTouches.length !== 0 ? evt.changedTouches[0] : evt;\n return point;\n };\n __decorate([Event()], Touch.prototype, \"tap\", void 0);\n __decorate([Event()], Touch.prototype, \"tapHold\", void 0);\n __decorate([Event()], Touch.prototype, \"swipe\", void 0);\n __decorate([Event()], Touch.prototype, \"scroll\", void 0);\n __decorate([Property(350)], Touch.prototype, \"tapThreshold\", void 0);\n __decorate([Property(750)], Touch.prototype, \"tapHoldThreshold\", void 0);\n __decorate([Complex({}, SwipeSettings)], Touch.prototype, \"swipeSettings\", void 0);\n Touch = __decorate([NotifyPropertyChanges], Touch);\n return Touch;\n}(Base);\nexport { Touch };","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Template Engine\n */\nvar LINES = new RegExp('\\\\n|\\\\r|\\\\s\\\\s+', 'g');\nvar QUOTES = new RegExp(/'|\"/g);\nvar IF_STMT = new RegExp('if ?\\\\(');\nvar ELSEIF_STMT = new RegExp('else if ?\\\\(');\nvar ELSE_STMT = new RegExp('else');\nvar FOR_STMT = new RegExp('for ?\\\\(');\nvar IF_OR_FOR = new RegExp('(/if|/for)');\nvar CALL_FUNCTION = new RegExp('\\\\((.*)\\\\)', '');\nvar NOT_NUMBER = new RegExp('^[0-9]+$', 'g');\nvar WORD = new RegExp('[\\\\w\"\\'.\\\\s+]+', 'g');\nvar DBL_QUOTED_STR = new RegExp('\"(.*?)\"', 'g');\nvar WORDIF = new RegExp('[\\\\w\"\\'@#$.\\\\s-+]+', 'g');\nvar exp = new RegExp('\\\\${([^}]*)}', 'g');\n// let cachedTemplate: Object = {};\nvar ARR_OBJ = /^\\..*/gm;\nvar SINGLE_SLASH = /\\\\/gi;\nvar DOUBLE_SLASH = /\\\\\\\\/gi;\nvar WORDFUNC = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nvar WINDOWFUNC = /\\window\\./gm;\n/**\n * The function to set regular expression for template expression string.\n *\n * @param {RegExp} value - Value expression.\n * @returns {RegExp} ?\n * @private\n */\nexport function expression(value) {\n if (value) {\n exp = value;\n }\n return exp;\n}\n// /**\n// * To render the template string from the given data.\n// * @param {string} template - String Template.\n// * @param {Object[]|JSON} data - DataSource for the template.\n// * @param {Object} helper? - custom helper object.\n// */\n// export function template(template: string, data: JSON, helper?: Object): string {\n// let hash: string = hashCode(template);\n// let tmpl: Function;\n// if (!cachedTemplate[hash]) {\n// tmpl = cachedTemplate[hash] = compile(template, helper);\n// } else {\n// tmpl = cachedTemplate[hash];\n// }\n// return tmpl(data);\n// }\n/**\n * Compile the template string into template function.\n *\n * @param {string | Function} template - The template string which is going to convert.\n * @param {Object} helper - Helper functions as an object.\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n * @private\n */\nexport function compile(template, helper, ignorePrefix) {\n if (typeof template === 'function') {\n return template;\n } else {\n var argName = 'data';\n var evalExpResult = evalExp(template, argName, helper, ignorePrefix);\n var condtion = \"var valueRegEx = (/value=\\\\'([A-Za-z0-9 _]*)((.)([\\\\w)(!-;?-\\u25A0\\\\s]+)['])/g);\\n var hrefRegex = (/(?:href)([\\\\s='\\\"./]+)([\\\\w-./?=&\\\\\\\\#\\\"]+)((.)([\\\\w)(!-;/?-\\u25A0\\\\s]+)['])/g);\\n if(str.match(valueRegEx)){\\n var check = str.match(valueRegEx);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(valueRegEx)[i].split('value=')[1];\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n str = str.replace(str, str1);\\n }\\n else if (str.match(/(?:href='')/) === null) {\\n if(str.match(hrefRegex)) {\\n var check = str.match(hrefRegex);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(hrefRegex)[i].split('href=')[1];\\n if (check1) {\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n }\\n str = str.replace(str, str1);\\n }\\n }\\n \";\n var fnCode = 'var str=\"' + evalExpResult + '\";' + condtion + ' return str;';\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n }\n}\n/** function used to evaluate the function expression\n *\n * @param {string} str ?\n * @param {string} nameSpace ?\n * @param {Object} helper ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction evalExp(str, nameSpace, helper, ignorePrefix) {\n var varCOunt = 0;\n /**\n * Variable containing Local Keys\n */\n var localKeys = [];\n var isClass = str.match(/class=\"([^\"]+|)\\s{2}/g);\n var singleSpace = '';\n if (isClass) {\n isClass.forEach(function (value) {\n singleSpace = value.replace(/\\s\\s+/g, ' ');\n str = str.replace(value, singleSpace);\n });\n }\n if (exp.test(str)) {\n var insideBraces = false;\n var outputString = '';\n for (var i = 0; i < str.length; i++) {\n if (str[i + ''] === '$' && str[i + 1] === '{') {\n insideBraces = true;\n } else if (str[i + ''] === '}') {\n insideBraces = false;\n }\n outputString += str[i + ''] === '\"' && !insideBraces ? '\\\\\"' : str[i + ''];\n }\n str = outputString;\n } else {\n str = str.replace(/\\\\?\"/g, '\\\\\"');\n }\n return str.replace(LINES, '').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, function (match, cnt, offset, matchStr) {\n var SPECIAL_CHAR = /@|#|\\$/gm;\n var matches = cnt.match(CALL_FUNCTION);\n // matches to detect any function calls\n if (matches) {\n var rlStr = matches[1];\n if (ELSEIF_STMT.test(cnt)) {\n //handling else-if condition\n cnt = '\";} ' + cnt.replace(matches[1], rlStr.replace(WORD, function (str) {\n str = str.trim();\n return addNameSpace(str, !QUOTES.test(str) && localKeys.indexOf(str) === -1, nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n } else if (IF_STMT.test(cnt)) {\n //handling if condition\n cnt = '\"; ' + cnt.replace(matches[1], rlStr.replace(WORDIF, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n } else if (FOR_STMT.test(cnt)) {\n //handling for condition\n var rlStr_1 = matches[1].split(' of ');\n // replace for each into actual JavaScript\n cnt = '\"; ' + cnt.replace(matches[1], function (mtc) {\n localKeys.push(rlStr_1[0]);\n localKeys.push(rlStr_1[0] + 'Index');\n varCOunt = varCOunt + 1;\n return 'var i' + varCOunt + '=0; i' + varCOunt + ' < ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + rlStr_1[0] + '= ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix) + '[i' + varCOunt + ']; \\n var ' + rlStr_1[0] + 'Index=i' + varCOunt + '; \\n str = str + \"';\n } else {\n //helper function handling\n var fnStr = cnt.split('(');\n var fNameSpace = helper && Object.prototype.hasOwnProperty.call(helper, fnStr[0]) ? 'this.' : 'global';\n fNameSpace = /\\./.test(fnStr[0]) ? '' : fNameSpace;\n var ftArray = matches[1].split(',');\n if (matches[1].length !== 0 && !/data/.test(ftArray[0]) && !/window./.test(ftArray[0])) {\n matches[1] = fNameSpace === 'global' ? nameSpace + '.' + matches[1] : matches[1];\n }\n var splRegexp = /@|\\$|#/gm;\n var arrObj = /\\]\\./gm;\n if (WINDOWFUNC.test(cnt) && arrObj.test(cnt) || splRegexp.test(cnt)) {\n var splArrRegexp = /@|\\$|#|\\]\\./gm;\n if (splArrRegexp.test(cnt)) {\n cnt = '\"+ ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(matches[1], rlStr.replace(WORDFUNC, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '+ \"';\n }\n } else {\n cnt = '\" + ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(rlStr, addNameSpace(matches[1].replace(/,( |)data.|,/gi, ',' + nameSpace + '.').replace(/,( |)data.window/gi, ',window'), fNameSpace === 'global' ? false : true, nameSpace, localKeys, ignorePrefix)) + '+\"';\n }\n }\n } else if (ELSE_STMT.test(cnt)) {\n // handling else condition\n cnt = '\"; ' + cnt.replace(ELSE_STMT, '} else { \\n str = str + \"');\n } else if (cnt.match(IF_OR_FOR)) {\n // close condition\n cnt = cnt.replace(IF_OR_FOR, '\"; \\n } \\n str = str + \"');\n } else if (SPECIAL_CHAR.test(cnt)) {\n // template string with double slash with special character\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n }\n cnt = '\"+' + NameSpaceForspecialChar(cnt, localKeys.indexOf(cnt) === -1, nameSpace, localKeys) + '\"]+\"';\n } else {\n // template string with double slash\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n cnt = '\"+' + NameSpaceForspecialChar(cnt, localKeys.indexOf(cnt) === -1, nameSpace, localKeys) + '\"]+\"';\n } else {\n // evaluate normal expression\n cnt = cnt !== '' ? '\"+' + addNameSpace(cnt.replace(/,/gi, '+' + nameSpace + '.'), localKeys.indexOf(cnt) === -1, nameSpace, localKeys, ignorePrefix) + '+\"' : '${}';\n }\n }\n return cnt;\n });\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction addNameSpace(str, addNS, nameSpace, ignoreList, ignorePrefix) {\n return addNS && !NOT_NUMBER.test(str) && ignoreList.indexOf(str.split('.')[0]) === -1 && !ignorePrefix && str !== 'true' && str !== 'false' ? nameSpace + '.' + str : str;\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n var arrObjReg = /^\\..*/gm;\n return addNS && !NOT_NUMBER.test(str) && ignoreList.indexOf(str.split('.')[0]) === -1 && !arrObjReg.test(str) ? nameSpace + '.' + str : str;\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return addNS && !NOT_NUMBER.test(str) && ignoreList.indexOf(str.split('.')[0]) === -1 ? nameSpace + '[\"' + str : str;\n}\n/**\n * Replace double slashes to single slash.\n *\n * @param {string} tempStr ?\n * @returns {any} ?\n */\nfunction SlashReplace(tempStr) {\n var double = '\\\\\\\\';\n if (tempStr.match(DOUBLE_SLASH)) {\n return tempStr;\n } else {\n return tempStr.replace(SINGLE_SLASH, double);\n }\n}\n/**\n *\n * @param {string} str ?\n * @param {string} nameSpaceNew ?\n * @param {string[]} keys ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys, ignorePrefix) {\n str = str.trim();\n var windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n var quotes = /'|\"/gm;\n var splRegexp = /@|\\$|#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, keys.indexOf(str) === -1, nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !quotes.test(str) && keys.indexOf(str) === -1, nameSpaceNew, keys);\n } else {\n return addNameSpace(str, !quotes.test(str) && keys.indexOf(str) === -1, nameSpaceNew, keys, ignorePrefix);\n }\n } else {\n return str;\n }\n}","/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\n/**\n * Template Engine Bridge\n */\nimport { compile as render } from './template';\nimport { createElement } from './dom';\nimport { isNullOrUndefined, isBlazor } from './util';\nvar HAS_ROW = /^[\\n\\r.]+<tr|^<tr/;\nvar HAS_SVG = /^[\\n\\r.]+<svg|^<path|^<g/;\nexport var blazorTemplates = {};\n/**\n *\n * @returns {string} ?\n */\nexport function getRandomId() {\n return '-' + Math.random().toString(36).substr(2, 5);\n}\n/**\n * Compile the template string into template function.\n *\n * @param {string | Function} templateString - The template string which is going to convert.\n * @param {Object} helper - Helper functions as an object.\n * @param {boolean} ignorePrefix ?\n * @returns {NodeList} ?\n * @private\n */\nexport function compile(templateString, helper, ignorePrefix) {\n var compiler = engineObj.compile(templateString, helper, ignorePrefix);\n return function (data, component, propName, templateId, isStringTemplate, index, element, root) {\n var result = compiler(data, component, propName, element, root);\n var blazorTemplateId = 'BlazorTemplateId';\n if (isBlazor() && !isStringTemplate) {\n var randomId = getRandomId();\n var blazorId = templateId + randomId;\n if (!blazorTemplates[\"\" + templateId]) {\n blazorTemplates[\"\" + templateId] = [];\n }\n if (!isNullOrUndefined(index)) {\n var keys = Object.keys(blazorTemplates[\"\" + templateId][parseInt(index.toString(), 10)]);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (key !== blazorTemplateId && data[\"\" + key]) {\n blazorTemplates[\"\" + templateId][parseInt(index.toString(), 10)][\"\" + key] = data[\"\" + key];\n }\n if (key === blazorTemplateId) {\n blazorId = blazorTemplates[\"\" + templateId][parseInt(index.toString(), 10)][\"\" + key];\n }\n }\n } else {\n data[\"\" + blazorTemplateId] = blazorId;\n blazorTemplates[\"\" + templateId].push(data);\n }\n return propName === 'rowTemplate' ? [createElement('tr', {\n id: blazorId,\n className: 'e-blazor-template'\n })] : [createElement('div', {\n id: blazorId,\n className: 'e-blazor-template'\n })];\n }\n if (typeof result === 'string') {\n if (HAS_SVG.test(result)) {\n var ele = createElement('svg', {\n innerHTML: result\n });\n return ele.childNodes;\n } else {\n var ele = createElement(HAS_ROW.test(result) ? 'table' : 'div', {\n innerHTML: result\n });\n return ele.childNodes;\n }\n } else {\n return result;\n }\n };\n}\n/**\n *\n * @param {string} templateId ?\n * @param {string} templateName ?\n * @param {string} comp ?\n * @param {boolean} isEmpty ?\n * @param {Function} callBack ?\n * @returns {void} ?\n */\nexport function updateBlazorTemplate(templateId, templateName, comp, isEmpty, callBack) {\n if (isBlazor()) {\n var ejsIntrop = 'sfBlazor';\n window[\"\" + ejsIntrop].updateTemplate(templateName, blazorTemplates[\"\" + templateId], templateId, comp, callBack);\n if (isEmpty !== false) {\n blazorTemplates[\"\" + templateId] = [];\n }\n }\n}\n/**\n *\n * @param {string} templateId ?\n * @param {string} templateName ?\n * @param {number} index ?\n * @returns {void} ?\n */\nexport function resetBlazorTemplate(templateId, templateName, index) {\n var templateDiv = document.getElementById(templateId);\n if (templateDiv) {\n var innerTemplates = templateDiv.getElementsByClassName('blazor-inner-template');\n for (var i = 0; i < innerTemplates.length; i++) {\n var tempId = ' ';\n if (!isNullOrUndefined(index)) {\n tempId = innerTemplates[parseInt(index.toString(), 10)].getAttribute('data-templateId');\n } else {\n tempId = innerTemplates[parseInt(i.toString(), 10)].getAttribute('data-templateId');\n }\n var tempElement = document.getElementById(tempId);\n if (tempElement) {\n var length_1 = tempElement.childNodes.length;\n for (var j = 0; j < length_1; j++) {\n if (!isNullOrUndefined(index)) {\n innerTemplates[parseInt(index.toString(), 10)].appendChild(tempElement.childNodes[0]);\n i = innerTemplates.length;\n } else {\n innerTemplates[parseInt(i.toString(), 10)].appendChild(tempElement.childNodes[0]);\n }\n }\n }\n }\n }\n}\n/**\n * Set your custom template engine for template rendering.\n *\n * @param {ITemplateEngine} classObj - Class object for custom template.\n * @returns {void} ?\n * @private\n */\nexport function setTemplateEngine(classObj) {\n engineObj.compile = classObj.compile;\n}\n/**\n * Get current template engine for template rendering\n *\n * @returns {string} ?\n * @private\n */\nexport function getTemplateEngine() {\n return engineObj.compile;\n}\n/**\n * Set the current template function to support Content Security Policy.\n *\n * @param {Function} template - The template function that is going to render.\n * @param {any} helper - The data utilized by the template from the helper.\n * @returns {Function} ?\n * @private\n */\nexport function initializeCSPTemplate(template, helper) {\n var boundFunc;\n template.prototype.CSPTemplate = true;\n if (!isNullOrUndefined(helper)) {\n boundFunc = template.bind(helper);\n boundFunc.prototype = Object.create(template.prototype);\n } else {\n boundFunc = template;\n }\n return boundFunc;\n}\n//Default Engine Class\nvar Engine = /** @class */function () {\n function Engine() {}\n Engine.prototype.compile = function (templateString, helper, ignorePrefix) {\n if (helper === void 0) {\n helper = {};\n }\n return render(templateString, helper);\n };\n return Engine;\n}();\nvar engineObj = {\n compile: new Engine().compile\n};","/**\n * SanitizeHtmlHelper for sanitize the value.\n */\nimport { detach } from './dom';\nimport { isNullOrUndefined } from './util';\nvar removeTags = ['script', 'style', 'iframe[src]', 'link[href*=\"javascript:\"]', 'object[type=\"text/x-scriptlet\"]', 'object[data^=\"data:text/html;base64\"]', 'img[src^=\"data:text/html;base64\"]', '[src^=\"javascript:\"]', '[dynsrc^=\"javascript:\"]', '[lowsrc^=\"javascript:\"]', '[type^=\"application/x-shockwave-flash\"]'];\nvar removeAttrs = [{\n attribute: 'href',\n selector: '[href*=\"javascript:\"]'\n}, {\n attribute: 'href',\n selector: 'a[href]'\n}, {\n attribute: 'background',\n selector: '[background^=\"javascript:\"]'\n}, {\n attribute: 'style',\n selector: '[style*=\"javascript:\"]'\n}, {\n attribute: 'style',\n selector: '[style*=\"expression(\"]'\n}, {\n attribute: 'href',\n selector: 'a[href^=\"data:text/html;base64\"]'\n}];\nvar jsEvents = ['onchange', 'onclick', 'onmouseover', 'onmouseout', 'onkeydown', 'onload', 'onerror', 'onblur', 'onfocus', 'onbeforeload', 'onbeforeunload', 'onkeyup', 'onsubmit', 'onafterprint', 'onbeforeonload', 'onbeforeprint', 'oncanplay', 'oncanplaythrough', 'oncontextmenu', 'ondblclick', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'ondurationchange', 'onemptied', 'onended', 'onformchange', 'onforminput', 'onhaschange', 'oninput', 'oninvalid', 'onkeypress', 'onloadeddata', 'onloadedmetadata', 'onloadstart', 'onmessage', 'onmousedown', 'onmousemove', 'onmouseup', 'onmousewheel', 'onoffline', 'onoine', 'ononline', 'onpagehide', 'onpageshow', 'onpause', 'onplay', 'onplaying', 'onpopstate', 'onprogress', 'onratechange', 'onreadystatechange', 'onredo', 'onresize', 'onscroll', 'onseeked', 'onseeking', 'onselect', 'onstalled', 'onstorage', 'onsuspend', 'ontimeupdate', 'onundo', 'onunload', 'onvolumechange', 'onwaiting', 'onmouseenter', 'onmouseleave', 'onstart', 'onpropertychange', 'oncopy', 'ontoggle', 'onpointerout', 'onpointermove', 'onpointerleave', 'onpointerenter', 'onpointerrawupdate', 'onpointerover', 'onbeforecopy', 'onbeforecut', 'onbeforeinput'];\nvar SanitizeHtmlHelper = /** @class */function () {\n function SanitizeHtmlHelper() {}\n SanitizeHtmlHelper.beforeSanitize = function () {\n return {\n selectors: {\n tags: removeTags,\n attributes: removeAttrs\n }\n };\n };\n SanitizeHtmlHelper.sanitize = function (value) {\n if (isNullOrUndefined(value)) {\n return value;\n }\n var item = this.beforeSanitize();\n var output = this.serializeValue(item, value);\n return output;\n };\n SanitizeHtmlHelper.serializeValue = function (item, value) {\n this.removeAttrs = item.selectors.attributes;\n this.removeTags = item.selectors.tags;\n this.wrapElement = document.createElement('div');\n this.wrapElement.innerHTML = value;\n this.removeXssTags();\n this.removeJsEvents();\n this.removeXssAttrs();\n var tempEleValue = this.wrapElement.innerHTML;\n this.removeElement();\n this.wrapElement = null;\n return tempEleValue.replace(/&/g, '&');\n };\n SanitizeHtmlHelper.removeElement = function () {\n // Removes an element's attibute to avoid html tag validation\n var nodes = this.wrapElement.children;\n for (var j = 0; j < nodes.length; j++) {\n var attribute = nodes[parseInt(j.toString(), 10)].attributes;\n for (var i = 0; i < attribute.length; i++) {\n this.wrapElement.children[parseInt(j.toString(), 10)].removeAttribute(attribute[parseInt(i.toString(), 10)].localName);\n }\n }\n };\n SanitizeHtmlHelper.removeXssTags = function () {\n var elements = this.wrapElement.querySelectorAll(this.removeTags.join(','));\n if (elements.length > 0) {\n elements.forEach(function (element) {\n detach(element);\n });\n } else {\n return;\n }\n };\n SanitizeHtmlHelper.removeJsEvents = function () {\n var elements = this.wrapElement.querySelectorAll('[' + jsEvents.join('],[') + ']');\n if (elements.length > 0) {\n elements.forEach(function (element) {\n jsEvents.forEach(function (attr) {\n if (element.hasAttribute(attr)) {\n element.removeAttribute(attr);\n }\n });\n });\n } else {\n return;\n }\n };\n SanitizeHtmlHelper.removeXssAttrs = function () {\n var _this = this;\n this.removeAttrs.forEach(function (item, index) {\n var elements = _this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n if (item.selector === 'a[href]') {\n elements.forEach(function (element) {\n if (element.getAttribute(item.attribute).replace(/\\t|\\s|&/, '').indexOf('javascript:alert') !== -1) {\n element.removeAttribute(item.attribute);\n }\n });\n } else {\n elements.forEach(function (element) {\n element.removeAttribute(item.attribute);\n });\n }\n }\n });\n };\n return SanitizeHtmlHelper;\n}();\nexport { SanitizeHtmlHelper };","exports.__esModule = true;\nvar ATTRIBUTE_NAMES = exports.ATTRIBUTE_NAMES = {\n BODY: \"bodyAttributes\",\n HTML: \"htmlAttributes\",\n TITLE: \"titleAttributes\"\n};\nvar TAG_NAMES = exports.TAG_NAMES = {\n BASE: \"base\",\n BODY: \"body\",\n HEAD: \"head\",\n HTML: \"html\",\n LINK: \"link\",\n META: \"meta\",\n NOSCRIPT: \"noscript\",\n SCRIPT: \"script\",\n STYLE: \"style\",\n TITLE: \"title\"\n};\nvar VALID_TAG_NAMES = exports.VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n return TAG_NAMES[name];\n});\nvar TAG_PROPERTIES = exports.TAG_PROPERTIES = {\n CHARSET: \"charset\",\n CSS_TEXT: \"cssText\",\n HREF: \"href\",\n HTTPEQUIV: \"http-equiv\",\n INNER_HTML: \"innerHTML\",\n ITEM_PROP: \"itemprop\",\n NAME: \"name\",\n PROPERTY: \"property\",\n REL: \"rel\",\n SRC: \"src\"\n};\nvar REACT_TAG_MAP = exports.REACT_TAG_MAP = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n};\nvar HELMET_PROPS = exports.HELMET_PROPS = {\n DEFAULT_TITLE: \"defaultTitle\",\n DEFER: \"defer\",\n ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n TITLE_TEMPLATE: \"titleTemplate\"\n};\nvar HTML_TAG_MAP = exports.HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\nvar SELF_CLOSING_TAGS = exports.SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\nvar HELMET_ATTRIBUTE = exports.HELMET_ATTRIBUTE = \"data-react-helmet\";","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = getPrototypeOf && getPrototypeOf(Object);\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n var keys = getOwnPropertyNames(sourceComponent);\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!REACT_STATICS[key] && !KNOWN_STATICS[key] && (!blacklist || !blacklist[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n return targetComponent;\n }\n return targetComponent;\n}\nmodule.exports = hoistNonReactStatics;","exports.__esModule = true;\nexports.warn = exports.requestAnimationFrame = exports.reducePropsToState = exports.mapStateOnServer = exports.handleClientStateChange = exports.convertReactPropstoHtmlAttributes = undefined;\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nvar _react = require(\"react\");\nvar _react2 = _interopRequireDefault(_react);\nvar _objectAssign = require(\"object-assign\");\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\nvar _HelmetConstants = require(\"./HelmetConstants.js\");\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (encode === false) {\n return String(str);\n }\n return String(str).replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, _HelmetConstants.TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.TITLE_TEMPLATE);\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return innermostTitle;\n });\n }\n var innermostDefaultTitle = getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.DEFAULT_TITLE);\n return innermostTitle || innermostDefaultTitle || undefined;\n};\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[_HelmetConstants.TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[_HelmetConstants.TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n return innermostBaseTag;\n }, []);\n};\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n if (typeof props[tagName] !== \"undefined\") {\n warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n }\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === _HelmetConstants.TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === _HelmetConstants.TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n // Special case for innerHTML which doesn't work lowercased\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || attributeKey === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT || attributeKey === _HelmetConstants.TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n var value = tag[primaryAttributeKey].toLowerCase();\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n });\n\n // Update seen tags with tags from this instance\n var keys = Object.keys(instanceSeenTags);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = (0, _objectAssign2.default)({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n approvedSeenTags[attributeKey] = tagUnion;\n }\n return approvedTags;\n }, []).reverse();\n};\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n if (props.hasOwnProperty(property)) {\n return props[property];\n }\n }\n return null;\n};\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n baseTag: getBaseTagFromPropsList([_HelmetConstants.TAG_PROPERTIES.HREF], propsList),\n bodyAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, _HelmetConstants.HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.LINK, [_HelmetConstants.TAG_PROPERTIES.REL, _HelmetConstants.TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.META, [_HelmetConstants.TAG_PROPERTIES.NAME, _HelmetConstants.TAG_PROPERTIES.CHARSET, _HelmetConstants.TAG_PROPERTIES.HTTPEQUIV, _HelmetConstants.TAG_PROPERTIES.PROPERTY, _HelmetConstants.TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.NOSCRIPT, [_HelmetConstants.TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.SCRIPT, [_HelmetConstants.TAG_PROPERTIES.SRC, _HelmetConstants.TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(_HelmetConstants.TAG_NAMES.STYLE, [_HelmetConstants.TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(_HelmetConstants.ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\nvar rafPolyfill = function () {\n var clock = Date.now();\n return function (callback) {\n var currentTime = Date.now();\n if (currentTime - clock > 16) {\n clock = currentTime;\n callback(currentTime);\n } else {\n setTimeout(function () {\n rafPolyfill(callback);\n }, 0);\n }\n };\n}();\nvar cafPolyfill = function cafPolyfill(id) {\n return clearTimeout(id);\n};\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\nvar warn = function warn(msg) {\n return console && typeof console.warn === \"function\" && console.warn(msg);\n};\nvar _helmetCallback = null;\nvar handleClientStateChange = function handleClientStateChange(newState) {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(function () {\n commitTagChanges(newState, function () {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n var baseTag = newState.baseTag,\n bodyAttributes = newState.bodyAttributes,\n htmlAttributes = newState.htmlAttributes,\n linkTags = newState.linkTags,\n metaTags = newState.metaTags,\n noscriptTags = newState.noscriptTags,\n onChangeClientState = newState.onChangeClientState,\n scriptTags = newState.scriptTags,\n styleTags = newState.styleTags,\n title = newState.title,\n titleAttributes = newState.titleAttributes;\n updateAttributes(_HelmetConstants.TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(_HelmetConstants.TAG_NAMES.HTML, htmlAttributes);\n updateTitle(title, titleAttributes);\n var tagUpdates = {\n baseTag: updateTags(_HelmetConstants.TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(_HelmetConstants.TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(_HelmetConstants.TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(_HelmetConstants.TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(_HelmetConstants.TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(_HelmetConstants.TAG_NAMES.STYLE, styleTags)\n };\n var addedTags = {};\n var removedTags = {};\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n cb && cb();\n onChangeClientState(newState, addedTags, removedTags);\n};\nvar flattenArray = function flattenArray(possibleArray) {\n return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\nvar updateTitle = function updateTitle(title, attributes) {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n updateAttributes(_HelmetConstants.TAG_NAMES.TITLE, attributes);\n};\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var elementTag = document.getElementsByTagName(tagName)[0];\n if (!elementTag) {\n return;\n }\n var helmetAttributeString = elementTag.getAttribute(_HelmetConstants.HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n var indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n elementTag.removeAttribute(attributesToRemove[_i]);\n }\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(_HelmetConstants.HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(_HelmetConstants.HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(_HelmetConstants.HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(_HelmetConstants.TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + \"[\" + _HelmetConstants.HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n newElement.setAttribute(_HelmetConstants.HELMET_ATTRIBUTE, \"true\");\n\n // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n var attributeString = generateElementAttributesAsString(attributes);\n var flattenedTitle = flattenArray(title);\n return attributeString ? \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"</\" + type + \">\" : \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"</\" + type + \">\";\n};\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || attribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT);\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n var isSelfClosing = _HelmetConstants.SELF_CLOSING_TAGS.indexOf(type) === -1;\n return str + \"<\" + type + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"</\" + type + \">\");\n }, \"\");\n};\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Object.keys(attributes).reduce(function (obj, key) {\n obj[_HelmetConstants.REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n};\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Object.keys(props).reduce(function (obj, key) {\n obj[_HelmetConstants.HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps;\n\n // assigning into an array to define toString function on it\n var initProps = (_initProps = {\n key: title\n }, _initProps[_HelmetConstants.HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n return [_react2.default.createElement(_HelmetConstants.TAG_NAMES.TITLE, props, title)];\n};\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var _mappedTag;\n var mappedTag = (_mappedTag = {\n key: i\n }, _mappedTag[_HelmetConstants.HELMET_ATTRIBUTE] = true, _mappedTag);\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = _HelmetConstants.REACT_TAG_MAP[attribute] || attribute;\n if (mappedAttribute === _HelmetConstants.TAG_PROPERTIES.INNER_HTML || mappedAttribute === _HelmetConstants.TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = {\n __html: content\n };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n return _react2.default.createElement(type, mappedTag);\n });\n};\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case _HelmetConstants.TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n }\n };\n case _HelmetConstants.ATTRIBUTE_NAMES.BODY:\n case _HelmetConstants.ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return convertElementAttributestoReactProps(tags);\n },\n toString: function toString() {\n return generateElementAttributesAsString(tags);\n }\n };\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags, encode);\n }\n };\n }\n};\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var baseTag = _ref.baseTag,\n bodyAttributes = _ref.bodyAttributes,\n encode = _ref.encode,\n htmlAttributes = _ref.htmlAttributes,\n linkTags = _ref.linkTags,\n metaTags = _ref.metaTags,\n noscriptTags = _ref.noscriptTags,\n scriptTags = _ref.scriptTags,\n styleTags = _ref.styleTags,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? \"\" : _ref$title,\n titleAttributes = _ref.titleAttributes;\n return {\n base: getMethodsForTag(_HelmetConstants.TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(_HelmetConstants.ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(_HelmetConstants.ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(_HelmetConstants.TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(_HelmetConstants.TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(_HelmetConstants.TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(_HelmetConstants.TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(_HelmetConstants.TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(_HelmetConstants.TAG_NAMES.TITLE, {\n title: title,\n titleAttributes: titleAttributes\n }, encode)\n };\n};\nexports.convertReactPropstoHtmlAttributes = convertReactPropstoHtmlAttributes;\nexports.handleClientStateChange = handleClientStateChange;\nexports.mapStateOnServer = mapStateOnServer;\nexports.reducePropsToState = reducePropsToState;\nexports.requestAnimationFrame = requestAnimationFrame;\nexports.warn = warn;","/* eslint-disable no-inner-declarations */\nimport { extend, merge, isNullOrUndefined, getValue, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { attributes, prepend, isVisible, append, addClass } from '@syncfusion/ej2-base';\nimport { compile } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nexport var cssClass = {\n li: 'e-list-item',\n ul: 'e-list-parent e-ul',\n group: 'e-list-group-item',\n icon: 'e-list-icon',\n text: 'e-list-text',\n check: 'e-list-check',\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: 'e-list-url',\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: 'e-list-img',\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n};\n/**\n * Base List Generator\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var ListBase;\n(function (ListBase) {\n /**\n *\n * Default mapped fields.\n */\n ListBase.defaultMappedFields = {\n id: 'id',\n text: 'text',\n url: 'url',\n value: 'value',\n isChecked: 'isChecked',\n enabled: 'enabled',\n expanded: 'expanded',\n selected: 'selected',\n iconCss: 'iconCss',\n child: 'child',\n isVisible: 'isVisible',\n hasChildren: 'hasChildren',\n tooltip: 'tooltip',\n htmlAttributes: 'htmlAttributes',\n urlAttributes: 'urlAttributes',\n imageAttributes: 'imageAttributes',\n imageUrl: 'imageUrl',\n groupBy: null,\n sortBy: null\n };\n var defaultAriaAttributes = {\n level: 1,\n listRole: 'presentation',\n itemRole: 'presentation',\n groupItemRole: 'group',\n itemText: 'list-item',\n wrapperRole: 'presentation'\n };\n var defaultListBaseOptions = {\n showCheckBox: false,\n showIcon: false,\n enableHtmlSanitizer: false,\n expandCollapse: false,\n fields: ListBase.defaultMappedFields,\n ariaAttributes: defaultAriaAttributes,\n listClass: '',\n itemClass: '',\n processSubChild: false,\n sortOrder: 'None',\n template: null,\n groupTemplate: null,\n headerTemplate: null,\n expandIconClass: 'e-icon-collapsible',\n moduleName: 'list',\n expandIconPosition: 'Right',\n itemNavigable: false\n };\n /**\n * Function helps to created and return the UL Li element based on your data.\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {createElement} createListFromJson - Specifies the list options that need to provide.\n */\n function createList(createElement, dataSource, options, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var type = typeofData(dataSource).typeof;\n if (type === 'string' || type === 'number') {\n return createListFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n } else {\n return createListFromJson(createElement, dataSource, options, ariaAttributes.level, isSingleLevel, componentInstance);\n }\n }\n ListBase.createList = createList;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - returns the list options that need to provide.\n */\n function createListFromArray(createElement, dataSource, isSingleLevel, options, componentInstance) {\n var subChild = createListItemFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n return generateUL(createElement, subChild, null, options);\n }\n ListBase.createListFromArray = createListFromArray;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} subChild - returns the list options that need to provide.\n */\n function createListItemFromArray(createElement, dataSource, isSingleLevel, options, componentInstance) {\n var subChild = [];\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n var li = void 0;\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n options: curOpt\n };\n curOpt.itemCreating(curData);\n }\n if (isSingleLevel) {\n li = generateSingleLevelLI(createElement, dataSource[i], undefined, null, null, [], null, id, i, options);\n } else {\n li = generateLI(createElement, dataSource[i], undefined, null, null, options, componentInstance);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n item: li,\n options: curOpt\n };\n curOpt.itemCreated(curData);\n }\n subChild.push(li);\n }\n return subChild;\n }\n ListBase.createListItemFromArray = createListItemFromArray;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {number} [level] - Specifies the list options that need to provide.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} child - returns the list options that need to provide.\n */\n function createListItemFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var fields = componentInstance && (componentInstance.getModuleName() === 'listview' || componentInstance.getModuleName() === 'multiselect') ? curOpt.fields : extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var id;\n var checkboxElement = [];\n if (level) {\n ariaAttributes.level = level;\n }\n var child = [];\n var li;\n var anchorElement;\n if (dataSource && dataSource.length && !isNullOrUndefined(typeofData(dataSource).item) && !Object.prototype.hasOwnProperty.call(typeofData(dataSource).item, fields.id)) {\n id = generateId(); // generate id for drop-down-list option.\n }\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], fields);\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreating(curData);\n }\n var curItem = dataSource[i];\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], fields);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.id) && !isNullOrUndefined(fieldData[fields.id])) {\n id = fieldData[fields.id];\n }\n var innerEle = [];\n if (curOpt.showCheckBox) {\n if (curOpt.itemNavigable && (fieldData[fields.url] || fieldData[fields.urlAttributes])) {\n checkboxElement.push(createElement('input', {\n className: cssClass.check,\n attrs: {\n type: 'checkbox'\n }\n }));\n } else {\n innerEle.push(createElement('input', {\n className: cssClass.check,\n attrs: {\n type: 'checkbox'\n }\n }));\n }\n }\n if (isSingleLevel === true) {\n if (curOpt.showIcon && Object.prototype.hasOwnProperty.call(fieldData, fields.iconCss) && !isNullOrUndefined(fieldData[fields.iconCss])) {\n innerEle.push(createElement('span', {\n className: cssClass.icon + ' ' + fieldData[fields.iconCss]\n }));\n }\n li = generateSingleLevelLI(createElement, curItem, fieldData, fields, curOpt.itemClass, innerEle, Object.prototype.hasOwnProperty.call(curItem, 'isHeader') && curItem.isHeader ? true : false, id, i, options);\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.tooltip)) {\n var tooltipText = fieldData[fields.tooltip];\n if (options && options.enableHtmlSanitizer) {\n tooltipText = SanitizeHtmlHelper.sanitize(tooltipText);\n } else {\n var tooltipTextElement = createElement('span', {\n innerHTML: tooltipText\n });\n tooltipText = tooltipTextElement.innerText;\n tooltipTextElement = null;\n }\n li.setAttribute('title', tooltipText);\n }\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n } else {\n li = generateLI(createElement, curItem, fieldData, fields, curOpt.itemClass, options, componentInstance);\n li.classList.add(cssClass.level + '-' + ariaAttributes.level);\n li.setAttribute('aria-level', ariaAttributes.level.toString());\n if (ariaAttributes.groupItemRole === 'presentation' || ariaAttributes.itemRole === 'presentation') {\n li.removeAttribute('aria-level');\n }\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.tooltip)) {\n var tooltipText = fieldData[fields.tooltip];\n if (options && options.enableHtmlSanitizer) {\n tooltipText = SanitizeHtmlHelper.sanitize(tooltipText);\n } else {\n var tooltipTextElement = createElement('span', {\n innerHTML: tooltipText\n });\n tooltipText = tooltipTextElement.innerText;\n tooltipTextElement = null;\n }\n li.setAttribute('title', tooltipText);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n var htmlAttributes = fieldData[fields.htmlAttributes];\n // Check if 'class' attribute is present and not an empty string\n if ('class' in htmlAttributes && typeof htmlAttributes['class'] === 'string' && htmlAttributes['class'].trim() === '') {\n delete htmlAttributes['class'];\n }\n setAttribute(li, htmlAttributes);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.enabled) && fieldData[fields.enabled] === false) {\n li.classList.add(cssClass.disabled);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.isVisible) && fieldData[fields.isVisible] === false) {\n li.style.display = 'none';\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.imageUrl) && !isNullOrUndefined(fieldData[fields.imageUrl]) && !curOpt.template) {\n var attr = {\n src: fieldData[fields.imageUrl],\n alt: !isNullOrUndefined(fieldData.name) ? 'Displaying ' + fieldData.name + ' Image' : 'Displaying Image'\n };\n merge(attr, fieldData[fields.imageAttributes]);\n var imageElemnt = createElement('img', {\n className: cssClass.image,\n attrs: attr\n });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', imageElemnt);\n } else {\n prepend([imageElemnt], li.firstElementChild);\n }\n }\n if (curOpt.showIcon && Object.prototype.hasOwnProperty.call(fieldData, fields.iconCss) && !isNullOrUndefined(fieldData[fields.iconCss]) && !curOpt.template) {\n var iconElement = createElement('div', {\n className: cssClass.icon + ' ' + fieldData[fields.iconCss]\n });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', iconElement);\n } else {\n prepend([iconElement], li.firstElementChild);\n }\n }\n if (innerEle.length) {\n prepend(innerEle, li.firstElementChild);\n }\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n processSubChild(createElement, fieldData, fields, dataSource, curOpt, li, ariaAttributes.level);\n }\n if (anchorElement) {\n addClass([li], [cssClass.navigable]);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n item: li,\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreated(curData);\n }\n checkboxElement = [];\n child.push(li);\n }\n return child;\n }\n ListBase.createListItemFromJson = createListItemFromJson;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {number} [level] - Specifies the list options that need to provide.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - Specifies the list options that need to provide.\n */\n function createListFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var li = createListItemFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance);\n return generateUL(createElement, li, curOpt.listClass, options);\n }\n ListBase.createListFromJson = createListFromJson;\n /**\n * Return the next or previous visible element.\n *\n * @param {Element[]|NodeList} elementArray - An element array to find next or previous element.\n * @param {Element} element - An element to find next or previous after this element.\n * @param {boolean} [isPrevious] - Specify when the need get previous element from array.\n * @returns {Element|undefined} The next or previous visible element, or undefined if the element array is empty.\n */\n function getSiblingLI(elementArray, element, isPrevious) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n if (!elementArray || !elementArray.length) {\n return void 0;\n }\n var siblingLI;\n var liIndex;\n var liCollections = Array.prototype.slice.call(elementArray);\n if (element) {\n liIndex = indexOf(element, liCollections);\n } else {\n liIndex = isPrevious === true ? liCollections.length : -1;\n }\n siblingLI = liCollections[liIndex + (isPrevious === true ? -1 : 1)];\n while (siblingLI && (!isVisible(siblingLI) || siblingLI.classList.contains(cssClass.disabled))) {\n liIndex = liIndex + (isPrevious === true ? -1 : 1);\n siblingLI = liCollections[liIndex];\n }\n return siblingLI;\n }\n ListBase.getSiblingLI = getSiblingLI;\n /**\n * Return the index of the li element\n *\n * @param {Element} item - An element to find next or previous after this element.\n * @param {Element[]} elementArray - An element array to find index of given li.\n * @returns {number} - The index of the item in the element array, or undefined if either parameter is false.\n */\n function indexOf(item, elementArray) {\n if (!elementArray || !item) {\n return void 0;\n } else {\n var liCollections = elementArray;\n liCollections = Array.prototype.slice.call(elementArray);\n return liCollections.indexOf(item);\n }\n }\n ListBase.indexOf = indexOf;\n /**\n * Returns the grouped data from given dataSource.\n *\n * @param {{Object}[]} dataSource - The JSON data which is necessary to process.\n * @param {FieldsMapping} fields - Fields that are mapped from the data source.\n * @param {SortOrder} [sortOrder='None'] - Specifies final result sort order. Defaults to 'None'.\n * @returns {Object[]} - The grouped data.\n */\n function groupDataSource(dataSource, fields, sortOrder) {\n if (sortOrder === void 0) {\n sortOrder = 'None';\n }\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var cusQuery = new Query().group(curFields.groupBy);\n // need to remove once sorting issues fixed in DataManager\n cusQuery = addSorting(sortOrder, 'key', cusQuery);\n var ds = getDataSource(dataSource, cusQuery);\n dataSource = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[j].items;\n var grpItem = {};\n var hdr = 'isHeader';\n grpItem[curFields.text] = ds[j].key;\n grpItem[\"\" + hdr] = true;\n var newtext = curFields.text;\n if (newtext === 'id') {\n newtext = 'text';\n grpItem[\"\" + newtext] = ds[j].key;\n }\n grpItem._id = 'group-list-item-' + (ds[j].key ? ds[j].key.toString().trim() : 'undefined');\n grpItem.items = itemObj;\n dataSource.push(grpItem);\n for (var k = 0; k < itemObj.length; k++) {\n dataSource.push(itemObj[k]);\n }\n }\n return dataSource;\n }\n ListBase.groupDataSource = groupDataSource;\n /**\n * Returns a sorted query object.\n *\n * @param {SortOrder} sortOrder - Specifies that sort order.\n * @param {string} sortBy - Specifies sortBy fields.\n * @param {Query} query - Pass if any existing query.\n * @returns {Query} - The updated query object with sorting applied.\n */\n function addSorting(sortOrder, sortBy, query) {\n if (query === void 0) {\n query = new Query();\n }\n if (sortOrder === 'Ascending') {\n query.sortBy(sortBy, 'ascending', true);\n } else if (sortOrder === 'Descending') {\n query.sortBy(sortBy, 'descending', true);\n } else {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[i].fn === 'onSortBy') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n }\n ListBase.addSorting = addSorting;\n /**\n * Return an array of JSON Data that processed based on queries.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {Query} query - Specifies query that need to process.\n *\n * @returns {Object[]} - An array of objects representing the retrieved data.\n */\n function getDataSource(dataSource, query) {\n return new DataManager(dataSource).executeLocal(query);\n }\n ListBase.getDataSource = getDataSource;\n /**\n * Created JSON data based the UL and LI element\n *\n * @param {HTMLElement|Element} element - UL element that need to convert as a JSON\n * @param {ListBaseOptions} [options] - Specifies ListBase option for fields.\n * @returns {Object[]} - An array of objects representing the JSON data.\n */\n function createJsonFromElement(element, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var curEle = element.cloneNode(true);\n var jsonAr = [];\n curEle.classList.add('json-parent');\n var childs = curEle.querySelectorAll('.json-parent>li');\n curEle.classList.remove('json-parent');\n for (var i = 0; i < childs.length; i++) {\n var li = childs[i];\n var anchor = li.querySelector('a');\n var ul = li.querySelector('ul');\n var json = {};\n var childNodes = anchor ? anchor.childNodes : li.childNodes;\n var keys = Object.keys(childNodes);\n for (var i_1 = 0; i_1 < childNodes.length; i_1++) {\n if (!childNodes[Number(keys[i_1])].hasChildNodes()) {\n json[fields.text] = childNodes[Number(keys[i_1])].textContent;\n }\n }\n var attributes_1 = getAllAttributes(li);\n if (attributes_1.id) {\n json[fields.id] = attributes_1.id;\n delete attributes_1.id;\n } else {\n json[fields.id] = generateId();\n }\n if (Object.keys(attributes_1).length) {\n json[fields.htmlAttributes] = attributes_1;\n }\n if (anchor) {\n attributes_1 = getAllAttributes(anchor);\n if (Object.keys(attributes_1).length) {\n json[fields.urlAttributes] = attributes_1;\n }\n }\n if (ul) {\n json[fields.child] = createJsonFromElement(ul, options);\n }\n jsonAr.push(json);\n }\n return jsonAr;\n }\n ListBase.createJsonFromElement = createJsonFromElement;\n /**\n * Determines the type of data in an array of objects, strings, or numbers.\n *\n * @param {Object[] | string[] | number[]} data - The array containing objects, strings, or numbers.\n * @returns {{typeof: (string | null), item: (Object | string | number)}} - An object containing the type of data and the corresponding item.\n */\n function typeofData(data) {\n var match = {\n typeof: null,\n item: null\n };\n for (var i = 0; i < data.length; i++) {\n if (!isNullOrUndefined(data[i])) {\n return match = {\n typeof: typeof data[i],\n item: data[i]\n };\n }\n }\n return match;\n }\n /**\n * Sets attributes on an HTML element.\n *\n * @param {HTMLElement} element - The HTML element to set attributes on.\n * @param {Object.<string, string>} elementAttributes - An object containing attribute names and their corresponding values.\n * @returns {void}\n */\n function setAttribute(element, elementAttributes) {\n var attr = {};\n merge(attr, elementAttributes);\n if (attr.class) {\n addClass([element], attr.class.split(' '));\n delete attr.class;\n }\n attributes(element, attr);\n }\n /**\n * Retrieves all attributes of an HTML element.\n *\n * @param {HTMLElement} element - The HTML element to retrieve attributes from.\n * @returns {Object.<string, string>} - An object containing attribute names as keys and their corresponding values as values.\n */\n function getAllAttributes(element) {\n var attributes = {};\n var attr = element.attributes;\n for (var index = 0; index < attr.length; index++) {\n attributes[attr[index].nodeName] = attr[index].nodeValue;\n }\n return attributes;\n }\n /**\n * Created UL element from content template.\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n * @param {string} template - that need to convert and generate li element.\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n * @param {FieldsMapping} [fields] - Specifies fields for mapping the dataSource.\n * @param {ListBaseOptions} [options] - Specifies ListBase option for fields.\n * @param {any} [componentInstance] - Specifies component instance.\n * @returns {HTMLElement} - The generated LI element.\n */\n function renderContentTemplate(createElement, template, dataSource, fields, options, componentInstance) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n var ulElement = createElement('ul', {\n className: cssClass.ul,\n attrs: {\n role: 'presentation'\n }\n });\n var curOpt = extend({}, defaultListBaseOptions, options);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var compiledString = compileTemplate(template);\n var liCollection = [];\n var value;\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], curFields);\n var curItem = dataSource[i];\n var isHeader = curItem.isHeader;\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n } else {\n value = fieldData[curFields.value];\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreating(curData);\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], curFields);\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n } else {\n value = fieldData[curFields.value];\n }\n }\n var li = createElement('li', {\n id: id + '-' + i,\n className: isHeader ? cssClass.group : cssClass.li,\n attrs: {\n role: 'presentation'\n }\n });\n if (isHeader) {\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n li.innerText = curItem;\n } else {\n li.innerText = fieldData[curFields.text];\n }\n } else {\n var currentID = isHeader ? curOpt.groupTemplateID : curOpt.templateID;\n if (isHeader) {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledElement = compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n } else {\n append(compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate), li);\n }\n } else {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledElement = compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n } else {\n append(compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n item: li,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreated(curData);\n }\n liCollection.push(li);\n }\n append(liCollection, ulElement);\n return ulElement;\n }\n ListBase.renderContentTemplate = renderContentTemplate;\n /**\n * Created header items from group template.\n *\n * @param {string | Function} groupTemplate - that need to convert and generate li element.\n *\n * @param {{Object}[]} groupDataSource - Specifies local JSON data source.\n *\n * @param {FieldsMapping} fields - Specifies fields for mapping the dataSource.\n *\n * @param {Element[]} headerItems - Specifies ListBase header items.\n *\n * @param {ListBaseOptions} [options] - Optional ListBase options.\n *\n * @param {*} [componentInstance] - Optional component instance.\n *\n * @returns {Element[]} - An array of header elements with the rendered group template content.\n */\n function renderGroupTemplate(groupTemplate,\n // tslint:disable-next-line\n groupDataSource, fields, headerItems, options, componentInstance) {\n var compiledString = compileTemplate(groupTemplate);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var curOpt = extend({}, defaultListBaseOptions, options);\n var category = curFields.groupBy;\n for (var _i = 0, headerItems_1 = headerItems; _i < headerItems_1.length; _i++) {\n var header = headerItems_1[_i];\n var headerData = {};\n headerData[\"\" + category] = header.textContent;\n header.innerHTML = '';\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledElement = compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, header);\n if (compiledElement) {\n append(compiledElement, header);\n }\n } else {\n append(compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), header);\n }\n }\n return headerItems;\n }\n ListBase.renderGroupTemplate = renderGroupTemplate;\n /**\n * Generates a random hexadecimal ID string.\n *\n * @returns {string} - The generated ID string.\n */\n function generateId() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n }\n ListBase.generateId = generateId;\n /**\n * Processes the sub-child elements and creates corresponding elements based on the provided field data and options.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {Object} fieldData - Field data containing sub-child information.\n * @param {FieldsMapping} fields - Field mappings.\n * @param {Object[]} ds - The data source array containing sub-child elements.\n * @param {ListBaseOptions} options - ListBase options.\n * @param {HTMLElement} element - The parent HTML element to append sub-child elements to.\n * @param {number} level - The level of the sub-child elements.\n * @returns {void}\n */\n function processSubChild(createElement, fieldData, fields, ds, options, element, level) {\n // Get SubList\n var subDS = fieldData[fields.child] || [];\n var hasChildren = fieldData[fields.hasChildren];\n //Create Sub child\n if (subDS.length) {\n hasChildren = true;\n element.classList.add(cssClass.hasChild);\n if (options.processSubChild) {\n var subLi = createListFromJson(createElement, subDS, options, ++level);\n element.appendChild(subLi);\n }\n }\n // Create expand and collapse node\n if (!!options.expandCollapse && hasChildren && !options.template) {\n element.firstElementChild.classList.add(cssClass.iconWrapper);\n var expandElement = options.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', {\n className: 'e-icons ' + options.expandIconClass\n })], element.querySelector('.' + cssClass.textContent));\n }\n }\n /**\n * Generates a single-level LI (list item) element based on the provided item and field data.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {string | Object | number} item - The item data.\n * @param {Object} fieldData - Field data mapped from the item.\n * @param {FieldsMapping} [fields] - Field mappings.\n * @param {string} [className] - Optional class name to add to the created LI element.\n * @param {HTMLElement[]} [innerElements] - Optional array of inner elements to append to the LI element.\n * @param {boolean} [grpLI] - Indicates if the LI element is a group item.\n * @param {string} [id] - The ID of the LI element.\n * @param {number} [index] - The index of the LI element.\n * @param {ListBaseOptions} [options] - Optional ListBase options.\n * @returns {HTMLElement} - The generated LI element.\n */\n function generateSingleLevelLI(createElement, item, fieldData, fields, className, innerElements, grpLI, id, index, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var value = item;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number' && typeof item !== 'boolean') {\n dataSource = item;\n text = typeof fieldData[fields.text] === 'boolean' || typeof fieldData[fields.text] === 'number' ? fieldData[fields.text] : fieldData[fields.text] || '';\n value = fieldData[fields.value];\n }\n var elementID;\n if (!isNullOrUndefined(dataSource) && !isNullOrUndefined(fieldData[fields.id]) && fieldData[fields.id] !== '') {\n elementID = id;\n } else {\n elementID = id + '-' + index;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n id: elementID,\n attrs: ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ? {\n role: grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole\n } : {}\n });\n if (dataSource && Object.prototype.hasOwnProperty.call(fieldData, fields.enabled) && fieldData[fields.enabled].toString() === 'false') {\n li.classList.add(cssClass.disabled);\n }\n if (options && options.enableHtmlSanitizer) {\n text = SanitizeHtmlHelper.sanitize(text);\n }\n if (grpLI) {\n li.innerText = text;\n } else {\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n if (dataSource && Object.prototype.hasOwnProperty.call(fieldData, fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n if (innerElements.length && !curOpt.itemNavigable) {\n append(innerElements, li);\n }\n if (dataSource && (fieldData[fields.url] || fieldData[fields.urlAttributes] && fieldData[fields.urlAttributes].href)) {\n li.appendChild(anchorTag(createElement, dataSource, fields, text, innerElements, curOpt.itemNavigable));\n } else {\n if (innerElements.length && curOpt.itemNavigable) {\n append(innerElements, li);\n }\n li.appendChild(document.createTextNode(text));\n }\n }\n return li;\n }\n /**\n * Returns a set of CSS class names based on the provided module name.\n *\n * @param {string} moduleName - The name of the module.\n * @returns {ClassList} - The CSS class names associated with the module.\n */\n function getModuleClass(moduleName) {\n var moduleClass;\n // eslint-disable-next-line\n return moduleClass = {\n li: \"e-\" + moduleName + \"-item\",\n ul: \"e-\" + moduleName + \"-parent e-ul\",\n group: \"e-\" + moduleName + \"-group-item\",\n icon: \"e-\" + moduleName + \"-icon\",\n text: \"e-\" + moduleName + \"-text\",\n check: \"e-\" + moduleName + \"-check\",\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: \"e-\" + moduleName + \"-url\",\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: \"e-\" + moduleName + \"-img\",\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n };\n }\n /**\n * Creates an anchor tag (<a>) element based on the provided data source, fields, and text.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {object} dataSource - The data source containing URL-related fields.\n * @param {FieldsMapping} fields - Field mappings for the data source.\n * @param {string} text - The text content of the anchor tag.\n * @param {HTMLElement[]} innerElements - Optional array of inner elements to append to the anchor tag.\n * @param {boolean} isFullNavigation - Indicates whether the anchor tag should be for full navigation.\n * @returns {HTMLElement} The created anchor tag element.\n */\n function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation) {\n var fieldData = getFieldValues(dataSource, fields);\n var attr = {\n href: fieldData[fields.url]\n };\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.urlAttributes) && fieldData[fields.urlAttributes]) {\n merge(attr, fieldData[fields.urlAttributes]);\n attr.href = fieldData[fields.url] ? fieldData[fields.url] : fieldData[fields.urlAttributes].href;\n }\n var anchorTag;\n if (!isFullNavigation) {\n anchorTag = createElement('a', {\n className: cssClass.text + ' ' + cssClass.url,\n innerHTML: text\n });\n } else {\n anchorTag = createElement('a', {\n className: cssClass.text + ' ' + cssClass.url\n });\n var anchorWrapper = createElement('div', {\n className: cssClass.anchorWrap\n });\n if (innerElements && innerElements.length) {\n append(innerElements, anchorWrapper);\n }\n anchorWrapper.appendChild(document.createTextNode(text));\n append([anchorWrapper], anchorTag);\n }\n setAttribute(anchorTag, attr);\n return anchorTag;\n }\n /**\n * Generates an LI element based on the provided item and field data.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {string | Object | number} item - The item data.\n * @param {Object} fieldData - Field data mapped from the item.\n * @param {FieldsMapping} fields - Field mappings.\n * @param {string} [className] - Optional class name to add to the created LI element.\n * @param {ListBaseOptions} [options] - Optional ListBase options.\n * @param {*} [componentInstance] - Optional component instance.\n * @returns {HTMLElement} - The generated LI element.\n */\n function generateLI(createElement, item, fieldData, fields, className, options, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var uID;\n var grpLI;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number') {\n dataSource = item;\n text = fieldData[fields.text] || '';\n uID = isNullOrUndefined(fieldData['_id']) ? fieldData[fields.id] : fieldData['_id'];\n grpLI = Object.prototype.hasOwnProperty.call(item, 'isHeader') && item.isHeader ? true : false;\n }\n if (options && options.enableHtmlSanitizer) {\n text = SanitizeHtmlHelper.sanitize(text);\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ? {\n role: grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole\n } : {}\n });\n if (!isNullOrUndefined(uID) === true) {\n li.setAttribute('data-uid', uID);\n } else {\n li.setAttribute('data-uid', generateId());\n }\n if (grpLI && options && options.groupTemplate) {\n var compiledString = compileTemplate(options.groupTemplate);\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledElement = compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n } else {\n append(compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), li);\n }\n } else if (!grpLI && options && options.template) {\n var compiledString = compileTemplate(options.template);\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledElement = compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n } else {\n append(compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate), li);\n }\n } else {\n var innerDiv = createElement('div', {\n className: cssClass.textContent,\n attrs: ariaAttributes.wrapperRole !== '' ? {\n role: ariaAttributes.wrapperRole\n } : {}\n });\n if (dataSource && (fieldData[fields.url] || fieldData[fields.urlAttributes] && fieldData[fields.urlAttributes].href)) {\n innerDiv.appendChild(anchorTag(createElement, dataSource, fields, text, null, curOpt.itemNavigable));\n } else {\n var element = createElement('span', {\n className: cssClass.text,\n attrs: ariaAttributes.itemText !== '' ? {\n role: ariaAttributes.itemText\n } : {}\n });\n if (options && options.enableHtmlSanitizer) {\n element.innerText = text;\n } else {\n element.innerHTML = text;\n }\n innerDiv.appendChild(element);\n }\n li.appendChild(innerDiv);\n }\n return li;\n }\n /**\n * Returns UL element based on the given LI element.\n *\n * @param {Function} createElement - Function for creating elements.\n *\n * @param {HTMLElement[]} liElement - Specifies array of LI element.\n *\n * @param {string} [className] - Specifies class name that need to be added in UL element.\n *\n * @param {ListBaseOptions} [options] - Specifies ListBase options.\n *\n * @returns {HTMLElement} - The created UL element.\n */\n function generateUL(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n cssClass = getModuleClass(curOpt.moduleName);\n var ulElement = createElement('ul', {\n className: cssClass.ul + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: ariaAttributes.listRole !== '' ? {\n role: ariaAttributes.listRole\n } : {}\n });\n append(liElement, ulElement);\n return ulElement;\n }\n ListBase.generateUL = generateUL;\n /**\n * Returns LI element with additional DIV tag based on the given LI element.\n *\n * @param {Function} createElement - Function for creating elements.\n *\n * @param {liElement} liElement - Specifies LI element.\n *\n * @param {string} [className] - Specifies class name that need to be added in created DIV element.\n *\n * @param {ListBaseOptions} [options] - Specifies ListBase options.\n *\n * @returns {HTMLElement} - The modified LI element.\n */\n function generateIcon(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var expandElement = curOpt.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', {\n className: 'e-icons ' + curOpt.expandIconClass + ' ' + (isNullOrUndefined(className) ? '' : className)\n })], liElement.querySelector('.' + cssClass.textContent));\n return liElement;\n }\n ListBase.generateIcon = generateIcon;\n})(ListBase || (ListBase = {}));\n/**\n * Used to get dataSource item from complex data using fields.\n *\n * @param {Object} dataItem - Specifies an JSON or String data.\n *\n * @param {FieldsMapping} fields - Fields that are mapped from the dataSource.\n * @returns {Object|string|number} - The retrieved field values.\n */\nexport function getFieldValues(dataItem, fields) {\n var fieldData = {};\n if (isNullOrUndefined(dataItem) || typeof dataItem === 'string' || typeof dataItem === 'number' || !isNullOrUndefined(dataItem.isHeader)) {\n return dataItem;\n } else {\n for (var _i = 0, _a = Object.keys(fields); _i < _a.length; _i++) {\n var field = _a[_i];\n var dataField = fields[\"\" + field];\n var value = !isNullOrUndefined(dataField) && typeof dataField === 'string' ? getValue(dataField, dataItem) : undefined;\n if (!isNullOrUndefined(value)) {\n fieldData[\"\" + dataField] = value;\n }\n }\n }\n return fieldData;\n}\n/**\n * Compiles a template string or function into a compiled function.\n *\n * @param {string | Function} template - The template string or function to compile.\n * @returns {Function | undefined} - The compiled function, or undefined if the input is false.\n */\nfunction compileTemplate(template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelector(template)) {\n return compile(document.querySelector(template).innerHTML.trim());\n } else {\n return compile(template);\n }\n } catch (e) {\n return compile(template);\n }\n }\n return undefined;\n}","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};\nimport { merge, formatUnit, isNullOrUndefined, append, detach, extend } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, prepend, closest, remove } from '@syncfusion/ej2-base';\nimport { Component, EventHandler, Property, Complex, Event } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty } from '@syncfusion/ej2-base';\nimport { compile, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Animation, rippleEffect, Touch, animationMode } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { ListBase, getFieldValues } from '../common/list-base';\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// Effect Configuration Effect[] = [fromViewBackward,fromViewForward,toViewBackward,toviewForward];\nvar effectsConfig = {\n 'None': [],\n 'SlideLeft': ['SlideRightOut', 'SlideLeftOut', 'SlideLeftIn', 'SlideRightIn'],\n 'SlideDown': ['SlideTopOut', 'SlideBottomOut', 'SlideBottomIn', 'SlideTopIn'],\n 'Zoom': ['FadeOut', 'FadeZoomOut', 'FadeZoomIn', 'FadeIn'],\n 'Fade': ['FadeOut', 'FadeOut', 'FadeIn', 'FadeIn']\n};\nvar effectsRTLConfig = {\n 'None': [],\n 'SlideLeft': ['SlideLeftOut', 'SlideRightOut', 'SlideRightIn', 'SlideLeftIn'],\n 'SlideDown': ['SlideBottomOut', 'SlideTopOut', 'SlideTopIn', 'SlideBottomIn'],\n 'Zoom': ['FadeZoomOut', 'FadeOut', 'FadeIn', 'FadeZoomIn'],\n 'Fade': ['FadeOut', 'FadeOut', 'FadeIn', 'FadeIn']\n};\n// don't use space in classnames.\nexport var classNames = {\n root: 'e-listview',\n hover: 'e-hover',\n selected: 'e-active',\n focused: 'e-focused',\n parentItem: 'e-list-parent',\n listItem: 'e-list-item',\n listIcon: 'e-list-icon',\n textContent: 'e-text-content',\n listItemText: 'e-list-text',\n groupListItem: 'e-list-group-item',\n hasChild: 'e-has-child',\n view: 'e-view',\n header: 'e-list-header',\n headerText: 'e-headertext',\n headerTemplateText: 'e-headertemplate-text',\n text: 'e-text',\n disable: 'e-disabled',\n container: 'e-list-container',\n icon: 'e-icons',\n backIcon: 'e-icon-back',\n backButton: 'e-back-button',\n checkboxWrapper: 'e-checkbox-wrapper',\n checkbox: 'e-checkbox',\n checked: 'e-check',\n checklist: 'e-checklist',\n checkboxIcon: 'e-frame',\n checkboxRight: 'e-checkbox-right',\n checkboxLeft: 'e-checkbox-left',\n listviewCheckbox: 'e-listview-checkbox',\n itemCheckList: 'e-checklist',\n virtualElementContainer: 'e-list-virtualcontainer'\n};\nvar LISTVIEW_TEMPLATE_PROPERTY = 'Template';\nvar LISTVIEW_GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar LISTVIEW_HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar swipeVelocity = 0.5;\n/**\n * Represents the field settings of the ListView.\n */\nvar FieldSettings = /** @class */function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('id')], FieldSettings.prototype, \"id\", void 0);\n __decorate([Property('text')], FieldSettings.prototype, \"text\", void 0);\n __decorate([Property('isChecked')], FieldSettings.prototype, \"isChecked\", void 0);\n __decorate([Property('isVisible')], FieldSettings.prototype, \"isVisible\", void 0);\n __decorate([Property('enabled')], FieldSettings.prototype, \"enabled\", void 0);\n __decorate([Property('iconCss')], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([Property('child')], FieldSettings.prototype, \"child\", void 0);\n __decorate([Property('tooltip')], FieldSettings.prototype, \"tooltip\", void 0);\n __decorate([Property('groupBy')], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([Property('text')], FieldSettings.prototype, \"sortBy\", void 0);\n __decorate([Property('htmlAttributes')], FieldSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([Property('tableName')], FieldSettings.prototype, \"tableName\", void 0);\n return FieldSettings;\n}(ChildProperty);\nexport { FieldSettings };\n/**\n * Represents the EJ2 ListView control.\n * ```html\n * <div id=\"listview\">\n * <ul>\n * <li>Favorite</li>\n * <li>Documents</li>\n * <li>Downloads</li>\n * </ul>\n * </div>\n * ```\n * ```typescript\n * var listviewObject = new ListView({});\n * listviewObject.appendTo(\"#listview\");\n * ```\n */\nvar ListView = /** @class */function (_super) {\n __extends(ListView, _super);\n /**\n * Constructor for creating the widget\n *\n * @param options\n *\n * @param element\n */\n function ListView(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousSelectedItems = [];\n _this.hiddenItems = [];\n _this.enabledItems = [];\n _this.disabledItems = [];\n return _this;\n }\n /**\n * @param newProp\n *\n * @param oldProp\n *\n * @private\n */\n ListView.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'htmlAttributes':\n this.setHTMLAttribute();\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'enable':\n this.setEnable();\n break;\n case 'width':\n case 'height':\n this.setSize();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'fields':\n this.listBaseOption.fields = this.fields.properties;\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n } else {\n this.reRender();\n }\n break;\n case 'headerTitle':\n if (!this.curDSLevel.length) {\n this.header(this.headerTitle, false, 'header');\n }\n break;\n case 'query':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n } else {\n this.reRender();\n }\n break;\n case 'showHeader':\n this.header(this.headerTitle, false, 'header');\n break;\n case 'enableVirtualization':\n if (!isNullOrUndefined(this.contentContainer)) {\n detach(this.contentContainer);\n }\n this.refresh();\n break;\n case 'showCheckBox':\n case 'checkBoxPosition':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n } else {\n this.setCheckbox();\n }\n break;\n case 'dataSource':\n this.previousScrollTop = this.element.scrollTop;\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n } else {\n this.reRender();\n }\n break;\n case 'sortOrder':\n case 'template':\n if (!this.enableVirtualization) {\n this.refresh();\n }\n break;\n case 'showIcon':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n } else {\n this.listBaseOption.showIcon = this.showIcon;\n this.curViewDS = this.getSubDS();\n this.resetCurrentList();\n }\n break;\n default:\n break;\n }\n }\n };\n // Model Changes\n ListView.prototype.setHTMLAttribute = function () {\n if (!isNullOrUndefined(this.htmlAttributes) && Object.keys(this.htmlAttributes).length) {\n attributes(this.element, this.htmlAttributes);\n }\n };\n ListView.prototype.setCSSClass = function (oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' ').filter(function (css) {\n return css;\n }));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' ').filter(function (css) {\n return css;\n }));\n }\n };\n ListView.prototype.setSize = function () {\n this.element.style.height = formatUnit(this.height);\n this.element.style.width = formatUnit(this.width);\n this.isWindow = this.element.clientHeight ? false : true;\n };\n ListView.prototype.setEnable = function () {\n this.enableElement(this.element, this.enable);\n };\n ListView.prototype.setEnableRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n } else {\n this.element.classList.remove('e-rtl');\n }\n };\n ListView.prototype.enableElement = function (element, isEnabled) {\n if (isEnabled) {\n element.classList.remove(classNames.disable);\n } else {\n element.classList.add(classNames.disable);\n }\n };\n // Support Component Functions\n ListView.prototype.header = function (text, showBack, prop) {\n if (this.headerEle === undefined && this.showHeader) {\n this.headerEle = this.createElement('div', {\n className: classNames.header\n });\n var innerHeaderEle = this.createElement('span', {\n className: classNames.headerText\n });\n if (this.enableHtmlSanitizer) {\n this.setProperties({\n headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle)\n }, true);\n innerHeaderEle.innerText = this.headerTitle;\n } else {\n innerHeaderEle.innerHTML = this.headerTitle;\n }\n var textEle = this.createElement('div', {\n className: classNames.text,\n innerHTML: innerHeaderEle.outerHTML\n });\n var hedBackButton = this.createElement('div', {\n className: classNames.icon + ' ' + classNames.backIcon + ' ' + classNames.backButton,\n attrs: {\n style: 'display:none;'\n }\n });\n this.headerEle.appendChild(hedBackButton);\n this.headerEle.appendChild(textEle);\n if (this.headerTemplate) {\n var compiledString = compile(this.headerTemplate);\n var headerTemplateEle = this.createElement('div', {\n className: classNames.headerTemplateText\n });\n var compiledElement = compiledString({}, this, prop, this.LISTVIEW_HEADERTEMPLATE_ID, null, null, this.headerEle);\n if (compiledElement) {\n append(compiledElement, headerTemplateEle);\n }\n append([headerTemplateEle], this.headerEle);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n }\n if (this.headerTemplate && this.headerTitle) {\n textEle.classList.add('header');\n }\n this.element.classList.add('e-has-header');\n prepend([this.headerEle], this.element);\n } else if (this.headerEle) {\n if (this.showHeader) {\n this.headerEle.style.display = '';\n var textEle = this.headerEle.querySelector('.' + classNames.headerText);\n var hedBackButton = this.headerEle.querySelector('.' + classNames.backIcon);\n if (this.enableHtmlSanitizer) {\n text = SanitizeHtmlHelper.sanitize(text);\n }\n textEle.innerHTML = text;\n if (this.headerTemplate && showBack) {\n textEle.parentElement.classList.remove('header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('nested-header');\n }\n if (this.headerTemplate && !showBack) {\n textEle.parentElement.classList.add('header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.remove('nested-header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('header');\n }\n if (showBack === true) {\n hedBackButton.style.display = '';\n } else {\n hedBackButton.style.display = 'none';\n }\n } else {\n this.headerEle.style.display = 'none';\n }\n }\n };\n // Animation Related Functions\n ListView.prototype.switchView = function (fromView, toView, reverse) {\n var _this = this;\n if (fromView && toView) {\n var fPos_1 = fromView.style.position;\n var overflow_1 = this.element.style.overflow !== 'hidden' ? this.element.style.overflow : '';\n fromView.style.position = 'absolute';\n fromView.classList.add('e-view');\n var anim = void 0;\n var duration = this.animation.duration;\n if (this.animation.effect) {\n anim = this.enableRtl ? effectsRTLConfig[this.animation.effect] : effectsConfig[this.animation.effect];\n } else {\n var slideLeft = 'SlideLeft';\n anim = effectsConfig[\"\" + slideLeft];\n reverse = this.enableRtl;\n duration = 0;\n }\n this.element.style.overflow = 'hidden';\n this.aniObj.animate(fromView, {\n name: reverse === true ? anim[0] : anim[1],\n duration: duration === 0 && animationMode === 'Enable' ? 400 : duration,\n timingFunction: this.animation.easing,\n end: function () {\n fromView.style.display = 'none';\n _this.element.style.overflow = overflow_1;\n fromView.style.position = fPos_1;\n fromView.classList.remove('e-view');\n }\n });\n toView.style.display = '';\n this.aniObj.animate(toView, {\n name: reverse === true ? anim[2] : anim[3],\n duration: duration === 0 && animationMode === 'Enable' ? 400 : duration,\n timingFunction: this.animation.easing,\n end: function () {\n _this.trigger('actionComplete');\n }\n });\n this.curUL = toView;\n }\n };\n ListView.prototype.preRender = function () {\n if (this.template) {\n try {\n if (typeof this.template !== 'function' && document.querySelectorAll(this.template).length) {\n this.setProperties({\n template: document.querySelector(this.template).innerHTML.trim()\n }, true);\n }\n } catch (e) {\n compile(this.template);\n }\n }\n this.listBaseOption = {\n template: this.template,\n headerTemplate: this.headerTemplate,\n groupTemplate: this.groupTemplate,\n expandCollapse: true,\n listClass: '',\n ariaAttributes: {\n itemRole: 'listitem',\n listRole: 'list',\n itemText: '',\n groupItemRole: 'presentation',\n wrapperRole: 'presentation'\n },\n fields: this.fields.properties,\n sortOrder: this.sortOrder,\n showIcon: this.showIcon,\n itemCreated: this.renderCheckbox.bind(this),\n templateID: \"\" + this.element.id + LISTVIEW_TEMPLATE_PROPERTY,\n groupTemplateID: \"\" + this.element.id + LISTVIEW_GROUPTEMPLATE_PROPERTY,\n enableHtmlSanitizer: this.enableHtmlSanitizer\n };\n this.initialization();\n };\n ListView.prototype.initialization = function () {\n this.curDSLevel = [];\n this.animateOptions = {};\n this.curViewDS = [];\n this.currentLiElements = [];\n this.isNestedList = false;\n this.selectedData = [];\n this.selectedId = this.enablePersistence ? this.selectedId : [];\n this.LISTVIEW_TEMPLATE_ID = \"\" + this.element.id + LISTVIEW_TEMPLATE_PROPERTY;\n this.LISTVIEW_GROUPTEMPLATE_ID = \"\" + this.element.id + LISTVIEW_GROUPTEMPLATE_PROPERTY;\n this.LISTVIEW_HEADERTEMPLATE_ID = \"\" + this.element.id + LISTVIEW_HEADERTEMPLATE_PROPERTY;\n this.aniObj = new Animation(this.animateOptions);\n this.removeElement(this.curUL);\n this.removeElement(this.ulElement);\n this.removeElement(this.headerEle);\n this.removeElement(this.contentContainer);\n this.curUL = this.ulElement = this.liCollection = this.headerEle = this.contentContainer = undefined;\n };\n ListView.prototype.renderCheckbox = function (args) {\n var _this = this;\n if (args.item.classList.contains(classNames.hasChild)) {\n this.isNestedList = true;\n }\n if (this.showCheckBox && args.item.classList.contains(classNames.listItem)) {\n var fieldData_1;\n var checkboxElement = createCheckBox(this.createElement, false, {\n checked: false,\n enableRtl: this.enableRtl,\n cssClass: classNames.listviewCheckbox\n });\n checkboxElement.setAttribute('role', 'checkbox');\n var frameElement_1 = checkboxElement.querySelector('.' + classNames.checkboxIcon);\n args.item.classList.add(classNames.itemCheckList);\n args.item.firstElementChild.classList.add(classNames.checkbox);\n if (typeof this.dataSource[0] !== 'string' && typeof this.dataSource[0] !== 'number') {\n fieldData_1 = getFieldValues(args.curData, this.listBaseOption.fields);\n if (this.enablePersistence && !isNullOrUndefined(this.selectedId)) {\n var index = this.selectedId.findIndex(function (e) {\n return e === fieldData_1[_this.listBaseOption.fields.id].toString();\n });\n if (index !== -1) {\n this.checkInternally(args, checkboxElement);\n }\n } else if (fieldData_1[this.listBaseOption.fields.isChecked]) {\n this.checkInternally(args, checkboxElement);\n }\n } else if ((typeof this.dataSource[0] === 'string' || typeof this.dataSource[0] === 'number') && this.selectedData.indexOf(args.text) !== -1) {\n this.checkInternally(args, checkboxElement);\n }\n checkboxElement.setAttribute('aria-checked', frameElement_1.classList.contains(classNames.checked) ? 'true' : 'false');\n checkboxElement.setAttribute('aria-label', args.text);\n if (this.checkBoxPosition === 'Left') {\n checkboxElement.classList.add(classNames.checkboxLeft);\n args.item.firstElementChild.classList.add(classNames.checkboxLeft);\n args.item.firstElementChild.insertBefore(checkboxElement, args.item.firstElementChild.childNodes[0]);\n } else {\n checkboxElement.classList.add(classNames.checkboxRight);\n args.item.firstElementChild.classList.add(classNames.checkboxRight);\n args.item.firstElementChild.appendChild(checkboxElement);\n }\n this.currentLiElements.push(args.item);\n if (this.checkBoxPosition === 'Left') {\n this.virtualCheckBox = args.item.firstElementChild.children[0];\n } else {\n this.virtualCheckBox = args.item.firstElementChild.lastElementChild;\n }\n }\n };\n ListView.prototype.checkInternally = function (args, checkboxElement) {\n args.item.classList.add(classNames.selected);\n checkboxElement.querySelector('.' + classNames.checkboxIcon).classList.add(classNames.checked);\n checkboxElement.setAttribute('aria-checked', 'true');\n };\n /**\n * Checks the specific list item by passing the unchecked fields as an argument to this method.\n *\n * @param {Fields | HTMLElement | Element} item - It accepts Fields or HTML list element as an argument.\n */\n ListView.prototype.checkItem = function (item) {\n this.toggleCheckBase(item, true);\n };\n ListView.prototype.toggleCheckBase = function (item, checked) {\n if (this.showCheckBox) {\n var liElement = item;\n if (item instanceof Object && item.constructor !== HTMLLIElement) {\n liElement = this.getLiFromObjOrElement(item);\n }\n if (!isNullOrUndefined(liElement)) {\n var checkboxIcon = liElement.querySelector('.' + classNames.checkboxIcon);\n if (checked === true) {\n liElement.classList.add(classNames.selected);\n } else {\n liElement.classList.remove(classNames.selected);\n }\n if (checked === true) {\n checkboxIcon.classList.add(classNames.checked);\n } else {\n checkboxIcon.classList.remove(classNames.checked);\n }\n checkboxIcon.parentElement.setAttribute('aria-checked', checked ? 'true' : 'false');\n }\n this.setSelectedItemData(liElement);\n this.updateSelectedId();\n }\n };\n /**\n * Uncheck the specific list item by passing the checked fields as an argument to this method.\n *\n * @param {Fields | HTMLElement | Element} item - It accepts Fields or HTML list element as an argument.\n */\n ListView.prototype.uncheckItem = function (item) {\n this.toggleCheckBase(item, false);\n };\n /**\n * Checks all the unchecked items in the ListView.\n */\n ListView.prototype.checkAllItems = function () {\n this.toggleAllCheckBase(true);\n };\n /**\n * Uncheck all the checked items in ListView.\n */\n ListView.prototype.uncheckAllItems = function () {\n this.toggleAllCheckBase(false);\n };\n ListView.prototype.toggleAllCheckBase = function (checked) {\n if (this.showCheckBox) {\n for (var i = 0; i < this.liCollection.length; i++) {\n var checkIcon = this.liCollection[i].querySelector('.' + classNames.checkboxIcon);\n if (checkIcon) {\n if (checked) {\n if (!checkIcon.classList.contains(classNames.checked)) {\n this.checkItem(this.liCollection[i]);\n }\n } else {\n if (checkIcon.classList.contains(classNames.checked)) {\n this.uncheckItem(this.liCollection[i]);\n }\n }\n }\n }\n if (this.enableVirtualization) {\n this.virtualizationModule.checkedItem(checked);\n }\n this.updateSelectedId();\n }\n };\n ListView.prototype.setCheckbox = function () {\n if (this.showCheckBox) {\n var liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.listItem));\n var args = {\n item: undefined,\n curData: undefined,\n dataSource: undefined,\n fields: undefined,\n options: undefined,\n text: ''\n };\n for (var i = 0; i < liCollection.length; i++) {\n var element = liCollection[i];\n args.item = element;\n args.curData = this.getItemData(element);\n if (element.querySelector('.' + classNames.checkboxWrapper)) {\n this.removeElement(element.querySelector('.' + classNames.checkboxWrapper));\n }\n this.renderCheckbox(args);\n if (args.item.classList.contains(classNames.selected)) {\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n }\n }\n } else {\n var liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.itemCheckList));\n for (var i = 0; i < liCollection.length; i++) {\n var element = liCollection[i];\n element.classList.remove(classNames.selected);\n element.firstElementChild.classList.remove(classNames.checkbox);\n this.removeElement(element.querySelector('.' + classNames.checkboxWrapper));\n }\n if (this.selectedItems) {\n this.selectedItems.item.classList.add(classNames.selected);\n }\n }\n };\n /**\n * Refresh the height of the list item only on enabling the virtualization property.\n */\n ListView.prototype.refreshItemHeight = function () {\n if (this.virtualizationModule) {\n this.virtualizationModule.refreshItemHeight();\n }\n };\n ListView.prototype.handleCheckboxState = function (li, checkIcon, checkboxElement, isCheckedBefore, isFocusedBefore, eventArgs, isSetCheckboxLI, textAreaFocus) {\n this.trigger('select', eventArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n if (isSetCheckboxLI ? isCheckedBefore : !isCheckedBefore) {\n checkIcon.classList.add(classNames.checked);\n li.classList.add(classNames.selected);\n } else {\n checkIcon.classList.remove(classNames.checked);\n li.classList.remove(classNames.selected);\n }\n checkboxElement.setAttribute('aria-checked', isSetCheckboxLI ? isCheckedBefore ? 'true' : 'false' : isCheckedBefore ? 'false' : 'true');\n merge(eventArgs, {\n isChecked: checkIcon.classList.contains(classNames.checked)\n });\n if (isFocusedBefore) {\n li.classList.remove(classNames.focused);\n if (textAreaFocus) {\n textAreaFocus.classList.remove('e-focused');\n }\n }\n }\n });\n };\n ListView.prototype.clickHandler = function (e) {\n if (Array.isArray(this.dataSource) && this.dataSource.length === 0) {\n return;\n }\n var target = e.target;\n this.targetElement = target;\n var classList = target.classList;\n var closestElement;\n if (classList.contains(classNames.backIcon) || classList.contains(classNames.headerText)) {\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n } else {\n var li = closest(target.parentNode, '.' + classNames.listItem);\n if (li === null) {\n li = target;\n }\n this.removeFocus();\n if (this.enable && this.showCheckBox && this.isValidLI(li)) {\n if (e.target.classList.contains(classNames.checkboxIcon)) {\n li.classList.add(classNames.focused);\n if (isNullOrUndefined(li.querySelector('.' + classNames.checked))) {\n var args = {\n curData: undefined,\n dataSource: undefined,\n fields: undefined,\n options: undefined,\n text: undefined,\n item: li\n };\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n } else {\n this.uncheckItem(li);\n li.classList.add(classNames.focused);\n }\n if (this.enableVirtualization) {\n this.virtualizationModule.setCheckboxLI(li, e);\n }\n if (e) {\n var eventArgs = this.selectEventData(li, e);\n var checkIcon = li.querySelector('.' + classNames.checkboxIcon);\n merge(eventArgs, {\n isChecked: checkIcon.classList.contains(classNames.checked)\n });\n var checkboxElement = li.querySelector('.' + classNames.checkboxWrapper);\n var isCheckedBefore = checkIcon.classList.contains(classNames.checked);\n var isFocusedBefore = li.classList.contains(classNames.focused);\n this.handleCheckboxState(li, checkIcon, checkboxElement, isCheckedBefore, isFocusedBefore, eventArgs, false);\n }\n } else if (li.classList.contains(classNames.hasChild)) {\n this.removeHover();\n this.removeSelect();\n this.removeSelect(li);\n this.setSelectLI(li, e);\n li.classList.remove(classNames.selected);\n } else {\n this.setCheckboxLI(li, e);\n if (target.nodeName === 'INPUT' || target.nodeName === 'TEXTAREA') {\n target.classList.add('e-focused');\n this.targetElement = target;\n }\n }\n } else {\n this.setSelectLI(li, e);\n if (target.nodeName === 'INPUT' || target.nodeName === 'TEXTAREA') {\n target.classList.add('e-focused');\n this.targetElement = target;\n }\n }\n closestElement = closest(e.target, 'li');\n if (!isNullOrUndefined(closestElement)) {\n if (closestElement.classList.contains('e-has-child') && !e.target.parentElement.classList.contains('e-listview-checkbox')) {\n closestElement.classList.add(classNames.disable);\n }\n }\n }\n this.updateSelectedId();\n };\n ListView.prototype.removeElement = function (element) {\n return element && element.parentNode && element.parentNode.removeChild(element);\n };\n ListView.prototype.hoverHandler = function (e) {\n var curLi = closest(e.target.parentNode, '.' + classNames.listItem);\n this.setHoverLI(curLi);\n };\n ListView.prototype.leaveHandler = function () {\n this.removeHover();\n };\n ListView.prototype.homeKeyHandler = function (e, end) {\n e.preventDefault();\n if (Object.keys(this.dataSource).length && this.curUL) {\n var li = this.curUL.querySelectorAll('.' + classNames.listItem);\n var focusedElement = this.curUL.querySelector('.' + classNames.focused) || this.curUL.querySelector('.' + classNames.selected);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n focusedElement.classList.remove(classNames.selected);\n }\n }\n var index = !end ? 0 : li.length - 1;\n if (li[index].classList.contains(classNames.hasChild) || this.showCheckBox) {\n li[index].classList.add(classNames.focused);\n } else {\n this.setSelectLI(li[index], e);\n }\n if (li[index]) {\n this.element.setAttribute('aria-activedescendant', li[index].id.toString());\n } else {\n this.element.removeAttribute('aria-activedescendant');\n }\n }\n };\n ListView.prototype.onArrowKeyDown = function (e, prev) {\n var siblingLI;\n var li;\n var hasChild = !isNullOrUndefined(this.curUL.querySelector('.' + classNames.hasChild)) ? true : false;\n if (hasChild || this.showCheckBox) {\n li = this.curUL.querySelector('.' + classNames.focused) || this.curUL.querySelector('.' + classNames.selected);\n siblingLI = ListBase.getSiblingLI(this.curUL.querySelectorAll('.' + classNames.listItem), li, prev);\n if (!isNullOrUndefined(siblingLI)) {\n if (li) {\n li.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n li.classList.remove(classNames.selected);\n }\n }\n if (siblingLI.classList.contains(classNames.hasChild) || this.showCheckBox) {\n siblingLI.classList.add(classNames.focused);\n } else {\n this.setSelectLI(siblingLI, e);\n }\n }\n } else {\n li = this.curUL.querySelector('.' + classNames.selected);\n siblingLI = ListBase.getSiblingLI(this.curUL.querySelectorAll('.' + classNames.listItem), li, prev);\n this.setSelectLI(siblingLI, e);\n }\n if (siblingLI) {\n this.element.setAttribute('aria-activedescendant', siblingLI.id.toString());\n } else {\n this.element.removeAttribute('aria-activedescendant');\n }\n return siblingLI;\n };\n ListView.prototype.arrowKeyHandler = function (e, prev) {\n var _this = this;\n e.preventDefault();\n if (Object.keys(this.dataSource).length && this.curUL) {\n var siblingLI = this.onArrowKeyDown(e, prev);\n var elementTop = this.element.getBoundingClientRect().top;\n var elementHeight = this.element.getBoundingClientRect().height;\n var firstItemBounds = this.curUL.querySelector('.' + classNames.listItem).getBoundingClientRect();\n var heightDiff = void 0;\n var groupItemBounds = void 0;\n if (this.fields.groupBy) {\n groupItemBounds = this.curUL.querySelector('.' + classNames.groupListItem).getBoundingClientRect();\n }\n if (siblingLI) {\n var siblingTop = siblingLI.getBoundingClientRect().top;\n var siblingHeight = siblingLI.getBoundingClientRect().height;\n if (!prev) {\n var height = this.isWindow ? window.innerHeight : elementHeight;\n heightDiff = this.isWindow ? siblingTop + siblingHeight : siblingTop - elementTop + siblingHeight;\n if (heightDiff > height) {\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + (heightDiff - height));\n } else {\n this.element.scrollTop = this.element.scrollTop + (heightDiff - height);\n }\n }\n } else {\n heightDiff = this.isWindow ? siblingTop : siblingTop - elementTop;\n if (heightDiff < 0) {\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + heightDiff);\n } else {\n this.element.scrollTop = this.element.scrollTop + heightDiff;\n }\n }\n }\n } else if (this.enableVirtualization && prev && this.virtualizationModule.uiFirstIndex) {\n this.onUIScrolled = function () {\n _this.onArrowKeyDown(e, prev);\n _this.onUIScrolled = undefined;\n };\n heightDiff = this.virtualizationModule.listItemHeight;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset - heightDiff);\n } else {\n this.element.scrollTop = this.element.scrollTop - heightDiff;\n }\n } else if (prev) {\n if (this.showHeader && this.headerEle) {\n var topHeight = groupItemBounds ? groupItemBounds.top : firstItemBounds.top;\n var headerBounds = this.headerEle.getBoundingClientRect();\n heightDiff = headerBounds.top < 0 ? headerBounds.height - topHeight : 0;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset - heightDiff);\n } else {\n this.element.scrollTop = 0;\n }\n } else if (this.fields.groupBy) {\n heightDiff = this.isWindow ? groupItemBounds.top < 0 ? groupItemBounds.top : 0 : elementTop - firstItemBounds.top + groupItemBounds.height;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + heightDiff);\n } else {\n this.element.scrollTop = this.element.scrollTop - heightDiff;\n }\n }\n }\n }\n };\n ListView.prototype.enterKeyHandler = function (e) {\n if (Object.keys(this.dataSource).length && this.curUL) {\n var hasChild = !isNullOrUndefined(this.curUL.querySelector('.' + classNames.hasChild)) ? true : false;\n var li = this.curUL.querySelector('.' + classNames.focused);\n if (hasChild && li) {\n li.classList.remove(classNames.focused);\n if (this.showCheckBox) {\n this.removeSelect();\n this.removeSelect(li);\n this.removeHover();\n }\n this.setSelectLI(li, e);\n }\n }\n };\n ListView.prototype.spaceKeyHandler = function (e) {\n if (this.enable && this.showCheckBox && Object.keys(this.dataSource).length && this.curUL) {\n e.preventDefault();\n var li = this.curUL.querySelector('.' + classNames.focused);\n var checkboxElement = void 0;\n var checkIcon = void 0;\n if (!isNullOrUndefined(li) && isNullOrUndefined(li.querySelector('.' + classNames.checked))) {\n var args = {\n curData: undefined,\n dataSource: undefined,\n fields: undefined,\n options: undefined,\n text: undefined,\n item: li\n };\n checkboxElement = args.item.querySelector('.' + classNames.checkboxWrapper);\n this.checkInternally(args, checkboxElement);\n checkIcon = checkboxElement.querySelector('.' + classNames.checkboxIcon + '.' + classNames.icon);\n } else {\n this.uncheckItem(li);\n }\n var eventArgs = this.selectEventData(li, e);\n merge(eventArgs, {\n isChecked: checkIcon ? checkIcon.classList.contains(classNames.checked) : false\n });\n if (!isNullOrUndefined(li)) {\n var cbElement = li.querySelector('.' + classNames.checkboxWrapper);\n var checkboxIcon = li.querySelector('.' + classNames.checkboxIcon);\n var isCheckedBefore = checkboxIcon.classList.contains(classNames.checked);\n var isFocusedBefore = li.classList.contains(classNames.focused);\n this.handleCheckboxState(li, checkboxIcon, cbElement, isCheckedBefore, isFocusedBefore, eventArgs, false);\n }\n this.updateSelectedId();\n }\n };\n ListView.prototype.keyActionHandler = function (e) {\n switch (e.keyCode) {\n case 36:\n this.homeKeyHandler(e);\n break;\n case 35:\n this.homeKeyHandler(e, true);\n break;\n case 40:\n this.arrowKeyHandler(e);\n break;\n case 38:\n this.arrowKeyHandler(e, true);\n break;\n case 13:\n this.enterKeyHandler(e);\n break;\n case 8:\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n break;\n case 32:\n if (isNullOrUndefined(this.targetElement) || !this.targetElement.classList.contains('e-focused')) {\n this.spaceKeyHandler(e);\n }\n break;\n }\n };\n ListView.prototype.swipeActionHandler = function (e) {\n if (e.swipeDirection === 'Right' && e.velocity > swipeVelocity && e.originalEvent.type === 'touchend') {\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n }\n };\n ListView.prototype.focusout = function () {\n if (Object.keys(this.dataSource).length && this.curUL) {\n var focusedElement = this.curUL.querySelector('.' + classNames.focused);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n if (!this.showCheckBox && !isNullOrUndefined(this.selectedLI)) {\n this.selectedLI.classList.add(classNames.selected);\n }\n }\n }\n };\n ListView.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'keydown', this.keyActionHandler, this);\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'mouseout', this.leaveHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusout, this);\n this.touchModule = new Touch(this.element, {\n swipe: this.swipeActionHandler.bind(this)\n });\n if (!isNullOrUndefined(this.scroll)) {\n EventHandler.add(this.element, 'scroll', this.onListScroll, this);\n }\n };\n ListView.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'keydown', this.keyActionHandler);\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'mouseout', this.leaveHandler);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'mouseout', this.leaveHandler);\n EventHandler.remove(this.element, 'focusout', this.focusout);\n if (!isNullOrUndefined(this.scroll)) {\n EventHandler.remove(this.element, 'scroll', this.onListScroll);\n }\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n this.touchModule = null;\n };\n ListView.prototype.removeFocus = function () {\n var focusedLI = this.element.querySelectorAll('.' + classNames.focused);\n for (var _i = 0, focusedLI_1 = focusedLI; _i < focusedLI_1.length; _i++) {\n var ele = focusedLI_1[_i];\n ele.classList.remove(classNames.focused);\n }\n };\n ListView.prototype.removeHover = function () {\n var hoverLI = this.element.querySelector('.' + classNames.hover);\n if (hoverLI) {\n hoverLI.classList.remove(classNames.hover);\n }\n };\n ListView.prototype.removeSelect = function (li) {\n if (isNullOrUndefined(li)) {\n var selectedLI = this.element.querySelectorAll('.' + classNames.selected);\n for (var _i = 0, selectedLI_1 = selectedLI; _i < selectedLI_1.length; _i++) {\n var ele = selectedLI_1[_i];\n if (this.showCheckBox && ele.querySelector('.' + classNames.checked)) {\n continue;\n } else {\n ele.classList.remove(classNames.selected);\n }\n }\n } else {\n li.classList.remove(classNames.selected);\n }\n };\n ListView.prototype.isValidLI = function (li) {\n return li && li.classList.contains(classNames.listItem) && !li.classList.contains(classNames.groupListItem) && !li.classList.contains(classNames.disable);\n };\n ListView.prototype.setCheckboxLI = function (li, e) {\n if (this.isValidLI(li) && this.enable && this.showCheckBox) {\n if (this.curUL.querySelector('.' + classNames.focused)) {\n this.curUL.querySelector('.' + classNames.focused).classList.remove(classNames.focused);\n }\n var textAreaFocus = li.querySelector('textarea') || li.querySelector('input');\n li.classList.add(classNames.focused);\n if (!isNullOrUndefined(e)) {\n if (e.target === textAreaFocus) {\n textAreaFocus.classList.add('e-focused');\n }\n }\n var checkboxElement = li.querySelector('.' + classNames.checkboxWrapper);\n var checkIcon = checkboxElement.querySelector('.' + classNames.checkboxIcon + '.' + classNames.icon);\n this.removeHover();\n var isCheckedBefore = checkIcon.classList.contains(classNames.checked);\n var isFocusedBefore = li.classList.contains(classNames.focused);\n if (!isCheckedBefore) {\n checkIcon.classList.add(classNames.checked);\n li.classList.add(classNames.selected);\n } else {\n checkIcon.classList.remove(classNames.checked);\n li.classList.remove(classNames.selected);\n }\n checkboxElement.setAttribute('aria-checked', checkIcon.classList.contains(classNames.checked) ? 'true' : 'false');\n var eventArgs = this.selectEventData(li, e);\n merge(eventArgs, {\n isChecked: checkIcon.classList.contains(classNames.checked)\n });\n if (this.enableVirtualization) {\n this.virtualizationModule.setCheckboxLI(li, e);\n }\n this.handleCheckboxState(li, checkIcon, checkboxElement, isCheckedBefore, isFocusedBefore, eventArgs, true, textAreaFocus);\n this.setSelectedItemData(li);\n this.renderSubList(li);\n }\n };\n ListView.prototype.selectEventData = function (li, e) {\n var data = this.getItemData(li);\n var fieldData = getFieldValues(data, this.listBaseOption.fields);\n var selectedItem;\n if (!isNullOrUndefined(data) && typeof this.dataSource[0] === 'string' || typeof this.dataSource[0] === 'number') {\n selectedItem = {\n item: li,\n text: li && li.innerText.trim(),\n data: this.dataSource\n };\n } else {\n selectedItem = {\n item: li,\n text: fieldData && fieldData[this.listBaseOption.fields.text],\n data: data\n };\n }\n var eventArgs = {};\n merge(eventArgs, selectedItem);\n if (e) {\n merge(eventArgs, {\n isInteracted: true,\n event: e,\n cancel: false,\n index: this.curUL && Array.prototype.indexOf.call(this.curUL.children, li)\n });\n }\n return eventArgs;\n };\n ListView.prototype.setSelectedItemData = function (li) {\n var data = this.getItemData(li);\n var fieldData = getFieldValues(data, this.listBaseOption.fields);\n if (!isNullOrUndefined(data) && (typeof this.dataSource[0] === 'string' || typeof this.dataSource[0] === 'number')) {\n this.selectedItems = {\n item: li,\n text: li && li.innerText.trim(),\n data: this.dataSource\n };\n } else {\n this.selectedItems = {\n item: li,\n text: fieldData && fieldData[this.listBaseOption.fields.text],\n data: data\n };\n }\n };\n ListView.prototype.setSelectLI = function (li, e) {\n var _this = this;\n if (this.isValidLI(li) && !li.classList.contains(classNames.selected) && this.enable) {\n if (!this.showCheckBox) {\n this.removeSelect();\n }\n li.classList.add(classNames.selected);\n this.removeHover();\n this.setSelectedItemData(li);\n if (this.enableVirtualization) {\n this.virtualizationModule.setSelectLI(li, e);\n }\n var eventArgs = this.selectEventData(li, e);\n this.trigger('select', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.selectedLI = li;\n _this.renderSubList(li);\n } else {\n li.classList.remove(classNames.selected);\n _this.selectedLI = li;\n }\n });\n }\n };\n ListView.prototype.setHoverLI = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(classNames.hover) && this.enable) {\n var lastLi = this.element.querySelectorAll('.' + classNames.hover);\n if (lastLi && lastLi.length) {\n removeClass(lastLi, classNames.hover);\n }\n if (!li.classList.contains(classNames.selected) || this.showCheckBox) {\n li.classList.add(classNames.hover);\n }\n }\n };\n //Data Source Related Functions\n ListView.prototype.getSubDS = function () {\n var levelKeys = this.curDSLevel;\n if (levelKeys.length) {\n var ds = this.localData;\n for (var _i = 0, levelKeys_1 = levelKeys; _i < levelKeys_1.length; _i++) {\n var key = levelKeys_1[_i];\n var field = {};\n field[this.fields.id] = key;\n this.curDSJSON = this.findItemFromDS(ds, field);\n var fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);\n ds = this.curDSJSON ? fieldData[this.fields.child] : ds;\n }\n return ds;\n }\n return this.localData;\n };\n ListView.prototype.getItemData = function (li) {\n var dataSource = this.dataSource instanceof DataManager ? this.localData : this.dataSource;\n var fields = this.getElementUID(li);\n var curDS;\n if (isNullOrUndefined(this.element.querySelector('.' + classNames.hasChild)) && this.fields.groupBy) {\n curDS = this.curViewDS;\n } else {\n curDS = dataSource;\n }\n return this.findItemFromDS(curDS, fields);\n };\n ListView.prototype.findItemFromDS = function (dataSource, fields, parent) {\n var _this = this;\n var resultJSON;\n if (dataSource && dataSource.length && fields) {\n dataSource.some(function (data) {\n var fieldData = getFieldValues(data, _this.listBaseOption.fields);\n //(!(fid) || id === fid) && (!(ftext) || text === ftext) && (!!fid || !!ftext)\n if ((fields[_this.fields.id] || fields[_this.fields.text]) && (!fields[_this.fields.id] || (!isNullOrUndefined(fieldData[_this.fields.id]) && fieldData[_this.fields.id].toString()) === fields[_this.fields.id].toString()) && (!fields[_this.fields.text] || fieldData[_this.fields.text] === fields[_this.fields.text])) {\n resultJSON = parent ? dataSource : data;\n } else if (typeof data !== 'object' && dataSource.indexOf(data) !== -1) {\n resultJSON = parent ? dataSource : data;\n } else if (!isNullOrUndefined(fields[_this.fields.id]) && isNullOrUndefined(fieldData[_this.fields.id])) {\n var li = _this.element.querySelector('[data-uid=\"' + fields[_this.fields.id] + '\"]');\n if (li && li.innerText.trim() === fieldData[_this.fields.text]) {\n resultJSON = data;\n }\n } else if (Object.prototype.hasOwnProperty.call(fieldData, _this.fields.child) && fieldData[_this.fields.child].length) {\n resultJSON = _this.findItemFromDS(fieldData[_this.fields.child], fields, parent);\n }\n return !!resultJSON;\n });\n } else {\n resultJSON = dataSource;\n }\n return resultJSON;\n };\n ListView.prototype.getQuery = function () {\n var columns = [];\n var query = this.query ? this.query : new Query();\n if (!this.query) {\n for (var _i = 0, _a = Object.keys(this.fields.properties); _i < _a.length; _i++) {\n var column = _a[_i];\n if (column !== 'tableName' && !!this.fields[\"\" + column] && this.fields[\"\" + column] !== ListBase.defaultMappedFields[\"\" + column] && columns.indexOf(this.fields[\"\" + column]) === -1) {\n columns.push(this.fields[\"\" + column]);\n }\n }\n query.select(columns);\n if (Object.prototype.hasOwnProperty.call(this.fields.properties, 'tableName')) {\n query.from(this.fields.tableName);\n }\n }\n return query;\n };\n ListView.prototype.setViewDataSource = function (dataSource) {\n if (dataSource === void 0) {\n dataSource = this.localData;\n }\n var fieldValue = isNullOrUndefined(this.fields.sortBy) ? this.fields.text : this.fields.sortBy;\n var query = ListBase.addSorting(this.sortOrder, fieldValue);\n if (dataSource && this.fields.groupBy) {\n if (this.sortOrder !== 'None') {\n this.curViewDS = ListBase.groupDataSource(ListBase.getDataSource(dataSource, query), this.listBaseOption.fields, this.sortOrder);\n } else {\n this.curViewDS = ListBase.groupDataSource(dataSource, this.listBaseOption.fields, this.sortOrder);\n }\n } else if (dataSource && this.sortOrder !== 'None') {\n this.curViewDS = ListBase.getDataSource(dataSource, query);\n } else {\n this.curViewDS = dataSource;\n }\n };\n ListView.prototype.isInAnimation = function () {\n return this.curUL.classList.contains('.e-animate');\n };\n ListView.prototype.renderRemoteLists = function (e, listViewComponent) {\n if (this.isDestroyed) {\n return;\n }\n this.localData = e.result;\n listViewComponent.removeElement(listViewComponent.contentContainer);\n this.renderList();\n this.trigger('actionComplete', e);\n };\n ListView.prototype.triggerActionFailure = function (e) {\n if (this.isDestroyed) {\n return;\n }\n this.trigger('actionFailure', e);\n };\n ListView.prototype.setLocalData = function () {\n var _this = this;\n this.trigger('actionBegin');\n if (this.dataSource instanceof DataManager) {\n if (this.dataSource.ready) {\n this.dataSource.ready.then(function (e) {\n _this.isOffline = _this.dataSource.dataSource.offline;\n if (_this.dataSource instanceof DataManager && _this.isOffline) {\n _this.renderRemoteLists(e, _this);\n }\n }).catch(function (e) {\n _this.triggerActionFailure(e);\n });\n } else {\n this.dataSource.executeQuery(this.getQuery()).then(function (e) {\n _this.renderRemoteLists(e, _this);\n }).catch(function (e) {\n _this.triggerActionFailure(e);\n });\n }\n } else if (!this.dataSource || !this.dataSource.length) {\n var ul = this.element.querySelector('ul');\n if (ul) {\n remove(ul);\n this.setProperties({\n dataSource: ListBase.createJsonFromElement(ul)\n }, true);\n this.localData = this.dataSource;\n this.renderList();\n this.trigger('actionComplete', {\n data: this.localData\n });\n }\n } else {\n this.localData = this.dataSource;\n this.renderList();\n this.trigger('actionComplete', {\n data: this.localData\n });\n }\n };\n ListView.prototype.reRender = function () {\n this.removeElement(this.headerEle);\n this.removeElement(this.ulElement);\n this.removeElement(this.contentContainer);\n if (this.isReact) {\n this.clearTemplate();\n }\n if (Object.keys(window).indexOf('ejsInterop') === -1) {\n this.element.innerHTML = '';\n }\n this.headerEle = this.ulElement = this.liCollection = undefined;\n this.header();\n this.setLocalData();\n };\n ListView.prototype.resetCurrentList = function () {\n this.setViewDataSource(this.curViewDS);\n this.contentContainer.innerHTML = '';\n this.createList();\n this.renderIntoDom(this.curUL);\n };\n ListView.prototype.setAttributes = function (liElements) {\n for (var i = 0; i < liElements.length; i++) {\n var element = liElements[parseInt(i.toString(), 10)];\n if (element.classList.contains('e-list-item')) {\n element.setAttribute('id', this.element.id + '_' + element.getAttribute('data-uid'));\n element.setAttribute('tabindex', '-1');\n }\n }\n };\n ListView.prototype.createList = function () {\n this.currentLiElements = [];\n this.isNestedList = false;\n this.ulElement = this.curUL = ListBase.createList(this.createElement, this.curViewDS, this.listBaseOption, null, this);\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n this.setAttributes(this.liCollection);\n };\n ListView.prototype.renderSubList = function (li) {\n this.liElement = li;\n var uID = li.getAttribute('data-uid');\n if (li.classList.contains(classNames.hasChild) && uID) {\n var ul = closest(li.parentNode, '.' + classNames.parentItem);\n var ele = this.element.querySelector('[pid=\\'' + uID + '\\']');\n this.curDSLevel.push(uID);\n this.setViewDataSource(this.getSubDS());\n if (this.enableVirtualization) {\n this.virtualizationModule.updateDOMItemCount();\n }\n if (!ele) {\n var data = this.curViewDS;\n ele = ListBase.createListFromJson(this.createElement, data, this.listBaseOption, this.curDSLevel.length, null, this);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n var lists = ele.querySelectorAll('.' + classNames.listItem);\n this.setAttributes(lists);\n ele.setAttribute('pID', uID);\n ele.style.display = 'none';\n this.renderIntoDom(ele);\n }\n this.switchView(ul, ele);\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n if (this.selectedItems) {\n var fieldData = getFieldValues(this.selectedItems.data, this.listBaseOption.fields);\n this.header(fieldData[this.listBaseOption.fields.text], true, 'header');\n }\n this.selectedLI = undefined;\n }\n };\n ListView.prototype.renderIntoDom = function (ele) {\n this.contentContainer.appendChild(ele);\n };\n ListView.prototype.renderList = function (data) {\n this.setViewDataSource(data);\n if (this.enableVirtualization) {\n if (Object.keys(this.dataSource).length) {\n if ((this.template || this.groupTemplate) && !this.virtualizationModule.isNgTemplate()) {\n this.listBaseOption.itemCreated = this.virtualizationModule.createUIItem.bind(this.virtualizationModule);\n }\n }\n this.virtualizationModule.uiVirtualization();\n } else {\n this.createList();\n this.contentContainer = this.createElement('div', {\n className: classNames.container\n });\n this.element.appendChild(this.contentContainer);\n this.renderIntoDom(this.ulElement);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n }\n };\n ListView.prototype.getElementUID = function (obj) {\n var fields = {};\n if (obj instanceof Element) {\n fields[this.fields.id] = obj.getAttribute('data-uid');\n } else {\n fields = obj;\n }\n return fields;\n };\n /**\n * Initializes the ListView component rendering.\n */\n ListView.prototype.render = function () {\n this.element.classList.add(classNames.root);\n attributes(this.element, {\n tabindex: '0'\n });\n this.setCSSClass();\n this.setEnableRTL();\n this.setEnable();\n this.setSize();\n this.wireEvents();\n this.header();\n this.setLocalData();\n this.setHTMLAttribute();\n this.rippleFn = rippleEffect(this.element, {\n selector: '.' + classNames.listItem\n });\n this.renderComplete();\n this.previousScrollTop = this.element.scrollTop;\n };\n /**\n * It is used to destroy the ListView component.\n */\n ListView.prototype.destroy = function () {\n if (this.isReact) {\n this.clearTemplate();\n }\n this.unWireEvents();\n var classAr = [classNames.root, classNames.disable, 'e-rtl', 'e-has-header', 'e-lib'].concat(this.cssClass ? this.cssClass.split(' ').filter(function (css) {\n return css;\n }) : []);\n removeClass([this.element], classAr);\n this.element.removeAttribute('role');\n this.element.removeAttribute('tabindex');\n this.curUL = this.ulElement = this.liCollection = this.headerEle = undefined;\n this.element.innerHTML = '';\n this.contentContainer = null;\n this.selectedItems = null;\n this.selectedLI = null;\n this.liElement = null;\n this.targetElement = null;\n this.currentLiElements = null;\n this.virtualCheckBox = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Switches back from the navigated sub list item.\n */\n ListView.prototype.back = function () {\n var pID = this.curDSLevel[this.curDSLevel.length - 1];\n if (pID === undefined || this.isInAnimation()) {\n return;\n }\n this.curDSLevel.pop();\n this.setViewDataSource(this.getSubDS());\n if (this.enableVirtualization) {\n this.virtualizationModule.updateDOMItemCount();\n }\n var toUL = this.element.querySelector('[data-uid=\\'' + pID + '\\']');\n var fromUL = this.curUL;\n if (!toUL) {\n this.createList();\n this.renderIntoDom(this.ulElement);\n toUL = this.curUL;\n } else {\n toUL = toUL.parentElement;\n }\n var fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);\n var text = fieldData[this.fields.text];\n this.switchView(fromUL, toUL, true);\n this.removeFocus();\n var li = this.element.querySelector('[data-uid=\\'' + pID + '\\']');\n li.classList.remove(classNames.disable);\n li.classList.add(classNames.focused);\n if (!(this.showCheckBox && li.querySelector('.' + classNames.checkboxIcon).classList.contains(classNames.checked))) {\n li.classList.remove(classNames.selected);\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n if (this.enableHtmlSanitizer) {\n this.setProperties({\n headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle)\n }, true);\n }\n this.header(this.curDSLevel.length ? text : this.headerTitle, this.curDSLevel.length ? true : false, 'header');\n };\n /**\n * Selects the list item from the ListView by passing the elements or field object.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.selectItem = function (item) {\n if (this.enableVirtualization) {\n this.virtualizationModule.selectItem(item);\n } else if (this.showCheckBox) {\n this.setCheckboxLI(this.getLiFromObjOrElement(item));\n } else {\n if (isNullOrUndefined(item) === true) {\n this.removeSelect();\n } else {\n this.setSelectLI(this.getLiFromObjOrElement(item));\n }\n }\n };\n /**\n * This method allows for deselecting a list item within the ListView. The item to be deselected can be specified by passing the element or field object.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass an element Object or Fields as an Object with ID and Text fields.\n */\n ListView.prototype.unselectItem = function (item) {\n if (isNullOrUndefined(item)) {\n this.removeSelect();\n } else {\n var li = this.getLiFromObjOrElement(item);\n if (!isNullOrUndefined(li)) {\n this.removeSelect(li);\n }\n }\n };\n ListView.prototype.getLiFromObjOrElement = function (obj) {\n var li;\n var dataSource = this.dataSource instanceof DataManager ? this.localData : this.dataSource;\n if (!isNullOrUndefined(obj)) {\n if (typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') {\n if (obj instanceof Element) {\n var uid = obj.getAttribute('data-uid').toString();\n for (var i = 0; i < this.liCollection.length; i++) {\n if (this.liCollection[parseInt(i.toString(), 10)].getAttribute('data-uid').toString() === uid) {\n li = this.liCollection[parseInt(i.toString(), 10)];\n break;\n }\n }\n } else {\n Array.prototype.some.call(this.curUL.querySelectorAll('.' + classNames.listItem), function (item) {\n if (item.innerText.trim() === obj.toString()) {\n li = item;\n return true;\n } else {\n return false;\n }\n });\n }\n } else {\n var resultJSON = this.getItemData(obj);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (!this.enableVirtualization && isNullOrUndefined(li)) {\n var curLi = this.element.querySelectorAll('.' + classNames.listItem);\n for (var i = 0; i < curLi.length; i++) {\n if (curLi[parseInt(i.toString(), 10)].innerText.trim() === fieldData[this.fields.text]) {\n li = curLi[parseInt(i.toString(), 10)];\n }\n }\n }\n }\n }\n }\n return li;\n };\n /**\n * Selects multiple list items from the ListView.\n *\n * @param {Fields[] | HTMLElement[] | Element[]} item - We can pass array of\n * elements or array of fields Object with ID and Text fields.\n */\n ListView.prototype.selectMultipleItems = function (item) {\n if (!isNullOrUndefined(item)) {\n for (var i = 0; i < item.length; i++) {\n if (!isNullOrUndefined(item[parseInt(i.toString(), 10)])) {\n this.selectItem(item[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n ListView.prototype.getParentId = function () {\n var parentId = [];\n if (this.isNestedList) {\n for (var i = this.curDSLevel.length - 1; i >= 0; i--) {\n parentId.push(this.curDSLevel[parseInt(i.toString(), 10)]);\n }\n }\n return parentId;\n };\n ListView.prototype.updateSelectedId = function () {\n this.selectedId = [];\n var liCollection = this.curUL.getElementsByClassName(classNames.selected);\n for (var i = 0; i < liCollection.length; i++) {\n var tempData = this.getItemData(liCollection[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(tempData) && tempData[this.listBaseOption.fields.id]) {\n this.selectedId.push(tempData[this.listBaseOption.fields.id]);\n }\n }\n };\n /**\n * Gets the details of the currently selected item from the list items.\n *\n */\n ListView.prototype.getSelectedItems = function () {\n var finalValue;\n var isCompleted = false;\n this.selectedId = [];\n var dataSource = this.dataSource instanceof DataManager ? this.localData : this.dataSource;\n if (this.enableVirtualization && !isCompleted) {\n finalValue = this.virtualizationModule.getSelectedItems();\n isCompleted = true;\n } else if (this.showCheckBox && !isCompleted) {\n var liCollection = this.curUL.getElementsByClassName(classNames.selected);\n var liTextCollection = [];\n var liDataCollection = [];\n this.selectedId = [];\n var dataParent = [];\n for (var i = 0; i < liCollection.length; i++) {\n if (typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') {\n liTextCollection.push(liCollection[parseInt(i.toString(), 10)].innerText.trim());\n } else {\n var tempData = this.getItemData(liCollection[parseInt(i.toString(), 10)]);\n var fieldData = getFieldValues(tempData, this.listBaseOption.fields);\n if (this.isNestedList) {\n dataParent.push({\n data: tempData,\n parentId: this.getParentId()\n });\n } else {\n liDataCollection.push(tempData);\n }\n if (fieldData) {\n liTextCollection.push(fieldData[this.listBaseOption.fields.text]);\n this.selectedId.push(fieldData[this.listBaseOption.fields.id]);\n } else {\n liTextCollection.push(undefined);\n this.selectedId.push(undefined);\n }\n }\n }\n if ((typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') && !isCompleted) {\n finalValue = {\n item: liCollection,\n data: dataSource,\n text: liTextCollection\n };\n isCompleted = true;\n }\n if (this.isNestedList && !isCompleted) {\n finalValue = {\n item: liCollection,\n data: dataParent,\n text: liTextCollection\n };\n isCompleted = true;\n } else if (!isCompleted) {\n finalValue = {\n item: liCollection,\n data: liDataCollection,\n text: liTextCollection\n };\n isCompleted = true;\n }\n } else if (!isCompleted) {\n var liElement = this.element.getElementsByClassName(classNames.selected)[0];\n var fieldData = getFieldValues(this.getItemData(liElement), this.listBaseOption.fields);\n if ((typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') && !isCompleted) {\n finalValue = !isNullOrUndefined(liElement) ? {\n item: liElement,\n data: dataSource,\n text: liElement.innerText.trim()\n } : undefined;\n isCompleted = true;\n } else if (!isCompleted) {\n if (isNullOrUndefined(fieldData) || isNullOrUndefined(liElement)) {\n finalValue = undefined;\n isCompleted = true;\n } else {\n this.selectedId.push(fieldData[this.listBaseOption.fields.id]);\n finalValue = {\n text: fieldData[this.listBaseOption.fields.text],\n item: liElement,\n data: this.getItemData(liElement)\n };\n isCompleted = true;\n }\n }\n }\n return finalValue;\n };\n /**\n * Finds out an item details from the current list.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.findItem = function (item) {\n return this.getItemData(item);\n };\n /**\n * Enables the disabled list items by passing the Id and text fields.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.enableItem = function (item) {\n this.setItemState(item, true);\n if (this.enableVirtualization) {\n this.virtualizationModule.enableItem(item);\n }\n };\n /**\n * Disables the list items by passing the Id and text fields.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.disableItem = function (item) {\n this.setItemState(item, false);\n if (this.enableVirtualization) {\n this.virtualizationModule.disableItem(item);\n }\n };\n //A function that used to set state of the list item like enable, disable.\n ListView.prototype.setItemState = function (item, isEnable) {\n var resultJSON = this.getItemData(item);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n var li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (isEnable) {\n if (li) {\n li.classList.remove(classNames.disable);\n }\n delete resultJSON[this.fields.enabled];\n } else if (!isEnable) {\n if (li) {\n li.classList.add(classNames.disable);\n }\n resultJSON[this.fields.enabled] = false;\n }\n }\n };\n /**\n * Shows the hide list item from the ListView.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.showItem = function (item) {\n this.showHideItem(item, false, '');\n if (this.enableVirtualization) {\n this.virtualizationModule.showItem(item);\n }\n };\n /**\n * Hides an list item from the ListView.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.hideItem = function (item) {\n this.showHideItem(item, true, 'none');\n if (this.enableVirtualization) {\n this.virtualizationModule.hideItem(item);\n }\n };\n ListView.prototype.showHideItem = function (obj, isHide, display) {\n var resultJSON = this.getItemData(obj);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n var li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (li) {\n li.style.display = display;\n }\n if (isHide) {\n resultJSON[this.fields.isVisible] = false;\n } else {\n delete resultJSON[this.fields.isVisible];\n }\n }\n };\n /**\n * Adds the new list item(s) to the current ListView.\n * To add a new list item(s) in the ListView, we need to pass the `data` as an array of items that need\n * to be added and `fields` as the target item to which we need to add the given item(s) as its children.\n * For example fields: { text: 'Name', tooltip: 'Name', id:'id'}\n *\n * @param {{Object}[]} data - JSON Array Data that need to add.\n *\n * @param {Fields} fields - Target item to add the given data as its children (can be null).\n *\n * @param {number} index - Indicates the index where the data to be added.\n */\n ListView.prototype.addItem = function (data, fields, index) {\n if (fields === void 0) {\n fields = undefined;\n }\n var dataSource = this.dataSource instanceof DataManager ? this.localData : this.dataSource;\n this.addItemInternally(data, fields, dataSource, index);\n };\n ListView.prototype.addItemInternally = function (data, fields, dataSource, index) {\n if (data instanceof Array) {\n if (this.enableVirtualization) {\n this.virtualizationModule.addItem(data, fields, dataSource, index);\n } else {\n var ds = this.findItemFromDS(dataSource, fields);\n var child = void 0;\n if (ds) {\n var fieldData = getFieldValues(ds, this.listBaseOption.fields);\n child = fieldData[this.fields.child];\n if (!child) {\n child = [];\n }\n child = child.concat(data);\n }\n // check for whether target is nested level or top level in list\n if (ds instanceof Array) {\n for (var i = 0; i < data.length; i++) {\n dataSource = this.addItemAtIndex(index, dataSource, data[parseInt(i.toString(), 10)]);\n this.setViewDataSource(dataSource);\n // since it is top level target, get the content container's first child\n // as it is always the top level UL\n var targetUL = this.contentContainer ? this.contentContainer.children[0] : null;\n // check for whether the list was previously empty or not, if it is\n // proceed to call initial render\n if (this.contentContainer && targetUL) {\n this.addItemIntoDom(data[parseInt(i.toString(), 10)], targetUL, this.curViewDS);\n } else {\n this.reRender();\n }\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n } else {\n // proceed as target item is in nested level, only if it is a valid target ds\n if (ds) {\n ds[this.fields.child] = child;\n this.addItemInNestedList(ds, data);\n }\n }\n }\n }\n };\n ListView.prototype.addItemAtIndex = function (index, newDataSource, itemData) {\n var isIndexValid = !isNullOrUndefined(index) && index >= 0 && index < newDataSource.length && isNullOrUndefined(this.listBaseOption.fields.groupBy);\n if (isIndexValid) {\n newDataSource.splice(index, 0, itemData);\n } else {\n newDataSource.push(itemData);\n }\n return newDataSource;\n };\n ListView.prototype.addItemInNestedList = function (targetItemData, itemQueue) {\n var targetItemId = targetItemData[this.fields.id];\n var targetChildDS = targetItemData[this.fields.child];\n var isAlreadyRenderedUL = this.element.querySelector('[pid=\\'' + targetItemId + '\\']');\n var targetLi = this.element.querySelector('[data-uid=\\'' + targetItemId + '\\']');\n var targetUL = isAlreadyRenderedUL ? isAlreadyRenderedUL : targetLi ? closest(targetLi, 'ul') : null;\n var targetDS = isAlreadyRenderedUL ? targetChildDS : [targetItemData];\n var isTargetEmptyChild = targetLi ? !targetLi.classList.contains(classNames.hasChild) : false;\n // if li element is already rendered, that element needs to be refreshed so that\n // it becomes child viewable due to new child items are added now\n if (isTargetEmptyChild) {\n var targetRefreshedElement = ListBase.createListItemFromJson(this.createElement, targetDS, this.listBaseOption, null, null, this);\n this.setAttributes(targetRefreshedElement);\n targetUL.insertBefore(targetRefreshedElement[0], targetLi);\n detach(targetLi);\n }\n // if it is already rendered element, we need to create and append new elements\n if (isAlreadyRenderedUL && itemQueue) {\n for (var i = 0; i < itemQueue.length; i++) {\n targetDS.push(itemQueue[parseInt(i.toString(), 10)]);\n this.addItemIntoDom(itemQueue[parseInt(i.toString(), 10)], targetUL, targetDS);\n }\n }\n };\n ListView.prototype.addItemIntoDom = function (currentItem, targetUL, curViewDS) {\n var index = curViewDS.indexOf(currentItem);\n this.addListItem(currentItem, index, targetUL, curViewDS);\n var curItemDS = curViewDS[index - 1];\n if (curItemDS && curItemDS.isHeader && curItemDS.items.length === 1) {\n this.addListItem(curItemDS, index - 1, targetUL, curViewDS);\n }\n };\n ListView.prototype.addListItem = function (dataSource, index, ulElement, curViewDS) {\n var target = this.getLiFromObjOrElement(curViewDS[index + 1]) || this.getLiFromObjOrElement(curViewDS[index + 2]) || null;\n var li = ListBase.createListItemFromJson(this.createElement, [dataSource], this.listBaseOption, null, null, this);\n this.setAttributes(li);\n if (this.template && this.isReact) {\n this.renderReactTemplates();\n }\n if (this.fields.groupBy && curViewDS[index + 1] && curViewDS[index + 1].isHeader) {\n var targetEle = this.getLiFromObjOrElement(curViewDS[index - 1]);\n if (targetEle) {\n target = targetEle.nextElementSibling;\n }\n }\n ulElement.insertBefore(li[0], target);\n };\n /**\n * Removes the list item from the data source based on a passed\n * element like fields: { text: 'Name', tooltip: 'Name', id:'id'}\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.removeItem = function (item) {\n var listDataSource = this.dataSource instanceof DataManager ? this.localData : this.dataSource;\n if (this.enableVirtualization) {\n this.virtualizationModule.removeItem(item);\n } else {\n this.removeItemFromList(item, listDataSource);\n }\n };\n ListView.prototype.removeItemFromList = function (obj, listDataSource) {\n var _this = this;\n var curViewDS = this.curViewDS;\n var fields = obj instanceof Element ? this.getElementUID(obj) : obj;\n var dataSource = this.findItemFromDS(listDataSource, fields, true);\n if (dataSource) {\n var data_1 = this.findItemFromDS(dataSource, fields);\n var index = curViewDS.indexOf(data_1);\n var li = this.getLiFromObjOrElement(obj);\n var groupLi = void 0;\n this.validateNestedView(li);\n if (this.fields.groupBy && this.curViewDS[index - 1] && curViewDS[index - 1].isHeader && curViewDS[index - 1].items.length === 1) {\n if (li && li.previousElementSibling.classList.contains(classNames.groupListItem) && (isNullOrUndefined(li.nextElementSibling) || li.nextElementSibling && li.nextElementSibling.classList.contains(classNames.groupListItem))) {\n groupLi = li.previousElementSibling;\n }\n }\n if (li) {\n detach(li);\n }\n if (groupLi) {\n detach(groupLi);\n }\n var foundData = dataSource.length - 1 <= 0 ? this.findParent(this.localData, this.fields.id, function (value) {\n return value === data_1[_this.fields.id];\n }, null) : null;\n var dsIndex = dataSource.indexOf(data_1);\n dataSource.splice(dsIndex, 1);\n this.setViewDataSource(listDataSource);\n if (foundData && foundData.parent && Array.isArray(foundData.parent[this.fields.child]) && foundData.parent[this.fields.child].length <= 0) {\n var parentLi = this.getLiFromObjOrElement(foundData.parent);\n if (parentLi) {\n var li_1 = ListBase.createListItemFromJson(this.createElement, [foundData.parent], this.listBaseOption, null, null, this);\n this.setAttributes(li_1);\n parentLi.parentElement.insertBefore(li_1[0], parentLi);\n parentLi.parentElement.removeChild(parentLi);\n }\n }\n if (dataSource.length <= 0) {\n this.back();\n }\n this.liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.listItem));\n }\n };\n // validate before removing an element whether the current view is inside target element's child view\n ListView.prototype.validateNestedView = function (li) {\n var liID = li ? li.getAttribute('data-uid').toString().toLowerCase() : null;\n if (liID && this.curDSLevel && this.curDSLevel.length > 0) {\n while (this.curDSLevel.some(function (id) {\n return id.toString().toLowerCase() === liID;\n })) {\n this.back();\n }\n }\n };\n /**\n * Removes multiple items from the ListView by passing the array of elements or array of field objects.\n *\n * @param {Fields[] | HTMLElement[] | Element[]} item - We can pass array of elements or array of field Object with ID and Text fields.\n */\n ListView.prototype.removeMultipleItems = function (item) {\n if (item.length) {\n for (var i = 0; i < item.length; i++) {\n this.removeItem(item[parseInt(i.toString(), 10)]);\n }\n }\n };\n ListView.prototype.findParent = function (dataSource, id, callback, parent) {\n if (Object.prototype.hasOwnProperty.call(dataSource, id) && callback(dataSource[id]) === true) {\n return extend({}, dataSource);\n }\n for (var i = 0; i < Object.keys(dataSource).length; i++) {\n if (dataSource[Object.keys(dataSource)[parseInt(i.toString(), 10)]] && typeof dataSource[Object.keys(dataSource)[parseInt(i.toString(), 10)]] === 'object') {\n var result = this.findParent(dataSource[Object.keys(dataSource)[parseInt(i.toString(), 10)]], id, callback, dataSource);\n if (result != null) {\n if (!result.parent) {\n result.parent = parent;\n }\n return result;\n }\n }\n }\n return null;\n };\n // Module Required function\n ListView.prototype.getModuleName = function () {\n return 'listview';\n };\n ListView.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({\n args: [this],\n member: 'virtualization',\n name: 'Virtualization'\n });\n }\n return modules;\n };\n ListView.prototype.onListScroll = function (e) {\n var args = {\n originalEvent: e,\n scrollDirection: 'Bottom',\n distanceY: this.element.scrollHeight - this.element.scrollTop\n };\n var currentScrollTop = this.element.scrollTop;\n if (currentScrollTop > this.previousScrollTop) {\n args.scrollDirection = 'Bottom';\n args.distanceY = this.element.scrollHeight - this.element.clientHeight - this.element.scrollTop;\n this.trigger('scroll', args);\n } else if (this.previousScrollTop > currentScrollTop) {\n args.scrollDirection = 'Top';\n args.distanceY = this.element.scrollTop;\n this.trigger('scroll', args);\n }\n this.previousScrollTop = currentScrollTop;\n };\n /**\n * Get the properties to be maintained in the persisted state.\n */\n ListView.prototype.getPersistData = function () {\n return this.addOnPersist(['cssClass', 'enableRtl', 'htmlAttributes', 'enable', 'fields', 'animation', 'headerTitle', 'sortOrder', 'showIcon', 'height', 'width', 'showCheckBox', 'checkBoxPosition', 'selectedId']);\n };\n __decorate([Property('')], ListView.prototype, \"cssClass\", void 0);\n __decorate([Property(false)], ListView.prototype, \"enableVirtualization\", void 0);\n __decorate([Property({})], ListView.prototype, \"htmlAttributes\", void 0);\n __decorate([Property(true)], ListView.prototype, \"enable\", void 0);\n __decorate([Property([])], ListView.prototype, \"dataSource\", void 0);\n __decorate([Property()], ListView.prototype, \"query\", void 0);\n __decorate([Complex(ListBase.defaultMappedFields, FieldSettings)], ListView.prototype, \"fields\", void 0);\n __decorate([Property({\n effect: 'SlideLeft',\n duration: 400,\n easing: 'ease'\n })], ListView.prototype, \"animation\", void 0);\n __decorate([Property('None')], ListView.prototype, \"sortOrder\", void 0);\n __decorate([Property(false)], ListView.prototype, \"showIcon\", void 0);\n __decorate([Property(false)], ListView.prototype, \"showCheckBox\", void 0);\n __decorate([Property('Left')], ListView.prototype, \"checkBoxPosition\", void 0);\n __decorate([Property('')], ListView.prototype, \"headerTitle\", void 0);\n __decorate([Property(false)], ListView.prototype, \"showHeader\", void 0);\n __decorate([Property(true)], ListView.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([Property('')], ListView.prototype, \"height\", void 0);\n __decorate([Property('')], ListView.prototype, \"width\", void 0);\n __decorate([Property(null)], ListView.prototype, \"template\", void 0);\n __decorate([Property(null)], ListView.prototype, \"headerTemplate\", void 0);\n __decorate([Property(null)], ListView.prototype, \"groupTemplate\", void 0);\n __decorate([Event()], ListView.prototype, \"select\", void 0);\n __decorate([Event()], ListView.prototype, \"actionBegin\", void 0);\n __decorate([Event()], ListView.prototype, \"actionComplete\", void 0);\n __decorate([Event()], ListView.prototype, \"actionFailure\", void 0);\n __decorate([Event()], ListView.prototype, \"scroll\", void 0);\n ListView = __decorate([NotifyPropertyChanges], ListView);\n return ListView;\n}(Component);\nexport { ListView };","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};\nimport { Base, Event, getUniqueID, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { closest, Draggable, remove, compareElementParent } from '@syncfusion/ej2-base';\nimport { addClass, isNullOrUndefined, getComponent, isBlazor, EventHandler } from '@syncfusion/ej2-base';\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Sortable Module provides support to enable sortable functionality in Dom Elements.\n * ```html\n * <div id=\"sortable\">\n * <div>Item 1</div>\n * <div>Item 2</div>\n * <div>Item 3</div>\n * <div>Item 4</div>\n * <div>Item 5</div>\n * </div>\n * ```\n * ```typescript\n * let ele: HTMLElement = document.getElementById('sortable');\n * let sortObj: Sortable = new Sortable(ele, {});\n * ```\n */\nvar Sortable = /** @class */function (_super) {\n __extends(Sortable, _super);\n function Sortable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.getHelper = function (e) {\n var target = _this.getSortableElement(e.sender.target);\n if (!_this.isValidTarget(target, _this)) {\n return false;\n }\n var element;\n if (_this.helper) {\n element = _this.helper({\n sender: target,\n element: e.element\n });\n } else {\n element = target.cloneNode(true);\n element.style.width = target.offsetWidth + \"px\";\n element.style.height = target.offsetHeight + \"px\";\n }\n addClass([element], ['e-sortableclone']);\n document.body.appendChild(element);\n return element;\n };\n _this.onDrag = function (e) {\n if (!e.target) {\n return;\n }\n _this.trigger('drag', {\n event: e.event,\n element: _this.element,\n target: e.target\n });\n var newInst = _this.getSortableInstance(e.target);\n var target = _this.getSortableElement(e.target, newInst);\n if ((_this.isValidTarget(target, newInst) || e.target && typeof e.target.className === 'string' && e.target.className.indexOf('e-list-group-item') > -1) && (_this.curTarget !== target || !isNullOrUndefined(newInst.placeHolder)) && (newInst.placeHolderElement ? newInst.placeHolderElement !== e.target : true)) {\n if (e.target.classList.contains('e-list-group-item')) {\n target = e.target;\n }\n _this.curTarget = target;\n if (_this.target === target) {\n return;\n }\n var oldIdx = _this.getIndex(newInst.placeHolderElement, newInst);\n var placeHolder = _this.getPlaceHolder(target, newInst);\n var newIdx = void 0;\n if (placeHolder) {\n oldIdx = isNullOrUndefined(oldIdx) ? _this.getIndex(_this.target) : oldIdx;\n newIdx = _this.getIndex(target, newInst, e.event);\n var isPlaceHolderPresent = _this.isPlaceHolderPresent(newInst);\n if (isPlaceHolderPresent && oldIdx === newIdx) {\n return;\n }\n if (isPlaceHolderPresent) {\n _this.removePlaceHolder(newInst);\n }\n newInst.placeHolderElement = placeHolder;\n if (e.target && typeof e.target.className === 'string' && e.target.className.indexOf('e-list-group-item') > -1) {\n newInst.element.insertBefore(newInst.placeHolderElement, newInst.element.children[newIdx]);\n } else if (newInst.element !== _this.element && newIdx === newInst.element.childElementCount) {\n newInst.element.appendChild(newInst.placeHolderElement);\n } else {\n newInst.element.insertBefore(newInst.placeHolderElement, newInst.element.children[newIdx]);\n }\n } else {\n oldIdx = isNullOrUndefined(oldIdx) ? _this.getIndex(_this.target) : _this.getIndex(target, newInst) < oldIdx || !oldIdx ? oldIdx : oldIdx - 1;\n newIdx = _this.getIndex(target, newInst);\n var idx = newInst.element !== _this.element ? newIdx : oldIdx < newIdx ? newIdx + 1 : newIdx;\n _this.updateItemClass(newInst);\n newInst.element.insertBefore(_this.target, newInst.element.children[idx]);\n _this.curTarget = _this.target;\n _this.trigger('drop', {\n droppedElement: _this.target,\n element: newInst.element,\n previousIndex: oldIdx,\n currentIndex: newIdx,\n target: e.target,\n helper: document.getElementsByClassName('e-sortableclone')[0],\n event: e.event,\n scope: _this.scope\n });\n }\n } else if (_this.curTarget !== _this.target && _this.scope && _this.curTarget !== target && !isNullOrUndefined(newInst.placeHolder)) {\n _this.removePlaceHolder(_this.getSortableInstance(_this.curTarget));\n _this.curTarget = _this.target;\n }\n newInst = _this.getSortableInstance(_this.curTarget);\n if (isNullOrUndefined(target) && e.target !== newInst.placeHolderElement) {\n if (_this.isPlaceHolderPresent(newInst)) {\n _this.removePlaceHolder(newInst);\n }\n } else {\n var placeHolders = [].slice.call(document.getElementsByClassName('e-sortable-placeholder'));\n var inst_1;\n placeHolders.forEach(function (placeHolder) {\n inst_1 = _this.getSortableInstance(placeHolder);\n if (inst_1.element && inst_1 !== newInst) {\n _this.removePlaceHolder(inst_1);\n }\n });\n }\n };\n _this.onDragStart = function (e) {\n _this.target = _this.getSortableElement(e.target);\n var cancelDrag = false;\n _this.target.classList.add('e-grabbed');\n _this.curTarget = _this.target;\n e.helper = document.getElementsByClassName('e-sortableclone')[0];\n var args = {\n cancel: false,\n element: _this.element,\n target: _this.target\n };\n _this.trigger('beforeDragStart', args, function (observedArgs) {\n if (observedArgs.cancel) {\n cancelDrag = observedArgs.cancel;\n _this.onDragStop(e);\n }\n });\n if (cancelDrag) {\n return;\n }\n if (isBlazor) {\n _this.trigger('dragStart', {\n event: e.event,\n element: _this.element,\n target: _this.target,\n bindEvents: e.bindEvents,\n dragElement: e.dragElement\n });\n } else {\n _this.trigger('dragStart', {\n event: e.event,\n element: _this.element,\n target: _this.target\n });\n }\n };\n _this.onDragStop = function (e) {\n var dropInst = _this.getSortableInstance(_this.curTarget);\n var prevIdx;\n var curIdx;\n var handled;\n prevIdx = _this.getIndex(_this.target);\n var isPlaceHolderPresent = _this.isPlaceHolderPresent(dropInst);\n if (isPlaceHolderPresent) {\n var curIdx_1 = _this.getIndex(dropInst.placeHolderElement, dropInst);\n prevIdx = _this === dropInst && prevIdx - curIdx_1 >= 1 ? prevIdx - 1 : prevIdx;\n var args = {\n previousIndex: prevIdx,\n currentIndex: curIdx_1,\n target: e.target,\n droppedElement: _this.target,\n helper: e.helper,\n cancel: false,\n handled: false\n };\n _this.trigger('beforeDrop', args, function (observedArgs) {\n if (!observedArgs.cancel) {\n handled = observedArgs.handled;\n _this.updateItemClass(dropInst);\n if (observedArgs.handled) {\n var ele = _this.target.cloneNode(true);\n _this.target.classList.remove('e-grabbed');\n _this.target = ele;\n }\n dropInst.element.insertBefore(_this.target, dropInst.placeHolderElement);\n var curIdx_2 = _this.getIndex(_this.target, dropInst);\n prevIdx = _this === dropInst && prevIdx - curIdx_2 >= 1 ? prevIdx - 1 : prevIdx;\n _this.trigger('drop', {\n event: e.event,\n element: dropInst.element,\n previousIndex: prevIdx,\n currentIndex: curIdx_2,\n target: e.target,\n helper: e.helper,\n droppedElement: _this.target,\n scopeName: _this.scope,\n handled: handled\n });\n }\n _this.removePlaceHolder(dropInst);\n });\n }\n dropInst = _this.getSortableInstance(e.target);\n curIdx = dropInst.element.childElementCount;\n prevIdx = _this.getIndex(_this.target);\n if (dropInst.element.querySelector('.e-list-nrt')) {\n curIdx = curIdx - 1;\n }\n if (_this.curTarget === _this.target && e.target === _this.curTarget) {\n curIdx = prevIdx;\n }\n if (dropInst.element === e.target || !isPlaceHolderPresent && _this.curTarget === _this.target) {\n var beforeDropArgs = {\n previousIndex: prevIdx,\n currentIndex: curIdx,\n target: e.target,\n droppedElement: _this.target,\n helper: e.helper,\n cancel: false\n };\n _this.trigger('beforeDrop', beforeDropArgs, function (observedArgs) {\n if ((dropInst.element === e.target || typeof e.target.className === 'string' && e.target.className.indexOf('e-list-nrt') > -1 || typeof e.target.className === 'string' && e.target.className.indexOf('e-list-nr-template') > -1 || e.target.closest('.e-list-nr-template')) && !observedArgs.cancel) {\n _this.updateItemClass(dropInst);\n dropInst.element.appendChild(_this.target);\n _this.trigger('drop', {\n event: e.event,\n element: dropInst.element,\n previousIndex: prevIdx,\n currentIndex: curIdx,\n target: e.target,\n helper: e.helper,\n droppedElement: _this.target,\n scopeName: _this.scope\n });\n }\n });\n }\n _this.target.classList.remove('e-grabbed');\n _this.target = null;\n _this.curTarget = null;\n remove(e.helper);\n getComponent(_this.element, 'draggable').intDestroy(e.event);\n };\n _this.bind();\n return _this;\n }\n Sortable_1 = Sortable;\n Sortable.prototype.bind = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('sortable');\n }\n if (!this.itemClass) {\n this.itemClass = 'e-sort-item';\n this.dataBind();\n }\n this.initializeDraggable();\n };\n Sortable.prototype.initializeDraggable = function () {\n new Draggable(this.element, {\n helper: this.getHelper,\n dragStart: this.onDragStart,\n drag: this.onDrag,\n dragStop: this.onDragStop,\n dragTarget: \".\" + this.itemClass,\n enableTapHold: true,\n tapHoldThreshold: 200,\n queryPositionInfo: this.queryPositionInfo,\n distance: 1\n });\n this.wireEvents();\n };\n Sortable.prototype.wireEvents = function () {\n var wrapper = this.element;\n EventHandler.add(wrapper, 'keydown', this.keyDownHandler, this);\n };\n Sortable.prototype.unwireEvents = function () {\n var wrapper = this.element;\n EventHandler.remove(wrapper, 'keydown', this.keyDownHandler);\n };\n Sortable.prototype.keyDownHandler = function (e) {\n if (e.keyCode === 27) {\n var dragStop = getComponent(this.element, 'draggable');\n if (dragStop) {\n dragStop.intDestroy(null);\n }\n var dragWrapper = document.getElementsByClassName('e-sortableclone')[0];\n if (dragWrapper) {\n dragWrapper.remove();\n }\n var dragPlaceholder = document.getElementsByClassName('e-sortable-placeholder')[0];\n if (dragPlaceholder) {\n dragPlaceholder.remove();\n }\n }\n };\n Sortable.prototype.getPlaceHolder = function (target, instance) {\n if (instance.placeHolder) {\n var placeHolderElement = instance.placeHolder({\n element: instance.element,\n grabbedElement: this.target,\n target: target\n });\n placeHolderElement.classList.add('e-sortable-placeholder');\n return placeHolderElement;\n }\n return null;\n };\n Sortable.prototype.isValidTarget = function (target, instance) {\n return target && compareElementParent(target, instance.element) && target.classList.contains(instance.itemClass) && !target.classList.contains('e-disabled');\n };\n Sortable.prototype.removePlaceHolder = function (instance) {\n remove(instance.placeHolderElement);\n instance.placeHolderElement = null;\n };\n Sortable.prototype.updateItemClass = function (instance) {\n if (this !== instance) {\n this.target.classList.remove(this.itemClass);\n this.target.classList.add(instance.itemClass);\n }\n };\n Sortable.prototype.getSortableInstance = function (element) {\n element = closest(element, \".e-\" + this.getModuleName());\n if (element) {\n var inst = getComponent(element, Sortable_1);\n return inst.scope && this.scope && inst.scope === this.scope ? inst : this;\n } else {\n return this;\n }\n };\n Sortable.prototype.getIndex = function (target, instance, e) {\n if (instance === void 0) {\n instance = this;\n }\n var idx;\n var placeHolderPresent;\n [].slice.call(instance.element.children).forEach(function (element, index) {\n if (element.classList.contains('e-sortable-placeholder')) {\n placeHolderPresent = true;\n }\n if (element === target) {\n idx = index;\n if (!isNullOrUndefined(e)) {\n if (placeHolderPresent) {\n idx -= 1;\n }\n var offset = target.getBoundingClientRect();\n var clientY = offset.bottom - (offset.bottom - offset.top) / 2;\n var cltY = e.changedTouches ? e.changedTouches[0].clientY : e.clientY;\n idx = cltY <= clientY ? idx : idx + 1;\n }\n return;\n }\n });\n return idx;\n };\n Sortable.prototype.getSortableElement = function (element, instance) {\n if (instance === void 0) {\n instance = this;\n }\n return closest(element, \".\" + instance.itemClass);\n };\n Sortable.prototype.queryPositionInfo = function (value) {\n value.left = scrollX ? parseFloat(value.left) - scrollX + \"px\" : value.left;\n value.top = scrollY ? parseFloat(value.top) - scrollY + \"px\" : value.top;\n return value;\n };\n Sortable.prototype.isPlaceHolderPresent = function (instance) {\n return instance.placeHolderElement && !!closest(instance.placeHolderElement, \"#\" + instance.element.id);\n };\n /**\n * It is used to sort array of elements from source element to destination element.\n *\n * @param destination - Defines the destination element to which the sortable elements needs to be appended.\n *\n * If it is null, then the Sortable library element will be considered as destination.\n * @param targetIndexes - Specifies the sortable elements indexes which needs to be sorted.\n * @param insertBefore - Specifies the index before which the sortable elements needs to be appended.\n * If it is null, elements will be appended as last child.\n * @function moveTo\n * @returns {void}\n */\n Sortable.prototype.moveTo = function (destination, targetIndexes, insertBefore) {\n moveTo(this.element, destination, targetIndexes, insertBefore);\n };\n /**\n * It is used to destroy the Sortable library.\n */\n Sortable.prototype.destroy = function () {\n this.unwireEvents();\n if (this.itemClass === 'e-sort-item') {\n this.itemClass = null;\n this.dataBind();\n }\n getComponent(this.element, Draggable).destroy();\n _super.prototype.destroy.call(this);\n };\n Sortable.prototype.getModuleName = function () {\n return 'sortable';\n };\n Sortable.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'itemClass':\n [].slice.call(this.element.children).forEach(function (element) {\n if (element.classList.contains(oldProp.itemClass)) {\n element.classList.remove(oldProp.itemClass);\n }\n if (newProp.itemClass) {\n element.classList.add(newProp.itemClass);\n }\n });\n break;\n }\n }\n };\n var Sortable_1;\n __decorate([Property(false)], Sortable.prototype, \"enableAnimation\", void 0);\n __decorate([Property(null)], Sortable.prototype, \"itemClass\", void 0);\n __decorate([Property(null)], Sortable.prototype, \"scope\", void 0);\n __decorate([Property()], Sortable.prototype, \"helper\", void 0);\n __decorate([Property()], Sortable.prototype, \"placeHolder\", void 0);\n __decorate([Event()], Sortable.prototype, \"drag\", void 0);\n __decorate([Event()], Sortable.prototype, \"beforeDragStart\", void 0);\n __decorate([Event()], Sortable.prototype, \"dragStart\", void 0);\n __decorate([Event()], Sortable.prototype, \"beforeDrop\", void 0);\n __decorate([Event()], Sortable.prototype, \"drop\", void 0);\n Sortable = Sortable_1 = __decorate([NotifyPropertyChanges], Sortable);\n return Sortable;\n}(Base);\nexport { Sortable };\n/**\n * It is used to sort array of elements from source element to destination element.\n *\n * @param {HTMLElement} from - The source element from which to move elements.\n * @param {HTMLElement} [to=from] - The destination element to which to move elements. Defaults to the source element.\n * @param {number[]} [targetIndexes] - The indexes of elements to move. If not provided, all children of the source element will be moved.\n * @param {number} [insertBefore] - The index before which to insert the moved elements in the destination element. If not provided, elements will be appended to the end of the destination element.\n * @returns {void}\n * @private\n */\nexport function moveTo(from, to, targetIndexes, insertBefore) {\n var targetElements = [];\n if (!to) {\n to = from;\n }\n if (targetIndexes && targetIndexes.length) {\n targetIndexes.forEach(function (index) {\n targetElements.push(from.children[index]);\n });\n } else {\n targetElements = [].slice.call(from.children);\n }\n if (isNullOrUndefined(insertBefore)) {\n targetElements.forEach(function (target) {\n to.appendChild(target);\n });\n } else {\n var insertElement_1 = to.children[insertBefore];\n targetElements.forEach(function (target) {\n to.insertBefore(target, insertElement_1);\n });\n }\n}","import { classNames } from './list-view';\nimport { EventHandler, append, isNullOrUndefined, detach, compile, formatUnit, select } from '@syncfusion/ej2-base';\nimport { ListBase } from '../common/list-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nvar listElementCount = 1.5;\nvar windowElementCount = 3;\nvar Virtualization = /** @class */function () {\n function Virtualization(instance) {\n this.elementDifference = 0;\n this.listViewInstance = instance;\n }\n /**\n * For internal use only.\n *\n * @private\n */\n Virtualization.prototype.isNgTemplate = function () {\n return !isNullOrUndefined(this.listViewInstance.templateRef) && typeof this.listViewInstance.templateRef !== 'string';\n };\n /**\n * Checks if the platform is a Vue and its template property is a function type.\n *\n * @returns {boolean} indicating the result of the check\n */\n Virtualization.prototype.isVueFunctionTemplate = function () {\n return this.listViewInstance.isVue && typeof this.listViewInstance.template === 'function';\n };\n /**\n * For internal use only.\n *\n * @private\n */\n Virtualization.prototype.uiVirtualization = function () {\n this.wireScrollEvent(false);\n var curViewDS = this.listViewInstance.curViewDS;\n var isRendered = this.listViewInstance.isRendered;\n var firstIndex = isRendered && !isNullOrUndefined(this.uiFirstIndex) && this.uiLastIndex <= Object.keys(curViewDS).length ? this.uiFirstIndex : 0;\n var firstDs = curViewDS.slice(firstIndex, firstIndex + 1);\n this.listViewInstance.ulElement = this.listViewInstance.curUL = ListBase.createList(this.listViewInstance.createElement, firstDs, this.listViewInstance.listBaseOption, null, this.listViewInstance);\n this.listViewInstance.contentContainer = this.listViewInstance.createElement('div', {\n className: classNames.container\n });\n this.listViewInstance.element.appendChild(this.listViewInstance.contentContainer);\n this.listViewInstance.contentContainer.appendChild(this.listViewInstance.ulElement);\n this.listItemHeight = this.listViewInstance.ulElement.firstElementChild.getBoundingClientRect().height;\n this.expectedDomItemCount = this.ValidateItemCount(10000);\n this.updateDOMItemCount();\n var lastIndex = isRendered && !isNullOrUndefined(this.uiLastIndex) && this.listDiff !== 0 ? this.uiLastIndex : this.domItemCount - 1;\n this.uiFirstIndex = firstIndex;\n this.uiLastIndex = lastIndex;\n var otherDs = curViewDS.slice(firstIndex + 1, lastIndex + 1);\n var listItems = ListBase.createListItemFromJson(this.listViewInstance.createElement, otherDs, this.listViewInstance.listBaseOption, null, null, this.listViewInstance);\n append(listItems, this.listViewInstance.ulElement);\n this.listViewInstance.liCollection = this.listViewInstance.curUL.querySelectorAll('li');\n this.topElement = this.listViewInstance.createElement('div');\n this.listViewInstance.ulElement.insertBefore(this.topElement, this.listViewInstance.ulElement.firstElementChild);\n this.bottomElement = this.listViewInstance.createElement('div');\n this.listViewInstance.ulElement.insertBefore(this.bottomElement, null);\n this.totalHeight = Object.keys(curViewDS).length * this.listItemHeight - this.domItemCount * this.listItemHeight;\n this.topElement.style.height = isRendered ? this.topElementHeight + 'px' : '0px';\n this.bottomElement.style.height = isRendered ? this.totalHeight - this.topElementHeight + 'px' : this.totalHeight + 'px';\n this.topElementHeight = isRendered ? this.topElementHeight : 0;\n this.bottomElementHeight = isRendered ? this.totalHeight - this.topElementHeight : this.totalHeight;\n this.listDiff = isRendered && Object.keys(curViewDS).length !== this.domItemCount ? this.listDiff : 0;\n if (isRendered) {\n this.listViewInstance.element.scrollTop = this.listViewInstance.previousScrollTop;\n }\n this.uiIndicesInitialization();\n };\n Virtualization.prototype.wireScrollEvent = function (destroy) {\n if (!destroy) {\n if (this.listViewInstance.isWindow) {\n this.onVirtualScroll = this.onVirtualUiScroll.bind(this);\n window.addEventListener('scroll', this.onVirtualScroll);\n } else {\n EventHandler.add(this.listViewInstance.element, 'scroll', this.onVirtualUiScroll, this);\n }\n } else {\n if (this.listViewInstance.isWindow === true) {\n window.removeEventListener('scroll', this.onVirtualScroll);\n window.removeEventListener('scroll', this.updateUl);\n } else {\n EventHandler.remove(this.listViewInstance.element, 'scroll', this.onVirtualUiScroll);\n }\n }\n };\n Virtualization.prototype.ValidateItemCount = function (dataSourceLength) {\n var height = parseFloat(formatUnit(this.listViewInstance.height));\n var itemCount;\n if (this.listViewInstance.isWindow) {\n itemCount = Math.round(window.innerHeight / this.listItemHeight * windowElementCount);\n } else {\n if (typeof this.listViewInstance.height === 'string' && this.listViewInstance.height.indexOf('%') !== -1) {\n itemCount = Math.round(this.listViewInstance.element.getBoundingClientRect().height / this.listItemHeight * listElementCount);\n } else {\n itemCount = Math.round(height / this.listItemHeight * listElementCount);\n }\n }\n if (itemCount > dataSourceLength) {\n itemCount = dataSourceLength;\n }\n return itemCount;\n };\n Virtualization.prototype.updateDOMItemCount = function () {\n this.domItemCount = this.ValidateItemCount(Object.keys(this.listViewInstance.curViewDS).length);\n };\n Virtualization.prototype.uiIndicesInitialization = function () {\n this.uiIndices = {\n 'activeIndices': [],\n 'disabledItemIndices': [],\n 'hiddenItemIndices': []\n };\n var data = this.listViewInstance.curViewDS;\n for (var i = 0; i < data.length; i++) {\n if (this.listViewInstance.showCheckBox && data[i][this.listViewInstance.fields.isChecked]) {\n this.uiIndices.activeIndices.push(i);\n }\n if (!isNullOrUndefined(data[parseInt(i.toString(), 10)][this.listViewInstance.fields.enabled]) && !data[i][this.listViewInstance.fields.enabled]) {\n this.uiIndices.disabledItemIndices.push(i);\n }\n }\n if (this.isNgTemplate()) {\n var items = this.listViewInstance.element.querySelectorAll('.' + classNames.listItem);\n for (var index = 0; index < items.length; index++) {\n items[index].context = this.listViewInstance.viewContainerRef.get(index).context;\n }\n }\n };\n Virtualization.prototype.refreshItemHeight = function () {\n if (this.listViewInstance.curViewDS.length) {\n var curViewDS = this.listViewInstance.curViewDS;\n this.listItemHeight = this.topElement.nextSibling.getBoundingClientRect().height;\n this.totalHeight = Object.keys(curViewDS).length * this.listItemHeight - this.domItemCount * this.listItemHeight;\n this.bottomElementHeight = this.totalHeight;\n this.bottomElement.style.height = this.totalHeight + 'px';\n }\n };\n Virtualization.prototype.getscrollerHeight = function (startingHeight) {\n return this.listViewInstance.isWindow ? pageYOffset - startingHeight <= 0 ? 0 : pageYOffset - startingHeight : this.listViewInstance.element.scrollTop - startingHeight <= 0 ? 0 : this.listViewInstance.element.scrollTop - startingHeight;\n };\n Virtualization.prototype.onVirtualUiScroll = function () {\n var _a;\n var startingHeight;\n var curViewDS = this.listViewInstance.curViewDS;\n this.listItemHeight = select('.e-list-item', this.listViewInstance.element).getBoundingClientRect().height;\n this.totalHeight = Object.keys(curViewDS).length * this.listItemHeight - this.domItemCount * this.listItemHeight;\n if (this.listViewInstance.isWindow) {\n startingHeight = this.listViewInstance.ulElement.getBoundingClientRect().top - document.documentElement.getBoundingClientRect().top;\n } else {\n startingHeight = this.listViewInstance.headerEle ? this.listViewInstance.headerEle.getBoundingClientRect().height : 0;\n }\n this.scrollPosition = isNullOrUndefined(this.scrollPosition) ? 0 : this.scrollPosition;\n var scroll = this.getscrollerHeight(startingHeight);\n this.topElementHeight = this.listItemHeight * Math.floor(scroll / this.listItemHeight);\n this.bottomElementHeight = this.totalHeight - this.topElementHeight;\n _a = scroll <= this.totalHeight ? [this.topElementHeight, this.bottomElementHeight] : [this.totalHeight, 0], this.topElementHeight = _a[0], this.bottomElementHeight = _a[1];\n if (this.topElementHeight !== parseFloat(this.topElement.style.height)) {\n this.topElement.style.height = this.topElementHeight + 'px';\n this.bottomElement.style.height = this.bottomElementHeight + 'px';\n if (scroll > this.scrollPosition) {\n var listDiff = Math.round(this.topElementHeight / this.listItemHeight - this.listDiff);\n if (listDiff > this.expectedDomItemCount + 5) {\n this.onLongScroll(listDiff, true);\n } else {\n this.onNormalScroll(listDiff, true);\n }\n } else {\n var listDiff = Math.round(this.listDiff - this.topElementHeight / this.listItemHeight);\n if (listDiff > this.expectedDomItemCount + 5) {\n this.onLongScroll(listDiff, false);\n } else {\n this.onNormalScroll(listDiff, false);\n }\n }\n }\n this.listDiff = Math.round(this.topElementHeight / this.listItemHeight);\n if (typeof this.listViewInstance.onUIScrolled === 'function') {\n this.listViewInstance.onUIScrolled();\n }\n this.scrollPosition = scroll;\n };\n Virtualization.prototype.onLongScroll = function (listDiff, isScrollingDown) {\n var index = isScrollingDown ? this.uiFirstIndex + listDiff : this.uiFirstIndex - listDiff;\n var elements = this.listViewInstance.ulElement.querySelectorAll('li');\n for (var i = 0; i < elements.length; i++) {\n this.updateUI(elements[i], index);\n index++;\n }\n this.uiLastIndex = isScrollingDown ? this.uiLastIndex + listDiff : this.uiLastIndex - listDiff;\n this.uiFirstIndex = isScrollingDown ? this.uiFirstIndex + listDiff : this.uiFirstIndex - listDiff;\n };\n Virtualization.prototype.onNormalScroll = function (listDiff, isScrollingDown) {\n if (isScrollingDown) {\n for (var i = 0; i < listDiff; i++) {\n var index = ++this.uiLastIndex;\n this.updateUI(this.topElement.nextElementSibling, index, this.bottomElement);\n this.uiFirstIndex++;\n }\n } else {\n for (var i = 0; i < listDiff; i++) {\n var index = --this.uiFirstIndex;\n var target = this.topElement.nextSibling;\n this.updateUI(this.bottomElement.previousElementSibling, index, target);\n this.uiLastIndex--;\n }\n }\n };\n Virtualization.prototype.updateUiContent = function (element, index) {\n var curViewDs = this.listViewInstance.curViewDS;\n if (typeof this.listViewInstance.dataSource[0] === 'string' || typeof this.listViewInstance.dataSource[0] === 'number') {\n element.dataset.uid = ListBase.generateId();\n element.getElementsByClassName(classNames.listItemText)[0].innerHTML = this.listViewInstance.curViewDS[index].toString();\n } else {\n element.dataset.uid = curViewDs[parseInt(index.toString(), 10)][this.listViewInstance.fields.id] ? curViewDs[parseInt(index.toString(), 10)][this.listViewInstance.fields.id] : ListBase.generateId();\n element.getElementsByClassName(classNames.listItemText)[0].innerHTML = curViewDs[parseInt(index.toString(), 10)][this.listViewInstance.fields.text];\n }\n if (this.listViewInstance.showIcon) {\n if (element.querySelector('.' + classNames.listIcon)) {\n detach(element.querySelector('.' + classNames.listIcon));\n }\n if (this.listViewInstance.curViewDS[index][this.listViewInstance.fields.iconCss]) {\n var textContent = element.querySelector('.' + classNames.textContent);\n var curViewDS = this.listViewInstance.curViewDS[index];\n var iconCss = curViewDS[this.listViewInstance.fields.iconCss].toString();\n var target = this.listViewInstance.createElement('div', {\n className: classNames.listIcon + ' ' + iconCss\n });\n textContent.insertBefore(target, element.querySelector('.' + classNames.listItemText));\n }\n }\n if (this.listViewInstance.showCheckBox && this.listViewInstance.fields.groupBy) {\n if (!this.checkListWrapper) {\n this.checkListWrapper = this.listViewInstance.curUL.querySelector('.' + classNames.checkboxWrapper).cloneNode(true);\n }\n var textContent = element.querySelector('.' + classNames.textContent);\n if (this.listViewInstance.curViewDS[index].isHeader) {\n if (element.querySelector('.' + classNames.checkboxWrapper)) {\n element.classList.remove(classNames.checklist);\n textContent.classList.remove(classNames.checkbox);\n detach(element.querySelector('.' + classNames.checkboxWrapper));\n }\n } else {\n if (!element.querySelector('.' + classNames.checkboxWrapper)) {\n element.classList.add(classNames.checklist);\n textContent.classList.add(classNames.checkbox);\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n textContent.classList.add('e-checkbox-left');\n } else {\n textContent.classList.add('e-checkbox-right');\n }\n textContent.append(this.checkListWrapper.cloneNode(true));\n }\n }\n }\n };\n Virtualization.prototype.changeElementAttributes = function (element, index) {\n element.classList.remove(classNames.disable);\n if (this.uiIndices.disabledItemIndices.length && this.uiIndices.disabledItemIndices.indexOf(index) !== -1) {\n element.classList.add(classNames.disable);\n }\n element.style.display = '';\n if (this.uiIndices.hiddenItemIndices.length && this.uiIndices.hiddenItemIndices.indexOf(index) !== -1) {\n element.style.display = 'none';\n }\n if (this.listViewInstance.showCheckBox) {\n var checklistElement = element.querySelector('.' + classNames.checkboxWrapper);\n element.classList.remove(classNames.selected);\n element.classList.remove(classNames.focused);\n if (checklistElement) {\n checklistElement.removeAttribute('aria-checked');\n checklistElement.firstElementChild.classList.remove(classNames.checked);\n }\n if (this.uiIndices.activeIndices.length && this.uiIndices.activeIndices.indexOf(index) !== -1 && !this.listViewInstance.curUL.querySelector(classNames.selected)) {\n element.classList.add(classNames.selected);\n checklistElement.firstElementChild.classList.add(classNames.checked);\n checklistElement.setAttribute('aria-checked', 'true');\n if (this.activeIndex === index) {\n element.classList.add(classNames.focused);\n }\n }\n } else {\n element.classList.remove(classNames.selected);\n element.removeAttribute('aria-selected');\n if (!isNullOrUndefined(this.activeIndex) && this.activeIndex === index && !this.listViewInstance.curUL.querySelector(classNames.selected)) {\n element.classList.add(classNames.selected);\n element.setAttribute('aria-selected', 'true');\n }\n }\n if (this.listViewInstance.fields.groupBy) {\n if (this.listViewInstance.curViewDS[index].isHeader) {\n if (element.classList.contains(classNames.listItem)) {\n element.classList.remove(classNames.listItem);\n element.setAttribute('role', 'group');\n element.classList.add(classNames.groupListItem);\n }\n } else {\n if (element.classList.contains(classNames.groupListItem)) {\n element.classList.remove(classNames.groupListItem);\n element.setAttribute('role', 'listitem');\n element.classList.add(classNames.listItem);\n }\n }\n }\n };\n Virtualization.prototype.findDSAndIndexFromId = function (ds, fields) {\n var _this = this;\n var resultJSON = {};\n fields = this.listViewInstance.getElementUID(fields);\n if (!isNullOrUndefined(fields)) {\n ds.some(function (data, index) {\n if (fields[_this.listViewInstance.fields.id] && fields[_this.listViewInstance.fields.id] === (data[_this.listViewInstance.fields.id] && data[_this.listViewInstance.fields.id]) || fields === data) {\n resultJSON.index = index;\n resultJSON.data = data;\n return true;\n } else {\n return false;\n }\n });\n }\n return resultJSON;\n };\n Virtualization.prototype.getSelectedItems = function () {\n var _this = this;\n if (!isNullOrUndefined(this.activeIndex) || this.listViewInstance.showCheckBox && this.uiIndices.activeIndices.length) {\n var dataCollection = [];\n var textCollection = [];\n if (typeof this.listViewInstance.dataSource[0] === 'string' || typeof this.listViewInstance.dataSource[0] === 'number') {\n var curViewDS_1 = this.listViewInstance.curViewDS;\n if (this.listViewInstance.showCheckBox) {\n var indices = this.uiIndices.activeIndices;\n for (var i = 0; i < indices.length; i++) {\n dataCollection.push(curViewDS_1[indices[i]]);\n }\n return {\n text: dataCollection,\n data: dataCollection,\n index: this.uiIndices.activeIndices.map(function (index) {\n return _this.listViewInstance.dataSource.indexOf(curViewDS_1[index]);\n })\n };\n } else {\n return {\n text: curViewDS_1[this.activeIndex],\n data: curViewDS_1[this.activeIndex],\n index: this.listViewInstance.dataSource.indexOf(curViewDS_1[this.activeIndex])\n };\n }\n } else {\n var curViewDS_2 = this.listViewInstance.curViewDS;\n var text = this.listViewInstance.fields.text;\n if (this.listViewInstance.showCheckBox) {\n var indexArray = this.uiIndices.activeIndices;\n for (var i = 0; i < indexArray.length; i++) {\n textCollection.push(curViewDS_2[indexArray[i]][\"\" + text]);\n dataCollection.push(curViewDS_2[indexArray[parseInt(i.toString(), 10)]]);\n }\n var dataSource_1 = this.listViewInstance.dataSource instanceof DataManager ? curViewDS_2 : this.listViewInstance.dataSource;\n return {\n text: textCollection,\n data: dataCollection,\n index: this.uiIndices.activeIndices.map(function (index) {\n return dataSource_1.indexOf(curViewDS_2[index]);\n })\n };\n } else {\n var dataSource = this.listViewInstance.dataSource instanceof DataManager ? curViewDS_2 : this.listViewInstance.dataSource;\n return {\n text: curViewDS_2[this.activeIndex][this.listViewInstance.fields.text],\n data: curViewDS_2[this.activeIndex],\n index: dataSource.indexOf(curViewDS_2[this.activeIndex])\n };\n }\n }\n } else {\n return undefined;\n }\n };\n Virtualization.prototype.selectItem = function (obj) {\n var _this = this;\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n var isSelected = this.activeIndex === resutJSON.index;\n var isChecked_1;\n this.activeIndex = resutJSON.index;\n if (this.listViewInstance.showCheckBox) {\n if (this.uiIndices.activeIndices.indexOf(resutJSON.index) === -1) {\n isChecked_1 = true;\n this.uiIndices.activeIndices.push(resutJSON.index);\n } else {\n isChecked_1 = false;\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(resutJSON.index), 1);\n }\n if (this.listViewInstance.curUL.querySelector('.' + classNames.focused)) {\n this.listViewInstance.curUL.querySelector('.' + classNames.focused).classList.remove(classNames.focused);\n }\n }\n if (this.listViewInstance.getLiFromObjOrElement(obj)) {\n if (this.listViewInstance.showCheckBox) {\n this.listViewInstance.setCheckboxLI(this.listViewInstance.getLiFromObjOrElement(obj));\n } else {\n this.listViewInstance.setSelectLI(this.listViewInstance.getLiFromObjOrElement(obj));\n }\n } else {\n var eventArgs_1;\n if (typeof this.listViewInstance.dataSource[0] === 'string' || typeof this.listViewInstance.dataSource[0] === 'number') {\n eventArgs_1 = {\n text: this.listViewInstance.curViewDS[this.activeIndex],\n data: this.listViewInstance.curViewDS[this.activeIndex],\n index: this.activeIndex\n };\n } else {\n var curViewDS = this.listViewInstance.curViewDS;\n eventArgs_1 = {\n text: curViewDS[this.activeIndex][this.listViewInstance.fields.text],\n data: curViewDS[this.activeIndex],\n index: this.activeIndex\n };\n }\n if (this.listViewInstance.showCheckBox) {\n this.listViewInstance.trigger('select', eventArgs_1, function (observedArgs) {\n if (observedArgs.cancel) {\n if (!isChecked_1) {\n eventArgs_1.isChecked = isChecked_1;\n _this.uiIndices.activeIndices.push(resutJSON.index);\n } else {\n eventArgs_1.isChecked = !isChecked_1;\n _this.uiIndices.activeIndices.splice(_this.uiIndices.activeIndices.indexOf(resutJSON.index), 1);\n }\n }\n });\n } else if (!isSelected) {\n this.listViewInstance.removeSelect();\n this.listViewInstance.trigger('select', eventArgs_1, function (observedArgs) {\n if (observedArgs.cancel) {\n _this.activeIndex = undefined;\n }\n });\n }\n }\n } else if (isNullOrUndefined(obj) && !this.listViewInstance.showCheckBox) {\n this.listViewInstance.removeSelect();\n this.activeIndex = undefined;\n }\n };\n Virtualization.prototype.enableItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n this.uiIndices.disabledItemIndices.splice(this.uiIndices.disabledItemIndices.indexOf(resutJSON.index), 1);\n }\n };\n Virtualization.prototype.disableItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length && this.uiIndices.disabledItemIndices.indexOf(resutJSON.index) === -1) {\n this.uiIndices.disabledItemIndices.push(resutJSON.index);\n }\n };\n Virtualization.prototype.showItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n this.uiIndices.hiddenItemIndices.splice(this.uiIndices.hiddenItemIndices.indexOf(resutJSON.index), 1);\n }\n };\n Virtualization.prototype.hideItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length && this.uiIndices.hiddenItemIndices.indexOf(resutJSON.index) === -1) {\n this.uiIndices.hiddenItemIndices.push(resutJSON.index);\n }\n };\n Virtualization.prototype.removeItem = function (obj) {\n var dataSource;\n var curViewDS = this.listViewInstance.curViewDS;\n var resutJSON = this.findDSAndIndexFromId(curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n dataSource = resutJSON.data;\n if (curViewDS[resutJSON.index - 1] && curViewDS[resutJSON.index - 1].isHeader && curViewDS[resutJSON.index - 1].items.length === 1) {\n this.removeUiItem(resutJSON.index - 1);\n this.removeUiItem(resutJSON.index - 1);\n } else {\n this.removeUiItem(resutJSON.index);\n }\n }\n var listDataSource = this.listViewInstance.dataSource instanceof DataManager ? this.listViewInstance.localData : this.listViewInstance.dataSource;\n var index = listDataSource.indexOf(dataSource);\n if (index !== -1) {\n listDataSource.splice(index, 1);\n this.listViewInstance.setViewDataSource(listDataSource);\n }\n // recollect all the list item into collection\n this.listViewInstance.liCollection = this.listViewInstance.curUL.querySelectorAll('li');\n };\n // eslint-disable-next-line\n Virtualization.prototype.setCheckboxLI = function (li, e) {\n var index = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n this.activeIndex = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n if (li.classList.contains(classNames.selected)) {\n if (this.uiIndices.activeIndices.indexOf(index) === -1) {\n this.uiIndices.activeIndices.push(index);\n }\n } else {\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(index), 1);\n }\n };\n // eslint-disable-next-line\n Virtualization.prototype.setSelectLI = function (li, e) {\n this.activeIndex = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n };\n Virtualization.prototype.checkedItem = function (checked) {\n if (checked) {\n this.uiIndices.activeIndices = [];\n this.activeIndex = undefined;\n var data = this.listViewInstance.curViewDS;\n for (var index = 0; index < data.length; index++) {\n if (!data[index].isHeader) {\n this.uiIndices.activeIndices.push(index);\n }\n }\n } else {\n this.activeIndex = undefined;\n this.uiIndices.activeIndices = [];\n }\n };\n Virtualization.prototype.addUiItem = function (index) {\n // virtually new add list item based on the scollbar position\n // if the scroll bar is at the top, just pretend the new item has been added since no UI\n // change is required for the item that has been added at last but when scroll bar is at the bottom\n // just detach top and inject into bottom to mimic new item is added\n var curViewDs = this.listViewInstance.curViewDS;\n this.changeUiIndices(index, true);\n if (this.activeIndex && this.activeIndex >= index) {\n this.activeIndex++;\n }\n if (this.listViewInstance.showCheckBox && curViewDs[index][this.listViewInstance.fields.isChecked]) {\n this.uiIndices.activeIndices.push(index);\n }\n if (!parseFloat(this.bottomElement.style.height) && !parseFloat(this.topElement.style.height)) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) + this.listItemHeight + 'px';\n }\n if (parseFloat(this.bottomElement.style.height)) {\n var liItem = this.listViewInstance.curUL.lastElementChild.previousSibling;\n var target = this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 1]) || this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 2]);\n if (target) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) + this.listItemHeight + 'px';\n this.updateUI(liItem, index, target);\n }\n } else {\n var liItem = this.listViewInstance.curUL.firstElementChild.nextSibling;\n var target = void 0;\n if (Object.keys(this.listViewInstance.curViewDS).length - 1 === index) {\n target = this.listViewInstance.curUL.lastElementChild;\n } else {\n target = this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 1]) || this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 2]);\n }\n this.topElement.style.height = parseFloat(this.topElement.style.height) + this.listItemHeight + 'px';\n this.uiFirstIndex++;\n this.uiLastIndex++;\n if (target) {\n this.updateUI(liItem, index, target);\n if (this.listViewInstance.isWindow === true) {\n window.scrollTo(0, pageYOffset + this.listItemHeight);\n } else {\n this.listViewInstance.element.scrollTop += this.listItemHeight;\n }\n }\n }\n this.totalHeight += this.listItemHeight;\n this.listDiff = Math.round(parseFloat(this.topElement.style.height) / this.listItemHeight);\n };\n Virtualization.prototype.removeUiItem = function (index) {\n this.totalHeight -= this.listItemHeight;\n var curViewDS = this.listViewInstance.curViewDS[index];\n var liItem = this.listViewInstance.getLiFromObjOrElement(curViewDS);\n this.listViewInstance.curViewDS.splice(index, 1);\n if (this.activeIndex && this.activeIndex >= index) {\n this.activeIndex--;\n }\n if (liItem) {\n if (this.domItemCount > Object.keys(this.listViewInstance.curViewDS).length) {\n detach(liItem);\n this.domItemCount--;\n this.uiLastIndex--;\n this.totalHeight = 0;\n } else {\n if (liItem.classList.contains(classNames.disable)) {\n liItem.classList.remove(classNames.disable);\n this.uiIndices.disabledItemIndices.splice(this.uiIndices.disabledItemIndices.indexOf(index), 1);\n }\n if (liItem.style.display === 'none') {\n liItem.style.display = '';\n this.uiIndices.hiddenItemIndices.splice(this.uiIndices.hiddenItemIndices.indexOf(index), 1);\n }\n if (this.listViewInstance.showCheckBox && liItem.classList.contains(classNames.selected)) {\n this.listViewInstance.removeSelect();\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(index), 1);\n var checklistElement = liItem.querySelector('.' + classNames.checkboxWrapper);\n checklistElement.removeAttribute('aria-checked');\n checklistElement.firstElementChild.classList.remove(classNames.checked);\n if (liItem.classList.contains(classNames.focused)) {\n liItem.classList.remove(classNames.focused);\n this.activeIndex = undefined;\n }\n } else if (liItem.classList.contains(classNames.selected)) {\n this.listViewInstance.removeSelect();\n this.activeIndex = undefined;\n }\n if (!parseFloat(this.bottomElement.style.height) && !parseFloat(this.topElement.style.height)) {\n this.updateUI(liItem, this.uiLastIndex, this.bottomElement);\n } else if (parseFloat(this.bottomElement.style.height)) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) - this.listItemHeight + 'px';\n this.updateUI(liItem, this.uiLastIndex, this.bottomElement);\n } else {\n this.topElement.style.height = parseFloat(this.topElement.style.height) - this.listItemHeight + 'px';\n this.updateUI(liItem, this.uiFirstIndex - 1, this.topElement.nextSibling);\n this.uiLastIndex--;\n this.uiFirstIndex--;\n }\n }\n }\n this.changeUiIndices(index, false);\n this.listDiff = Math.round(parseFloat(this.topElement.style.height) / this.listItemHeight);\n };\n Virtualization.prototype.changeUiIndices = function (index, increment) {\n var keys = Object.keys(this.uiIndices);\n for (var ind = 0; ind < keys.length; ind++) {\n this.uiIndices[keys[ind]] = this.uiIndices[keys[ind]].map(function (i) {\n if (i >= index) {\n return increment ? ++i : --i;\n } else {\n return i;\n }\n });\n }\n };\n Virtualization.prototype.addItem = function (data, fields, dataSource, index) {\n for (var i = 0; i < data.length; i++) {\n var currentItem = data[i];\n // push the given data to main data array\n dataSource = this.listViewInstance.addItemAtIndex(index, dataSource, currentItem);\n // recalculate all the group data or other datasource related things\n this.listViewInstance.setViewDataSource(dataSource);\n // render list items for first time due to no datasource present earlier\n if (!this.domItemCount) {\n // fresh rendering for first time\n if ((this.listViewInstance.template || this.listViewInstance.groupTemplate) && !this.isNgTemplate()) {\n this.listViewInstance.listBaseOption.template = null;\n this.listViewInstance.listBaseOption.groupTemplate = null;\n this.listViewInstance.listBaseOption.itemCreated = this.createUIItem.bind(this);\n }\n this.uiVirtualization();\n // when expected expected DOM count doesn't meet the condition we need to create and inject new item into DOM\n } else if (this.domItemCount < this.expectedDomItemCount) {\n var ds = this.listViewInstance.findItemFromDS(dataSource, fields);\n if (ds instanceof Array) {\n if (this.listViewInstance.ulElement) {\n var index_1 = this.listViewInstance.curViewDS.indexOf(currentItem);\n // inject new list item into DOM\n this.createAndInjectNewItem(currentItem, index_1);\n // check for group header item\n var curViewDS = this.listViewInstance.curViewDS[index_1 - 1];\n if (curViewDS && curViewDS.isHeader && curViewDS.items.length === 1) {\n // target group item index in datasource\n --index_1;\n // inject new group header into DOM for previously created list item\n this.createAndInjectNewItem(curViewDS, index_1);\n }\n }\n // recollect all the list item into collection\n this.listViewInstance.liCollection = this.listViewInstance.curUL.querySelectorAll('li');\n }\n } else {\n var index_2 = this.listViewInstance.curViewDS.indexOf(currentItem);\n // virtually new add list item based on the scollbar position\n this.addUiItem(index_2);\n // check for group header item needs to be added\n var curViewDS = this.listViewInstance.curViewDS[index_2 - 1];\n if (curViewDS && curViewDS.isHeader && curViewDS.items.length === 1) {\n this.addUiItem(index_2 - 1);\n }\n }\n }\n };\n Virtualization.prototype.createAndInjectNewItem = function (itemData, index) {\n // generate li item for given datasource\n var target;\n var li = ListBase.createListItemFromJson(this.listViewInstance.createElement, [itemData], this.listViewInstance.listBaseOption, null, null, this.listViewInstance);\n // check for target element whether to insert before last item or group item\n if (Object.keys(this.listViewInstance.curViewDS).length - 1 === index) {\n target = this.listViewInstance.curUL.lastElementChild;\n } else {\n // target group header's first child item to append its header\n target = this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index + 1]) || this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index + 2]);\n }\n if (this.listViewInstance.fields.groupBy && this.listViewInstance.curViewDS[index + 1] && this.listViewInstance.curViewDS[index + 1].isHeader) {\n var targetEle = this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index - 1]);\n if (targetEle) {\n target = targetEle.nextElementSibling;\n }\n }\n // insert before the target element\n this.listViewInstance.ulElement.insertBefore(li[0], target);\n // increment internal DOM count, last index count for new element\n this.domItemCount++;\n if (this.bottomElementHeight <= 0) {\n this.uiLastIndex++;\n }\n // recalculate the current item height, to avoid jumpy scroller\n this.refreshItemHeight();\n };\n Virtualization.prototype.createUIItem = function (args) {\n if (!args.item.classList.contains('e-list-group-item')) {\n this.templateData = args.curData.isHeader ? args.curData.items[0] : args.curData;\n if (this.listViewInstance.showCheckBox) {\n this.listViewInstance.renderCheckbox(args);\n if (!isNullOrUndefined(this.listViewInstance.virtualCheckBox) && !isNullOrUndefined(this.listViewInstance.virtualCheckBox.outerHTML)) {\n var div_1 = document.createElement('div');\n var commonTemplate = '<div class=\"e-text-content\" role=\"presentation\"> ' + '<span class=\"e-list-text\"> ${' + this.listViewInstance.fields.text + '} </span></div>';\n var templateFunction = compile(this.listViewInstance.template || commonTemplate, this.listViewInstance);\n var nodes = templateFunction(this.templateData, this.listViewInstance);\n if (this.listViewInstance.template && this.listViewInstance.isReact) {\n this.listViewInstance.renderReactTemplates();\n }\n [].slice.call(nodes).forEach(function (ele) {\n div_1.appendChild(ele);\n });\n if (div_1.children && div_1.children[0]) {\n div_1.children[0].classList.add('e-checkbox');\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n div_1.children[0].classList.add('e-checkbox-left');\n } else {\n div_1.children[0].classList.add('e-checkbox-right');\n }\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n div_1.children[0].insertBefore(this.listViewInstance.virtualCheckBox, div_1.childNodes[0].children[0]);\n } else {\n div_1.children[0].appendChild(this.listViewInstance.virtualCheckBox);\n }\n while (args.item.lastChild) {\n args.item.removeChild(args.item.lastChild);\n }\n [].slice.call(div_1.children).forEach(function (ele) {\n args.item.appendChild(ele);\n });\n }\n }\n }\n }\n };\n Virtualization.prototype.reRenderUiVirtualization = function () {\n this.wireScrollEvent(true);\n if (this.listViewInstance.contentContainer) {\n detach(this.listViewInstance.contentContainer);\n }\n this.listViewInstance.preRender();\n // resetting the dom count to 0, to avoid edge case of dataSource suddenly becoming zero\n // and then manually adding item using addItem API\n this.domItemCount = 0;\n this.listViewInstance.header();\n this.listViewInstance.setLocalData();\n };\n Virtualization.prototype.updateUI = function (element, index, targetElement) {\n var onChange = this.isNgTemplate() ? this.onNgChange : this.onChange;\n if (this.listViewInstance.template || this.listViewInstance.groupTemplate) {\n var curViewDS = this.listViewInstance.curViewDS[index];\n element.dataset.uid = curViewDS[this.listViewInstance.fields.id] ? curViewDS[this.listViewInstance.fields.id] : ListBase.generateId();\n onChange(curViewDS, element, this);\n } else {\n this.updateUiContent(element, index);\n }\n this.changeElementAttributes(element, index);\n if (targetElement) {\n this.listViewInstance.ulElement.insertBefore(element, targetElement);\n }\n };\n /**\n * Handles the UI change in vue for the list view.\n *\n * @param {DataSource} newData - The new data source for the list view.\n * @param {ElementContext} listElement - The HTML element context for the list view.\n * @param {Virtualization} virtualThis - The virtualization context for the list view.\n * @returns {void}\n */\n Virtualization.prototype.onChange = function (newData, listElement, virtualThis) {\n var liItem = ListBase.createListItemFromJson(virtualThis.listViewInstance.createElement, [newData], virtualThis.listViewInstance.listBaseOption, null, null, virtualThis.listViewInstance);\n if (virtualThis.listViewInstance.isReact) {\n virtualThis.listViewInstance.renderReactTemplates();\n }\n while (listElement.lastChild) {\n listElement.removeChild(listElement.lastChild);\n }\n [].slice.call(liItem[0].children).forEach(function (ele) {\n listElement.appendChild(ele);\n });\n };\n Virtualization.prototype.onNgChange = function (newData, listElement, virtualThis) {\n // compile given target element with template for new data\n var templateCompiler = compile(virtualThis.listViewInstance.template);\n var resultElement = templateCompiler(newData);\n while (listElement.lastChild) {\n listElement.removeChild(listElement.lastChild);\n }\n listElement.appendChild(resultElement[0]);\n };\n Virtualization.prototype.getModuleName = function () {\n return 'virtualization';\n };\n Virtualization.prototype.destroy = function () {\n this.wireScrollEvent(true);\n this.topElement = null;\n this.bottomElement = null;\n };\n return Virtualization;\n}();\nexport { Virtualization };","/* eslint-disable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\nimport { createElement, attributes, addClass, removeClass, detach, classList } from '@syncfusion/ej2-base';\nimport { closest, formatUnit, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nvar CLASSNAMES = {\n RTL: 'e-rtl',\n DISABLE: 'e-disabled',\n INPUT: 'e-input',\n TEXTAREA: 'e-multi-line-input',\n INPUTGROUP: 'e-input-group',\n FLOATINPUT: 'e-float-input',\n FLOATLINE: 'e-float-line',\n FLOATTEXT: 'e-float-text',\n FLOATTEXTCONTENT: 'e-float-text-content',\n CLEARICON: 'e-clear-icon',\n CLEARICONHIDE: 'e-clear-icon-hide',\n LABELTOP: 'e-label-top',\n LABELBOTTOM: 'e-label-bottom',\n NOFLOATLABEL: 'e-no-float-label',\n INPUTCUSTOMTAG: 'e-input-custom-tag',\n FLOATCUSTOMTAG: 'e-float-custom-tag'\n};\n/**\n * Defines the constant attributes for the input element container.\n */\nexport var containerAttributes = ['title', 'style', 'class'];\n/**\n * Defines the constant focus class for the input element.\n */\nexport var TEXTBOX_FOCUS = 'e-input-focus';\n/**\n * Base for Input creation through util methods.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Input;\n(function (Input) {\n var privateInputObj = {\n container: null,\n buttons: [],\n clearButton: null\n };\n var floatType;\n var isBindClearAction = true;\n /**\n * Create a wrapper to input element with multiple span elements and set the basic properties to input based components.\n * ```\n * E.g : Input.createInput({ element: element, floatLabelType : \"Auto\", properties: { placeholder: 'Search' } });\n * ```\n *\n */\n function createInput(args, internalCreateElement) {\n args.element.__eventHandlers = {};\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var inputObject = {\n container: null,\n buttons: [],\n clearButton: null\n };\n floatType = args.floatLabelType;\n isBindClearAction = args.bindClearAction;\n if (isNullOrUndefined(args.floatLabelType) || args.floatLabelType === 'Never') {\n inputObject.container = createInputContainer(args, CLASSNAMES.INPUTGROUP, CLASSNAMES.INPUTCUSTOMTAG, 'span', makeElement);\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n addClass([args.element], CLASSNAMES.INPUT);\n inputObject.container.appendChild(args.element);\n } else {\n createFloatingInput(args, inputObject, makeElement);\n }\n bindInitialEvent(args);\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.showClearButton) && args.properties.showClearButton) {\n setClearButton(args.properties.showClearButton, args.element, inputObject, true, makeElement);\n inputObject.clearButton.setAttribute('role', 'button');\n if (inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n addClass([inputObject.container], CLASSNAMES.INPUTGROUP);\n }\n }\n if (!isNullOrUndefined(args.buttons)) {\n for (var i = 0; i < args.buttons.length; i++) {\n inputObject.buttons.push(appendSpan(args.buttons[i], inputObject.container, makeElement));\n }\n }\n if (!isNullOrUndefined(args.element) && args.element.tagName === 'TEXTAREA') {\n addClass([inputObject.container], CLASSNAMES.TEXTAREA);\n }\n validateInputType(inputObject.container, args.element);\n inputObject = setPropertyValue(args, inputObject);\n createSpanElement(inputObject.container, makeElement);\n privateInputObj = inputObject;\n return inputObject;\n }\n Input.createInput = createInput;\n function bindFocusEventHandler(args) {\n var parent = getParentNode(args.element);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline') || parent.classList.contains('e-filled')) {\n parent.classList.add('e-input-focus');\n }\n if (args.floatLabelType !== 'Never') {\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n }\n }\n function bindBlurEventHandler(args) {\n var parent = getParentNode(args.element);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline') || parent.classList.contains('e-filled')) {\n parent.classList.remove('e-input-focus');\n }\n if (args.floatLabelType !== 'Never') {\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n }\n }\n function bindInputEventHandler(args) {\n checkInputValue(args.floatLabelType, args.element);\n }\n function bindInitialEvent(args) {\n checkInputValue(args.floatLabelType, args.element);\n var focusHandler = function () {\n return bindFocusEventHandler(args);\n };\n var blurHandler = function () {\n return bindBlurEventHandler(args);\n };\n var inputHandler = function () {\n return bindInputEventHandler(args);\n };\n args.element.addEventListener('focus', focusHandler);\n args.element.addEventListener('blur', blurHandler);\n args.element.addEventListener('input', inputHandler);\n args.element.__eventHandlers['inputFocusHandler'] = {\n focusHandler: focusHandler\n };\n args.element.__eventHandlers['inputBlurHandler'] = {\n blurHandler: blurHandler\n };\n args.element.__eventHandlers['inputHandler'] = {\n inputHandler: inputHandler\n };\n }\n Input.bindInitialEvent = bindInitialEvent;\n function unbindInitialEvent(args) {\n if (!isNullOrUndefined(args.element)) {\n if (!isNullOrUndefined(args.element.__eventHandlers)) {\n if (!isNullOrUndefined(args.element.__eventHandlers['inputFocusHandler']) && !isNullOrUndefined(args.element.__eventHandlers['inputBlurHandler']) && !isNullOrUndefined(args.element.__eventHandlers['inputHandler'])) {\n var focusHandler_1 = args.element.__eventHandlers['inputFocusHandler'].focusHandler;\n var blurHandler_1 = args.element.__eventHandlers['inputBlurHandler'].blurHandler;\n var inputHandler_1 = args.element.__eventHandlers['inputHandler'].inputHandler;\n args.element.removeEventListener('focus', focusHandler_1);\n args.element.removeEventListener('blur', blurHandler_1);\n args.element.removeEventListener('input', inputHandler_1);\n // Clean up stored bound functions\n delete args.element.__eventHandlers['inputFocusHandler'];\n delete args.element.__eventHandlers['inputBlurHandler'];\n delete args.element.__eventHandlers['inputHandler'];\n }\n }\n }\n }\n function checkInputValue(floatLabelType, inputElement) {\n var inputValue = inputElement.value;\n var inputParent = inputElement.parentElement;\n var grandParent = inputParent && inputParent.parentElement;\n if (inputValue !== '' && !isNullOrUndefined(inputValue)) {\n if (inputParent && inputParent.classList.contains('e-input-group')) {\n inputParent.classList.add('e-valid-input');\n } else if (grandParent && grandParent.classList.contains('e-input-group')) {\n grandParent.classList.add('e-valid-input');\n }\n } else if (floatLabelType !== 'Always') {\n if (inputParent && inputParent.classList.contains('e-input-group')) {\n inputParent.classList.remove('e-valid-input');\n } else if (grandParent && grandParent.classList.contains('e-input-group')) {\n grandParent.classList.remove('e-valid-input');\n }\n }\n }\n function _focusFn() {\n var label = getParentNode(this).getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function _blurFn() {\n var parent = getParentNode(this);\n if (parent.getElementsByTagName('textarea')[0] ? parent.getElementsByTagName('textarea')[0].value === '' : parent.getElementsByTagName('input')[0].value === '') {\n var label = parent.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function wireFloatingEvents(element) {\n element.addEventListener('focus', _focusFn);\n element.addEventListener('blur', _blurFn);\n }\n Input.wireFloatingEvents = wireFloatingEvents;\n function unwireFloatingEvents(element) {\n if (!isNullOrUndefined(element)) {\n element.removeEventListener('focus', _focusFn);\n element.removeEventListener('blur', _blurFn);\n }\n }\n function inputEventHandler(args) {\n validateLabel(args.element, args.floatLabelType);\n }\n function blurEventHandler(args) {\n validateLabel(args.element, args.floatLabelType);\n }\n function createFloatingInput(args, inputObject, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.floatLabelType === 'Auto') {\n wireFloatingEvents(args.element);\n }\n if (isNullOrUndefined(inputObject.container)) {\n inputObject.container = createInputContainer(args, CLASSNAMES.FLOATINPUT, CLASSNAMES.FLOATCUSTOMTAG, 'div', makeElement);\n inputObject.container.classList.add(CLASSNAMES.INPUTGROUP);\n if (args.element.parentNode) {\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n }\n } else {\n if (!isNullOrUndefined(args.customTag)) {\n inputObject.container.classList.add(CLASSNAMES.FLOATCUSTOMTAG);\n }\n inputObject.container.classList.add(CLASSNAMES.FLOATINPUT);\n }\n var floatLinelement = makeElement('span', {\n className: CLASSNAMES.FLOATLINE\n });\n var floatLabelElement = makeElement('label', {\n className: CLASSNAMES.FLOATTEXT\n });\n if (!isNullOrUndefined(args.element.id) && args.element.id !== '') {\n floatLabelElement.id = 'label_' + args.element.id.replace(/ /g, '_');\n attributes(args.element, {\n 'aria-labelledby': floatLabelElement.id\n });\n }\n if (!isNullOrUndefined(args.element.placeholder) && args.element.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.element.placeholder);\n args.element.removeAttribute('placeholder');\n }\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.placeholder) && args.properties.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.properties.placeholder);\n }\n if (!floatLabelElement.innerText) {\n inputObject.container.classList.add(CLASSNAMES.NOFLOATLABEL);\n }\n if (inputObject.container.classList.contains('e-float-icon-left')) {\n var inputWrap = inputObject.container.querySelector('.e-input-in-wrap');\n inputWrap.appendChild(args.element);\n inputWrap.appendChild(floatLinelement);\n inputWrap.appendChild(floatLabelElement);\n } else {\n inputObject.container.appendChild(args.element);\n inputObject.container.appendChild(floatLinelement);\n inputObject.container.appendChild(floatLabelElement);\n }\n updateLabelState(args.element.value, floatLabelElement);\n if (args.floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([floatLabelElement], CLASSNAMES.LABELBOTTOM);\n }\n addClass([floatLabelElement], CLASSNAMES.LABELTOP);\n }\n if (args.floatLabelType === 'Auto') {\n var inputFloatHandler = function () {\n return inputEventHandler(args);\n };\n var blurFloatHandler = function () {\n return blurEventHandler(args);\n };\n // Add event listeners using the defined functions\n args.element.addEventListener('input', inputFloatHandler);\n args.element.addEventListener('blur', blurFloatHandler);\n // Store the event handler functions to remove them later\n args.element.__eventHandlers['floatInputHandler'] = {\n inputFloatHandler: inputFloatHandler\n };\n args.element.__eventHandlers['floatBlurHandler'] = {\n blurFloatHandler: blurFloatHandler\n };\n } else {\n unWireFloatLabelEvents(args);\n }\n if (!isNullOrUndefined(args.element.getAttribute('id'))) {\n floatLabelElement.setAttribute('for', args.element.getAttribute('id'));\n }\n }\n function unWireFloatLabelEvents(args) {\n if (!isNullOrUndefined(args.element) && !isNullOrUndefined(args.element.__eventHandlers) && !isNullOrUndefined(args.element.__eventHandlers['floatInputHandler']) && !isNullOrUndefined(args.element.__eventHandlers['floatBlurHandler'])) {\n var inputFloatHandler = args.element.__eventHandlers['floatInputHandler'].inputFloatHandler;\n var blurFloatHandler = args.element.__eventHandlers['floatBlurHandler'].blurFloatHandler;\n // Remove the event listeners using the defined functions\n args.element.removeEventListener('input', inputFloatHandler);\n args.element.removeEventListener('blur', blurFloatHandler);\n // Clean up stored event handler functions\n delete args.element.__eventHandlers['floatInputHandler'];\n delete args.element.__eventHandlers['floatBlurHandler'];\n }\n }\n function checkFloatLabelType(type, container) {\n if (type === 'Always' && container.classList.contains('e-outline')) {\n container.classList.add('e-valid-input');\n }\n }\n function setPropertyValue(args, inputObject) {\n if (!isNullOrUndefined(args.properties)) {\n for (var _i = 0, _a = Object.keys(args.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n setCssClass(args.properties.cssClass, [inputObject.container]);\n checkFloatLabelType(args.floatLabelType, inputObject.container);\n break;\n case 'enabled':\n setEnabled(args.properties.enabled, args.element, args.floatLabelType, inputObject.container);\n break;\n case 'enableRtl':\n setEnableRtl(args.properties.enableRtl, [inputObject.container]);\n break;\n case 'placeholder':\n setPlaceholder(args.properties.placeholder, args.element);\n break;\n case 'readonly':\n setReadonly(args.properties.readonly, args.element);\n break;\n }\n }\n }\n return inputObject;\n }\n function updateIconState(value, button, readonly) {\n if (!isNullOrUndefined(button)) {\n if (value && !readonly) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n } else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n }\n function updateLabelState(value, label, element) {\n if (element === void 0) {\n element = null;\n }\n if (value) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n } else {\n var isNotFocused = element != null ? element !== document.activeElement : true;\n if (isNotFocused) {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function getParentNode(element) {\n var parentNode = isNullOrUndefined(element.parentNode) ? element : element.parentNode;\n if (parentNode && parentNode.classList.contains('e-input-in-wrap')) {\n parentNode = parentNode.parentNode;\n }\n return parentNode;\n }\n /**\n * To create clear button.\n */\n function createClearButton(element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = makeElement('span', {\n className: CLASSNAMES.CLEARICON\n });\n var container = inputObject.container;\n if (!isNullOrUndefined(initial)) {\n container.appendChild(button);\n } else {\n var baseElement = inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT) ? inputObject.container.querySelector('.' + CLASSNAMES.FLOATTEXT) : element;\n baseElement.insertAdjacentElement('afterend', button);\n }\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n wireClearBtnEvents(element, button, container);\n button.setAttribute('aria-label', 'close');\n return button;\n }\n function clickHandler(event, element, button) {\n if (!(element.classList.contains(CLASSNAMES.DISABLE) || element.readOnly)) {\n event.preventDefault();\n if (element !== document.activeElement) {\n element.focus();\n }\n element.value = '';\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n function inputHandler(element, button) {\n updateIconState(element.value, button);\n }\n function focusHandler(element, button) {\n updateIconState(element.value, button, element.readOnly);\n }\n function blurHandler(element, button) {\n setTimeout(function () {\n if (!isNullOrUndefined(button)) {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n button = !isNullOrUndefined(element) && element.classList.contains('e-combobox') ? null : button;\n }\n }, 200);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function wireClearBtnEvents(element, button, container) {\n if (isBindClearAction === undefined || isBindClearAction) {\n var clickHandlerEvent = function (e) {\n return clickHandler(e, element, button);\n };\n button.addEventListener('click', clickHandlerEvent);\n element.__eventHandlers['clearClickHandler'] = {\n clickHandlerEvent: clickHandlerEvent\n };\n }\n var inputHandlerEvent = function () {\n return inputHandler(element, button);\n };\n var focusHandlerEvent = function () {\n return focusHandler(element, button);\n };\n var blurHandlerEvent = function () {\n return blurHandler(element, button);\n };\n element.addEventListener('input', inputHandlerEvent);\n element.addEventListener('focus', focusHandlerEvent);\n element.addEventListener('blur', blurHandlerEvent);\n // Store the bound functions to remove them later\n element.__eventHandlers['clearInputHandler'] = {\n inputHandlerEvent: inputHandlerEvent\n };\n element.__eventHandlers['clearFocusHandler'] = {\n focusHandlerEvent: focusHandlerEvent\n };\n element.__eventHandlers['clearBlurHandler'] = {\n blurHandlerEvent: blurHandlerEvent\n };\n }\n Input.wireClearBtnEvents = wireClearBtnEvents;\n function unWireClearBtnEvents(element, button) {\n if (!isNullOrUndefined(element) && !isNullOrUndefined(element.__eventHandlers)) {\n if (!isNullOrUndefined(element.__eventHandlers['clearClickHandler'])) {\n var clickHandlerEvent = element.__eventHandlers['clearClickHandler'].clickHandlerEvent;\n if (isBindClearAction === undefined || isBindClearAction) {\n if (!isNullOrUndefined(button)) {\n button.removeEventListener('click', clickHandlerEvent);\n }\n }\n delete element.__eventHandlers['clearClickHandler'];\n }\n if (!isNullOrUndefined(element.__eventHandlers['clearInputHandler']) && !isNullOrUndefined(element.__eventHandlers['clearFocusHandler']) && !isNullOrUndefined(element.__eventHandlers['clearBlurHandler'])) {\n var inputHandlerEvent = element.__eventHandlers['clearInputHandler'].inputHandlerEvent;\n var focusHandlerEvent = element.__eventHandlers['clearFocusHandler'].focusHandlerEvent;\n var blurHandlerEvent = element.__eventHandlers['clearBlurHandler'].blurHandlerEvent;\n element.removeEventListener('input', inputHandlerEvent);\n element.removeEventListener('focus', focusHandlerEvent);\n element.removeEventListener('blur', blurHandlerEvent);\n // Clean up stored Event functions\n delete element.__eventHandlers['clearInputHandler'];\n delete element.__eventHandlers['clearFocusHandler'];\n delete element.__eventHandlers['clearBlurHandler'];\n }\n }\n }\n function destroy(args, button) {\n if (button === void 0) {\n button = null;\n }\n unbindInitialEvent(args);\n if (args.floatLabelType === 'Auto') {\n unWireFloatLabelEvents(args);\n }\n if (args.properties.showClearButton) {\n unWireClearBtnEvents(args.element, button);\n }\n if (!isNullOrUndefined(args.buttons)) {\n _internalRipple(false, null, args.buttons);\n }\n unwireFloatingEvents(args.element);\n if (!isNullOrUndefined(args.element)) {\n delete args.element.__eventHandlers;\n if (args.element.classList.contains(CLASSNAMES.INPUT)) {\n args.element.classList.remove(CLASSNAMES.INPUT);\n }\n }\n privateInputObj = null;\n }\n Input.destroy = destroy;\n function validateLabel(element, floatLabelType) {\n var parent = getParentNode(element);\n if (parent.classList.contains(CLASSNAMES.FLOATINPUT) && floatLabelType === 'Auto') {\n var label = getParentNode(element).getElementsByClassName('e-float-text')[0];\n updateLabelState(element.value, label, element);\n }\n }\n /**\n * To create input box contianer.\n */\n function createInputContainer(args, className, tagClass, tag, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container;\n if (!isNullOrUndefined(args.customTag)) {\n container = makeElement(args.customTag, {\n className: className\n });\n container.classList.add(tagClass);\n } else {\n container = makeElement(tag, {\n className: className\n });\n }\n container.classList.add('e-control-wrapper');\n return container;\n }\n function encodePlaceHolder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanEle = document.createElement('span');\n spanEle.innerHTML = '<input placeholder=\"' + placeholder + '\"/>';\n var hiddenInput = spanEle.children[0];\n result = hiddenInput.placeholder;\n }\n return result;\n }\n /**\n * Sets the value to the input element.\n * ```\n * E.g : Input.setValue('content', element, \"Auto\", true );\n * ```\n *\n * @param {string} value - Specify the value of the input element.\n * @param {HTMLInputElement | HTMLTextAreaElement} element - The element on which the specified value is updated.\n * @param {string} floatLabelType - Specify the float label type of the input element.\n * @param {boolean} clearButton - Boolean value to specify whether the clear icon is enabled / disabled on the input.\n */\n function setValue(value, element, floatLabelType, clearButton) {\n element.value = value;\n if (floatLabelType !== 'Never') {\n calculateWidth(element, element.parentElement);\n }\n if (!isNullOrUndefined(floatLabelType) && floatLabelType === 'Auto') {\n validateLabel(element, floatLabelType);\n }\n if (!isNullOrUndefined(clearButton) && clearButton) {\n var parentElement = getParentNode(element);\n if (!isNullOrUndefined(parentElement)) {\n var button = parentElement.getElementsByClassName(CLASSNAMES.CLEARICON)[0];\n if (!isNullOrUndefined(button)) {\n if (element.value && !isNullOrUndefined(parentElement) && parentElement.classList.contains('e-input-focus')) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n } else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n }\n }\n checkInputValue(floatLabelType, element);\n }\n Input.setValue = setValue;\n /**\n * Sets the single or multiple cssClass to wrapper of input element.\n * ```\n * E.g : Input.setCssClass('e-custom-class', [element]);\n * ```\n *\n * @param {string} cssClass - Css class names which are needed to add.\n * @param {Element[] | NodeList} elements - The elements which are needed to add / remove classes.\n * @param {string} oldClass\n * - Css class names which are needed to remove. If old classes are need to remove, can give this optional parameter.\n */\n function setCssClass(cssClass, elements, oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(cssClass) && cssClass !== '') {\n addClass(elements, cssClass.split(' '));\n }\n }\n Input.setCssClass = setCssClass;\n /**\n * Set the width to the placeholder when it overflows on the button such as spinbutton, clearbutton, icon etc\n * ```\n * E.g : Input.calculateWidth(element, container);\n * ```\n *\n * @param {any} element - Input element which is need to add.\n * @param {HTMLElement} container - The parent element which is need to get the label span to calculate width\n */\n function calculateWidth(element, container, moduleName) {\n if (moduleName !== 'multiselect' && !_isElementVisible(element)) {\n return;\n }\n var elementWidth = moduleName === 'multiselect' ? element : element.clientWidth - parseInt(getComputedStyle(element, null).getPropertyValue('padding-left'), 10);\n if (!isNullOrUndefined(container) && !isNullOrUndefined(container.getElementsByClassName('e-float-text-content')[0])) {\n if (container.getElementsByClassName('e-float-text-content')[0].classList.contains('e-float-text-overflow')) {\n container.getElementsByClassName('e-float-text-content')[0].classList.remove('e-float-text-overflow');\n }\n if (elementWidth < container.getElementsByClassName('e-float-text-content')[0].clientWidth || elementWidth === container.getElementsByClassName('e-float-text-content')[0].clientWidth) {\n container.getElementsByClassName('e-float-text-content')[0].classList.add('e-float-text-overflow');\n }\n }\n }\n Input.calculateWidth = calculateWidth;\n /**\n * Set the width to the wrapper of input element.\n * ```\n * E.g : Input.setWidth('200px', container);\n * ```\n *\n * @param {number | string} width - Width value which is need to add.\n * @param {HTMLElement} container - The element on which the width is need to add.\n */\n function setWidth(width, container) {\n if (typeof width === 'number') {\n container.style.width = formatUnit(width);\n } else if (typeof width === 'string') {\n container.style.width = width.match(/px|%|em/) ? width : formatUnit(width);\n }\n calculateWidth(container.firstChild, container);\n }\n Input.setWidth = setWidth;\n /**\n * Set the placeholder attribute to the input element.\n * ```\n * E.g : Input.setPlaceholder('Search here', element);\n * ```\n *\n * @param {string} placeholder - Placeholder value which is need to add.\n * @param {HTMLInputElement | HTMLTextAreaElement} element - The element on which the placeholder is need to add.\n */\n function setPlaceholder(placeholder, element) {\n placeholder = encodePlaceHolder(placeholder);\n var parentElement = getParentNode(element);\n if (parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var floatTextContent = parentElement.getElementsByClassName('e-float-text-content')[0];\n if (floatTextContent && floatTextContent.children[0]) {\n floatTextContent.children[0].textContent = placeholder;\n } else {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = placeholder;\n }\n parentElement.classList.remove(CLASSNAMES.NOFLOATLABEL);\n element.removeAttribute('placeholder');\n } else {\n parentElement.classList.add(CLASSNAMES.NOFLOATLABEL);\n var floatTextContent = parentElement.getElementsByClassName('e-float-text-content')[0];\n if (floatTextContent) {\n floatTextContent.children[0].textContent = '';\n } else {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n }\n } else {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n attributes(element, {\n 'placeholder': placeholder\n });\n } else {\n element.removeAttribute('placeholder');\n }\n }\n }\n Input.setPlaceholder = setPlaceholder;\n /**\n * Set the read only attribute to the input element\n * ```\n * E.g : Input.setReadonly(true, element);\n * ```\n *\n * @param {boolean} isReadonly\n * - Boolean value to specify whether to set read only. Setting \"True\" value enables read only.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * - The element which is need to enable read only.\n */\n function setReadonly(isReadonly, element, floatLabelType) {\n if (isReadonly) {\n attributes(element, {\n readonly: ''\n });\n } else {\n element.removeAttribute('readonly');\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setReadonly = setReadonly;\n /**\n * Displays the element direction from right to left when its enabled.\n * ```\n * E.g : Input.setEnableRtl(true, [inputObj.container]);\n * ```\n *\n * @param {boolean} isRtl\n * - Boolean value to specify whether to set RTL. Setting \"True\" value enables the RTL mode.\n * @param {Element[] | NodeList} elements\n * - The elements that are needed to enable/disable RTL.\n */\n function setEnableRtl(isRtl, elements) {\n if (isRtl) {\n addClass(elements, CLASSNAMES.RTL);\n } else {\n removeClass(elements, CLASSNAMES.RTL);\n }\n }\n Input.setEnableRtl = setEnableRtl;\n /**\n * Enables or disables the given input element.\n * ```\n * E.g : Input.setEnabled(false, element);\n * ```\n *\n * @param {boolean} isEnable\n * - Boolean value to specify whether to enable or disable.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * - Element to be enabled or disabled.\n */\n function setEnabled(isEnable, element, floatLabelType, inputContainer) {\n var disabledAttrs = {\n 'disabled': '',\n 'aria-disabled': 'true'\n };\n var considerWrapper = isNullOrUndefined(inputContainer) ? false : true;\n if (isEnable) {\n element.classList.remove(CLASSNAMES.DISABLE);\n removeAttributes(disabledAttrs, element);\n if (considerWrapper) {\n removeClass([inputContainer], CLASSNAMES.DISABLE);\n }\n } else {\n element.classList.add(CLASSNAMES.DISABLE);\n addAttributes(disabledAttrs, element);\n if (considerWrapper) {\n addClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setEnabled = setEnabled;\n function setClearButton(isClear, element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (isClear) {\n inputObject.clearButton = createClearButton(element, inputObject, initial, makeElement);\n } else {\n remove(inputObject.clearButton);\n inputObject.clearButton = null;\n }\n }\n Input.setClearButton = setClearButton;\n /**\n * Removing the multiple attributes from the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.removeAttributes({ 'disabled': 'disabled', 'aria-disabled': 'true' }, element);\n * ```\n *\n * @param {string} attrs\n * - Array of attributes which are need to removed from the element.\n * @param {HTMLInputElement | HTMLElement} element\n * - Element on which the attributes are needed to be removed.\n */\n function removeAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n } else {\n element.removeAttribute(key);\n }\n }\n }\n Input.removeAttributes = removeAttributes;\n /**\n * Adding the multiple attributes to the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.addAttributes({ 'id': 'inputpopup' }, element);\n * ```\n *\n * @param {string} attrs\n * - Array of attributes which is added to element.\n * @param {HTMLInputElement | HTMLElement} element\n * - Element on which the attributes are needed to be added.\n */\n function addAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = attrs[\"\" + key];\n } else {\n element.setAttribute(key, attrs[\"\" + key]);\n }\n }\n }\n Input.addAttributes = addAttributes;\n function removeFloating(input) {\n var container = input.container;\n if (!isNullOrUndefined(container) && container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n var inputEle = container.querySelector('textarea') ? container.querySelector('textarea') : container.querySelector('input');\n var placeholder = container.querySelector('.' + CLASSNAMES.FLOATTEXT).textContent;\n var clearButton = container.querySelector('.e-clear-icon') !== null;\n detach(container.querySelector('.' + CLASSNAMES.FLOATLINE));\n detach(container.querySelector('.' + CLASSNAMES.FLOATTEXT));\n classList(container, [CLASSNAMES.INPUTGROUP], [CLASSNAMES.FLOATINPUT]);\n unwireFloatingEvents(inputEle);\n attributes(inputEle, {\n 'placeholder': placeholder\n });\n inputEle.classList.add(CLASSNAMES.INPUT);\n if (!clearButton && inputEle.tagName === 'INPUT') {\n inputEle.removeAttribute('required');\n }\n }\n }\n Input.removeFloating = removeFloating;\n function addFloating(input, type, placeholder, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container = closest(input, '.' + CLASSNAMES.INPUTGROUP);\n floatType = type;\n var customTag = container.tagName;\n customTag = customTag !== 'DIV' && customTag !== 'SPAN' ? customTag : null;\n var args = {\n element: input,\n floatLabelType: type,\n customTag: customTag,\n properties: {\n placeholder: placeholder\n }\n };\n if (type !== 'Never') {\n var iconEle = container.querySelector('.e-clear-icon');\n var inputObj = {\n container: container\n };\n input.classList.remove(CLASSNAMES.INPUT);\n createFloatingInput(args, inputObj, makeElement);\n createSpanElement(inputObj.container, makeElement);\n calculateWidth(args.element, inputObj.container);\n var isPrependIcon = container.classList.contains('e-float-icon-left');\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n var inputWrap = container.querySelector('.e-input-in-wrap');\n iconEle = inputWrap.querySelector('.e-input-group-icon');\n } else {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n }\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n } else {\n var floatLine = container.querySelector('.' + CLASSNAMES.FLOATLINE);\n var floatText = container.querySelector('.' + CLASSNAMES.FLOATTEXT);\n var wrapper = isPrependIcon ? container.querySelector('.e-input-in-wrap') : container;\n wrapper.insertBefore(input, iconEle);\n wrapper.insertBefore(floatLine, iconEle);\n wrapper.insertBefore(floatText, iconEle);\n }\n } else {\n unWireFloatLabelEvents(args);\n }\n checkFloatLabelType(type, input.parentElement);\n }\n Input.addFloating = addFloating;\n /**\n * Create the span inside the label and add the label text into the span textcontent\n * ```\n * E.g : Input.createSpanElement(inputObject, makeElement);\n * ```\n *\n * @param {Element} inputObject\n * - Element which is need to get the label\n * @param {createElementParams} makeElement\n * - Element which is need to create the span\n */\n function createSpanElement(inputObject, makeElement) {\n if (inputObject.classList.contains('e-outline') && inputObject.getElementsByClassName('e-float-text')[0]) {\n var labelSpanElement = makeElement('span', {\n className: CLASSNAMES.FLOATTEXTCONTENT\n });\n labelSpanElement.innerHTML = inputObject.getElementsByClassName('e-float-text')[0].innerHTML;\n inputObject.getElementsByClassName('e-float-text')[0].innerHTML = '';\n inputObject.getElementsByClassName('e-float-text')[0].appendChild(labelSpanElement);\n }\n }\n Input.createSpanElement = createSpanElement;\n /**\n * Enable or Disable the ripple effect on the icons inside the Input. Ripple effect is only applicable for material theme.\n * ```\n * E.g : Input.setRipple(true, [inputObjects]);\n * ```\n *\n * @param {boolean} isRipple\n * - Boolean value to specify whether to enable the ripple effect.\n * @param {InputObject[]} inputObj\n * - Specify the collection of input objects.\n */\n function setRipple(isRipple, inputObj) {\n for (var i = 0; i < inputObj.length; i++) {\n _internalRipple(isRipple, inputObj[parseInt(i.toString(), 10)].container);\n }\n }\n Input.setRipple = setRipple;\n function _internalRipple(isRipple, container, button) {\n var argsButton = [];\n argsButton.push(button);\n var buttons = isNullOrUndefined(button) ? container.querySelectorAll('.e-input-group-icon') : argsButton;\n if (isRipple && buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[parseInt(index.toString(), 10)].addEventListener('mousedown', _onMouseDownRipple, false);\n buttons[parseInt(index.toString(), 10)].addEventListener('mouseup', _onMouseUpRipple, false);\n }\n } else if (buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[parseInt(index.toString(), 10)].removeEventListener('mousedown', _onMouseDownRipple, this);\n buttons[parseInt(index.toString(), 10)].removeEventListener('mouseup', _onMouseUpRipple, this);\n }\n }\n }\n function _onMouseRipple(container, button) {\n if (!container.classList.contains('e-disabled') && !container.querySelector('input').readOnly) {\n button.classList.add('e-input-btn-ripple');\n }\n }\n function _isElementVisible(element) {\n if (!element) {\n return false;\n }\n // Check if the element or any of its parents are hidden using display: none\n var currentElement = element;\n while (currentElement && currentElement !== document.body) {\n var style = window.getComputedStyle(currentElement);\n if (style.display === 'none') {\n return false;\n }\n currentElement = currentElement.parentElement;\n }\n // If none of the elements have display: none, the element is considered visible\n return true;\n }\n function _onMouseDownRipple() {\n var ele = null || this;\n var parentEle = this.parentElement;\n while (!parentEle.classList.contains('e-input-group')) {\n parentEle = parentEle.parentElement;\n }\n _onMouseRipple(parentEle, ele);\n }\n function _onMouseUpRipple() {\n var ele = null || this;\n setTimeout(function () {\n ele.classList.remove('e-input-btn-ripple');\n }, 500);\n }\n function createIconEle(iconClass, makeElement) {\n var button = makeElement('span', {\n className: iconClass\n });\n button.classList.add('e-input-group-icon');\n return button;\n }\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.addIcon('append', 'e-icon-spin', inputObj.container, inputElement);\n * ```\n *\n * @param {string} position - Specify the icon placement on the input.Possible values are append and prepend.\n * @param {string | string[]} icons - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n * @param {HTMLElement} input - The inputElement on which created span element is going to prepend.\n */\n function addIcon(position, icons, container, input, internalCreate) {\n var result = typeof icons === 'string' ? icons.split(',') : icons;\n if (position.toLowerCase() === 'append') {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var icon = result_1[_i];\n appendSpan(icon, container, internalCreate);\n }\n } else {\n for (var _a = 0, result_2 = result; _a < result_2.length; _a++) {\n var icon = result_2[_a];\n prependSpan(icon, container, input, internalCreate);\n }\n }\n if (container.getElementsByClassName('e-input-group-icon')[0] && container.getElementsByClassName('e-float-text-overflow')[0]) {\n container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n }\n Input.addIcon = addIcon;\n /**\n * Creates a new span element with the given icons added and prepend it in input element.\n * ```\n * E.g : Input.prependSpan('e-icon-spin', inputObj.container, inputElement);\n * ```\n *\n * @param {string} iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n * @param {HTMLElement} inputElement - The inputElement on which created span element is going to prepend.\n */\n function prependSpan(iconClass, container, inputElement, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n container.classList.add('e-float-icon-left');\n var innerWrapper = container.querySelector('.e-input-in-wrap');\n if (isNullOrUndefined(innerWrapper)) {\n innerWrapper = makeElement('span', {\n className: 'e-input-in-wrap'\n });\n inputElement.parentNode.insertBefore(innerWrapper, inputElement);\n var result = container.querySelectorAll(inputElement.tagName + ' ~ *');\n innerWrapper.appendChild(inputElement);\n for (var i = 0; i < result.length; i++) {\n var element = result[parseInt(i.toString(), 10)];\n var parentElement = innerWrapper.parentElement;\n if (!element.classList.contains('e-float-line') || !(parentElement && parentElement.classList.contains('e-filled')) && parentElement) {\n innerWrapper.appendChild(element);\n }\n }\n }\n innerWrapper.parentNode.insertBefore(button, innerWrapper);\n _internalRipple(true, container, button);\n return button;\n }\n Input.prependSpan = prependSpan;\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.appendSpan('e-icon-spin', inputObj.container);\n * ```\n *\n * @param {string} iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n */\n function appendSpan(iconClass, container, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n var wrap = container.classList.contains('e-float-icon-left') ? container.querySelector('.e-input-in-wrap') : container;\n wrap.appendChild(button);\n _internalRipple(true, container, button);\n return button;\n }\n Input.appendSpan = appendSpan;\n function validateInputType(containerElement, input) {\n if (input.type === 'hidden') {\n containerElement.classList.add('e-hidden');\n } else if (containerElement.classList.contains('e-hidden')) {\n containerElement.classList.remove('e-hidden');\n }\n }\n Input.validateInputType = validateInputType;\n function updateHTMLAttributesToElement(htmlAttributes, element) {\n if (!isNullOrUndefined(htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttributes.indexOf(key) < 0) {\n element.setAttribute(key, htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n Input.updateHTMLAttributesToElement = updateHTMLAttributesToElement;\n function updateCssClass(newClass, oldClass, container) {\n setCssClass(getInputValidClassList(newClass), [container], getInputValidClassList(oldClass));\n }\n Input.updateCssClass = updateCssClass;\n function getInputValidClassList(inputClassName) {\n var result = inputClassName;\n if (!isNullOrUndefined(inputClassName) && inputClassName !== '') {\n result = inputClassName.replace(/\\s+/g, ' ').trim();\n }\n return result;\n }\n Input.getInputValidClassList = getInputValidClassList;\n function updateHTMLAttributesToWrapper(htmlAttributes, container) {\n if (!isNullOrUndefined(htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttributes.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = this.getInputValidClassList(htmlAttributes[\"\" + key]);\n if (updatedClassValues !== '') {\n addClass([container], updatedClassValues.split(' '));\n }\n } else if (key === 'style') {\n var setStyle = container.getAttribute(key);\n setStyle = !isNullOrUndefined(setStyle) ? setStyle + htmlAttributes[\"\" + key] : htmlAttributes[\"\" + key];\n container.setAttribute(key, setStyle);\n } else {\n container.setAttribute(key, htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n }\n Input.updateHTMLAttributesToWrapper = updateHTMLAttributesToWrapper;\n function isBlank(inputString) {\n return !inputString || /^\\s*$/.test(inputString);\n }\n Input.isBlank = isBlank;\n})(Input || (Input = {}));\n/* eslint-enable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */","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};\nimport { Component, EventHandler, Property, Event, Browser, L10n, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, detach, closest } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getValue, formatUnit, setValue, merge } from '@syncfusion/ej2-base';\nimport { Internationalization, getNumericObject } from '@syncfusion/ej2-base';\nimport { Input } from '../input/input';\nvar ROOT = 'e-control-wrapper e-numeric';\nvar SPINICON = 'e-input-group-icon';\nvar SPINUP = 'e-spin-up';\nvar SPINDOWN = 'e-spin-down';\nvar ERROR = 'e-error';\nvar INCREMENT = 'increment';\nvar DECREMENT = 'decrement';\nvar INTREGEXP = new RegExp('^(-)?(\\\\d*)$');\nvar DECIMALSEPARATOR = '.';\nvar COMPONENT = 'e-numerictextbox';\nvar CONTROL = 'e-control';\nvar NUMERIC_FOCUS = 'e-input-focus';\nvar HIDDENELEMENT = 'e-numeric-hidden';\nvar wrapperAttributes = ['title', 'style', 'class'];\nvar selectionTimeOut = 0;\n/**\n * Represents the NumericTextBox component that allows the user to enter only numeric values.\n * ```html\n * <input type='text' id=\"numeric\"/>\n * ```\n * ```typescript\n * <script>\n * var numericObj = new NumericTextBox({ value: 10 });\n * numericObj.appendTo(\"#numeric\");\n * </script>\n * ```\n */\nvar NumericTextBox = /** @class */function (_super) {\n __extends(NumericTextBox, _super);\n /**\n *\n * @param {NumericTextBoxModel} options - Specifies the NumericTextBox model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function NumericTextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.preventChange = false;\n _this.isDynamicChange = false;\n _this.numericOptions = options;\n return _this;\n }\n NumericTextBox.prototype.preRender = function () {\n this.isPrevFocused = false;\n this.decimalSeparator = '.';\n // eslint-disable-next-line no-useless-escape\n this.intRegExp = new RegExp('/^(-)?(\\d*)$/');\n this.isCalled = false;\n var ejInstance = getValue('ej2_instances', this.element);\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [CONTROL, COMPONENT, 'e-lib']);\n this.angularTagName = null;\n this.formEle = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.angularTagName = this.element.tagName;\n var input = this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id' && attributeName !== 'class') {\n input.setAttribute(this.element.attributes[index].nodeName, this.element.attributes[index].nodeValue);\n input.innerHTML = this.element.innerHTML;\n } else if (attributeName === 'class') {\n input.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) {\n return item.indexOf('ng-') !== 0;\n }).join(' '));\n }\n }\n if (this.element.hasAttribute('name')) {\n this.element.removeAttribute('name');\n }\n this.element.classList.remove('e-control', 'e-numerictextbox');\n this.element.appendChild(input);\n this.element = input;\n setValue('ej2_instances', ejInstance, this.element);\n }\n attributes(this.element, {\n 'role': 'spinbutton',\n 'tabindex': '0',\n 'autocomplete': 'off'\n });\n var localeText = {\n incrementTitle: 'Increment value',\n decrementTitle: 'Decrement value',\n placeholder: this.placeholder\n };\n this.l10n = new L10n('numerictextbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({\n placeholder: this.placeholder || this.l10n.getConstant('placeholder')\n }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('numerictextbox'));\n }\n this.isValidState = true;\n this.inputStyle = null;\n this.inputName = null;\n this.cultureInfo = {};\n this.initCultureInfo();\n this.initCultureFunc();\n this.prevValue = this.value;\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if (this.formEle) {\n this.inputEleValue = this.value;\n }\n this.validateMinMax();\n this.validateStep();\n if (this.placeholder === null) {\n this.updatePlaceholder();\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.render = function () {\n if (this.element.tagName.toLowerCase() === 'input') {\n this.createWrapper();\n if (this.showSpinButton) {\n this.spinBtnCreation();\n }\n this.setElementWidth(this.width);\n if (!this.container.classList.contains('e-input-group')) {\n this.container.classList.add('e-input-group');\n }\n this.changeValue(this.value === null || isNaN(this.value) ? null : this.strictMode ? this.trimValue(this.value) : this.value);\n this.wireEvents();\n if (this.value !== null && !isNaN(this.value)) {\n if (this.decimals) {\n this.setProperties({\n value: this.roundNumber(this.value, this.decimals)\n }, true);\n }\n }\n if (this.element.getAttribute('value') || this.value) {\n this.element.setAttribute('value', this.element.value);\n this.hiddenInput.setAttribute('value', this.hiddenInput.value);\n }\n this.elementPrevValue = this.element.value;\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n if (!this.element.hasAttribute('aria-labelledby') && !this.element.hasAttribute('placeholder') && !this.element.hasAttribute('aria-label')) {\n this.element.setAttribute('aria-label', 'numerictextbox');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n }\n };\n NumericTextBox.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) : ['value', 'min', 'max', 'step', 'disabled', 'readonly', 'style', 'name', 'placeholder'];\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if (isNullOrUndefined(this.numericOptions) || this.numericOptions['enabled'] === undefined || isDynamic) {\n var enabled = this.element.getAttribute(prop) === 'disabled' || this.element.getAttribute(prop) === '' || this.element.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({\n enabled: enabled\n }, !isDynamic);\n }\n break;\n case 'readonly':\n if (isNullOrUndefined(this.numericOptions) || this.numericOptions['readonly'] === undefined || isDynamic) {\n var readonly = this.element.getAttribute(prop) === 'readonly' || this.element.getAttribute(prop) === '' || this.element.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({\n readonly: readonly\n }, !isDynamic);\n }\n break;\n case 'placeholder':\n if (isNullOrUndefined(this.numericOptions) || this.numericOptions['placeholder'] === undefined || isDynamic) {\n this.setProperties({\n placeholder: this.element.placeholder\n }, !isDynamic);\n }\n break;\n case 'value':\n if (isNullOrUndefined(this.numericOptions) || this.numericOptions['value'] === undefined || isDynamic) {\n var setNumber = this.instance.getNumberParser({\n format: 'n'\n })(this.element.getAttribute(prop));\n this.setProperties(setValue(prop, setNumber, {}), !isDynamic);\n }\n break;\n case 'min':\n if (isNullOrUndefined(this.numericOptions) || this.numericOptions['min'] === undefined || isDynamic) {\n var minValue = this.instance.getNumberParser({\n format: 'n'\n })(this.element.getAttribute(prop));\n if (minValue !== null && !isNaN(minValue)) {\n this.setProperties(setValue(prop, minValue, {}), !isDynamic);\n }\n }\n break;\n case 'max':\n if (isNullOrUndefined(this.numericOptions) || this.numericOptions['max'] === undefined || isDynamic) {\n var maxValue = this.instance.getNumberParser({\n format: 'n'\n })(this.element.getAttribute(prop));\n if (maxValue !== null && !isNaN(maxValue)) {\n this.setProperties(setValue(prop, maxValue, {}), !isDynamic);\n }\n }\n break;\n case 'step':\n if (isNullOrUndefined(this.numericOptions) || this.numericOptions['step'] === undefined || isDynamic) {\n var stepValue = this.instance.getNumberParser({\n format: 'n'\n })(this.element.getAttribute(prop));\n if (stepValue !== null && !isNaN(stepValue)) {\n this.setProperties(setValue(prop, stepValue, {}), !isDynamic);\n }\n }\n break;\n case 'style':\n this.inputStyle = this.element.getAttribute(prop);\n break;\n case 'name':\n this.inputName = this.element.getAttribute(prop);\n break;\n default:\n {\n var value = this.instance.getNumberParser({\n format: 'n'\n })(this.element.getAttribute(prop));\n if (value !== null && !isNaN(value) || prop === 'value') {\n this.setProperties(setValue(prop, value, {}), true);\n }\n }\n break;\n }\n }\n }\n };\n NumericTextBox.prototype.updatePlaceholder = function () {\n this.setProperties({\n placeholder: this.l10n.getConstant('placeholder')\n }, true);\n };\n NumericTextBox.prototype.initCultureFunc = function () {\n this.instance = new Internationalization(this.locale);\n };\n NumericTextBox.prototype.initCultureInfo = function () {\n this.cultureInfo.format = this.format;\n if (getValue('currency', this) !== null) {\n setValue('currency', this.currency, this.cultureInfo);\n this.setProperties({\n currencyCode: this.currency\n }, true);\n }\n };\n /* Wrapper creation */\n NumericTextBox.prototype.createWrapper = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getNumericValidClassList(this.cssClass);\n }\n var inputObj = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValue,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton,\n enabled: this.enabled\n }\n }, this.createElement);\n this.inputWrapper = inputObj;\n this.container = inputObj.container;\n this.container.setAttribute('class', ROOT + ' ' + this.container.getAttribute('class'));\n this.updateHTMLAttrToWrapper();\n if (this.readonly) {\n attributes(this.element, {\n 'aria-readonly': 'true'\n });\n }\n this.hiddenInput = this.createElement('input', {\n attrs: {\n type: 'text',\n 'validateHidden': 'true',\n 'aria-label': 'hidden',\n 'class': HIDDENELEMENT\n }\n });\n this.inputName = this.inputName !== null ? this.inputName : this.element.id;\n this.element.removeAttribute('name');\n if (this.isAngular && this.angularTagName === 'EJS-NUMERICTEXTBOX' && this.cloneElement.id.length > 0) {\n attributes(this.hiddenInput, {\n 'name': this.cloneElement.id\n });\n } else {\n attributes(this.hiddenInput, {\n 'name': this.inputName\n });\n }\n this.container.insertBefore(this.hiddenInput, this.container.childNodes[1]);\n this.updateDataAttribute(false);\n if (this.inputStyle !== null) {\n attributes(this.container, {\n 'style': this.inputStyle\n });\n }\n };\n NumericTextBox.prototype.updateDataAttribute = function (isDynamic) {\n var attr = {};\n if (!isDynamic) {\n for (var a = 0; a < this.element.attributes.length; a++) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n } else {\n attr = this.htmlAttributes;\n }\n for (var _i = 0, _a = Object.keys(attr); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key.indexOf('data') === 0) {\n this.hiddenInput.setAttribute(key, attr[\"\" + key]);\n }\n }\n };\n NumericTextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) < 0) {\n this.element.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n };\n NumericTextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getNumericValidClassList(newClass), [this.container], this.getNumericValidClassList(oldClass));\n };\n NumericTextBox.prototype.getNumericValidClassList = function (numericClassName) {\n var result = numericClassName;\n if (!isNullOrUndefined(numericClassName) && numericClassName !== '') {\n result = numericClassName.replace(/\\s+/g, ' ').trim();\n }\n return result;\n };\n NumericTextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) > -1) {\n if (pro === 'class') {\n var updatedClassValue = this.getNumericValidClassList(this.htmlAttributes[\"\" + pro]);\n if (updatedClassValue !== '') {\n addClass([this.container], updatedClassValue.split(' '));\n }\n } else if (pro === 'style') {\n var numericStyle = this.container.getAttribute(pro);\n numericStyle = !isNullOrUndefined(numericStyle) ? numericStyle + this.htmlAttributes[\"\" + pro] : this.htmlAttributes[\"\" + pro];\n this.container.setAttribute(pro, numericStyle);\n } else {\n this.container.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n }\n };\n NumericTextBox.prototype.setElementWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.container.style.width = formatUnit(width);\n } else if (typeof width === 'string') {\n this.container.style.width = width.match(/px|%|em/) ? width : formatUnit(width);\n }\n }\n };\n /* Spinner creation */\n NumericTextBox.prototype.spinBtnCreation = function () {\n this.spinDown = Input.appendSpan(SPINICON + ' ' + SPINDOWN, this.container, this.createElement);\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle')\n });\n this.spinUp = Input.appendSpan(SPINICON + ' ' + SPINUP, this.container, this.createElement);\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle')\n });\n this.wireSpinBtnEvents();\n };\n NumericTextBox.prototype.validateMinMax = function () {\n if (!(typeof this.min === 'number' && !isNaN(this.min))) {\n this.setProperties({\n min: -Number.MAX_VALUE\n }, true);\n }\n if (!(typeof this.max === 'number' && !isNaN(this.max))) {\n this.setProperties({\n max: Number.MAX_VALUE\n }, true);\n }\n if (this.decimals !== null) {\n if (this.min !== -Number.MAX_VALUE) {\n this.setProperties({\n min: this.instance.getNumberParser({\n format: 'n'\n })(this.formattedValue(this.decimals, this.min))\n }, true);\n }\n if (this.max !== Number.MAX_VALUE) {\n this.setProperties({\n max: this.instance.getNumberParser({\n format: 'n'\n })(this.formattedValue(this.decimals, this.max))\n }, true);\n }\n }\n this.setProperties({\n min: this.min > this.max ? this.max : this.min\n }, true);\n if (this.min !== -Number.MAX_VALUE) {\n attributes(this.element, {\n 'aria-valuemin': this.min.toString()\n });\n }\n if (this.max !== Number.MAX_VALUE) {\n attributes(this.element, {\n 'aria-valuemax': this.max.toString()\n });\n }\n };\n NumericTextBox.prototype.formattedValue = function (decimals, value) {\n return this.instance.getNumberFormat({\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals,\n useGrouping: false\n })(value);\n };\n NumericTextBox.prototype.validateStep = function () {\n if (this.decimals !== null) {\n this.setProperties({\n step: this.instance.getNumberParser({\n format: 'n'\n })(this.formattedValue(this.decimals, this.step))\n }, true);\n }\n };\n NumericTextBox.prototype.action = function (operation, event) {\n this.isInteract = true;\n var value = this.isFocused ? this.instance.getNumberParser({\n format: 'n'\n })(this.element.value) : this.value;\n this.changeValue(this.performAction(value, this.step, operation));\n this.raiseChangeEvent(event);\n };\n NumericTextBox.prototype.checkErrorClass = function () {\n if (this.isValidState) {\n removeClass([this.container], ERROR);\n } else {\n addClass([this.container], ERROR);\n }\n attributes(this.element, {\n 'aria-invalid': this.isValidState ? 'false' : 'true'\n });\n };\n NumericTextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n NumericTextBox.prototype.resetHandler = function (e) {\n e.preventDefault();\n if (!this.inputWrapper.clearButton.classList.contains('e-clear-icon-hide') || this.inputWrapper.container.classList.contains('e-static-clear')) {\n this.clear(e);\n }\n this.isInteract = true;\n this.raiseChangeEvent(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NumericTextBox.prototype.clear = function (event) {\n this.setProperties({\n value: null\n }, true);\n this.setElementValue('');\n this.hiddenInput.value = '';\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.resetFormHandler = function () {\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.updateValue(null);\n } else {\n this.updateValue(this.inputEleValue);\n }\n };\n NumericTextBox.prototype.setSpinButton = function () {\n if (!isNullOrUndefined(this.spinDown)) {\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle'),\n 'aria-label': this.l10n.getConstant('decrementTitle')\n });\n }\n if (!isNullOrUndefined(this.spinUp)) {\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle'),\n 'aria-label': this.l10n.getConstant('incrementTitle')\n });\n }\n };\n NumericTextBox.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'input', this.inputHandler, this);\n EventHandler.add(this.element, 'keypress', this.keyPressHandler, this);\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'paste', this.pasteHandler, this);\n if (this.enabled) {\n this.bindClearEvent();\n if (this.formEle) {\n EventHandler.add(this.formEle, 'reset', this.resetFormHandler, this);\n }\n }\n };\n NumericTextBox.prototype.wireSpinBtnEvents = function () {\n /* bind spin button events */\n EventHandler.add(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n };\n NumericTextBox.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'blur', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'input', this.inputHandler);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.element, 'keypress', this.keyPressHandler);\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'paste', this.pasteHandler);\n if (this.formEle) {\n EventHandler.remove(this.formEle, 'reset', this.resetFormHandler);\n }\n };\n NumericTextBox.prototype.unwireSpinBtnEvents = function () {\n /* unbind spin button events */\n EventHandler.remove(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n };\n NumericTextBox.prototype.changeHandler = function (event) {\n event.stopPropagation();\n if (!this.element.value.length) {\n this.setProperties({\n value: null\n }, true);\n }\n var parsedInput = this.instance.getNumberParser({\n format: 'n'\n })(this.element.value);\n this.updateValue(parsedInput, event);\n };\n NumericTextBox.prototype.raiseChangeEvent = function (event) {\n this.inputValue = isNullOrUndefined(this.inputValue) || isNaN(this.inputValue) ? null : this.inputValue;\n if (this.prevValue !== this.value || this.prevValue !== this.inputValue) {\n var eventArgs = {};\n this.changeEventArgs = {\n value: this.value,\n previousValue: this.prevValue,\n isInteracted: this.isInteract,\n isInteraction: this.isInteract,\n event: event\n };\n if (event) {\n this.changeEventArgs.event = event;\n }\n if (this.changeEventArgs.event === undefined) {\n this.changeEventArgs.isInteracted = false;\n this.changeEventArgs.isInteraction = false;\n }\n merge(eventArgs, this.changeEventArgs);\n this.prevValue = this.value;\n this.isInteract = false;\n this.elementPrevValue = this.element.value;\n this.preventChange = false;\n this.trigger('change', eventArgs);\n }\n };\n NumericTextBox.prototype.pasteHandler = function () {\n var _this = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var beforeUpdate = this.element.value;\n setTimeout(function () {\n if (!_this.numericRegex().test(_this.element.value)) {\n _this.setElementValue(beforeUpdate);\n }\n });\n };\n NumericTextBox.prototype.preventHandler = function () {\n var _this = this;\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n setTimeout(function () {\n if (_this.element.selectionStart > 0) {\n var currentPos = _this.element.selectionStart;\n var prevPos = _this.element.selectionStart - 1;\n var start = 0;\n var valArray = _this.element.value.split('');\n var numericObject = getNumericObject(_this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var ignoreKeyCode = decimalSeparator.charCodeAt(0);\n if (_this.element.value[prevPos] === ' ' && _this.element.selectionStart > 0 && !iOS) {\n if (isNullOrUndefined(_this.prevVal)) {\n _this.element.value = _this.element.value.trim();\n } else if (prevPos !== 0) {\n _this.element.value = _this.prevVal;\n } else if (prevPos === 0) {\n _this.element.value = _this.element.value.trim();\n }\n _this.element.setSelectionRange(prevPos, prevPos);\n } else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) && _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== 45) {\n if (valArray.indexOf(_this.element.value[_this.element.selectionStart - 1]) !== valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 1]) && _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === ignoreKeyCode || _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.value = _this.element.value.substring(0, prevPos) + _this.element.value.substring(currentPos, _this.element.value.length);\n _this.element.setSelectionRange(prevPos, prevPos);\n if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) && _this.element.selectionStart > 0 && _this.element.value.length) {\n _this.preventHandler();\n }\n }\n } else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 2])) && _this.element.selectionStart > 1 && _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== 45) {\n if (valArray.indexOf(_this.element.value[_this.element.selectionStart - 2]) !== valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 2]) && _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) === ignoreKeyCode || _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.setSelectionRange(prevPos, prevPos);\n _this.nextEle = _this.element.value[_this.element.selectionStart];\n _this.cursorPosChanged = true;\n _this.preventHandler();\n }\n }\n if (_this.cursorPosChanged === true && _this.element.value[_this.element.selectionStart] === _this.nextEle && isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1]))) {\n _this.element.setSelectionRange(_this.element.selectionStart + 1, _this.element.selectionStart + 1);\n _this.cursorPosChanged = false;\n _this.nextEle = null;\n }\n if (_this.element.value.trim() === '') {\n _this.element.setSelectionRange(start, start);\n }\n if (_this.element.selectionStart > 0) {\n if (_this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === 45 && _this.element.selectionStart > 1) {\n if (!isNullOrUndefined(_this.prevVal)) {\n _this.element.value = _this.prevVal;\n }\n _this.element.setSelectionRange(_this.element.selectionStart, _this.element.selectionStart);\n }\n if (_this.element.value[_this.element.selectionStart - 1] === decimalSeparator && _this.decimals === 0 && _this.validateDecimalOnType) {\n _this.element.value = _this.element.value.substring(0, prevPos) + _this.element.value.substring(currentPos, _this.element.value.length);\n }\n }\n _this.prevVal = _this.element.value;\n }\n });\n };\n NumericTextBox.prototype.keyUpHandler = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n if (!iOS && Browser.isDevice) {\n this.preventHandler();\n }\n var parseValue = this.instance.getNumberParser({\n format: 'n'\n })(this.element.value);\n parseValue = parseValue === null || isNaN(parseValue) ? null : parseValue;\n this.hiddenInput.value = parseValue || parseValue === 0 ? parseValue.toString() : null;\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.inputHandler = function (event) {\n var numerictextboxObj = null || this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n var fireFox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n if ((fireFox || iOS) && Browser.isDevice) {\n this.preventHandler();\n }\n /* istanbul ignore next */\n if (this.isAngular && this.element.value !== getValue('decimal', getNumericObject(this.locale)) && this.element.value !== getValue('minusSign', getNumericObject(this.locale))) {\n var parsedValue = this.instance.getNumberParser({\n format: 'n'\n })(this.element.value);\n parsedValue = isNaN(parsedValue) ? null : parsedValue;\n numerictextboxObj.localChange({\n value: parsedValue\n });\n this.preventChange = true;\n }\n if (this.isVue) {\n var current = this.instance.getNumberParser({\n format: 'n'\n })(this.element.value);\n var previous = this.instance.getNumberParser({\n format: 'n'\n })(this.elementPrevValue);\n //EJ2-54963-if type \".\" or \".0\" or \"-.0\" it converts to \"0\" automatically when binding v-model\n var nonZeroRegex = new RegExp('[^0-9]+$');\n if (nonZeroRegex.test(this.element.value) || (this.elementPrevValue.indexOf('.') !== -1 || this.elementPrevValue.indexOf('-') !== -1) && this.element.value[this.element.value.length - 1] === '0') {\n current = this.value;\n }\n var eventArgs = {\n event: event,\n value: current === null || isNaN(current) ? null : current,\n previousValue: previous === null || isNaN(previous) ? null : previous\n };\n this.preventChange = true;\n this.elementPrevValue = this.element.value;\n this.trigger('input', eventArgs);\n }\n };\n NumericTextBox.prototype.keyDownHandler = function (event) {\n if (!this.readonly) {\n switch (event.keyCode) {\n case 38:\n event.preventDefault();\n this.action(INCREMENT, event);\n break;\n case 40:\n event.preventDefault();\n this.action(DECREMENT, event);\n break;\n default:\n break;\n }\n }\n };\n NumericTextBox.prototype.performAction = function (value, step, operation) {\n if (value === null || isNaN(value)) {\n value = 0;\n }\n var updatedValue = operation === INCREMENT ? value + step : value - step;\n updatedValue = this.correctRounding(value, step, updatedValue);\n return this.strictMode ? this.trimValue(updatedValue) : updatedValue;\n };\n NumericTextBox.prototype.correctRounding = function (value, step, result) {\n var floatExp = new RegExp('[,.](.*)');\n var floatValue = floatExp.test(value.toString());\n var floatStep = floatExp.test(step.toString());\n if (floatValue || floatStep) {\n var valueCount = floatValue ? floatExp.exec(value.toString())[0].length : 0;\n var stepCount = floatStep ? floatExp.exec(step.toString())[0].length : 0;\n var max = Math.max(valueCount, stepCount);\n return value = this.roundValue(result, max);\n }\n return result;\n };\n NumericTextBox.prototype.roundValue = function (result, precision) {\n precision = precision || 0;\n var divide = Math.pow(10, precision);\n return result *= divide, result = Math.round(result) / divide;\n };\n NumericTextBox.prototype.updateValue = function (value, event) {\n if (event) {\n this.isInteract = true;\n }\n if (value !== null && !isNaN(value)) {\n if (this.decimals) {\n value = this.roundNumber(value, this.decimals);\n }\n }\n this.inputValue = value;\n this.changeValue(value === null || isNaN(value) ? null : this.strictMode ? this.trimValue(value) : value);\n /* istanbul ignore next */\n if (!this.isDynamicChange) {\n this.raiseChangeEvent(event);\n }\n };\n NumericTextBox.prototype.updateCurrency = function (prop, propVal) {\n setValue(prop, propVal, this.cultureInfo);\n this.updateValue(this.value);\n };\n NumericTextBox.prototype.changeValue = function (value) {\n if (!(value || value === 0)) {\n value = null;\n this.setProperties({\n value: value\n }, true);\n } else {\n var numberOfDecimals = this.getNumberOfDecimals(value);\n this.setProperties({\n value: this.roundNumber(value, numberOfDecimals)\n }, true);\n }\n this.modifyText();\n if (!this.strictMode) {\n this.validateState();\n }\n };\n NumericTextBox.prototype.modifyText = function () {\n if (this.value || this.value === 0) {\n var value = this.formatNumber();\n var elementValue = this.isFocused ? value : this.instance.getNumberFormat(this.cultureInfo)(this.value);\n this.setElementValue(elementValue);\n attributes(this.element, {\n 'aria-valuenow': value\n });\n if (!isNullOrUndefined(this.hiddenInput)) {\n this.hiddenInput.value = this.value.toString();\n if (this.value !== null && this.serverDecimalSeparator) {\n this.hiddenInput.value = this.hiddenInput.value.replace('.', this.serverDecimalSeparator);\n }\n }\n } else {\n this.setElementValue('');\n this.element.removeAttribute('aria-valuenow');\n this.hiddenInput.value = null;\n }\n };\n NumericTextBox.prototype.setElementValue = function (val, element) {\n Input.setValue(val, element ? element : this.element, this.floatLabelType, this.showClearButton);\n };\n NumericTextBox.prototype.validateState = function () {\n this.isValidState = true;\n if (this.value || this.value === 0) {\n this.isValidState = !(this.value > this.max || this.value < this.min);\n }\n this.checkErrorClass();\n };\n NumericTextBox.prototype.getNumberOfDecimals = function (value) {\n var numberOfDecimals;\n // eslint-disable-next-line no-useless-escape\n var EXPREGEXP = new RegExp('[eE][\\-+]?([0-9]+)');\n var valueString = value.toString();\n if (EXPREGEXP.test(valueString)) {\n var result = EXPREGEXP.exec(valueString);\n if (!isNullOrUndefined(result)) {\n valueString = value.toFixed(Math.min(parseInt(result[1], 10), 20));\n }\n }\n var decimalPart = valueString.split('.')[1];\n numberOfDecimals = !decimalPart || !decimalPart.length ? 0 : decimalPart.length;\n if (this.decimals !== null) {\n numberOfDecimals = numberOfDecimals < this.decimals ? numberOfDecimals : this.decimals;\n }\n return numberOfDecimals;\n };\n NumericTextBox.prototype.formatNumber = function () {\n var numberOfDecimals = this.getNumberOfDecimals(this.value);\n return this.instance.getNumberFormat({\n maximumFractionDigits: numberOfDecimals,\n minimumFractionDigits: numberOfDecimals,\n useGrouping: false\n })(this.value);\n };\n NumericTextBox.prototype.trimValue = function (value) {\n if (value > this.max) {\n return this.max;\n }\n if (value < this.min) {\n return this.min;\n }\n return value;\n };\n NumericTextBox.prototype.roundNumber = function (value, precision) {\n var result = value;\n var decimals = precision || 0;\n var result1 = result.toString().split('e');\n result = Math.round(Number(result1[0] + 'e' + (result1[1] ? Number(result1[1]) + decimals : decimals)));\n var result2 = result.toString().split('e');\n result = Number(result2[0] + 'e' + (result2[1] ? Number(result2[1]) - decimals : -decimals));\n return Number(result.toFixed(decimals));\n };\n NumericTextBox.prototype.cancelEvent = function (event) {\n event.preventDefault();\n return false;\n };\n NumericTextBox.prototype.keyPressHandler = function (event) {\n if (!this.enabled || this.readonly) {\n return true;\n }\n if (!Browser.isDevice && Browser.info.version === '11.0' && event.keyCode === 13) {\n var parsedInput = this.instance.getNumberParser({\n format: 'n'\n })(this.element.value);\n this.updateValue(parsedInput, event);\n return true;\n }\n if (event.which === 0 || event.metaKey || event.ctrlKey || event.keyCode === 8 || event.keyCode === 13) {\n return true;\n }\n var currentChar = String.fromCharCode(event.which);\n var decimalSeparator = getValue('decimal', getNumericObject(this.locale));\n var isAlterNumPadDecimalChar = event.code === 'NumpadDecimal' && currentChar !== decimalSeparator;\n //EJ2-59813-replace the culture decimal separator value with numberpad decimal separator value when culture decimal separator and numberpad decimal separator are different\n if (isAlterNumPadDecimalChar) {\n currentChar = decimalSeparator;\n }\n var text = this.element.value;\n text = text.substring(0, this.element.selectionStart) + currentChar + text.substring(this.element.selectionEnd);\n if (!this.numericRegex().test(text)) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n } else {\n //EJ2-59813-update the numberpad decimal separator and update the cursor position\n if (isAlterNumPadDecimalChar) {\n var start = this.element.selectionStart + 1;\n this.element.value = text;\n this.element.setSelectionRange(start, start);\n event.preventDefault();\n event.stopPropagation();\n }\n return true;\n }\n };\n NumericTextBox.prototype.numericRegex = function () {\n var numericObject = getNumericObject(this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var fractionRule = '*';\n if (decimalSeparator === DECIMALSEPARATOR) {\n decimalSeparator = '\\\\' + decimalSeparator;\n }\n if (this.decimals === 0 && this.validateDecimalOnType) {\n return INTREGEXP;\n }\n if (this.decimals && this.validateDecimalOnType) {\n fractionRule = '{0,' + this.decimals + '}';\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n return new RegExp('^\\\\s*(-)?(((\\\\d+(' + decimalSeparator + '\\\\d' + fractionRule + ')?)|(' + decimalSeparator + '\\\\d' + fractionRule + ')))?$');\n };\n NumericTextBox.prototype.mouseWheel = function (event) {\n event.preventDefault();\n var delta;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var rawEvent = event;\n if (rawEvent.wheelDelta) {\n delta = rawEvent.wheelDelta / 120;\n } else if (rawEvent.detail) {\n delta = -rawEvent.detail / 3;\n }\n if (delta > 0) {\n this.action(INCREMENT, event);\n } else if (delta < 0) {\n this.action(DECREMENT, event);\n }\n this.cancelEvent(event);\n };\n NumericTextBox.prototype.focusHandler = function (event) {\n var _this = this;\n clearTimeout(selectionTimeOut);\n this.focusEventArgs = {\n event: event,\n value: this.value,\n container: this.container\n };\n this.trigger('focus', this.focusEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n this.isFocused = true;\n this.prevValue = this.value;\n if (this.value || this.value === 0) {\n var formatValue_1 = this.formatNumber();\n this.setElementValue(formatValue_1);\n if (!this.isPrevFocused) {\n if (!Browser.isDevice && Browser.info.version === '11.0') {\n this.element.setSelectionRange(0, formatValue_1.length);\n } else {\n var delay = Browser.isDevice && Browser.isIos ? 600 : 0;\n selectionTimeOut = setTimeout(function () {\n _this.element.setSelectionRange(0, formatValue_1.length);\n }, delay);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.add(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel, this);\n }\n };\n NumericTextBox.prototype.focusOutHandler = function (event) {\n var _this = this;\n this.blurEventArgs = {\n event: event,\n value: this.value,\n container: this.container\n };\n this.trigger('blur', this.blurEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isPrevFocused) {\n event.preventDefault();\n if (Browser.isDevice) {\n var value_1 = this.element.value;\n this.element.focus();\n this.isPrevFocused = false;\n var ele_1 = this.element;\n setTimeout(function () {\n _this.setElementValue(value_1, ele_1);\n }, 200);\n }\n } else {\n this.isFocused = false;\n if (!this.element.value.length) {\n this.setProperties({\n value: null\n }, true);\n }\n var parsedInput = this.instance.getNumberParser({\n format: 'n'\n })(this.element.value);\n this.updateValue(parsedInput);\n if (!Browser.isDevice) {\n EventHandler.remove(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel);\n }\n }\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var focusEvent = document.createEvent('FocusEvent');\n focusEvent.initEvent('focusout', false, true);\n element.dispatchEvent(focusEvent);\n }\n };\n NumericTextBox.prototype.mouseDownOnSpinner = function (event) {\n var _this = this;\n if (this.isFocused) {\n this.isPrevFocused = true;\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n this.getElementData(event);\n var target = event.currentTarget;\n var action = target.classList.contains(SPINUP) ? INCREMENT : DECREMENT;\n EventHandler.add(target, 'mouseleave', this.mouseUpClick, this);\n this.timeOut = setInterval(function () {\n _this.isCalled = true;\n _this.action(action, event);\n }, 150);\n EventHandler.add(document, 'mouseup', this.mouseUpClick, this);\n };\n NumericTextBox.prototype.touchMoveOnSpinner = function (event) {\n var target;\n if (event.type === 'touchmove') {\n var touchEvent = event.touches;\n target = touchEvent.length && document.elementFromPoint(touchEvent[0].pageX, touchEvent[0].pageY);\n } else {\n target = document.elementFromPoint(event.clientX, event.clientY);\n }\n if (!target.classList.contains(SPINICON)) {\n clearInterval(this.timeOut);\n }\n };\n NumericTextBox.prototype.mouseUpOnSpinner = function (event) {\n this.prevValue = this.value;\n if (this.isPrevFocused) {\n this.element.focus();\n if (!Browser.isDevice) {\n this.isPrevFocused = false;\n }\n }\n if (!Browser.isDevice) {\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n var target = event.currentTarget;\n var action = target.classList.contains(SPINUP) ? INCREMENT : DECREMENT;\n EventHandler.remove(target, 'mouseleave', this.mouseUpClick);\n if (!this.isCalled) {\n this.action(action, event);\n }\n this.isCalled = false;\n EventHandler.remove(document, 'mouseup', this.mouseUpClick);\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.getElementData = function (event) {\n if (event.which && event.which === 3 || event.button && event.button === 2 || !this.enabled || this.readonly) {\n return false;\n }\n clearInterval(this.timeOut);\n return true;\n };\n NumericTextBox.prototype.floatLabelTypeUpdate = function () {\n Input.removeFloating(this.inputWrapper);\n var hiddenInput = this.hiddenInput;\n this.hiddenInput.remove();\n Input.addFloating(this.element, this.floatLabelType, this.placeholder, this.createElement);\n this.container.insertBefore(hiddenInput, this.container.childNodes[1]);\n };\n NumericTextBox.prototype.mouseUpClick = function (event) {\n event.stopPropagation();\n clearInterval(this.timeOut);\n this.isCalled = false;\n if (this.spinUp) {\n EventHandler.remove(this.spinUp, 'mouseleave', this.mouseUpClick);\n }\n if (this.spinDown) {\n EventHandler.remove(this.spinDown, 'mouseleave', this.mouseUpClick);\n }\n };\n /**\n * Increments the NumericTextBox value with the specified step value.\n *\n * @param {number} step - Specifies the value used to increment the NumericTextBox value.\n * if its not given then numeric value will be incremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.increment = function (step) {\n if (step === void 0) {\n step = this.step;\n }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, INCREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Decrements the NumericTextBox value with specified step value.\n *\n * @param {number} step - Specifies the value used to decrement the NumericTextBox value.\n * if its not given then numeric value will be decremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.decrement = function (step) {\n if (step === void 0) {\n step = this.step;\n }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, DECREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n NumericTextBox.prototype.destroy = function () {\n this.unwireEvents();\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n detach(this.hiddenInput);\n if (this.showSpinButton) {\n this.unwireSpinBtnEvents();\n detach(this.spinUp);\n detach(this.spinDown);\n }\n var attrArray = ['aria-labelledby', 'role', 'autocomplete', 'aria-readonly', 'aria-disabled', 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'tabindex', 'aria-valuemin', 'aria-valuemax', 'aria-valuenow', 'aria-invalid'];\n for (var i = 0; i < attrArray.length; i++) {\n this.element.removeAttribute(attrArray[i]);\n }\n this.element.classList.remove('e-input');\n this.container.insertAdjacentElement('afterend', this.element);\n detach(this.container);\n this.spinUp = null;\n this.spinDown = null;\n this.container = null;\n this.hiddenInput = null;\n this.changeEventArgs = null;\n this.blurEventArgs = null;\n this.focusEventArgs = null;\n this.inputWrapper = null;\n Input.destroy({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n _super.prototype.destroy.call(this);\n };\n /**\n * Returns the value of NumericTextBox with the format applied to the NumericTextBox.\n *\n * @returns {string} - Returns the formatted value of the NumericTextBox.\n */\n NumericTextBox.prototype.getText = function () {\n return this.element.value;\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.element.focus();\n addClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.element.blur();\n removeClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns the persisted data.\n */\n NumericTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {NumericTextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {NumericTextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.container]);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n if (this.readonly) {\n attributes(this.element, {\n 'aria-readonly': 'true'\n });\n } else {\n this.element.removeAttribute('aria-readonly');\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.updateDataAttribute(true);\n this.checkAttributes(true);\n Input.validateInputType(this.container, this.element);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.element);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'step':\n this.step = newProp.step;\n this.validateStep();\n break;\n case 'showSpinButton':\n this.updateSpinButton(newProp);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n this.floatLabelTypeUpdate();\n break;\n case 'value':\n this.isDynamicChange = (this.isAngular || this.isVue) && this.preventChange;\n this.updateValue(newProp.value);\n if (this.isDynamicChange) {\n this.preventChange = false;\n this.isDynamicChange = false;\n }\n break;\n case 'min':\n case 'max':\n setValue(prop, getValue(prop, newProp), this);\n this.validateMinMax();\n this.updateValue(this.value);\n break;\n case 'strictMode':\n this.strictMode = newProp.strictMode;\n this.updateValue(this.value);\n this.validateState();\n break;\n case 'locale':\n this.initCultureFunc();\n this.l10n.setLocale(this.locale);\n this.setSpinButton();\n this.updatePlaceholder();\n Input.setPlaceholder(this.placeholder, this.element);\n this.updateValue(this.value);\n break;\n case 'currency':\n {\n var propVal = getValue(prop, newProp);\n this.setProperties({\n currencyCode: propVal\n }, true);\n this.updateCurrency(prop, propVal);\n }\n break;\n case 'currencyCode':\n {\n var propValue = getValue(prop, newProp);\n this.setProperties({\n currency: propValue\n }, true);\n this.updateCurrency('currency', propValue);\n }\n break;\n case 'format':\n setValue(prop, getValue(prop, newProp), this);\n this.initCultureInfo();\n this.updateValue(this.value);\n break;\n case 'decimals':\n this.decimals = newProp.decimals;\n this.updateValue(this.value);\n }\n }\n };\n NumericTextBox.prototype.updateClearButton = function (newProp) {\n Input.setClearButton(newProp.showClearButton, this.element, this.inputWrapper, undefined, this.createElement);\n this.bindClearEvent();\n };\n NumericTextBox.prototype.updateSpinButton = function (newProp) {\n if (newProp.showSpinButton) {\n this.spinBtnCreation();\n } else {\n detach(this.spinUp);\n detach(this.spinDown);\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n NumericTextBox.prototype.getModuleName = function () {\n return 'numerictextbox';\n };\n __decorate([Property('')], NumericTextBox.prototype, \"cssClass\", void 0);\n __decorate([Property(null)], NumericTextBox.prototype, \"value\", void 0);\n __decorate([Property(-Number.MAX_VALUE)], NumericTextBox.prototype, \"min\", void 0);\n __decorate([Property(Number.MAX_VALUE)], NumericTextBox.prototype, \"max\", void 0);\n __decorate([Property(1)], NumericTextBox.prototype, \"step\", void 0);\n __decorate([Property(null)], NumericTextBox.prototype, \"width\", void 0);\n __decorate([Property(null)], NumericTextBox.prototype, \"placeholder\", void 0);\n __decorate([Property({})], NumericTextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([Property(true)], NumericTextBox.prototype, \"showSpinButton\", void 0);\n __decorate([Property(false)], NumericTextBox.prototype, \"readonly\", void 0);\n __decorate([Property(true)], NumericTextBox.prototype, \"enabled\", void 0);\n __decorate([Property(false)], NumericTextBox.prototype, \"showClearButton\", void 0);\n __decorate([Property(false)], NumericTextBox.prototype, \"enablePersistence\", void 0);\n __decorate([Property('n2')], NumericTextBox.prototype, \"format\", void 0);\n __decorate([Property(null)], NumericTextBox.prototype, \"decimals\", void 0);\n __decorate([Property(null)], NumericTextBox.prototype, \"currency\", void 0);\n __decorate([Property(null)], NumericTextBox.prototype, \"currencyCode\", void 0);\n __decorate([Property(true)], NumericTextBox.prototype, \"strictMode\", void 0);\n __decorate([Property(false)], NumericTextBox.prototype, \"validateDecimalOnType\", void 0);\n __decorate([Property('Never')], NumericTextBox.prototype, \"floatLabelType\", void 0);\n __decorate([Event()], NumericTextBox.prototype, \"created\", void 0);\n __decorate([Event()], NumericTextBox.prototype, \"destroyed\", void 0);\n __decorate([Event()], NumericTextBox.prototype, \"change\", void 0);\n __decorate([Event()], NumericTextBox.prototype, \"focus\", void 0);\n __decorate([Event()], NumericTextBox.prototype, \"blur\", void 0);\n NumericTextBox = __decorate([NotifyPropertyChanges], NumericTextBox);\n return NumericTextBox;\n}(Component);\nexport { NumericTextBox };","/* eslint-disable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\n/**\n * MaskedTextBox base module\n */\nimport { EventHandler, isNullOrUndefined, merge, attributes, addClass, removeClass, Browser, extend } from '@syncfusion/ej2-base';\nimport { Input } from '../../input/input';\nvar ERROR = 'e-error';\nvar INPUTGROUP = 'e-input-group';\nvar FLOATINPUT = 'e-float-input';\nvar UTILMASK = 'e-utility-mask';\nvar TOPLABEL = 'e-label-top';\nvar BOTTOMLABEL = 'e-label-bottom';\n/**\n * @hidden\n * Built-in masking elements collection.\n */\nexport var regularExpressions = {\n '0': '[0-9]',\n '9': '[0-9 ]',\n '#': '[0-9 +-]',\n 'L': '[A-Za-z]',\n '?': '[A-Za-z ]',\n '&': '[^\\x7f ]+',\n 'C': '[^\\x7f]+',\n 'A': '[A-Za-z0-9]',\n 'a': '[A-Za-z0-9 ]'\n};\n/**\n * Generate required masking elements to the MaskedTextBox from user mask input.\n *\n * @hidden\n */\nexport function createMask() {\n attributes(this.element, {\n 'role': 'textbox',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false',\n 'aria-live': 'assertive'\n });\n if (this.mask) {\n var splitMask = this.mask.split(']');\n for (var i = 0; i < splitMask.length; i++) {\n if (splitMask[i][splitMask[i].length - 1] === '\\\\') {\n splitMask[i] = splitMask[i] + ']';\n var splitInnerMask = splitMask[i].split('[');\n for (var j = 0; j < splitInnerMask.length; j++) {\n if (splitInnerMask[j][splitInnerMask[j].length - 1] === '\\\\') {\n splitInnerMask[j] = splitInnerMask[j] + '[';\n }\n pushIntoRegExpCollec.call(this, splitInnerMask[j]);\n }\n } else {\n var splitInnerMask = splitMask[i].split('[');\n if (splitInnerMask.length > 1) {\n var chkSpace = false;\n for (var j = 0; j < splitInnerMask.length; j++) {\n if (splitInnerMask[j] === '\\\\') {\n this.customRegExpCollec.push('[');\n this.hiddenMask += splitInnerMask[j] + '[';\n } else if (splitInnerMask[j] === '') {\n chkSpace = true;\n } else if (splitInnerMask[j] !== '' && chkSpace || j === splitInnerMask.length - 1) {\n this.customRegExpCollec.push('[' + splitInnerMask[j] + ']');\n this.hiddenMask += this.promptChar;\n chkSpace = false;\n } else {\n pushIntoRegExpCollec.call(this, splitInnerMask[j]);\n }\n }\n } else {\n pushIntoRegExpCollec.call(this, splitInnerMask[0]);\n }\n }\n }\n this.escapeMaskValue = this.hiddenMask;\n this.promptMask = this.hiddenMask.replace(/[09?LCAa#&]/g, this.promptChar);\n if (!isNullOrUndefined(this.customCharacters)) {\n for (var i = 0; i < this.promptMask.length; i++) {\n if (!isNullOrUndefined(this.customCharacters[this.promptMask[i]])) {\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n this.promptMask = this.promptMask.replace(new RegExp(this.promptMask[i], 'g'), this.promptChar);\n }\n }\n }\n var escapeNumber = 0;\n if (this.hiddenMask.match(new RegExp(/\\\\/))) {\n for (var i = 0; i < this.hiddenMask.length; i++) {\n var j = 0;\n if (i >= 1) {\n j = i;\n }\n escapeNumber = this.hiddenMask.length - this.promptMask.length;\n j = j - escapeNumber;\n if (i > 0 && this.hiddenMask[i - 1] !== '\\\\' && (this.hiddenMask[i] === '>' || this.hiddenMask[i] === '<' || this.hiddenMask[i] === '|')) {\n this.promptMask = this.promptMask.substring(0, j) + this.promptMask.substring(i + 1 - escapeNumber, this.promptMask.length);\n this.escapeMaskValue = this.escapeMaskValue.substring(0, j) + this.escapeMaskValue.substring(i + 1 - escapeNumber, this.escapeMaskValue.length);\n }\n if (this.hiddenMask[i] === '\\\\') {\n this.promptMask = this.promptMask.substring(0, j) + this.hiddenMask[i + 1] + this.promptMask.substring(i + 2 - escapeNumber, this.promptMask.length);\n this.escapeMaskValue = this.escapeMaskValue.substring(0, j) + this.escapeMaskValue[i + 1] + this.escapeMaskValue.substring(i + 2 - escapeNumber, this.escapeMaskValue.length);\n }\n }\n } else {\n this.promptMask = this.promptMask.replace(/[>|<]/g, '');\n this.escapeMaskValue = this.hiddenMask.replace(/[>|<]/g, '');\n }\n attributes(this.element, {\n 'aria-invalid': 'false'\n });\n }\n}\n/**\n * Apply mask ability with masking elements to the MaskedTextBox.\n *\n * @hidden\n */\nexport function applyMask() {\n setElementValue.call(this, this.promptMask);\n setMaskValue.call(this, this.value);\n}\n/**\n * To wire required events to the MaskedTextBox.\n *\n * @hidden\n */\nexport function wireEvents() {\n EventHandler.add(this.element, 'keydown', maskInputKeyDownHandler, this);\n EventHandler.add(this.element, 'keypress', maskInputKeyPressHandler, this);\n EventHandler.add(this.element, 'keyup', maskInputKeyUpHandler, this);\n EventHandler.add(this.element, 'input', maskInputHandler, this);\n EventHandler.add(this.element, 'focus', maskInputFocusHandler, this);\n EventHandler.add(this.element, 'blur', maskInputBlurHandler, this);\n EventHandler.add(this.element, 'paste', maskInputPasteHandler, this);\n EventHandler.add(this.element, 'cut', maskInputCutHandler, this);\n EventHandler.add(this.element, 'drop', maskInputDropHandler, this);\n EventHandler.add(this.element, 'mousedown', maskInputMouseDownHandler, this);\n EventHandler.add(this.element, 'mouseup', maskInputMouseUpHandler, this);\n if (this.enabled) {\n bindClearEvent.call(this);\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', resetFormHandler, this);\n }\n }\n}\n/**\n * To unwire events attached to the MaskedTextBox.\n *\n * @hidden\n */\nexport function unwireEvents() {\n EventHandler.remove(this.element, 'keydown', maskInputKeyDownHandler);\n EventHandler.remove(this.element, 'keypress', maskInputKeyPressHandler);\n EventHandler.remove(this.element, 'keyup', maskInputKeyUpHandler);\n EventHandler.remove(this.element, 'input', maskInputHandler);\n EventHandler.remove(this.element, 'focus', maskInputFocusHandler);\n EventHandler.remove(this.element, 'blur', maskInputBlurHandler);\n EventHandler.remove(this.element, 'paste', maskInputPasteHandler);\n EventHandler.remove(this.element, 'cut', maskInputCutHandler);\n EventHandler.remove(this.element, 'drop', maskInputDropHandler);\n EventHandler.remove(this.element, 'mousedown', maskInputMouseDownHandler);\n EventHandler.remove(this.element, 'mouseup', maskInputMouseUpHandler);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', resetFormHandler);\n }\n}\n/**\n * To bind required events to the MaskedTextBox clearButton.\n *\n * @hidden\n */\nexport function bindClearEvent() {\n if (this.showClearButton) {\n EventHandler.add(this.inputObj.clearButton, 'mousedown touchstart', resetHandler, this);\n }\n}\nfunction resetHandler(e) {\n e.preventDefault();\n if (!this.inputObj.clearButton.classList.contains('e-clear-icon-hide') || this.inputObj.container.classList.contains('e-static-clear')) {\n clear.call(this, e);\n this.value = '';\n }\n}\nfunction clear(event) {\n var value = this.element.value;\n setElementValue.call(this, this.promptMask);\n this.redoCollec.unshift({\n value: this.promptMask,\n startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n triggerMaskChangeEvent.call(this, event, value);\n this.element.setSelectionRange(0, 0);\n}\nfunction resetFormHandler() {\n if (this.element.tagName === 'EJS-MASKEDTEXTBOX') {\n setElementValue.call(this, this.promptMask);\n } else {\n this.value = this.initInputValue;\n }\n}\n/**\n * To get masked value from the MaskedTextBox.\n *\n * @hidden\n */\nexport function unstrippedValue(element) {\n return element.value;\n}\n/**\n * To extract raw value from the MaskedTextBox.\n *\n * @hidden\n */\nexport function strippedValue(element, maskValues) {\n var value = '';\n var k = 0;\n var checkMask = false;\n var maskValue = !isNullOrUndefined(maskValues) ? maskValues : !isNullOrUndefined(element) && !isNullOrUndefined(this) ? element.value : maskValues;\n if (maskValue !== this.promptMask) {\n for (var i = 0; i < this.customRegExpCollec.length; i++) {\n if (checkMask) {\n checkMask = false;\n }\n if (this.customRegExpCollec[k] === '>' || this.customRegExpCollec[k] === '<' || this.customRegExpCollec[k] === '|' || this.customRegExpCollec[k] === '\\\\') {\n --i;\n checkMask = true;\n }\n if (!checkMask) {\n if (maskValue[i] !== this.promptChar && !isNullOrUndefined(this.customRegExpCollec[k]) && (this._callPasteHandler || !isNullOrUndefined(this.regExpCollec[this.customRegExpCollec[k]]) && !this.maskedRegExp.includes(this.customRegExpCollec[k]) || this.customRegExpCollec[k].length > 2 && this.customRegExpCollec[k][0] === '[' && this.customRegExpCollec[k][this.customRegExpCollec[k].length - 1] === ']' || !isNullOrUndefined(this.customCharacters) && !isNullOrUndefined(this.customCharacters[this.customRegExpCollec[k]])) && maskValue !== '') {\n value += maskValue[i];\n }\n }\n ++k;\n }\n }\n if (this.mask === null || this.mask === '' && this.value !== undefined) {\n value = maskValue;\n }\n return value;\n}\nfunction pushIntoRegExpCollec(value) {\n for (var k = 0; k < value.length; k++) {\n this.hiddenMask += value[k];\n if (value[k] !== '\\\\') {\n this.customRegExpCollec.push(value[k]);\n } else if (value[k] === '\\\\' && !isNullOrUndefined(this.regExpCollec[value[k + 1]])) {\n this.maskedRegExp.push(value[k + 1]);\n }\n }\n}\nexport function maskInputMouseDownHandler() {\n this.isClicked = true;\n}\nexport function maskInputMouseUpHandler() {\n this.isClicked = false;\n}\nexport function maskInputFocusHandler(event) {\n var _this = this;\n var inputElement = this.element;\n var startIndex = 0;\n var modelValue = strippedValue.call(this, inputElement);\n var toAllowForward = false;\n var toAllowBackward = false;\n var eventArgs = {\n selectionStart: inputElement.selectionStart,\n event: event,\n value: this.value,\n maskedValue: inputElement.value,\n container: !isNullOrUndefined(this.inputObj) ? this.inputObj.container : this.inputObj,\n selectionEnd: inputElement.selectionEnd\n };\n if (!this.isClicked) {\n triggerFocus.call(this, eventArgs, inputElement);\n }\n if (this.mask) {\n if (!(!(modelValue === null || modelValue === '') || this.floatLabelType === 'Always' || this.placeholder === null || this.placeholder === '')) {\n inputElement.value = this.promptMask;\n }\n setTimeout(function () {\n if (inputElement.selectionStart === _this.promptMask.length || inputElement.value[inputElement.selectionStart] === _this.promptChar) {\n toAllowForward = true;\n } else {\n for (var i = inputElement.selectionStart; i < _this.promptMask.length; i++) {\n if (inputElement.value[i] !== _this.promptChar) {\n if (inputElement.value[i] !== _this.promptMask[i]) {\n toAllowForward = false;\n break;\n }\n } else {\n toAllowForward = true;\n break;\n }\n }\n }\n });\n setTimeout(function () {\n var backSelectionStart = inputElement.selectionStart - 1;\n if (backSelectionStart === _this.promptMask.length - 1 || inputElement.value[backSelectionStart] === _this.promptChar) {\n toAllowBackward = true;\n } else {\n for (var i = backSelectionStart; i >= 0; i--) {\n if (inputElement.value[i] !== _this.promptChar) {\n if (inputElement.value[i] !== _this.promptMask[i]) {\n toAllowBackward = false;\n break;\n }\n } else {\n toAllowBackward = true;\n break;\n }\n }\n }\n });\n if (this.isClicked || this.floatLabelType !== 'Always' && (modelValue === null || modelValue === '') && this.placeholder !== null && this.placeholder !== '') {\n for (startIndex = 0; startIndex < this.promptMask.length; startIndex++) {\n if (inputElement.value[startIndex] === this.promptChar) {\n setTimeout(function () {\n if (toAllowForward || toAllowBackward) {\n inputElement.selectionEnd = startIndex;\n inputElement.selectionStart = startIndex;\n }\n eventArgs = {\n selectionStart: inputElement.selectionStart,\n event: event,\n value: _this.value,\n maskedValue: inputElement.value,\n container: !isNullOrUndefined(_this.inputObj) ? _this.inputObj.container : _this.inputObj,\n selectionEnd: inputElement.selectionEnd\n };\n triggerFocus.call(_this, eventArgs, inputElement);\n }, 110);\n break;\n }\n }\n if (isNullOrUndefined(inputElement.value.match(escapeRegExp(this.promptChar)))) {\n eventArgs = {\n selectionStart: inputElement.selectionStart,\n event: event,\n value: this.value,\n maskedValue: inputElement.value,\n container: !isNullOrUndefined(this.inputObj) ? this.inputObj.container : this.inputObj,\n selectionEnd: inputElement.selectionEnd\n };\n triggerFocus.call(this, eventArgs, inputElement);\n }\n this.isClicked = false;\n }\n }\n}\nexport function triggerFocus(eventArgs, inputElement) {\n this.trigger('focus', eventArgs, function (eventArgs) {\n inputElement.selectionStart = eventArgs.selectionStart;\n inputElement.selectionEnd = eventArgs.selectionEnd;\n });\n}\nexport function escapeRegExp(text) {\n return !isNullOrUndefined(text) ? text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&') : text;\n}\nexport function maskInputBlurHandler(event) {\n this.blurEventArgs = {\n event: event,\n value: this.value,\n maskedValue: this.element.value,\n container: !isNullOrUndefined(this.inputObj) ? this.inputObj.container : this.inputObj\n };\n this.trigger('blur', this.blurEventArgs);\n if (this.mask) {\n this.isFocus = false;\n if (this.placeholder && this.element.value === this.promptMask && this.floatLabelType !== 'Always') {\n setElementValue.call(this, '');\n var labelElement = this.element.parentNode.querySelector('.e-float-text');\n if (this.floatLabelType === 'Auto' && !isNullOrUndefined(labelElement) && labelElement.classList.contains(TOPLABEL)) {\n removeClass([labelElement], TOPLABEL);\n }\n }\n }\n}\nfunction maskInputPasteHandler(event) {\n var _this = this;\n if (this.mask && !this.readonly) {\n var sIndex_1 = this.element.selectionStart;\n var eIndex_1 = this.element.selectionEnd;\n var oldValue_1 = this.element.value;\n setElementValue.call(this, '');\n this._callPasteHandler = true;\n setTimeout(function () {\n var value = _this.element.value.replace(/ /g, '');\n if (_this.redoCollec.length > 0 && _this.redoCollec[0].value === _this.element.value) {\n value = strippedValue.call(_this, _this.element);\n }\n setElementValue.call(_this, oldValue_1);\n _this.element.selectionStart = sIndex_1;\n _this.element.selectionEnd = eIndex_1;\n var i = 0;\n _this.maskKeyPress = true;\n do {\n validateValue.call(_this, value[i], false, null);\n ++i;\n } while (i < value.length);\n _this.maskKeyPress = false;\n _this._callPasteHandler = false;\n if (_this.element.value === oldValue_1) {\n var i_1 = 0;\n _this.maskKeyPress = true;\n do {\n validateValue.call(_this, value[i_1], false, null);\n ++i_1;\n } while (i_1 < value.length);\n _this.maskKeyPress = false;\n } else {\n triggerMaskChangeEvent.call(_this, event, oldValue_1);\n }\n }, 1);\n }\n}\nfunction maskInputCutHandler(event) {\n var _this = this;\n if (this.mask && !this.readonly) {\n var preValue_1 = this.element.value;\n var sIndex_2 = this.element.selectionStart;\n var eIndex = this.element.selectionEnd;\n this.undoCollec.push({\n value: this.element.value,\n startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n var value_1 = this.element.value.substring(0, sIndex_2) + this.promptMask.substring(sIndex_2, eIndex) + this.element.value.substring(eIndex);\n setTimeout(function () {\n setElementValue.call(_this, value_1);\n _this.element.selectionStart = _this.element.selectionEnd = sIndex_2;\n if (_this.element.value !== preValue_1) {\n triggerMaskChangeEvent.call(_this, event, null);\n }\n }, 0);\n }\n}\nexport function maskInputDropHandler(event) {\n event.preventDefault();\n}\nfunction maskInputHandler(event) {\n if (Browser.isIE === true && this.element.value === '' && this.floatLabelType === 'Never') {\n return;\n }\n var eventArgs = {\n ctrlKey: false,\n keyCode: 229\n };\n extend(event, eventArgs);\n if (this.mask) {\n if (this.element.value === '') {\n this.redoCollec.unshift({\n value: this.promptMask,\n startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n }\n if (this.element.value.length === 1) {\n this.element.value = this.element.value + this.promptMask;\n this.element.setSelectionRange(1, 1);\n }\n if (!this._callPasteHandler) {\n removeMaskInputValues.call(this, event);\n }\n if (this.element.value.length > this.promptMask.length) {\n var startIndex = this.element.selectionStart;\n var addedValues = this.element.value.length - this.promptMask.length;\n var value = this.element.value.substring(startIndex - addedValues, startIndex);\n this.maskKeyPress = false;\n var i = 0;\n do {\n validateValue.call(this, value[i], event.ctrlKey, event);\n ++i;\n } while (i < value.length);\n if (this.element.value !== this.preEleVal) {\n triggerMaskChangeEvent.call(this, event, null);\n }\n }\n var val = strippedValue.call(this, this.element);\n this.prevValue = val;\n this.value = val;\n if (val === '') {\n setElementValue.call(this, this.promptMask);\n this.element.setSelectionRange(0, 0);\n }\n }\n}\nfunction maskInputKeyDownHandler(event) {\n if (this.mask && !this.readonly) {\n if (event.keyCode !== 229) {\n if (event.ctrlKey && (event.keyCode === 89 || event.keyCode === 90)) {\n event.preventDefault();\n }\n removeMaskInputValues.call(this, event);\n }\n var startValue = this.element.value;\n if (event.ctrlKey && (event.keyCode === 89 || event.keyCode === 90)) {\n var collec = void 0;\n if (event.keyCode === 90 && this.undoCollec.length > 0 && startValue !== this.undoCollec[this.undoCollec.length - 1].value) {\n collec = this.undoCollec[this.undoCollec.length - 1];\n this.redoCollec.unshift({\n value: this.element.value,\n startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n setElementValue.call(this, collec.value);\n this.element.selectionStart = collec.startIndex;\n this.element.selectionEnd = collec.endIndex;\n this.undoCollec.splice(this.undoCollec.length - 1, 1);\n } else if (event.keyCode === 89 && this.redoCollec.length > 0 && startValue !== this.redoCollec[0].value) {\n collec = this.redoCollec[0];\n this.undoCollec.push({\n value: this.element.value,\n startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n setElementValue.call(this, collec.value);\n this.element.selectionStart = collec.startIndex;\n this.element.selectionEnd = collec.endIndex;\n this.redoCollec.splice(0, 1);\n }\n }\n }\n}\nexport function mobileRemoveFunction() {\n var collec;\n var sIndex = this.element.selectionStart;\n var eIndex = this.element.selectionEnd;\n if (this.redoCollec.length > 0) {\n collec = this.redoCollec[0];\n setElementValue.call(this, collec.value);\n if (collec.startIndex - sIndex === 1) {\n this.element.selectionStart = collec.startIndex;\n this.element.selectionEnd = collec.endIndex;\n } else {\n this.element.selectionStart = sIndex + 1;\n this.element.selectionEnd = eIndex + 1;\n }\n } else {\n setElementValue.call(this, this.promptMask);\n this.element.selectionStart = this.element.selectionEnd = sIndex;\n }\n}\nfunction autoFillMaskInputValues(isRemove, oldEventVal, event) {\n if (event.type === 'input') {\n isRemove = false;\n oldEventVal = this.element.value;\n setElementValue.call(this, this.promptMask);\n setMaskValue.call(this, oldEventVal);\n }\n return isRemove;\n}\nfunction removeMaskInputValues(event) {\n var isRemove = false;\n var oldEventVal;\n var isDeleted = false;\n if (this.element.value.length < this.promptMask.length) {\n isRemove = true;\n oldEventVal = this.element.value;\n isRemove = autoFillMaskInputValues.call(this, isRemove, oldEventVal, event);\n mobileRemoveFunction.call(this);\n }\n if (this.element.value.length >= this.promptMask.length && event.type === 'input') {\n isRemove = autoFillMaskInputValues.call(this, isRemove, oldEventVal, event);\n }\n var initStartIndex = this.element.selectionStart;\n var initEndIndex = this.element.selectionEnd;\n var startIndex = this.element.selectionStart;\n var endIndex = this.element.selectionEnd;\n var maskValue = this.hiddenMask.replace(/[>|\\\\<]/g, '');\n var curMask = maskValue[startIndex - 1];\n var deleteEndIndex = this.element.selectionEnd;\n if (isRemove || event.keyCode === 8 || event.keyCode === 46) {\n this.undoCollec.push({\n value: this.element.value,\n startIndex: this.element.selectionStart,\n endIndex: endIndex\n });\n var multipleDel = false;\n var preValue = this.element.value;\n if (startIndex > 0 || (event.keyCode === 8 || event.keyCode === 46) && startIndex < this.element.value.length && this.element.selectionEnd - startIndex !== this.element.value.length) {\n var index = startIndex;\n if (startIndex !== endIndex) {\n startIndex = endIndex;\n if (event.keyCode === 46) {\n multipleDel = true;\n }\n } else if (event.keyCode === 46) {\n ++index;\n } else {\n --index;\n }\n for (var k = startIndex; event.keyCode === 8 || isRemove || multipleDel ? k > index : k < index; event.keyCode === 8 || isRemove || multipleDel ? k-- : k++) {\n for (var i = startIndex; event.keyCode === 8 || isRemove || multipleDel ? i > 0 : i < this.element.value.length; event.keyCode === 8 || isRemove || multipleDel ? i-- : i++) {\n var sIndex = void 0;\n if ((event.keyCode === 8 || multipleDel) && (initStartIndex !== initEndIndex && initStartIndex !== startIndex || initStartIndex === initEndIndex) || isRemove) {\n curMask = maskValue[i - 1];\n sIndex = startIndex - 1;\n } else {\n curMask = maskValue[i];\n sIndex = startIndex;\n ++startIndex;\n }\n var oldValue = this.element.value[sIndex];\n if (isNullOrUndefined(this.regExpCollec[\"\" + curMask]) && !isNullOrUndefined(this.customCharacters) && isNullOrUndefined(this.customCharacters[\"\" + curMask]) && this.hiddenMask[sIndex] !== this.promptChar && this.customRegExpCollec[sIndex][0] !== '[' && this.customRegExpCollec[sIndex][this.customRegExpCollec[sIndex].length - 1] !== ']' || this.promptMask[sIndex] !== this.promptChar && isNullOrUndefined(this.customCharacters)) {\n this.element.selectionStart = this.element.selectionEnd = sIndex;\n event.preventDefault();\n if (event.keyCode === 46 && !multipleDel) {\n ++this.element.selectionStart;\n }\n } else {\n var value = this.element.value;\n var prompt_1 = this.promptChar;\n var elementValue = value.substring(0, sIndex) + prompt_1 + value.substring(startIndex, value.length);\n setElementValue.call(this, elementValue);\n event.preventDefault();\n if (event.keyCode === 46 && !multipleDel) {\n sIndex++;\n }\n this.element.selectionStart = this.element.selectionEnd = sIndex;\n isDeleted = true;\n }\n startIndex = this.element.selectionStart;\n if (!isDeleted && event.keyCode === 8 || multipleDel || !isDeleted && !(event.keyCode === 46)) {\n sIndex = startIndex - 1;\n } else {\n sIndex = startIndex;\n isDeleted = false;\n }\n oldValue = this.element.value[sIndex];\n if (initStartIndex !== initEndIndex && this.element.selectionStart === initStartIndex || this.promptMask[sIndex] === this.promptChar || oldValue !== this.promptMask[sIndex] && this.promptMask[sIndex] !== this.promptChar && !isNullOrUndefined(this.customCharacters)) {\n break;\n }\n }\n }\n }\n if (event.keyCode === 46 && multipleDel && isDeleted) {\n this.element.selectionStart = this.element.selectionEnd = deleteEndIndex;\n }\n if (this.element.selectionStart === 0 && this.element.selectionEnd === this.element.value.length) {\n setElementValue.call(this, this.promptMask);\n event.preventDefault();\n this.element.selectionStart = this.element.selectionEnd = startIndex;\n }\n this.redoCollec.unshift({\n value: this.element.value,\n startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n if (this.element.value !== preValue) {\n triggerMaskChangeEvent.call(this, event, oldEventVal);\n }\n }\n}\nfunction maskInputKeyPressHandler(event) {\n if (this.mask && !this.readonly) {\n var oldValue = this.element.value;\n if (!(event.ctrlKey || event.metaKey) || (event.ctrlKey || event.metaKey) && event.code !== 'KeyA' && event.code !== 'KeyY' && event.code !== 'KeyZ' && event.code !== 'KeyX' && event.code !== 'KeyC' && event.code !== 'KeyV') {\n this.maskKeyPress = true;\n var key = event.key;\n if (key === 'Spacebar') {\n key = String.fromCharCode(event.keyCode);\n }\n if (!key) {\n this.isIosInvalid = true;\n validateValue.call(this, String.fromCharCode(event.keyCode), event.ctrlKey, event);\n event.preventDefault();\n this.isIosInvalid = false;\n } else if (key && key.length === 1) {\n validateValue.call(this, key, event.ctrlKey, event);\n event.preventDefault();\n }\n if (event.keyCode === 32 && key === ' ' && this.promptChar === ' ') {\n this.element.selectionStart = this.element.selectionEnd = this.element.selectionStart - key.length;\n }\n }\n if (this.element.value !== oldValue) {\n triggerMaskChangeEvent.call(this, event, oldValue);\n }\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction triggerMaskChangeEvent(event, oldValue) {\n var prevOnChange = this.isProtectedOnChange;\n if (!isNullOrUndefined(this.changeEventArgs) && !this.isInitial) {\n var eventArgs = {};\n this.changeEventArgs = {\n value: this.element.value,\n maskedValue: this.element.value,\n isInteraction: false,\n isInteracted: false\n };\n if (this.mask) {\n this.changeEventArgs.value = strippedValue.call(this, this.element);\n }\n if (!isNullOrUndefined(event)) {\n this.changeEventArgs.isInteracted = true;\n this.changeEventArgs.isInteraction = true;\n this.changeEventArgs.event = event;\n }\n this.isProtectedOnChange = true;\n this.value = this.changeEventArgs.value;\n this.isProtectedOnChange = prevOnChange;\n merge(eventArgs, this.changeEventArgs);\n /* istanbul ignore next */\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n } else {\n this.trigger('change', eventArgs);\n }\n }\n this.preEleVal = this.element.value;\n this.prevValue = strippedValue.call(this, this.element);\n}\nfunction maskInputKeyUpHandler(event) {\n if (this.mask && !this.readonly) {\n var collec = void 0;\n if (!this.maskKeyPress && event.keyCode === 229) {\n var oldEventVal = void 0;\n if (this.element.value.length === 1) {\n this.element.value = this.element.value + this.promptMask;\n this.element.setSelectionRange(1, 1);\n }\n if (this.element.value.length > this.promptMask.length) {\n var startIndex = this.element.selectionStart;\n var addedValues = this.element.value.length - this.promptMask.length;\n var val_1 = this.element.value.substring(startIndex - addedValues, startIndex);\n if (this.undoCollec.length > 0) {\n collec = this.undoCollec[this.undoCollec.length - 1];\n var startIndex_1 = this.element.selectionStart;\n oldEventVal = collec.value;\n var oldVal = collec.value.substring(startIndex_1 - addedValues, startIndex_1);\n collec = this.redoCollec[0];\n val_1 = val_1.trim();\n var isSpace = Browser.isAndroid && val_1 === '';\n if (!isSpace && oldVal !== val_1 && collec.value.substring(startIndex_1 - addedValues, startIndex_1) !== val_1) {\n validateValue.call(this, val_1, event.ctrlKey, event);\n } else if (isSpace) {\n preventUnsupportedValues.call(this, event, startIndex_1 - 1, this.element.selectionEnd - 1, val_1, event.ctrlKey, false);\n }\n } else {\n oldEventVal = this.promptMask;\n validateValue.call(this, val_1, event.ctrlKey, event);\n }\n this.maskKeyPress = false;\n triggerMaskChangeEvent.call(this, event, oldEventVal);\n }\n } else {\n removeMaskError.call(this);\n }\n var val = strippedValue.call(this, this.element);\n if (!(this.element.selectionStart === 0 && this.promptMask === this.element.value && val === '') || val === '' && this.value !== val) {\n this.prevValue = val;\n this.value = val;\n }\n } else {\n triggerMaskChangeEvent.call(this, event);\n }\n if (this.element.selectionStart === 0 && this.element.selectionEnd === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var temp_1 = this.element;\n setTimeout(function () {\n temp_1.setSelectionRange(0, 0);\n }, 0);\n }\n}\nfunction mobileSwipeCheck(key) {\n if (key.length > 1 && this.promptMask.length + key.length < this.element.value.length) {\n var elementValue = this.redoCollec[0].value.substring(0, this.redoCollec[0].startIndex) + key + this.redoCollec[0].value.substring(this.redoCollec[0].startIndex, this.redoCollec[0].value.length);\n setElementValue.call(this, elementValue);\n this.element.selectionStart = this.element.selectionEnd = this.redoCollec[0].startIndex + key.length;\n }\n this.element.selectionStart = this.element.selectionStart - key.length;\n this.element.selectionEnd = this.element.selectionEnd - key.length;\n}\nfunction mobileValidation(key) {\n if (!this.maskKeyPress) {\n mobileSwipeCheck.call(this, key);\n }\n}\nfunction validateValue(key, isCtrlKey, event) {\n mobileValidation.call(this, key);\n if (isNullOrUndefined(this) || isNullOrUndefined(key)) {\n return;\n }\n var startIndex = this.element.selectionStart;\n var initStartIndex = startIndex;\n var curMask;\n var allowText = false;\n var value = this.element.value;\n var eventOldVal;\n var prevSupport = false;\n var isEqualVal = false;\n for (var k = 0; k < key.length; k++) {\n var keyValue = key[k];\n startIndex = this.element.selectionStart;\n if (!this.maskKeyPress && initStartIndex === startIndex) {\n startIndex = startIndex + k;\n }\n if (!this.maskKeyPress || startIndex < this.promptMask.length) {\n for (var i = startIndex; i < this.promptMask.length; i++) {\n var maskValue = this.escapeMaskValue;\n curMask = maskValue[startIndex];\n if (this.hiddenMask[startIndex] === '\\\\' && this.hiddenMask[startIndex + 1] === key) {\n isEqualVal = true;\n }\n if (isNullOrUndefined(this.regExpCollec[\"\" + curMask]) && (isNullOrUndefined(this.customCharacters) || !isNullOrUndefined(this.customCharacters) && isNullOrUndefined(this.customCharacters[\"\" + curMask])) && this.hiddenMask[startIndex] !== this.promptChar && this.customRegExpCollec[startIndex][0] !== '[' && this.customRegExpCollec[startIndex][this.customRegExpCollec[startIndex].length - 1] !== ']' || this.promptMask[startIndex] !== this.promptChar && isNullOrUndefined(this.customCharacters) || this.promptChar === curMask && this.escapeMaskValue === this.mask) {\n this.element.selectionStart = this.element.selectionEnd = startIndex + 1;\n startIndex = this.element.selectionStart;\n curMask = this.hiddenMask[startIndex];\n }\n }\n if (!isNullOrUndefined(this.customCharacters) && !isNullOrUndefined(this.customCharacters[\"\" + curMask])) {\n var customValStr = this.customCharacters[\"\" + curMask];\n var customValArr = customValStr.split(',');\n for (var i = 0; i < customValArr.length; i++) {\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n if (keyValue.match(new RegExp('[' + customValArr[i] + ']'))) {\n allowText = true;\n break;\n }\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n } else if (!isNullOrUndefined(this.regExpCollec[\"\" + curMask]) && keyValue.match(new RegExp(this.regExpCollec[\"\" + curMask])) && this.promptMask[startIndex] === this.promptChar) {\n allowText = true;\n } else if (this.promptMask[startIndex] === this.promptChar && this.customRegExpCollec[startIndex][0] === '[' && this.customRegExpCollec[startIndex][this.customRegExpCollec[startIndex].length - 1] === ']'\n /* eslint-disable-next-line security/detect-non-literal-regexp */ && keyValue.match(new RegExp(this.customRegExpCollec[startIndex]))) {\n allowText = true;\n }\n if ((!this.maskKeyPress || startIndex < this.hiddenMask.length) && allowText) {\n if (k === 0) {\n if (this.maskKeyPress) {\n this.undoCollec.push({\n value: value,\n startIndex: startIndex,\n endIndex: startIndex\n });\n } else {\n var sIndex = this.element.selectionStart;\n var eIndex = this.element.selectionEnd;\n if (this.redoCollec.length > 0) {\n eventOldVal = this.redoCollec[0].value;\n setElementValue.call(this, eventOldVal);\n this.undoCollec.push(this.redoCollec[0]);\n } else {\n this.undoCollec.push({\n value: this.promptMask,\n startIndex: startIndex,\n endIndex: startIndex\n });\n eventOldVal = this.promptMask;\n setElementValue.call(this, eventOldVal);\n }\n this.element.selectionStart = sIndex;\n this.element.selectionEnd = eIndex;\n }\n }\n startIndex = this.element.selectionStart;\n applySupportedValues.call(this, event, startIndex, keyValue, eventOldVal, isEqualVal);\n prevSupport = true;\n if (k === key.length - 1) {\n this.redoCollec.unshift({\n value: this.element.value,\n startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n }\n allowText = false;\n } else {\n startIndex = this.element.selectionStart;\n preventUnsupportedValues.call(this, event, startIndex, initStartIndex, key, isCtrlKey, prevSupport);\n }\n if (k === key.length - 1 && !allowText) {\n if (!Browser.isAndroid || Browser.isAndroid && startIndex < this.promptMask.length) {\n this.redoCollec.unshift({\n value: this.element.value,\n startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n }\n }\n } else {\n if (key.length === 1 && !isCtrlKey && !isNullOrUndefined(event)) {\n addMaskErrorClass.call(this);\n }\n }\n }\n}\nfunction applySupportedValues(event, startIndex, keyValue, eventOldVal, isEqualVal) {\n if (this.hiddenMask.length > this.promptMask.length) {\n keyValue = changeToLowerUpperCase.call(this, keyValue, this.element.value);\n }\n if (!isEqualVal) {\n var value = this.element.value;\n var elementValue = value.substring(0, startIndex) + keyValue + value.substring(startIndex + 1, value.length);\n setElementValue.call(this, elementValue);\n this.element.selectionStart = this.element.selectionEnd = startIndex + 1;\n }\n}\nfunction preventUnsupportedValues(event, sIdx, idx, key, ctrl, chkSupport) {\n if (!this.maskKeyPress) {\n var value = this.element.value;\n if (sIdx >= this.promptMask.length) {\n setElementValue.call(this, value.substring(0, sIdx));\n } else {\n if (idx === sIdx) {\n setElementValue.call(this, value.substring(0, sIdx) + value.substring(sIdx + 1, value.length));\n } else {\n if (this.promptMask.length === this.element.value.length) {\n setElementValue.call(this, value.substring(0, sIdx) + value.substring(sIdx, value.length));\n } else {\n setElementValue.call(this, value.substring(0, idx) + value.substring(idx + 1, value.length));\n }\n }\n this.element.selectionStart = this.element.selectionEnd = chkSupport || this.element.value[idx] !== this.promptChar ? sIdx : idx;\n }\n addMaskErrorClass.call(this);\n }\n if (key.length === 1 && !ctrl && !isNullOrUndefined(event)) {\n addMaskErrorClass.call(this);\n }\n}\nfunction addMaskErrorClass() {\n var _this = this;\n var parentElement = this.element.parentNode;\n var timer = 200;\n if (parentElement.classList.contains(INPUTGROUP) || parentElement.classList.contains(FLOATINPUT)) {\n addClass([parentElement], ERROR);\n } else {\n addClass([this.element], ERROR);\n }\n if (this.isIosInvalid === true) {\n timer = 400;\n }\n attributes(this.element, {\n 'aria-invalid': 'true'\n });\n setTimeout(function () {\n if (!_this.maskKeyPress) {\n removeMaskError.call(_this);\n }\n }, timer);\n}\nfunction removeMaskError() {\n var parentElement = this.element.parentNode;\n if (!isNullOrUndefined(parentElement)) {\n removeClass([parentElement], ERROR);\n }\n removeClass([this.element], ERROR);\n attributes(this.element, {\n 'aria-invalid': 'false'\n });\n}\n/**\n * Validates user input using masking elements '<' , '>' and '|'.\n *\n * @hidden\n */\nfunction changeToLowerUpperCase(key, value) {\n var promptMask;\n var i;\n var curVal = value;\n var caseCount = 0;\n for (i = 0; i < this.hiddenMask.length; i++) {\n if (this.hiddenMask[i] === '\\\\') {\n promptMask = curVal.substring(0, i) + '\\\\' + curVal.substring(i, curVal.length);\n }\n if (this.hiddenMask[i] === '>' || this.hiddenMask[i] === '<' || this.hiddenMask[i] === '|') {\n if (this.hiddenMask[i] !== curVal[i]) {\n promptMask = curVal.substring(0, i) + this.hiddenMask[i] + curVal.substring(i, curVal.length);\n }\n ++caseCount;\n }\n if (promptMask) {\n if (promptMask[i] === this.promptChar && i > this.element.selectionStart || this.element.value.indexOf(this.promptChar) < 0 && this.element.selectionStart + caseCount === i) {\n caseCount = 0;\n break;\n }\n curVal = promptMask;\n }\n }\n while (i >= 0 && promptMask) {\n if (i === 0 || promptMask[i - 1] !== '\\\\') {\n if (promptMask[i] === '>') {\n key = key.toUpperCase();\n break;\n } else if (promptMask[i] === '<') {\n key = key.toLowerCase();\n break;\n } else if (promptMask[i] === '|') {\n break;\n }\n }\n --i;\n }\n return key;\n}\n/**\n * To set updated values in the MaskedTextBox.\n *\n * @hidden\n */\nexport function setMaskValue(val) {\n if (this.mask && val !== undefined && (this.prevValue === undefined || this.prevValue !== val)) {\n this.maskKeyPress = true;\n setElementValue.call(this, this.promptMask);\n if (val !== '' && !(val === null && this.floatLabelType === 'Never' && this.placeholder)) {\n this.element.selectionStart = 0;\n this.element.selectionEnd = 0;\n }\n if (val !== null) {\n for (var i = 0; i < val.length; i++) {\n validateValue.call(this, val[i], false, null);\n }\n }\n var newVal = strippedValue.call(this, this.element);\n this.prevValue = newVal;\n this.value = newVal;\n triggerMaskChangeEvent.call(this, null, null);\n this.maskKeyPress = false;\n var labelElement = this.element.parentNode.querySelector('.e-float-text');\n if (this.element.value === this.promptMask && this.floatLabelType === 'Auto' && this.placeholder && !isNullOrUndefined(labelElement) && labelElement.classList.contains(TOPLABEL) && !this.isFocus) {\n removeClass([labelElement], TOPLABEL);\n addClass([labelElement], BOTTOMLABEL);\n setElementValue.call(this, '');\n }\n }\n if (this.mask === null || this.mask === '' && this.value !== undefined) {\n setElementValue.call(this, this.value);\n }\n}\n/**\n * To set updated values in the input element.\n *\n * @hidden\n */\nexport function setElementValue(val, element) {\n if (!this.isFocus && this.floatLabelType === 'Auto' && this.placeholder && isNullOrUndefined(this.value)) {\n val = '';\n }\n var value = strippedValue.call(this, element ? element : this.element, val);\n if (value === null || value === '') {\n Input.setValue(val, element ? element : this.element, this.floatLabelType, false);\n if (this.showClearButton) {\n this.inputObj.clearButton.classList.add('e-clear-icon-hide');\n }\n } else {\n Input.setValue(val, element ? element : this.element, this.floatLabelType, this.showClearButton);\n }\n}\n/**\n * Provide mask support to input textbox through utility method.\n *\n * @hidden\n */\nexport function maskInput(args) {\n var inputEle = getMaskInput(args);\n applyMask.call(inputEle);\n var val = strippedValue.call(this, this.element);\n this.prevValue = val;\n this.value = val;\n if (args.mask) {\n unwireEvents.call(inputEle);\n wireEvents.call(inputEle);\n }\n}\nfunction getMaskInput(args) {\n addClass([args.element], UTILMASK);\n var inputEle = {\n element: args.element,\n mask: args.mask,\n promptMask: '',\n hiddenMask: '',\n escapeMaskValue: '',\n promptChar: args.promptChar ? args.promptChar.length > 1 ? args.promptChar = args.promptChar[0] : args.promptChar : '_',\n value: args.value ? args.value : null,\n regExpCollec: regularExpressions,\n customRegExpCollec: [],\n customCharacters: args.customCharacters,\n undoCollec: [],\n redoCollec: [],\n maskKeyPress: false,\n prevValue: ''\n };\n createMask.call(inputEle);\n return inputEle;\n}\n/**\n * Gets raw value of the textbox which has been masked through utility method.\n *\n * @hidden\n */\nexport function getVal(args) {\n return strippedValue.call(getUtilMaskEle(args), args.element);\n}\n/**\n * Gets masked value of the textbox which has been masked through utility method.\n *\n * @hidden\n */\nexport function getMaskedVal(args) {\n return unstrippedValue.call(getUtilMaskEle(args), args.element);\n}\nfunction getUtilMaskEle(args) {\n var inputEle;\n if (!isNullOrUndefined(args) && args.element.classList.contains(UTILMASK)) {\n inputEle = getMaskInput(args);\n }\n return inputEle;\n}\n/**\n * Arguments to perform undo and redo functionalities.\n *\n * @hidden\n */\nvar MaskUndo = /** @class */function () {\n function MaskUndo() {}\n return MaskUndo;\n}();\nexport { MaskUndo };\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar maskUndo = new MaskUndo();\n/* eslint-enable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */","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};\nimport { selectAll, select, createElement, Base, detach } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined, EventHandler } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, Event, onIntlChange } from '@syncfusion/ej2-base';\nimport { Internationalization, L10n } from '@syncfusion/ej2-base';\n/**\n * global declarations\n */\nexport var regex = {\n /* eslint-disable no-useless-escape */\n EMAIL: new RegExp('^[A-Za-z0-9._%+-]{1,}@[A-Za-z0-9._%+-]{1,}([.]{1}[a-zA-Z0-9]{2,}' + '|[.]{1}[a-zA-Z0-9]{2,4}[.]{1}[a-zA-Z0-9]{2,4})$'),\n /* eslint-disable-next-line security/detect-unsafe-regex */\n URL: /^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/m,\n DATE_ISO: new RegExp('^([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$'),\n DIGITS: new RegExp('^[0-9]*$'),\n PHONE: new RegExp('^[+]?[0-9]{9,13}$'),\n CREDITCARD: new RegExp('^\\\\d{13,16}$')\n /* eslint-enable no-useless-escape */\n};\n/**\n * ErrorOption values\n *\n * @private\n */\nexport var ErrorOption;\n(function (ErrorOption) {\n /**\n * Defines the error message.\n */\n ErrorOption[ErrorOption[\"Message\"] = 0] = \"Message\";\n /**\n * Defines the error element type.\n */\n ErrorOption[ErrorOption[\"Label\"] = 1] = \"Label\";\n})(ErrorOption || (ErrorOption = {}));\n/**\n * FormValidator class enables you to validate the form fields based on your defined rules\n * ```html\n * <form id='formId'>\n * <input type='text' name='Name' />\n * <input type='text' name='Age' />\n * </form>\n * <script>\n * let formObject = new FormValidator('#formId', {\n * rules: { Name: { required: true }, Age: { range: [18, 30] } };\n * });\n * formObject.validate();\n * </script>\n * ```\n */\nvar FormValidator = /** @class */function (_super) {\n __extends(FormValidator, _super);\n /**\n * Initializes the FormValidator.\n *\n * @param {string | HTMLFormElement} element - Specifies the element to render as component.\n * @param {FormValidatorModel} options - Specifies the FormValidator model.\n * @private\n */\n function FormValidator(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.validated = [];\n _this.errorRules = [];\n _this.allowSubmit = false;\n _this.required = 'required';\n _this.infoElement = null;\n _this.inputElement = null;\n _this.selectQuery = 'input:not([type=reset]):not([type=button]), select, textarea';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.localyMessage = {};\n /**\n * Specifies the default messages for validation rules.\n *\n * @default { List of validation message }\n */\n _this.defaultMessages = {\n required: 'This field is required.',\n email: 'Please enter a valid email address.',\n url: 'Please enter a valid URL.',\n date: 'Please enter a valid date.',\n dateIso: 'Please enter a valid date ( ISO ).',\n creditcard: 'Please enter valid card number',\n number: 'Please enter a valid number.',\n digits: 'Please enter only digits.',\n maxLength: 'Please enter no more than {0} characters.',\n minLength: 'Please enter at least {0} characters.',\n rangeLength: 'Please enter a value between {0} and {1} characters long.',\n range: 'Please enter a value between {0} and {1}.',\n max: 'Please enter a value less than or equal to {0}.',\n min: 'Please enter a value greater than or equal to {0}.',\n regex: 'Please enter a correct value.',\n tel: 'Please enter a valid phone number.',\n pattern: 'Please enter a correct pattern value.',\n equalTo: 'Please enter the valid match text'\n };\n if (typeof _this.rules === 'undefined') {\n _this.rules = {};\n }\n _this.l10n = new L10n('formValidator', _this.defaultMessages, _this.locale);\n if (_this.locale) {\n _this.localeFunc();\n }\n onIntlChange.on('notifyExternalChange', _this.afterLocalization, _this);\n element = typeof element === 'string' ? select(element, document) : element;\n // Set novalidate to prevent default HTML5 form validation\n if (_this.element != null) {\n _this.element.setAttribute('novalidate', '');\n _this.inputElements = selectAll(_this.selectQuery, _this.element);\n _this.createHTML5Rules();\n _this.wireEvents();\n } else {\n return undefined;\n }\n return _this;\n }\n FormValidator_1 = FormValidator;\n /* eslint-enable @typescript-eslint/no-explicit-any */\n /**\n * Add validation rules to the corresponding input element based on `name` attribute.\n *\n * @param {string} name `name` of form field.\n * @param {Object} rules Validation rules for the corresponding element.\n * @returns {void}\n */\n FormValidator.prototype.addRules = function (name, rules) {\n if (name) {\n // eslint-disable-next-line no-prototype-builtins\n if (this.rules.hasOwnProperty(name)) {\n extend(this.rules[\"\" + name], rules, {});\n } else {\n this.rules[\"\" + name] = rules;\n }\n }\n };\n /**\n * Remove validation to the corresponding field based on name attribute.\n * When no parameter is passed, remove all the validations in the form.\n *\n * @param {string} name Input name attribute value.\n * @param {string[]} rules List of validation rules need to be remove from the corresponding element.\n * @returns {void}\n */\n FormValidator.prototype.removeRules = function (name, rules) {\n if (!name && !rules) {\n this.rules = {};\n } else if (this.rules[\"\" + name] && !rules) {\n delete this.rules[\"\" + name];\n } else if (!isNullOrUndefined(this.rules[\"\" + name] && rules)) {\n for (var i = 0; i < rules.length; i++) {\n delete this.rules[\"\" + name][rules[parseInt(i.toString(), 10)]];\n }\n } else {\n return;\n }\n };\n /**\n * Validate the current form values using defined rules.\n * Returns `true` when the form is valid otherwise `false`\n *\n * @param {string} selected - Optional parameter to validate specified element.\n * @returns {boolean} - Returns form validation status.\n */\n FormValidator.prototype.validate = function (selected) {\n var rules = Object.keys(this.rules);\n if (selected && rules.length) {\n this.validateRules(selected);\n //filter the selected element it don't have any valid input element\n return rules.indexOf(selected) !== -1 && this.errorRules.filter(function (data) {\n return data.name === selected;\n }).length === 0;\n } else {\n this.errorRules = [];\n for (var _i = 0, rules_1 = rules; _i < rules_1.length; _i++) {\n var name_1 = rules_1[_i];\n this.validateRules(name_1);\n }\n return this.errorRules.length === 0;\n }\n };\n /**\n * Reset the value of all the fields in form.\n *\n * @returns {void}\n */\n FormValidator.prototype.reset = function () {\n this.element.reset();\n this.clearForm();\n };\n /**\n * Get input element by name.\n *\n * @param {string} name - Input element name attribute value.\n * @returns {HTMLInputElement} - Returns the input element.\n */\n FormValidator.prototype.getInputElement = function (name) {\n this.inputElement = select('[name=\"' + name + '\"]', this.element);\n return this.inputElement;\n };\n /**\n * Destroy the form validator object and error elements.\n *\n * @returns {void}\n */\n FormValidator.prototype.destroy = function () {\n this.reset();\n this.unwireEvents();\n this.rules = {};\n var elements = selectAll('.' + this.errorClass + ', .' + this.validClass, this.element);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element = elements_1[_i];\n detach(element);\n }\n _super.prototype.destroy.call(this);\n this.infoElement = null;\n onIntlChange.off('notifyExternalChange', this.afterLocalization);\n };\n /**\n * @param {FormValidatorModel} newProp - Returns the dynamic property value of the component.\n * @param {FormValidatorModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FormValidator.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'locale':\n this.localeFunc();\n break;\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n FormValidator.prototype.localeFunc = function () {\n for (var _i = 0, _a = Object.keys(this.defaultMessages); _i < _a.length; _i++) {\n var key = _a[_i];\n this.l10n.setLocale(this.locale);\n var value = this.l10n.getConstant(key);\n this.localyMessage[\"\" + key] = value;\n }\n };\n /**\n * @private\n * @returns {string} - Returns the component name.\n */\n FormValidator.prototype.getModuleName = function () {\n return 'formvalidator';\n };\n /**\n * @param {any} args - Specifies the culture name.\n * @returns {void}\n * @private\n */\n FormValidator.prototype.afterLocalization = function (args) {\n this.locale = args.locale;\n this.localeFunc();\n };\n /**\n * Allows you to refresh the form validator base events to the elements inside the form.\n *\n * @returns {void}\n */\n FormValidator.prototype.refresh = function () {\n this.unwireEvents();\n this.inputElements = selectAll(this.selectQuery, this.element);\n this.wireEvents();\n };\n FormValidator.prototype.clearForm = function () {\n this.errorRules = [];\n this.validated = [];\n var elements = selectAll(this.selectQuery, this.element);\n for (var _i = 0, elements_2 = elements; _i < elements_2.length; _i++) {\n var element = elements_2[_i];\n var input = element;\n input.removeAttribute('aria-invalid');\n var inputParent = input.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || input.classList.contains('e-input') && inputParent.classList.contains('e-input-group')) {\n inputParent.classList.remove(this.errorClass);\n } else if (grandParent != null && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.remove(this.errorClass);\n } else {\n input.classList.remove(this.errorClass);\n }\n if (input.name.length > 0) {\n this.getInputElement(input.name);\n this.getErrorElement(input.name);\n this.hideMessage(input.name);\n }\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || input.classList.contains('e-input') && inputParent.classList.contains('e-input-group')) {\n inputParent.classList.remove(this.validClass);\n } else if (grandParent != null && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.remove(this.validClass);\n } else {\n input.classList.remove(this.validClass);\n }\n }\n };\n FormValidator.prototype.createHTML5Rules = function () {\n var defRules = ['required', 'validateHidden', 'regex', 'rangeLength', 'maxLength', 'minLength', 'dateIso', 'digits', 'pattern', 'data-val-required', 'type', 'data-validation', 'min', 'max', 'range', 'equalTo', 'data-val-minlength-min', 'data-val-equalto-other', 'data-val-maxlength-max', 'data-val-range-min', 'data-val-regex-pattern', 'data-val-length-max', 'data-val-creditcard', 'data-val-phone'];\n var acceptedTypes = ['hidden', 'email', 'url', 'date', 'number', 'tel'];\n for (var _i = 0, _a = this.inputElements; _i < _a.length; _i++) {\n var input = _a[_i];\n // Default attribute rules\n var allRule = {};\n for (var _b = 0, defRules_1 = defRules; _b < defRules_1.length; _b++) {\n var rule = defRules_1[_b];\n if (input.getAttribute(rule) !== null) {\n switch (rule) {\n case 'required':\n this.defRule(input, allRule, rule, input.required);\n break;\n case 'data-validation':\n rule = input.getAttribute(rule);\n this.defRule(input, allRule, rule, true);\n break;\n case 'type':\n if (acceptedTypes.indexOf(input.type) !== -1) {\n this.defRule(input, allRule, input.type, true);\n }\n break;\n case 'rangeLength':\n case 'range':\n this.defRule(input, allRule, rule, JSON.parse(input.getAttribute(rule)));\n break;\n case 'equalTo':\n {\n var id = input.getAttribute(rule);\n this.defRule(input, allRule, rule, id);\n }\n break;\n default:\n if (input.getAttribute('data-val') === 'true') {\n this.annotationRule(input, allRule, rule, input.getAttribute(rule));\n } else {\n this.defRule(input, allRule, rule, input.getAttribute(rule));\n }\n }\n }\n }\n //adding pattern type validation\n if (Object.keys(allRule).length !== 0) {\n this.addRules(input.name, allRule);\n }\n }\n };\n FormValidator.prototype.annotationRule = function (input, ruleCon, ruleName, value) {\n var annotationRule = ruleName.split('-');\n var rulesList = ['required', 'creditcard', 'phone', 'maxlength', 'minlength', 'range', 'regex', 'equalto'];\n var ruleFirstName = annotationRule[annotationRule.length - 1];\n var ruleSecondName = annotationRule[annotationRule.length - 2];\n if (rulesList.indexOf(ruleFirstName) !== -1) {\n switch (ruleFirstName) {\n case 'required':\n this.defRule(input, ruleCon, 'required', value);\n break;\n case 'creditcard':\n this.defRule(input, ruleCon, 'creditcard', value);\n break;\n case 'phone':\n this.defRule(input, ruleCon, 'tel', value);\n break;\n }\n } else if (rulesList.indexOf(ruleSecondName) !== -1) {\n switch (ruleSecondName) {\n case 'maxlength':\n this.defRule(input, ruleCon, 'maxLength', value);\n break;\n case 'minlength':\n this.defRule(input, ruleCon, 'minLength', value);\n break;\n case 'range':\n {\n var minvalue = input.getAttribute('data-val-range-min');\n var maxvalue = input.getAttribute('data-val-range-max');\n this.defRule(input, ruleCon, 'range', [minvalue, maxvalue]);\n }\n break;\n case 'equalto':\n {\n var id = input.getAttribute(ruleName).split('.');\n this.defRule(input, ruleCon, 'equalTo', id[id.length - 1]);\n }\n break;\n case 'regex':\n this.defRule(input, ruleCon, 'regex', value);\n break;\n }\n }\n };\n FormValidator.prototype.defRule = function (input, ruleCon, ruleName, value) {\n var message = input.getAttribute('data-' + ruleName + '-message');\n var annotationMessage = input.getAttribute('data-val-' + ruleName);\n var customMessage;\n if (this.rules[input.name] && ruleName !== 'validateHidden' && ruleName !== 'hidden') {\n this.getInputElement(input.name);\n customMessage = this.getErrorMessage(this.rules[input.name][\"\" + ruleName], ruleName);\n }\n if (message) {\n value = [value, message];\n } else if (annotationMessage) {\n value = [value, annotationMessage];\n } else if (customMessage) {\n value = [value, customMessage];\n }\n ruleCon[\"\" + ruleName] = value;\n };\n // Wire events to the form elements\n FormValidator.prototype.wireEvents = function () {\n for (var _i = 0, _a = this.inputElements; _i < _a.length; _i++) {\n var input = _a[_i];\n if (FormValidator_1.isCheckable(input)) {\n EventHandler.add(input, 'click', this.clickHandler, this);\n } else if (input.tagName === 'SELECT') {\n EventHandler.add(input, 'change', this.changeHandler, this);\n } else {\n EventHandler.add(input, 'focusout', this.focusOutHandler, this);\n EventHandler.add(input, 'keyup', this.keyUpHandler, this);\n }\n }\n EventHandler.add(this.element, 'submit', this.submitHandler, this);\n EventHandler.add(this.element, 'reset', this.resetHandler, this);\n };\n // UnWire events to the form elements\n FormValidator.prototype.unwireEvents = function () {\n for (var _i = 0, _a = this.inputElements; _i < _a.length; _i++) {\n var input = _a[_i];\n EventHandler.clearEvents(input);\n }\n EventHandler.remove(this.element, 'submit', this.submitHandler);\n EventHandler.remove(this.element, 'reset', this.resetHandler);\n };\n // Handle input element focusout event\n FormValidator.prototype.focusOutHandler = function (e) {\n this.trigger('focusout', e);\n //FormValidator.triggerCallback(this.focusout, e);\n var element = e.target;\n if (this.rules[element.name]) {\n if (this.rules[element.name][this.required] || element.value.length > 0) {\n this.validate(element.name);\n } else if (this.validated.indexOf(element.name) === -1) {\n this.validated.push(element.name);\n }\n }\n };\n // Handle input element keyup event\n FormValidator.prototype.keyUpHandler = function (e) {\n this.trigger('keyup', e);\n var element = e.target;\n // List of keys need to prevent while validation\n var excludeKeys = [16, 17, 18, 20, 35, 36, 37, 38, 39, 40, 45, 144, 225];\n if (e.which === 9 && (!this.rules[element.name] || this.rules[element.name] && !this.rules[element.name][this.required])) {\n return;\n }\n if (this.validated.indexOf(element.name) !== -1 && this.rules[element.name] && excludeKeys.indexOf(e.which) === -1) {\n this.validate(element.name);\n }\n };\n // Handle input click event\n FormValidator.prototype.clickHandler = function (e) {\n this.trigger('click', e);\n var element = e.target;\n // If element type is not submit allow validation\n if (element.type !== 'submit') {\n this.validate(element.name);\n } else if (element.getAttribute('formnovalidate') !== null) {\n // Prevent form validation, if submit button has formnovalidate attribute\n this.allowSubmit = true;\n }\n };\n // Handle input change event\n FormValidator.prototype.changeHandler = function (e) {\n this.trigger('change', e);\n var element = e.target;\n this.validate(element.name);\n };\n // Handle form submit event\n FormValidator.prototype.submitHandler = function (e) {\n this.trigger('submit', e);\n //FormValidator.triggerCallback(this.submit, e);\n // Prevent form submit if validation failed\n if (!this.allowSubmit && !this.validate()) {\n e.preventDefault();\n } else {\n this.allowSubmit = false;\n }\n };\n // Handle form reset\n FormValidator.prototype.resetHandler = function () {\n this.clearForm();\n };\n // Validate each rule based on input element name\n FormValidator.prototype.validateRules = function (name) {\n if (!this.rules[\"\" + name]) {\n return;\n }\n var rules = Object.keys(this.rules[\"\" + name]);\n var hiddenType = false;\n var validateHiddenType = false;\n var vhPos = rules.indexOf('validateHidden');\n var hPos = rules.indexOf('hidden');\n this.getInputElement(name);\n if (hPos !== -1) {\n hiddenType = true;\n }\n if (vhPos !== -1) {\n validateHiddenType = true;\n }\n if (!hiddenType || hiddenType && validateHiddenType) {\n if (vhPos !== -1) {\n rules.splice(vhPos, 1);\n }\n if (hPos !== -1) {\n rules.splice(hPos - 1, 1);\n }\n this.getErrorElement(name);\n for (var _i = 0, rules_2 = rules; _i < rules_2.length; _i++) {\n var rule = rules_2[_i];\n var errorMessage = this.getErrorMessage(this.rules[\"\" + name][\"\" + rule], rule);\n var errorRule = {\n name: name,\n message: errorMessage\n };\n var eventArgs = {\n inputName: name,\n element: this.inputElement,\n message: errorMessage\n };\n if (!this.isValid(name, rule) && !this.inputElement.classList.contains(this.ignore)) {\n this.removeErrorRules(name);\n this.errorRules.push(errorRule);\n // Set aria attributes to invalid elements\n this.inputElement.setAttribute('aria-invalid', 'true');\n this.inputElement.setAttribute('aria-describedby', this.inputElement.id + '-info');\n var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || this.inputElement.classList.contains('e-input') && inputParent.classList.contains('e-input-group')) {\n inputParent.classList.add(this.errorClass);\n inputParent.classList.remove(this.validClass);\n } else if (grandParent != null && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.add(this.errorClass);\n grandParent.classList.remove(this.validClass);\n } else {\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n }\n if (!this.infoElement) {\n this.createErrorElement(name, errorRule.message, this.inputElement);\n } else {\n this.showMessage(errorRule);\n }\n eventArgs.errorElement = this.infoElement;\n eventArgs.status = 'failure';\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || this.inputElement.classList.contains('e-input') && inputParent.classList.contains('e-input-group')) {\n inputParent.classList.add(this.errorClass);\n inputParent.classList.remove(this.validClass);\n } else if (grandParent != null && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.add(this.errorClass);\n grandParent.classList.remove(this.validClass);\n } else {\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n }\n this.optionalValidationStatus(name, eventArgs);\n this.trigger('validationComplete', eventArgs);\n // Set aria-required to required rule elements\n if (rule === 'required') {\n this.inputElement.setAttribute('aria-required', 'true');\n }\n break;\n } else {\n this.hideMessage(name);\n eventArgs.status = 'success';\n this.trigger('validationComplete', eventArgs);\n }\n }\n } else {\n return;\n }\n };\n // Update the optional validation status\n FormValidator.prototype.optionalValidationStatus = function (name, refer) {\n if (!this.rules[\"\" + name][this.required] && !this.inputElement.value.length && !isNullOrUndefined(this.infoElement)) {\n this.infoElement.innerHTML = this.inputElement.value;\n this.infoElement.setAttribute('aria-invalid', 'false');\n refer.status = '';\n this.hideMessage(name);\n }\n };\n // Check the input element whether it's value satisfy the validation rule or not\n FormValidator.prototype.isValid = function (name, rule) {\n var params = this.rules[\"\" + name][\"\" + rule];\n var param = params instanceof Array && typeof params[1] === 'string' ? params[0] : params;\n var currentRule = this.rules[\"\" + name][\"\" + rule];\n var dateFormat = (rule === 'min' || rule === 'max') && this.rules['' + name].date && typeof this.rules['' + name].date === 'string' ? this.rules['' + name].date : null;\n var args = {\n value: this.inputElement.value,\n param: param,\n element: this.inputElement,\n formElement: this.element,\n format: dateFormat,\n culture: this.locale\n };\n this.trigger('validationBegin', args);\n if (!args.param && rule === 'required') {\n return true;\n }\n if (currentRule && typeof currentRule[0] === 'function') {\n var fn = currentRule[0];\n return fn.call(this, {\n element: this.inputElement,\n value: this.inputElement.value\n });\n } else if (FormValidator_1.isCheckable(this.inputElement)) {\n if (rule !== 'required') {\n return true;\n }\n return selectAll('input[name=\"' + name + '\"]:checked', this.element).length > 0;\n } else {\n return FormValidator_1.checkValidator[\"\" + rule](args);\n }\n };\n // Return default error message or custom error message\n FormValidator.prototype.getErrorMessage = function (ruleValue, rule) {\n var message = this.inputElement.getAttribute('data-' + rule + '-message') ? this.inputElement.getAttribute('data-' + rule + '-message') : ruleValue instanceof Array && typeof ruleValue[1] === 'string' ? ruleValue[1] : Object.keys(this.localyMessage).length !== 0 ? this.localyMessage[\"\" + rule] : this.defaultMessages[\"\" + rule];\n var formats = message.match(/{(\\d)}/g);\n if (!isNullOrUndefined(formats)) {\n for (var i = 0; i < formats.length; i++) {\n var value = ruleValue instanceof Array ? ruleValue[parseInt(i.toString(), 10)] : ruleValue;\n message = message.replace(formats[parseInt(i.toString(), 10)], value);\n }\n }\n return message;\n };\n // Create error element based on name and error message\n FormValidator.prototype.createErrorElement = function (name, message, input) {\n var errorElement = createElement(this.errorElement, {\n className: this.errorClass,\n innerHTML: message,\n attrs: {\n for: name\n }\n });\n // Create message design if errorOption is message\n if (this.errorOption === ErrorOption.Message) {\n errorElement.classList.remove(this.errorClass);\n errorElement.classList.add('e-message');\n errorElement = createElement(this.errorContainer, {\n className: this.errorClass,\n innerHTML: errorElement.outerHTML\n });\n }\n errorElement.id = this.inputElement.name + '-info';\n // Append error message into MVC error message element\n if (this.element.querySelector('[data-valmsg-for=\"' + input.id + '\"]')) {\n this.element.querySelector('[data-valmsg-for=\"' + input.id + '\"]').appendChild(errorElement);\n } else if (input.hasAttribute('data-msg-containerid') === true) {\n // Append error message into custom div element\n var containerId = input.getAttribute('data-msg-containerid');\n var divElement = select('#' + containerId, this.element);\n divElement.appendChild(errorElement);\n } else if (this.customPlacement != null) {\n // Call custom placement function if customPlacement is not null\n this.customPlacement.call(this, this.inputElement, errorElement);\n } else {\n var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper')) {\n grandParent.insertBefore(errorElement, inputParent.nextSibling);\n } else if (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper')) {\n grandParent.parentElement.insertBefore(errorElement, grandParent.nextSibling);\n } else {\n inputParent.insertBefore(errorElement, this.inputElement.nextSibling);\n }\n }\n errorElement.style.display = 'block';\n this.getErrorElement(name);\n this.validated.push(name);\n this.checkRequired(name);\n };\n // Get error element by name\n FormValidator.prototype.getErrorElement = function (name) {\n this.infoElement = select(this.errorElement + '.' + this.errorClass, this.inputElement.parentElement);\n if (!this.infoElement) {\n this.infoElement = select(this.errorElement + '.' + this.errorClass + '[for=\"' + name + '\"]', this.element);\n }\n return this.infoElement;\n };\n // Remove existing rule from errorRules object\n FormValidator.prototype.removeErrorRules = function (name) {\n for (var i = 0; i < this.errorRules.length; i++) {\n var rule = this.errorRules[parseInt(i.toString(), 10)];\n if (rule.name === name) {\n this.errorRules.splice(i, 1);\n }\n }\n };\n // Show error message to the input element\n FormValidator.prototype.showMessage = function (errorRule) {\n this.infoElement.style.display = 'block';\n this.infoElement.innerHTML = errorRule.message;\n this.checkRequired(errorRule.name);\n };\n // Hide error message based on input name\n FormValidator.prototype.hideMessage = function (name) {\n if (this.infoElement) {\n this.infoElement.style.display = 'none';\n this.removeErrorRules(name);\n var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || this.inputElement.classList.contains('e-input') && inputParent.classList.contains('e-input-group')) {\n inputParent.classList.add(this.validClass);\n inputParent.classList.remove(this.errorClass);\n } else if (grandParent != null && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.add(this.validClass);\n grandParent.classList.remove(this.errorClass);\n } else {\n this.inputElement.classList.add(this.validClass);\n this.inputElement.classList.remove(this.errorClass);\n }\n this.inputElement.setAttribute('aria-invalid', 'false');\n }\n };\n // Check whether the input element have required rule and its value is not empty\n FormValidator.prototype.checkRequired = function (name) {\n if (!this.rules[\"\" + name][this.required] && !this.inputElement.value.length && !isNullOrUndefined(this.infoElement)) {\n this.infoElement.innerHTML = this.inputElement.value;\n this.infoElement.setAttribute('aria-invalid', 'false');\n this.hideMessage(name);\n }\n };\n // Return boolean result if the input have checkable or submit types\n FormValidator.isCheckable = function (input) {\n var inputType = input.getAttribute('type');\n return inputType && (inputType === 'checkbox' || inputType === 'radio' || inputType === 'submit');\n };\n var FormValidator_1;\n // List of function to validate the rules\n FormValidator.checkValidator = {\n required: function (option) {\n return !isNaN(Date.parse(option.value)) ? !isNaN(new Date(option.value).getTime()) : option.value.toString().length > 0;\n },\n email: function (option) {\n return regex.EMAIL.test(option.value);\n },\n url: function (option) {\n return regex.URL.test(option.value);\n },\n dateIso: function (option) {\n return regex.DATE_ISO.test(option.value);\n },\n tel: function (option) {\n return regex.PHONE.test(option.value);\n },\n creditcard: function (option) {\n return regex.CREDITCARD.test(option.value);\n },\n number: function (option) {\n return !isNaN(Number(option.value)) && String(option.value).indexOf(' ') === -1;\n },\n digits: function (option) {\n return regex.DIGITS.test(option.value);\n },\n maxLength: function (option) {\n return option.value.length <= Number(option.param);\n },\n minLength: function (option) {\n return option.value.length >= Number(option.param);\n },\n rangeLength: function (option) {\n var param = option.param;\n return option.value.length >= param[0] && option.value.length <= param[1];\n },\n range: function (option) {\n var param = option.param;\n return !isNaN(Number(option.value)) && Number(option.value) >= param[0] && Number(option.value) <= param[1];\n },\n date: function (option) {\n if (!isNullOrUndefined(option.param) && typeof option.param === 'string' && option.param !== '') {\n var globalize = option.culture && option.culture !== '' ? new Internationalization(option.culture) : new Internationalization();\n var dateOptions = {\n format: option.param.toString(),\n type: 'dateTime',\n skeleton: 'yMd'\n };\n var dateValue = globalize.parseDate(option.value, dateOptions);\n return !isNullOrUndefined(dateValue) && dateValue instanceof Date && !isNaN(+dateValue);\n } else {\n return !isNaN(new Date(option.value).getTime());\n }\n },\n max: function (option) {\n if (!isNaN(Number(option.value))) {\n // Maximum rule validation for number\n return +option.value <= +option.param;\n }\n // Maximum rule validation for date\n if (option.format && option.format !== '') {\n var globalize = option.culture && option.culture !== '' ? new Internationalization(option.culture) : new Internationalization();\n var dateOptions = {\n format: option.format.toString(),\n type: 'dateTime',\n skeleton: 'yMd'\n };\n var dateValue = globalize.parseDate(option.value, dateOptions);\n var maxValue = typeof option.param === 'string' ? globalize.parseDate(JSON.parse(JSON.stringify(option.param)), dateOptions) : option.param;\n return new Date(dateValue).getTime() <= new Date(maxValue).getTime();\n } else {\n return new Date(option.value).getTime() <= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n }\n },\n min: function (option) {\n if (!isNaN(Number(option.value))) {\n // Minimum rule validation for number\n return +option.value >= +option.param;\n } else if (option.value.indexOf(',') !== -1) {\n var uNum = option.value.replace(/,/g, '');\n return parseFloat(uNum) >= Number(option.param); // Convert option.param to a number\n } else {\n // Minimum rule validation for date\n if (option.format && option.format !== '') {\n var globalize = option.culture && option.culture !== '' ? new Internationalization(option.culture) : new Internationalization();\n var dateOptions = {\n format: option.format.toString(),\n type: 'dateTime',\n skeleton: 'yMd'\n };\n var dateValue = globalize.parseDate(option.value, dateOptions);\n var minValue = typeof option.param === 'string' ? globalize.parseDate(JSON.parse(JSON.stringify(option.param)), dateOptions) : option.param;\n return new Date(dateValue).getTime() >= new Date(minValue).getTime();\n } else {\n return new Date(option.value).getTime() >= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n }\n }\n },\n regex: function (option) {\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n return new RegExp(option.param).test(option.value);\n },\n equalTo: function (option) {\n var compareTo = option.formElement.querySelector('#' + option.param);\n option.param = compareTo.value;\n return option.param === option.value;\n }\n };\n __decorate([Property('')], FormValidator.prototype, \"locale\", void 0);\n __decorate([Property('e-hidden')], FormValidator.prototype, \"ignore\", void 0);\n __decorate([Property()], FormValidator.prototype, \"rules\", void 0);\n __decorate([Property('e-error')], FormValidator.prototype, \"errorClass\", void 0);\n __decorate([Property('e-valid')], FormValidator.prototype, \"validClass\", void 0);\n __decorate([Property('label')], FormValidator.prototype, \"errorElement\", void 0);\n __decorate([Property('div')], FormValidator.prototype, \"errorContainer\", void 0);\n __decorate([Property(ErrorOption.Label)], FormValidator.prototype, \"errorOption\", void 0);\n __decorate([Event()], FormValidator.prototype, \"focusout\", void 0);\n __decorate([Event()], FormValidator.prototype, \"keyup\", void 0);\n __decorate([Event()], FormValidator.prototype, \"click\", void 0);\n __decorate([Event()], FormValidator.prototype, \"change\", void 0);\n __decorate([Event()], FormValidator.prototype, \"submit\", void 0);\n __decorate([Event()], FormValidator.prototype, \"validationBegin\", void 0);\n __decorate([Event()], FormValidator.prototype, \"validationComplete\", void 0);\n __decorate([Event()], FormValidator.prototype, \"customPlacement\", void 0);\n FormValidator = FormValidator_1 = __decorate([NotifyPropertyChanges], FormValidator);\n return FormValidator;\n}(Base);\nexport { FormValidator };","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};\nimport { Component, Event, Property, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, getValue, setValue, addClass, detach } from '@syncfusion/ej2-base';\nimport { removeClass, Browser, closest } from '@syncfusion/ej2-base';\nimport { Input } from '../../input/input';\nimport { regularExpressions, createMask, applyMask, wireEvents, unwireEvents, unstrippedValue, strippedValue } from '../base/index';\nimport { setMaskValue, setElementValue, bindClearEvent } from '../base/index';\nvar ROOT = 'e-control-wrapper e-mask';\nvar INPUT = 'e-input';\nvar COMPONENT = 'e-maskedtextbox';\nvar CONTROL = 'e-control';\nvar MASKINPUT_FOCUS = 'e-input-focus';\nvar wrapperAttr = ['title', 'style', 'class'];\n/**\n * The MaskedTextBox allows the user to enter the valid input only based on the provided mask.\n * ```html\n * <input id=\"mask\" type=\"text\" />\n * ```\n * ```typescript\n * <script>\n * var maskObj = new MaskedTextBox({ mask: \"(999) 9999-999\" });\n * maskObj.appendTo('#mask');\n * </script>\n * ```\n */\nvar MaskedTextBox = /** @class */function (_super) {\n __extends(MaskedTextBox, _super);\n /**\n *\n * @param {MaskedTextBoxModel} options - Specifies the MaskedTextBox model.\n * @param {string | HTMLElement | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function MaskedTextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.initInputValue = '';\n _this.preventChange = false;\n _this.isClicked = false;\n _this.maskOptions = options;\n return _this;\n }\n /**\n * Gets the component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n MaskedTextBox.prototype.getModuleName = function () {\n return 'maskedtextbox';\n };\n /**\n * Initializes the event handler\n *\n * @returns {void}\n * @private\n */\n MaskedTextBox.prototype.preRender = function () {\n this.promptMask = '';\n this.hiddenMask = '';\n this.escapeMaskValue = '';\n this.regExpCollec = regularExpressions;\n this.customRegExpCollec = [];\n this.maskedRegExp = [];\n this.undoCollec = [];\n this.redoCollec = [];\n this.changeEventArgs = {};\n this.focusEventArgs = {};\n this.blurEventArgs = {};\n this.maskKeyPress = false;\n this.isFocus = false;\n this.isInitial = false;\n this.isIosInvalid = false;\n var ejInstance = getValue('ej2_instances', this.element);\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [CONTROL, COMPONENT, 'e-lib']);\n this.angularTagName = null;\n this.formElement = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-MASKEDTEXTBOX') {\n this.angularTagName = this.element.tagName;\n var input = this.createElement('input');\n for (var i = 0; i < this.element.attributes.length; i++) {\n input.setAttribute(this.element.attributes[i].nodeName, this.element.attributes[i].nodeValue);\n input.innerHTML = this.element.innerHTML;\n }\n if (this.element.hasAttribute('id')) {\n this.element.removeAttribute('id');\n }\n if (this.element.hasAttribute('name')) {\n this.element.removeAttribute('name');\n }\n this.element.classList.remove('e-control', 'e-maskedtextbox');\n this.element.classList.add('e-mask-container');\n this.element.appendChild(input);\n this.element = input;\n setValue('ej2_instances', ejInstance, this.element);\n }\n this.updateHTMLAttrToElement();\n this.checkHtmlAttributes(false);\n if (this.formElement) {\n this.initInputValue = this.value;\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string}\n */\n MaskedTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Initializes the component rendering.\n *\n * @returns {void}\n * @private\n */\n MaskedTextBox.prototype.render = function () {\n if (this.element.tagName.toLowerCase() === 'input') {\n if (this.floatLabelType === 'Never') {\n addClass([this.element], INPUT);\n }\n this.createWrapper();\n this.updateHTMLAttrToWrapper();\n if (this.element.name === '') {\n this.element.setAttribute('name', this.element.id);\n }\n this.isInitial = true;\n this.resetMaskedTextBox();\n this.isInitial = false;\n this.setMaskPlaceholder(true, false);\n this.setWidth(this.width);\n this.preEleVal = this.element.value;\n if (!Browser.isDevice && (Browser.info.version === '11.0' || Browser.info.name === 'edge')) {\n this.element.blur();\n }\n if (Browser.isDevice && Browser.isIos) {\n this.element.blur();\n }\n if (this.element.getAttribute('value') || this.value) {\n this.element.setAttribute('value', this.element.value);\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n if (!this.element.hasAttribute('aria-labelledby') && !this.element.hasAttribute('placeholder') && !this.element.hasAttribute('aria-label')) {\n this.element.setAttribute('aria-label', 'maskedtextbox');\n }\n this.renderComplete();\n }\n };\n MaskedTextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttr.indexOf(key) < 0) {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n MaskedTextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getValidClassList(newClass), [this.inputObj.container], this.getValidClassList(oldClass));\n };\n MaskedTextBox.prototype.getValidClassList = function (maskClassName) {\n var result = maskClassName;\n if (!isNullOrUndefined(maskClassName) && maskClassName !== '') {\n result = maskClassName.replace(/\\s+/g, ' ').trim();\n }\n return result;\n };\n MaskedTextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ').trim();\n if (updatedClassValues !== '') {\n addClass([this.inputObj.container], updatedClassValues.split(' '));\n }\n } else if (key === 'style') {\n var maskStyle = this.inputObj.container.getAttribute(key);\n maskStyle = !isNullOrUndefined(maskStyle) ? maskStyle + this.htmlAttributes[\"\" + key] : this.htmlAttributes[\"\" + key];\n this.inputObj.container.setAttribute(key, maskStyle);\n } else {\n this.inputObj.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n MaskedTextBox.prototype.resetMaskedTextBox = function () {\n this.promptMask = '';\n this.hiddenMask = '';\n this.escapeMaskValue = '';\n this.customRegExpCollec = [];\n this.undoCollec = [];\n this.redoCollec = [];\n if (this.promptChar && this.promptChar.length > 1) {\n this.promptChar = this.promptChar[0];\n }\n createMask.call(this);\n applyMask.call(this);\n if (this.mask === null || this.mask === '' && this.value !== undefined) {\n setElementValue.call(this, this.value);\n }\n var val = strippedValue.call(this, this.element);\n this.prevValue = val;\n this.value = val;\n if (!this.isInitial) {\n unwireEvents.call(this);\n }\n wireEvents.call(this);\n };\n MaskedTextBox.prototype.setMaskPlaceholder = function (setVal, dynamicPlaceholder) {\n if (dynamicPlaceholder || this.placeholder) {\n Input.setPlaceholder(this.placeholder, this.element);\n if (this.element.value === this.promptMask && setVal && this.floatLabelType !== 'Always' || this.element.value === this.promptMask && this.floatLabelType === 'Never') {\n setElementValue.call(this, '');\n }\n }\n };\n MaskedTextBox.prototype.setWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputObj.container.style.width = formatUnit(width);\n this.element.style.width = formatUnit(width);\n } else if (typeof width === 'string') {\n var elementWidth = width.match(/px|%|em/) ? width : formatUnit(width);\n this.inputObj.container.style.width = elementWidth;\n this.element.style.width = elementWidth;\n }\n }\n };\n MaskedTextBox.prototype.checkHtmlAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) : ['placeholder', 'disabled', 'value', 'readonly'];\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var key = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(key))) {\n switch (key) {\n case 'placeholder':\n if (isNullOrUndefined(this.maskOptions) || this.maskOptions['placeholder'] === undefined || isDynamic) {\n this.setProperties({\n placeholder: this.element.placeholder\n }, !isDynamic);\n }\n break;\n case 'disabled':\n if (isNullOrUndefined(this.maskOptions) || this.maskOptions['enabled'] === undefined || isDynamic) {\n var isEnabled = this.element.getAttribute(key) === 'disabled' || this.element.getAttribute(key) === '' || this.element.getAttribute(key) === 'true' ? false : true;\n this.setProperties({\n enabled: isEnabled\n }, !isDynamic);\n }\n break;\n case 'value':\n if (isNullOrUndefined(this.maskOptions) || this.maskOptions['value'] === undefined || isDynamic) {\n this.setProperties({\n value: this.element.value\n }, !isDynamic);\n }\n break;\n case 'readonly':\n if (isNullOrUndefined(this.maskOptions) || this.maskOptions['readonly'] === undefined || isDynamic) {\n var isReadonly = this.element.getAttribute(key) === 'readonly' || this.element.getAttribute(key) === '' || this.element.getAttribute(key) === 'true' ? true : false;\n this.setProperties({\n readonly: isReadonly\n }, !isDynamic);\n }\n break;\n }\n }\n }\n };\n MaskedTextBox.prototype.createWrapper = function () {\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = this.getValidClassList(this.cssClass);\n }\n this.inputObj = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n enableRtl: this.enableRtl,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n readonly: this.readonly,\n placeholder: this.placeholder,\n showClearButton: this.showClearButton\n }\n }, this.createElement);\n this.inputObj.container.setAttribute('class', ROOT + ' ' + this.inputObj.container.getAttribute('class'));\n };\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {MaskedTextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {MaskedTextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @hidden\n */\n MaskedTextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n setMaskValue.call(this, this.value);\n if (this.placeholder && !this.isFocus) {\n this.setMaskPlaceholder(false, false);\n }\n if (this.value === '' && oldProp.value != null) {\n this.element.selectionStart = 0;\n this.element.selectionEnd = 0;\n }\n break;\n case 'placeholder':\n this.setMaskPlaceholder(true, true);\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.element, this.inputObj.container);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element, this.floatLabelType, this.inputObj.container);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.inputObj.container]);\n break;\n case 'customCharacters':\n this.customCharacters = newProp.customCharacters;\n this.resetMaskedTextBox();\n break;\n case 'showClearButton':\n Input.setClearButton(newProp.showClearButton, this.element, this.inputObj, undefined, this.createElement);\n bindClearEvent.call(this);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputObj);\n Input.addFloating(this.element, this.floatLabelType, this.placeholder, this.createElement);\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.checkHtmlAttributes(true);\n break;\n case 'mask':\n {\n var strippedValue_1 = this.value;\n this.mask = newProp.mask;\n this.maskedRegExp = [];\n this.updateValue(strippedValue_1);\n }\n break;\n case 'promptChar':\n {\n if (newProp.promptChar.length > 1) {\n newProp.promptChar = newProp.promptChar[0];\n }\n if (newProp.promptChar) {\n this.promptChar = newProp.promptChar;\n } else {\n this.promptChar = '_';\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n var value = this.element.value.replace(new RegExp('[' + oldProp.promptChar + ']', 'g'), this.promptChar);\n if (this.promptMask === this.element.value) {\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n value = this.promptMask.replace(new RegExp('[' + oldProp.promptChar + ']', 'g'), this.promptChar);\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n this.promptMask = this.promptMask.replace(new RegExp('[' + oldProp.promptChar + ']', 'g'), this.promptChar);\n this.undoCollec = this.redoCollec = [];\n setElementValue.call(this, value);\n break;\n }\n }\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n };\n MaskedTextBox.prototype.updateValue = function (strippedVal) {\n this.resetMaskedTextBox();\n setMaskValue.call(this, strippedVal);\n };\n /**\n * Gets the value of the MaskedTextBox with the masked format.\n * By using `value` property, you can get the raw value of maskedtextbox without literals and prompt characters.\n *\n * @returns {string} Returns the value with the masked format.\n */\n MaskedTextBox.prototype.getMaskedValue = function () {\n return unstrippedValue.call(this, this.element);\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n MaskedTextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.isFocus = true;\n this.element.focus();\n addClass([this.inputObj.container], [MASKINPUT_FOCUS]);\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n MaskedTextBox.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.isFocus = false;\n this.element.blur();\n removeClass([this.inputObj.container], [MASKINPUT_FOCUS]);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n MaskedTextBox.prototype.destroy = function () {\n unwireEvents.call(this);\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n var attrArray = ['aria-labelledby', 'role', 'autocomplete', 'aria-readonly', 'aria-disabled', 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-invalid'];\n for (var i = 0; i < attrArray.length; i++) {\n this.element.removeAttribute(attrArray[i]);\n }\n this.element.classList.remove('e-input');\n if (this.inputObj) {\n this.inputObj.container.insertAdjacentElement('afterend', this.element);\n detach(this.inputObj.container);\n }\n this.blurEventArgs = null;\n Input.destroy({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n this.changeEventArgs = null;\n this.inputObj = null;\n _super.prototype.destroy.call(this);\n };\n __decorate([Property(null)], MaskedTextBox.prototype, \"cssClass\", void 0);\n __decorate([Property(null)], MaskedTextBox.prototype, \"width\", void 0);\n __decorate([Property(null)], MaskedTextBox.prototype, \"placeholder\", void 0);\n __decorate([Property('Never')], MaskedTextBox.prototype, \"floatLabelType\", void 0);\n __decorate([Property({})], MaskedTextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([Property(true)], MaskedTextBox.prototype, \"enabled\", void 0);\n __decorate([Property(false)], MaskedTextBox.prototype, \"readonly\", void 0);\n __decorate([Property(false)], MaskedTextBox.prototype, \"showClearButton\", void 0);\n __decorate([Property(false)], MaskedTextBox.prototype, \"enablePersistence\", void 0);\n __decorate([Property(null)], MaskedTextBox.prototype, \"mask\", void 0);\n __decorate([Property('_')], MaskedTextBox.prototype, \"promptChar\", void 0);\n __decorate([Property(null)], MaskedTextBox.prototype, \"value\", void 0);\n __decorate([Property(null)], MaskedTextBox.prototype, \"customCharacters\", void 0);\n __decorate([Event()], MaskedTextBox.prototype, \"created\", void 0);\n __decorate([Event()], MaskedTextBox.prototype, \"destroyed\", void 0);\n __decorate([Event()], MaskedTextBox.prototype, \"change\", void 0);\n __decorate([Event()], MaskedTextBox.prototype, \"focus\", void 0);\n __decorate([Event()], MaskedTextBox.prototype, \"blur\", void 0);\n MaskedTextBox = __decorate([NotifyPropertyChanges], MaskedTextBox);\n return MaskedTextBox;\n}(Component);\nexport { MaskedTextBox };","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};\nimport { Component, EventHandler, Property, Event, Complex, Collection } from '@syncfusion/ej2-base';\nimport { L10n, Internationalization } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, setStyleAttribute, detach, closest } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, Browser, SanitizeHtmlHelper, initializeCSPTemplate } from '@syncfusion/ej2-base';\nimport { Tooltip, getZindexPartial } from '@syncfusion/ej2-popups';\n/**\n * Configures the ticks data of the Slider.\n */\nvar TicksData = /** @class */function (_super) {\n __extends(TicksData, _super);\n function TicksData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('None')], TicksData.prototype, \"placement\", void 0);\n __decorate([Property(10)], TicksData.prototype, \"largeStep\", void 0);\n __decorate([Property(1)], TicksData.prototype, \"smallStep\", void 0);\n __decorate([Property(false)], TicksData.prototype, \"showSmallTicks\", void 0);\n __decorate([Property(null)], TicksData.prototype, \"format\", void 0);\n return TicksData;\n}(ChildProperty);\nexport { TicksData };\n/**\n * It illustrates the color track data in slider.\n * {% codeBlock src='slider/colorrange/index.md' %}{% endcodeBlock %}\n */\nvar ColorRangeData = /** @class */function (_super) {\n __extends(ColorRangeData, _super);\n function ColorRangeData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property(null)], ColorRangeData.prototype, \"color\", void 0);\n __decorate([Property(null)], ColorRangeData.prototype, \"start\", void 0);\n __decorate([Property(null)], ColorRangeData.prototype, \"end\", void 0);\n return ColorRangeData;\n}(ChildProperty);\nexport { ColorRangeData };\n/**\n * It illustrates the limit data in slider.\n * {% codeBlock src='slider/limits/index.md' %}{% endcodeBlock %}\n */\nvar LimitData = /** @class */function (_super) {\n __extends(LimitData, _super);\n function LimitData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property(false)], LimitData.prototype, \"enabled\", void 0);\n __decorate([Property(null)], LimitData.prototype, \"minStart\", void 0);\n __decorate([Property(null)], LimitData.prototype, \"minEnd\", void 0);\n __decorate([Property(null)], LimitData.prototype, \"maxStart\", void 0);\n __decorate([Property(null)], LimitData.prototype, \"maxEnd\", void 0);\n __decorate([Property(false)], LimitData.prototype, \"startHandleFixed\", void 0);\n __decorate([Property(false)], LimitData.prototype, \"endHandleFixed\", void 0);\n return LimitData;\n}(ChildProperty);\nexport { LimitData };\n/**\n * It illustrates the tooltip data in slider.\n */\nvar TooltipData = /** @class */function (_super) {\n __extends(TooltipData, _super);\n function TooltipData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('')], TooltipData.prototype, \"cssClass\", void 0);\n __decorate([Property('Before')], TooltipData.prototype, \"placement\", void 0);\n __decorate([Property('Focus')], TooltipData.prototype, \"showOn\", void 0);\n __decorate([Property(false)], TooltipData.prototype, \"isVisible\", void 0);\n __decorate([Property(null)], TooltipData.prototype, \"format\", void 0);\n return TooltipData;\n}(ChildProperty);\nexport { TooltipData };\nvar bootstrapTooltipOffset = 6;\nvar bootstrap4TooltipOffset = 3;\nvar tolerance = 1e-10;\nvar classNames = {\n root: 'e-slider',\n rtl: 'e-rtl',\n sliderHiddenInput: 'e-slider-input',\n controlWrapper: 'e-control-wrapper',\n sliderHandle: 'e-handle',\n rangeBar: 'e-range',\n sliderButton: 'e-slider-button',\n firstButton: 'e-first-button',\n secondButton: 'e-second-button',\n scale: 'e-scale',\n tick: 'e-tick',\n large: 'e-large',\n tickValue: 'e-tick-value',\n sliderTooltip: 'e-slider-tooltip',\n sliderHover: 'e-slider-hover',\n sliderFirstHandle: 'e-handle-first',\n sliderSecondHandle: 'e-handle-second',\n sliderDisabled: 'e-disabled',\n sliderContainer: 'e-slider-container',\n horizontalTooltipBefore: 'e-slider-horizontal-before',\n horizontalTooltipAfter: 'e-slider-horizontal-after',\n verticalTooltipBefore: 'e-slider-vertical-before',\n verticalTooltipAfter: 'e-slider-vertical-after',\n materialTooltip: 'e-material-tooltip',\n materialTooltipOpen: 'e-material-tooltip-open',\n materialTooltipActive: 'e-tooltip-active',\n materialSlider: 'e-material-slider',\n sliderTrack: 'e-slider-track',\n sliderHorizantalColor: 'e-slider-horizantal-color',\n sliderVerticalColor: 'e-slider-vertical-color',\n sliderHandleFocused: 'e-handle-focused',\n verticalSlider: 'e-vertical',\n horizontalSlider: 'e-horizontal',\n sliderHandleStart: 'e-handle-start',\n sliderTooltipStart: 'e-material-tooltip-start',\n sliderTabHandle: 'e-tab-handle',\n sliderButtonIcon: 'e-button-icon',\n sliderSmallSize: 'e-small-size',\n sliderTickPosition: 'e-tick-pos',\n sliderFirstTick: 'e-first-tick',\n sliderLastTick: 'e-last-tick',\n sliderButtonClass: 'e-slider-btn',\n sliderTooltipWrapper: 'e-tooltip-wrap',\n sliderTabTrack: 'e-tab-track',\n sliderTabRange: 'e-tab-range',\n sliderActiveHandle: 'e-handle-active',\n sliderMaterialHandle: 'e-material-handle',\n sliderMaterialRange: 'e-material-range',\n sliderMaterialDefault: 'e-material-default',\n materialTooltipShow: 'e-material-tooltip-show',\n materialTooltipHide: 'e-material-tooltip-hide',\n readonly: 'e-read-only',\n limits: 'e-limits',\n limitBarDefault: 'e-limit-bar',\n limitBarFirst: 'e-limit-first',\n limitBarSecond: 'e-limit-second',\n dragHorizontal: 'e-drag-horizontal',\n dragVertical: 'e-drag-vertical'\n};\n/**\n * The Slider component allows the user to select a value or range\n * of values in-between a min and max range, by dragging the handle over the slider bar.\n * ```html\n * <div id='slider'></div>\n * ```\n * ```typescript\n * <script>\n * var sliderObj = new Slider({ value: 10 });\n * sliderObj.appendTo('#slider');\n * </script>\n * ```\n */\nvar Slider = /** @class */function (_super) {\n __extends(Slider, _super);\n function Slider(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.horDir = 'left';\n _this.verDir = 'bottom';\n _this.transition = {\n handle: 'left .4s cubic-bezier(.25, .8, .25, 1), right .4s cubic-bezier(.25, .8, .25, 1), ' + 'top .4s cubic-bezier(.25, .8, .25, 1) , bottom .4s cubic-bezier(.25, .8, .25, 1)',\n rangeBar: 'all .4s cubic-bezier(.25, .8, .25, 1)'\n };\n _this.transitionOnMaterialTooltip = {\n handle: 'left 1ms ease-out, right 1ms ease-out, bottom 1ms ease-out, top 1ms ease-out',\n rangeBar: 'left 1ms ease-out, right 1ms ease-out, bottom 1ms ease-out, width 1ms ease-out, height 1ms ease-out'\n };\n _this.scaleTransform = 'transform .4s cubic-bezier(.25, .8, .25, 1)';\n _this.customAriaText = null;\n _this.drag = true;\n _this.isDragComplete = false;\n _this.initialTooltip = true;\n return _this;\n }\n Slider.prototype.preRender = function () {\n var localeText = {\n incrementTitle: 'Increase',\n decrementTitle: 'Decrease'\n };\n this.l10n = new L10n('slider', localeText, this.locale);\n this.isElementFocused = false;\n this.tickElementCollection = [];\n this.tooltipFormatInfo = {};\n this.ticksFormatInfo = {};\n this.initCultureInfo();\n this.initCultureFunc();\n this.formChecker();\n };\n Slider.prototype.formChecker = function () {\n var formElement = closest(this.element, 'form');\n if (formElement) {\n this.isForm = true;\n // this condition needs to be checked, if the slider is going to be refreshed by `refresh()`\n // then we need to revert the slider `value` back to `formResetValue` to preserve the initial value\n if (!isNullOrUndefined(this.formResetValue)) {\n this.setProperties({\n 'value': this.formResetValue\n }, true);\n }\n this.formResetValue = this.value;\n if (this.type === 'Range' && (isNullOrUndefined(this.formResetValue) || typeof this.formResetValue !== 'object')) {\n this.formResetValue = [parseFloat(formatUnit(this.min)), parseFloat(formatUnit(this.max))];\n } else if (isNullOrUndefined(this.formResetValue)) {\n this.formResetValue = parseFloat(formatUnit(this.min));\n }\n this.formElement = formElement;\n } else {\n this.isForm = false;\n }\n };\n Slider.prototype.initCultureFunc = function () {\n this.internationalization = new Internationalization(this.locale);\n };\n Slider.prototype.initCultureInfo = function () {\n this.tooltipFormatInfo.format = !isNullOrUndefined(this.tooltip.format) ? this.tooltip.format : null;\n this.ticksFormatInfo.format = !isNullOrUndefined(this.ticks.format) ? this.ticks.format : null;\n };\n Slider.prototype.formatString = function (value, formatInfo) {\n var formatValue = null;\n var formatString = null;\n if (value || value === 0) {\n formatValue = this.formatNumber(value);\n var numberOfDecimals = this.numberOfDecimals(value);\n formatString = this.internationalization.getNumberFormat(formatInfo)(this.makeRoundNumber(value, numberOfDecimals));\n }\n return {\n elementVal: formatValue,\n formatString: formatString\n };\n };\n Slider.prototype.formatNumber = function (value) {\n var numberOfDecimals = this.numberOfDecimals(value);\n return this.internationalization.getNumberFormat({\n maximumFractionDigits: numberOfDecimals,\n minimumFractionDigits: numberOfDecimals,\n useGrouping: false\n })(value);\n };\n Slider.prototype.numberOfDecimals = function (value) {\n var decimalPart = value.toString().split('.')[1];\n var numberOfDecimals = !decimalPart || !decimalPart.length ? 0 : decimalPart.length;\n return numberOfDecimals;\n };\n Slider.prototype.makeRoundNumber = function (value, precision) {\n var decimals = precision || 0;\n return Number(value.toFixed(decimals));\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Slider.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.initRender();\n this.wireEvents();\n this.setZindex();\n this.renderComplete();\n if (this.element.tagName === 'EJS-SLIDER') {\n if (this.getTheme(this.sliderContainer) === 'none') {\n setTimeout(function () {\n _this.refresh();\n }, 0);\n }\n }\n };\n Slider.prototype.initialize = function () {\n addClass([this.element], classNames.root);\n this.setCSSClass();\n };\n Slider.prototype.setElementWidth = function (width) {\n if (!isNullOrUndefined(width) && !isNullOrUndefined(this.sliderContainer)) {\n if (typeof width === 'number') {\n this.sliderContainer.style.width = formatUnit(width);\n } else if (typeof width === 'string') {\n this.sliderContainer.style.width = width.match(/px|%|em/) ? width : formatUnit(width);\n }\n }\n };\n Slider.prototype.setCSSClass = function (oldCSSClass) {\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Slider.prototype.setEnabled = function () {\n if (!this.enabled) {\n addClass([this.sliderContainer], [classNames.sliderDisabled]);\n if (this.tooltip.isVisible && this.tooltipElement && this.tooltip.showOn === 'Always') {\n this.tooltipElement.classList.add(classNames.sliderDisabled);\n }\n this.unwireEvents();\n } else {\n removeClass([this.sliderContainer], [classNames.sliderDisabled]);\n if (this.tooltip.isVisible && this.tooltipElement && this.tooltip.showOn === 'Always') {\n this.tooltipElement.classList.remove(classNames.sliderDisabled);\n }\n this.wireEvents();\n }\n };\n Slider.prototype.getTheme = function (container) {\n var theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n };\n /**\n * Initialize the rendering\n *\n * @returns {void}\n * @private\n */\n Slider.prototype.initRender = function () {\n this.sliderContainer = this.createElement('div', {\n className: classNames.sliderContainer + ' ' + classNames.controlWrapper\n });\n this.element.parentNode.insertBefore(this.sliderContainer, this.element);\n this.sliderContainer.appendChild(this.element);\n this.sliderTrack = this.createElement('div', {\n className: classNames.sliderTrack\n });\n this.element.appendChild(this.sliderTrack);\n this.setElementWidth(this.width);\n this.element.tabIndex = -1;\n this.getThemeInitialization();\n this.setHandler();\n this.createRangeBar();\n if (this.limits.enabled) {\n this.createLimitBar();\n }\n this.setOrientClass();\n this.hiddenInput = this.createElement('input', {\n attrs: {\n type: 'hidden',\n value: isNullOrUndefined(this.value) ? isNullOrUndefined(this.min) ? '0' : this.min.toString() : this.value.toString(),\n name: this.element.getAttribute('name') || this.element.getAttribute('id') || '_' + (Math.random() * 1000).toFixed(0) + 'slider',\n class: classNames.sliderHiddenInput\n }\n });\n this.hiddenInput.tabIndex = -1;\n this.sliderContainer.appendChild(this.hiddenInput);\n if (this.showButtons) {\n this.setButtons();\n }\n this.setEnableRTL();\n if (this.type === 'Range') {\n this.rangeValueUpdate();\n } else {\n this.value = isNullOrUndefined(this.value) ? isNullOrUndefined(this.min) ? 0 : parseFloat(formatUnit(this.min.toString())) : this.value;\n }\n this.previousVal = this.type !== 'Range' ? this.checkHandleValue(parseFloat(formatUnit(this.value.toString()))) : [this.checkHandleValue(parseFloat(formatUnit(this.value[0].toString()))), this.checkHandleValue(parseFloat(formatUnit(this.value[1].toString())))];\n this.previousChanged = this.previousVal;\n if (!isNullOrUndefined(this.element.hasAttribute('name'))) {\n this.element.removeAttribute('name');\n }\n this.setValue();\n if (this.limits.enabled) {\n this.setLimitBar();\n }\n if (this.ticks.placement !== 'None') {\n this.renderScale();\n }\n if (this.tooltip.isVisible) {\n this.renderTooltip();\n }\n if (!this.enabled) {\n addClass([this.sliderContainer], [classNames.sliderDisabled]);\n } else {\n removeClass([this.sliderContainer], [classNames.sliderDisabled]);\n }\n if (this.readonly) {\n addClass([this.sliderContainer], [classNames.readonly]);\n } else {\n removeClass([this.sliderContainer], [classNames.readonly]);\n }\n };\n Slider.prototype.getThemeInitialization = function () {\n this.isMaterial = this.getTheme(this.sliderContainer) === 'material' || this.getTheme(this.sliderContainer) === 'material-dark';\n this.isMaterial3 = this.getTheme(this.sliderContainer) === 'Material3' || this.getTheme(this.sliderContainer) === 'Material3-dark';\n this.isBootstrap = this.getTheme(this.sliderContainer) === 'bootstrap' || this.getTheme(this.sliderContainer) === 'bootstrap-dark';\n this.isBootstrap4 = this.getTheme(this.sliderContainer) === 'bootstrap4';\n this.isTailwind = this.getTheme(this.sliderContainer) === 'tailwind' || this.getTheme(this.sliderContainer) === 'tailwind-dark';\n this.isTailwind3 = this.getTheme(this.sliderContainer) === 'tailwind3' || this.getTheme(this.sliderContainer) === 'tailwind3-dark';\n this.isBootstrap5 = this.getTheme(this.sliderContainer) === 'bootstrap5';\n this.isFluent = this.getTheme(this.sliderContainer) === 'FluentUI';\n this.isFluent2 = this.getTheme(this.sliderContainer) === 'fluent2';\n this.isBootstrap5Dot3 = this.getTheme(this.sliderContainer) === 'bootstrap5.3';\n this.isMaterialTooltip = (this.isMaterial || this.isMaterial3) && this.type !== 'Range' && this.tooltip.isVisible;\n };\n Slider.prototype.createRangeBar = function () {\n if (this.type !== 'Default') {\n this.rangeBar = this.createElement('div', {\n attrs: {\n class: classNames.rangeBar\n }\n });\n this.element.appendChild(this.rangeBar);\n if (this.drag && this.type === 'Range') {\n if (this.orientation === 'Horizontal') {\n this.rangeBar.classList.add(classNames.dragHorizontal);\n } else {\n this.rangeBar.classList.add(classNames.dragVertical);\n }\n }\n }\n };\n Slider.prototype.createLimitBar = function () {\n var firstElementClassName = this.type !== 'Range' ? classNames.limitBarDefault : classNames.limitBarFirst;\n firstElementClassName += ' ' + classNames.limits;\n this.limitBarFirst = this.createElement('div', {\n attrs: {\n class: firstElementClassName\n }\n });\n this.element.appendChild(this.limitBarFirst);\n if (this.type === 'Range') {\n this.limitBarSecond = this.createElement('div', {\n attrs: {\n class: classNames.limitBarSecond + ' ' + classNames.limits\n }\n });\n this.element.appendChild(this.limitBarSecond);\n }\n };\n Slider.prototype.setOrientClass = function () {\n if (this.orientation !== 'Vertical') {\n this.sliderContainer.classList.remove(classNames.verticalSlider);\n this.sliderContainer.classList.add(classNames.horizontalSlider);\n this.firstHandle.setAttribute('aria-orientation', 'horizontal');\n if (this.type === 'Range') {\n this.secondHandle.setAttribute('aria-orientation', 'horizontal');\n }\n } else {\n this.sliderContainer.classList.remove(classNames.horizontalSlider);\n this.sliderContainer.classList.add(classNames.verticalSlider);\n this.firstHandle.setAttribute('aria-orientation', 'vertical');\n if (this.type === 'Range') {\n this.secondHandle.setAttribute('aria-orientation', 'vertical');\n }\n }\n };\n Slider.prototype.setAriaAttributes = function (element) {\n var _this = this;\n var min = this.min;\n var max = this.max;\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n min = this.customValues[0];\n max = this.customValues[this.customValues.length - 1];\n }\n if (this.type !== 'Range') {\n attributes(element, {\n 'aria-valuemin': isNullOrUndefined(min) ? '0' : min.toString(),\n 'aria-valuemax': isNullOrUndefined(max) ? '100' : max.toString()\n });\n } else {\n var range = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 ? [[min.toString(), this.customValues[this.value[1]].toString()], [this.customValues[this.value[0]].toString(), max.toString()]] : [[min.toString(), this.value[1].toString()], [this.value[0].toString(), max.toString()]];\n range.forEach(function (range, index) {\n var element = index === 0 ? _this.firstHandle : _this.secondHandle;\n if (element) {\n attributes(element, {\n 'aria-valuemin': range[0],\n 'aria-valuemax': range[1]\n });\n }\n });\n }\n };\n Slider.prototype.createSecondHandle = function () {\n this.secondHandle = this.createElement('div', {\n attrs: {\n class: classNames.sliderHandle,\n 'role': 'slider',\n tabIndex: '0',\n 'aria-label': 'slider'\n }\n });\n this.secondHandle.classList.add(classNames.sliderSecondHandle);\n this.element.appendChild(this.secondHandle);\n };\n Slider.prototype.createFirstHandle = function () {\n this.firstHandle = this.createElement('div', {\n attrs: {\n class: classNames.sliderHandle,\n 'role': 'slider',\n tabIndex: '0',\n 'aria-label': 'slider'\n }\n });\n this.firstHandle.classList.add(classNames.sliderFirstHandle);\n this.element.appendChild(this.firstHandle);\n if (this.isMaterialTooltip) {\n this.materialHandle = this.createElement('div', {\n attrs: {\n class: classNames.sliderHandle + ' ' + classNames.sliderMaterialHandle\n }\n });\n this.element.appendChild(this.materialHandle);\n }\n };\n Slider.prototype.wireFirstHandleEvt = function (destroy) {\n if (!destroy) {\n EventHandler.add(this.firstHandle, 'mousedown touchstart', this.handleFocus, this);\n EventHandler.add(this.firstHandle, 'transitionend', this.transitionEnd, this);\n EventHandler.add(this.firstHandle, 'mouseenter touchenter', this.handleOver, this);\n EventHandler.add(this.firstHandle, 'mouseleave touchend', this.handleLeave, this);\n } else {\n EventHandler.remove(this.firstHandle, 'mousedown touchstart', this.handleFocus);\n EventHandler.remove(this.firstHandle, 'transitionend', this.transitionEnd);\n EventHandler.remove(this.firstHandle, 'mouseenter touchenter', this.handleOver);\n EventHandler.remove(this.firstHandle, 'mouseleave touchend', this.handleLeave);\n }\n };\n Slider.prototype.wireSecondHandleEvt = function (destroy) {\n if (!destroy) {\n EventHandler.add(this.secondHandle, 'mousedown touchstart', this.handleFocus, this);\n EventHandler.add(this.secondHandle, 'transitionend', this.transitionEnd, this);\n EventHandler.add(this.secondHandle, 'mouseenter touchenter', this.handleOver, this);\n EventHandler.add(this.secondHandle, 'mouseleave touchend', this.handleLeave, this);\n } else {\n EventHandler.remove(this.secondHandle, 'mousedown touchstart', this.handleFocus);\n EventHandler.remove(this.secondHandle, 'transitionend', this.transitionEnd);\n EventHandler.remove(this.secondHandle, 'mouseenter touchenter', this.handleOver);\n EventHandler.remove(this.secondHandle, 'mouseleave touchend', this.handleLeave);\n }\n };\n Slider.prototype.handleStart = function () {\n if (this.type !== 'Range') {\n this.firstHandle.classList[this.handlePos1 === 0 ? 'add' : 'remove'](classNames.sliderHandleStart);\n if (this.isMaterialTooltip) {\n this.materialHandle.classList[this.handlePos1 === 0 ? 'add' : 'remove'](classNames.sliderHandleStart);\n if (this.tooltipElement) {\n this.tooltipElement.classList[this.handlePos1 === 0 ? 'add' : 'remove'](classNames.sliderTooltipStart);\n }\n }\n }\n };\n Slider.prototype.transitionEnd = function (e) {\n if (e.propertyName !== 'transform') {\n this.handleStart();\n if (!this.enableAnimation) {\n this.getHandle().style.transition = 'none';\n }\n if (this.type !== 'Default') {\n this.rangeBar.style.transition = 'none';\n }\n if ((this.isMaterial || this.isMaterial3) && this.tooltip.isVisible && this.type === 'Default') {\n this.tooltipElement.style.transition = this.transition.handle;\n }\n this.tooltipToggle(this.getHandle());\n this.closeTooltip();\n }\n };\n Slider.prototype.handleFocusOut = function () {\n if (this.firstHandle.classList.contains(classNames.sliderHandleFocused)) {\n this.firstHandle.classList.remove(classNames.sliderHandleFocused);\n }\n if (this.type === 'Range') {\n if (this.secondHandle.classList.contains(classNames.sliderHandleFocused)) {\n this.secondHandle.classList.remove(classNames.sliderHandleFocused);\n }\n }\n };\n Slider.prototype.handleFocus = function (e) {\n this.focusSliderElement();\n this.sliderBarClick(e);\n if (e.currentTarget === this.firstHandle) {\n this.firstHandle.classList.add(classNames.sliderHandleFocused);\n this.firstHandle.classList.add(classNames.sliderTabHandle);\n } else {\n this.secondHandle.classList.add(classNames.sliderHandleFocused);\n this.secondHandle.classList.add(classNames.sliderTabHandle);\n }\n EventHandler.add(document, 'mousemove touchmove', this.sliderBarMove, this);\n EventHandler.add(document, 'mouseup touchend', this.sliderBarUp, this);\n };\n Slider.prototype.handleOver = function (e) {\n if (this.tooltip.isVisible && this.tooltip.showOn === 'Hover') {\n this.tooltipToggle(e.currentTarget);\n }\n if (this.type === 'Default') {\n this.tooltipToggle(this.getHandle());\n }\n };\n Slider.prototype.handleLeave = function (e) {\n if (this.tooltip.isVisible && this.tooltip.showOn === 'Hover' && !e.currentTarget.classList.contains(classNames.sliderHandleFocused) && !e.currentTarget.classList.contains(classNames.sliderTabHandle)) {\n this.closeTooltip();\n }\n };\n Slider.prototype.setHandler = function () {\n this.createFirstHandle();\n if (this.type === 'Range') {\n this.createSecondHandle();\n }\n };\n Slider.prototype.setEnableRTL = function () {\n if (this.enableRtl && this.orientation !== 'Vertical') {\n addClass([this.sliderContainer], classNames.rtl);\n } else {\n removeClass([this.sliderContainer], classNames.rtl);\n }\n var preDir = this.orientation !== 'Vertical' ? this.horDir : this.verDir;\n if (this.enableRtl) {\n this.horDir = 'right';\n this.verDir = 'bottom';\n } else {\n this.horDir = 'left';\n this.verDir = 'bottom';\n }\n var currDir = this.orientation !== 'Vertical' ? this.horDir : this.verDir;\n if (preDir !== currDir) {\n if (this.orientation === 'Horizontal') {\n setStyleAttribute(this.firstHandle, {\n 'right': '',\n 'left': 'auto'\n });\n if (this.type === 'Range') {\n setStyleAttribute(this.secondHandle, {\n 'top': '',\n 'left': 'auto'\n });\n }\n }\n }\n this.setBarColor();\n };\n Slider.prototype.tooltipValue = function () {\n var _this = this;\n var text;\n var args = {\n value: this.value,\n text: ''\n };\n if (this.initialTooltip) {\n this.initialTooltip = false;\n this.setTooltipContent();\n args.text = text = typeof this.tooltipObj.content === 'function' ? this.tooltipObj.content() : this.tooltipObj.content;\n this.trigger('tooltipChange', args, function (observedArgs) {\n _this.addTooltipClass(observedArgs.text);\n if (text !== observedArgs.text) {\n _this.customAriaText = observedArgs.text;\n if (_this.enableHtmlSanitizer) {\n observedArgs.text = SanitizeHtmlHelper.sanitize(observedArgs.text.toString());\n } else {\n observedArgs.text = observedArgs.text.toString();\n }\n var contentTemp = function () {\n return observedArgs.text;\n };\n _this.tooltipObj.content = initializeCSPTemplate(contentTemp);\n _this.setAriaAttrValue(_this.firstHandle);\n if (_this.type === 'Range') {\n _this.setAriaAttrValue(_this.secondHandle);\n }\n }\n });\n if (this.isMaterialTooltip) {\n this.setPreviousVal('change', this.value);\n }\n }\n };\n Slider.prototype.setTooltipContent = function () {\n var content = this.formatContent(this.tooltipFormatInfo, false);\n var contentTemp = function () {\n return content;\n };\n this.tooltipObj.content = initializeCSPTemplate(contentTemp);\n };\n Slider.prototype.formatContent = function (formatInfo, ariaContent) {\n var content = '';\n var handle1 = this.handleVal1;\n var handle2 = this.handleVal2;\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n handle1 = this.customValues[this.handleVal1];\n handle2 = this.customValues[this.handleVal2];\n }\n if (!ariaContent) {\n if (this.type === 'Range') {\n if (this.enableRtl && this.orientation !== 'Vertical') {\n content = !isNullOrUndefined(formatInfo.format) ? this.formatString(handle2, formatInfo).formatString + ' - ' + this.formatString(handle1, formatInfo).formatString : handle2.toString() + ' - ' + handle1.toString();\n } else {\n content = !isNullOrUndefined(formatInfo.format) ? this.formatString(handle1, formatInfo).formatString + ' - ' + this.formatString(handle2, formatInfo).formatString : handle1.toString() + ' - ' + handle2.toString();\n }\n } else {\n if (!isNullOrUndefined(handle1)) {\n content = !isNullOrUndefined(formatInfo.format) ? this.formatString(handle1, formatInfo).formatString : handle1.toString();\n }\n }\n return content;\n } else {\n if (this.type === 'Range') {\n if (this.enableRtl && this.orientation !== 'Vertical') {\n content = !isNullOrUndefined(this.tooltip) && !isNullOrUndefined(this.tooltip.format) ? this.formatString(handle2, formatInfo).elementVal + ' - ' + this.formatString(handle1, formatInfo).elementVal : handle2.toString() + ' - ' + handle1.toString();\n } else {\n content = !isNullOrUndefined(this.tooltip) && !isNullOrUndefined(this.tooltip.format) ? this.formatString(handle1, formatInfo).elementVal + ' - ' + this.formatString(handle2, formatInfo).elementVal : handle1.toString() + ' - ' + handle2.toString();\n }\n } else {\n if (!isNullOrUndefined(handle1)) {\n content = !isNullOrUndefined(this.tooltip) && !isNullOrUndefined(this.tooltip.format) ? this.formatString(handle1, formatInfo).elementVal : handle1.toString();\n }\n }\n return content;\n }\n };\n Slider.prototype.addTooltipClass = function (content) {\n if (this.isMaterialTooltip) {\n var count = content.toString().length;\n if (!this.tooltipElement) {\n var cssClass = count > 4 ? classNames.sliderMaterialRange : classNames.sliderMaterialDefault;\n this.tooltipObj.cssClass = classNames.sliderTooltip + ' ' + cssClass;\n } else {\n var cssClass = count > 4 ? {\n oldCss: classNames.sliderMaterialDefault,\n newCss: classNames.sliderMaterialRange\n } : {\n oldCss: classNames.sliderMaterialRange,\n newCss: classNames.sliderMaterialDefault\n };\n this.tooltipElement.classList.remove(cssClass.oldCss);\n if (!this.tooltipElement.classList.contains(cssClass.newCss)) {\n this.tooltipElement.classList.add(cssClass.newCss);\n this.tooltipElement.style.transform = count > 4 ? 'scale(1)' : this.getTooltipTransformProperties(this.previousTooltipClass).rotate;\n }\n }\n }\n };\n Slider.prototype.tooltipPlacement = function () {\n return this.orientation === 'Horizontal' ? this.tooltip.placement === 'Before' ? 'TopCenter' : 'BottomCenter' : this.tooltip.placement === 'Before' ? 'LeftCenter' : 'RightCenter';\n };\n Slider.prototype.tooltipBeforeOpen = function (args) {\n this.tooltipElement = args.element;\n if (this.tooltip.cssClass) {\n addClass([this.tooltipElement], this.tooltip.cssClass.split(' ').filter(function (css) {\n return css;\n }));\n }\n args.target.removeAttribute('aria-describedby');\n if (this.isMaterialTooltip) {\n this.tooltipElement.firstElementChild.classList.add(classNames.materialTooltipHide);\n this.handleStart();\n this.setTooltipTransform();\n }\n };\n Slider.prototype.tooltipCollision = function (position) {\n if (this.isBootstrap || this.isBootstrap4 || (this.isMaterial || this.isMaterial3) && !this.isMaterialTooltip) {\n var tooltipOffsetValue = this.isBootstrap4 ? bootstrap4TooltipOffset : bootstrapTooltipOffset;\n switch (position) {\n case 'TopCenter':\n this.tooltipObj.setProperties({\n 'offsetY': -tooltipOffsetValue\n }, false);\n break;\n case 'BottomCenter':\n this.tooltipObj.setProperties({\n 'offsetY': tooltipOffsetValue\n }, false);\n break;\n case 'LeftCenter':\n this.tooltipObj.setProperties({\n 'offsetX': -tooltipOffsetValue\n }, false);\n break;\n case 'RightCenter':\n this.tooltipObj.setProperties({\n 'offsetX': tooltipOffsetValue\n }, false);\n break;\n }\n }\n };\n Slider.prototype.materialTooltipEventCallBack = function (event) {\n this.sliderBarClick(event);\n EventHandler.add(document, 'mousemove touchmove', this.sliderBarMove, this);\n EventHandler.add(document, 'mouseup touchend', this.sliderBarUp, this);\n };\n Slider.prototype.wireMaterialTooltipEvent = function (destroy) {\n if (this.isMaterialTooltip) {\n if (!destroy) {\n EventHandler.add(this.tooltipElement, 'mousedown touchstart', this.materialTooltipEventCallBack, this);\n } else {\n EventHandler.remove(this.tooltipElement, 'mousedown touchstart', this.materialTooltipEventCallBack);\n }\n }\n };\n Slider.prototype.tooltipPositionCalculation = function (position) {\n var cssClass;\n switch (position) {\n case 'TopCenter':\n cssClass = classNames.horizontalTooltipBefore;\n break;\n case 'BottomCenter':\n cssClass = classNames.horizontalTooltipAfter;\n break;\n case 'LeftCenter':\n cssClass = classNames.verticalTooltipBefore;\n break;\n case 'RightCenter':\n cssClass = classNames.verticalTooltipAfter;\n break;\n }\n return cssClass;\n };\n Slider.prototype.getTooltipTransformProperties = function (className) {\n var transformProperties;\n if (this.tooltipElement) {\n var position = this.orientation === 'Horizontal' ? this.tooltipElement.clientHeight + 14 - this.tooltipElement.clientHeight / 2 : this.tooltipElement.clientWidth + 14 - this.tooltipElement.clientWidth / 2;\n transformProperties = this.orientation === 'Horizontal' ? className === classNames.horizontalTooltipBefore ? {\n rotate: 'rotate(45deg)',\n translate: \"translateY(\" + position + \"px)\"\n } : {\n rotate: 'rotate(225deg)',\n translate: \"translateY(\" + -position + \"px)\"\n } : className === classNames.verticalTooltipBefore ? {\n rotate: 'rotate(-45deg)',\n translate: \"translateX(\" + position + \"px)\"\n } : {\n rotate: 'rotate(-225deg)',\n translate: \"translateX(\" + -position + \"px)\"\n };\n }\n return transformProperties;\n };\n Slider.prototype.openMaterialTooltip = function () {\n var _this = this;\n if (this.isMaterialTooltip) {\n this.refreshTooltip(this.firstHandle);\n var tooltipContentElement = this.tooltipElement.firstElementChild;\n tooltipContentElement.classList.remove(classNames.materialTooltipHide);\n tooltipContentElement.classList.add(classNames.materialTooltipShow);\n this.firstHandle.style.cursor = 'default';\n this.tooltipElement.style.transition = this.scaleTransform;\n this.tooltipElement.classList.add(classNames.materialTooltipOpen);\n this.materialHandle.style.transform = 'scale(0)';\n if (tooltipContentElement.innerText.length > 4) {\n this.tooltipElement.style.transform = 'scale(1)';\n } else {\n this.tooltipElement.style.transform = this.getTooltipTransformProperties(this.previousTooltipClass).rotate;\n }\n if (this.type === 'Default') {\n setTimeout(function () {\n if (_this.tooltipElement) {\n _this.tooltipElement.style.transition = _this.transition.handle;\n }\n }, 2500);\n } else {\n setTimeout(function () {\n if (_this.tooltipElement) {\n _this.tooltipElement.style.transition = 'none';\n }\n }, 2500);\n }\n }\n };\n Slider.prototype.closeMaterialTooltip = function () {\n var _this = this;\n if (this.isMaterialTooltip) {\n var tooltipContentElement = this.tooltipElement.firstElementChild;\n this.tooltipElement.style.transition = this.scaleTransform;\n tooltipContentElement.classList.remove(classNames.materialTooltipShow);\n tooltipContentElement.classList.add(classNames.materialTooltipHide);\n this.firstHandle.style.cursor = '-webkit-grab';\n this.firstHandle.style.cursor = 'grab';\n if (this.materialHandle) {\n this.materialHandle.style.transform = 'scale(1)';\n }\n this.tooltipElement.classList.remove(classNames.materialTooltipOpen);\n this.setTooltipTransform();\n this.tooltipTarget = undefined;\n setTimeout(function () {\n if (_this.tooltipElement) {\n _this.tooltipElement.style.transition = 'none';\n }\n }, 2500);\n }\n };\n Slider.prototype.checkTooltipPosition = function (args) {\n var tooltipClass = this.tooltipPositionCalculation(args.collidedPosition);\n if (this.tooltipCollidedPosition === undefined || this.tooltipCollidedPosition !== args.collidedPosition || !args.element.classList.contains(tooltipClass)) {\n if (this.isMaterialTooltip) {\n if (tooltipClass !== undefined) {\n args.element.classList.remove(this.previousTooltipClass);\n args.element.classList.add(tooltipClass);\n this.previousTooltipClass = tooltipClass;\n }\n if (args.element.style.transform && args.element.classList.contains(classNames.materialTooltipOpen) && args.element.firstElementChild.innerText.length <= 4) {\n args.element.style.transform = this.getTooltipTransformProperties(this.previousTooltipClass).rotate;\n }\n }\n this.tooltipCollidedPosition = args.collidedPosition;\n }\n if (this.isMaterialTooltip && this.tooltipElement && this.tooltipElement.style.transform.indexOf('translate') !== -1) {\n this.setTooltipTransform();\n }\n };\n Slider.prototype.setTooltipTransform = function () {\n var transformProperties = this.getTooltipTransformProperties(this.previousTooltipClass);\n if (isNullOrUndefined(this.tooltipElement)) {\n return;\n }\n if (this.tooltipElement.firstElementChild.innerText.length > 4) {\n this.tooltipElement.style.transform = transformProperties.translate + \" scale(0.01)\";\n } else {\n this.tooltipElement.style.transform = transformProperties.translate + \" \" + transformProperties.rotate + \" scale(0.01)\";\n }\n };\n Slider.prototype.renderTooltip = function () {\n this.tooltipObj = new Tooltip({\n showTipPointer: this.isBootstrap || this.isMaterial || this.isMaterial3 || this.isBootstrap4 || this.isTailwind || this.isTailwind3 || this.isBootstrap5 || this.isFluent || this.isFluent2 || this.isBootstrap5Dot3,\n cssClass: classNames.sliderTooltip,\n height: this.isMaterial || this.isMaterial3 ? 30 : 'auto',\n animation: {\n open: {\n effect: 'None'\n },\n close: {\n effect: 'FadeOut',\n duration: 500\n }\n },\n opensOn: 'Custom',\n beforeOpen: this.tooltipBeforeOpen.bind(this),\n beforeCollision: this.checkTooltipPosition.bind(this),\n beforeClose: this.tooltipBeforeClose.bind(this),\n enableHtmlSanitizer: this.enableHtmlSanitizer\n });\n this.tooltipObj.appendTo(this.firstHandle);\n this.initializeTooltipProps();\n };\n Slider.prototype.initializeTooltipProps = function () {\n var tooltipShowOn = this.tooltip.showOn === 'Auto' ? 'Hover' : this.tooltip.showOn;\n this.setProperties({\n tooltip: {\n showOn: tooltipShowOn\n }\n }, true);\n this.tooltipObj.position = this.tooltipPlacement();\n this.tooltipCollision(this.tooltipObj.position);\n [this.firstHandle, this.rangeBar, this.secondHandle].forEach(function (handle) {\n if (!isNullOrUndefined(handle)) {\n handle.style.transition = 'none';\n }\n });\n if (this.isMaterialTooltip) {\n this.sliderContainer.classList.add(classNames.materialSlider);\n this.tooltipValue();\n this.tooltipObj.animation.close.effect = 'None';\n this.tooltipObj.open(this.firstHandle);\n }\n };\n Slider.prototype.tooltipBeforeClose = function () {\n this.tooltipElement = undefined;\n this.tooltipCollidedPosition = undefined;\n };\n Slider.prototype.setButtons = function () {\n this.firstBtn = this.createElement('div', {\n className: classNames.sliderButton + ' ' + classNames.firstButton\n });\n this.firstBtn.appendChild(this.createElement('span', {\n className: classNames.sliderButtonIcon\n }));\n if (this.isTailwind || this.isTailwind3) {\n this.firstBtn.querySelector('span').classList.add('e-icons');\n }\n this.firstBtn.tabIndex = -1;\n this.secondBtn = this.createElement('div', {\n className: classNames.sliderButton + ' ' + classNames.secondButton\n });\n this.secondBtn.appendChild(this.createElement('span', {\n className: classNames.sliderButtonIcon\n }));\n if (this.isTailwind || this.isTailwind3) {\n this.secondBtn.querySelector('span').classList.add('e-icons');\n }\n this.secondBtn.tabIndex = -1;\n this.sliderContainer.classList.add(classNames.sliderButtonClass);\n this.sliderContainer.appendChild(this.firstBtn);\n this.sliderContainer.appendChild(this.secondBtn);\n this.sliderContainer.appendChild(this.element);\n this.buttonTitle();\n };\n Slider.prototype.buttonTitle = function () {\n var enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n this.l10n.setLocale(this.locale);\n var decrementTitle = this.l10n.getConstant('decrementTitle');\n var incrementTitle = this.l10n.getConstant('incrementTitle');\n attributes(enabledRTL ? this.secondBtn : this.firstBtn, {\n 'aria-label': decrementTitle,\n title: decrementTitle\n });\n attributes(enabledRTL ? this.firstBtn : this.secondBtn, {\n 'aria-label': incrementTitle,\n title: incrementTitle\n });\n };\n Slider.prototype.buttonFocusOut = function () {\n if (this.isMaterial || this.isMaterial3) {\n this.getHandle().classList.remove('e-large-thumb-size');\n }\n };\n Slider.prototype.repeatButton = function (args) {\n var hVal = this.handleValueUpdate();\n var enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n var value;\n if (args.target.parentElement.classList.contains(classNames.firstButton) || args.target.classList.contains(classNames.firstButton)) {\n if (enabledRTL) {\n value = this.add(hVal, parseFloat(this.step.toString()), true);\n } else {\n value = this.add(hVal, parseFloat(this.step.toString()), false);\n }\n } else if (args.target.parentElement.classList.contains(classNames.secondButton) || args.target.classList.contains(classNames.secondButton)) {\n if (enabledRTL) {\n value = this.add(hVal, parseFloat(this.step.toString()), false);\n } else {\n value = this.add(hVal, parseFloat(this.step.toString()), true);\n }\n }\n if (this.limits.enabled) {\n value = this.getLimitCorrectedValues(value);\n }\n if (value >= this.min && value <= this.max) {\n this.changeHandleValue(value);\n this.tooltipToggle(this.getHandle());\n }\n };\n Slider.prototype.repeatHandlerMouse = function (args) {\n args.preventDefault();\n if (args.type === 'mousedown' || args.type === 'touchstart') {\n this.buttonClick(args);\n this.repeatInterval = setInterval(this.repeatButton.bind(this), 180, args);\n }\n };\n Slider.prototype.materialChange = function () {\n if (!this.getHandle().classList.contains('e-large-thumb-size')) {\n this.getHandle().classList.add('e-large-thumb-size');\n }\n };\n Slider.prototype.focusHandle = function () {\n if (!this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.getHandle().classList.add(classNames.sliderTabHandle);\n }\n };\n Slider.prototype.repeatHandlerUp = function (e) {\n this.changeEvent('changed', e);\n this.closeTooltip();\n clearInterval(this.repeatInterval);\n this.getHandle().focus();\n };\n Slider.prototype.customTickCounter = function (bigNum) {\n var tickCount = 4;\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n if (bigNum > 4) {\n tickCount = 3;\n }\n if (bigNum > 7) {\n tickCount = 2;\n }\n if (bigNum > 14) {\n tickCount = 1;\n }\n if (bigNum > 28) {\n tickCount = 0;\n }\n }\n return tickCount;\n };\n Slider.prototype.renderScale = function () {\n var orien = this.orientation === 'Vertical' ? 'v' : 'h';\n this.ul = this.createElement('ul', {\n className: classNames.scale + ' ' + 'e-' + orien + '-scale ' + classNames.tick + '-' + this.ticks.placement.toLowerCase(),\n attrs: {\n role: 'presentation',\n 'aria-hidden': 'true'\n }\n });\n this.ul.style.zIndex = '-1';\n if (Browser.isAndroid && orien === 'h') {\n this.ul.classList.add(classNames.sliderTickPosition);\n }\n var smallStep = this.ticks.smallStep;\n if (!this.ticks.showSmallTicks) {\n if (this.ticks.largeStep > 0) {\n smallStep = this.ticks.largeStep;\n } else {\n smallStep = parseFloat(formatUnit(this.max)) - parseFloat(formatUnit(this.min));\n }\n } else if (smallStep <= 0) {\n smallStep = parseFloat(formatUnit(this.step));\n }\n var min = parseFloat(formatUnit(this.min));\n var max = parseFloat(formatUnit(this.max));\n var steps = parseFloat(formatUnit(smallStep));\n var bigNum = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 && this.customValues.length - 1;\n var customStep = this.customTickCounter(bigNum);\n var count = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 ? bigNum * customStep + bigNum : Math.abs((max - min) / steps);\n this.element.appendChild(this.ul);\n var li;\n var start = parseFloat(this.min.toString());\n if (orien === 'v') {\n start = parseFloat(this.max.toString());\n }\n var left = 0;\n var islargeTick;\n var tickWidth = 100 / count;\n if (tickWidth === Infinity) {\n tickWidth = 5;\n }\n for (var i = 0, y = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 ? this.customValues.length - 1 : 0, k = 0; i <= count; i++) {\n li = this.createElement('li', {\n attrs: {\n class: classNames.tick,\n role: 'presentation',\n 'aria-hidden': 'true'\n }\n });\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n islargeTick = i % (customStep + 1) === 0;\n if (islargeTick) {\n if (orien === 'h') {\n start = this.customValues[k];\n k++;\n } else {\n start = this.customValues[y];\n y--;\n }\n li.setAttribute('title', start.toString());\n }\n } else {\n li.setAttribute('title', start.toString());\n if (this.numberOfDecimals(this.max) === 0 && this.numberOfDecimals(this.min) === 0 && this.numberOfDecimals(this.step) === 0) {\n if (orien === 'h') {\n var reminder = (start - parseFloat(this.min.toString())) % this.ticks.largeStep;\n islargeTick = Math.abs(reminder) < tolerance || Math.abs(this.ticks.largeStep - reminder) < tolerance;\n } else {\n var reminder = Math.abs(start - parseFloat(this.max.toString())) % this.ticks.largeStep;\n islargeTick = Math.abs(reminder) < tolerance || Math.abs(this.ticks.largeStep - reminder) < tolerance;\n }\n } else {\n var largestep = this.ticks.largeStep;\n var startValue = start;\n if (orien === 'h') {\n var reminder = (startValue - min) % largestep;\n islargeTick = Math.abs(reminder) < tolerance || Math.abs(largestep - reminder) < tolerance;\n } else {\n var reminder = Math.abs(startValue - parseFloat(max.toString())) % largestep;\n islargeTick = Math.abs(reminder) < tolerance || Math.abs(largestep - reminder) < tolerance;\n }\n }\n }\n if (islargeTick) {\n li.classList.add(classNames.large);\n }\n if (orien === 'h') {\n li.style.width = tickWidth + '%';\n } else {\n li.style.height = tickWidth + '%';\n }\n var repeat = islargeTick ? this.ticks.placement === 'Both' ? 2 : 1 : 0;\n if (islargeTick) {\n for (var j = 0; j < repeat; j++) {\n this.createTick(li, start);\n }\n } else if (isNullOrUndefined(this.customValues)) {\n this.formatTicksValue(li, start);\n }\n this.ul.appendChild(li);\n this.tickElementCollection.push(li);\n var decimalPoints = void 0;\n if (isNullOrUndefined(this.customValues)) {\n if (this.numberOfDecimals(smallStep) > this.numberOfDecimals(start)) {\n decimalPoints = this.numberOfDecimals(smallStep);\n } else {\n decimalPoints = this.numberOfDecimals(start);\n }\n if (orien === 'h') {\n start = this.makeRoundNumber(start + smallStep, decimalPoints);\n } else {\n if (this.min > this.max) {\n start = this.makeRoundNumber(start + smallStep, decimalPoints);\n } else {\n start = this.makeRoundNumber(start - smallStep, decimalPoints);\n }\n }\n left = this.makeRoundNumber(left + smallStep, decimalPoints);\n }\n }\n this.ticksAlignment(orien, tickWidth);\n };\n Slider.prototype.ticksAlignment = function (orien, tickWidth, triggerEvent) {\n if (triggerEvent === void 0) {\n triggerEvent = true;\n }\n this.firstChild = this.ul.firstElementChild;\n this.lastChild = this.ul.lastElementChild;\n this.firstChild.classList.add(classNames.sliderFirstTick);\n this.lastChild.classList.add(classNames.sliderLastTick);\n this.sliderContainer.classList.add(classNames.scale + '-' + this.ticks.placement.toLowerCase());\n if (orien === 'h') {\n this.firstChild.style.width = tickWidth / 2 + '%';\n this.lastChild.style.width = tickWidth / 2 + '%';\n } else {\n this.firstChild.style.height = tickWidth / 2 + '%';\n this.lastChild.style.height = tickWidth / 2 + '%';\n }\n var eventArgs = {\n ticksWrapper: this.ul,\n tickElements: this.tickElementCollection\n };\n if (triggerEvent) {\n this.trigger('renderedTicks', eventArgs);\n }\n this.scaleAlignment();\n };\n Slider.prototype.createTick = function (li, start) {\n var span = this.createElement('span', {\n className: classNames.tickValue + ' ' + classNames.tick + '-' + this.ticks.placement.toLowerCase(),\n attrs: {\n role: 'presentation',\n 'aria-hidden': 'true'\n }\n });\n li.appendChild(span);\n if (isNullOrUndefined(this.customValues)) {\n this.formatTicksValue(li, start, span);\n } else {\n if (this.enableHtmlSanitizer) {\n span.innerHTML = SanitizeHtmlHelper.sanitize(start.toString());\n } else {\n span.innerHTML = start.toString();\n }\n }\n };\n Slider.prototype.formatTicksValue = function (li, start, spanElement) {\n var _this = this;\n var tickText = this.formatNumber(start);\n var text = !isNullOrUndefined(this.ticks) && !isNullOrUndefined(this.ticks.format) ? this.formatString(start, this.ticksFormatInfo).formatString : tickText;\n var eventArgs = {\n value: start,\n text: text,\n tickElement: li\n };\n this.trigger('renderingTicks', eventArgs, function (observedArgs) {\n li.setAttribute('title', observedArgs.text.toString());\n if (spanElement) {\n if (_this.enableHtmlSanitizer) {\n spanElement.innerHTML = SanitizeHtmlHelper.sanitize(observedArgs.text.toString());\n } else {\n spanElement.innerHTML = observedArgs.text.toString();\n }\n }\n });\n };\n Slider.prototype.scaleAlignment = function () {\n this.tickValuePosition();\n if (this.orientation === 'Vertical') {\n if (this.element.getBoundingClientRect().width <= 15) {\n this.sliderContainer.classList.add(classNames.sliderSmallSize);\n } else {\n this.sliderContainer.classList.remove(classNames.sliderSmallSize);\n }\n } else {\n if (this.element.getBoundingClientRect().height <= 15) {\n this.sliderContainer.classList.add(classNames.sliderSmallSize);\n } else {\n this.sliderContainer.classList.remove(classNames.sliderSmallSize);\n }\n }\n };\n Slider.prototype.tickValuePosition = function () {\n this.firstChild = this.element.querySelector('ul').children[0];\n var first = this.firstChild.getBoundingClientRect();\n var firstChild;\n var otherChild;\n var smallStep = this.ticks.smallStep;\n var count = Math.abs(parseFloat(formatUnit(this.max)) - parseFloat(formatUnit(this.min))) / smallStep;\n if (this.firstChild.children.length > 0) {\n firstChild = this.firstChild.children[0].getBoundingClientRect();\n }\n var tickElements = [this.sliderContainer.querySelectorAll('.' + classNames.tick + '.' + classNames.large + ' .' + classNames.tickValue)];\n var other;\n if (this.ticks.placement === 'Both') {\n other = [].slice.call(tickElements[0], 2);\n } else {\n other = [].slice.call(tickElements[0], 1);\n }\n var tickWidth = this.orientation === 'Vertical' ? first.height * 2 : first.width * 2;\n for (var i = 0; i < this.firstChild.children.length; i++) {\n if (this.orientation === 'Vertical') {\n this.firstChild.children[i].style.top = -(firstChild.height / 2) + 'px';\n } else {\n if (!this.enableRtl) {\n this.firstChild.children[i].style.left = -(firstChild.width / 2) + 'px';\n } else {\n this.firstChild.children[i].style.left = (tickWidth - this.firstChild.children[i].getBoundingClientRect().width) / 2 + 'px';\n }\n }\n }\n for (var i = 0; i < other.length; i++) {\n otherChild = other[i].getBoundingClientRect();\n if (this.orientation === 'Vertical') {\n setStyleAttribute(other[i], {\n top: (tickWidth - otherChild.height) / 2 + 'px'\n });\n } else {\n setStyleAttribute(other[i], {\n left: (tickWidth - otherChild.width) / 2 + 'px'\n });\n }\n }\n if (this.enableRtl && this.lastChild.children.length && count !== 0) {\n this.lastChild.children[0].style.left = -(this.lastChild.getBoundingClientRect().width / 2) + 'px';\n if (this.ticks.placement === 'Both') {\n this.lastChild.children[1].style.left = -(this.lastChild.getBoundingClientRect().width / 2) + 'px';\n }\n }\n if (count === 0) {\n if (this.orientation === 'Horizontal') {\n if (!this.enableRtl) {\n this.firstChild.classList.remove(classNames.sliderLastTick);\n this.firstChild.style.left = this.firstHandle.style.left;\n } else {\n this.firstChild.classList.remove(classNames.sliderLastTick);\n this.firstChild.style.right = this.firstHandle.style.right;\n this.firstChild.children[0].style.left = this.firstChild.getBoundingClientRect().width / 2 + 2 + 'px';\n if (this.ticks.placement === 'Both') {\n this.firstChild.children[1].style.left = this.firstChild.getBoundingClientRect().width / 2 + 2 + 'px';\n }\n }\n }\n if (this.orientation === 'Vertical') {\n this.firstChild.classList.remove(classNames.sliderLastTick);\n }\n }\n };\n Slider.prototype.setAriaAttrValue = function (element) {\n var ariaValueText;\n var isTickFormatted = !isNullOrUndefined(this.ticks) && !isNullOrUndefined(this.ticks.format) ? true : false;\n var text = !isTickFormatted ? this.formatContent(this.ticksFormatInfo, false) : this.formatContent(this.tooltipFormatInfo, false);\n var valuenow = isTickFormatted ? this.formatContent(this.ticksFormatInfo, true) : this.formatContent(this.tooltipFormatInfo, true);\n text = !this.customAriaText ? text : this.customAriaText;\n if (text.split(' - ').length === 2) {\n ariaValueText = text.split(' - ');\n } else {\n ariaValueText = [text, text];\n }\n this.setAriaAttributes(element);\n if (this.type !== 'Range') {\n attributes(element, {\n 'aria-valuenow': valuenow,\n 'aria-valuetext': text\n });\n } else {\n if (!this.enableRtl) {\n if (element === this.firstHandle) {\n attributes(element, {\n 'aria-valuenow': valuenow.split(' - ')[0],\n 'aria-valuetext': ariaValueText[0]\n });\n } else {\n attributes(element, {\n 'aria-valuenow': valuenow.split(' - ')[1],\n 'aria-valuetext': ariaValueText[1]\n });\n }\n } else {\n if (element === this.firstHandle) {\n attributes(element, {\n 'aria-valuenow': valuenow.split(' - ')[1],\n 'aria-valuetext': ariaValueText[1]\n });\n } else {\n attributes(element, {\n 'aria-valuenow': valuenow.split(' - ')[0],\n 'aria-valuetext': ariaValueText[0]\n });\n }\n }\n }\n };\n Slider.prototype.handleValueUpdate = function () {\n var hVal;\n if (this.type === 'Range') {\n if (this.activeHandle === 1) {\n hVal = this.handleVal1;\n } else {\n hVal = this.handleVal2;\n }\n } else {\n hVal = this.handleVal1;\n }\n return hVal;\n };\n Slider.prototype.getLimitCorrectedValues = function (value) {\n if (this.type === 'MinRange' || this.type === 'Default') {\n value = this.getLimitValueAndPosition(value, this.limits.minStart, this.limits.minEnd)[0];\n } else {\n if (this.activeHandle === 1) {\n value = this.getLimitValueAndPosition(value, this.limits.minStart, this.limits.minEnd)[0];\n } else {\n value = this.getLimitValueAndPosition(value, this.limits.maxStart, this.limits.maxEnd)[0];\n }\n }\n return value;\n };\n Slider.prototype.focusSliderElement = function () {\n if (!this.isElementFocused) {\n this.element.focus();\n this.isElementFocused = true;\n }\n };\n Slider.prototype.buttonClick = function (args) {\n this.focusSliderElement();\n var value;\n var enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n var hVal = this.handleValueUpdate();\n if (args.keyCode === 40 || args.keyCode === 37 || args.currentTarget.classList.contains(classNames.firstButton)) {\n if (enabledRTL) {\n value = this.add(hVal, parseFloat(this.step.toString()), true);\n } else {\n value = this.add(hVal, parseFloat(this.step.toString()), false);\n }\n } else if (args.keyCode === 38 || args.keyCode === 39 || args.currentTarget.classList.contains(classNames.secondButton)) {\n if (enabledRTL) {\n value = this.add(hVal, parseFloat(this.step.toString()), false);\n } else {\n value = this.add(hVal, parseFloat(this.step.toString()), true);\n }\n } else if (args.keyCode === 33 || args.currentTarget.classList.contains(classNames.firstButton)) {\n if (enabledRTL) {\n value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), false);\n } else {\n value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), true);\n }\n } else if (args.keyCode === 34 || args.currentTarget.classList.contains(classNames.secondButton)) {\n if (enabledRTL) {\n value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), true);\n } else {\n value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), false);\n }\n } else if (args.keyCode === 36) {\n value = parseFloat(this.min < this.max ? this.min.toString() : this.max.toString());\n } else if (args.keyCode === 35) {\n value = parseFloat(this.min < this.max ? this.max.toString() : this.min.toString());\n }\n if (this.limits.enabled) {\n value = this.getLimitCorrectedValues(value);\n }\n this.changeHandleValue(value);\n if ((this.isMaterial || this.isMaterial3) && !this.tooltip.isVisible && !this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.materialChange();\n }\n this.tooltipToggle(this.getHandle());\n this.getHandle().focus();\n this.focusHandle();\n if (args.currentTarget.classList.contains(classNames.firstButton)) {\n EventHandler.add(this.firstBtn, 'mouseup touchend', this.buttonUp, this);\n }\n if (args.currentTarget.classList.contains(classNames.secondButton)) {\n EventHandler.add(this.secondBtn, 'mouseup touchend', this.buttonUp, this);\n }\n };\n Slider.prototype.tooltipToggle = function (target) {\n if (this.isMaterialTooltip) {\n if (!this.tooltipElement.classList.contains(classNames.materialTooltipOpen)) {\n this.openMaterialTooltip();\n } else {\n this.refreshTooltip(this.firstHandle);\n }\n } else {\n if (!this.tooltipElement) {\n this.openTooltip(target);\n } else {\n this.refreshTooltip(target);\n }\n }\n };\n Slider.prototype.buttonUp = function (args) {\n if (args.currentTarget.classList.contains(classNames.firstButton)) {\n EventHandler.remove(this.firstBtn, 'mouseup touchend', this.buttonUp);\n }\n if (args.currentTarget.classList.contains(classNames.secondButton)) {\n EventHandler.remove(this.secondBtn, 'mouseup touchend', this.buttonUp);\n }\n };\n Slider.prototype.setRangeBar = function () {\n if (this.orientation === 'Horizontal' && !isNullOrUndefined(this.rangeBar)) {\n if (this.type === 'MinRange') {\n if (this.enableRtl) {\n this.rangeBar.style.right = '0px';\n } else {\n this.rangeBar.style.left = '0px';\n }\n setStyleAttribute(this.rangeBar, {\n 'width': isNullOrUndefined(this.handlePos1) ? 0 : this.handlePos1 + 'px'\n });\n } else {\n if (this.enableRtl) {\n this.rangeBar.style.right = this.handlePos1 + 'px';\n } else {\n this.rangeBar.style.left = this.handlePos1 + 'px';\n }\n setStyleAttribute(this.rangeBar, {\n 'width': this.handlePos2 - this.handlePos1 + 'px'\n });\n }\n } else if (!isNullOrUndefined(this.rangeBar)) {\n if (this.type === 'MinRange') {\n this.rangeBar.style.bottom = this.min > this.max ? this.handlePos1 + 'px' : '0px';\n setStyleAttribute(this.rangeBar, {\n 'height': isNullOrUndefined(this.handlePos1) ? 0 : this.min > this.max ? this.element.clientHeight - this.handlePos1 + 'px' : this.handlePos1 + 'px'\n });\n } else {\n this.rangeBar.style.bottom = this.min > this.max ? this.handlePos2 + 'px' : this.handlePos1 + 'px';\n setStyleAttribute(this.rangeBar, {\n 'height': this.min > this.max ? this.handlePos1 - this.handlePos2 + 'px' : this.handlePos2 - this.handlePos1 + 'px'\n });\n }\n }\n };\n Slider.prototype.checkValidValueAndPos = function (value) {\n value = this.checkHandleValue(value);\n value = this.checkHandlePosition(value);\n return value;\n };\n Slider.prototype.setLimitBarPositions = function (fromMinPostion, fromMaxpostion, toMinPostion, toMaxpostion) {\n if (this.orientation === 'Horizontal') {\n if (!this.enableRtl) {\n this.limitBarFirst.style.left = fromMinPostion + 'px';\n this.limitBarFirst.style.width = fromMaxpostion - fromMinPostion + 'px';\n } else {\n this.limitBarFirst.style.right = fromMinPostion + 'px';\n this.limitBarFirst.style.width = fromMaxpostion - fromMinPostion + 'px';\n }\n } else {\n this.limitBarFirst.style.bottom = (this.min < this.max ? fromMinPostion : fromMaxpostion) + 'px';\n this.limitBarFirst.style.height = (this.min < this.max ? fromMaxpostion - fromMinPostion : fromMinPostion - fromMaxpostion) + 'px';\n }\n if (this.type === 'Range') {\n if (this.orientation === 'Horizontal') {\n if (!this.enableRtl) {\n this.limitBarSecond.style.left = toMinPostion + 'px';\n this.limitBarSecond.style.width = toMaxpostion - toMinPostion + 'px';\n } else {\n this.limitBarSecond.style.right = toMinPostion + 'px';\n this.limitBarSecond.style.width = toMaxpostion - toMinPostion + 'px';\n }\n } else {\n this.limitBarSecond.style.bottom = (this.min < this.max ? toMinPostion : toMaxpostion) + 'px';\n this.limitBarSecond.style.height = (this.min < this.max ? toMaxpostion - toMinPostion : toMinPostion - toMaxpostion) + 'px';\n }\n }\n };\n Slider.prototype.setLimitBar = function () {\n if (this.type === 'Default' || this.type === 'MinRange') {\n var fromPosition = this.getLimitValueAndPosition(this.limits.minStart, this.limits.minStart, this.limits.minEnd, true)[0];\n fromPosition = this.checkValidValueAndPos(fromPosition);\n var toPosition = this.getLimitValueAndPosition(this.limits.minEnd, this.limits.minStart, this.limits.minEnd, true)[0];\n toPosition = this.checkValidValueAndPos(toPosition);\n this.setLimitBarPositions(fromPosition, toPosition);\n } else if (this.type === 'Range') {\n var fromMinPostion = this.getLimitValueAndPosition(this.limits.minStart, this.limits.minStart, this.limits.minEnd, true)[0];\n fromMinPostion = this.checkValidValueAndPos(fromMinPostion);\n var fromMaxpostion = this.getLimitValueAndPosition(this.limits.minEnd, this.limits.minStart, this.limits.minEnd, true)[0];\n fromMaxpostion = this.checkValidValueAndPos(fromMaxpostion);\n var toMinPostion = this.getLimitValueAndPosition(this.limits.maxStart, this.limits.maxStart, this.limits.maxEnd, true)[0];\n toMinPostion = this.checkValidValueAndPos(toMinPostion);\n var toMaxpostion = this.getLimitValueAndPosition(this.limits.maxEnd, this.limits.maxStart, this.limits.maxEnd, true)[0];\n toMaxpostion = this.checkValidValueAndPos(toMaxpostion);\n this.setLimitBarPositions(fromMinPostion, fromMaxpostion, toMinPostion, toMaxpostion);\n }\n };\n Slider.prototype.getLimitValueAndPosition = function (currentValue, minValue, maxValue, limitBar) {\n if (isNullOrUndefined(minValue)) {\n minValue = this.min < this.max ? this.min : this.max;\n if (isNullOrUndefined(currentValue) && limitBar) {\n currentValue = minValue;\n }\n }\n if (isNullOrUndefined(maxValue)) {\n maxValue = this.min < this.max ? this.max : this.min;\n if (isNullOrUndefined(currentValue) && limitBar) {\n currentValue = maxValue;\n }\n }\n if (currentValue < minValue) {\n currentValue = minValue;\n }\n if (currentValue > maxValue) {\n currentValue = maxValue;\n }\n return [currentValue, this.checkHandlePosition(currentValue)];\n };\n Slider.prototype.setValue = function () {\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n this.min = 0;\n this.max = this.customValues.length - 1;\n this.setBarColor();\n }\n this.setAriaAttributes(this.firstHandle);\n this.handleVal1 = isNullOrUndefined(this.value) ? this.checkHandleValue(parseFloat(this.min.toString())) : this.checkHandleValue(parseFloat(this.value.toString()));\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n this.preHandlePos1 = this.handlePos1;\n if (isNullOrUndefined(this.activeHandle)) {\n this.activeHandle = this.type === 'Range' ? 2 : 1;\n }\n if (this.type === 'Default' || this.type === 'MinRange') {\n if (this.limits.enabled) {\n var values = this.getLimitValueAndPosition(this.handleVal1, this.limits.minStart, this.limits.minEnd);\n this.handleVal1 = values[0];\n this.handlePos1 = values[1];\n this.preHandlePos1 = this.handlePos1;\n }\n this.setHandlePosition(null);\n this.handleStart();\n this.value = this.handleVal1;\n this.setAriaAttrValue(this.firstHandle);\n this.changeEvent('changed', null);\n } else {\n this.validateRangeValue();\n }\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n if (this.limits.enabled) {\n this.setLimitBar();\n }\n };\n Slider.prototype.rangeValueUpdate = function () {\n if (this.value === null || typeof this.value !== 'object') {\n this.value = [parseFloat(formatUnit(this.min)), parseFloat(formatUnit(this.max))];\n }\n };\n Slider.prototype.validateRangeValue = function () {\n this.rangeValueUpdate();\n this.setRangeValue();\n };\n Slider.prototype.modifyZindex = function () {\n if (this.type === 'Range' && !isNullOrUndefined(this.firstHandle) && !isNullOrUndefined(this.secondHandle)) {\n if (this.activeHandle === 1) {\n this.firstHandle.style.zIndex = this.zIndex + 4 + '';\n this.secondHandle.style.zIndex = this.zIndex + 3 + '';\n } else {\n this.firstHandle.style.zIndex = this.zIndex + 3 + '';\n this.secondHandle.style.zIndex = this.zIndex + 4 + '';\n }\n } else if (this.isMaterialTooltip && this.tooltipElement) {\n this.tooltipElement.style.zIndex = getZindexPartial(this.element) + '';\n }\n };\n Slider.prototype.setHandlePosition = function (event) {\n var _this = this;\n var handle;\n var pos = this.activeHandle === 1 ? this.handlePos1 : this.handlePos2;\n if (this.isMaterialTooltip) {\n handle = [this.firstHandle, this.materialHandle];\n } else {\n handle = [this.getHandle()];\n }\n this.handleStart();\n handle.forEach(function (handle) {\n if (isNullOrUndefined(handle)) {\n return;\n }\n if (_this.orientation === 'Horizontal') {\n if (_this.enableRtl) {\n handle.style.right = pos + \"px\";\n } else {\n handle.style.left = pos + \"px\";\n }\n } else {\n handle.style.bottom = pos + \"px\";\n }\n });\n this.changeEvent('change', event);\n };\n Slider.prototype.getHandle = function () {\n return this.activeHandle === 1 ? this.firstHandle : this.secondHandle;\n };\n Slider.prototype.setRangeValue = function () {\n this.updateRangeValue();\n this.activeHandle = 1;\n this.setHandlePosition(null);\n this.activeHandle = 2;\n this.setHandlePosition(null);\n this.activeHandle = 1;\n };\n Slider.prototype.changeEvent = function (eventName, e) {\n var previous = eventName === 'change' ? this.previousVal : this.previousChanged;\n if (this.type !== 'Range') {\n this.setProperties({\n 'value': this.handleVal1\n }, true);\n if (previous !== this.value && (!this.isMaterialTooltip || !this.initialTooltip)) {\n this.trigger(eventName, this.changeEventArgs(eventName, e));\n this.initialTooltip = true;\n this.setPreviousVal(eventName, this.value);\n }\n this.setAriaAttrValue(this.firstHandle);\n } else {\n var value = this.value = [this.handleVal1, this.handleVal2];\n this.setProperties({\n 'value': value\n }, true);\n if (previous.length === this.value.length && this.value[0] !== previous[0] || this.value[1] !== previous[1]) {\n this.initialTooltip = false;\n this.trigger(eventName, this.changeEventArgs(eventName, e));\n this.initialTooltip = true;\n this.setPreviousVal(eventName, this.value);\n }\n this.setAriaAttrValue(this.getHandle());\n }\n this.hiddenInput.value = this.value.toString();\n };\n Slider.prototype.changeEventArgs = function (eventName, e) {\n var eventArgs;\n if (this.tooltip.isVisible && this.tooltipObj && this.initialTooltip) {\n this.tooltipValue();\n eventArgs = {\n value: this.value,\n previousValue: eventName === 'change' ? this.previousVal : this.previousChanged,\n action: eventName,\n text: typeof this.tooltipObj.content === 'function' ? this.tooltipObj.content() : this.tooltipObj.content,\n isInteracted: isNullOrUndefined(e) ? false : true\n };\n } else {\n eventArgs = {\n value: this.value,\n previousValue: eventName === 'change' ? this.previousVal : this.previousChanged,\n action: eventName,\n text: isNullOrUndefined(this.ticksFormatInfo.format) ? this.value.toString() : this.type !== 'Range' ? this.formatString(this.value, this.ticksFormatInfo).formatString : this.formatString(this.value[0], this.ticksFormatInfo).formatString + ' - ' + this.formatString(this.value[1], this.ticksFormatInfo).formatString,\n isInteracted: isNullOrUndefined(e) ? false : true\n };\n }\n return eventArgs;\n };\n Slider.prototype.setPreviousVal = function (eventName, value) {\n if (eventName === 'change') {\n this.previousVal = value;\n } else {\n this.previousChanged = value;\n }\n };\n Slider.prototype.updateRangeValue = function () {\n var values = this.value.toString().split(',').map(Number);\n if (this.enableRtl && this.orientation !== 'Vertical' || this.rtl) {\n this.value = [values[1], values[0]];\n } else {\n this.value = [values[0], values[1]];\n }\n if (this.enableRtl && this.orientation !== 'Vertical') {\n this.handleVal1 = this.checkHandleValue(this.value[1]);\n this.handleVal2 = this.checkHandleValue(this.value[0]);\n } else {\n this.handleVal1 = this.checkHandleValue(this.value[0]);\n this.handleVal2 = this.checkHandleValue(this.value[1]);\n }\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n if (this.min < this.max && this.handlePos1 > this.handlePos2) {\n this.handlePos1 = this.handlePos2;\n this.handleVal1 = this.handleVal2;\n }\n if (this.min > this.max && this.handlePos1 < this.handlePos2) {\n this.handlePos2 = this.handlePos1;\n this.handleVal2 = this.handleVal1;\n }\n this.preHandlePos1 = this.handlePos1;\n this.preHandlePos2 = this.handlePos2;\n if (this.limits.enabled) {\n this.activeHandle = 1;\n var values_1 = this.getLimitValueAndPosition(this.handleVal1, this.limits.minStart, this.limits.minEnd);\n this.handleVal1 = values_1[0];\n this.handlePos1 = values_1[1];\n this.preHandlePos1 = this.handlePos1;\n this.activeHandle = 2;\n values_1 = this.getLimitValueAndPosition(this.handleVal2, this.limits.maxStart, this.limits.maxEnd);\n this.handleVal2 = values_1[0];\n this.handlePos2 = values_1[1];\n this.preHandlePos2 = this.handlePos2;\n }\n };\n Slider.prototype.checkHandlePosition = function (value) {\n var pos;\n value = 100 * (value - parseFloat(formatUnit(this.min))) / (parseFloat(formatUnit(this.max)) - parseFloat(formatUnit(this.min)));\n if (this.orientation === 'Horizontal') {\n pos = this.element.getBoundingClientRect().width * (value / 100);\n } else {\n pos = this.element.getBoundingClientRect().height * (value / 100);\n }\n if (parseFloat(formatUnit(this.max)) === parseFloat(formatUnit(this.min))) {\n if (this.orientation === 'Horizontal') {\n pos = this.element.getBoundingClientRect().width;\n } else {\n pos = this.element.getBoundingClientRect().height;\n }\n }\n return pos;\n };\n Slider.prototype.checkHandleValue = function (value) {\n if (this.min === this.max) {\n return parseFloat(formatUnit(this.max));\n }\n var handle = this.tempStartEnd();\n if (value < handle.start) {\n value = handle.start;\n } else if (value > handle.end) {\n value = handle.end;\n }\n return value;\n };\n /**\n * It is used to reposition slider.\n *\n * @returns {void}\n */\n Slider.prototype.reposition = function () {\n var _this = this;\n if (!isNullOrUndefined(this.firstHandle)) {\n this.firstHandle.style.transition = 'none';\n }\n if (this.type !== 'Default' && !isNullOrUndefined(this.rangeBar)) {\n this.rangeBar.style.transition = 'none';\n }\n if (this.type === 'Range' && !isNullOrUndefined(this.secondHandle)) {\n this.secondHandle.style.transition = 'none';\n }\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n if (this.handleVal2) {\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n }\n if (this.orientation === 'Horizontal') {\n if (this.enableRtl) {\n this.firstHandle.style.right = this.handlePos1 + \"px\";\n } else {\n this.firstHandle.style.left = this.handlePos1 + \"px\";\n }\n if (this.isMaterialTooltip && !isNullOrUndefined(this.materialHandle)) {\n if (this.enableRtl) {\n this.materialHandle.style.right = this.handlePos1 + \"px\";\n } else {\n this.materialHandle.style.left = this.handlePos1 + \"px\";\n }\n }\n if (this.type === 'MinRange' && !isNullOrUndefined(this.rangeBar)) {\n if (this.enableRtl) {\n this.rangeBar.style.right = '0px';\n } else {\n this.rangeBar.style.left = '0px';\n }\n setStyleAttribute(this.rangeBar, {\n 'width': isNullOrUndefined(this.handlePos1) ? 0 : this.handlePos1 + 'px'\n });\n } else if (this.type === 'Range' && !isNullOrUndefined(this.secondHandle) && !isNullOrUndefined(this.rangeBar)) {\n if (this.enableRtl) {\n this.secondHandle.style.right = this.handlePos2 + \"px\";\n this.rangeBar.style.right = this.handlePos1 + 'px';\n } else {\n this.secondHandle.style.left = this.handlePos2 + \"px\";\n this.rangeBar.style.left = this.handlePos1 + 'px';\n }\n setStyleAttribute(this.rangeBar, {\n 'width': this.handlePos2 - this.handlePos1 + 'px'\n });\n }\n } else {\n this.firstHandle.style.bottom = this.handlePos1 + \"px\";\n if (this.isMaterialTooltip) {\n this.materialHandle.style.bottom = this.handlePos1 + \"px\";\n }\n if (this.type === 'MinRange') {\n this.rangeBar.style.bottom = this.min > this.max ? this.handlePos1 + 'px' : '0px';\n setStyleAttribute(this.rangeBar, {\n 'height': isNullOrUndefined(this.handlePos1) ? 0 : this.min > this.max ? this.element.clientHeight - this.handlePos1 + 'px' : this.handlePos1 + 'px'\n });\n } else if (this.type === 'Range') {\n this.secondHandle.style.bottom = this.handlePos2 + \"px\";\n this.rangeBar.style.bottom = this.min > this.max ? this.handlePos2 + 'px' : this.handlePos1 + 'px';\n setStyleAttribute(this.rangeBar, {\n 'height': this.min > this.max ? this.handlePos1 - this.handlePos2 + 'px' : this.handlePos2 - this.handlePos1 + 'px'\n });\n }\n }\n if (this.limits.enabled) {\n this.setLimitBar();\n }\n if (this.ticks.placement !== 'None' && this.ul) {\n this.removeElement(this.ul);\n this.ul = undefined;\n this.renderScale();\n }\n this.handleStart();\n if (!this.tooltip.isVisible) {\n setTimeout(function () {\n if (!isNullOrUndefined(_this.firstHandle)) {\n _this.firstHandle.style.transition = _this.scaleTransform;\n }\n if (_this.type === 'Range' && !isNullOrUndefined(_this.secondHandle)) {\n _this.secondHandle.style.transition = _this.scaleTransform;\n }\n });\n }\n this.refreshTooltip(this.tooltipTarget);\n this.setBarColor();\n };\n Slider.prototype.changeHandleValue = function (value) {\n var position = null;\n if (this.activeHandle === 1) {\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n this.handleVal1 = this.checkHandleValue(value);\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n if (this.type === 'Range' && (this.handlePos1 > this.handlePos2 && this.min < this.max || this.handlePos1 < this.handlePos2 && this.min > this.max)) {\n this.handlePos1 = this.handlePos2;\n this.handleVal1 = this.handleVal2;\n }\n if (this.handlePos1 !== this.preHandlePos1) {\n position = this.preHandlePos1 = this.handlePos1;\n }\n }\n this.modifyZindex();\n } else {\n if (!(this.limits.enabled && this.limits.endHandleFixed)) {\n this.handleVal2 = this.checkHandleValue(value);\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n if (this.type === 'Range' && (this.handlePos2 < this.handlePos1 && this.min < this.max || this.handlePos2 > this.handlePos1 && this.min > this.max)) {\n this.handlePos2 = this.handlePos1;\n this.handleVal2 = this.handleVal1;\n }\n if (this.handlePos2 !== this.preHandlePos2) {\n position = this.preHandlePos2 = this.handlePos2;\n }\n }\n this.modifyZindex();\n }\n if (position !== null) {\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n this.setHandlePosition(null);\n }\n };\n Slider.prototype.tempStartEnd = function () {\n if (this.min > this.max) {\n return {\n start: this.max,\n end: this.min\n };\n } else {\n return {\n start: this.min,\n end: this.max\n };\n }\n };\n Slider.prototype.xyToPosition = function (position) {\n var pos;\n if (this.min === this.max) {\n return 100;\n }\n if (this.orientation === 'Horizontal') {\n var left = position.x - this.element.getBoundingClientRect().left;\n var num = this.element.offsetWidth / 100;\n this.val = left / num;\n } else {\n var top_1 = position.y - this.element.getBoundingClientRect().top;\n var num = this.element.offsetHeight / 100;\n this.val = 100 - top_1 / num;\n }\n var val = this.stepValueCalculation(this.val);\n if (val < 0) {\n val = 0;\n } else if (val > 100) {\n val = 100;\n }\n if (this.enableRtl && this.orientation !== 'Vertical') {\n val = 100 - val;\n }\n if (this.orientation === 'Horizontal') {\n pos = this.element.getBoundingClientRect().width * (val / 100);\n } else {\n pos = this.element.getBoundingClientRect().height * (val / 100);\n }\n return pos;\n };\n Slider.prototype.stepValueCalculation = function (value) {\n if (this.step === 0) {\n this.step = 1;\n }\n var percentStep = parseFloat(formatUnit(this.step)) / ((parseFloat(formatUnit(this.max)) - parseFloat(formatUnit(this.min))) / 100);\n var remain = value % Math.abs(percentStep);\n if (remain !== 0) {\n if (percentStep / 2 > remain) {\n value -= remain;\n } else {\n value += Math.abs(percentStep) - remain;\n }\n }\n return value;\n };\n Slider.prototype.add = function (a, b, addition) {\n var precision;\n var x = Math.pow(10, precision || 3);\n var val;\n if (addition) {\n val = (Math.round(a * x) + Math.round(b * x)) / x;\n } else {\n val = (Math.round(a * x) - Math.round(b * x)) / x;\n }\n return val;\n };\n Slider.prototype.positionToValue = function (pos) {\n var val;\n var diff = parseFloat(formatUnit(this.max)) - parseFloat(formatUnit(this.min));\n if (this.orientation === 'Horizontal') {\n val = pos / this.element.getBoundingClientRect().width * diff;\n } else {\n val = pos / this.element.getBoundingClientRect().height * diff;\n }\n var total = this.add(val, parseFloat(this.min.toString()), true);\n return total;\n };\n Slider.prototype.sliderBarClick = function (evt) {\n evt.preventDefault();\n var pos;\n if (evt.type === 'mousedown' || evt.type === 'mouseup' || evt.type === 'click') {\n pos = {\n x: evt.clientX,\n y: evt.clientY\n };\n } else if (evt.type === 'touchend' || evt.type === 'touchstart') {\n pos = {\n x: evt.changedTouches[0].clientX,\n y: evt.changedTouches[0].clientY\n };\n }\n var handlepos = this.xyToPosition(pos);\n var handleVal = this.positionToValue(handlepos);\n if (this.type === 'Range' && (this.min < this.max && this.handlePos2 - handlepos < handlepos - this.handlePos1 || this.min > this.max && this.handlePos1 - handlepos > handlepos - this.handlePos2)) {\n this.activeHandle = 2;\n if (!(this.limits.enabled && this.limits.endHandleFixed)) {\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(handleVal, this.limits.maxStart, this.limits.maxEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.secondHandle.classList.add(classNames.sliderActiveHandle);\n this.handlePos2 = this.preHandlePos2 = handlepos;\n this.handleVal2 = handleVal;\n }\n this.modifyZindex();\n this.secondHandle.focus();\n } else {\n this.activeHandle = 1;\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(handleVal, this.limits.minStart, this.limits.minEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.firstHandle.classList.add(classNames.sliderActiveHandle);\n this.handlePos1 = this.preHandlePos1 = handlepos;\n this.handleVal1 = handleVal;\n }\n this.modifyZindex();\n this.firstHandle.focus();\n }\n if (this.isMaterialTooltip) {\n this.tooltipElement.classList.add(classNames.materialTooltipActive);\n }\n var focusedElement = this.element.querySelector('.' + classNames.sliderTabHandle);\n if (focusedElement && this.getHandle() !== focusedElement) {\n focusedElement.classList.remove(classNames.sliderTabHandle);\n }\n var handle = this.activeHandle === 1 ? this.firstHandle : this.secondHandle;\n var behindElement;\n if ((evt.type === 'click' || evt.type === 'mousedown') && evt.target === handle) {\n var eventX = evt.clientX,\n eventY = evt.clientY;\n behindElement = document.elementFromPoint(eventX, eventY);\n }\n if (!this.checkRepeatedValue(handleVal)) {\n return;\n }\n var transition = (this.isMaterial || this.isMaterial3) && this.tooltip.isVisible ? this.transitionOnMaterialTooltip : this.transition;\n this.getHandle().style.transition = transition.handle;\n if (this.type !== 'Default') {\n this.rangeBar.style.transition = transition.rangeBar;\n }\n this.setHandlePosition(evt);\n if (this.isMaterialTooltip) {\n this.initialTooltip = false;\n }\n if (evt.target !== handle) {\n this.changeEvent('changed', evt);\n }\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n };\n Slider.prototype.handleValueAdjust = function (handleValue, assignValue, handleNumber) {\n if (handleNumber === 1) {\n this.handleVal1 = assignValue;\n this.handleVal2 = this.handleVal1 + this.minDiff;\n } else if (handleNumber === 2) {\n this.handleVal2 = assignValue;\n this.handleVal1 = this.handleVal2 - this.minDiff;\n }\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n };\n Slider.prototype.dragRangeBarMove = function (event) {\n var _a, _b;\n if (event.type !== 'touchmove') {\n event.preventDefault();\n }\n this.rangeBarDragged = true;\n var pos;\n this.rangeBar.style.transition = 'none';\n this.firstHandle.style.transition = 'none';\n this.secondHandle.style.transition = 'none';\n var xPostion;\n var yPostion;\n if (event.type === 'mousemove') {\n _a = [event.clientX, event.clientY], xPostion = _a[0], yPostion = _a[1];\n } else {\n _b = [event.changedTouches[0].clientX, event.changedTouches[0].clientY], xPostion = _b[0], yPostion = _b[1];\n }\n if (!(this.limits.enabled && this.limits.startHandleFixed) && !(this.limits.enabled && this.limits.endHandleFixed)) {\n if (!this.enableRtl) {\n pos = {\n x: xPostion - this.firstPartRemain,\n y: yPostion + this.secondPartRemain\n };\n } else {\n pos = {\n x: xPostion + this.secondPartRemain,\n y: yPostion + this.secondPartRemain\n };\n }\n if (this.min > this.max) {\n this.handlePos2 = this.xyToPosition(pos);\n this.handleVal2 = this.positionToValue(this.handlePos2);\n } else {\n this.handlePos1 = this.xyToPosition(pos);\n this.handleVal1 = this.positionToValue(this.handlePos1);\n }\n if (!this.enableRtl) {\n pos = {\n x: xPostion + this.secondPartRemain,\n y: yPostion - this.firstPartRemain\n };\n } else {\n pos = {\n x: xPostion - this.firstPartRemain,\n y: yPostion - this.firstPartRemain\n };\n }\n if (this.min > this.max) {\n this.handlePos1 = this.xyToPosition(pos);\n this.handleVal1 = this.positionToValue(this.handlePos1);\n } else {\n this.handlePos2 = this.xyToPosition(pos);\n this.handleVal2 = this.positionToValue(this.handlePos2);\n }\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(this.handleVal1, this.limits.minStart, this.limits.minEnd);\n this.handleVal1 = value[0];\n this.handlePos1 = value[1];\n if (this.handleVal1 === this.limits.minEnd) {\n this.handleValueAdjust(this.handleVal1, this.limits.minEnd, 1);\n }\n if (this.handleVal1 === this.limits.minStart) {\n this.handleValueAdjust(this.handleVal1, this.limits.minStart, 1);\n }\n value = this.getLimitValueAndPosition(this.handleVal2, this.limits.maxStart, this.limits.maxEnd);\n this.handleVal2 = value[0];\n this.handlePos2 = value[1];\n if (this.handleVal2 === this.limits.maxStart) {\n this.handleValueAdjust(this.handleVal2, this.limits.maxStart, 2);\n }\n if (this.handleVal2 === this.limits.maxEnd) {\n this.handleValueAdjust(this.handleVal2, this.limits.maxEnd, 2);\n }\n }\n if (this.handleVal2 === (this.min > this.max ? this.min : this.max)) {\n this.handleValueAdjust(this.handleVal2, this.min > this.max ? this.min : this.max, 2);\n }\n if (this.handleVal1 === (this.min > this.max ? this.max : this.min)) {\n this.handleValueAdjust(this.handleVal1, this.min > this.max ? this.max : this.min, 1);\n }\n }\n this.activeHandle = 1;\n this.setHandlePosition(event);\n this.activeHandle = 2;\n this.setHandlePosition(event);\n this.tooltipToggle(this.rangeBar);\n this.setRangeBar();\n };\n Slider.prototype.sliderBarUp = function (event) {\n this.changeEvent('changed', event);\n this.handleFocusOut();\n this.firstHandle.classList.remove(classNames.sliderActiveHandle);\n if (this.type === 'Range') {\n this.initialTooltip = false;\n this.secondHandle.classList.remove(classNames.sliderActiveHandle);\n }\n this.closeTooltip();\n if (this.isMaterial || this.isMaterial3) {\n this.getHandle().classList.remove('e-large-thumb-size');\n if (this.isMaterialTooltip) {\n this.tooltipElement.classList.remove(classNames.materialTooltipActive);\n }\n }\n EventHandler.remove(document, 'mousemove touchmove', this.sliderBarMove);\n EventHandler.remove(document, 'mouseup touchend', this.sliderBarUp);\n };\n Slider.prototype.sliderBarMove = function (evt) {\n if (evt.type !== 'touchmove') {\n evt.preventDefault();\n }\n var pos;\n if (evt.type === 'mousemove') {\n pos = {\n x: evt.clientX,\n y: evt.clientY\n };\n } else {\n pos = {\n x: evt.changedTouches[0].clientX,\n y: evt.changedTouches[0].clientY\n };\n }\n var handlepos = this.xyToPosition(pos);\n var handleVal = this.positionToValue(handlepos);\n handlepos = Math.round(handlepos);\n if (this.type !== 'Range' && this.activeHandle === 1) {\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n if (this.limits.enabled) {\n var valueAndPostion = this.getLimitValueAndPosition(handleVal, this.limits.minStart, this.limits.minEnd);\n handlepos = valueAndPostion[1];\n handleVal = valueAndPostion[0];\n }\n this.handlePos1 = handlepos;\n this.handleVal1 = handleVal;\n }\n this.firstHandle.classList.add(classNames.sliderActiveHandle);\n }\n if (this.type === 'Range') {\n if (this.activeHandle === 1) {\n this.firstHandle.classList.add(classNames.sliderActiveHandle);\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n if (this.min < this.max && handlepos > this.handlePos2 || this.min > this.max && handlepos < this.handlePos2) {\n handlepos = this.handlePos2;\n handleVal = this.handleVal2;\n }\n if (handlepos !== this.preHandlePos1) {\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(handleVal, this.limits.minStart, this.limits.minEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.handlePos1 = this.preHandlePos1 = handlepos;\n this.handleVal1 = handleVal;\n this.activeHandle = 1;\n }\n }\n } else if (this.activeHandle === 2) {\n this.secondHandle.classList.add(classNames.sliderActiveHandle);\n if (!(this.limits.enabled && this.limits.endHandleFixed)) {\n if (this.min < this.max && handlepos < this.handlePos1 || this.min > this.max && handlepos > this.handlePos1) {\n handlepos = this.handlePos1;\n handleVal = this.handleVal1;\n }\n if (handlepos !== this.preHandlePos2) {\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(handleVal, this.limits.maxStart, this.limits.maxEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.handlePos2 = this.preHandlePos2 = handlepos;\n this.handleVal2 = handleVal;\n this.activeHandle = 2;\n }\n }\n }\n }\n if (!this.checkRepeatedValue(handleVal)) {\n return;\n }\n this.getHandle().style.transition = this.scaleTransform;\n if (this.type !== 'Default') {\n this.rangeBar.style.transition = 'none';\n }\n this.setHandlePosition(evt);\n if ((this.isMaterial || this.isMaterial3) && !this.tooltip.isVisible && !this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.materialChange();\n }\n this.tooltipToggle(this.getHandle());\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n };\n Slider.prototype.dragRangeBarUp = function (event) {\n if (!this.rangeBarDragged) {\n this.focusSliderElement();\n this.sliderBarClick(event);\n } else {\n this.isDragComplete = true;\n }\n this.changeEvent('changed', event);\n this.closeTooltip();\n EventHandler.remove(document, 'mousemove touchmove', this.dragRangeBarMove);\n EventHandler.remove(document, 'mouseup touchend', this.dragRangeBarUp);\n this.rangeBarDragged = false;\n };\n Slider.prototype.checkRepeatedValue = function (currentValue) {\n if (this.type === 'Range') {\n var previousVal = this.enableRtl && this.orientation !== 'Vertical' ? this.activeHandle === 1 ? this.previousVal[1] : this.previousVal[0] : this.activeHandle === 1 ? this.previousVal[0] : this.previousVal[1];\n if (currentValue === previousVal) {\n return 0;\n }\n } else {\n if (currentValue === this.previousVal) {\n return 0;\n }\n }\n return 1;\n };\n Slider.prototype.refreshTooltip = function (target) {\n if (this.tooltip.isVisible && this.tooltipObj) {\n this.tooltipValue();\n if (target) {\n this.tooltipObj.refresh(target);\n this.tooltipTarget = target;\n }\n }\n };\n Slider.prototype.openTooltip = function (target) {\n if (this.tooltip.isVisible && this.tooltipObj && !this.isMaterialTooltip) {\n this.tooltipValue();\n this.tooltipObj.open(target);\n this.tooltipTarget = target;\n }\n };\n Slider.prototype.closeTooltip = function () {\n if (this.tooltip.isVisible && this.tooltipObj && this.tooltip.showOn !== 'Always' && !this.isMaterialTooltip) {\n this.tooltipValue();\n this.tooltipObj.close();\n this.tooltipTarget = undefined;\n }\n };\n Slider.prototype.keyDown = function (event) {\n switch (event.keyCode) {\n case 37:\n case 38:\n case 39:\n case 40:\n case 33:\n case 34:\n case 36:\n case 35:\n event.preventDefault();\n this.buttonClick(event);\n break;\n }\n };\n Slider.prototype.wireButtonEvt = function (destroy) {\n if (!destroy) {\n EventHandler.add(this.firstBtn, 'mouseleave touchleave', this.buttonFocusOut, this);\n EventHandler.add(this.secondBtn, 'mouseleave touchleave', this.buttonFocusOut, this);\n EventHandler.add(this.firstBtn, 'mousedown touchstart', this.repeatHandlerMouse, this);\n EventHandler.add(this.firstBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp, this);\n EventHandler.add(this.secondBtn, 'mousedown touchstart', this.repeatHandlerMouse, this);\n EventHandler.add(this.secondBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp, this);\n EventHandler.add(this.firstBtn, 'focusout', this.sliderFocusOut, this);\n EventHandler.add(this.secondBtn, 'focusout', this.sliderFocusOut, this);\n } else {\n EventHandler.remove(this.firstBtn, 'mouseleave touchleave', this.buttonFocusOut);\n EventHandler.remove(this.secondBtn, 'mouseleave touchleave', this.buttonFocusOut);\n EventHandler.remove(this.firstBtn, 'mousedown touchstart', this.repeatHandlerMouse);\n EventHandler.remove(this.firstBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp);\n EventHandler.remove(this.secondBtn, 'mousedown touchstart', this.repeatHandlerMouse);\n EventHandler.remove(this.secondBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp);\n EventHandler.remove(this.firstBtn, 'focusout', this.sliderFocusOut);\n EventHandler.remove(this.secondBtn, 'focusout', this.sliderFocusOut);\n }\n };\n Slider.prototype.rangeBarMousedown = function (event) {\n var _a, _b;\n event.preventDefault();\n this.focusSliderElement();\n if (this.type === 'Range' && this.drag && event.target === this.rangeBar) {\n var xPostion = void 0;\n var yPostion = void 0;\n if (event.type === 'mousedown') {\n _a = [event.clientX, event.clientY], xPostion = _a[0], yPostion = _a[1];\n } else if (event.type === 'touchstart') {\n _b = [event.changedTouches[0].clientX, event.changedTouches[0].clientY], xPostion = _b[0], yPostion = _b[1];\n }\n if (this.orientation === 'Horizontal') {\n this.firstPartRemain = xPostion - this.rangeBar.getBoundingClientRect().left;\n this.secondPartRemain = this.rangeBar.getBoundingClientRect().right - xPostion;\n } else {\n this.firstPartRemain = yPostion - this.rangeBar.getBoundingClientRect().top;\n this.secondPartRemain = this.rangeBar.getBoundingClientRect().bottom - yPostion;\n }\n this.minDiff = this.handleVal2 - this.handleVal1;\n this.tooltipToggle(this.rangeBar);\n var focusedElement = this.element.querySelector('.' + classNames.sliderTabHandle);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.sliderTabHandle);\n }\n EventHandler.add(document, 'mousemove touchmove', this.dragRangeBarMove, this);\n EventHandler.add(document, 'mouseup touchend', this.dragRangeBarUp, this);\n }\n };\n Slider.prototype.elementClick = function (event) {\n if (this.isDragComplete) {\n this.isDragComplete = false;\n return;\n }\n event.preventDefault();\n this.focusSliderElement();\n this.sliderBarClick(event);\n this.focusHandle();\n };\n Slider.prototype.wireEvents = function () {\n this.onresize = this.reposition.bind(this);\n window.addEventListener('resize', this.onresize);\n if (this.enabled && !this.readonly) {\n EventHandler.add(this.element, 'click', this.elementClick, this);\n if (this.type === 'Range' && this.drag) {\n EventHandler.add(this.rangeBar, 'mousedown touchstart', this.rangeBarMousedown, this);\n }\n EventHandler.add(this.sliderContainer, 'keydown', this.keyDown, this);\n EventHandler.add(this.sliderContainer, 'keyup', this.keyUp, this);\n EventHandler.add(this.element, 'focusout', this.sliderFocusOut, this);\n EventHandler.add(this.sliderContainer, 'mouseover mouseout touchstart touchend', this.hover, this);\n this.wireFirstHandleEvt(false);\n if (this.type === 'Range') {\n this.wireSecondHandleEvt(false);\n }\n if (this.showButtons) {\n this.wireButtonEvt(false);\n }\n this.wireMaterialTooltipEvent(false);\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n }\n };\n Slider.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.elementClick);\n if (this.type === 'Range' && this.drag) {\n EventHandler.remove(this.rangeBar, 'mousedown touchstart', this.rangeBarMousedown);\n }\n EventHandler.remove(this.sliderContainer, 'keydown', this.keyDown);\n EventHandler.remove(this.sliderContainer, 'keyup', this.keyUp);\n EventHandler.remove(this.element, 'focusout', this.sliderFocusOut);\n EventHandler.remove(this.sliderContainer, 'mouseover mouseout touchstart touchend', this.hover);\n this.wireFirstHandleEvt(true);\n if (this.type === 'Range') {\n this.wireSecondHandleEvt(true);\n }\n if (this.showButtons) {\n this.wireButtonEvt(true);\n }\n this.wireMaterialTooltipEvent(true);\n EventHandler.remove(this.element, 'reset', this.formResetHandler);\n };\n Slider.prototype.formResetHandler = function () {\n this.setProperties({\n 'value': this.formResetValue\n }, true);\n this.setValue();\n };\n Slider.prototype.keyUp = function (event) {\n if (event.keyCode === 9 && event.target.classList.contains(classNames.sliderHandle)) {\n this.focusSliderElement();\n if (!event.target.classList.contains(classNames.sliderTabHandle)) {\n if (this.element.querySelector('.' + classNames.sliderTabHandle)) {\n this.element.querySelector('.' + classNames.sliderTabHandle).classList.remove(classNames.sliderTabHandle);\n }\n event.target.classList.add(classNames.sliderTabHandle);\n var parentElement = event.target.parentElement;\n if (parentElement === this.element) {\n parentElement.querySelector('.' + classNames.sliderTrack).classList.add(classNames.sliderTabTrack);\n if (this.type === 'Range' || this.type === 'MinRange') {\n parentElement.querySelector('.' + classNames.rangeBar).classList.add(classNames.sliderTabRange);\n }\n }\n if (this.type === 'Range') {\n var previousSibling = event.target.previousSibling;\n if (previousSibling && previousSibling.classList.contains(classNames.sliderHandle)) {\n this.activeHandle = 2;\n } else {\n this.activeHandle = 1;\n }\n }\n this.getHandle().focus();\n this.tooltipToggle(this.getHandle());\n }\n }\n this.closeTooltip();\n this.changeEvent('changed', event);\n };\n Slider.prototype.hover = function (event) {\n if (!isNullOrUndefined(event)) {\n if (event.type === 'mouseover' || event.type === 'touchmove' || event.type === 'mousemove' || event.type === 'pointermove' || event.type === 'touchstart') {\n this.sliderContainer.classList.add(classNames.sliderHover);\n } else {\n this.sliderContainer.classList.remove(classNames.sliderHover);\n var curTarget = event.currentTarget;\n if (this.tooltip.isVisible && this.tooltip.showOn !== 'Always' && this.tooltipObj && this.isMaterialTooltip && !curTarget.classList.contains(classNames.sliderHandleFocused) && !curTarget.classList.contains(classNames.sliderTabHandle)) {\n this.closeMaterialTooltip();\n }\n }\n }\n };\n Slider.prototype.sliderFocusOut = function (event) {\n if (event.relatedTarget !== this.secondHandle && event.relatedTarget !== this.firstHandle && event.relatedTarget !== this.element && event.relatedTarget !== this.firstBtn && event.relatedTarget !== this.secondBtn) {\n this.closeMaterialTooltip();\n this.closeTooltip();\n if (this.element.querySelector('.' + classNames.sliderTabHandle)) {\n this.element.querySelector('.' + classNames.sliderTabHandle).classList.remove(classNames.sliderTabHandle);\n }\n if (this.element.querySelector('.' + classNames.sliderTabTrack)) {\n this.element.querySelector('.' + classNames.sliderTabTrack).classList.remove(classNames.sliderTabTrack);\n if ((this.type === 'Range' || this.type === 'MinRange') && this.element.querySelector('.' + classNames.sliderTabRange)) {\n this.element.querySelector('.' + classNames.sliderTabRange).classList.remove(classNames.sliderTabRange);\n }\n }\n this.hiddenInput.focus();\n this.hiddenInput.blur();\n this.isElementFocused = false;\n }\n };\n Slider.prototype.removeElement = function (element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n };\n Slider.prototype.changeSliderType = function (type, args) {\n if (this.isMaterialTooltip && this.materialHandle) {\n this.sliderContainer.classList.remove(classNames.materialSlider);\n this.removeElement(this.materialHandle);\n this.materialHandle = undefined;\n }\n this.removeElement(this.firstHandle);\n this.firstHandle = undefined;\n if (type !== 'Default') {\n if (type === 'Range') {\n this.removeElement(this.secondHandle);\n this.secondHandle = undefined;\n }\n this.removeElement(this.rangeBar);\n this.rangeBar = undefined;\n }\n if (this.tooltip.isVisible && !isNullOrUndefined(this.tooltipObj)) {\n this.tooltipObj.destroy();\n this.tooltipElement = undefined;\n this.tooltipCollidedPosition = undefined;\n }\n if (this.limits.enabled) {\n if (type === 'MinRange' || type === 'Default') {\n if (!isNullOrUndefined(this.limitBarFirst)) {\n this.removeElement(this.limitBarFirst);\n this.limitBarFirst = undefined;\n }\n } else {\n if (!isNullOrUndefined(this.limitBarSecond)) {\n this.removeElement(this.limitBarSecond);\n this.limitBarSecond = undefined;\n }\n }\n }\n this.activeHandle = 1;\n this.getThemeInitialization();\n if (this.type === 'Range') {\n this.rangeValueUpdate();\n }\n this.createRangeBar();\n if (this.limits.enabled) {\n this.createLimitBar();\n }\n this.setHandler();\n this.setOrientClass();\n this.wireFirstHandleEvt(!this.enabled);\n if (this.type === 'Range') {\n this.wireSecondHandleEvt(!this.enabled);\n }\n this.setValue();\n if (this.tooltip.isVisible) {\n this.renderTooltip();\n this.wireMaterialTooltipEvent(false);\n }\n this.setBarColor();\n if (args !== 'tooltip') {\n this.updateConfig();\n }\n if (this.readonly) {\n this.sliderContainer.classList.remove(classNames.readonly);\n this.setReadOnly();\n }\n };\n Slider.prototype.changeRtl = function () {\n if (!this.enableRtl && this.type === 'Range') {\n this.value = [this.handleVal2, this.handleVal1];\n }\n this.updateConfig();\n if (this.tooltip.isVisible) {\n this.tooltipObj.refresh(this.firstHandle);\n }\n if (this.showButtons) {\n var enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n attributes(enabledRTL ? this.secondBtn : this.firstBtn, {\n 'aria-label': 'Decrease',\n title: 'Decrease'\n });\n attributes(enabledRTL ? this.firstBtn : this.secondBtn, {\n 'aria-label': 'Increase',\n title: 'Increase'\n });\n }\n };\n Slider.prototype.changeOrientation = function () {\n this.changeSliderType(this.type, 'null');\n };\n Slider.prototype.updateConfig = function () {\n this.setEnableRTL();\n this.setValue();\n if (this.tooltip.isVisible) {\n this.refreshTooltip(this.tooltipTarget);\n }\n if (this.ticks.placement !== 'None') {\n if (this.ul) {\n this.removeElement(this.ul);\n this.ul = undefined;\n this.renderScale();\n }\n }\n this.limitsPropertyChange();\n };\n Slider.prototype.limitsPropertyChange = function () {\n if (this.limits.enabled) {\n if (isNullOrUndefined(this.limitBarFirst) && this.type !== 'Range') {\n this.createLimitBar();\n }\n if (isNullOrUndefined(this.limitBarFirst) && isNullOrUndefined(this.limitBarSecond) && this.type === 'Range') {\n this.createLimitBar();\n }\n this.setLimitBar();\n this.setValue();\n } else {\n if (!isNullOrUndefined(this.limitBarFirst)) {\n detach(this.limitBarFirst);\n }\n if (!isNullOrUndefined(this.limitBarSecond)) {\n detach(this.limitBarSecond);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns the string\n * @private\n */\n Slider.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n Slider.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.unwireEvents();\n window.removeEventListener('resize', this.onresize);\n removeClass([this.sliderContainer], [classNames.sliderDisabled]);\n this.firstHandle.removeAttribute('aria-orientation');\n if (this.type === 'Range') {\n this.secondHandle.removeAttribute('aria-orientation');\n }\n if (this.sliderContainer.parentNode) {\n this.sliderContainer.parentNode.insertBefore(this.element, this.sliderContainer);\n }\n detach(this.sliderContainer);\n if (this.tooltip.isVisible) {\n this.tooltipObj.destroy();\n }\n this.element.innerHTML = '';\n this.hiddenInput = null;\n this.sliderContainer = null;\n this.sliderTrack = null;\n this.rangeBar = null;\n this.firstHandle = null;\n this.secondHandle = null;\n this.tickElementCollection = null;\n this.ul = null;\n this.firstBtn = null;\n this.secondBtn = null;\n this.materialHandle = null;\n this.tooltipObj = null;\n this.tooltipTarget = null;\n this.limitBarFirst = null;\n this.limitBarSecond = null;\n this.firstChild = null;\n this.lastChild = null;\n this.tooltipElement = null;\n };\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {SliderModel} newProp - Specifies the new properties\n * @param {SliderModel} oldProp - Specifies the old properties\n * @returns {void}\n * @private\n */\n Slider.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'value':\n if (newProp && oldProp) {\n var value = isNullOrUndefined(newProp.value) ? this.type === 'Range' ? [this.min, this.max] : this.min : newProp.value;\n this.setProperties({\n 'value': value\n }, true);\n if (!isNullOrUndefined(oldProp.value) && oldProp.value.toString() !== value.toString()) {\n this.setValue();\n this.refreshTooltip(this.tooltipTarget);\n if (this.type === 'Range') {\n if (isNullOrUndefined(newProp.value) || oldProp.value[1] === value[1]) {\n this.activeHandle = 1;\n } else {\n this.activeHandle = 2;\n }\n }\n }\n }\n break;\n case 'min':\n case 'step':\n case 'max':\n this.setMinMaxValue();\n break;\n case 'tooltip':\n if (!isNullOrUndefined(newProp.tooltip) && !isNullOrUndefined(oldProp.tooltip)) {\n this.initialTooltip = true;\n this.setTooltip(prop);\n if (!this.showButtons) {\n this.wireEvents();\n }\n }\n break;\n case 'type':\n if (!isNullOrUndefined(oldProp) && Object.keys(oldProp).length && !isNullOrUndefined(oldProp.type)) {\n this.changeSliderType(oldProp.type, prop);\n this.setZindex();\n }\n break;\n case 'enableRtl':\n if (oldProp.enableRtl !== newProp.enableRtl && this.orientation !== 'Vertical') {\n this.rtl = oldProp.enableRtl;\n this.changeRtl();\n }\n break;\n case 'limits':\n this.limitsPropertyChange();\n break;\n case 'orientation':\n this.changeOrientation();\n break;\n case 'ticks':\n if (!isNullOrUndefined(this.sliderContainer.querySelector('.' + classNames.scale))) {\n detach(this.ul);\n Array.prototype.forEach.call(this.sliderContainer.classList, function (className) {\n if (className.match(/e-scale-/)) {\n _this.sliderContainer.classList.remove(className);\n }\n });\n }\n if (this.ticks.placement !== 'None') {\n this.renderScale();\n this.setZindex();\n }\n break;\n case 'locale':\n if (this.showButtons) {\n this.buttonTitle();\n }\n break;\n case 'showButtons':\n if (newProp.showButtons) {\n this.setButtons();\n this.reposition();\n if (this.enabled && !this.readonly) {\n this.wireButtonEvt(false);\n }\n } else {\n if (this.firstBtn && this.secondBtn) {\n this.sliderContainer.removeChild(this.firstBtn);\n this.sliderContainer.removeChild(this.secondBtn);\n this.sliderContainer.classList.remove(classNames.sliderButtonClass);\n this.firstBtn = undefined;\n this.secondBtn = undefined;\n this.reposition();\n }\n }\n break;\n case 'enabled':\n this.setEnabled();\n break;\n case 'readonly':\n this.setReadOnly();\n break;\n case 'customValues':\n this.setValue();\n this.reposition();\n break;\n case 'colorRange':\n this.reposition();\n break;\n case 'width':\n this.setElementWidth(newProp.width);\n this.setMinMaxValue();\n if (this.limits) {\n this.limitsPropertyChange();\n }\n break;\n }\n }\n };\n Slider.prototype.setReadOnly = function () {\n if (this.readonly) {\n this.unwireEvents();\n this.sliderContainer.classList.add(classNames.readonly);\n } else {\n this.wireEvents();\n this.sliderContainer.classList.remove(classNames.readonly);\n }\n };\n Slider.prototype.setMinMaxValue = function () {\n var _this = this;\n this.setValue();\n this.refreshTooltip(this.tooltipTarget);\n if (!isNullOrUndefined(this.sliderContainer.querySelector('.' + classNames.scale))) {\n if (this.ul) {\n detach(this.ul);\n Array.prototype.forEach.call(this.sliderContainer.classList, function (className) {\n if (className.match(/e-scale-/)) {\n _this.sliderContainer.classList.remove(className);\n }\n });\n }\n }\n if (this.ticks.placement !== 'None') {\n this.renderScale();\n this.setZindex();\n }\n };\n Slider.prototype.setZindex = function () {\n this.zIndex = 6;\n if (!isNullOrUndefined(this.ticks) && this.ticks.placement !== 'None' && !isNullOrUndefined(this.ul) && !isNullOrUndefined(this.element)) {\n this.ul.style.zIndex = this.zIndex + -7 + '';\n this.element.style.zIndex = this.zIndex + 2 + '';\n }\n if (!this.isMaterial && !this.isMaterial3 && !isNullOrUndefined(this.ticks) && this.ticks.placement === 'Both') {\n this.element.style.zIndex = this.zIndex + 2 + '';\n }\n if (!isNullOrUndefined(this.firstHandle)) {\n this.firstHandle.style.zIndex = this.zIndex + 3 + '';\n }\n if (this.type === 'Range' && !isNullOrUndefined(this.secondHandle)) {\n this.secondHandle.style.zIndex = this.zIndex + 4 + '';\n }\n };\n Slider.prototype.setTooltip = function (args) {\n this.changeSliderType(this.type, args);\n };\n Slider.prototype.setBarColor = function () {\n var trackPosition;\n var trackClassName;\n var child = this.sliderTrack.lastElementChild;\n while (child) {\n this.sliderTrack.removeChild(child);\n child = this.sliderTrack.lastElementChild;\n }\n for (var i = 0; i < this.colorRange.length; i++) {\n if (!isNullOrUndefined(this.colorRange[i].start) && !isNullOrUndefined(this.colorRange[i].end)) {\n if (this.colorRange[i].end > this.colorRange[i].start) {\n if (this.colorRange[i].start < this.min) {\n this.colorRange[i].start = this.min;\n }\n if (this.colorRange[i].end > this.max) {\n this.colorRange[i].end = this.max;\n }\n var startingPosition = this.checkHandlePosition(this.colorRange[i].start);\n var endPosition = this.checkHandlePosition(this.colorRange[i].end);\n var trackContainer = this.createElement('div');\n trackContainer.style.backgroundColor = this.colorRange[i].color;\n trackContainer.style.border = '1px solid ' + this.colorRange[i].color;\n if (this.orientation === 'Horizontal') {\n trackClassName = classNames.sliderHorizantalColor;\n if (this.enableRtl) {\n if (isNullOrUndefined(this.customValues)) {\n trackPosition = this.checkHandlePosition(this.max) - this.checkHandlePosition(this.colorRange[i].end);\n } else {\n trackPosition = this.checkHandlePosition(this.customValues.length - this.colorRange[i].end - 1);\n }\n } else {\n trackPosition = this.checkHandlePosition(this.colorRange[i].start);\n }\n trackContainer.style.width = endPosition - startingPosition + 'px';\n trackContainer.style.left = trackPosition + 'px';\n } else {\n trackClassName = classNames.sliderVerticalColor;\n trackPosition = this.checkHandlePosition(this.colorRange[i].start);\n trackContainer.style.height = endPosition - startingPosition + 'px';\n trackContainer.style.bottom = trackPosition + 'px';\n }\n trackContainer.classList.add(trackClassName);\n this.sliderTrack.appendChild(trackContainer);\n }\n }\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} - Returns the string\n * @private\n */\n Slider.prototype.getModuleName = function () {\n return 'slider';\n };\n __decorate([Property(null)], Slider.prototype, \"value\", void 0);\n __decorate([Property(null)], Slider.prototype, \"customValues\", void 0);\n __decorate([Property(1)], Slider.prototype, \"step\", void 0);\n __decorate([Property(null)], Slider.prototype, \"width\", void 0);\n __decorate([Property(0)], Slider.prototype, \"min\", void 0);\n __decorate([Property(100)], Slider.prototype, \"max\", void 0);\n __decorate([Property(false)], Slider.prototype, \"readonly\", void 0);\n __decorate([Property('Default')], Slider.prototype, \"type\", void 0);\n __decorate([Collection([{}], ColorRangeData)], Slider.prototype, \"colorRange\", void 0);\n __decorate([Complex({}, TicksData)], Slider.prototype, \"ticks\", void 0);\n __decorate([Complex({}, LimitData)], Slider.prototype, \"limits\", void 0);\n __decorate([Property(true)], Slider.prototype, \"enabled\", void 0);\n __decorate([Complex({}, TooltipData)], Slider.prototype, \"tooltip\", void 0);\n __decorate([Property(false)], Slider.prototype, \"showButtons\", void 0);\n __decorate([Property(true)], Slider.prototype, \"enableAnimation\", void 0);\n __decorate([Property('Horizontal')], Slider.prototype, \"orientation\", void 0);\n __decorate([Property('')], Slider.prototype, \"cssClass\", void 0);\n __decorate([Property(true)], Slider.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([Event()], Slider.prototype, \"created\", void 0);\n __decorate([Event()], Slider.prototype, \"change\", void 0);\n __decorate([Event()], Slider.prototype, \"changed\", void 0);\n __decorate([Event()], Slider.prototype, \"renderingTicks\", void 0);\n __decorate([Event()], Slider.prototype, \"renderedTicks\", void 0);\n __decorate([Event()], Slider.prototype, \"tooltipChange\", void 0);\n Slider = __decorate([NotifyPropertyChanges], Slider);\n return Slider;\n}(Component);\nexport { Slider };","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 @typescript-eslint/no-explicit-any */\nimport { Component, Property, Event, EventHandler, L10n, compile, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, detach, append, Animation } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, KeyboardEvents, setValue, getValue, ChildProperty } from '@syncfusion/ej2-base';\nimport { Collection, Complex, Browser, Ajax, getUniqueID, closest, remove } from '@syncfusion/ej2-base';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { select, selectAll } from '@syncfusion/ej2-base';\nvar CONTROL_WRAPPER = 'e-upload e-control-wrapper';\nvar INPUT_WRAPPER = 'e-file-select';\nvar DROP_AREA = 'e-file-drop';\nvar DROP_WRAPPER = 'e-file-select-wrap';\nvar LIST_PARENT = 'e-upload-files';\nvar FILE = 'e-upload-file-list';\nvar STATUS = 'e-file-status';\nvar ACTION_BUTTONS = 'e-upload-actions';\nvar UPLOAD_BUTTONS = 'e-file-upload-btn e-css e-btn e-flat e-primary';\nvar CLEAR_BUTTONS = 'e-file-clear-btn e-css e-btn e-flat';\nvar FILE_NAME = 'e-file-name';\nvar FILE_TYPE = 'e-file-type';\nvar FILE_SIZE = 'e-file-size';\nvar REMOVE_ICON = 'e-file-remove-btn';\nvar DELETE_ICON = 'e-file-delete-btn';\nvar SPINNER_PANE = 'e-spinner-pane';\nvar ABORT_ICON = 'e-file-abort-btn';\nvar RETRY_ICON = 'e-file-reload-btn';\nvar DRAG_HOVER = 'e-upload-drag-hover';\nvar PROGRESS_WRAPPER = 'e-upload-progress-wrap';\nvar PROGRESSBAR = 'e-upload-progress-bar';\nvar PROGRESSBAR_TEXT = 'e-progress-bar-text';\nvar UPLOAD_INPROGRESS = 'e-upload-progress';\nvar UPLOAD_SUCCESS = 'e-upload-success';\nvar UPLOAD_FAILED = 'e-upload-fails';\nvar TEXT_CONTAINER = 'e-file-container';\nvar VALIDATION_FAILS = 'e-validation-fails';\nvar RTL = 'e-rtl';\nvar DISABLED = 'e-disabled';\nvar RTL_CONTAINER = 'e-rtl-container';\nvar ICON_FOCUSED = 'e-clear-icon-focus';\nvar PROGRESS_INNER_WRAPPER = 'e-progress-inner-wrap';\nvar PAUSE_UPLOAD = 'e-file-pause-btn';\nvar RESUME_UPLOAD = 'e-file-play-btn';\nvar RESTRICT_RETRY = 'e-restrict-retry';\nvar wrapperAttr = ['title', 'style', 'class'];\nvar FORM_UPLOAD = 'e-form-upload';\nvar HIDDEN_INPUT = 'e-hidden-file-input';\nvar INVALID_FILE = 'e-file-invalid';\nvar INFORMATION = 'e-file-information';\nvar FilesProp = /** @class */function (_super) {\n __extends(FilesProp, _super);\n function FilesProp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('')], FilesProp.prototype, \"name\", void 0);\n __decorate([Property(null)], FilesProp.prototype, \"size\", void 0);\n __decorate([Property('')], FilesProp.prototype, \"type\", void 0);\n return FilesProp;\n}(ChildProperty);\nexport { FilesProp };\nvar ButtonsProps = /** @class */function (_super) {\n __extends(ButtonsProps, _super);\n function ButtonsProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('Browse...')], ButtonsProps.prototype, \"browse\", void 0);\n __decorate([Property('Upload')], ButtonsProps.prototype, \"upload\", void 0);\n __decorate([Property('Clear')], ButtonsProps.prototype, \"clear\", void 0);\n return ButtonsProps;\n}(ChildProperty);\nexport { ButtonsProps };\nvar AsyncSettings = /** @class */function (_super) {\n __extends(AsyncSettings, _super);\n function AsyncSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('')], AsyncSettings.prototype, \"saveUrl\", void 0);\n __decorate([Property('')], AsyncSettings.prototype, \"removeUrl\", void 0);\n __decorate([Property(0)], AsyncSettings.prototype, \"chunkSize\", void 0);\n __decorate([Property(3)], AsyncSettings.prototype, \"retryCount\", void 0);\n __decorate([Property(500)], AsyncSettings.prototype, \"retryAfterDelay\", void 0);\n return AsyncSettings;\n}(ChildProperty);\nexport { AsyncSettings };\n/**\n * The uploader component allows to upload images, documents, and other files from local to server.\n * ```html\n * <input type='file' name='images[]' id='upload'/>\n * ```\n * ```typescript\n * <script>\n * var uploadObj = new Uploader();\n * uploadObj.appendTo('#upload');\n * </script>\n * ```\n */\nvar Uploader = /** @class */function (_super) {\n __extends(Uploader, _super);\n /**\n * Triggers when change the Uploader value.\n *\n * @param {UploaderModel} options - Specifies the Uploader model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function Uploader(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.initialAttr = {\n accept: null,\n multiple: false,\n disabled: false\n };\n _this.uploadedFilesData = [];\n _this.base64String = [];\n _this.isForm = false;\n _this.allTypes = false;\n _this.pausedData = [];\n _this.uploadMetaData = [];\n _this.tabIndex = '0';\n _this.btnTabIndex = '0';\n _this.disableKeyboardNavigation = false;\n _this.count = -1;\n _this.actionCompleteCount = 0;\n _this.flag = true;\n _this.selectedFiles = [];\n _this.uploaderName = 'UploadFiles';\n _this.fileStreams = [];\n _this.newFileRef = 0;\n _this.isFirstFileOnSelection = false;\n _this.dragCounter = 0;\n /**\n * Get the file item(li) which are shown in file list.\n *\n * @private\n */\n _this.fileList = [];\n /**\n * Get the data of files which are shown in file list.\n *\n * @private\n */\n _this.filesData = [];\n _this.uploaderOptions = options;\n return _this;\n }\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {UploaderModel} newProp - Returns the dynamic property value of the component.\n * @param {UploaderModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n Uploader.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowedExtensions':\n this.setExtensions(this.allowedExtensions);\n this.clearAll();\n break;\n case 'enabled':\n this.setControlStatus();\n break;\n case 'multiple':\n this.setMultipleSelection();\n break;\n case 'enableRtl':\n this.setRTL();\n this.reRenderFileList();\n break;\n case 'buttons':\n this.buttons.browse = isNullOrUndefined(this.buttons.browse) ? '' : this.buttons.browse;\n this.buttons.clear = isNullOrUndefined(this.buttons.clear) ? '' : this.buttons.clear;\n this.buttons.upload = isNullOrUndefined(this.buttons.upload) ? '' : this.buttons.upload;\n this.renderButtonTemplates();\n break;\n case 'dropArea':\n this.unBindDropEvents();\n this.updateDropArea();\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.checkHTMLAttributes(true);\n break;\n case 'files':\n this.renderPreLoadFiles();\n break;\n case 'directoryUpload':\n this.updateDirectoryAttributes();\n break;\n case 'template':\n if (this.isReact) {\n this.reRenderFileList();\n } else {\n this.clearAll();\n }\n break;\n case 'minFileSize':\n case 'maxFileSize':\n case 'autoUpload':\n this.clearAll();\n break;\n case 'sequentialUpload':\n this.clearAll();\n break;\n case 'locale':\n this.l10n.setLocale(this.locale);\n this.setLocalizedTexts();\n this.preLocaleObj = getValue('currentLocale', this.l10n);\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n }\n }\n };\n Uploader.prototype.setLocalizedTexts = function () {\n if (isNullOrUndefined(this.template)) {\n if (typeof this.buttons.browse === 'string') {\n this.browseButton.innerText = this.buttons.browse === 'Browse...' ? this.localizedTexts('Browse') : this.buttons.browse;\n this.browseButton.setAttribute('title', this.browseButton.innerText);\n if (this.uploadWrapper && !isNullOrUndefined(this.uploadWrapper.querySelector('.' + DROP_AREA))) {\n this.uploadWrapper.querySelector('.' + DROP_AREA).innerHTML = this.localizedTexts('dropFilesHint');\n }\n }\n this.updateFileList();\n }\n };\n Uploader.prototype.getKeyValue = function (val) {\n var keyValue;\n for (var _i = 0, _a = Object.keys(this.preLocaleObj); _i < _a.length; _i++) {\n var key = _a[_i];\n if (this.preLocaleObj[\"\" + key] === val) {\n keyValue = key;\n }\n }\n return keyValue;\n };\n Uploader.prototype.updateFileList = function () {\n var element;\n /* istanbul ignore next */\n if (this.fileList.length > 0 && !isNullOrUndefined(this.uploadWrapper.querySelector('.' + LIST_PARENT))) {\n for (var i = 0; i < this.fileList.length; i++) {\n element = this.fileList[i].querySelector('.e-file-status');\n element.innerHTML = this.localizedTexts(this.getKeyValue(this.filesData[i].status));\n this.filesData[i].status = this.localizedTexts(this.getKeyValue(this.filesData[i].status));\n if (this.fileList[i].classList.contains(UPLOAD_SUCCESS)) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('delete'));\n }\n if (this.fileList[i].querySelector('.e-file-play-btn')) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('resume'));\n }\n if (this.fileList[i].querySelector('.e-file-remove-btn')) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('remove'));\n }\n if (this.fileList[i].querySelector('.e-file-reload-btn')) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('retry'));\n }\n if (!this.autoUpload) {\n this.uploadButton.innerText = this.buttons.upload === 'Upload' ? this.localizedTexts('Upload') : this.buttons.upload;\n this.uploadButton.setAttribute('title', this.localizedTexts('Upload'));\n this.clearButton.innerText = this.buttons.clear === 'Clear' ? this.localizedTexts('Clear') : this.buttons.clear;\n this.clearButton.setAttribute('title', this.localizedTexts('Clear'));\n }\n }\n }\n };\n Uploader.prototype.reRenderFileList = function () {\n if (this.listParent) {\n detach(this.listParent);\n this.listParent = null;\n this.fileList = [];\n this.internalCreateFileList(this.filesData);\n if (this.actionButtons) {\n this.removeActionButtons();\n this.renderActionButtons();\n this.checkActionButtonStatus();\n }\n }\n };\n Uploader.prototype.preRender = function () {\n this.localeText = {\n Browse: 'Browse...',\n Clear: 'Clear',\n Upload: 'Upload',\n invalidFileName: 'File Name is not allowed',\n dropFilesHint: 'Or drop files here',\n invalidMaxFileSize: 'File size is too large',\n invalidMinFileSize: 'File size is too small',\n invalidFileType: 'File type is not allowed',\n uploadFailedMessage: 'File failed to upload',\n uploadSuccessMessage: 'File uploaded successfully',\n removedSuccessMessage: 'File removed successfully',\n removedFailedMessage: 'Unable to remove file',\n inProgress: 'Uploading',\n readyToUploadMessage: 'Ready to upload',\n abort: 'Abort',\n remove: 'Remove',\n cancel: 'Cancel',\n delete: 'Delete file',\n pauseUpload: 'File upload paused',\n pause: 'Pause',\n resume: 'Resume',\n retry: 'Retry',\n fileUploadCancel: 'File upload canceled',\n invalidFileSelection: 'Invalid files selected',\n totalFiles: 'Total files',\n size: 'Size'\n };\n this.l10n = new L10n('uploader', this.localeText, this.locale);\n this.preLocaleObj = getValue('currentLocale', this.l10n);\n this.formRendered();\n this.updateHTMLAttrToElement();\n this.checkHTMLAttributes(false);\n var ejInstance = getValue('ej2_instances', this.element);\n /* istanbul ignore next */\n if (this.element.tagName === 'EJS-UPLOADER') {\n var inputElement = this.createElement('input', {\n attrs: {\n type: 'file'\n }\n });\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n if (this.element.attributes[index].nodeName !== 'id') {\n inputElement.setAttribute(this.element.attributes[index].nodeName, this.element.attributes[index].nodeValue);\n } else if (this.element.attributes[index].nodeName === 'id') {\n inputElement.setAttribute(this.element.attributes[index].nodeName, getUniqueID('uploader'));\n }\n inputElement.innerHTML = this.element.innerHTML;\n }\n if (!inputElement.hasAttribute('name')) {\n inputElement.setAttribute('name', 'UploadFiles');\n }\n this.element.appendChild(inputElement);\n this.element = inputElement;\n setValue('ej2_instances', ejInstance, this.element);\n }\n /* istanbul ignore next */\n if (ejInstance[0].isPureReactComponent) {\n if (!isNullOrUndefined(ejInstance[0].props.name)) {\n this.element.setAttribute('name', ejInstance[0].props.name);\n } else if (!isNullOrUndefined(ejInstance[0].props.id) && isNullOrUndefined(ejInstance[0].props.name)) {\n this.element.setAttribute('name', ejInstance[0].props.id);\n } else {\n this.element.setAttribute('name', 'UploadFiles');\n }\n }\n if (isNullOrUndefined(this.element.getAttribute('name'))) {\n this.element.setAttribute('name', this.element.getAttribute('id'));\n }\n if (!this.element.hasAttribute('type')) {\n this.element.setAttribute('type', 'file');\n }\n this.updateDirectoryAttributes();\n this.keyConfigs = {\n enter: 'enter'\n };\n if (this.element.hasAttribute('tabindex')) {\n this.tabIndex = this.element.getAttribute('tabindex');\n }\n this.browserName = Browser.info.name;\n this.uploaderName = this.element.getAttribute('name');\n };\n Uploader.prototype.formRendered = function () {\n var parentEle = closest(this.element, 'form');\n if (!isNullOrUndefined(parentEle)) {\n for (; parentEle && parentEle !== document.documentElement; parentEle = parentEle.parentElement) {\n if (parentEle.tagName === 'FORM') {\n this.isForm = true;\n this.formElement = parentEle;\n parentEle.setAttribute('enctype', 'multipart/form-data');\n parentEle.setAttribute('encoding', 'multipart/form-data');\n }\n }\n }\n };\n Uploader.prototype.getPersistData = function () {\n return this.addOnPersist(['filesData']);\n };\n /**\n * Return the module name of the component.\n *\n * @returns {string} Returns the component name.\n */\n Uploader.prototype.getModuleName = function () {\n return 'uploader';\n };\n Uploader.prototype.updateDirectoryAttributes = function () {\n if (this.directoryUpload) {\n this.element.setAttribute('directory', 'true');\n this.element.setAttribute('webkitdirectory', 'true');\n } else {\n this.element.removeAttribute('directory');\n this.element.removeAttribute('webkitdirectory');\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Uploader.prototype.render = function () {\n this.renderBrowseButton();\n this.initializeUpload();\n this.updateHTMLAttrToWrapper();\n this.wireEvents();\n this.setMultipleSelection();\n this.setExtensions(this.allowedExtensions);\n this.setRTL();\n this.renderPreLoadFiles();\n this.setControlStatus();\n this.setCSSClass();\n };\n Uploader.prototype.renderBrowseButton = function () {\n this.browseButton = this.createElement('button', {\n className: 'e-css e-btn',\n attrs: {\n 'type': 'button'\n }\n });\n this.browseButton.setAttribute('tabindex', this.tabIndex);\n if (typeof this.buttons.browse === 'string') {\n this.browseButton.textContent = this.buttons.browse === 'Browse...' ? this.localizedTexts('Browse') : this.buttons.browse;\n this.browseButton.setAttribute('title', this.browseButton.innerText);\n } else {\n this.browseButton.appendChild(this.buttons.browse);\n }\n this.element.setAttribute('aria-label', 'Uploader');\n };\n Uploader.prototype.renderActionButtons = function () {\n this.element.setAttribute('tabindex', '-1');\n this.actionButtons = this.createElement('div', {\n className: ACTION_BUTTONS\n });\n this.uploadButton = this.createElement('button', {\n className: UPLOAD_BUTTONS,\n attrs: {\n 'type': 'button',\n 'tabindex': this.btnTabIndex,\n 'aria-label': this.localizedTexts('Upload')\n }\n });\n this.clearButton = this.createElement('button', {\n className: CLEAR_BUTTONS,\n attrs: {\n 'type': 'button',\n 'tabindex': this.btnTabIndex,\n 'aria-label': this.localizedTexts('Clear')\n }\n });\n this.actionButtons.appendChild(this.clearButton);\n this.actionButtons.appendChild(this.uploadButton);\n this.renderButtonTemplates();\n this.uploadWrapper.appendChild(this.actionButtons);\n this.browseButton.blur();\n if (!this.isPreloadFiles) {\n this.uploadButton.focus();\n }\n this.wireActionButtonEvents();\n };\n /* istanbul ignore next */\n Uploader.prototype.serverActionButtonsEventBind = function (element) {\n if (element && !this.isForm) {\n this.browseButton.blur();\n this.actionButtons = element;\n this.uploadButton = this.actionButtons.querySelector('.e-file-upload-btn');\n this.clearButton = this.actionButtons.querySelector('.e-file-clear-btn');\n this.uploadButton.focus();\n this.unwireActionButtonEvents();\n this.wireActionButtonEvents();\n this.checkActionButtonStatus();\n }\n };\n Uploader.prototype.wireActionButtonEvents = function () {\n EventHandler.add(this.uploadButton, 'click', this.uploadButtonClick, this);\n EventHandler.add(this.clearButton, 'click', this.clearButtonClick, this);\n };\n Uploader.prototype.unwireActionButtonEvents = function () {\n EventHandler.remove(this.uploadButton, 'click', this.uploadButtonClick);\n EventHandler.remove(this.clearButton, 'click', this.clearButtonClick);\n };\n Uploader.prototype.removeActionButtons = function () {\n if (this.actionButtons) {\n this.unwireActionButtonEvents();\n detach(this.actionButtons);\n this.actionButtons = null;\n }\n };\n Uploader.prototype.renderButtonTemplates = function () {\n if (typeof this.buttons.browse === 'string') {\n this.browseButton.textContent = this.buttons.browse === 'Browse...' ? this.localizedTexts('Browse') : this.buttons.browse;\n this.browseButton.setAttribute('title', this.browseButton.textContent);\n } else {\n this.browseButton.innerHTML = '';\n this.browseButton.appendChild(this.buttons.browse);\n }\n if (this.uploadButton) {\n var uploadText = isNullOrUndefined(this.buttons.upload) ? 'Upload' : this.buttons.upload;\n this.buttons.upload = uploadText;\n if (typeof this.buttons.upload === 'string') {\n this.uploadButton.textContent = this.buttons.upload === 'Upload' ? this.localizedTexts('Upload') : this.buttons.upload;\n this.uploadButton.setAttribute('title', this.uploadButton.textContent);\n } else {\n this.uploadButton.innerHTML = '';\n this.uploadButton.appendChild(this.buttons.upload);\n }\n }\n if (this.clearButton) {\n var clearText = isNullOrUndefined(this.buttons.clear) ? 'Clear' : this.buttons.clear;\n this.buttons.clear = clearText;\n if (typeof this.buttons.clear === 'string') {\n this.clearButton.textContent = this.buttons.clear === 'Clear' ? this.localizedTexts('Clear') : this.buttons.clear;\n this.clearButton.setAttribute('title', this.clearButton.textContent);\n } else {\n this.clearButton.innerHTML = '';\n this.clearButton.appendChild(this.buttons.clear);\n }\n }\n };\n Uploader.prototype.initializeUpload = function () {\n this.element.setAttribute('tabindex', '-1');\n var inputWrapper = this.createElement('span', {\n className: INPUT_WRAPPER\n });\n this.element.parentElement.insertBefore(inputWrapper, this.element);\n this.dropAreaWrapper = this.createElement('div', {\n className: DROP_WRAPPER\n });\n this.element.parentElement.insertBefore(this.dropAreaWrapper, this.element);\n inputWrapper.appendChild(this.element);\n this.dropAreaWrapper.appendChild(this.browseButton);\n this.dropAreaWrapper.appendChild(inputWrapper);\n this.uploadWrapper = this.createElement('div', {\n className: CONTROL_WRAPPER\n });\n this.dropAreaWrapper.parentElement.insertBefore(this.uploadWrapper, this.dropAreaWrapper);\n this.uploadWrapper.appendChild(this.dropAreaWrapper);\n this.setDropArea();\n };\n Uploader.prototype.renderPreLoadFiles = function () {\n if (this.files.length) {\n if (this.enablePersistence && this.filesData.length) {\n this.internalCreateFileList(this.filesData);\n return;\n }\n if (isNullOrUndefined(this.files[0].size)) {\n return;\n }\n this.isPreloadFiles = true;\n var files = [].slice.call(this.files);\n var filesData = [];\n if (!this.multiple) {\n this.clearData();\n files = [files[0]];\n }\n for (var _i = 0, files_1 = files; _i < files_1.length; _i++) {\n var data = files_1[_i];\n var fileData = {\n name: data.name + '.' + data.type.split('.')[data.type.split('.').length - 1],\n rawFile: '',\n size: data.size,\n status: this.localizedTexts('uploadSuccessMessage'),\n type: data.type,\n validationMessages: {\n minSize: '',\n maxSize: ''\n },\n statusCode: '2'\n };\n filesData.push(fileData);\n this.filesData.push(fileData);\n }\n this.internalCreateFileList(filesData);\n if (!this.autoUpload && this.listParent && !this.actionButtons && (!this.isForm || this.allowUpload()) && this.showFileList) {\n this.renderActionButtons();\n }\n this.checkActionButtonStatus();\n if (this.sequentialUpload) {\n this.count = this.filesData.length - 1;\n }\n this.isPreloadFiles = false;\n }\n };\n Uploader.prototype.checkActionButtonStatus = function () {\n if (this.actionButtons) {\n var length_1 = this.uploadWrapper.querySelectorAll('.' + VALIDATION_FAILS).length + this.uploadWrapper.querySelectorAll('.e-upload-fails:not(.e-upload-progress)').length + this.uploadWrapper.querySelectorAll('span.' + UPLOAD_SUCCESS).length + this.uploadWrapper.querySelectorAll('span.' + UPLOAD_INPROGRESS).length;\n if (length_1 > 0 && length_1 === this.uploadWrapper.querySelectorAll('li').length) {\n this.uploadButton.setAttribute('disabled', 'disabled');\n } else {\n this.uploadButton.removeAttribute('disabled');\n }\n }\n };\n Uploader.prototype.setDropArea = function () {\n var dropTextArea = this.dropAreaWrapper.querySelector('.e-file-drop');\n if (this.dropArea) {\n this.dropZoneElement = typeof this.dropArea !== 'string' ? this.dropArea : select(this.dropArea, document);\n var element = this.element;\n var enableDropText = false;\n while (element.parentNode) {\n element = element.parentNode;\n if (element === this.dropZoneElement) {\n enableDropText = true;\n if (!dropTextArea) {\n this.createDropTextHint();\n } else {\n dropTextArea.innerHTML = this.localizedTexts('dropFilesHint');\n }\n }\n }\n if (!enableDropText && dropTextArea) {\n remove(dropTextArea);\n }\n } else if (!isNullOrUndefined(this.uploaderOptions) && this.uploaderOptions.dropArea === undefined) {\n this.createDropTextHint();\n this.dropZoneElement = this.uploadWrapper;\n this.setProperties({\n dropArea: this.uploadWrapper\n }, true);\n }\n this.bindDropEvents();\n };\n Uploader.prototype.updateDropArea = function () {\n if (this.dropArea) {\n this.setDropArea();\n } else {\n this.dropZoneElement = null;\n var dropTextArea = this.dropAreaWrapper.querySelector('.e-file-drop');\n if (dropTextArea) {\n remove(dropTextArea);\n }\n }\n };\n Uploader.prototype.createDropTextHint = function () {\n var fileDropArea = this.createElement('span', {\n className: DROP_AREA\n });\n fileDropArea.innerHTML = this.localizedTexts('dropFilesHint');\n this.dropAreaWrapper.appendChild(fileDropArea);\n };\n Uploader.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttr.indexOf(pro) < 0) {\n this.element.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n };\n Uploader.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttr.indexOf(pro) > -1) {\n if (pro === 'class') {\n var updatedClassValues = this.htmlAttributes[\"\" + pro].replace(/\\s+/g, ' ').trim();\n if (updatedClassValues !== '') {\n addClass([this.uploadWrapper], updatedClassValues.split(' '));\n }\n } else if (pro === 'style') {\n var uploadStyle = this.uploadWrapper.getAttribute(pro);\n uploadStyle = !isNullOrUndefined(uploadStyle) ? uploadStyle + this.htmlAttributes[\"\" + pro] : this.htmlAttributes[\"\" + pro];\n this.uploadWrapper.setAttribute(pro, uploadStyle);\n } else {\n this.uploadWrapper.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n }\n };\n Uploader.prototype.setMultipleSelection = function () {\n if (this.multiple && !this.element.hasAttribute('multiple')) {\n var newAttr = document.createAttribute('multiple');\n newAttr.value = 'multiple';\n this.element.setAttributeNode(newAttr);\n } else if (!this.multiple) {\n this.element.removeAttribute('multiple');\n }\n };\n Uploader.prototype.checkAutoUpload = function (fileData) {\n if (this.autoUpload) {\n if (this.sequentialUpload) {\n /* istanbul ignore next */\n this.sequenceUpload(fileData);\n } else {\n this.upload(fileData);\n }\n this.removeActionButtons();\n } else if (!this.actionButtons) {\n this.renderActionButtons();\n }\n this.checkActionButtonStatus();\n };\n Uploader.prototype.sequenceUpload = function (fileData) {\n if (this.filesData.length - fileData.length === 0 || this.filesData[this.filesData.length - fileData.length - 1].statusCode !== '1') {\n if (this.multiple || this.count < 0) {\n ++this.count;\n }\n var isFileListCreated = this.showFileList ? false : true;\n if (typeof this.filesData[this.count] === 'object') {\n this.isFirstFileOnSelection = false;\n this.upload(this.filesData[this.count], isFileListCreated);\n if (this.filesData[this.count].statusCode === '0') {\n this.sequenceUpload(fileData);\n }\n } else {\n --this.count;\n }\n }\n };\n Uploader.prototype.setCSSClass = function (oldCSSClass) {\n var updatedOldCssClass = oldCSSClass;\n if (!isNullOrUndefined(oldCSSClass)) {\n updatedOldCssClass = oldCSSClass.replace(/\\s+/g, ' ').trim();\n }\n if (!isNullOrUndefined(oldCSSClass) && updatedOldCssClass !== '') {\n removeClass([this.uploadWrapper], updatedOldCssClass.split(' '));\n }\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.cssClass.replace(/\\s+/g, ' ').trim();\n }\n if (!isNullOrUndefined(this.cssClass) && updatedCssClassValue !== '') {\n addClass([this.uploadWrapper], updatedCssClassValue.split(updatedCssClassValue.indexOf(',') > -1 ? ',' : ' '));\n }\n };\n Uploader.prototype.wireEvents = function () {\n EventHandler.add(this.browseButton, 'click', this.browseButtonClick, this);\n EventHandler.add(this.element, 'change', this.onSelectFiles, this);\n EventHandler.add(document, 'click', this.removeFocus, this);\n this.keyboardModule = new KeyboardEvents(this.uploadWrapper, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.resetForm, this);\n }\n };\n Uploader.prototype.unWireEvents = function () {\n EventHandler.remove(this.browseButton, 'click', this.browseButtonClick);\n EventHandler.remove(this.element, 'change', this.onSelectFiles);\n EventHandler.remove(document, 'click', this.removeFocus);\n if (this.isForm) {\n EventHandler.remove(this.formElement, 'reset', this.resetForm);\n }\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n }\n };\n Uploader.prototype.resetForm = function () {\n this.clearAll();\n };\n Uploader.prototype.keyActionHandler = function (e) {\n var targetElement = e.target;\n switch (e.action) {\n case 'enter':\n if (e.target === this.clearButton) {\n this.clearButtonClick();\n } else if (e.target === this.uploadButton) {\n this.uploadButtonClick();\n } else if (e.target === this.browseButton) {\n this.browseButtonClick();\n } else if (targetElement.classList.contains(PAUSE_UPLOAD)) {\n var metaData = this.getCurrentMetaData(null, e);\n metaData.file.statusCode = '4';\n metaData.file.status = this.localizedTexts('pauseUpload');\n this.abortUpload(metaData, false);\n } else if (targetElement.classList.contains(RESUME_UPLOAD)) {\n this.resumeUpload(this.getCurrentMetaData(null, e), e);\n } else if (targetElement.classList.contains(RETRY_ICON)) {\n var metaData = this.getCurrentMetaData(null, e);\n if (!isNullOrUndefined(metaData)) {\n metaData.file.statusCode = '1';\n metaData.file.status = this.localizedTexts('readyToUploadMessage');\n this.chunkUpload(metaData.file);\n } else {\n var target = e.target.parentElement;\n var fileData = this.filesData[this.fileList.indexOf(target)];\n this.retry(fileData);\n }\n } else {\n this.removeFiles(e);\n if (!targetElement.classList.contains(ABORT_ICON)) {\n this.browseButton.focus();\n }\n }\n e.preventDefault();\n e.stopPropagation();\n break;\n }\n };\n Uploader.prototype.getCurrentMetaData = function (fileInfo, e) {\n var fileData;\n var targetMetaData;\n if (isNullOrUndefined(fileInfo)) {\n var target = e.target.parentElement;\n fileData = this.filesData[this.fileList.indexOf(target)];\n } else {\n fileData = fileInfo;\n }\n for (var i = 0; i < this.uploadMetaData.length; i++) {\n if (this.uploadMetaData[i].file.name === fileData.name) {\n targetMetaData = this.uploadMetaData[i];\n }\n }\n return targetMetaData;\n };\n Uploader.prototype.removeFocus = function () {\n if (this.uploadWrapper && this.listParent && this.listParent.querySelector('.' + ICON_FOCUSED)) {\n document.activeElement.blur();\n this.listParent.querySelector('.' + ICON_FOCUSED).classList.remove(ICON_FOCUSED);\n }\n };\n Uploader.prototype.browseButtonClick = function () {\n this.element.click();\n };\n Uploader.prototype.uploadButtonClick = function () {\n if (this.sequentialUpload) {\n this.sequenceUpload(this.filesData);\n } else {\n this.upload(this.filesData);\n }\n };\n Uploader.prototype.clearButtonClick = function () {\n this.clearAll();\n /* istanbul ignore next */\n if (this.sequentialUpload) {\n this.count = -1;\n }\n this.actionCompleteCount = 0;\n };\n Uploader.prototype.bindDropEvents = function () {\n if (this.dropZoneElement) {\n EventHandler.add(this.dropZoneElement, 'drop', this.dropElement, this);\n EventHandler.add(this.dropZoneElement, 'dragover', this.dragHover, this);\n EventHandler.add(this.dropZoneElement, 'dragleave', this.onDragLeave, this);\n EventHandler.add(this.dropZoneElement, 'paste', this.onPasteFile, this);\n EventHandler.add(this.dropZoneElement, 'dragenter', this.onDragEnter, this);\n }\n };\n Uploader.prototype.unBindDropEvents = function () {\n if (this.dropZoneElement) {\n EventHandler.remove(this.dropZoneElement, 'drop', this.dropElement);\n EventHandler.remove(this.dropZoneElement, 'dragover', this.dragHover);\n EventHandler.remove(this.dropZoneElement, 'dragleave', this.onDragLeave);\n EventHandler.remove(this.dropZoneElement, 'dragenter', this.onDragEnter);\n }\n };\n Uploader.prototype.onDragEnter = function (e) {\n if (!this.enabled) {\n return;\n }\n this.dropZoneElement.classList.add(DRAG_HOVER);\n this.dragCounter = this.dragCounter + 1;\n e.preventDefault();\n e.stopPropagation();\n };\n Uploader.prototype.onDragLeave = function () {\n if (!this.enabled) {\n return;\n }\n this.dragCounter = this.dragCounter - 1;\n if (!this.dragCounter) {\n this.dropZoneElement.classList.remove(DRAG_HOVER);\n }\n };\n Uploader.prototype.dragHover = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.dropEffect !== 'Default') {\n e.dataTransfer.dropEffect = this.dropEffect.toLowerCase();\n }\n e.preventDefault();\n e.stopPropagation();\n };\n /* istanbul ignore next */\n Uploader.prototype.dropElement = function (e) {\n this.dragCounter = 0;\n this.dropZoneElement.classList.remove(DRAG_HOVER);\n this.onSelectFiles(e);\n e.preventDefault();\n e.stopPropagation();\n };\n /* istanbul ignore next */\n Uploader.prototype.onPasteFile = function (event) {\n var item = event.clipboardData.items;\n if (event.type === 'paste' && this.browserName !== 'msie' && this.browserName !== 'edge' && this.browserName !== 'safari') {\n this.element.files = event.clipboardData.files;\n }\n if (item.length !== 1 && !this.multiple) {\n return;\n }\n for (var file = 0; file < item.length; file++) {\n var pasteFile = [].slice.call(item)[file];\n if (!isNullOrUndefined(pasteFile.getAsFile()) && (pasteFile.kind === 'file' || pasteFile.type.match('^image/'))) {\n this.renderSelectedFiles(event, [pasteFile.getAsFile()], false, true);\n }\n }\n };\n Uploader.prototype.getSelectedFiles = function (index) {\n var data = [];\n var liElement = this.fileList[index];\n var allFiles = this.getFilesData();\n var nameElements = +liElement.getAttribute('data-files-count');\n var startIndex = 0;\n for (var i = 0; i < index; i++) {\n startIndex += +this.fileList[i].getAttribute('data-files-count');\n }\n for (var j = startIndex; j < startIndex + nameElements; j++) {\n data.push(allFiles[j]);\n }\n return data;\n };\n Uploader.prototype.removeFiles = function (args) {\n if (!this.enabled) {\n return;\n }\n var selectedElement = args.target.parentElement;\n var index = this.fileList.indexOf(selectedElement);\n var liElement = this.fileList[index];\n var formUpload = this.isFormUpload();\n var fileData = formUpload ? this.getSelectedFiles(index) : this.getFilesInArray(this.filesData[index]);\n if (isNullOrUndefined(fileData)) {\n return;\n }\n if (args.target.classList.contains(ABORT_ICON) && !formUpload) {\n fileData[0].statusCode = '5';\n if (!isNullOrUndefined(liElement)) {\n var spinnerTarget = liElement.querySelector('.' + ABORT_ICON);\n createSpinner({\n target: spinnerTarget,\n width: '20px'\n });\n showSpinner(spinnerTarget);\n }\n if (this.sequentialUpload) {\n /* istanbul ignore next */\n this.uploadSequential();\n }\n if (!liElement.classList.contains(RESTRICT_RETRY)) {\n this.checkActionComplete(true);\n }\n } else if (!closest(args.target, '.' + SPINNER_PANE)) {\n this.remove(fileData, false, false, true, args);\n }\n if (this.isForm && liElement && liElement.classList.contains(INVALID_FILE)) {\n this.element.value = '';\n }\n this.checkActionButtonStatus();\n if (this.actionButtons && this.clearButton && this.uploadWrapper) {\n var progressBarElements = this.uploadWrapper.querySelectorAll('.e-upload-progress-bar.e-upload-progress:not(.e-upload-success):not(.e-upload-fails)');\n if (progressBarElements.length === 1 && selectedElement.contains(progressBarElements[0]) && this.clearButton.hasAttribute('disabled')) {\n this.clearButton.removeAttribute('disabled');\n }\n }\n };\n Uploader.prototype.removeFilesData = function (file, customTemplate) {\n var index;\n if (customTemplate) {\n if (!this.showFileList) {\n index = this.filesData.indexOf(file);\n this.filesData.splice(index, 1);\n }\n return;\n }\n var selectedElement = this.getLiElement(file);\n if (isNullOrUndefined(selectedElement)) {\n return;\n }\n this.element.value = '';\n detach(selectedElement);\n index = this.fileList.indexOf(selectedElement);\n this.fileList.splice(index, 1);\n this.filesData.splice(index, 1);\n if (this.fileList.length === 0 && !isNullOrUndefined(this.listParent)) {\n detach(this.listParent);\n this.listParent = null;\n this.removeActionButtons();\n }\n if (this.sequentialUpload) {\n /* istanbul ignore next */\n if (index <= this.count) {\n --this.count;\n }\n }\n };\n Uploader.prototype.removeUploadedFile = function (file, eventArgs, removeDirectly, custom) {\n var _this = this;\n var selectedFiles = file;\n var ajax = new Ajax(this.asyncSettings.removeUrl, 'POST', true, null);\n ajax.emitError = false;\n var formData = new FormData();\n ajax.beforeSend = function (e) {\n eventArgs.currentRequest = ajax.httpRequest;\n if (!removeDirectly) {\n _this.trigger('removing', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n e.cancel = true;\n } else {\n _this.removingEventCallback(eventArgs, formData, selectedFiles, file);\n }\n });\n } else {\n _this.removingEventCallback(eventArgs, formData, selectedFiles, file);\n }\n };\n ajax.onLoad = function (e) {\n _this.removeCompleted(e, selectedFiles, custom);\n return {};\n };\n /* istanbul ignore next */\n ajax.onError = function (e) {\n _this.removeFailed(e, selectedFiles, custom);\n return {};\n };\n ajax.send(formData);\n };\n Uploader.prototype.removingEventCallback = function (eventArgs, formData, selectedFiles, file) {\n /* istanbul ignore next */\n var name = this.element.getAttribute('name');\n var liElement = this.getLiElement(file);\n if (!isNullOrUndefined(liElement) && (!isNullOrUndefined(liElement.querySelector('.' + DELETE_ICON)) || !isNullOrUndefined(liElement.querySelector('.' + REMOVE_ICON)))) {\n var spinnerTarget = liElement.querySelector('.' + DELETE_ICON) ? liElement.querySelector('.' + DELETE_ICON) : liElement.querySelector('.' + REMOVE_ICON);\n createSpinner({\n target: spinnerTarget,\n width: '20px'\n });\n showSpinner(spinnerTarget);\n }\n if (eventArgs.postRawFile && !isNullOrUndefined(selectedFiles.rawFile) && selectedFiles.rawFile !== '') {\n formData.append(name, selectedFiles.rawFile, selectedFiles.name);\n } else {\n formData.append(name, selectedFiles.name);\n }\n this.updateFormData(formData, eventArgs.customFormData);\n };\n /* istanbul ignore next */\n Uploader.prototype.updateFormData = function (formData, customData) {\n if (customData.length > 0 && customData[0]) {\n var _loop_1 = function (i) {\n var data = customData[i];\n // eslint-disable-next-line @typescript-eslint/tslint/config\n var value = Object.keys(data).map(function (e) {\n return data[\"\" + e];\n });\n formData.append(Object.keys(data)[0], value);\n };\n for (var i = 0; i < customData.length; i++) {\n _loop_1(i);\n }\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.updateCustomheader = function (request, currentRequest) {\n if (currentRequest.length > 0 && currentRequest[0]) {\n var _loop_2 = function (i) {\n var data = currentRequest[i];\n // eslint-disable-next-line @typescript-eslint/tslint/config\n var value = Object.keys(data).map(function (e) {\n return data[\"\" + e];\n });\n request.setRequestHeader(Object.keys(data)[0], value);\n };\n for (var i = 0; i < currentRequest.length; i++) {\n _loop_2(i);\n }\n }\n };\n Uploader.prototype.removeCompleted = function (e, files, customTemplate) {\n var response = e && e.currentTarget ? this.getResponse(e) : null;\n var status = e.target;\n if (status.readyState === 4 && status.status >= 200 && status.status <= 299) {\n var args = {\n e: e,\n response: response,\n operation: 'remove',\n file: this.updateStatus(files, this.localizedTexts('removedSuccessMessage'), '2')\n };\n this.trigger('success', args);\n this.removeFilesData(files, customTemplate);\n var index = this.uploadedFilesData.indexOf(files);\n this.uploadedFilesData.splice(index, 1);\n this.trigger('change', {\n files: this.uploadedFilesData\n });\n } else {\n this.removeFailed(e, files, customTemplate);\n }\n };\n Uploader.prototype.removeFailed = function (e, files, customTemplate) {\n var response = e && e.currentTarget ? this.getResponse(e) : null;\n var args = {\n e: e,\n response: response,\n operation: 'remove',\n file: this.updateStatus(files, this.localizedTexts('removedFailedMessage'), '0')\n };\n if (!customTemplate) {\n var index = this.filesData.indexOf(files);\n var rootElement = this.fileList[index];\n if (rootElement) {\n rootElement.classList.remove(UPLOAD_SUCCESS);\n rootElement.classList.add(UPLOAD_FAILED);\n var statusElement = rootElement.querySelector('.' + STATUS);\n if (statusElement) {\n statusElement.classList.remove(UPLOAD_SUCCESS);\n statusElement.classList.add(UPLOAD_FAILED);\n }\n }\n this.checkActionButtonStatus();\n }\n this.trigger('failure', args);\n var liElement = this.getLiElement(files);\n /* istanbul ignore next */\n if (!isNullOrUndefined(liElement) && !isNullOrUndefined(liElement.querySelector('.' + DELETE_ICON))) {\n var spinnerTarget = liElement.querySelector('.' + DELETE_ICON);\n hideSpinner(spinnerTarget);\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.getFilesFromFolder = function (event) {\n this.filesEntries = [];\n var items = this.multiple ? event.dataTransfer.items : [event.dataTransfer.items[0]];\n var validDirectoryUpload = this.checkDirectoryUpload(items);\n if (!validDirectoryUpload) {\n return;\n }\n var _loop_3 = function (i) {\n var item = items[i].webkitGetAsEntry();\n if (item.isFile) {\n var files_2 = [];\n item.file(function (fileObj) {\n var path = item.fullPath;\n files_2.push({\n 'path': path,\n 'file': fileObj\n });\n });\n this_1.renderSelectedFiles(event, files_2, true);\n } else if (item.isDirectory) {\n this_1.traverseFileTree(item, event);\n }\n };\n var this_1 = this;\n for (var i = 0; i < items.length; i++) {\n _loop_3(i);\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.checkDirectoryUpload = function (items) {\n for (var i = 0; items && i < items.length; i++) {\n var item = items[i].webkitGetAsEntry();\n if (item.isDirectory) {\n return true;\n }\n }\n return false;\n };\n /* istanbul ignore next */\n Uploader.prototype.traverseFileTree = function (item, event) {\n if (item.isFile) {\n this.filesEntries.push(item);\n } else if (item.isDirectory) {\n var directoryReader = item.createReader();\n this.readFileFromDirectory(directoryReader, event);\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.readFileFromDirectory = function (directoryReader, event) {\n var _this = this;\n directoryReader.readEntries(function (entries) {\n for (var i = 0; i < entries.length; i++) {\n _this.traverseFileTree(entries[i], event);\n }\n _this.pushFilesEntries(event);\n if (entries.length) {\n _this.readFileFromDirectory(directoryReader);\n }\n });\n };\n Uploader.prototype.pushFilesEntries = function (event) {\n var _this = this;\n var files = [];\n var _loop_4 = function (i) {\n this_2.filesEntries[i].file(function (fileObj) {\n if (_this.filesEntries.length) {\n var path = _this.filesEntries[i].fullPath;\n files.push({\n 'path': path,\n 'file': fileObj\n });\n if (i === _this.filesEntries.length - 1) {\n _this.filesEntries = [];\n _this.renderSelectedFiles(event, files, true);\n }\n }\n });\n };\n var this_2 = this;\n for (var i = 0; i < this.filesEntries.length; i++) {\n _loop_4(i);\n }\n };\n Uploader.prototype.onSelectFiles = function (args) {\n if (!this.enabled) {\n return;\n }\n var targetFiles;\n /* istanbul ignore next */\n if (args.type === 'drop') {\n if (this.directoryUpload) {\n this.getFilesFromFolder(args);\n } else {\n var files = this.sortFilesList = args.dataTransfer.files;\n if (this.browserName !== 'msie' && this.browserName !== 'edge' && this.browserName !== 'safari') {\n this.element.files = files;\n }\n if (files.length > 0) {\n targetFiles = this.multiple ? this.sortFileList(files) : [files[0]];\n this.renderSelectedFiles(args, targetFiles);\n }\n }\n } else {\n targetFiles = [].slice.call(args.target.files);\n this.renderSelectedFiles(args, targetFiles);\n }\n if (this.isAngular || this.isReact) {\n args.stopPropagation();\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.getBase64 = function (file) {\n return new Promise(function (resolve, reject) {\n var fileReader = new FileReader();\n fileReader.readAsDataURL(file);\n fileReader.onload = function () {\n return resolve(fileReader.result);\n };\n fileReader.onerror = function (error) {\n return reject(error);\n };\n });\n };\n /* istanbul ignore next */\n /* tslint:ignore */\n Uploader.prototype.renderSelectedFiles = function (args, targetFiles, directory, paste) {\n var _this = this;\n this.base64String = [];\n var eventArgs = {\n event: args,\n cancel: false,\n filesData: [],\n isModified: false,\n modifiedFilesData: [],\n progressInterval: '',\n isCanceled: false,\n currentRequest: null,\n customFormData: null\n };\n /* istanbul ignore next */\n if (targetFiles.length < 1) {\n eventArgs.isCanceled = true;\n this.trigger('selected', eventArgs);\n return;\n }\n this.flag = true;\n var fileData = [];\n if (!this.multiple) {\n this.clearData(true);\n this.actionCompleteCount = 0;\n targetFiles = [targetFiles[0]];\n }\n for (var i = 0; i < targetFiles.length; i++) {\n var file = directory ? targetFiles[i].file : targetFiles[i];\n this.updateInitialFileDetails(args, targetFiles, file, i, fileData, directory, paste);\n }\n eventArgs.filesData = fileData;\n if (!isNullOrUndefined(this.allowedExtensions) && this.allowedExtensions.indexOf('*') > -1) {\n this.allTypes = true;\n }\n if (this.enableHtmlSanitizer) {\n for (var i = 0; i < fileData.length; i++) {\n var sanitizeFile = SanitizeHtmlHelper.beforeSanitize();\n var sanitizeFileName = SanitizeHtmlHelper.serializeValue(sanitizeFile, fileData[parseInt(i.toString(), 10)].name);\n var currentFileName = fileData[parseInt(i.toString(), 10)].name;\n var isUTF8 = false;\n for (var i_1 = 0; i_1 < currentFileName.length; i_1++) {\n if (currentFileName.charCodeAt(i_1) > 127) {\n isUTF8 = true;\n break;\n }\n }\n var htmlTagRegex = /<([a-z][a-z0-9]*)\\b[^>]*>(.*?)<\\/\\1>/i;\n var hasHTMLString = htmlTagRegex.test(currentFileName);\n if (sanitizeFileName !== fileData[parseInt(i.toString(), 10)].name && !(isUTF8 && !hasHTMLString)) {\n var encodedFileName = targetFiles[parseInt(i.toString(), 10)].name.replace(/[\\u00A0-\\u9999<>\\\\&]/g, function (i) {\n return '&#' + i.charCodeAt(0) + ';';\n });\n fileData[parseInt(i.toString(), 10)].name = encodedFileName;\n fileData[parseInt(i.toString(), 10)].status = this.localizedTexts('invalidFileName');\n fileData[parseInt(i.toString(), 10)].statusCode = '0';\n }\n }\n }\n if (!this.allTypes) {\n fileData = this.checkExtension(fileData);\n }\n this.trigger('selected', eventArgs, function (eventArgs) {\n _this._internalRenderSelect(eventArgs, fileData);\n });\n };\n Uploader.prototype.updateInitialFileDetails = function (args, targetFiles, file, i, fileData, directory, paste) {\n var fileName = directory ? targetFiles[i].path.substring(1, targetFiles[i].path.length) : paste ? getUniqueID(file.name.substring(0, file.name.lastIndexOf('.'))) + '.' + this.getFileType(file.name) : this.directoryUpload ? targetFiles[i].webkitRelativePath : file.name;\n var fileDetails = {\n name: fileName,\n rawFile: file,\n size: file.size,\n status: this.localizedTexts('readyToUploadMessage'),\n type: this.getFileType(file.name),\n validationMessages: this.validatedFileSize(file.size),\n statusCode: '1',\n id: getUniqueID(file.name.substring(0, file.name.lastIndexOf('.'))) + '.' + this.getFileType(file.name)\n };\n /* istanbul ignore next */\n if (paste) {\n fileDetails.fileSource = 'paste';\n }\n fileDetails.status = fileDetails.validationMessages.minSize !== '' ? this.localizedTexts('invalidMinFileSize') : fileDetails.validationMessages.maxSize !== '' ? this.localizedTexts('invalidMaxFileSize') : fileDetails.status;\n if (fileDetails.validationMessages.minSize !== '' || fileDetails.validationMessages.maxSize !== '') {\n fileDetails.statusCode = '0';\n this.checkActionComplete(true);\n }\n fileData.push(fileDetails);\n };\n Uploader.prototype._internalRenderSelect = function (eventArgs, fileData) {\n if (!eventArgs.cancel) {\n /* istanbul ignore next */\n this.selectedFiles = this.selectedFiles.concat(fileData);\n this.btnTabIndex = this.disableKeyboardNavigation ? '-1' : '0';\n if (this.showFileList) {\n if (eventArgs.isModified && eventArgs.modifiedFilesData.length > 0) {\n for (var j = 0; j < eventArgs.modifiedFilesData.length; j++) {\n for (var k = 0; k < fileData.length; k++) {\n if (eventArgs.modifiedFilesData[j].id === fileData[k].id) {\n eventArgs.modifiedFilesData[j].rawFile = fileData[k].rawFile;\n }\n }\n }\n var dataFiles = this.allTypes ? eventArgs.modifiedFilesData : this.checkExtension(eventArgs.modifiedFilesData);\n this.updateSortedFileList(dataFiles);\n this.filesData = this.filesData.concat(dataFiles);\n if (!this.isForm || this.allowUpload()) {\n this.checkAutoUpload(dataFiles);\n }\n } else {\n this.internalCreateFileList(fileData);\n if (this.autoUpload && this.sequenceUpload && this.sequentialUpload && this.filesData.length > 0 && this.filesData[this.filesData.length - 1].statusCode !== '2' && this.filesData[this.filesData.length - 1].statusCode !== '0') {\n this.filesData = this.filesData.concat(fileData);\n return;\n }\n this.filesData = this.filesData.concat(fileData);\n if (!this.isForm || this.allowUpload()) {\n this.checkAutoUpload(fileData);\n }\n }\n if (!isNullOrUndefined(eventArgs.progressInterval) && eventArgs.progressInterval !== '') {\n this.progressInterval = eventArgs.progressInterval;\n }\n } else {\n this.filesData = this.filesData.concat(fileData);\n if (this.autoUpload) {\n this.upload(this.filesData, true);\n }\n }\n this.raiseActionComplete();\n this.isFirstFileOnSelection = true;\n }\n };\n Uploader.prototype.allowUpload = function () {\n var allowFormUpload = false;\n if (this.isForm && !isNullOrUndefined(this.asyncSettings.saveUrl) && this.asyncSettings.saveUrl !== '') {\n allowFormUpload = true;\n }\n return allowFormUpload;\n };\n Uploader.prototype.isFormUpload = function () {\n var isFormUpload = false;\n if (this.isForm && (isNullOrUndefined(this.asyncSettings.saveUrl) || this.asyncSettings.saveUrl === '') && (isNullOrUndefined(this.asyncSettings.removeUrl) || this.asyncSettings.removeUrl === '')) {\n isFormUpload = true;\n }\n return isFormUpload;\n };\n Uploader.prototype.clearData = function (singleUpload) {\n if (!isNullOrUndefined(this.listParent)) {\n detach(this.listParent);\n this.listParent = null;\n }\n if (this.browserName !== 'msie' && !singleUpload) {\n this.element.value = '';\n }\n this.fileList = [];\n this.filesData = [];\n this.removeActionButtons();\n };\n Uploader.prototype.updateSortedFileList = function (filesData) {\n var previousListClone = this.createElement('div', {\n id: 'clonewrapper'\n });\n var added = -1;\n if (this.listParent) {\n for (var i = 0; i < this.listParent.querySelectorAll('li').length; i++) {\n var liElement = this.listParent.querySelectorAll('li')[i];\n previousListClone.appendChild(liElement.cloneNode(true));\n }\n this.removeActionButtons();\n var oldList = [].slice.call(previousListClone.childNodes);\n this.createParentUL();\n for (var index = 0; index < filesData.length; index++) {\n for (var j = 0; j < this.filesData.length; j++) {\n if (this.filesData[j].name === filesData[index].name) {\n this.listParent.appendChild(oldList[j]);\n EventHandler.add(oldList[j].querySelector('.e-icons'), 'click', this.removeFiles, this);\n this.fileList.push(oldList[j]);\n added = index;\n }\n }\n if (added !== index) {\n this.internalCreateFileList([filesData[index]]);\n }\n }\n } else {\n this.internalCreateFileList(filesData);\n }\n };\n Uploader.prototype.isBlank = function (str) {\n return !str || /^\\s*$/.test(str);\n };\n Uploader.prototype.checkGenericExtension = function (genericType, fileExtension) {\n var validExtensions = [];\n switch (genericType.toLowerCase()) {\n case 'image/*':\n validExtensions.push('jpg', 'jpeg', 'png', 'gif', 'bmp', 'tiff', 'svg', 'webp', 'heic');\n break;\n case 'audio/*':\n validExtensions.push('mp3', 'wav', 'aac', 'flac', 'ogg', 'm4a');\n break;\n case 'video/*':\n validExtensions.push('mp4', 'mov', 'avi', 'mkv', 'flv', 'wmv', 'webm', 'mpeg');\n break;\n case 'application/*':\n validExtensions.push('doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'zip', 'rar', '7z', 'tar', 'pdf');\n break;\n case 'text/*':\n validExtensions.push('txt', 'csv', 'html', 'css', 'js', 'json', 'xml', 'md');\n break;\n default:\n break;\n }\n return validExtensions.includes(fileExtension.toLowerCase());\n };\n Uploader.prototype.checkExtension = function (files) {\n var dropFiles = files;\n if (!this.isBlank(this.allowedExtensions)) {\n var allowedExtensions = [];\n var extensions = !isNullOrUndefined(allowedExtensions) ? this.allowedExtensions.split(',') : [''];\n for (var _i = 0, extensions_1 = extensions; _i < extensions_1.length; _i++) {\n var extension = extensions_1[_i];\n allowedExtensions.push(extension.trim().toLocaleLowerCase());\n }\n for (var i = 0; i < files.length; i++) {\n var checkFileType = files[i].type.indexOf('.') !== -1 ? files[i].type.replace('.', '') : files[i].type;\n if (allowedExtensions[0].indexOf('/*') !== -1) {\n var isValidExtension = this.checkGenericExtension(allowedExtensions[0], checkFileType);\n if (!isValidExtension) {\n files[i].status = this.localizedTexts('invalidFileType');\n files[i].statusCode = '0';\n }\n } else if (allowedExtensions.indexOf(('.' + checkFileType).toLocaleLowerCase()) === -1) {\n files[i].status = this.localizedTexts('invalidFileType');\n files[i].statusCode = '0';\n }\n }\n }\n return dropFiles;\n };\n Uploader.prototype.validatedFileSize = function (fileSize) {\n var minSizeError = '';\n var maxSizeError = '';\n if (fileSize < this.minFileSize) {\n minSizeError = this.localizedTexts('invalidMinFileSize');\n } else if (fileSize > this.maxFileSize) {\n maxSizeError = this.localizedTexts('invalidMaxFileSize');\n } else {\n minSizeError = '';\n maxSizeError = '';\n }\n var errorMessage = {\n minSize: minSizeError,\n maxSize: maxSizeError\n };\n return errorMessage;\n };\n Uploader.prototype.isPreLoadFile = function (fileData) {\n var isPreload = false;\n for (var i = 0; i < this.files.length; i++) {\n if (this.files[i].name === fileData.name.slice(0, fileData.name.lastIndexOf('.')) && this.files[i].type === fileData.type) {\n isPreload = true;\n }\n }\n return isPreload;\n };\n Uploader.prototype.createCustomfileList = function (fileData) {\n this.createParentUL();\n for (var _i = 0, fileData_1 = fileData; _i < fileData_1.length; _i++) {\n var listItem = fileData_1[_i];\n var listElement = this.createElement('li', {\n className: FILE,\n attrs: {\n 'data-file-name': listItem.name\n }\n });\n this.uploadTemplateFn = this.templateComplier(this.template);\n var liTempCompiler = this.uploadTemplateFn(listItem, this, 'template', this.element.id + 'Template', this.isStringTemplate, null, listElement);\n if (liTempCompiler) {\n var fromElements = [].slice.call(liTempCompiler);\n append(fromElements, listElement);\n }\n var index = fileData.indexOf(listItem);\n var eventArgs = {\n element: listElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n var eventsArgs = {\n element: listElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(listElement);\n this.fileList.push(listElement);\n }\n this.renderReactTemplates();\n };\n Uploader.prototype.createParentUL = function () {\n if (isNullOrUndefined(this.listParent)) {\n this.listParent = this.createElement('ul', {\n className: LIST_PARENT\n });\n this.uploadWrapper.appendChild(this.listParent);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Uploader.prototype.formFileList = function (fileData, files) {\n var fileList = this.createElement('li', {\n className: FILE\n });\n fileList.setAttribute('data-files-count', fileData.length + '');\n var fileContainer = this.createElement('span', {\n className: TEXT_CONTAINER\n });\n var statusMessage;\n for (var _i = 0, fileData_2 = fileData; _i < fileData_2.length; _i++) {\n var listItem = fileData_2[_i];\n var fileNameEle = this.createElement('span', {\n className: FILE_NAME\n });\n fileNameEle.innerHTML = this.getFileNameOnly(listItem.name);\n var fileTypeEle = this.createElement('span', {\n className: FILE_TYPE\n });\n var fileType = this.getFileType(listItem.name);\n fileTypeEle.innerHTML = '.' + fileType;\n if (!fileType) {\n fileTypeEle.classList.add('e-hidden');\n }\n if (!this.enableRtl) {\n fileContainer.appendChild(fileNameEle);\n fileContainer.appendChild(fileTypeEle);\n } else {\n var rtlContainer = this.createElement('span', {\n className: RTL_CONTAINER\n });\n rtlContainer.appendChild(fileTypeEle);\n rtlContainer.appendChild(fileNameEle);\n fileContainer.appendChild(rtlContainer);\n }\n this.truncateName(fileNameEle);\n statusMessage = this.formValidateFileInfo(listItem, fileList);\n }\n fileList.appendChild(fileContainer);\n this.setListToFileInfo(fileData, fileList);\n var index = this.listParent.querySelectorAll('li').length;\n var infoEle = this.createElement('span');\n if (fileList.classList.contains(INVALID_FILE)) {\n infoEle.classList.add(STATUS);\n infoEle.classList.add(INVALID_FILE);\n infoEle.innerText = fileData.length > 1 ? this.localizedTexts('invalidFileSelection') : statusMessage;\n } else {\n infoEle.classList.add(fileData.length > 1 ? INFORMATION : FILE_SIZE);\n infoEle.innerText = fileData.length > 1 ? this.localizedTexts('totalFiles') + ': ' + fileData.length + ' , ' + this.localizedTexts('size') + ': ' + this.bytesToSize(this.getFileSize(fileData)) : this.bytesToSize(fileData[0].size);\n this.createFormInput(fileData);\n }\n fileContainer.appendChild(infoEle);\n if (isNullOrUndefined(fileList.querySelector('.e-icons'))) {\n var iconElement = this.createElement('span', {\n className: 'e-icons',\n attrs: {\n 'tabindex': this.btnTabIndex\n }\n });\n /* istanbul ignore next */\n if (this.browserName === 'msie') {\n iconElement.classList.add('e-msie');\n }\n iconElement.setAttribute('title', this.localizedTexts('remove'));\n fileList.appendChild(fileContainer);\n fileList.appendChild(iconElement);\n EventHandler.add(iconElement, 'click', this.removeFiles, this);\n iconElement.classList.add(REMOVE_ICON);\n }\n var eventArgs = {\n element: fileList,\n fileInfo: this.mergeFileInfo(fileData, fileList),\n index: index,\n isPreload: this.isPreLoadFile(this.mergeFileInfo(fileData, fileList))\n };\n var eventsArgs = {\n element: fileList,\n fileInfo: this.mergeFileInfo(fileData, fileList),\n index: index,\n isPreload: this.isPreLoadFile(this.mergeFileInfo(fileData, fileList))\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(fileList);\n this.fileList.push(fileList);\n };\n Uploader.prototype.formValidateFileInfo = function (listItem, fileList) {\n var statusMessage = listItem.status;\n var validationMessages = this.validatedFileSize(listItem.size);\n if (validationMessages.minSize !== '' || validationMessages.maxSize !== '') {\n this.addInvalidClass(fileList);\n statusMessage = validationMessages.minSize !== '' ? this.localizedTexts('invalidMinFileSize') : validationMessages.maxSize !== '' ? this.localizedTexts('invalidMaxFileSize') : statusMessage;\n }\n var typeValidationMessage = this.checkExtension(this.getFilesInArray(listItem))[0].status;\n if (typeValidationMessage === this.localizedTexts('invalidFileType')) {\n this.addInvalidClass(fileList);\n statusMessage = typeValidationMessage;\n }\n return statusMessage;\n };\n Uploader.prototype.addInvalidClass = function (fileList) {\n fileList.classList.add(INVALID_FILE);\n };\n Uploader.prototype.createFormInput = function (fileData) {\n if (this.browserName !== 'safari') {\n var inputElement = this.element.cloneNode(true);\n inputElement.classList.add(HIDDEN_INPUT);\n for (var _i = 0, fileData_3 = fileData; _i < fileData_3.length; _i++) {\n var listItem = fileData_3[_i];\n listItem.input = inputElement;\n }\n inputElement.setAttribute('id', getUniqueID('hiddenUploader'));\n inputElement.setAttribute('name', this.uploaderName);\n this.uploadWrapper.querySelector('.' + INPUT_WRAPPER).appendChild(inputElement);\n if (this.browserName !== 'msie' && this.browserName !== 'edge') {\n this.element.value = '';\n }\n }\n };\n Uploader.prototype.getFileSize = function (fileData) {\n var fileSize = 0;\n for (var _i = 0, fileData_4 = fileData; _i < fileData_4.length; _i++) {\n var file = fileData_4[_i];\n fileSize += file.size;\n }\n return fileSize;\n };\n Uploader.prototype.mergeFileInfo = function (fileData, fileList) {\n var result = {\n name: '',\n rawFile: '',\n size: 0,\n status: '',\n type: '',\n validationMessages: {\n minSize: '',\n maxSize: ''\n },\n statusCode: '1',\n list: fileList\n };\n var fileNames = [];\n var type = '';\n for (var _i = 0, fileData_5 = fileData; _i < fileData_5.length; _i++) {\n var listItem = fileData_5[_i];\n fileNames.push(listItem.name);\n type = listItem.type;\n }\n result.name = fileNames.join(', ');\n result.size = this.getFileSize(fileData);\n result.type = type;\n result.status = this.statusForFormUpload(fileData, fileList);\n return result;\n };\n Uploader.prototype.statusForFormUpload = function (fileData, fileList) {\n var isValid = true;\n var statusMessage;\n for (var _i = 0, fileData_6 = fileData; _i < fileData_6.length; _i++) {\n var listItem = fileData_6[_i];\n statusMessage = listItem.status;\n var validationMessages = this.validatedFileSize(listItem.size);\n if (validationMessages.minSize !== '' || validationMessages.maxSize !== '') {\n isValid = false;\n statusMessage = validationMessages.minSize !== '' ? this.localizedTexts('invalidMinFileSize') : validationMessages.maxSize !== '' ? this.localizedTexts('invalidMaxFileSize') : statusMessage;\n }\n var typeValidationMessage = this.checkExtension(this.getFilesInArray(listItem))[0].status;\n if (typeValidationMessage === this.localizedTexts('invalidFileType')) {\n isValid = false;\n statusMessage = typeValidationMessage;\n }\n }\n if (!isValid) {\n fileList.classList.add(INVALID_FILE);\n statusMessage = fileData.length > 1 ? this.localizedTexts('invalidFileSelection') : statusMessage;\n } else {\n statusMessage = this.localizedTexts('totalFiles') + ': ' + fileData.length + ' , ' + this.localizedTexts('size') + ': ' + this.bytesToSize(this.getFileSize(fileData));\n }\n return statusMessage;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Uploader.prototype.formCustomFileList = function (fileData, files) {\n this.createParentUL();\n var fileList = this.createElement('li', {\n className: FILE\n });\n fileList.setAttribute('data-files-count', fileData.length + '');\n this.setListToFileInfo(fileData, fileList);\n var result = this.mergeFileInfo(fileData, fileList);\n fileList.setAttribute('data-file-name', result.name);\n this.uploadTemplateFn = this.templateComplier(this.template);\n var liTempCompiler = this.uploadTemplateFn(result, this, 'template', this.element.id + 'Template', this.isStringTemplate, null, fileList);\n if (liTempCompiler) {\n var fromElements = [].slice.call(liTempCompiler);\n append(fromElements, fileList);\n }\n var index = this.listParent.querySelectorAll('li').length;\n if (!fileList.classList.contains(INVALID_FILE)) {\n this.createFormInput(fileData);\n }\n var eventArgs = {\n element: fileList,\n fileInfo: result,\n index: index,\n isPreload: this.isPreLoadFile(result)\n };\n var eventsArgs = {\n element: fileList,\n fileInfo: result,\n index: index,\n isPreload: this.isPreLoadFile(result)\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(fileList);\n this.fileList.push(fileList);\n this.renderReactTemplates();\n };\n /**\n * Create the file list for specified files data.\n *\n * @param { FileInfo[] } fileData - Specifies the files data for file list creation.\n * @returns {void}\n */\n Uploader.prototype.createFileList = function (fileData) {\n this.filesData = this.filesData && this.filesData.length > 0 ? this.filesData.concat(fileData) : fileData;\n this.internalCreateFileList(fileData);\n };\n Uploader.prototype.internalCreateFileList = function (fileData) {\n this.createParentUL();\n if (this.template !== '' && !isNullOrUndefined(this.template)) {\n if (this.isFormUpload()) {\n this.uploadWrapper.classList.add(FORM_UPLOAD);\n this.formCustomFileList(fileData, this.element.files);\n } else {\n this.createCustomfileList(fileData);\n }\n } else if (this.isFormUpload()) {\n this.uploadWrapper.classList.add(FORM_UPLOAD);\n this.formFileList(fileData, this.element.files);\n } else {\n for (var _i = 0, fileData_7 = fileData; _i < fileData_7.length; _i++) {\n var listItem = fileData_7[_i];\n var liElement = this.createElement('li', {\n className: FILE,\n attrs: {\n 'data-file-name': listItem.name,\n 'data-files-count': '1'\n }\n });\n var textContainer = this.createElement('span', {\n className: TEXT_CONTAINER\n });\n var textElement = this.createElement('span', {\n className: FILE_NAME,\n attrs: {\n 'title': listItem.name\n }\n });\n textElement.innerHTML = this.getFileNameOnly(listItem.name);\n var fileExtension = this.createElement('span', {\n className: FILE_TYPE\n });\n var fileType = this.getFileType(listItem.name);\n fileExtension.innerHTML = '.' + fileType;\n if (!fileType) {\n fileExtension.classList.add('e-hidden');\n }\n if (!this.enableRtl) {\n textContainer.appendChild(textElement);\n textContainer.appendChild(fileExtension);\n } else {\n var rtlContainer = this.createElement('span', {\n className: RTL_CONTAINER\n });\n rtlContainer.appendChild(fileExtension);\n rtlContainer.appendChild(textElement);\n textContainer.appendChild(rtlContainer);\n }\n var fileSize = this.createElement('span', {\n className: FILE_SIZE\n });\n fileSize.innerHTML = this.bytesToSize(listItem.size);\n textContainer.appendChild(fileSize);\n var statusElement = this.createElement('span', {\n className: STATUS\n });\n textContainer.appendChild(statusElement);\n statusElement.innerHTML = listItem.status;\n liElement.appendChild(textContainer);\n var iconElement = this.createElement('span', {\n className: ' e-icons',\n attrs: {\n 'tabindex': this.btnTabIndex\n }\n });\n /* istanbul ignore next */\n if (this.browserName === 'msie') {\n iconElement.classList.add('e-msie');\n }\n iconElement.setAttribute('title', this.localizedTexts('remove'));\n liElement.appendChild(iconElement);\n EventHandler.add(iconElement, 'click', this.removeFiles, this);\n if (listItem.statusCode === '2') {\n statusElement.classList.add(UPLOAD_SUCCESS);\n iconElement.classList.add(DELETE_ICON);\n iconElement.setAttribute('title', this.localizedTexts('delete'));\n iconElement.setAttribute('aria-label', this.localizedTexts('delete'));\n } else if (listItem.statusCode !== '1') {\n statusElement.classList.remove(UPLOAD_SUCCESS);\n statusElement.classList.add(VALIDATION_FAILS);\n }\n if (this.autoUpload && listItem.statusCode === '1' && this.asyncSettings.saveUrl !== '') {\n statusElement.innerHTML = '';\n }\n if (!iconElement.classList.contains(DELETE_ICON)) {\n iconElement.classList.add(REMOVE_ICON);\n iconElement.setAttribute('aria-label', this.localizedTexts('remove'));\n }\n var index = fileData.indexOf(listItem);\n var eventArgs = {\n element: liElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n var eventsArgs = {\n element: liElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(liElement);\n this.fileList.push(liElement);\n this.truncateName(textElement);\n var preventActionComplete = this.flag;\n if (this.isPreLoadFile(listItem)) {\n this.flag = false;\n this.checkActionComplete(true);\n this.flag = preventActionComplete;\n }\n }\n }\n };\n Uploader.prototype.getSlicedName = function (nameElement) {\n var text = nameElement.textContent;\n nameElement.dataset.tail = text.slice(text.length - 10);\n };\n Uploader.prototype.setListToFileInfo = function (fileData, fileList) {\n for (var _i = 0, fileData_8 = fileData; _i < fileData_8.length; _i++) {\n var listItem = fileData_8[_i];\n listItem.list = fileList;\n }\n };\n Uploader.prototype.truncateName = function (name) {\n var nameElement = name;\n if (this.browserName !== 'edge' && nameElement.offsetWidth < nameElement.scrollWidth) {\n this.getSlicedName(nameElement);\n /* istanbul ignore next */\n } else if (nameElement.offsetWidth + 1 < nameElement.scrollWidth) {\n this.getSlicedName(nameElement);\n }\n };\n Uploader.prototype.getFileType = function (name) {\n var extension;\n var index = name.lastIndexOf('.');\n if (index >= 0) {\n extension = name.substring(index + 1);\n }\n return extension ? extension : '';\n };\n Uploader.prototype.getFileNameOnly = function (name) {\n var type = this.getFileType(name);\n var names = name.split('.' + type);\n return type = names[0];\n };\n Uploader.prototype.setInitialAttributes = function () {\n if (this.initialAttr.accept) {\n this.element.setAttribute('accept', this.initialAttr.accept);\n }\n if (this.initialAttr.disabled) {\n this.element.setAttribute('disabled', 'disabled');\n }\n if (this.initialAttr.multiple) {\n var newAttr = document.createAttribute('multiple');\n this.element.setAttributeNode(newAttr);\n }\n };\n Uploader.prototype.filterfileList = function (files) {\n var filterFiles = [];\n var li;\n for (var i = 0; i < files.length; i++) {\n li = this.getLiElement(files[i]);\n if (!isNullOrUndefined(li) && !li.classList.contains(UPLOAD_SUCCESS)) {\n filterFiles.push(files[i]);\n } else if (!this.showFileList && files[i].status !== 'File uploaded successfully') {\n filterFiles.push(files[i]);\n }\n }\n return filterFiles;\n };\n Uploader.prototype.updateStatus = function (files, status, statusCode, updateLiStatus) {\n if (updateLiStatus === void 0) {\n updateLiStatus = true;\n }\n if (!(status === '' || isNullOrUndefined(status)) && !(statusCode === '' || isNullOrUndefined(statusCode))) {\n files.status = status;\n files.statusCode = statusCode;\n }\n if (updateLiStatus) {\n var li = this.getLiElement(files);\n if (!isNullOrUndefined(li)) {\n if (!isNullOrUndefined(li.querySelector('.' + STATUS)) && !(status === '' || isNullOrUndefined(status))) {\n li.querySelector('.' + STATUS).textContent = status;\n }\n }\n }\n return files;\n };\n Uploader.prototype.getLiElement = function (files) {\n var index;\n for (var i = 0; i < this.filesData.length; i++) {\n if (!isNullOrUndefined(files) && (!isNullOrUndefined(this.filesData[i].id) && !isNullOrUndefined(files.id) ? this.filesData[i].name === files.name && this.filesData[i].id === files.id : this.filesData[i].name === files.name)) {\n index = i;\n }\n }\n return this.fileList[index];\n };\n Uploader.prototype.createProgressBar = function (liElement) {\n var progressbarWrapper = this.createElement('span', {\n className: PROGRESS_WRAPPER\n });\n var progressBar = this.createElement('progressbar', {\n className: PROGRESSBAR,\n attrs: {\n value: '0',\n max: '100'\n }\n });\n var progressbarInnerWrapper = this.createElement('span', {\n className: PROGRESS_INNER_WRAPPER\n });\n progressBar.setAttribute('style', 'width: 0%');\n var progressbarText = this.createElement('span', {\n className: PROGRESSBAR_TEXT\n });\n progressbarText.textContent = '0%';\n progressbarInnerWrapper.appendChild(progressBar);\n progressbarWrapper.appendChild(progressbarInnerWrapper);\n progressbarWrapper.appendChild(progressbarText);\n liElement.querySelector('.' + TEXT_CONTAINER).appendChild(progressbarWrapper);\n };\n /* istanbul ignore next */\n Uploader.prototype.updateProgressbar = function (e, li) {\n if (!isNaN(Math.round(e.loaded / e.total * 100)) && !isNullOrUndefined(li.querySelector('.' + PROGRESSBAR))) {\n if (!isNullOrUndefined(this.progressInterval) && this.progressInterval !== '') {\n var value = Math.round(e.loaded / e.total * 100) % parseInt(this.progressInterval, 10);\n if (value === 0 || value === 100) {\n this.changeProgressValue(li, Math.round(e.loaded / e.total * 100).toString() + '%');\n }\n } else {\n this.changeProgressValue(li, Math.round(e.loaded / e.total * 100).toString() + '%');\n }\n }\n };\n Uploader.prototype.changeProgressValue = function (li, progressValue) {\n li.querySelector('.' + PROGRESSBAR).setAttribute('style', 'width:' + progressValue);\n li.querySelector('.' + PROGRESSBAR_TEXT).textContent = progressValue;\n };\n Uploader.prototype.uploadInProgress = function (e, files, customUI, request) {\n var li = this.getLiElement(files);\n if (isNullOrUndefined(li) && !customUI) {\n return;\n }\n if (!isNullOrUndefined(li)) {\n /* istanbul ignore next */\n if (files.statusCode === '5') {\n this.cancelUploadingFile(files, e, request, li);\n }\n if (!(li.querySelectorAll('.' + PROGRESS_WRAPPER).length > 0) && li.querySelector('.' + STATUS)) {\n li.querySelector('.' + STATUS).classList.add(UPLOAD_INPROGRESS);\n this.createProgressBar(li);\n this.updateProgressBarClasses(li, UPLOAD_INPROGRESS);\n li.querySelector('.' + STATUS).classList.remove(UPLOAD_FAILED);\n }\n this.updateProgressbar(e, li);\n var iconEle = li.querySelector('.' + REMOVE_ICON);\n if (!isNullOrUndefined(iconEle)) {\n iconEle.classList.add(ABORT_ICON, UPLOAD_INPROGRESS);\n iconEle.setAttribute('title', this.localizedTexts('abort'));\n iconEle.classList.remove(REMOVE_ICON);\n }\n } else {\n this.cancelUploadingFile(files, e, request);\n }\n var args = {\n e: e,\n operation: 'upload',\n file: this.updateStatus(files, this.localizedTexts('inProgress'), '3')\n };\n this.trigger('progress', args);\n };\n /* istanbul ignore next */\n Uploader.prototype.cancelUploadingFile = function (files, e, request, li) {\n var _this = this;\n if (files.statusCode === '5') {\n var eventArgs = {\n event: e,\n fileData: files,\n cancel: false,\n customFormData: [],\n currentRequest: null\n };\n this.trigger('canceling', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n files.statusCode = '3';\n if (!isNullOrUndefined(li)) {\n var spinnerTarget = li.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(spinnerTarget)) {\n hideSpinner(spinnerTarget);\n detach(li.querySelector('.e-spinner-pane'));\n }\n }\n } else {\n request.emitError = false;\n request.httpRequest.abort();\n var formData = new FormData();\n if (files.statusCode === '5') {\n var name_1 = _this.element.getAttribute('name');\n formData.append(name_1, files.name);\n formData.append('cancel-uploading', files.name);\n _this.updateFormData(formData, eventArgs.customFormData);\n var ajax_1 = new Ajax(_this.asyncSettings.removeUrl, 'POST', true, null);\n ajax_1.emitError = false;\n ajax_1.beforeSend = function (e) {\n if (eventArgs.currentRequest) {\n _this.updateCustomheader(ajax_1.httpRequest, eventArgs.currentRequest);\n }\n };\n ajax_1.onLoad = function (e) {\n _this.removecanceledFile(e, files);\n return {};\n };\n ajax_1.send(formData);\n }\n }\n });\n }\n };\n Uploader.prototype.removecanceledFile = function (e, file) {\n var liElement = this.getLiElement(file);\n if (isNullOrUndefined(liElement) || liElement.querySelector('.' + RETRY_ICON) || isNullOrUndefined(liElement.querySelector('.' + ABORT_ICON))) {\n return;\n }\n this.updateStatus(file, this.localizedTexts('fileUploadCancel'), '5');\n this.renderFailureState(e, file, liElement);\n var spinnerTarget = liElement.querySelector('.' + REMOVE_ICON);\n if (!isNullOrUndefined(liElement)) {\n hideSpinner(spinnerTarget);\n if (!isNullOrUndefined(liElement.querySelector('.e-spinner-pane'))) {\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n }\n var requestResponse = e && e.currentTarget ? this.getResponse(e) : null;\n var args = {\n event: e,\n response: requestResponse,\n operation: 'cancel',\n file: file\n };\n this.trigger('success', args);\n };\n Uploader.prototype.renderFailureState = function (e, file, liElement) {\n var _this = this;\n this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n this.removeProgressbar(liElement, 'failure');\n if (!isNullOrUndefined(liElement.querySelector('.e-file-status'))) {\n liElement.querySelector('.e-file-status').classList.add(UPLOAD_FAILED);\n }\n var deleteIcon = liElement.querySelector('.' + ABORT_ICON);\n if (isNullOrUndefined(deleteIcon)) {\n return;\n }\n deleteIcon.classList.remove(ABORT_ICON, UPLOAD_INPROGRESS);\n deleteIcon.classList.add(REMOVE_ICON);\n deleteIcon.setAttribute('title', this.localizedTexts('remove'));\n this.pauseButton = this.createElement('span', {\n className: 'e-icons e-file-reload-btn',\n attrs: {\n 'tabindex': this.btnTabIndex\n }\n });\n deleteIcon.parentElement.insertBefore(this.pauseButton, deleteIcon);\n this.pauseButton.setAttribute('title', this.localizedTexts('retry'));\n this.pauseButton.setAttribute('aria-label', this.localizedTexts('retry'));\n var retryElement = liElement.querySelector('.' + RETRY_ICON);\n /* istanbul ignore next */\n retryElement.addEventListener('click', function (e) {\n _this.reloadcanceledFile(e, file, liElement, false);\n }, false);\n };\n Uploader.prototype.reloadcanceledFile = function (e, file, liElement, custom) {\n file.statusCode = '1';\n file.status = this.localizedTexts('readyToUploadMessage');\n if (!custom) {\n if (!isNullOrUndefined(liElement.querySelector('.' + STATUS))) {\n liElement.querySelector('.' + STATUS).classList.remove(UPLOAD_FAILED);\n }\n if (!isNullOrUndefined(liElement.querySelector('.' + RETRY_ICON))) {\n detach(liElement.querySelector('.' + RETRY_ICON));\n }\n this.pauseButton = null;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(liElement)) {\n liElement.classList.add(RESTRICT_RETRY);\n }\n this.upload([file]);\n };\n /* istanbul ignore next */\n Uploader.prototype.uploadComplete = function (e, file, customUI) {\n var status = e.target;\n if (status.readyState === 4 && status.status >= 200 && status.status <= 299) {\n var li = this.getLiElement(file);\n if (isNullOrUndefined(li) && (!customUI || isNullOrUndefined(customUI)) && this.showFileList) {\n return;\n }\n if (!isNullOrUndefined(li)) {\n this.updateProgressBarClasses(li, UPLOAD_SUCCESS);\n this.removeProgressbar(li, 'success');\n var iconEle = li.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(iconEle)) {\n iconEle.classList.add(DELETE_ICON);\n iconEle.setAttribute('title', this.localizedTexts('delete'));\n iconEle.setAttribute('aria-label', this.localizedTexts('delete'));\n iconEle.classList.remove(ABORT_ICON);\n iconEle.classList.remove(UPLOAD_INPROGRESS);\n }\n }\n this.raiseSuccessEvent(e, file);\n } else {\n this.uploadFailed(e, file);\n }\n };\n Uploader.prototype.getResponse = function (e) {\n var target = e.currentTarget;\n var response = {\n readyState: target.readyState,\n statusCode: target.status,\n statusText: target.statusText,\n headers: target.getAllResponseHeaders(),\n withCredentials: target.withCredentials\n };\n return response;\n };\n Uploader.prototype.raiseSuccessEvent = function (e, file) {\n var _this = this;\n var response = e && e.currentTarget ? this.getResponse(e) : null;\n var statusMessage = this.localizedTexts('uploadSuccessMessage');\n var args = {\n e: e,\n response: response,\n operation: 'upload',\n file: this.updateStatus(file, statusMessage, '2', false),\n statusText: statusMessage\n };\n var liElement = this.getLiElement(file);\n if (!isNullOrUndefined(liElement)) {\n var spinnerEle = liElement.querySelector('.' + SPINNER_PANE);\n if (!isNullOrUndefined(spinnerEle)) {\n hideSpinner(liElement);\n detach(spinnerEle);\n }\n }\n this.trigger('success', args, function (args) {\n _this.updateStatus(file, args.statusText, '2');\n if (_this.multiple) {\n _this.uploadedFilesData.push(file);\n } else {\n _this.uploadedFilesData = [file];\n }\n _this.trigger('change', {\n file: _this.uploadedFilesData\n });\n _this.checkActionButtonStatus();\n if (_this.fileList.length > 0) {\n if (!_this.getLiElement(file).classList.contains(RESTRICT_RETRY)) {\n _this.uploadSequential();\n _this.checkActionComplete(true);\n } else {\n /* istanbul ignore next */\n _this.getLiElement(file).classList.remove(RESTRICT_RETRY);\n }\n } else if (!_this.showFileList) {\n _this.checkActionComplete(true);\n }\n });\n };\n Uploader.prototype.uploadFailed = function (e, file) {\n var _this = this;\n var li = this.getLiElement(file);\n var response = e && e.currentTarget ? this.getResponse(e) : null;\n var statusMessage = this.localizedTexts('uploadFailedMessage');\n var args = {\n e: e,\n response: response,\n operation: 'upload',\n file: this.updateStatus(file, statusMessage, '0', false),\n statusText: statusMessage\n };\n if (!isNullOrUndefined(li)) {\n this.renderFailureState(e, file, li);\n }\n this.trigger('failure', args, function (args) {\n _this.updateStatus(file, args.statusText, '0');\n _this.checkActionButtonStatus();\n _this.uploadSequential();\n _this.checkActionComplete(true);\n });\n };\n Uploader.prototype.uploadSequential = function () {\n if (this.sequentialUpload) {\n if (this.autoUpload) {\n /* istanbul ignore next */\n this.checkAutoUpload(this.filesData);\n } else {\n this.uploadButtonClick();\n }\n }\n };\n Uploader.prototype.checkActionComplete = function (increment) {\n if (increment) {\n ++this.actionCompleteCount;\n } else {\n --this.actionCompleteCount;\n }\n this.raiseActionComplete();\n };\n Uploader.prototype.raiseActionComplete = function () {\n if (this.filesData.length === this.actionCompleteCount && this.flag) {\n this.flag = false;\n var eventArgs = {\n fileData: []\n };\n eventArgs.fileData = this.getSelectedFileStatus(this.selectedFiles);\n this.trigger('actionComplete', eventArgs);\n }\n };\n Uploader.prototype.getSelectedFileStatus = function (selectedFiles) {\n var matchFiles = [];\n var matchFilesIndex = 0;\n for (var selectFileIndex = 0; selectFileIndex < selectedFiles.length; selectFileIndex++) {\n var selectedFileData = selectedFiles[selectFileIndex];\n for (var fileDataIndex = 0; fileDataIndex < this.filesData.length; fileDataIndex++) {\n if (this.filesData[fileDataIndex].name === selectedFileData.name && this.filesData[fileDataIndex].status === selectedFileData.status) {\n matchFiles[matchFilesIndex] = this.filesData[fileDataIndex];\n ++matchFilesIndex;\n break;\n }\n }\n }\n return matchFiles;\n };\n Uploader.prototype.updateProgressBarClasses = function (li, className) {\n var progressBar = li.querySelector('.' + PROGRESSBAR);\n if (!isNullOrUndefined(progressBar)) {\n progressBar.classList.add(className);\n if (this.actionButtons && this.clearButton && this.uploadWrapper) {\n if (className === 'e-upload-progress' && !this.clearButton.hasAttribute('disabled')) {\n this.clearButton.setAttribute('disabled', 'disabled');\n } else if ((className === 'e-upload-success' || className === 'e-upload-fails') && this.uploadWrapper.querySelectorAll('.e-upload-progress-bar.e-upload-progress:not(.e-upload-success):not(.e-upload-fails)').length === 0 && this.clearButton.hasAttribute('disabled')) {\n this.clearButton.removeAttribute('disabled');\n }\n }\n }\n };\n Uploader.prototype.removeProgressbar = function (li, callType) {\n var _this = this;\n if (!isNullOrUndefined(li.querySelector('.' + PROGRESS_WRAPPER))) {\n this.progressAnimation = new Animation({\n duration: 1250\n });\n this.progressAnimation.animate(li.querySelector('.' + PROGRESS_WRAPPER), {\n name: 'FadeOut'\n });\n this.progressAnimation.animate(li.querySelector('.' + PROGRESSBAR_TEXT), {\n name: 'FadeOut'\n });\n setTimeout(function () {\n _this.animateProgressBar(li, callType);\n }, 750);\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.animateProgressBar = function (li, callType) {\n if (callType === 'success') {\n li.classList.add(UPLOAD_SUCCESS);\n if (!isNullOrUndefined(li.querySelector('.' + STATUS))) {\n li.querySelector('.' + STATUS).classList.remove(UPLOAD_INPROGRESS);\n this.progressAnimation.animate(li.querySelector('.' + STATUS), {\n name: 'FadeIn'\n });\n li.querySelector('.' + STATUS).classList.add(UPLOAD_SUCCESS);\n }\n } else {\n if (!isNullOrUndefined(li.querySelector('.' + STATUS))) {\n li.querySelector('.' + STATUS).classList.remove(UPLOAD_INPROGRESS);\n this.progressAnimation.animate(li.querySelector('.' + STATUS), {\n name: 'FadeIn'\n });\n li.querySelector('.' + STATUS).classList.add(UPLOAD_FAILED);\n }\n }\n if (li.querySelector('.' + PROGRESS_WRAPPER)) {\n detach(li.querySelector('.' + PROGRESS_WRAPPER));\n }\n };\n Uploader.prototype.setExtensions = function (extensions) {\n if (extensions !== '' && !isNullOrUndefined(extensions)) {\n this.element.setAttribute('accept', extensions);\n } else {\n this.element.removeAttribute('accept');\n }\n };\n Uploader.prototype.templateComplier = function (uploadTemplate) {\n if (uploadTemplate) {\n try {\n if (typeof uploadTemplate !== 'function' && selectAll(uploadTemplate, document).length) {\n return compile(select(uploadTemplate, document).innerHTML.trim());\n } else {\n return compile(uploadTemplate);\n }\n } catch (exception) {\n return compile(uploadTemplate);\n }\n }\n return undefined;\n };\n Uploader.prototype.setRTL = function () {\n if (this.enableRtl) {\n addClass([this.uploadWrapper], RTL);\n } else {\n removeClass([this.uploadWrapper], RTL);\n }\n };\n Uploader.prototype.localizedTexts = function (localeText) {\n this.l10n.setLocale(this.locale);\n return this.l10n.getConstant(localeText);\n };\n Uploader.prototype.setControlStatus = function () {\n if (!this.enabled) {\n this.uploadWrapper.classList.add(DISABLED);\n this.element.setAttribute('disabled', 'disabled');\n this.browseButton.setAttribute('disabled', 'disabled');\n if (!isNullOrUndefined(this.clearButton)) {\n this.clearButton.setAttribute('disabled', 'disabled');\n }\n if (!isNullOrUndefined(this.uploadButton)) {\n this.uploadButton.setAttribute('disabled', 'disabled');\n }\n } else {\n if (this.uploadWrapper.classList.contains(DISABLED)) {\n this.uploadWrapper.classList.remove(DISABLED);\n }\n if (!isNullOrUndefined(this.browseButton) && this.element.hasAttribute('disabled')) {\n this.element.removeAttribute('disabled');\n this.browseButton.removeAttribute('disabled');\n }\n if (!isNullOrUndefined(this.clearButton) && this.clearButton.hasAttribute('disabled')) {\n this.clearButton.removeAttribute('disabled');\n }\n if (!isNullOrUndefined(this.uploadButton) && this.uploadButton.hasAttribute('disabled')) {\n this.uploadButton.hasAttribute('disabled');\n }\n }\n };\n Uploader.prototype.checkHTMLAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) : ['accept', 'multiple', 'disabled'];\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(prop))) {\n switch (prop) {\n case 'accept':\n if (isNullOrUndefined(this.uploaderOptions) || this.uploaderOptions['allowedExtensions'] === undefined || isDynamic) {\n this.setProperties({\n allowedExtensions: this.element.getAttribute('accept')\n }, !isDynamic);\n this.initialAttr.accept = this.allowedExtensions;\n }\n break;\n case 'multiple':\n if (isNullOrUndefined(this.uploaderOptions) || this.uploaderOptions['multiple'] === undefined || isDynamic) {\n var isMutiple = this.element.getAttribute(prop) === 'multiple' || this.element.getAttribute(prop) === '' || this.element.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({\n multiple: isMutiple\n }, !isDynamic);\n this.initialAttr.multiple = true;\n }\n break;\n case 'disabled':\n if (isNullOrUndefined(this.uploaderOptions) || this.uploaderOptions['enabled'] === undefined || isDynamic) {\n var isDisabled = this.element.getAttribute(prop) === 'disabled' || this.element.getAttribute(prop) === '' || this.element.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({\n enabled: isDisabled\n }, !isDynamic);\n this.initialAttr.disabled = true;\n }\n }\n }\n }\n };\n Uploader.prototype.chunkUpload = function (file, custom, fileIndex) {\n var start = 0;\n var end = Math.min(this.asyncSettings.chunkSize, file.size);\n var index = 0;\n var blob = file.rawFile.slice(start, end);\n var metaData = {\n chunkIndex: index,\n blob: blob,\n file: file,\n start: start,\n end: end,\n retryCount: 0,\n request: null\n };\n this.sendRequest(file, metaData, custom, fileIndex);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Uploader.prototype.sendRequest = function (file, metaData, custom, fileIndex) {\n var _this = this;\n var formData = new FormData();\n var blob = file.rawFile.slice(metaData.start, metaData.end);\n formData.append(this.uploaderName, blob, file.name);\n formData.append('chunk-index', metaData.chunkIndex.toString());\n formData.append('chunkIndex', metaData.chunkIndex.toString());\n var totalChunk = Math.max(Math.ceil(file.size / this.asyncSettings.chunkSize), 1);\n formData.append('total-chunk', totalChunk.toString());\n formData.append('totalChunk', totalChunk.toString());\n var ajax = new Ajax({\n url: this.asyncSettings.saveUrl,\n type: 'POST',\n async: true,\n contentType: null\n });\n ajax.emitError = false;\n ajax.onLoad = function (e) {\n _this.chunkUploadComplete(e, metaData, custom);\n return {};\n };\n ajax.onUploadProgress = function (e) {\n _this.chunkUploadInProgress(e, metaData, custom);\n return {};\n };\n var eventArgs = {\n fileData: file,\n customFormData: [],\n cancel: false,\n chunkSize: this.asyncSettings.chunkSize === 0 ? null : this.asyncSettings.chunkSize\n };\n ajax.beforeSend = function (e) {\n eventArgs.currentRequest = ajax.httpRequest;\n eventArgs.currentChunkIndex = metaData.chunkIndex;\n if (eventArgs.currentChunkIndex === 0) {\n // This event is currently not required but to avoid breaking changes for previous customer, we have included.\n _this.trigger('uploading', eventArgs, function (eventArgs) {\n _this.uploadingEventCallback(formData, eventArgs, e, file);\n });\n } else {\n _this.trigger('chunkUploading', eventArgs, function (eventArgs) {\n _this.uploadingEventCallback(formData, eventArgs, e, file);\n });\n }\n };\n /* istanbul ignore next */\n ajax.onError = function (e) {\n _this.chunkUploadFailed(e, metaData, custom);\n return {};\n };\n ajax.send(formData);\n metaData.request = ajax;\n };\n Uploader.prototype.uploadingEventCallback = function (formData, eventArgs, e, file) {\n if (eventArgs.cancel) {\n this.eventCancelByArgs(e, eventArgs, file);\n } else {\n this.updateFormData(formData, eventArgs.customFormData);\n }\n };\n Uploader.prototype.eventCancelByArgs = function (e, eventArgs, file) {\n var _this = this;\n e.cancel = true;\n if (eventArgs.fileData.statusCode === '5') {\n return;\n }\n eventArgs.fileData.statusCode = '5';\n eventArgs.fileData.status = this.localizedTexts('fileUploadCancel');\n var liElement = this.getLiElement(eventArgs.fileData);\n if (liElement) {\n if (!isNullOrUndefined(liElement.querySelector('.' + STATUS))) {\n liElement.querySelector('.' + STATUS).innerHTML = this.localizedTexts('fileUploadCancel');\n liElement.querySelector('.' + STATUS).classList.add(UPLOAD_FAILED);\n }\n this.pauseButton = this.createElement('span', {\n className: 'e-icons e-file-reload-btn',\n attrs: {\n 'tabindex': this.btnTabIndex\n }\n });\n var removeIcon = liElement.querySelector('.' + REMOVE_ICON);\n if (removeIcon) {\n removeIcon.parentElement.insertBefore(this.pauseButton, removeIcon);\n }\n this.pauseButton.setAttribute('title', this.localizedTexts('retry'));\n /* istanbul ignore next */\n this.pauseButton.addEventListener('click', function (e) {\n _this.reloadcanceledFile(e, file, liElement);\n }, false);\n this.checkActionButtonStatus();\n }\n };\n Uploader.prototype.checkChunkUpload = function () {\n return this.asyncSettings.chunkSize <= 0 || isNullOrUndefined(this.asyncSettings.chunkSize) ? false : true;\n };\n Uploader.prototype.chunkUploadComplete = function (e, metaData, custom) {\n var _this = this;\n var response = e.target;\n var liElement;\n if (response.readyState === 4 && response.status >= 200 && response.status < 300) {\n var requestResponse = e && e.currentTarget ? this.getResponse(e) : null;\n var totalChunk = Math.max(Math.ceil(metaData.file.size / this.asyncSettings.chunkSize), 1);\n var eventArgs = {\n event: e,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n totalChunk: totalChunk,\n chunkSize: this.asyncSettings.chunkSize,\n response: requestResponse\n };\n this.trigger('chunkSuccess', eventArgs);\n if (isNullOrUndefined(custom) || !custom) {\n liElement = this.getLiElement(metaData.file);\n }\n this.updateMetaData(metaData);\n if (metaData.end === metaData.file.size) {\n metaData.file.statusCode = '3';\n }\n if (metaData.file.statusCode === '5') {\n var eventArgs_1 = {\n event: e,\n fileData: metaData.file,\n cancel: false,\n customFormData: []\n };\n this.trigger('canceling', eventArgs_1, function (eventArgs) {\n /* istanbul ignore next */\n if (eventArgs.cancel) {\n metaData.file.statusCode = '3';\n var spinnerTarget = liElement.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(liElement) && !isNullOrUndefined(spinnerTarget)) {\n hideSpinner(spinnerTarget);\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n _this.sendNextRequest(metaData);\n } else {\n metaData.request.emitError = false;\n response.abort();\n var formData = new FormData();\n var name_2 = _this.element.getAttribute('name');\n formData.append(name_2, metaData.file.name);\n formData.append('cancel-uploading', metaData.file.name);\n formData.append('cancelUploading', metaData.file.name);\n _this.updateFormData(formData, eventArgs.customFormData);\n var ajax = new Ajax(_this.asyncSettings.removeUrl, 'POST', true, null);\n ajax.emitError = false;\n ajax.onLoad = function (e) {\n _this.removeChunkFile(e, metaData, custom);\n return {};\n };\n ajax.send(formData);\n }\n });\n } else {\n if (totalChunk - 1 === metaData.chunkIndex && totalChunk > metaData.chunkIndex) {\n var index = this.pausedData.indexOf(metaData);\n if (index >= 0) {\n this.pausedData.splice(index, 1);\n }\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom) && liElement) {\n if (liElement && !isNullOrUndefined(liElement.querySelector('.' + PAUSE_UPLOAD))) {\n detach(liElement.querySelector('.' + PAUSE_UPLOAD));\n }\n this.removeChunkProgressBar(metaData);\n }\n this.raiseSuccessEvent(e, metaData.file);\n return;\n }\n if (metaData.file.statusCode !== '4') {\n this.sendNextRequest(metaData);\n }\n }\n } else {\n this.chunkUploadFailed(e, metaData);\n }\n };\n Uploader.prototype.sendNextRequest = function (metaData) {\n metaData.start = metaData.end;\n metaData.end += this.asyncSettings.chunkSize;\n metaData.end = Math.min(metaData.end, metaData.file.size);\n metaData.chunkIndex += 1;\n this.sendRequest(metaData.file, metaData);\n };\n Uploader.prototype.removeChunkFile = function (e, metaData, custom) {\n if (isNullOrUndefined(this.template) && isNullOrUndefined(custom) && !custom) {\n var liElement = this.getLiElement(metaData.file);\n var deleteIcon = liElement.querySelector('.' + ABORT_ICON);\n var spinnerTarget = deleteIcon;\n this.updateStatus(metaData.file, this.localizedTexts('fileUploadCancel'), '5');\n this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n this.removeProgressbar(liElement, 'failure');\n if (deleteIcon) {\n deleteIcon.classList.remove(ABORT_ICON);\n deleteIcon.classList.add(REMOVE_ICON);\n deleteIcon.setAttribute('title', this.localizedTexts('remove'));\n }\n var pauseIcon = liElement.querySelector('.' + PAUSE_UPLOAD);\n if (pauseIcon) {\n pauseIcon.classList.add(RETRY_ICON);\n pauseIcon.classList.remove(PAUSE_UPLOAD);\n pauseIcon.setAttribute('title', this.localizedTexts('retry'));\n }\n if (!isNullOrUndefined(liElement) && !isNullOrUndefined(deleteIcon) && !isNullOrUndefined(liElement.querySelector('.e-spinner-pane'))) {\n hideSpinner(spinnerTarget);\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n }\n };\n Uploader.prototype.pauseUpload = function (metaData, e, custom) {\n metaData.file.statusCode = '4';\n metaData.file.status = this.localizedTexts('pause');\n this.updateMetaData(metaData);\n var eventArgs = {\n event: e ? e : null,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n chunkCount: Math.round(metaData.file.size / this.asyncSettings.chunkSize),\n chunkSize: this.asyncSettings.chunkSize\n };\n this.abortUpload(metaData, custom, eventArgs);\n if (this.sequentialUpload) {\n this.uploadSequential();\n }\n };\n Uploader.prototype.abortUpload = function (metaData, custom, eventArgs) {\n if (metaData.file.statusCode !== '4') {\n metaData.request.emitError = false;\n metaData.request.httpRequest.abort();\n }\n var liElement = this.getLiElement(metaData.file);\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom)) {\n var targetElement = liElement.querySelector('.' + PAUSE_UPLOAD);\n targetElement.classList.remove(PAUSE_UPLOAD);\n targetElement.classList.add(RESUME_UPLOAD);\n targetElement.setAttribute('title', this.localizedTexts('resume'));\n targetElement.nextElementSibling.classList.add(REMOVE_ICON);\n targetElement.nextElementSibling.classList.remove(ABORT_ICON);\n targetElement.nextElementSibling.setAttribute('title', this.localizedTexts('remove'));\n }\n for (var i = 0; i < this.pausedData.length; i++) {\n if (this.pausedData[i].file.name === metaData.file.name) {\n this.pausedData.splice(i, 1);\n }\n }\n this.pausedData.push(metaData);\n this.trigger('pausing', eventArgs);\n };\n Uploader.prototype.resumeUpload = function (metaData, e, custom) {\n var liElement = this.getLiElement(metaData.file);\n var targetElement;\n if (!isNullOrUndefined(liElement)) {\n targetElement = liElement.querySelector('.' + RESUME_UPLOAD);\n }\n if (!isNullOrUndefined(targetElement) && (isNullOrUndefined(custom) || !custom)) {\n targetElement.classList.remove(RESUME_UPLOAD);\n targetElement.classList.add(PAUSE_UPLOAD);\n targetElement.setAttribute('title', this.localizedTexts('pause'));\n targetElement.nextElementSibling.classList.remove(REMOVE_ICON);\n targetElement.nextElementSibling.classList.add(ABORT_ICON);\n targetElement.nextElementSibling.setAttribute('title', this.localizedTexts('abort'));\n }\n metaData.file.status = this.localizedTexts('inProgress');\n metaData.file.statusCode = '3';\n this.updateMetaData(metaData);\n var eventArgs = {\n event: e ? e : null,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n chunkCount: Math.round(metaData.file.size / this.asyncSettings.chunkSize),\n chunkSize: this.asyncSettings.chunkSize\n };\n this.trigger('resuming', eventArgs);\n for (var i = 0; i < this.pausedData.length; i++) {\n if (this.pausedData[i].end === this.pausedData[i].file.size) {\n this.chunkUploadComplete(e, metaData, custom);\n } else {\n if (this.pausedData[i].file.name === metaData.file.name) {\n this.pausedData[i].start = this.pausedData[i].end;\n this.pausedData[i].end = this.pausedData[i].end + this.asyncSettings.chunkSize;\n this.pausedData[i].end = Math.min(this.pausedData[i].end, this.pausedData[i].file.size);\n this.pausedData[i].chunkIndex = this.pausedData[i].chunkIndex + 1;\n this.sendRequest(this.pausedData[i].file, this.pausedData[i], custom);\n }\n }\n }\n };\n Uploader.prototype.updateMetaData = function (metaData) {\n if (this.uploadMetaData.indexOf(metaData) === -1) {\n this.uploadMetaData.push(metaData);\n } else {\n this.uploadMetaData.splice(this.uploadMetaData.indexOf(metaData), 1);\n this.uploadMetaData.push(metaData);\n }\n };\n Uploader.prototype.removeChunkProgressBar = function (metaData) {\n var liElement = this.getLiElement(metaData.file);\n if (!isNullOrUndefined(liElement)) {\n this.updateProgressBarClasses(liElement, UPLOAD_SUCCESS);\n this.removeProgressbar(liElement, 'success');\n var cancelButton = liElement.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(cancelButton)) {\n cancelButton.classList.add(DELETE_ICON);\n cancelButton.setAttribute('title', this.localizedTexts('delete'));\n cancelButton.classList.remove(ABORT_ICON, UPLOAD_INPROGRESS);\n }\n }\n };\n Uploader.prototype.chunkUploadFailed = function (e, metaData, custom) {\n var _this = this;\n var chunkCount = Math.max(Math.ceil(metaData.file.size / this.asyncSettings.chunkSize), 1);\n var liElement;\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom)) {\n liElement = this.getLiElement(metaData.file);\n }\n var requestResponse = e && e.currentTarget ? this.getResponse(e) : null;\n var eventArgs = {\n event: e,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n totalChunk: chunkCount,\n chunkSize: this.asyncSettings.chunkSize,\n cancel: false,\n response: requestResponse\n };\n this.trigger('chunkFailure', eventArgs, function (eventArgs) {\n // To prevent triggering of failure event\n if (!eventArgs.cancel) {\n if (metaData.retryCount < _this.asyncSettings.retryCount) {\n setTimeout(function () {\n _this.retryRequest(liElement, metaData, custom);\n }, _this.asyncSettings.retryAfterDelay);\n } else {\n if (!isNullOrUndefined(liElement)) {\n var pauseButton = liElement.querySelector('.' + PAUSE_UPLOAD) ? liElement.querySelector('.' + PAUSE_UPLOAD) : liElement.querySelector('.' + RESUME_UPLOAD);\n if (!isNullOrUndefined(pauseButton)) {\n pauseButton.classList.add(RETRY_ICON);\n pauseButton.classList.remove(PAUSE_UPLOAD, RESUME_UPLOAD);\n }\n _this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n _this.removeProgressbar(liElement, 'failure');\n liElement.querySelector('.e-icons').classList.remove(UPLOAD_INPROGRESS);\n var iconElement = liElement.querySelector('.' + ABORT_ICON) ? liElement.querySelector('.' + ABORT_ICON) : liElement.querySelector('.' + REMOVE_ICON);\n iconElement.classList.remove(ABORT_ICON);\n if (!isNullOrUndefined(liElement.querySelector('.' + PAUSE_UPLOAD))) {\n detach(liElement.querySelector('.' + PAUSE_UPLOAD));\n }\n if (metaData.start > 0) {\n iconElement.classList.add(DELETE_ICON);\n iconElement.setAttribute('title', _this.localizedTexts('delete'));\n } else {\n iconElement.classList.add(REMOVE_ICON);\n iconElement.setAttribute('title', _this.localizedTexts('remove'));\n }\n }\n metaData.retryCount = 0;\n var file_1 = metaData.file;\n var failureMessage = _this.localizedTexts('uploadFailedMessage');\n var args = {\n e: e,\n response: requestResponse,\n operation: 'upload',\n file: _this.updateStatus(file_1, failureMessage, '0', false),\n statusText: failureMessage\n };\n _this.trigger('failure', args, function (args) {\n _this.updateStatus(file_1, args.statusText, '0');\n _this.uploadSequential();\n _this.checkActionComplete(true);\n });\n }\n }\n });\n };\n Uploader.prototype.retryRequest = function (liElement, metaData, custom) {\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom) && liElement) {\n this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n }\n metaData.retryCount += 1;\n this.sendRequest(metaData.file, metaData);\n };\n Uploader.prototype.checkPausePlayAction = function (e) {\n var targetElement = e.target;\n var selectedElement = e.target.parentElement;\n var index = this.fileList.indexOf(selectedElement);\n var fileData = this.filesData[index];\n var metaData = this.getCurrentMetaData(fileData);\n if (targetElement.classList.contains(PAUSE_UPLOAD)) {\n /* istanbul ignore next */\n this.pauseUpload(metaData, e);\n } else if (targetElement.classList.contains(RESUME_UPLOAD)) {\n /* istanbul ignore next */\n this.resumeUpload(metaData, e);\n } else if (targetElement.classList.contains(RETRY_ICON)) {\n if (metaData.file.status === this.localizedTexts('fileUploadCancel')) {\n this.retryUpload(metaData, false);\n } else {\n this.retryUpload(metaData, true);\n }\n }\n };\n Uploader.prototype.retryUpload = function (metaData, fromcanceledStage) {\n if (fromcanceledStage) {\n metaData.end = metaData.end + this.asyncSettings.chunkSize;\n metaData.start = metaData.start + this.asyncSettings.chunkSize;\n this.sendRequest(metaData.file, metaData);\n } else {\n metaData.file.statusCode = '1';\n metaData.file.status = this.localizedTexts('readyToUploadMessage');\n this.chunkUpload(metaData.file);\n }\n /* istanbul ignore next */\n this.getLiElement(metaData.file).classList.add(RESTRICT_RETRY);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Uploader.prototype.chunkUploadInProgress = function (e, metaData, custom) {\n var _this = this;\n if (metaData.file.statusCode === '4') {\n return;\n }\n if (metaData.file.statusCode !== '4' && metaData.file.statusCode !== '5') {\n metaData.file.statusCode = '3';\n metaData.file.status = this.localizedTexts('inProgress');\n }\n this.updateMetaData(metaData);\n var liElement = this.getLiElement(metaData.file);\n if (isNullOrUndefined(liElement)) {\n return;\n }\n var retryElement = liElement.querySelector('.' + RETRY_ICON);\n if (!isNullOrUndefined(retryElement)) {\n retryElement.classList.add(PAUSE_UPLOAD);\n retryElement.setAttribute('title', this.localizedTexts('pause'));\n retryElement.classList.remove(RETRY_ICON);\n }\n if (!isNullOrUndefined(liElement)) {\n if (!(liElement.querySelectorAll('.' + PROGRESS_WRAPPER).length > 0)) {\n var statusElement = liElement.querySelector('.' + STATUS);\n if (isNullOrUndefined(this.template)) {\n statusElement.classList.add(UPLOAD_INPROGRESS);\n statusElement.classList.remove(UPLOAD_FAILED);\n this.createProgressBar(liElement);\n this.updateProgressBarClasses(liElement, UPLOAD_INPROGRESS);\n }\n var clearIcon = liElement.querySelector('.' + REMOVE_ICON) ? liElement.querySelector('.' + REMOVE_ICON) : liElement.querySelector('.' + DELETE_ICON);\n if (!isNullOrUndefined(clearIcon)) {\n clearIcon.classList.add(ABORT_ICON);\n clearIcon.setAttribute('title', this.localizedTexts('abort'));\n clearIcon.classList.remove(REMOVE_ICON);\n }\n }\n if (!isNaN(Math.round(e.loaded / e.total * 100)) && isNullOrUndefined(this.template) && metaData.file.statusCode !== '4') {\n var progressVal = void 0;\n var totalChunks = Math.ceil(metaData.file.size / this.asyncSettings.chunkSize) - 1;\n if (this.asyncSettings.chunkSize && totalChunks) {\n progressVal = Math.round(metaData.chunkIndex / totalChunks * 100);\n this.changeProgressValue(liElement, progressVal.toString() + '%');\n }\n }\n if (metaData.chunkIndex === 0) {\n this.checkActionButtonStatus();\n }\n }\n if (isNullOrUndefined(liElement.querySelector('.' + PAUSE_UPLOAD)) && isNullOrUndefined(this.template) && isNullOrUndefined(liElement.querySelector('.' + DELETE_ICON))) {\n this.pauseButton = this.createElement('span', {\n className: 'e-icons e-file-pause-btn',\n attrs: {\n 'tabindex': this.btnTabIndex\n }\n });\n if (this.browserName === 'msie') {\n this.pauseButton.classList.add('e-msie');\n }\n var abortIcon = liElement.querySelector('.' + ABORT_ICON);\n abortIcon.parentElement.insertBefore(this.pauseButton, abortIcon);\n this.pauseButton.setAttribute('title', this.localizedTexts('pause'));\n this.pauseButton.addEventListener('click', function (e) {\n _this.checkPausePlayAction(e);\n }, false);\n }\n };\n /**\n * It is used to convert bytes value into kilobytes or megabytes depending on the size based\n * on [binary prefix](https://en.wikipedia.org/wiki/Binary_prefix).\n *\n * @param { number } bytes - Specifies the file size in bytes.\n * @returns {string} - Returns the file size.\n */\n Uploader.prototype.bytesToSize = function (bytes) {\n var i = -1;\n if (!bytes) {\n return '0.0 KB';\n }\n do {\n bytes = bytes / 1024;\n i++;\n } while (bytes > 99);\n if (i >= 2) {\n bytes = bytes * 1024;\n i = 1;\n }\n return Math.max(bytes, 0).toFixed(1) + ' ' + ['KB', 'MB'][i];\n };\n /**\n * Allows you to sort the file data alphabetically based on its file name clearly.\n *\n * @param { FileList } filesData - specifies the files data for upload.\n * @returns {File[]}\n */\n /* istanbul ignore next */\n Uploader.prototype.sortFileList = function (filesData) {\n filesData = filesData ? filesData : this.sortFilesList;\n var files = filesData;\n var fileNames = [];\n for (var i = 0; i < files.length; i++) {\n fileNames.push(files[i].name);\n }\n var sortedFileNames = fileNames.sort();\n var sortedFilesData = [];\n for (var _i = 0, sortedFileNames_1 = sortedFileNames; _i < sortedFileNames_1.length; _i++) {\n var name_3 = sortedFileNames_1[_i];\n for (var i = 0; i < files.length; i++) {\n if (name_3 === files[i].name) {\n sortedFilesData.push(files[i]);\n }\n }\n }\n return sortedFilesData;\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 Uploader.prototype.destroy = function () {\n this.element.value = null;\n this.clearTemplate();\n this.clearAll();\n this.unWireEvents();\n this.unBindDropEvents();\n if (this.multiple) {\n this.element.removeAttribute('multiple');\n }\n if (!this.enabled) {\n this.element.removeAttribute('disabled');\n }\n this.element.removeAttribute('accept');\n this.setInitialAttributes();\n var attributes = ['aria-label', 'directory', 'webkitdirectory', 'tabindex'];\n for (var _i = 0, attributes_2 = attributes; _i < attributes_2.length; _i++) {\n var key = attributes_2[_i];\n this.element.removeAttribute(key);\n }\n if (!isNullOrUndefined(this.uploadWrapper)) {\n this.uploadWrapper.parentElement.appendChild(this.element);\n detach(this.uploadWrapper);\n }\n this.uploadWrapper = null;\n this.uploadWrapper = null;\n this.browseButton = null;\n this.dropAreaWrapper = null;\n this.dropZoneElement = null;\n this.dropArea = null;\n this.keyboardModule = null;\n this.clearButton = null;\n this.uploadButton = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Allows you to call the upload process manually by calling save URL action.\n * To process the selected files (added in upload queue), pass an empty argument otherwise\n * upload the specific file based on its argument.\n *\n * @param { FileInfo | FileInfo[] } files - Specifies the files data for upload.\n * @param {boolean} custom - Specifies whether the uploader is rendered with custom file list.\n * @returns {void}\n */\n Uploader.prototype.upload = function (files, custom) {\n var _this = this;\n files = files ? files : this.filesData;\n if (this.sequentialUpload && (this.isFirstFileOnSelection || custom)) {\n this.sequenceUpload(files);\n } else {\n var uploadFiles_1 = this.getFilesInArray(files);\n var eventArgs = {\n customFormData: [],\n currentRequest: null,\n cancel: false\n };\n this.trigger('beforeUpload', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.customFormDatas = eventArgs.customFormData && eventArgs.customFormData.length > 0 ? eventArgs.customFormData : _this.customFormDatas;\n _this.uploadFiles(uploadFiles_1, custom);\n }\n });\n }\n };\n Uploader.prototype.getFilesInArray = function (files) {\n var uploadFiles = [];\n if (files) {\n if (files instanceof Array) {\n uploadFiles = files;\n } else {\n uploadFiles.push(files);\n }\n }\n return uploadFiles;\n };\n /* istanbul ignore next */\n Uploader.prototype.serverReadFileBase64 = function (fileIndex, position, totalCount) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n var file = _this.fileStreams[fileIndex].rawFile;\n try {\n var reader = new FileReader();\n reader.onload = function (args) {\n return function () {\n try {\n var contents = args.result;\n var data = contents ? contents.split(';base64,')[1] : null;\n resolve(data);\n } catch (e) {\n reject(e);\n }\n };\n }(reader);\n reader.readAsDataURL(file.slice(position, position + totalCount));\n } catch (e) {\n reject(e);\n }\n });\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n /* istanbul ignore next */\n Uploader.prototype.uploadFileCount = function (ele) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var files = this.filesData;\n if (!files || files.length === 0) {\n return -1;\n }\n var result = files.length;\n return result;\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n /* istanbul ignore next */\n Uploader.prototype.getFileRead = function (index, ele) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var files = this.filesData;\n if (!files || files.length === 0) {\n return -1;\n }\n var file = files[index];\n var fileCount = this.newFileRef++;\n this.fileStreams[fileCount] = file;\n return fileCount;\n };\n Uploader.prototype.uploadFiles = function (files, custom) {\n var selectedFiles = [];\n if (this.asyncSettings.saveUrl === '' || isNullOrUndefined(this.asyncSettings.saveUrl)) {\n return;\n }\n if (!custom || isNullOrUndefined(custom)) {\n if (!this.multiple) {\n var file = [];\n file.push(files[0]);\n selectedFiles = this.filterfileList(file);\n } else {\n selectedFiles = this.filterfileList(files);\n }\n } else {\n selectedFiles = files;\n }\n for (var i = 0; i < selectedFiles.length; i++) {\n this.uploadFilesRequest(selectedFiles, i, custom);\n }\n };\n Uploader.prototype.uploadFilesRequest = function (selectedFiles, i, custom) {\n var _this = this;\n var chunkEnabled = this.checkChunkUpload();\n var ajax = new Ajax(this.asyncSettings.saveUrl, 'POST', true, null);\n ajax.emitError = false;\n var eventArgs = {\n fileData: selectedFiles[i],\n customFormData: [],\n cancel: false\n };\n var formData = new FormData();\n ajax.beforeSend = function (e) {\n eventArgs.currentRequest = ajax.httpRequest;\n _this.trigger('uploading', eventArgs, function (eventArgs) {\n /* istanbul ignore next */\n if (eventArgs.cancel) {\n _this.eventCancelByArgs(e, eventArgs, selectedFiles[i]);\n }\n if (_this.customFormDatas && _this.customFormDatas.length > 0) {\n _this.updateFormData(formData, _this.customFormDatas);\n }\n _this.updateFormData(formData, eventArgs.customFormData);\n });\n };\n if (selectedFiles[i].statusCode === '1') {\n var name_4 = this.element.getAttribute('name');\n formData.append(name_4, selectedFiles[i].rawFile, selectedFiles[i].name);\n if (chunkEnabled && selectedFiles[i].size > this.asyncSettings.chunkSize) {\n this.chunkUpload(selectedFiles[i], custom, i);\n } else {\n ajax.onLoad = function (e) {\n if (eventArgs.cancel) {\n return {};\n } else {\n _this.uploadComplete(e, selectedFiles[i], custom);\n return {};\n }\n };\n ajax.onUploadProgress = function (e) {\n if (eventArgs.cancel) {\n return {};\n } else {\n _this.uploadInProgress(e, selectedFiles[i], custom, ajax);\n return {};\n }\n };\n /* istanbul ignore next */\n ajax.onError = function (e) {\n _this.uploadFailed(e, selectedFiles[i]);\n return {};\n };\n ajax.send(formData);\n }\n }\n };\n Uploader.prototype.spliceFiles = function (liIndex) {\n var liElement = this.fileList[liIndex];\n var allFiles = this.getFilesData();\n var nameElements = +liElement.getAttribute('data-files-count');\n var startIndex = 0;\n for (var i = 0; i < liIndex; i++) {\n startIndex += +this.fileList[i].getAttribute('data-files-count');\n }\n var endIndex = startIndex + nameElements - 1;\n for (var j = endIndex; j >= startIndex; j--) {\n allFiles.splice(j, 1);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Remove the uploaded file from server manually by calling the remove URL action.\n * If you pass an empty argument to this method, the complete file list can be cleared,\n * otherwise remove the specific file based on its argument (“file_dataâ€).\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to remove from file list/server.\n * @param { boolean } customTemplate - Set true if the component rendering with customize template.\n * @param { boolean } removeDirectly - Set true if files remove without removing event.\n * @param { boolean } postRawFile - Set false, to post file name only to the remove action.\n * @returns {void}\n */\n Uploader.prototype.remove = function (fileData, customTemplate, removeDirectly, postRawFile, args) {\n var _this = this;\n if (isNullOrUndefined(postRawFile)) {\n postRawFile = true;\n }\n var eventArgs = {\n event: args,\n cancel: false,\n filesData: [],\n customFormData: [],\n postRawFile: postRawFile,\n currentRequest: null\n };\n var beforeEventArgs = {\n cancel: false,\n customFormData: [],\n currentRequest: null\n };\n this.trigger('beforeRemove', beforeEventArgs, function (beforeEventArgs) {\n if (!beforeEventArgs.cancel) {\n if (_this.isFormUpload()) {\n eventArgs.filesData = fileData;\n _this.trigger('removing', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n var removingFiles = _this.getFilesInArray(fileData);\n var isLiRemoved = false;\n var liIndex = void 0;\n for (var _i = 0, removingFiles_1 = removingFiles; _i < removingFiles_1.length; _i++) {\n var data = removingFiles_1[_i];\n if (!isLiRemoved) {\n liIndex = _this.fileList.indexOf(data.list);\n }\n if (liIndex > -1) {\n var inputElement = !isNullOrUndefined(data.input) ? data.input : null;\n if (inputElement) {\n detach(inputElement);\n }\n _this.spliceFiles(liIndex);\n detach(_this.fileList[liIndex]);\n _this.fileList.splice(liIndex, 1);\n isLiRemoved = true;\n liIndex = -1;\n }\n }\n }\n });\n } else if (_this.isForm && (isNullOrUndefined(_this.asyncSettings.removeUrl) || _this.asyncSettings.removeUrl === '')) {\n eventArgs.filesData = _this.getFilesData();\n _this.trigger('removing', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.clearAll();\n }\n });\n } else {\n var removeFiles = [];\n fileData = !isNullOrUndefined(fileData) ? fileData : _this.filesData;\n if (fileData instanceof Array) {\n removeFiles = fileData;\n } else {\n removeFiles.push(fileData);\n }\n eventArgs.filesData = removeFiles;\n var removeUrl = _this.asyncSettings.removeUrl;\n var validUrl = removeUrl === '' || isNullOrUndefined(removeUrl) ? false : true;\n var _loop_5 = function (files) {\n var fileUploadedIndex = _this.uploadedFilesData.indexOf(files);\n if ((files.statusCode === '2' || files.statusCode === '4' || files.statusCode === '0' && fileUploadedIndex !== -1) && validUrl) {\n _this.removeUploadedFile(files, eventArgs, removeDirectly, customTemplate);\n } else {\n if (!removeDirectly) {\n _this.trigger('removing', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.removeFilesData(files, customTemplate);\n }\n });\n } else {\n _this.removeFilesData(files, customTemplate);\n }\n }\n if (args && !args.target.classList.contains(REMOVE_ICON)) {\n _this.checkActionComplete(false);\n }\n };\n for (var _i = 0, removeFiles_1 = removeFiles; _i < removeFiles_1.length; _i++) {\n var files = removeFiles_1[_i];\n _loop_5(files);\n }\n }\n }\n });\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n /**\n * Clear all the file entries from list that can be uploaded files or added in upload queue.\n *\n * @returns {void}\n */\n Uploader.prototype.clearAll = function () {\n var _this = this;\n if (isNullOrUndefined(this.listParent)) {\n if (this.browserName !== 'msie') {\n this.element.value = '';\n }\n this.filesData = [];\n return;\n }\n var eventArgs = {\n cancel: false,\n filesData: this.filesData\n };\n this.trigger('clearing', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.clearData();\n _this.actionCompleteCount = 0;\n _this.count = -1;\n }\n });\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Get the data of files which are shown in file list.\n *\n * @param { number } index - specifies the file list item(li) index.\n * @returns {FileInfo[]}\n */\n Uploader.prototype.getFilesData = function (index) {\n if (isNullOrUndefined(index)) {\n return this.filesData;\n } else {\n return this.getSelectedFiles(index);\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Pauses the in-progress chunked upload based on the file data.\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to pause from uploading.\n * @param { boolean } custom - Set true if used custom UI.\n * @returns {void}\n */\n Uploader.prototype.pause = function (fileData, custom) {\n fileData = fileData ? fileData : this.filesData;\n var fileDataFiles = this.getFilesInArray(fileData);\n this.pauseUploading(fileDataFiles, custom);\n };\n Uploader.prototype.pauseUploading = function (fileData, custom) {\n var files = this.getFiles(fileData);\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '3') {\n this.pauseUpload(this.getCurrentMetaData(files[i], null), null, custom);\n }\n }\n };\n Uploader.prototype.getFiles = function (fileData) {\n var files = [];\n if (!isNullOrUndefined(fileData) && !(fileData instanceof Array)) {\n files.push(fileData);\n } else {\n files = fileData;\n }\n return files;\n };\n /**\n * Resumes the chunked upload that is previously paused based on the file data.\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to resume the paused file.\n * @param { boolean } custom - Set true if used custom UI.\n * @returns {void}\n */\n Uploader.prototype.resume = function (fileData, custom) {\n fileData = fileData ? fileData : this.filesData;\n var fileDataFiles = this.getFilesInArray(fileData);\n this.resumeFiles(fileDataFiles, custom);\n };\n Uploader.prototype.resumeFiles = function (fileData, custom) {\n var files = this.getFiles(fileData);\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '4') {\n this.resumeUpload(this.getCurrentMetaData(files[i], null), null, custom);\n }\n }\n };\n /**\n * Retries the canceled or failed file upload based on the file data.\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to retry the canceled or failed file.\n * @param { boolean } fromcanceledStage - Set true to retry from canceled stage and set false to retry from initial stage.\n * @param {boolean} custom -Specifies whether the uploader is rendered with custom file list.\n * @returns {void}\n */\n Uploader.prototype.retry = function (fileData, fromcanceledStage, custom) {\n fileData = fileData ? fileData : this.filesData;\n var fileDataFiles = this.getFilesInArray(fileData);\n if (this.sequentialUpload && this.isFirstFileOnSelection) {\n this.isFirstFileOnSelection = false;\n }\n this.retryFailedFiles(fileDataFiles, fromcanceledStage, custom);\n };\n Uploader.prototype.retryFailedFiles = function (fileData, fromcanceledStage, custom) {\n var files = this.getFiles(fileData);\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '5' || files[i].statusCode === '0') {\n if (this.asyncSettings.chunkSize > 0 && this.getCurrentMetaData(files[i], null)) {\n this.retryUpload(this.getCurrentMetaData(files[i], null), fromcanceledStage);\n } else {\n var liElement = void 0;\n if (!custom) {\n liElement = this.fileList[this.filesData.indexOf(files[i])];\n }\n this.reloadcanceledFile(null, files[i], liElement, custom);\n }\n }\n }\n };\n /**\n * Stops the in-progress chunked upload based on the file data.\n * When the file upload is canceled, the partially uploaded file is removed from server.\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to cancel the progressing file.\n * @returns {void}\n */\n Uploader.prototype.cancel = function (fileData) {\n fileData = fileData ? fileData : this.filesData;\n var cancelingFiles = this.getFilesInArray(fileData);\n this.cancelUpload(cancelingFiles);\n };\n Uploader.prototype.cancelUpload = function (fileData) {\n var files = this.getFiles(fileData);\n if (this.asyncSettings.chunkSize > 0) {\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '3') {\n var metaData = this.getCurrentMetaData(files[i], null);\n metaData.file.statusCode = '5';\n metaData.file.status = this.localizedTexts('fileUploadCancel');\n this.updateMetaData(metaData);\n this.showHideUploadSpinner(files[i]);\n }\n }\n } else {\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '3') {\n files[i].statusCode = '5';\n files[i].status = this.localizedTexts('fileUploadCancel');\n this.showHideUploadSpinner(files[i]);\n }\n }\n }\n };\n Uploader.prototype.showHideUploadSpinner = function (files) {\n var liElement = this.getLiElement(files);\n if (!isNullOrUndefined(liElement) && isNullOrUndefined(this.template)) {\n var spinnerTarget = liElement.querySelector('.' + ABORT_ICON);\n createSpinner({\n target: spinnerTarget,\n width: '20px'\n });\n showSpinner(spinnerTarget);\n }\n };\n __decorate([Complex({\n saveUrl: '',\n removeUrl: ''\n }, AsyncSettings)], Uploader.prototype, \"asyncSettings\", void 0);\n __decorate([Property(false)], Uploader.prototype, \"sequentialUpload\", void 0);\n __decorate([Property({})], Uploader.prototype, \"htmlAttributes\", void 0);\n __decorate([Property('')], Uploader.prototype, \"cssClass\", void 0);\n __decorate([Property(true)], Uploader.prototype, \"enabled\", void 0);\n __decorate([Property(null)], Uploader.prototype, \"template\", void 0);\n __decorate([Property(true)], Uploader.prototype, \"multiple\", void 0);\n __decorate([Property(true)], Uploader.prototype, \"autoUpload\", void 0);\n __decorate([Property(true)], Uploader.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([Complex({}, ButtonsProps)], Uploader.prototype, \"buttons\", void 0);\n __decorate([Property('')], Uploader.prototype, \"allowedExtensions\", void 0);\n __decorate([Property(0)], Uploader.prototype, \"minFileSize\", void 0);\n __decorate([Property(30000000)], Uploader.prototype, \"maxFileSize\", void 0);\n __decorate([Property(null)], Uploader.prototype, \"dropArea\", void 0);\n __decorate([Collection([{}], FilesProp)], Uploader.prototype, \"files\", void 0);\n __decorate([Property(true)], Uploader.prototype, \"showFileList\", void 0);\n __decorate([Property(false)], Uploader.prototype, \"directoryUpload\", void 0);\n __decorate([Property('Default')], Uploader.prototype, \"dropEffect\", void 0);\n __decorate([Event()], Uploader.prototype, \"created\", void 0);\n __decorate([Event()], Uploader.prototype, \"actionComplete\", void 0);\n __decorate([Event()], Uploader.prototype, \"rendering\", void 0);\n __decorate([Event()], Uploader.prototype, \"beforeUpload\", void 0);\n __decorate([Event()], Uploader.prototype, \"fileListRendering\", void 0);\n __decorate([Event()], Uploader.prototype, \"selected\", void 0);\n __decorate([Event()], Uploader.prototype, \"uploading\", void 0);\n __decorate([Event()], Uploader.prototype, \"success\", void 0);\n __decorate([Event()], Uploader.prototype, \"failure\", void 0);\n __decorate([Event()], Uploader.prototype, \"removing\", void 0);\n __decorate([Event()], Uploader.prototype, \"beforeRemove\", void 0);\n __decorate([Event()], Uploader.prototype, \"clearing\", void 0);\n __decorate([Event()], Uploader.prototype, \"progress\", void 0);\n __decorate([Event()], Uploader.prototype, \"change\", void 0);\n __decorate([Event()], Uploader.prototype, \"chunkSuccess\", void 0);\n __decorate([Event()], Uploader.prototype, \"chunkFailure\", void 0);\n __decorate([Event()], Uploader.prototype, \"chunkUploading\", void 0);\n __decorate([Event()], Uploader.prototype, \"canceling\", void 0);\n __decorate([Event()], Uploader.prototype, \"pausing\", void 0);\n __decorate([Event()], Uploader.prototype, \"resuming\", void 0);\n Uploader = __decorate([NotifyPropertyChanges], Uploader);\n return Uploader;\n}(Component);\nexport { Uploader };\n/* eslint-enable @typescript-eslint/no-explicit-any */","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};\nimport { ChildProperty, extend, deleteObject, Property, addClass, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @param {Object} props - Specifies the properties\n * @param {string[]} model - Specifies the model\n * @returns {Object} Component Model\n */\nexport function getModel(props, model) {\n var obj = extend({}, props);\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var prop = _a[_i];\n if (model.indexOf(prop) < 0) {\n deleteObject(obj, prop);\n }\n }\n return obj;\n}\n/** @hidden\n * @param {HTMLElement} ul - Specifies the UL element\n * @param {number} keyCode - Specifies the keycode\n * @returns {void}\n */\nexport function upDownKeyHandler(ul, keyCode) {\n var defaultIdx = keyCode === 40 ? 0 : ul.childElementCount - 1;\n var liIdx = defaultIdx;\n var li;\n var selectedLi = ul.querySelector('.e-selected');\n if (selectedLi) {\n selectedLi.classList.remove('e-selected');\n }\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains('e-focused')) {\n li = ul.children[i];\n liIdx = i;\n li.classList.remove('e-focused');\n if (keyCode === 40) {\n liIdx++;\n } else {\n liIdx--;\n }\n if (liIdx === (keyCode === 40 ? ul.childElementCount : -1)) {\n liIdx = defaultIdx;\n }\n }\n }\n li = ul.children[liIdx];\n liIdx = isValidLI(ul, li, liIdx, keyCode);\n if (liIdx !== -1) {\n addClass([ul.children[liIdx]], 'e-focused');\n ul.children[liIdx].focus();\n }\n}\n/**\n * Get Valid LI element\n *\n * @param {HTMLElement} ul - Specifies the UL element\n * @param {Element} li - Specifies the LI element\n * @param {number} index - Specifies the index\n * @param {number} keyCode - Specifies the keycode\n * @param {number} count - Specifies the count\n * @returns {number} - Index\n */\nfunction isValidLI(ul, li, index, keyCode, count) {\n if (count === void 0) {\n count = 0;\n }\n if (li.classList.contains('e-separator') || li.classList.contains('e-disabled')) {\n if (index === (keyCode === 40 ? ul.childElementCount - 1 : 0)) {\n index = keyCode === 40 ? 0 : ul.childElementCount - 1;\n } else {\n if (keyCode === 40) {\n index++;\n } else {\n index--;\n }\n }\n }\n li = ul.children[index];\n if (li.classList.contains('e-separator') || li.classList.contains('e-disabled')) {\n count++;\n if (count === ul.childElementCount) {\n return index = -1;\n }\n index = isValidLI(ul, li, index, keyCode, count);\n }\n return index;\n}\n/** @hidden\n * @param {HTMLElement} popup - Specifies the popup element.\n * @param {boolean} blankIcon - Specifies the blankIcon value.\n * @returns {void}\n */\nexport function setBlankIconStyle(popup, blankIcon) {\n var blankIconList = [].slice.call(popup.getElementsByClassName('e-blank-icon'));\n if (blankIcon) {\n var menuItem = [].slice.call(popup.getElementsByClassName('e-item'));\n menuItem.forEach(function (li) {\n if (li.style.paddingLeft || li.style.paddingRight) {\n li.removeAttribute('style');\n }\n });\n }\n if (!blankIconList.length) {\n return;\n }\n var iconLi = popup.querySelector('.e-item:not(.e-blank-icon):not(.e-separator)');\n if (isNullOrUndefined(iconLi)) {\n return;\n }\n if (iconLi.classList.contains('e-url')) {\n iconLi = iconLi.querySelector('.e-menu-url');\n }\n var icon = iconLi.querySelector('.e-menu-icon');\n var cssProp;\n var enableRtl = popup.classList.contains('e-rtl');\n if (enableRtl) {\n cssProp = {\n padding: 'paddingRight',\n margin: 'marginLeft'\n };\n } else {\n cssProp = {\n padding: 'paddingLeft',\n margin: 'marginRight'\n };\n }\n /* eslint-disable */\n var size = parseInt(getComputedStyle(icon).fontSize, 10) + parseInt(enableRtl ? getComputedStyle(icon)[cssProp.margin] : getComputedStyle(icon)[cssProp.margin], 10) + parseInt(getComputedStyle(iconLi).paddingLeft, 10) + \"px\";\n blankIconList.forEach(function (li) {\n if (li.classList.contains('e-url') && li.querySelector('.e-menu-url')) {\n li.querySelector('.e-menu-url').style[cssProp.padding] = size;\n } else {\n li.style[cssProp.padding] = size;\n }\n });\n /* eslint-enable */\n}\n/**\n * Defines the items of Split Button/DropDownButton.\n */\nvar Item = /** @class */function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('')], Item.prototype, \"iconCss\", void 0);\n __decorate([Property('')], Item.prototype, \"id\", void 0);\n __decorate([Property(false)], Item.prototype, \"separator\", void 0);\n __decorate([Property('')], Item.prototype, \"text\", void 0);\n __decorate([Property('')], Item.prototype, \"url\", void 0);\n __decorate([Property(false)], Item.prototype, \"disabled\", void 0);\n return Item;\n}(ChildProperty);\nexport { Item };","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};\nimport { Collection, Event, NotifyPropertyChanges, detach, Property, EventHandler, isRippleEnabled, isNullOrUndefined, append, formatUnit, Animation } from '@syncfusion/ej2-base';\nimport { addClass, getUniqueID, rippleEffect, getComponent, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { attributes, Component, closest, select, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { classList, removeClass, compile } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { upDownKeyHandler } from './../common/common';\nimport { getModel, Item, setBlankIconStyle } from './../common/common';\nvar classNames = {\n DISABLED: 'e-disabled',\n FOCUS: 'e-focused',\n ICON: 'e-menu-icon',\n ITEM: 'e-item',\n POPUP: 'e-dropdown-popup',\n RTL: 'e-rtl',\n SEPARATOR: 'e-separator',\n VERTICAL: 'e-vertical',\n POPUPWIDTH: 'e-dropdown-popup-width'\n};\n/**\n * Animation configuration settings.\n */\nvar DropDownMenuAnimationSettings = /** @class */function (_super) {\n __extends(DropDownMenuAnimationSettings, _super);\n function DropDownMenuAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('SlideDown')], DropDownMenuAnimationSettings.prototype, \"effect\", void 0);\n __decorate([Property(400)], DropDownMenuAnimationSettings.prototype, \"duration\", void 0);\n __decorate([Property('ease')], DropDownMenuAnimationSettings.prototype, \"easing\", void 0);\n return DropDownMenuAnimationSettings;\n}(ChildProperty);\nexport { DropDownMenuAnimationSettings };\n/**\n * DropDownButton component is used to toggle contextual overlays for displaying list of action items.\n * It can contain both text and images.\n * ```html\n * <button id=\"element\">DropDownButton</button>\n * ```\n * ```typescript\n * <script>\n * var dropDownButtonObj = new DropDownButton({items: [{ text: 'Action1' }, { text: 'Action2' },{ text: 'Action3' }]);\n * dropDownButtonObj.appendTo(\"#element\");\n * </script>\n * ```\n */\nvar DropDownButton = /** @class */function (_super) {\n __extends(DropDownButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DropDownButtonModel} options - Specifies dropdown button model\n * @param {string|HTMLButtonElement} element - Specifies element\n * @hidden\n */\n function DropDownButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isPopupCreated = true;\n return _this;\n }\n DropDownButton.prototype.preRender = function () {\n /** */\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n DropDownButton.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @returns {void}\n */\n DropDownButton.prototype.toggle = function () {\n if (this.canOpen()) {\n this.openPopUp();\n } else if (this.createPopupOnClick && !this.isPopupCreated) {\n this.createPopup();\n this.openPopUp();\n } else {\n this.closePopup();\n }\n };\n /**\n * Initialize the Component rendering\n *\n * @returns {void}\n * @private\n */\n DropDownButton.prototype.render = function () {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n };\n /**\n * Adds a new item to the menu. By default, new item appends to the list as the last item,\n * but you can insert based on the text parameter.\n *\n * @param { ItemModel[] } items - Specifies an array of JSON data.\n * @param { string } text - Specifies the text to insert the newly added item in the menu.\n * @returns {void}.\n */\n DropDownButton.prototype.addItems = function (items, text) {\n var newItem;\n var idx = this.items.length;\n for (var j = 0, len = this.items.length; j < len; j++) {\n if (text === this.items[j].text) {\n idx = j;\n break;\n }\n }\n for (var i = items.length - 1; i >= 0; i--) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newItem = new Item(this, 'items', items[i], true);\n this.items.splice(idx, 0, newItem);\n }\n if (!this.canOpen()) {\n this.createItems();\n }\n };\n /**\n * Removes the items from the menu.\n *\n * @param { string[] } items - Specifies an array of string to remove the items.\n * @param { string } isUniqueId - Set `true` if specified items is a collection of unique id.\n * @returns {void}.\n */\n DropDownButton.prototype.removeItems = function (items, isUniqueId) {\n var refresh = false;\n for (var i = 0, len = items.length; i < len; i++) {\n for (var j = 0, len_1 = this.items.length; j < len_1; j++) {\n if (items[i] === (isUniqueId ? this.items[j].id : this.items[j].text)) {\n this.items.splice(j, 1);\n refresh = true;\n break;\n }\n }\n }\n if (refresh && this.getULElement()) {\n this.createItems();\n }\n };\n DropDownButton.prototype.createPopup = function () {\n var _a;\n var div = this.createElement('div', {\n className: this.popupWidth !== 'auto' ? classNames.POPUP + \" \" + classNames.POPUPWIDTH : classNames.POPUP,\n id: this.element.id + '-popup'\n });\n document.body.appendChild(div);\n this.dropDown = new Popup(div, {\n width: this.popupWidth,\n relateTo: this.element,\n collision: {\n X: 'fit',\n Y: 'flip'\n },\n position: {\n X: 'left',\n Y: 'bottom'\n },\n targetType: 'relative',\n content: this.target ? this.getTargetElement() : '',\n enableRtl: this.enableRtl\n });\n this.dropDown.element.setAttribute('role', 'dialog');\n this.dropDown.element.setAttribute('aria-label', 'dropdown menu');\n if (!isNullOrUndefined(this.popupContent)) {\n this.popupContent.style.display = '';\n }\n if (this.dropDown.element.style.position === 'fixed') {\n this.dropDown.refreshPosition(this.element);\n }\n this.dropDown.hide();\n attributes(this.element, (_a = {}, _a['aria-haspopup'] = this.items.length || this.target ? 'true' : 'false', _a['aria-expanded'] = 'false', _a['type'] = 'button', _a));\n if (this.cssClass) {\n addClass([div], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.isPopupCreated = true;\n if (this.createPopupOnClick) {\n var splitButton = getComponent(this.activeElem[0], 'split-btn');\n if (splitButton) {\n splitButton.isPopupCreated = true;\n }\n }\n };\n DropDownButton.prototype.getTargetElement = function () {\n if (this.createPopupOnClick && !this.isColorPicker() && !isNullOrUndefined(this.popupContent)) {\n return this.popupContent;\n }\n return typeof this.target === 'string' ? select(this.target) : this.target;\n };\n DropDownButton.prototype.createItems = function (appendItems) {\n var _this = this;\n var items = this.items;\n var showIcon = this.hasIcon(this.items, 'iconCss');\n var span;\n var item;\n var li;\n var eventArgs;\n var ul = this.getULElement();\n if (ul) {\n ul.innerHTML = '';\n } else {\n ul = this.createElement('ul', {\n attrs: {\n 'role': 'menu',\n 'tabindex': '0'\n }\n });\n }\n if (this.itemTemplate) {\n var compiledTemplate_1 = this.compiletemplate(this.itemTemplate);\n items.forEach(function (item) {\n var li = _this.createElement('li', {\n className: item.separator ? classNames.ITEM + ' ' + classNames.SEPARATOR : classNames.ITEM,\n attrs: item.separator ? {\n 'role': 'separator',\n 'tabindex': '-1',\n 'aria-label': 'separator',\n 'aria-hidden': 'true'\n } : {\n 'role': 'menuitem',\n 'tabindex': '-1',\n 'aria-label': item.text\n },\n id: item.id ? item.id : getUniqueID('e-' + _this.getModuleName() + '-item')\n });\n var compiledElement = compiledTemplate_1(item, _this, 'template', null, false, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n if (item.disabled) {\n li.classList.add('e-disabled');\n }\n var eventArgs = {\n item: item,\n element: li\n };\n _this.trigger('beforeItemRender', eventArgs);\n if (eventArgs.item.disabled !== item.disabled) {\n li.classList[eventArgs.item.disabled ? 'add' : 'remove']('e-disabled');\n }\n ul.appendChild(li);\n });\n if (this.isReact) {\n this.renderReactTemplates();\n }\n } else {\n for (var i = 0; i < items.length; i++) {\n item = items[i];\n if (this.enableHtmlSanitizer) {\n item.text = SanitizeHtmlHelper.sanitize(item.text);\n }\n var tempItem = item.text;\n li = this.createElement('li', {\n innerHTML: item.url ? '' : tempItem,\n className: item.separator ? classNames.ITEM + ' ' + classNames.SEPARATOR : classNames.ITEM,\n attrs: item.separator ? {\n 'role': 'separator',\n 'tabindex': '-1',\n 'aria-label': 'separator',\n 'aria-hidden': 'true'\n } : {\n 'role': 'menuitem',\n 'tabindex': '-1',\n 'aria-label': tempItem\n },\n id: item.id ? item.id : getUniqueID('e-' + this.getModuleName() + '-item')\n });\n if (this.enableHtmlSanitizer) {\n li.textContent = item.url ? '' : tempItem;\n } else {\n li.innerHTML = item.url ? '' : tempItem;\n }\n if (item.url) {\n li.appendChild(this.createAnchor(item));\n li.classList.add('e-url');\n }\n if (item.iconCss) {\n span = this.createElement('span', {\n className: classNames.ICON + ' ' + item.iconCss\n });\n if (item.url) {\n li.childNodes[0].appendChild(span);\n } else {\n li.insertBefore(span, li.childNodes[0]);\n }\n } else {\n if (showIcon && !item.separator) {\n li.classList.add('e-blank-icon');\n }\n }\n var beforeDisabled = item.disabled;\n if (item.disabled) {\n li.classList.add('e-disabled');\n }\n eventArgs = {\n item: item,\n element: li\n };\n this.trigger('beforeItemRender', eventArgs);\n var afterDisabled = eventArgs.item.disabled;\n if (beforeDisabled !== afterDisabled) {\n if (eventArgs.item.disabled) {\n li.classList.add('e-disabled');\n } else {\n li.classList.remove('e-disabled');\n }\n }\n ul.appendChild(li);\n }\n }\n if (appendItems) {\n this.getPopUpElement().appendChild(ul);\n }\n if (showIcon) {\n setBlankIconStyle(this.getPopUpElement());\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownButton.prototype.compiletemplate = function (template) {\n if (!this.itemTemplate) {\n return undefined;\n }\n try {\n if (typeof this.itemTemplate !== 'function') {\n var templateElement = document.querySelector(this.itemTemplate);\n if (templateElement) {\n return compile(templateElement.innerHTML.trim());\n }\n }\n return compile(template);\n } catch (_a) {\n return compile(template);\n }\n };\n DropDownButton.prototype.hasIcon = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][\"\" + field]) {\n return true;\n }\n }\n return false;\n };\n DropDownButton.prototype.createAnchor = function (item) {\n var tempItem = item.text;\n var anchor = this.createElement('a', {\n className: 'e-menu-text e-menu-url',\n attrs: {\n 'href': item.url\n }\n });\n if (this.enableHtmlSanitizer) {\n anchor.textContent = tempItem;\n } else {\n anchor.innerHTML = tempItem;\n }\n return anchor;\n };\n DropDownButton.prototype.initialize = function () {\n this.button = new Button({\n iconCss: this.iconCss,\n iconPosition: this.iconPosition,\n cssClass: this.cssClass,\n content: this.content,\n disabled: this.disabled,\n enableRtl: this.enableRtl,\n enablePersistence: this.enablePersistence\n });\n this.button.createElement = this.createElement;\n this.button.appendTo(this.element);\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.appendArrowSpan();\n this.setActiveElem([this.element]);\n this.element.setAttribute('tabindex', '0');\n this.element.setAttribute('aria-label', this.element.textContent ? this.element.textContent : 'dropdownbutton');\n if (this.target && !this.isColorPicker() && !this.createPopupOnClick || !this.createPopupOnClick) {\n this.createPopup();\n } else {\n this.isPopupCreated = false;\n if (this.target && !this.isColorPicker() && this.createPopupOnClick) {\n this.popupContent = this.getTargetElement();\n this.popupContent.style.display = 'none';\n }\n }\n };\n DropDownButton.prototype.isColorPicker = function () {\n if (!this.element) {\n return false;\n }\n var prevElem = this.element.previousSibling;\n if (prevElem && prevElem.classList && prevElem.classList.contains('e-split-colorpicker')) {\n return true;\n }\n return false;\n };\n DropDownButton.prototype.appendArrowSpan = function () {\n this.cssClass = isNullOrUndefined(this.cssClass) ? '' : this.cssClass;\n this.element.appendChild(this.createElement('span', {\n className: 'e-btn-icon e-icons ' + 'e-icon-' + (this.cssClass.indexOf(classNames.VERTICAL) > -1 ? 'bottom' : 'right') + ' e-caret'\n }));\n };\n DropDownButton.prototype.setActiveElem = function (elem) {\n this.activeElem = elem;\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n DropDownButton.prototype.getModuleName = function () {\n return 'dropdown-btn';\n };\n DropDownButton.prototype.canOpen = function () {\n var val = false;\n if (this.isPopupCreated) {\n val = this.getPopUpElement().classList.contains('e-popup-close');\n }\n return val;\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n DropDownButton.prototype.destroy = function () {\n var _this = this;\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'dropdown-btn') {\n var classList_1;\n if (this.element.querySelector('span.e-caret')) {\n detach(this.element.querySelector('span.e-caret'));\n }\n if (this.cssClass) {\n classList_1 = this.cssClass.split(' ');\n }\n this.button.destroy();\n if (classList_1) {\n removeClass([this.element], classList_1);\n }\n removeClass(this.activeElem, ['e-active']);\n var attrList = this.element.getAttribute('class') ? ['aria-haspopup', 'aria-expanded', 'aria-owns', 'type'] : ['aria-haspopup', 'aria-expanded', 'aria-owns', 'type', 'class'];\n attrList.forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n this.popupUnWireEvents();\n this.destroyPopup();\n this.isPopupCreated = false;\n if (!this.disabled) {\n this.unWireEvents();\n }\n }\n };\n DropDownButton.prototype.destroyPopup = function () {\n if (this.isPopupCreated) {\n this.dropDown.destroy();\n if (this.getPopUpElement()) {\n var popupEle = document.getElementById(this.getPopUpElement().id);\n if (popupEle) {\n removeClass([popupEle], ['e-popup-open', 'e-popup-close']);\n detach(popupEle);\n }\n }\n EventHandler.remove(this.getPopUpElement(), 'click', this.clickHandler);\n EventHandler.remove(this.getPopUpElement(), 'keydown', this.keyBoardHandler);\n if (this.isPopupCreated && this.dropDown) {\n this.dropDown.element = null;\n this.dropDown = undefined;\n }\n }\n this.isPopupCreated = false;\n var splitButton = getComponent(this.activeElem[0], 'split-btn');\n if (this.createPopupOnClick && splitButton) {\n var dropDownButton = getComponent(this.activeElem[1], 'dropdown-btn');\n if (dropDownButton) {\n dropDownButton.isPopupCreated = false;\n }\n }\n };\n DropDownButton.prototype.getPopUpElement = function () {\n var val = null;\n if (!this.dropDown && this.activeElem[0].classList.contains('e-split-btn')) {\n var dropDownBtn = getComponent(this.activeElem[1], 'dropdown-btn');\n if (dropDownBtn) {\n this.dropDown = dropDownBtn.dropDown;\n }\n }\n if (this.dropDown) {\n val = this.dropDown.element;\n }\n return val;\n };\n DropDownButton.prototype.getULElement = function () {\n var val = null;\n if (this.getPopUpElement()) {\n val = this.getPopUpElement().children[0];\n }\n return val;\n };\n DropDownButton.prototype.wireEvents = function () {\n this.delegateMousedownHandler = this.mousedownHandler.bind(this);\n if (!this.createPopupOnClick) {\n EventHandler.add(document, 'mousedown touchstart', this.delegateMousedownHandler, this);\n }\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyBoardHandler, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'resize', this.windowResize, this);\n };\n DropDownButton.prototype.windowResize = function () {\n if (!this.canOpen() && this.dropDown) {\n this.dropDown.refreshPosition(this.element);\n }\n };\n DropDownButton.prototype.popupWireEvents = function () {\n if (!this.delegateMousedownHandler) {\n this.delegateMousedownHandler = this.mousedownHandler.bind(this);\n }\n var popupElement = this.getPopUpElement();\n if (this.createPopupOnClick) {\n EventHandler.add(document, 'mousedown touchstart', this.delegateMousedownHandler, this);\n }\n if (popupElement) {\n EventHandler.add(popupElement, 'click', this.clickHandler, this);\n EventHandler.add(popupElement, 'keydown', this.keyBoardHandler, this);\n if (this.closeActionEvents) {\n EventHandler.add(popupElement, this.closeActionEvents, this.focusoutHandler, this);\n }\n }\n this.rippleFn = rippleEffect(popupElement, {\n selector: '.' + classNames.ITEM\n });\n };\n DropDownButton.prototype.popupUnWireEvents = function () {\n var popupElement = this.getPopUpElement();\n if (this.createPopupOnClick) {\n EventHandler.remove(document, 'mousedown touchstart', this.delegateMousedownHandler);\n }\n if (popupElement && popupElement.parentElement) {\n EventHandler.remove(popupElement, 'click', this.clickHandler);\n EventHandler.remove(popupElement, 'keydown', this.keyBoardHandler);\n if (this.closeActionEvents) {\n EventHandler.remove(popupElement, this.closeActionEvents, this.focusoutHandler);\n }\n }\n if (isRippleEnabled && this.rippleFn) {\n this.rippleFn();\n }\n };\n /**\n * Handles the keyboard interactions.\n *\n * @param {KeyboardEventArgs} e - Specifies keyboard event args.\n * @returns {void}\n * @hidden\n */\n DropDownButton.prototype.keyBoardHandler = function (e) {\n if (e.target === this.element && (e.keyCode === 9 || !e.altKey && e.keyCode === 40 || e.keyCode === 38)) {\n return;\n }\n if (e.target && (e.target.classList.contains('e-item') || e.target.parentElement && e.target.parentElement.classList.contains('e-split-btn-wrapper')) && e.keyCode === 13) {\n e.preventDefault();\n }\n switch (e.keyCode) {\n case 38:\n case 40:\n if (e.altKey && (e.keyCode === 38 || e.keyCode === 40)) {\n this.keyEventHandler(e);\n } else {\n this.upDownKeyHandler(e);\n }\n break;\n case 9:\n case 13:\n case 27:\n case 32:\n this.keyEventHandler(e);\n break;\n }\n };\n DropDownButton.prototype.isSafari = function () {\n return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n };\n DropDownButton.prototype.upDownKeyHandler = function (e) {\n if (this.target && (e.keyCode === 38 || e.keyCode === 40)) {\n return;\n }\n e.preventDefault();\n upDownKeyHandler(this.getULElement(), e.keyCode);\n };\n DropDownButton.prototype.keyEventHandler = function (e) {\n if (this.target && (e.keyCode === 13 || e.keyCode === 9)) {\n return;\n }\n if (e.keyCode === 13 && this.activeElem[0].classList.contains('e-split-btn')) {\n this.triggerSelect(e);\n this.activeElem[0].focus();\n return;\n }\n if (e.target && e.target.className.indexOf('e-edit-template') > -1 && e.keyCode === 32) {\n return;\n }\n if (e.keyCode !== 9) {\n e.preventDefault();\n }\n if (e.keyCode === 27 || e.keyCode === 38 || e.keyCode === 9) {\n if (!this.canOpen()) {\n this.closePopup(e, this.element);\n }\n } else {\n this.clickHandler(e);\n }\n };\n DropDownButton.prototype.getLI = function (elem) {\n return elem.tagName === 'LI' ? elem : closest(elem, 'li');\n };\n DropDownButton.prototype.mousedownHandler = function (e) {\n var trgt = e.target;\n if (this.dropDown && !this.canOpen() && this.getPopUpElement() && !(closest(trgt, '[id=\"' + this.getPopUpElement().id + '\"]') || closest(trgt, '[id=\"' + this.element.id + '\"]'))) {\n this.closePopup(e);\n }\n };\n DropDownButton.prototype.focusoutHandler = function (e) {\n if (this.isPopupCreated && !this.canOpen()) {\n var liTarget = e.relatedTarget || e.target;\n if (liTarget && liTarget.className.indexOf('e-item') > -1) {\n var li = this.getLI(liTarget);\n if (li) {\n var liIdx = Array.prototype.indexOf.call(this.getULElement().children, li);\n var item = this.items[liIdx];\n if (item) {\n var selectEventArgs = {\n element: li,\n item: item,\n event: e\n };\n this.trigger('select', selectEventArgs);\n }\n }\n }\n this.closePopup(e);\n }\n };\n DropDownButton.prototype.clickHandler = function (e) {\n var trgt = e.target;\n if (closest(trgt, '[id=\"' + this.element.id + '\"]')) {\n if (!this.createPopupOnClick || this.target && this.target !== '' && !this.isColorPicker() && !this.createPopupOnClick) {\n if (this.getPopUpElement().classList.contains('e-popup-close')) {\n this.openPopUp(e);\n } else {\n this.closePopup(e);\n }\n } else if (this.isPopupCreated) {\n this.closePopup(e, this.activeElem[0]);\n } else {\n this.createPopup();\n this.openPopUp(e);\n }\n } else {\n if (closest(trgt, '[id=\"' + this.getPopUpElement().id + '\"]')) {\n var li = this.getLI(e.target);\n if (li) {\n this.triggerSelect(e);\n this.closePopup(e, this.activeElem[0]);\n }\n }\n }\n };\n DropDownButton.prototype.triggerSelect = function (e) {\n var eventArgs;\n var liIdx;\n var item;\n var li = this.getLI(e.target);\n if (li) {\n liIdx = Array.prototype.indexOf.call(this.getULElement().children, li);\n item = this.items[liIdx];\n if (item) {\n eventArgs = {\n element: li,\n item: item,\n event: e\n };\n this.trigger('select', eventArgs);\n }\n }\n };\n DropDownButton.prototype.openPopUp = function (e) {\n var _this = this;\n if (e === void 0) {\n e = null;\n }\n var isReact = false;\n var popupElem = this.getPopUpElement();\n if (this.activeElem[0] && this.activeElem[0].classList.contains('e-dropdown-btn') && popupElem.style.width && popupElem.style.width !== 'auto') {\n this.setWidth(popupElem);\n }\n if (!this.target) {\n this.createItems(true);\n } else {\n if (this.activeElem.length > 1) {\n var splitButton = getComponent(this.activeElem[0], 'split-btn');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (splitButton.isReact && popupElem.childNodes.length < 1) {\n isReact = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (splitButton.appendReactElement) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n splitButton.appendReactElement(this.getTargetElement(), this.getPopUpElement());\n }\n this.renderReactTemplates();\n }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && popupElem.childNodes.length < 1) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isReact = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.appendReactElement) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.appendReactElement(this.getTargetElement(), this.getPopUpElement());\n }\n this.renderReactTemplates();\n }\n }\n }\n var ul = this.getULElement();\n this.popupWireEvents();\n var beforeOpenArgs = {\n element: ul,\n items: this.items,\n event: e,\n cancel: false\n };\n this.trigger('beforeOpen', beforeOpenArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var ul_1 = _this.getULElement();\n var animationOptions = _this.animationSettings.effect !== 'None' ? {\n name: _this.animationSettings.effect,\n duration: _this.animationSettings.duration,\n timingFunction: _this.animationSettings.easing\n } : null;\n if (animationOptions) {\n _this.animatePopup(animationOptions, ul_1);\n }\n _this.dropDown.show(null, _this.element);\n addClass([_this.element], 'e-active');\n _this.element.setAttribute('aria-expanded', 'true');\n _this.element.setAttribute('aria-owns', _this.getPopUpElement().id);\n if (ul_1 && !_this.isSafari()) {\n ul_1.focus();\n }\n if (_this.enableRtl && ul_1.parentElement.style.left !== '0px') {\n var wrapperWidth = void 0;\n if (_this.element.parentElement && _this.element.parentElement.classList.contains('e-split-btn-wrapper')) {\n wrapperWidth = _this.element.parentElement.offsetWidth;\n } else {\n wrapperWidth = _this.element.offsetWidth;\n }\n var popupRect = ul_1.parentElement.offsetWidth - wrapperWidth;\n var popupLeft = parseFloat(ul_1.parentElement.style.left) - popupRect;\n if (popupLeft < 0) {\n popupLeft = 0;\n }\n ul_1.parentElement.style.left = popupLeft + 'px';\n }\n var openArgs = {\n element: ul_1,\n items: _this.items\n };\n _this.trigger('open', openArgs);\n if (ul_1 && _this.isSafari()) {\n ul_1.focus();\n }\n }\n });\n };\n DropDownButton.prototype.animatePopup = function (animationOptions, element) {\n new Animation(animationOptions).animate(element, {\n begin: function (args) {\n args.element.parentElement.style.height = args.element.parentElement.offsetHeight + 'px';\n }\n });\n };\n DropDownButton.prototype.setWidth = function (popupElem) {\n var width = formatUnit(popupElem.style.width);\n if (width.indexOf('%') > -1) {\n var btnWidth = this.element.offsetWidth * parseFloat(width) / 100;\n popupElem.style.width = btnWidth + \"px\";\n }\n };\n DropDownButton.prototype.closePopup = function (e, focusEle) {\n var _this = this;\n if (e === void 0) {\n e = null;\n }\n var ul = this.getULElement();\n var beforeCloseArgs = {\n element: ul,\n items: this.items,\n event: e,\n cancel: false\n };\n this.trigger('beforeClose', beforeCloseArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var popupElement = _this.getPopUpElement();\n if (popupElement) {\n EventHandler.remove(popupElement, 'keydown', _this.keyBoardHandler);\n }\n _this.popupUnWireEvents();\n var ul_2 = _this.getULElement();\n var selectedLi = void 0;\n if (ul_2) {\n selectedLi = ul_2.querySelector('.e-selected');\n }\n if (selectedLi) {\n selectedLi.classList.remove('e-selected');\n }\n if (_this.dropDown) {\n _this.dropDown.hide();\n }\n removeClass(_this.activeElem, 'e-active');\n _this.element.setAttribute('aria-expanded', 'false');\n _this.element.removeAttribute('aria-owns');\n if (focusEle) {\n if (!_this.isSafari()) {\n focusEle.focus();\n } else {\n focusEle.focus({\n preventScroll: true\n });\n }\n }\n var closeArgs = {\n element: ul_2,\n items: _this.items\n };\n _this.trigger('close', closeArgs);\n if (!_this.target && ul_2) {\n detach(ul_2);\n }\n if (!_this.target || _this.isColorPicker() || _this.target && !_this.isColorPicker()) {\n if (_this.createPopupOnClick) {\n _this.destroyPopup();\n }\n }\n } else {\n if (ul) {\n ul.focus();\n }\n }\n });\n };\n DropDownButton.prototype.unWireEvents = function () {\n if (!this.createPopupOnClick) {\n EventHandler.remove(document, 'mousedown touchstart', this.delegateMousedownHandler);\n }\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keydown', this.keyBoardHandler);\n if (this.isPopupCreated) {\n EventHandler.remove(this.getPopUpElement(), 'click', this.clickHandler);\n EventHandler.remove(this.getPopUpElement(), 'keydown', this.keyBoardHandler);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'resize', this.windowResize);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DropDownButtonModel} newProp - Specifies new properties\n * @param {DropDownButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n DropDownButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var btnModel = ['content', 'cssClass', 'iconCss', 'iconPosition', 'disabled', 'enableRtl'];\n this.button.setProperties(getModel(newProp, btnModel));\n var popupElement;\n if (this.isPopupCreated) {\n popupElement = this.getPopUpElement();\n this.dropDown.setProperties(getModel(newProp, ['enableRtl']));\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (!this.element.querySelector('span.e-caret')) {\n this.appendArrowSpan();\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.unWireEvents();\n if (this.isPopupCreated && !this.canOpen()) {\n this.closePopup();\n }\n } else {\n this.wireEvents();\n }\n break;\n case 'cssClass':\n oldProp.cssClass = isNullOrUndefined(oldProp.cssClass) ? '' : oldProp.cssClass;\n if (newProp.cssClass.indexOf(classNames.VERTICAL) > -1 || oldProp.cssClass.indexOf(classNames.VERTICAL) > -1) {\n if (!this.element.querySelector('span.e-caret')) {\n this.appendArrowSpan();\n }\n var arrowSpan = this.element.querySelector('span.e-caret');\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n newProp.cssClass.indexOf(classNames.VERTICAL) > -1 ? classList(arrowSpan, ['e-icon-bottom'], ['e-icon-right']) : classList(arrowSpan, ['e-icon-right'], ['e-icon-bottom']);\n }\n if (this.isPopupCreated) {\n if (oldProp.cssClass) {\n removeClass([popupElement], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([popupElement], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n }\n break;\n case 'target':\n this.dropDown.content = this.getTargetElement();\n this.dropDown.dataBind();\n break;\n case 'items':\n if (this.isPopupCreated && this.getULElement()) {\n this.createItems();\n }\n break;\n case 'createPopupOnClick':\n if (newProp.createPopupOnClick) {\n this.destroyPopup();\n } else {\n this.createPopup();\n }\n break;\n }\n }\n };\n /**\n * Sets the focus to DropDownButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n DropDownButton.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([Property('')], DropDownButton.prototype, \"content\", void 0);\n __decorate([Property('')], DropDownButton.prototype, \"cssClass\", void 0);\n __decorate([Property(false)], DropDownButton.prototype, \"disabled\", void 0);\n __decorate([Property('')], DropDownButton.prototype, \"iconCss\", void 0);\n __decorate([Property('Left')], DropDownButton.prototype, \"iconPosition\", void 0);\n __decorate([Property(true)], DropDownButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([Collection([], Item)], DropDownButton.prototype, \"items\", void 0);\n __decorate([Property(false)], DropDownButton.prototype, \"createPopupOnClick\", void 0);\n __decorate([Property('')], DropDownButton.prototype, \"target\", void 0);\n __decorate([Property('')], DropDownButton.prototype, \"closeActionEvents\", void 0);\n __decorate([Property(null)], DropDownButton.prototype, \"itemTemplate\", void 0);\n __decorate([Property('auto')], DropDownButton.prototype, \"popupWidth\", void 0);\n __decorate([Complex({\n effect: 'None'\n }, DropDownMenuAnimationSettings)], DropDownButton.prototype, \"animationSettings\", void 0);\n __decorate([Event()], DropDownButton.prototype, \"beforeItemRender\", void 0);\n __decorate([Event()], DropDownButton.prototype, \"beforeOpen\", void 0);\n __decorate([Event()], DropDownButton.prototype, \"beforeClose\", void 0);\n __decorate([Event()], DropDownButton.prototype, \"close\", void 0);\n __decorate([Event()], DropDownButton.prototype, \"open\", void 0);\n __decorate([Event()], DropDownButton.prototype, \"select\", void 0);\n __decorate([Event()], DropDownButton.prototype, \"created\", void 0);\n DropDownButton = __decorate([NotifyPropertyChanges], DropDownButton);\n return DropDownButton;\n}(Component);\nexport { DropDownButton };","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-button/drop-down-button-model.d.ts'/>\nimport { Event, remove, addClass, removeClass, detach, getValue, setValue } from '@syncfusion/ej2-base';\nimport { EventHandler, Collection, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { attributes, getUniqueID, getInstance, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { getModel, Item } from './../common/common';\nimport { DropDownButton } from '../drop-down-button/drop-down-button';\nvar RTL = 'e-rtl';\nvar TAGNAME = 'EJS-SPLITBUTTON';\n/**\n * SplitButton component has primary and secondary button. Primary button is used to select\n * default action and secondary button is used to toggle contextual overlays for displaying list of\n * action items. It can contain both text and images.\n * ```html\n * <button id=\"element\"></button>\n * ```\n * ```typescript\n * <script>\n * var splitBtnObj = new SplitButton({content: 'SplitButton'});\n * splitBtnObj.appendTo(\"#element\");\n * </script>\n * ```\n */\nvar SplitButton = /** @class */function (_super) {\n __extends(SplitButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {SplitButtonModel} options - Specifies the splitbutton model\n * @param {string|HTMLButtonElement} element - Specifies the element\n * @hidden\n */\n function SplitButton(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize Angular support.\n *\n * @private\n * @returns {void}\n */\n SplitButton.prototype.preRender = function () {\n var ele = this.element;\n if (ele.tagName === TAGNAME) {\n var ejInstance = getValue('ej2_instances', ele);\n var btn = this.createElement('button', {\n attrs: {\n 'type': 'button'\n }\n });\n var wrapper = this.createElement(TAGNAME, {\n className: 'e-' + this.getModuleName() + '-wrapper'\n });\n for (var idx = 0, len = ele.attributes.length; idx < len; idx++) {\n btn.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = btn;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.wrapper = wrapper;\n this.element = ele;\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Initialize the Component rendering.\n *\n * @returns {void}\n * @private\n */\n SplitButton.prototype.render = function () {\n this.initWrapper();\n this.createPrimaryButton();\n this.renderControl();\n };\n SplitButton.prototype.renderControl = function () {\n this.createSecondaryButton();\n this.setActiveElem([this.element, this.secondaryBtnObj.element]);\n this.setAria();\n this.wireEvents();\n this.renderComplete();\n };\n /**\n * Adds a new item to the menu. By default, new item appends to the list as the last item,\n * but you can insert based on the text parameter.\n *\n * @param { ItemModel[] } items - Specifies an array of JSON data.\n * @param { string } text - Specifies the text to insert the newly added item in the menu.\n * @returns {void}.\n */\n SplitButton.prototype.addItems = function (items, text) {\n _super.prototype.addItems.call(this, items, text);\n this.secondaryBtnObj.items = this.items;\n };\n /**\n * Removes the items from the menu.\n *\n * @param { string[] } items - Specifies an array of string to remove the items.\n * @param { string } isUniqueId - Set `true` if specified items is a collection of unique id.\n * @returns {void}.\n */\n SplitButton.prototype.removeItems = function (items, isUniqueId) {\n _super.prototype.removeItems.call(this, items, isUniqueId);\n this.secondaryBtnObj.items = this.items;\n };\n SplitButton.prototype.initWrapper = function () {\n if (!this.wrapper) {\n this.wrapper = this.createElement('div', {\n className: 'e-' + this.getModuleName() + '-wrapper'\n });\n this.element.parentNode.insertBefore(this.wrapper, this.element);\n }\n this.element.classList.remove('e-' + this.getModuleName());\n if (this.enableRtl) {\n this.wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([this.wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n };\n SplitButton.prototype.createPrimaryButton = function () {\n var btnModel = {\n cssClass: this.cssClass,\n enableRtl: this.enableRtl,\n iconCss: this.iconCss,\n iconPosition: this.iconPosition,\n content: this.content,\n disabled: this.disabled\n };\n this.primaryBtnObj = new Button(btnModel);\n this.primaryBtnObj.createElement = this.createElement;\n this.primaryBtnObj.appendTo(this.element);\n this.element.classList.add('e-' + this.getModuleName());\n this.element.type = 'button';\n this.wrapper.appendChild(this.element);\n };\n SplitButton.prototype.createSecondaryButton = function () {\n var _this = this;\n var btnElem = this.createElement('button', {\n className: 'e-icon-btn',\n attrs: {\n 'tabindex': '-1'\n },\n id: this.element.id + '_dropdownbtn'\n });\n this.wrapper.appendChild(btnElem);\n var dropDownBtnModel = {\n cssClass: this.cssClass,\n disabled: this.disabled,\n enableRtl: this.enableRtl,\n items: this.items,\n target: this.target,\n createPopupOnClick: this.createPopupOnClick\n };\n dropDownBtnModel.beforeItemRender = function (args) {\n if (_this.createPopupOnClick) {\n _this.secondaryBtnObj.dropDown.relateTo = _this.wrapper;\n _this.dropDown = _this.secondaryBtnObj.dropDown;\n }\n _this.trigger('beforeItemRender', args);\n };\n dropDownBtnModel.open = function (args) {\n _this.trigger('open', args);\n };\n dropDownBtnModel.close = function (args) {\n _this.trigger('close', args);\n };\n dropDownBtnModel.select = function (args) {\n _this.trigger('select', args);\n };\n dropDownBtnModel.beforeOpen = function (args) {\n if (_this.createPopupOnClick && _this.items.length === 0) {\n _this.secondaryBtnObj.dropDown.relateTo = _this.wrapper;\n _this.dropDown = _this.secondaryBtnObj.dropDown;\n }\n var callBackPromise = new Deferred();\n _this.trigger('beforeOpen', args, function (observedArgs) {\n callBackPromise.resolve(observedArgs);\n });\n return callBackPromise;\n };\n dropDownBtnModel.beforeClose = function (args) {\n var callBackPromise = new Deferred();\n _this.trigger('beforeClose', args, function (observedArgs) {\n callBackPromise.resolve(observedArgs);\n });\n return callBackPromise;\n };\n this.secondaryBtnObj = new DropDownButton(dropDownBtnModel);\n this.secondaryBtnObj.createElement = this.createElement;\n this.secondaryBtnObj.appendTo(btnElem);\n if (!this.createPopupOnClick) {\n this.secondaryBtnObj.dropDown.relateTo = this.wrapper;\n this.dropDown = this.secondaryBtnObj.dropDown;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.isPopupCreated = this.secondaryBtnObj.isPopupCreated;\n this.secondaryBtnObj.activeElem = [this.element, this.secondaryBtnObj.element];\n this.secondaryBtnObj.element.querySelector('.e-btn-icon').classList.remove('e-icon-right');\n if (this.disabled) {\n this.wrapper.classList.add('e-splitbtn-disabled');\n }\n };\n SplitButton.prototype.setAria = function () {\n attributes(this.element, {\n 'aria-expanded': 'false',\n 'aria-haspopup': 'true',\n 'aria-label': this.element.textContent ? this.element.textContent + ' splitbutton' : 'splitbutton',\n 'aria-owns': this.element.id + '_dropdownbtn-popup'\n });\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n SplitButton.prototype.getModuleName = function () {\n return 'split-btn';\n };\n /**\n * To open/close SplitButton popup based on current state of the SplitButton.\n *\n * @returns {void}\n */\n SplitButton.prototype.toggle = function () {\n this.secondaryBtnObj.toggle();\n };\n SplitButton.prototype.destroy = function () {\n var _this = this;\n var classList = [RTL];\n if (this.cssClass) {\n classList = classList.concat(this.cssClass.split(' '));\n }\n if (this.element) {\n var element = document.getElementById(this.element.id);\n if (element && element.parentElement === this.wrapper) {\n if (this.wrapper.tagName === TAGNAME) {\n this.wrapper.innerHTML = '';\n removeClass([this.wrapper], ['e-rtl', 'e-' + this.getModuleName() + '-wrapper']);\n removeClass([this.wrapper], this.cssClass.split(' '));\n } else {\n removeClass([this.element], classList);\n ['aria-label', 'aria-haspopup', 'aria-expanded', 'aria-owns', 'type'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n this.wrapper.parentNode.insertBefore(this.element, this.wrapper);\n remove(this.wrapper);\n }\n this.unWireEvents();\n }\n }\n this.primaryBtnObj.destroy();\n this.secondaryBtnObj.destroy();\n _super.prototype.destroy.call(this);\n if (this.element && !this.element.getAttribute('class')) {\n this.element.removeAttribute('class');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.refreshing && this.isAngular) {\n this.element = this.wrapper;\n ['e-control', 'e-split-btn', 'e-lib'].forEach(function (key) {\n _this.element.classList.add(key);\n });\n setValue('ej2_instances', [this], this.element);\n }\n this.wrapper = null;\n };\n SplitButton.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.primaryBtnClickHandler, this);\n new KeyboardEvents(this.element, {\n keyAction: this.btnKeyBoardHandler.bind(this),\n keyConfigs: {\n altdownarrow: 'alt+downarrow',\n enter: 'enter'\n }\n });\n };\n SplitButton.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'click', this.primaryBtnClickHandler);\n getInstance(this.element, KeyboardEvents).destroy();\n };\n SplitButton.prototype.primaryBtnClickHandler = function () {\n this.trigger('click', {\n element: this.element\n });\n };\n SplitButton.prototype.btnKeyBoardHandler = function (e) {\n switch (e.action) {\n case 'altdownarrow':\n this.clickHandler(e);\n break;\n case 'enter':\n this.clickHandler(e);\n if (this.getPopUpElement() && !this.getPopUpElement().classList.contains('e-popup-close')) {\n this.element.classList.remove('e-active');\n this.secondaryBtnObj.element.classList.add('e-active');\n } else {\n this.secondaryBtnObj.element.classList.remove('e-active');\n }\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {SplitButtonModel} newProp - Specifies new properties\n * @param {SplitButtonModel} oldProp - Specifies old properties\n * @returns {void}\n */\n SplitButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var model = ['content', 'iconCss', 'iconPosition', 'cssClass', 'disabled', 'enableRtl'];\n this.primaryBtnObj.setProperties(getModel(newProp, model));\n model = ['beforeOpen', 'beforeItemRender', 'select', 'open', 'close', 'cssClass', 'disabled', 'enableRtl', 'createPopupOnClick'];\n if (Object.keys(newProp).indexOf('items') > -1) {\n this.secondaryBtnObj.items = newProp.items;\n this.secondaryBtnObj.dataBind();\n }\n this.secondaryBtnObj.setProperties(getModel(newProp, model));\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.wrapper], oldProp.cssClass.split(' '));\n }\n addClass([this.wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n addClass([this.wrapper], RTL);\n } else {\n removeClass([this.wrapper], RTL);\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n addClass([this.wrapper], 'e-splitbtn-disabled');\n } else {\n removeClass([this.wrapper], 'e-splitbtn-disabled');\n }\n }\n }\n };\n /**\n * Sets the focus to SplitButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n SplitButton.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([Property('')], SplitButton.prototype, \"content\", void 0);\n __decorate([Property('')], SplitButton.prototype, \"cssClass\", void 0);\n __decorate([Property(false)], SplitButton.prototype, \"disabled\", void 0);\n __decorate([Property('')], SplitButton.prototype, \"iconCss\", void 0);\n __decorate([Property('Left')], SplitButton.prototype, \"iconPosition\", void 0);\n __decorate([Property(false)], SplitButton.prototype, \"createPopupOnClick\", void 0);\n __decorate([Collection([], Item)], SplitButton.prototype, \"items\", void 0);\n __decorate([Property('')], SplitButton.prototype, \"target\", void 0);\n __decorate([Event()], SplitButton.prototype, \"beforeItemRender\", void 0);\n __decorate([Event()], SplitButton.prototype, \"beforeOpen\", void 0);\n __decorate([Event()], SplitButton.prototype, \"beforeClose\", void 0);\n __decorate([Event()], SplitButton.prototype, \"click\", void 0);\n __decorate([Event()], SplitButton.prototype, \"close\", void 0);\n __decorate([Event()], SplitButton.prototype, \"open\", void 0);\n __decorate([Event()], SplitButton.prototype, \"select\", void 0);\n __decorate([Event()], SplitButton.prototype, \"created\", void 0);\n SplitButton = __decorate([NotifyPropertyChanges], SplitButton);\n return SplitButton;\n}(DropDownButton);\nexport { SplitButton };\n/**\n * Deferred is used to handle asynchronous operation.\n */\nvar Deferred = /** @class */function () {\n function Deferred() {\n var _this = this;\n /**\n * Promise is an object that represents a value that may not be available yet, but will be resolved at some point in the future.\n */\n this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n /**\n * Defines the callback function triggers when the Deferred object is rejected.\n */\n this.catch = this.promise.catch.bind(this.promise);\n /**\n * Defines the callback function triggers when the Deferred object is resolved.\n */\n this.then = this.promise.then.bind(this.promise);\n }\n return Deferred;\n}();\nexport { Deferred };","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};\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { EventHandler, Property, NotifyPropertyChanges, Animation, attributes, animationMode } from '@syncfusion/ej2-base';\nimport { Event, remove, removeClass } from '@syncfusion/ej2-base';\nimport { Complex, ChildProperty, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nvar HIDESPINNER = 'e-hide-spinner';\nvar PROGRESS = 'e-progress';\nvar PROGRESSACTIVE = 'e-progress-active';\nvar CONTENTCLS = 'e-btn-content';\n/**\n * Defines the spin settings.\n */\nvar SpinSettings = /** @class */function (_super) {\n __extends(SpinSettings, _super);\n function SpinSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property(null)], SpinSettings.prototype, \"template\", void 0);\n __decorate([Property(16)], SpinSettings.prototype, \"width\", void 0);\n __decorate([Property('Left')], SpinSettings.prototype, \"position\", void 0);\n return SpinSettings;\n}(ChildProperty);\nexport { SpinSettings };\n/**\n * Defines the animation settings.\n */\nvar AnimationSettings = /** @class */function (_super) {\n __extends(AnimationSettings, _super);\n function AnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property(400)], AnimationSettings.prototype, \"duration\", void 0);\n __decorate([Property('None')], AnimationSettings.prototype, \"effect\", void 0);\n __decorate([Property('ease')], AnimationSettings.prototype, \"easing\", void 0);\n return AnimationSettings;\n}(ChildProperty);\nexport { AnimationSettings };\n/**\n * The ProgressButton visualizes the progression of an operation to indicate the user\n * that a process is happening in the background with visual representation.\n * ```html\n * <button id=\"element\"></button>\n * ```\n * ```typescript\n * <script>\n * var progressButtonObj = new ProgressButton({ content: 'Progress Button' });\n * progressButtonObj.appendTo(\"#element\");\n * </script>\n * ```\n */\nvar ProgressButton = /** @class */function (_super) {\n __extends(ProgressButton, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {ProgressButtonModel} options - Specifies progress button model\n * @param {string|HTMLButtonElement} element - Specifies element\n */\n function ProgressButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.step = 1;\n return _this;\n }\n ProgressButton.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n /**\n * Initialize the Component rendering\n *\n * @returns {void}\n * @private\n */\n ProgressButton.prototype.render = function () {\n _super.prototype.render.call(this);\n this.init();\n this.wireEvents();\n this.setAria();\n this.renderComplete();\n };\n /**\n * Starts the button progress at the specified percent.\n *\n * @param {number} percent - Starts the button progress at this percent.\n * @returns {void}\n */\n ProgressButton.prototype.start = function (percent) {\n this.isPaused = false;\n this.startProgress(percent ? percent : this.percent, this.progressTime);\n };\n /**\n * Stops the button progress.\n *\n * @returns {void}\n */\n ProgressButton.prototype.stop = function () {\n this.isPaused = true;\n cancelAnimationFrame(this.timerId);\n };\n /**\n * Complete the button progress.\n *\n * @returns {void}\n */\n ProgressButton.prototype.progressComplete = function () {\n this.isPaused = false;\n this.finishProgress();\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n ProgressButton.prototype.getModuleName = function () {\n return 'progress-btn';\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n ProgressButton.prototype.destroy = function () {\n var _this = this;\n var classList = [HIDESPINNER, PROGRESSACTIVE, 'e-round-corner', 'e-' + _super.prototype.getModuleName.call(this)];\n if (this.spinSettings.position) {\n classList.push('e-spin-' + this.spinSettings.position.toLowerCase());\n }\n _super.prototype.destroy.call(this);\n this.unWireEvents();\n this.element.innerHTML = '';\n if (this.cssClass) {\n classList = classList.concat(this.cssClass.split(' '));\n }\n removeClass([this.element], classList);\n var css = this.element.getAttribute('class') ? ['aria-label', 'aria-valuemin', 'aria-valuemax', 'aria-valuenow'] : ['aria-label', 'aria-valuemin', 'aria-valuemax', 'aria-valuenow', 'class'];\n css.forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n if (this.disabled) {\n this.element.removeAttribute('disabled');\n }\n };\n ProgressButton.prototype.init = function () {\n this.element.classList.add('e-' + _super.prototype.getModuleName.call(this));\n this.setContent();\n this.createSpinner();\n if (this.enableProgress) {\n this.createProgress();\n }\n };\n ProgressButton.prototype.createSpinner = function () {\n var spinner = this.createElement('span', {\n className: 'e-spinner'\n });\n this.setSpinPosition(spinner);\n createSpinner({\n target: spinner,\n width: this.spinSettings.width || 16,\n template: this.spinSettings.template\n }, this.createElement);\n };\n ProgressButton.prototype.getSpinner = function () {\n return this.element.getElementsByClassName('e-spinner')[0];\n };\n ProgressButton.prototype.getProgress = function () {\n return this.element.getElementsByClassName(PROGRESS)[0];\n };\n ProgressButton.prototype.setSpinPosition = function (ele) {\n var position = this.spinSettings.position || 'Left';\n if (position === 'Left' || position === 'Top') {\n this.element.insertBefore(ele, this.element.getElementsByClassName(CONTENTCLS)[0]);\n } else {\n this.element.appendChild(ele);\n }\n this.element.classList.add('e-spin-' + position.toLowerCase());\n };\n ProgressButton.prototype.createProgress = function () {\n this.element.appendChild(this.createElement('span', {\n className: PROGRESS\n }));\n };\n ProgressButton.prototype.setContent = function () {\n var cont;\n cont = this.element.innerHTML;\n if (this.enableHtmlSanitizer) {\n cont = SanitizeHtmlHelper.sanitize(this.element.innerHTML);\n }\n this.element.innerHTML = '';\n this.element.appendChild(this.createElement('span', {\n className: CONTENTCLS,\n innerHTML: cont\n }));\n };\n ProgressButton.prototype.clickHandler = function () {\n if (this.element.classList.contains(PROGRESSACTIVE)) {\n return;\n }\n this.startProgress();\n };\n ProgressButton.prototype.startProgress = function (percent, progressTime) {\n var clsList = this.element.classList;\n var isVertical = clsList.contains('e-vertical');\n clsList.add(PROGRESSACTIVE);\n if (!clsList.contains(HIDESPINNER)) {\n showSpinner(this.element.querySelector('.e-spinner'));\n }\n this.startAnimate(Date.now(), progressTime ? progressTime : 0, progressTime ? Date.now() - this.duration * 1 / 100 : Date.now(), percent ? percent : 0, 0, this.step, 0, isVertical);\n this.startContAnimate();\n };\n ProgressButton.prototype.startAnimate = function (timestamp, progressTime, prevTime, percent, prevPercent, step, prevProgressTime, isVertical) {\n var _this = this;\n try {\n var timeDiff = timestamp - prevTime;\n var stepTime = this.duration * step / 100;\n var timeDiffBuffer_1 = timeDiff ? timeDiff < stepTime ? timeDiff - stepTime : timeDiff % stepTime : 0;\n this.progressTime = progressTime = progressTime + timeDiff - timeDiffBuffer_1;\n prevTime = timestamp - timeDiffBuffer_1;\n percent = percent + (timeDiff - timeDiffBuffer_1) / this.duration * 100;\n prevPercent = (progressTime - prevProgressTime) % stepTime === 0 || percent === 100 ? percent : prevPercent;\n var args = {\n percent: prevPercent,\n currentDuration: progressTime,\n step: step\n };\n this.eIsVertical = isVertical;\n if (percent === 0) {\n this.trigger('begin', args, function (observedArgs) {\n _this.successCallback(observedArgs, percent, prevPercent, progressTime, prevProgressTime, timeDiffBuffer_1, prevTime);\n });\n } else if (percent === 100 || progressTime === this.duration) {\n this.trigger('end', args, function (observedArgs) {\n _this.successCallback(observedArgs, percent, prevPercent, progressTime, prevProgressTime, timeDiffBuffer_1, prevTime);\n });\n } else {\n this.trigger('progress', args, function (observedArgs) {\n _this.successCallback(observedArgs, percent, prevPercent, progressTime, prevProgressTime, timeDiffBuffer_1, prevTime);\n });\n }\n } catch (e) {\n cancelAnimationFrame(this.timerId);\n this.trigger('fail', e);\n }\n };\n ProgressButton.prototype.successCallback = function (args, perc, pPerc, prgTim, pPrgTim, timDif, pTim) {\n var _this = this;\n var percent = perc;\n var prevPercent = pPerc;\n var timeDiffBuffer = timDif;\n var progressTime = prgTim;\n var prevProgressTime = pPrgTim;\n var prevTime = pTim;\n var isVertical = this.eIsVertical;\n if (percent !== args.percent && args.percent !== prevPercent) {\n percent = args.percent;\n }\n this.percent = percent;\n this.step = args.step;\n if ((progressTime - prevProgressTime) % (this.duration * args.step / 100) === 0 || percent === 100) {\n this.timerId = requestAnimationFrame(function () {\n if (_this.enableProgress && _this.getProgress()) {\n _this.getProgress().style[isVertical ? 'height' : 'width'] = percent + '%';\n }\n _this.element.setAttribute('aria-valuenow', percent.toString());\n });\n prevPercent = percent;\n prevProgressTime = progressTime;\n }\n if (!this.isPaused) {\n if (progressTime < this.duration && percent < 100) {\n this.interval = window.setTimeout(function () {\n _this.startAnimate(Date.now(), progressTime, prevTime, percent, prevPercent, args.step, prevProgressTime, isVertical);\n }, this.duration / 100 - timeDiffBuffer);\n } else {\n this.interval = window.setTimeout(function () {\n _this.progressTime = _this.percent = 0;\n if (_this.enableProgress && _this.getProgress()) {\n _this.getProgress().style[isVertical ? 'height' : 'width'] = '0%';\n }\n _this.element.setAttribute('aria-valuenow', '0');\n _this.hideSpin();\n }, 100);\n }\n }\n };\n ProgressButton.prototype.startContAnimate = function () {\n var _this = this;\n var ele = this.element.getElementsByClassName(CONTENTCLS)[0];\n if (this.animationSettings.effect !== 'None') {\n new Animation({}).animate(ele, {\n duration: this.animationSettings.duration === 0 && animationMode === 'Enable' ? 400 : this.animationSettings.duration,\n name: 'Progress' + this.animationSettings.effect,\n timingFunction: this.animationSettings.easing,\n begin: function () {\n if (_this.spinSettings.position === 'Center') {\n _this.setSpinnerSize();\n }\n },\n end: function () {\n ele.classList.add('e-animate-end');\n }\n });\n } else if (this.spinSettings.position === 'Center') {\n this.setSpinnerSize();\n }\n };\n ProgressButton.prototype.finishProgress = function () {\n var clsList = this.element.classList;\n var isVertical = clsList.contains('e-vertical');\n clsList.add(PROGRESSACTIVE);\n var count = 100;\n for (var i = this.percent; i < count; i++) {\n i += 10;\n if (i > 100) {\n i = 100;\n }\n if (this.enableProgress && this.getProgress()) {\n this.getProgress().style[isVertical ? 'height' : 'width'] = this.percent < 100 ? i + '%' : '100%';\n }\n }\n this.element.setAttribute('aria-valuenow', '0');\n this.hideSpin();\n var args = {\n step: this.step,\n currentDuration: this.progressTime,\n percent: 100\n };\n clearTimeout(this.interval);\n this.trigger('end', args);\n this.progressTime = this.percent = 0;\n };\n ProgressButton.prototype.setSpinnerSize = function () {\n var ele = this.element.getElementsByClassName(CONTENTCLS)[0];\n var spinner = this.getSpinner();\n spinner.style.width = Math.max(spinner.offsetWidth, ele.offsetWidth) + 'px';\n spinner.style.height = Math.max(spinner.offsetHeight, ele.offsetHeight) + 'px';\n ele.classList.add('e-cont-animate');\n };\n ProgressButton.prototype.hideSpin = function () {\n var cont = this.element.getElementsByClassName(CONTENTCLS)[0];\n if (!this.element.classList.contains(HIDESPINNER)) {\n hideSpinner(this.element.querySelector('.e-spinner'));\n }\n this.element.classList.remove(PROGRESSACTIVE);\n if (this.animationSettings.effect !== 'None') {\n cont.classList.remove('e-animate-end');\n }\n if (this.spinSettings.position === 'Center') {\n var ele = this.getSpinner();\n cont.classList.remove('e-cont-animate');\n ele.style.width = 'auto';\n ele.style.height = 'auto';\n }\n };\n ProgressButton.prototype.setIconSpan = function () {\n var cont = this.element.getElementsByClassName(CONTENTCLS)[0];\n var iconSpan = this.element.getElementsByClassName('e-btn-icon')[0];\n if (cont.childNodes[0] && (this.iconPosition === 'Left' || this.iconPosition === 'Top')) {\n cont.insertBefore(iconSpan, cont.childNodes[0]);\n } else {\n cont.appendChild(iconSpan);\n }\n };\n ProgressButton.prototype.setAria = function () {\n attributes(this.element, {\n 'aria-label': this.element.textContent + ' progress'\n });\n };\n ProgressButton.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n };\n ProgressButton.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ProgressButtonModel} newProp - Specifies new properties\n * @param {ProgressButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n ProgressButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var ele = this.element;\n var isSpinning = false;\n var clsList = this.element.querySelector('.e-spinner-pane').classList;\n if (clsList.contains('e-spin-show')) {\n isSpinning = true;\n }\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n this.setContent();\n this.createSpinner();\n if (isSpinning) {\n showSpinner(this.element.querySelector('.e-spinner'));\n isSpinning = false;\n }\n if (this.enableProgress) {\n this.createProgress();\n }\n ele.setAttribute('aria-label', ele.textContent + ' progress');\n break;\n case 'iconCss':\n if (!oldProp.iconCss) {\n this.setIconSpan();\n }\n break;\n case 'iconPosition':\n this.setIconSpan();\n break;\n case 'enableProgress':\n if (newProp.enableProgress) {\n this.createProgress();\n } else {\n remove(this.getProgress());\n }\n break;\n case 'spinSettings':\n if (newProp.spinSettings.position) {\n ele.classList.remove('e-spin-' + oldProp.spinSettings.position.toLowerCase());\n this.setSpinPosition(this.getSpinner());\n }\n if (newProp.spinSettings.template || newProp.spinSettings.width) {\n ele.removeChild(this.getSpinner());\n this.createSpinner();\n }\n break;\n }\n }\n };\n /**\n * Sets the focus to ProgressButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n ProgressButton.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([Property(false)], ProgressButton.prototype, \"enableProgress\", void 0);\n __decorate([Property(2000)], ProgressButton.prototype, \"duration\", void 0);\n __decorate([Property('Left')], ProgressButton.prototype, \"iconPosition\", void 0);\n __decorate([Property('')], ProgressButton.prototype, \"iconCss\", void 0);\n __decorate([Property(false)], ProgressButton.prototype, \"disabled\", void 0);\n __decorate([Property(false)], ProgressButton.prototype, \"isPrimary\", void 0);\n __decorate([Property('')], ProgressButton.prototype, \"cssClass\", void 0);\n __decorate([Property('')], ProgressButton.prototype, \"content\", void 0);\n __decorate([Property(false)], ProgressButton.prototype, \"isToggle\", void 0);\n __decorate([Property(true)], ProgressButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([Complex({}, SpinSettings)], ProgressButton.prototype, \"spinSettings\", void 0);\n __decorate([Complex({}, AnimationSettings)], ProgressButton.prototype, \"animationSettings\", void 0);\n __decorate([Event()], ProgressButton.prototype, \"created\", void 0);\n __decorate([Event()], ProgressButton.prototype, \"begin\", void 0);\n __decorate([Event()], ProgressButton.prototype, \"progress\", void 0);\n __decorate([Event()], ProgressButton.prototype, \"end\", void 0);\n __decorate([Event()], ProgressButton.prototype, \"fail\", void 0);\n ProgressButton = __decorate([NotifyPropertyChanges], ProgressButton);\n return ProgressButton;\n}(Button);\nexport { ProgressButton };","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};\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : new P(function (resolve) {\n resolve(result.value);\n }).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n///<reference path='../textarea/textarea-model.d.ts'/>\nimport { EventHandler, Property, createElement } from '@syncfusion/ej2-base';\nimport { TextArea } from '../textarea/textarea';\nimport { CaretPositionHelper } from './caret-helper';\nexport var ChatMessageRole;\n(function (ChatMessageRole) {\n ChatMessageRole[\"System\"] = \"system\";\n ChatMessageRole[\"User\"] = \"user\";\n ChatMessageRole[\"Assistant\"] = \"assistant\";\n})(ChatMessageRole || (ChatMessageRole = {}));\nvar SmartTextArea = /** @class */function (_super) {\n __extends(SmartTextArea, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {SmartTextArea} options - Specifies Smart text area model\n * @param {string | HTMLTextAreaElement} element - Specifies target element\n */\n function SmartTextArea(options, element) {\n return _super.call(this, options, element) || this;\n }\n SmartTextArea.prototype.render = function () {\n _super.prototype.render.call(this);\n if (!(this.element instanceof HTMLTextAreaElement)) {\n return;\n }\n this.textArea = this.element;\n var smartTextArea = createElement('smart-textarea');\n smartTextArea.classList.add('e-smart-textarea');\n this.textArea.after(smartTextArea);\n if (this.showSuggestionOnPopup !== 'None') {\n var suggestionState = this.showSuggestionOnPopup === 'Enable' ? 'false' : 'true';\n this.textArea.setAttribute('data-inline-suggestions', suggestionState);\n }\n this.suggestionDisplay = this.shouldShowInlineSuggestions(this.textArea) ? new InlineSuggestion(smartTextArea, this.textArea) : new ContextSuggestion(smartTextArea, this.textArea);\n };\n SmartTextArea.prototype.wireEvents = function () {\n var _this = this;\n _super.prototype.wireEvents.call(this);\n EventHandler.add(this.element, 'keyup', this.handleKeyUp, this);\n EventHandler.add(this.element, 'keydown', this.handleKeyDown, this);\n EventHandler.add(this.element, 'mousedown', this.removeExistingOrPendingSuggestion, this);\n EventHandler.add(this.element, 'focusout', this.removeExistingOrPendingSuggestion, this);\n this.element.addEventListener('scroll', function () {\n return _this.suggestionDisplay.reject();\n }, {\n passive: true\n });\n };\n SmartTextArea.prototype.unWireEvents = function () {\n var _this = this;\n _super.prototype.unWireEvents.call(this);\n EventHandler.remove(this.element, 'keyup', this.handleKeyUp);\n EventHandler.remove(this.element, 'keydown', this.handleKeyDown);\n EventHandler.remove(this.element, 'mousedown', this.removeExistingOrPendingSuggestion);\n EventHandler.remove(this.element, 'focusout', this.removeExistingOrPendingSuggestion);\n this.element.removeEventListener('scroll', function () {\n return _this.suggestionDisplay.reject();\n });\n };\n SmartTextArea.prototype.keydownHandler = function () {\n // Overridden to prevent default behavior\n };\n SmartTextArea.prototype.shouldShowInlineSuggestions = function (textArea) {\n var inlineSuggestions = textArea.getAttribute('data-inline-suggestions');\n if (inlineSuggestions) {\n return inlineSuggestions.toLowerCase() === 'true';\n }\n return !('ontouchstart' in window);\n };\n SmartTextArea.prototype.handleKeyDown = function (event) {\n switch (event.key) {\n case 'Tab':\n if (this.suggestionDisplay.isShowing()) {\n this.suggestionDisplay.accept();\n event.preventDefault();\n }\n break;\n case 'Alt':\n case 'Control':\n case 'Shift':\n case 'Command':\n break;\n default:\n if (this.suggestionDisplay.isShowing() && this.suggestionDisplay.currentSuggestion.startsWith(event.key)) {\n CaretPositionHelper.insertCharacter(this.textArea, event.key);\n event.preventDefault();\n this.suggestionDisplay.show(this.suggestionDisplay.currentSuggestion.substring(event.key.length));\n CaretPositionHelper.adjustScrollToCaretPosition(this.textArea);\n } else {\n this.removeExistingOrPendingSuggestion();\n }\n break;\n }\n };\n SmartTextArea.prototype.handleKeyUp = function () {\n var _this = this;\n if (!this.suggestionDisplay.isShowing()) {\n clearTimeout(this.typingDebounceTimeout);\n this.typingDebounceTimeout = setTimeout(function () {\n return _this.handleTypingPaused();\n }, 350);\n }\n };\n SmartTextArea.prototype.handleTypingPaused = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (document.activeElement !== this.textArea) {\n return [2 /*return*/];\n }\n if (!(this.textArea.selectionStart === this.textArea.selectionEnd && (this.textArea.selectionStart === this.textArea.value.length || this.textArea.value[this.textArea.selectionStart] === '\\n'))) return [3 /*break*/, 2];\n return [4 /*yield*/, this.requestSuggestionAsync()];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n return [2 /*return*/];\n }\n });\n });\n };\n SmartTextArea.prototype.removeExistingOrPendingSuggestion = function () {\n clearTimeout(this.typingDebounceTimeout);\n if (this.pendingSuggestionAbort) {\n this.pendingSuggestionAbort.abort();\n this.pendingSuggestionAbort = null;\n }\n this.suggestionDisplay.reject();\n };\n SmartTextArea.prototype.createSuggestionPrompt = function (textBefore, textAfter) {\n var stringBuilder = 'Predict what text the user in the given ROLE would insert at the cursor position indicated by ^^^.\\nOnly give predictions for which you have' + ' an EXTREMELY high confidence that the user would insert that EXACT text.\\nDo not make up new information. If you are not sure, ' + 'just reply with NO_PREDICTION.\\n\\nRULES:\\n1. Reply with OK:, then in square brackets the predicted text, then END_INSERTION, and no other output.\\n2. ' + 'When a specific value or quantity cannot be inferred and would need to be provided, use the word NEED_INFO.\\n3. ' + 'If there is not enough information to predict any words that the user would type next, just reply with the word NO_PREDICTION.' + '\\n4. NEVER invent new information. If you can not be sure what the user is about to type, ALWAYS stop the prediction with END_INSERTION.';\n var userPhrases = this.UserPhrases;\n if (userPhrases && userPhrases.length > 0) {\n stringBuilder += '\\nAlways try to use variations on the following phrases as part of the predictions:\\n';\n for (var _i = 0, userPhrases_1 = userPhrases; _i < userPhrases_1.length; _i++) {\n var phrase = userPhrases_1[_i];\n stringBuilder += \"- \" + phrase + \"\\n\";\n }\n }\n var chatMessageList = [{\n role: ChatMessageRole.System,\n content: stringBuilder\n }, {\n role: ChatMessageRole.User,\n content: 'ROLE: Family member sending a text\\nUSER_TEXT: Hey, it is a nice day - the weather is ^^^'\n }, {\n role: ChatMessageRole.Assistant,\n content: 'OK:[great!]END_INSERTION'\n }, {\n role: ChatMessageRole.User,\n content: 'ROLE: Customer service assistant\\nUSER_TEXT: You can find more information on^^^\\n\\nAlternatively, phone us.'\n }, {\n role: ChatMessageRole.Assistant,\n content: 'OK:[ our website at NEED_INFO]END_INSERTION'\n }, {\n role: ChatMessageRole.User,\n content: 'ROLE: Casual\\nUSER_TEXT: Oh I see!\\n\\nWell sure thing, we can'\n }, {\n role: ChatMessageRole.Assistant,\n content: 'OK:[ help you out with that!]END_INSERTION'\n }, {\n role: ChatMessageRole.User,\n content: 'ROLE: Storyteller\\nUSER_TEXT: Sir Digby Chicken Caesar, also know^^^'\n }, {\n role: ChatMessageRole.Assistant,\n content: 'OK:[n as NEED_INFO]END_INSERTION'\n }, {\n role: ChatMessageRole.User,\n content: 'ROLE: Customer support agent\\nUSER_TEXT: Goodbye for now.^^^'\n }, {\n role: ChatMessageRole.Assistant,\n content: 'NO_PREDICTION END_INSERTION'\n }, {\n role: ChatMessageRole.User,\n content: 'ROLE: Pirate\\nUSER_TEXT: Have you found^^^'\n }, {\n role: ChatMessageRole.Assistant,\n content: 'OK:[ the treasure, me hearties?]END_INSERTION'\n }, {\n role: ChatMessageRole.User,\n content: \"ROLE: \" + this.userRole + \"\\nUSER_TEXT: \" + textBefore + \"^^^\" + textAfter\n }];\n return {\n messages: chatMessageList,\n temperature: 0.0,\n maxTokens: 400,\n stopSequences: ['END_INSERTION', 'NEED_INFO'],\n frequencyPenalty: 0.0,\n presencePenalty: 0.0\n };\n };\n SmartTextArea.prototype.requestSuggestionAsync = function () {\n return __awaiter(this, void 0, void 0, function () {\n var requestDetails, suggestionData, chatConfig, insertSuggestion, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.pendingSuggestionAbort) {\n this.pendingSuggestionAbort.abort();\n return [2 /*return*/];\n }\n this.pendingSuggestionAbort = new AbortController();\n requestDetails = {\n textAreaValue: this.textArea.value,\n cursorPosition: this.textArea.selectionStart\n };\n suggestionData = {\n textBefore: requestDetails.textAreaValue.substring(0, requestDetails.cursorPosition),\n textAfter: requestDetails.textAreaValue.substring(requestDetails.cursorPosition)\n };\n chatConfig = this.createSuggestionPrompt(suggestionData.textBefore, suggestionData.textAfter);\n if (!(typeof this.aiSuggestionHandler === 'function')) return [3 /*break*/, 2];\n return [4 /*yield*/, this.aiSuggestionHandler(chatConfig)];\n case 1:\n response = _a.sent();\n insertSuggestion = this.validateSuggestion(response, suggestionData.textBefore);\n _a.label = 2;\n case 2:\n if (insertSuggestion && requestDetails.textAreaValue === this.textArea.value && requestDetails.cursorPosition === this.textArea.selectionStart) {\n if (!insertSuggestion.endsWith(' ')) {\n insertSuggestion += ' ';\n }\n this.suggestionDisplay.show(insertSuggestion);\n }\n return [2 /*return*/];\n }\n });\n });\n };\n SmartTextArea.prototype.validateSuggestion = function (response, textBefore) {\n var suggestion;\n if (typeof response !== 'string' || response.length <= 5 || response.indexOf('OK:[') !== 0) {\n return '';\n }\n var endIndex = this.indexOfAny(response, ['.', '?', '!']);\n if (endIndex > 0 && response.length > endIndex + 1 && response[endIndex + 1] === ' ') {\n response = response.substring(0, endIndex + 1);\n }\n suggestion = response.substring(4).replace(/[\\]\\s]+$/, '');\n if (textBefore.length > 0 && textBefore[textBefore.length - 1] === ' ') {\n suggestion = suggestion.replace(/^\\s+/, '');\n }\n return suggestion;\n };\n SmartTextArea.prototype.indexOfAny = function (str, chars) {\n for (var i = 0; i < str.length; i++) {\n if (chars.indexOf(str[\"\" + i]) !== -1) {\n return i;\n }\n }\n return -1;\n };\n SmartTextArea.prototype.getModuleName = function () {\n return 'smarttextarea';\n };\n SmartTextArea.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.textArea = null;\n this.suggestionDisplay = null;\n this.typingDebounceTimeout = null;\n };\n __decorate([Property('')], SmartTextArea.prototype, \"userRole\", void 0);\n __decorate([Property([])], SmartTextArea.prototype, \"UserPhrases\", void 0);\n __decorate([Property()], SmartTextArea.prototype, \"aiSuggestionHandler\", void 0);\n __decorate([Property('None')], SmartTextArea.prototype, \"showSuggestionOnPopup\", void 0);\n return SmartTextArea;\n}(TextArea);\nexport { SmartTextArea };\nvar InlineSuggestion = /** @class */function () {\n function InlineSuggestion(smartTextArea, textArea) {\n this.owner = smartTextArea;\n this.textArea = textArea;\n this.latestSuggestionText = '';\n this.suggestionStartPos = null;\n this.suggestionEndPos = null;\n this.virtualCaret = null;\n this.originalValueProperty = this.getOriginalValueProperty(textArea, 'value');\n }\n Object.defineProperty(InlineSuggestion.prototype, \"value\", {\n get: function () {\n var value = this.originalValueProperty.get.call(this.textArea);\n return this.isShowing() ? value.substring(0, this.suggestionStartPos) + value.substring(this.suggestionEndPos) : value;\n },\n set: function (newValue) {\n this.originalValueProperty.set.call(this.textArea, newValue);\n },\n enumerable: true,\n configurable: true\n });\n InlineSuggestion.prototype.getOriginalValueProperty = function (obj, property) {\n while (obj) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, property);\n if (descriptor) {\n return descriptor;\n }\n obj = Object.getPrototypeOf(obj);\n }\n throw new Error(\"Property \" + property + \" not found on object or its prototype chain\");\n };\n Object.defineProperty(InlineSuggestion.prototype, \"valueIncludingSuggestion\", {\n get: function () {\n return this.originalValueProperty.get.call(this.textArea);\n },\n set: function (newValue) {\n this.originalValueProperty.set.call(this.textArea, newValue);\n },\n enumerable: true,\n configurable: true\n });\n InlineSuggestion.prototype.isShowing = function () {\n return this.suggestionStartPos !== null;\n };\n InlineSuggestion.prototype.show = function (suggestionText) {\n this.latestSuggestionText = suggestionText;\n this.suggestionStartPos = this.textArea.selectionStart;\n this.suggestionEndPos = this.suggestionStartPos + suggestionText.length;\n this.textArea.setAttribute('data-suggestion-visible', '');\n this.valueIncludingSuggestion = this.valueIncludingSuggestion.substring(0, this.suggestionStartPos) + suggestionText + this.valueIncludingSuggestion.substring(this.suggestionStartPos);\n this.textArea.setSelectionRange(this.suggestionStartPos, this.suggestionEndPos);\n if (!this.virtualCaret) {\n this.virtualCaret = new VirtualCaret(this.owner, this.textArea);\n }\n this.virtualCaret.show();\n };\n Object.defineProperty(InlineSuggestion.prototype, \"currentSuggestion\", {\n get: function () {\n return this.latestSuggestionText;\n },\n enumerable: true,\n configurable: true\n });\n InlineSuggestion.prototype.accept = function () {\n this.textArea.setSelectionRange(this.suggestionEndPos, this.suggestionEndPos);\n this.suggestionStartPos = null;\n this.suggestionEndPos = null;\n if (this.virtualCaret) {\n this.virtualCaret.hide();\n }\n this.textArea.removeAttribute('data-suggestion-visible');\n CaretPositionHelper.adjustScrollToCaretPosition(this.textArea);\n };\n InlineSuggestion.prototype.reject = function () {\n if (!this.isShowing()) {\n return;\n }\n var selectionStart = this.textArea.selectionStart;\n var selectionEnd = this.textArea.selectionEnd;\n this.valueIncludingSuggestion = this.valueIncludingSuggestion.substring(0, this.suggestionStartPos) + this.valueIncludingSuggestion.substring(this.suggestionEndPos);\n if (this.suggestionStartPos === selectionStart && this.suggestionEndPos === selectionEnd) {\n this.textArea.setSelectionRange(selectionStart, selectionStart);\n }\n this.suggestionStartPos = null;\n this.suggestionEndPos = null;\n this.textArea.removeAttribute('data-suggestion-visible');\n if (this.virtualCaret) {\n this.virtualCaret.hide();\n }\n };\n return InlineSuggestion;\n}();\nvar ContextSuggestion = /** @class */function () {\n function ContextSuggestion(container, textArea) {\n var _this = this;\n this.latestSuggestionText = '';\n this.showing = false;\n this.textArea = textArea;\n this.suggestionElement = document.createElement('div');\n this.suggestionElement.classList.add('smart-textarea-suggestion-overlay');\n this.suggestionElement.addEventListener('mousedown', function (event) {\n return _this.handleSuggestionClicked(event);\n });\n this.suggestionElement.addEventListener('touchend', function (event) {\n return _this.handleSuggestionClicked(event);\n });\n this.suggestionPrefixElement = document.createElement('span');\n this.suggestionTextElement = document.createElement('span');\n this.suggestionElement.appendChild(this.suggestionPrefixElement);\n this.suggestionElement.appendChild(this.suggestionTextElement);\n this.suggestionPrefixElement.style.opacity = '0.3';\n var computedStyle = window.getComputedStyle(this.textArea);\n this.suggestionElement.style.font = computedStyle.font;\n this.suggestionElement.style.marginTop = 1.4 * parseFloat(computedStyle.fontSize) + \"px\";\n container.appendChild(this.suggestionElement);\n }\n Object.defineProperty(ContextSuggestion.prototype, \"currentSuggestion\", {\n get: function () {\n return this.latestSuggestionText;\n },\n enumerable: true,\n configurable: true\n });\n ContextSuggestion.prototype.show = function (suggestionText) {\n this.latestSuggestionText = suggestionText;\n this.suggestionPrefixElement.textContent = suggestionText[0] !== ' ' ? this.getPrefixText(this.textArea, 20) : '';\n this.suggestionTextElement.textContent = suggestionText;\n var position = CaretPositionHelper.getTextAreaPosition(this.textArea);\n var style = this.suggestionElement.style;\n style.minWidth = null;\n this.suggestionElement.classList.add('smart-textarea-suggestion-overlay-visible');\n style.zIndex = this.textArea.style.zIndex + 1;\n style.top = position.top + \"px\";\n var leftPosition = position.left - this.suggestionPrefixElement.offsetWidth;\n if (!style.left || Math.abs(parseFloat(style.left) - leftPosition) > 10) {\n style.left = leftPosition + \"px\";\n }\n this.showing = true;\n var computedStyle = window.getComputedStyle(this.suggestionElement);\n var lineHeight = parseFloat(computedStyle.lineHeight);\n var paddingTop = parseFloat(computedStyle.paddingTop);\n var paddingBottom = parseFloat(computedStyle.paddingBottom);\n var lines = Math.round((this.suggestionElement.offsetHeight - paddingTop - paddingBottom) / lineHeight);\n if (lines > 2) {\n var elementWidth = this.suggestionElement.offsetWidth;\n style.minWidth = \"calc(min(70vw, \" + lines * elementWidth / 2 + \"px))\";\n }\n var rect = this.suggestionElement.getBoundingClientRect();\n if (rect.right > document.body.clientWidth - 20) {\n style.left = \"calc(\" + (parseFloat(style.left) - (rect.right - document.body.clientWidth)) + \"px - 2rem)\";\n }\n };\n ContextSuggestion.prototype.accept = function () {\n if (this.showing) {\n CaretPositionHelper.insertCharacter(this.textArea, this.currentSuggestion);\n CaretPositionHelper.adjustScrollToCaretPosition(this.textArea);\n this.hide();\n }\n };\n ContextSuggestion.prototype.reject = function () {\n this.hide();\n };\n ContextSuggestion.prototype.hide = function () {\n if (this.showing) {\n this.showing = false;\n this.suggestionElement.classList.remove('smart-textarea-suggestion-overlay-visible');\n }\n };\n ContextSuggestion.prototype.isShowing = function () {\n return this.showing;\n };\n ContextSuggestion.prototype.handleSuggestionClicked = function (event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.accept();\n };\n ContextSuggestion.prototype.getPrefixText = function (textArea, maxLength) {\n var value = textArea.value;\n var selectionStart = textArea.selectionStart;\n for (var i = selectionStart - 1; i > selectionStart - maxLength; i--) {\n if (i < 0 || /\\s/.test(value[\"\" + i])) {\n return value.substring(i + 1, selectionStart);\n }\n }\n return '';\n };\n return ContextSuggestion;\n}();\nvar VirtualCaret = /** @class */function () {\n function VirtualCaret(smartTextArea, textArea) {\n this.textArea = textArea;\n this.caretDiv = document.createElement('div');\n this.caretDiv.classList.add('smart-textarea-caret');\n smartTextArea.appendChild(this.caretDiv);\n }\n VirtualCaret.prototype.show = function () {\n var textAreaPosition = CaretPositionHelper.getTextAreaPosition(this.textArea);\n var caretStyle = this.caretDiv.style;\n caretStyle.display = 'block';\n caretStyle.top = textAreaPosition.top + 'px';\n caretStyle.left = textAreaPosition.left + 'px';\n caretStyle.height = textAreaPosition.height + 'px';\n caretStyle.zIndex = this.textArea.style.zIndex;\n caretStyle.backgroundColor = textAreaPosition.elemStyle.caretColor;\n };\n VirtualCaret.prototype.hide = function () {\n this.caretDiv.style.display = 'none';\n };\n return VirtualCaret;\n}();","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 prefer-spread */\nimport { Component, Event, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { Browser, closest, detach, EventHandler, getInstance, select, selectAll, formatUnit } from '@syncfusion/ej2-base';\nimport { addClass, attributes, classList, isNullOrUndefined, L10n } from '@syncfusion/ej2-base';\nimport { remove, removeClass, rippleEffect } from '@syncfusion/ej2-base';\nimport { SplitButton, getModel } from '@syncfusion/ej2-splitbuttons';\nimport { Deferred } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip, getZindexPartial, Popup, isCollide } from '@syncfusion/ej2-popups';\nimport { Input } from './../input/index';\nimport { NumericTextBox } from './../numerictextbox/index';\nimport { Slider } from './../slider/slider';\nvar APPLY = 'e-apply';\nvar CANCEL = 'e-cancel';\nvar CURRENT = 'e-current';\nvar CONTAINER = 'e-container';\nvar CTRLBTN = 'e-ctrl-btn';\nvar CTRLSWITCH = 'e-switch-ctrl-btn';\nvar DISABLED = 'e-disabled';\nvar FORMATSWITCH = 'e-value-switch-btn';\nvar HANDLER = 'e-handler';\nvar HEX = 'e-hex';\nvar HIDEHEX = 'e-hide-hex-value';\nvar HIDEOPACITY = 'e-hide-opacity';\nvar HIDERGBA = 'e-hide-switchable-value';\nvar HIDEVALUE = 'e-hide-value';\nvar HIDEVALUESWITCH = 'e-hide-valueswitcher';\nvar HSVAREA = 'e-hsv-color';\nvar HSVCONTAINER = 'e-hsv-container';\nvar INPUTWRAPPER = 'e-selected-value';\nvar MODESWITCH = 'e-mode-switch-btn';\nvar NOCOLOR = 'e-nocolor-item';\nvar OPACITY = 'e-opacity-value';\nvar PALETTES = 'e-palette';\nvar PALETTECONTENT = 'e-color-palette';\nvar PICKERCONTENT = 'e-color-picker';\nvar PREVIEW = 'e-preview-container';\nvar PREVIOUS = 'e-previous';\nvar RTL = 'e-rtl';\nvar SHOWVALUE = 'e-show-value';\nvar SELECT = 'e-selected';\nvar SPLITPREVIEW = 'e-split-preview';\nvar TILE = 'e-tile';\nvar presets = {\n default: ['#000000', '#f44336', '#e91e63', '#9c27b0', '#673ab7', '#2196f3', '#03a9f4', '#00bcd4', '#009688', '#ffeb3b', '#ffffff', '#ffebee', '#fce4ec', '#f3e5f5', '#ede7f6', '#e3f2fd', '#e1f5fe', '#e0f7fa', '#e0f2f1', '#fffde7', '#f2f2f2', '#ffcdd2', '#f8bbd0', '#e1bee7', '#d1c4e9', '#bbdefb', '#b3e5fc', '#b2ebf2', '#b2dfdb', '#fff9c4', '#e6e6e6', '#ef9a9a', '#f48fb1', '#ce93d8', '#b39ddb', '#90caf9', '#81d4fa', '#80deea', '#80cbc4', '#fff59d', '#cccccc', '#e57373', '#f06292', '#ba68c8', '#9575cd', '#64b5f6', '#4fc3f7', '#4dd0e1', '#4db6ac', '#fff176', '#b3b3b3', '#ef5350', '#ec407a', '#ab47bc', '#7e57c2', '#42a5f5', '#29b6f6', '#26c6da', '#26a69a', '#ffee58', '#999999', '#e53935', '#d81b60', '#8e24aa', '#5e35b1', '#1e88e5', '#039be5', '#00acc1', '#00897b', '#fdd835', '#808080', '#d32f2f', '#c2185b', '#7b1fa2', '#512da8', '#1976d2', '#0288d1', '#0097a7', '#00796b', '#fbc02d', '#666666', '#c62828', '#ad1457', '#6a1b9a', '#4527a0', '#1565c0', '#0277bd', '#00838f', '#00695c', '#f9a825', '#4d4d4d', '#b71c1c', '#880e4f', '#4a148c', '#311b92', '#0d47a1', '#01579b', '#006064', '#004d40', '#f57f17']\n};\n/**\n * ColorPicker component is a user interface to select and adjust color values. It provides supports for various\n * color specification like Red Green Blue, Hue Saturation Value and Hex codes.\n * ```html\n * <input type=\"color\" id=\"color-picker\">\n * ```\n * ```typescript\n * <script>\n * let colorPickerObj: ColorPicker = new ColorPicker(null , \"#color-picker\");\n * </script>\n * ```\n */\nvar ColorPicker = /** @class */function (_super) {\n __extends(ColorPicker, _super);\n function ColorPicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.recentColors = [];\n return _this;\n }\n ColorPicker.prototype.preRender = function () {\n var ele = this.element;\n this.formElement = closest(this.element, 'form');\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n var localeText = {\n Apply: 'Apply',\n Cancel: 'Cancel',\n ModeSwitcher: 'Switch Mode',\n RecentColors: 'Recent colors'\n };\n this.l10n = new L10n('colorpicker', localeText, this.locale);\n if (ele.getAttribute('ejs-for') && !ele.getAttribute('name')) {\n ele.setAttribute('name', ele.id);\n }\n };\n /**\n * To Initialize the component rendering\n *\n * @private\n * @returns {void}\n */\n ColorPicker.prototype.render = function () {\n this.initWrapper();\n if (this.inline) {\n this.createWidget();\n } else {\n this.createSplitBtn();\n }\n if (!this.enableOpacity) {\n addClass([this.container.parentElement], HIDEOPACITY);\n }\n this.renderComplete();\n };\n ColorPicker.prototype.initWrapper = function () {\n var wrapper = this.createElement('div', {\n className: 'e-' + this.getModuleName() + '-wrapper'\n });\n this.element.parentNode.insertBefore(wrapper, this.element);\n wrapper.appendChild(this.element);\n attributes(this.element, {\n 'tabindex': '-1',\n 'spellcheck': 'false',\n 'aria-label': 'colorpicker'\n });\n this.container = this.createElement('div', {\n className: CONTAINER\n });\n this.getWrapper().appendChild(this.container);\n var value = this.value ? this.roundValue(this.value).toLowerCase() : '#008000ff';\n if (this.noColor && this.mode === 'Palette' && this.value === '') {\n value = '';\n }\n var slicedValue = value.slice(0, 7);\n if (isNullOrUndefined(this.initialInputValue)) {\n this.initialInputValue = slicedValue;\n }\n this.element.value = slicedValue;\n if (this.enableOpacity) {\n this.setProperties({\n 'value': value\n }, true);\n } else {\n this.setProperties({\n 'value': slicedValue\n }, true);\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.tileRipple = rippleEffect(this.container, {\n selector: '.' + TILE\n });\n this.ctrlBtnRipple = rippleEffect(this.container, {\n selector: '.e-btn'\n });\n };\n ColorPicker.prototype.getWrapper = function () {\n return this.element.parentElement;\n };\n ColorPicker.prototype.createWidget = function () {\n if (this.mode === 'Palette') {\n this.createPalette();\n if (!this.inline) {\n this.firstPaletteFocus();\n }\n } else {\n this.createPicker();\n if (!this.inline) {\n this.getDragHandler().focus();\n }\n }\n this.isRgb = true;\n this.createInput();\n this.createCtrlBtn();\n if (!this.disabled) {\n this.wireEvents();\n }\n if (this.inline && this.disabled) {\n this.toggleDisabled(true);\n }\n if (Browser.isDevice) {\n this.refreshPopupPos();\n }\n };\n ColorPicker.prototype.createSplitBtn = function () {\n var _this = this;\n var splitButton = this.createElement('button', {\n className: 'e-split-colorpicker'\n });\n this.getWrapper().appendChild(splitButton);\n this.splitBtn = new SplitButton({\n iconCss: 'e-selected-color',\n target: this.container,\n disabled: this.disabled,\n enableRtl: this.enableRtl,\n createPopupOnClick: this.createPopupOnClick,\n open: this.onOpen.bind(this),\n click: function () {\n var ev = new MouseEvent('click', {\n bubbles: true,\n cancelable: false\n });\n _this.trigger('change', {\n currentValue: {\n hex: _this.value.slice(0, 7),\n rgba: _this.convertToRgbString(_this.hexToRgb(_this.value))\n },\n previousValue: {\n hex: null,\n rgba: null\n },\n value: _this.value,\n event: ev\n });\n }\n });\n this.splitBtn.createElement = this.createElement;\n this.splitBtn.appendTo(splitButton);\n this.splitBtn.element.setAttribute('aria-label', 'colorpicker');\n var preview = this.createElement('span', {\n className: SPLITPREVIEW\n });\n select('.e-selected-color', splitButton).appendChild(preview);\n preview.style.backgroundColor = this.convertToRgbString(this.hexToRgb(this.value));\n var popupEle = this.getPopupEle();\n addClass([popupEle], 'e-colorpicker-popup');\n if (this.cssClass) {\n addClass([popupEle], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (Browser.isDevice && !this.createPopupOnClick) {\n var popupInst = this.getPopupInst();\n popupInst.relateTo = document.body;\n popupInst.position = {\n X: 'center',\n Y: 'center'\n };\n popupInst.targetType = 'container';\n popupInst.collision = {\n X: 'fit',\n Y: 'fit'\n };\n popupInst.offsetY = 4;\n popupEle.style.zIndex = getZindexPartial(this.splitBtn.element).toString();\n }\n this.bindCallBackEvent();\n };\n ColorPicker.prototype.onOpen = function () {\n this.trigger('open', {\n element: this.container\n });\n if (!Browser.isDevice) {\n var popupInst = this.getPopupInst();\n var collision = isCollide(popupInst.element);\n if (collision.length > 0) {\n popupInst.collision = {\n X: 'flip',\n Y: 'fit'\n };\n popupInst.position = {\n X: 'right',\n Y: 'bottom'\n };\n popupInst.targetType = 'container';\n }\n }\n };\n ColorPicker.prototype.getPopupInst = function () {\n return getInstance(this.getPopupEle(), Popup);\n };\n ColorPicker.prototype.bindCallBackEvent = function () {\n var _this = this;\n this.splitBtn.beforeOpen = function (args) {\n var callBackPromise = new Deferred();\n _this.trigger('beforeOpen', args, function (observeOpenArgs) {\n if (!observeOpenArgs.cancel) {\n var popupEle = _this.getPopupEle();\n popupEle.style.top = formatUnit(0 + pageYOffset);\n popupEle.style.left = formatUnit(0 + pageXOffset);\n popupEle.style.display = 'block';\n _this.createWidget();\n popupEle.style.display = '';\n if (Browser.isDevice) {\n if (_this.createPopupOnClick) {\n var popupInst = _this.getPopupInst();\n popupInst.relateTo = document.body;\n popupInst.position = {\n X: 'center',\n Y: 'center'\n };\n popupInst.targetType = 'container';\n popupInst.collision = {\n X: 'fit',\n Y: 'fit'\n };\n popupInst.offsetY = 4;\n popupEle.style.zIndex = getZindexPartial(_this.splitBtn.element).toString();\n }\n _this.modal = _this.createElement('div');\n _this.modal.className = 'e-' + _this.getModuleName() + ' e-modal';\n _this.modal.style.display = 'none';\n document.body.insertBefore(_this.modal, popupEle);\n document.body.className += ' e-colorpicker-overflow';\n _this.modal.style.display = 'block';\n _this.modal.style.zIndex = (Number(popupEle.style.zIndex) - 1).toString();\n }\n }\n args.cancel = observeOpenArgs.cancel;\n callBackPromise.resolve(observeOpenArgs);\n });\n return callBackPromise;\n };\n this.splitBtn.beforeClose = function (args) {\n var callBackPromise = new Deferred();\n if (!isNullOrUndefined(args.event)) {\n var beforeCloseArgs = {\n element: _this.container,\n event: args.event,\n cancel: false\n };\n _this.trigger('beforeClose', beforeCloseArgs, function (observedCloseArgs) {\n if (Browser.isDevice && args.event.target === _this.modal) {\n observedCloseArgs.cancel = true;\n }\n if (!observedCloseArgs.cancel) {\n _this.onPopupClose();\n }\n args.cancel = observedCloseArgs.cancel;\n callBackPromise.resolve(observedCloseArgs);\n });\n } else {\n callBackPromise.resolve(args);\n }\n return callBackPromise;\n };\n };\n ColorPicker.prototype.onPopupClose = function () {\n this.unWireEvents();\n this.destroyOtherComp();\n this.container.style.width = '';\n select('.' + SPLITPREVIEW, this.splitBtn.element).style.backgroundColor = this.convertToRgbString(this.hexToRgb(this.value));\n this.container.innerHTML = '';\n removeClass([this.container], [PICKERCONTENT, PALETTECONTENT]);\n if (Browser.isDevice && this.modal) {\n removeClass([document.body], 'e-colorpicker-overflow');\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n };\n ColorPicker.prototype.createPalette = function () {\n classList(this.container, [PALETTECONTENT], [PICKERCONTENT]);\n if (this.presetColors) {\n var paletteGroup = this.createElement('div', {\n className: 'e-custom-palette'\n });\n this.appendElement(paletteGroup);\n var keys = Object.keys(this.presetColors);\n if (keys.length === 1) {\n this.appendPalette(this.presetColors[keys[0]], keys[0], paletteGroup);\n } else {\n for (var i = 0, len = keys.length; i < len; i++) {\n this.appendPalette(this.presetColors[keys[i]], keys[i], paletteGroup);\n }\n }\n if (selectAll('.e-row', paletteGroup).length > 10) {\n addClass([paletteGroup], 'e-palette-group');\n }\n } else {\n this.appendPalette(presets.default, 'default');\n }\n if (this.mode === 'Palette' && !this.modeSwitcher && this.noColor) {\n this.setNoColor();\n }\n if (this.showRecentColors && this.recentColors && this.recentColors.length > 0) {\n this.renderRecentColor();\n }\n var width = parseInt(getComputedStyle(this.container).borderBottomWidth, 10);\n this.container.style.width = formatUnit(this.container.children[0].offsetWidth + width + width);\n this.rgb = this.hexToRgb(this.roundValue(this.value));\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n };\n ColorPicker.prototype.renderRecentColor = function () {\n var _this = this;\n var recentClrWpr = this.container.querySelector('.e-clr-pal-rec-wpr');\n if (recentClrWpr) {\n detach(recentClrWpr);\n }\n var recentColorWrapper = this.createElement('div', {\n className: 'e-clr-pal-rec-wpr'\n });\n var refEle = this.container.querySelector('.e-switch-ctrl-btn');\n if (refEle) {\n this.container.insertBefore(recentColorWrapper, refEle);\n } else {\n this.container.appendChild(recentColorWrapper);\n }\n var recentClrSpan = this.createElement('label', {\n className: 'e-recent-clr-span'\n });\n recentClrSpan.textContent = this.l10n.getConstant('RecentColors');\n recentColorWrapper.appendChild(recentClrSpan);\n if (this.recentColors.length > 0) {\n this.recentColors = this.recentColors.filter(function (item, index) {\n return _this.recentColors.indexOf(item) === index;\n });\n while (this.recentColors.length > 10) {\n this.recentColors.pop();\n }\n this.appendPalette(this.recentColors, 'recent-color', recentColorWrapper);\n }\n };\n ColorPicker.prototype.firstPaletteFocus = function () {\n if (!select('.' + SELECT, this.container.children[0])) {\n selectAll('.' + PALETTES, this.container)[0].focus();\n }\n };\n ColorPicker.prototype.appendPalette = function (colors, key, refEle) {\n var palette = this.createElement('div', {\n className: PALETTES,\n attrs: {\n 'tabindex': '0',\n 'role': 'grid'\n }\n });\n if (key === 'recent-color') {\n palette.classList.add('e-recent-palette');\n }\n if (refEle) {\n refEle.appendChild(palette);\n } else {\n this.appendElement(palette);\n }\n var row;\n var tile;\n var roundedColor;\n for (var i = 0, len = colors.length; i < len; i++) {\n if (i === 0 || i % this.columns === 0) {\n row = this.createElement('div', {\n className: 'e-row',\n attrs: {\n 'role': 'row'\n }\n });\n palette.appendChild(row);\n }\n roundedColor = this.roundValue(colors[i]).toLowerCase();\n tile = this.createElement('span', {\n className: TILE,\n attrs: {\n 'role': 'gridcell',\n 'aria-label': roundedColor,\n 'aria-selected': 'false'\n }\n });\n this.trigger('beforeTileRender', {\n element: tile,\n presetName: key,\n value: colors[i]\n });\n row.appendChild(tile);\n if (this.value === roundedColor && key !== 'recent-color') {\n this.addTileSelection(tile);\n palette.focus();\n }\n tile.style.backgroundColor = this.convertToRgbString(this.hexToRgb(roundedColor));\n }\n };\n ColorPicker.prototype.setNoColor = function () {\n var noColorEle = this.container.querySelector('.e-row').children[0];\n noColorEle.classList.add(NOCOLOR);\n if (!this.value) {\n noColorEle.classList.add(SELECT);\n closest(noColorEle, '.' + PALETTES).focus();\n }\n ['aria-selected', 'aria-label'].forEach(function (attr) {\n noColorEle.removeAttribute(attr);\n });\n noColorEle.style.backgroundColor = '';\n };\n ColorPicker.prototype.appendElement = function (ele, insertPos) {\n if (insertPos === void 0) {\n insertPos = 0;\n }\n var refEle = this.container.children[insertPos];\n if (refEle) {\n this.container.insertBefore(ele, refEle);\n } else {\n this.container.appendChild(ele);\n }\n };\n ColorPicker.prototype.addTileSelection = function (ele) {\n if (ele) {\n ele.classList.add(SELECT);\n ele.setAttribute('aria-selected', 'true');\n }\n };\n ColorPicker.prototype.createPicker = function () {\n classList(this.container, [PICKERCONTENT], [PALETTECONTENT]);\n var hsvContainer = this.createElement('div', {\n className: HSVCONTAINER\n });\n this.appendElement(hsvContainer);\n hsvContainer.appendChild(this.createElement('div', {\n className: HSVAREA\n }));\n var dragHandler = this.createElement('span', {\n className: HANDLER,\n attrs: {\n 'tabindex': '0'\n }\n });\n hsvContainer.appendChild(dragHandler);\n if (this.value === null || this.value === '') {\n this.value = '#008000ff';\n }\n this.rgb = this.hexToRgb(this.value);\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n this.setHsvContainerBg();\n this.setHandlerPosition();\n this.createSlider();\n this.createDragTooltip();\n };\n ColorPicker.prototype.setHsvContainerBg = function (h) {\n if (h === void 0) {\n h = this.hsv[0];\n }\n this.getHsvContainer().style.backgroundColor = this.convertToRgbString(this.hsvToRgb(h, 100, 100, 1));\n };\n ColorPicker.prototype.getHsvContainer = function () {\n return select('.' + HSVCONTAINER, this.container);\n };\n ColorPicker.prototype.setHandlerPosition = function () {\n var dragHandler = this.getDragHandler();\n var hsvArea = select('.' + HSVAREA, this.container);\n if (this.enableRtl) {\n dragHandler.style.left = formatUnit((hsvArea.offsetWidth - dragHandler.offsetWidth / 2.5) * Math.abs(100 - this.hsv[1]) / 100);\n } else {\n dragHandler.style.left = formatUnit((hsvArea.offsetWidth - dragHandler.offsetWidth / 2.5) * this.hsv[1] / 100);\n }\n dragHandler.style.top = formatUnit((hsvArea.offsetHeight - dragHandler.offsetHeight / 2.5) * (100 - this.hsv[2]) / 100);\n };\n ColorPicker.prototype.createSlider = function () {\n var sliderPreviewWrapper = this.createElement('div', {\n className: 'e-slider-preview'\n });\n this.appendElement(sliderPreviewWrapper, 1);\n this.createPreview(sliderPreviewWrapper);\n var sliderWrapper = this.createElement('div', {\n className: 'e-colorpicker-slider'\n });\n sliderPreviewWrapper.insertBefore(sliderWrapper, sliderPreviewWrapper.children[0]);\n var slider = this.createElement('div', {\n className: 'e-hue-slider'\n });\n sliderWrapper.appendChild(slider);\n this.hueSlider = new Slider({\n value: this.hsv[0],\n min: 0,\n max: 359,\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n change: this.hueChange.bind(this)\n });\n this.hueSlider.createElement = this.createElement;\n this.hueSlider.appendTo(slider);\n if (this.enableOpacity) {\n slider = this.createElement('div', {\n className: 'e-opacity-slider'\n });\n sliderWrapper.appendChild(slider);\n this.createOpacitySlider(slider);\n }\n };\n ColorPicker.prototype.createOpacitySlider = function (slider) {\n this.opacitySlider = new Slider({\n value: this.rgb[3] * 100,\n min: 0,\n max: 100,\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n change: this.opacityChange.bind(this)\n });\n this.opacitySlider.createElement = this.createElement;\n this.opacitySlider.appendTo(slider);\n var opacityBgTrack = this.createElement('div', {\n className: 'e-opacity-empty-track'\n });\n slider.appendChild(opacityBgTrack);\n this.updateOpacitySliderBg();\n };\n ColorPicker.prototype.updateOpacitySliderBg = function () {\n var direction = this.enableRtl ? 'to left' : 'to right';\n var opacityEle = select('.e-opacity-empty-track', this.opacitySlider.element);\n if (opacityEle) {\n opacityEle.style.background = 'linear-gradient(' + direction + ', rgba(' + this.rgb.slice(0, 3) + ', 0) 0%, ' + this.convertToRgbString(this.rgb.slice(0, 3)) + ' 100%)';\n }\n };\n ColorPicker.prototype.hueChange = function (args) {\n this.hsv[0] = args.value;\n this.setHsvContainerBg();\n this.convertToOtherFormat();\n };\n ColorPicker.prototype.opacityChange = function (args) {\n var value = args.value;\n var pValue = this.rgbToHex(this.rgb);\n this.hsv[3] = value / 100;\n this.rgb[3] = value / 100;\n var cValue = this.rgbToHex(this.rgb);\n this.updateOpacityInput(value);\n var rgb = this.convertToRgbString(this.rgb);\n this.updatePreview(rgb);\n this.triggerEvent(cValue, pValue, rgb);\n };\n ColorPicker.prototype.updateOpacityInput = function (value) {\n if (this.enableOpacity && !this.getWrapper().classList.contains(HIDEVALUE)) {\n var opacityTextBoxInst = getInstance(select('.' + OPACITY, this.container), NumericTextBox);\n opacityTextBoxInst.value = value;\n opacityTextBoxInst.dataBind();\n }\n };\n ColorPicker.prototype.createPreview = function (parentEle) {\n var previewContainer = this.createElement('div', {\n className: PREVIEW\n });\n parentEle.appendChild(previewContainer);\n var preview = this.createElement('span', {\n className: 'e-preview ' + CURRENT\n });\n previewContainer.appendChild(preview);\n var colorValue = this.convertToRgbString(this.rgb);\n preview.style.backgroundColor = colorValue;\n preview = this.createElement('span', {\n className: 'e-preview ' + PREVIOUS\n });\n previewContainer.appendChild(preview);\n preview.style.backgroundColor = colorValue;\n };\n ColorPicker.prototype.isPicker = function () {\n return !this.container.classList.contains(PALETTECONTENT);\n };\n ColorPicker.prototype.getPopupEle = function () {\n return this.container.parentElement;\n };\n ColorPicker.prototype.createNumericInput = function (element, value, label, max) {\n var _this = this;\n var numericInput = new NumericTextBox({\n value: value,\n placeholder: label,\n min: 0,\n max: max,\n format: '###.##',\n showSpinButton: false,\n floatLabelType: 'Always',\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n readonly: this.isPicker() ? false : true,\n change: function (args) {\n if (args.event) {\n _this.inputHandler(args.event);\n }\n }\n });\n numericInput.createElement = this.createElement;\n numericInput.appendTo(element);\n };\n ColorPicker.prototype.createInput = function () {\n var isPicker = this.isPicker();\n var wrapper = this.getWrapper();\n if (isPicker && !wrapper.classList.contains(HIDEVALUE) || !isPicker && wrapper.classList.contains(SHOWVALUE)) {\n var inputWrap = this.createElement('div', {\n className: INPUTWRAPPER\n });\n if (isPicker) {\n this.appendElement(inputWrap, 2);\n } else {\n this.appendElement(inputWrap, 1);\n }\n var container = this.createElement('div', {\n className: 'e-input-container'\n });\n inputWrap.appendChild(container);\n if (!wrapper.classList.contains(HIDEVALUESWITCH)) {\n this.appendValueSwitchBtn(inputWrap);\n }\n if (!wrapper.classList.contains(HIDEHEX)) {\n var hexInput = this.createElement('input', {\n className: HEX,\n attrs: {\n 'maxlength': '7',\n 'spellcheck': 'false',\n 'aria-label': 'HEX'\n }\n });\n container.appendChild(hexInput);\n Input.createInput({\n element: hexInput,\n floatLabelType: 'Always',\n properties: {\n placeholder: 'HEX',\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n readonly: this.isPicker() ? false : true\n }\n }, this.createElement);\n Input.setValue(this.value.slice(0, 7), hexInput);\n hexInput.addEventListener('input', this.inputHandler.bind(this));\n }\n if (!wrapper.classList.contains(HIDERGBA)) {\n var label = void 0;\n var value = void 0;\n if (this.isRgb) {\n label = 'RGB';\n value = this.rgb;\n } else {\n label = 'HSV';\n value = this.hsv;\n }\n var clsName = ['rh', 'gs', 'bv'];\n for (var i = 0; i < 3; i++) {\n this.createNumericInput(container.appendChild(this.createElement('input', {\n className: 'e-' + clsName[i] + '-value'\n })), value[i], label[i], 255);\n }\n if (this.enableOpacity) {\n this.appendOpacityValue(container);\n }\n }\n }\n };\n ColorPicker.prototype.appendOpacityValue = function (container) {\n this.createNumericInput(container.appendChild(this.createElement('input', {\n className: OPACITY\n })), this.rgb[3] * 100, 'A', 100);\n };\n ColorPicker.prototype.appendValueSwitchBtn = function (targetEle) {\n var valueSwitchBtn = this.createElement('button', {\n className: 'e-icons e-css e-btn e-flat e-icon-btn ' + FORMATSWITCH,\n attrs: {\n 'title': 'Toggle format'\n }\n });\n targetEle.appendChild(valueSwitchBtn);\n if (this.isPicker() && !this.getWrapper().classList.contains(HIDERGBA)) {\n valueSwitchBtn.addEventListener('click', this.formatSwitchHandler.bind(this));\n }\n };\n ColorPicker.prototype.createCtrlBtn = function () {\n if (this.modeSwitcher || this.showButtons) {\n this.l10n.setLocale(this.locale);\n var btnWrapper = this.createElement('div', {\n className: CTRLSWITCH\n });\n this.container.appendChild(btnWrapper);\n if (this.showButtons) {\n var controlBtnWrapper = this.createElement('div', {\n className: CTRLBTN\n });\n btnWrapper.appendChild(controlBtnWrapper);\n var apply = this.l10n.getConstant('Apply');\n controlBtnWrapper.appendChild(this.createElement('button', {\n innerHTML: apply,\n className: 'e-btn e-css e-flat e-primary e-small ' + APPLY,\n attrs: {\n 'title': apply\n }\n }));\n var cancel = this.l10n.getConstant('Cancel');\n controlBtnWrapper.appendChild(this.createElement('button', {\n innerHTML: cancel,\n className: 'e-btn e-css e-flat e-small ' + CANCEL,\n attrs: {\n 'title': cancel\n }\n }));\n }\n if (this.modeSwitcher) {\n this.appendModeSwitchBtn();\n }\n }\n };\n ColorPicker.prototype.appendModeSwitchBtn = function () {\n var modeSwitcher = this.createElement('button', {\n className: 'e-icons e-btn e-flat e-icon-btn ' + MODESWITCH,\n attrs: {\n title: this.l10n.getConstant('ModeSwitcher')\n }\n });\n select('.' + CTRLSWITCH, this.container).insertBefore(modeSwitcher, select('.' + CTRLBTN, this.container));\n };\n ColorPicker.prototype.createDragTooltip = function () {\n var _this = this;\n var tooltip = new Tooltip({\n opensOn: 'Custom',\n showTipPointer: false,\n cssClass: 'e-color-picker-tooltip',\n htmlAttributes: {\n title: 'tooltip'\n },\n beforeOpen: function (args) {\n _this.tooltipEle = args.element;\n },\n animation: {\n open: {\n effect: 'None'\n },\n close: {\n effect: 'None'\n }\n }\n });\n tooltip.createElement = this.createElement;\n tooltip.appendTo(this.container);\n tooltip.open(this.container);\n this.tooltipEle.style.zIndex = getZindexPartial(this.tooltipEle).toString();\n this.tooltipEle.setAttribute('aria-label', 'colorpicker-tooltip');\n select('.e-tip-content', this.tooltipEle).appendChild(this.createElement('div', {\n className: 'e-tip-transparent'\n }));\n };\n ColorPicker.prototype.getTooltipInst = function () {\n return getInstance(this.container, Tooltip);\n };\n ColorPicker.prototype.setTooltipOffset = function (value) {\n this.getTooltipInst().offsetY = value;\n };\n ColorPicker.prototype.toggleDisabled = function (enable) {\n if (enable) {\n this.getWrapper().classList.add(DISABLED);\n } else {\n this.getWrapper().classList.remove(DISABLED);\n }\n if (this.showButtons) {\n [].slice.call(selectAll('.e-btn', this.container)).forEach(function (ele) {\n if (enable) {\n attributes(ele, {\n 'disabled': ''\n });\n } else {\n ele.removeAttribute('disabled');\n }\n });\n }\n };\n ColorPicker.prototype.convertToRgbString = function (rgb) {\n return rgb.length ? rgb.length === 4 ? 'rgba(' + rgb.join() + ')' : 'rgb(' + rgb.join() + ')' : '';\n };\n ColorPicker.prototype.convertToHsvString = function (hsv) {\n return hsv.length === 4 ? 'hsva(' + hsv.join() + ')' : 'hsv(' + hsv.join() + ')';\n };\n ColorPicker.prototype.updateHsv = function () {\n this.hsv[1] = this.hsv[1] > 100 ? 100 : this.hsv[1];\n this.hsv[2] = this.hsv[2] > 100 ? 100 : this.hsv[2];\n this.setHandlerPosition();\n };\n ColorPicker.prototype.convertToOtherFormat = function (isKey, e) {\n if (isKey === void 0) {\n isKey = false;\n }\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hsvToRgb.apply(this, this.hsv);\n var cValue = this.rgbToHex(this.rgb);\n var rgba = this.convertToRgbString(this.rgb);\n this.updatePreview(rgba);\n this.updateInput(cValue);\n this.triggerEvent(cValue, pValue, rgba, isKey, e);\n };\n ColorPicker.prototype.updateInput = function (value) {\n var wrapper = this.getWrapper();\n if (!wrapper.classList.contains(HIDEVALUE)) {\n if (!wrapper.classList.contains(HIDEHEX)) {\n Input.setValue(value.substr(0, 7), select('.' + HEX, this.container));\n }\n if (!wrapper.classList.contains(HIDERGBA)) {\n if (this.isRgb) {\n this.updateValue(this.rgb, false);\n } else {\n this.updateValue(this.hsv, false);\n }\n }\n }\n };\n ColorPicker.prototype.updatePreview = function (value) {\n if (this.enableOpacity) {\n this.updateOpacitySliderBg();\n }\n select('.e-tip-transparent', this.tooltipEle).style.backgroundColor = value;\n select('.' + PREVIEW + ' .' + CURRENT, this.container).style.backgroundColor = value;\n select('.' + PREVIEW + ' .' + PREVIOUS, this.container).style.backgroundColor = this.convertToRgbString(this.hexToRgb(this.value));\n };\n ColorPicker.prototype.getDragHandler = function () {\n return select('.' + HANDLER, this.container);\n };\n ColorPicker.prototype.removeTileSelection = function () {\n var selectedEle = [].slice.call(selectAll('.' + SELECT, this.container));\n selectedEle.forEach(function (ele) {\n ele.classList.remove(SELECT);\n ele.setAttribute('aria-selected', 'false');\n });\n };\n ColorPicker.prototype.convertRgbToNumberArray = function (value) {\n return value.slice(value.indexOf('(') + 1, value.indexOf(')')).split(',').map(function (n, i) {\n return i !== 3 ? parseInt(n, 10) : parseFloat(n);\n });\n };\n /**\n * To get color value in specified type.\n *\n * @param {string} value - Specify the color value.\n * @param {string} type - Specify the type to which the specified color needs to be converted.\n * @method getValue\n * @returns {string} - Color value\n */\n ColorPicker.prototype.getValue = function (value, type) {\n if (!value) {\n value = this.value;\n }\n type = !type ? 'hex' : type.toLowerCase();\n if (value[0] === 'r') {\n var cValue = this.convertRgbToNumberArray(value);\n if (type === 'hex' || type === 'hexa') {\n var hex = this.rgbToHex(cValue);\n return type === 'hex' ? hex.slice(0, 7) : hex;\n } else {\n if (type === 'hsv') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, cValue.slice(0, 3)));\n } else {\n if (type === 'hsva') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, cValue));\n } else {\n return 'null';\n }\n }\n }\n } else {\n if (value[0] === 'h') {\n var cValue = this.hsvToRgb.apply(this, this.convertRgbToNumberArray(value));\n if (type === 'rgba') {\n return this.convertToRgbString(cValue);\n } else {\n if (type === 'hex' || type === 'hexa') {\n var hex = this.rgbToHex(cValue);\n return type === 'hex' ? hex.slice(0, 7) : hex;\n } else {\n if (type === 'rgb') {\n return this.convertToRgbString(cValue.slice(0, 3));\n } else {\n return 'null';\n }\n }\n }\n } else {\n value = this.roundValue(value);\n var rgb = this.hexToRgb(value);\n if (type === 'rgb' || type === 'hsv') {\n rgb = rgb.slice(0, 3);\n }\n if (type === 'rgba' || type === 'rgb') {\n return this.convertToRgbString(rgb);\n } else {\n if (type === 'hsva' || type === 'hsv') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, rgb));\n } else {\n if (type === 'hex') {\n return value.slice(0, 7);\n } else {\n if (type === 'a') {\n return rgb[3].toString();\n } else {\n return 'null';\n }\n }\n }\n }\n }\n }\n };\n /**\n * To show/hide ColorPicker popup based on current state of the SplitButton.\n *\n * @method toggle\n * @returns {void}\n */\n ColorPicker.prototype.toggle = function () {\n if (this.container.parentElement.classList.contains('e-popup-close')) {\n this.splitBtn.toggle();\n } else {\n this.closePopup(null);\n }\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n ColorPicker.prototype.getModuleName = function () {\n return 'colorpicker';\n };\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n ColorPicker.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n ColorPicker.prototype.wireEvents = function () {\n if (this.isPicker()) {\n var dragHandler = this.getDragHandler();\n EventHandler.add(dragHandler, 'keydown', this.pickerKeyDown, this);\n var ctrlBtn = select('.' + CTRLBTN, this.container);\n if (ctrlBtn) {\n EventHandler.add(ctrlBtn, 'keydown', this.ctrlBtnKeyDown, this);\n }\n EventHandler.add(this.getHsvContainer(), 'mousedown touchstart', this.handlerDown, this);\n if (this.modeSwitcher || this.showButtons) {\n this.addCtrlSwitchEvent();\n }\n EventHandler.add(select('.' + PREVIOUS, this.container), 'click', this.previewHandler, this);\n } else {\n EventHandler.add(this.container, 'click', this.paletteClickHandler, this);\n EventHandler.add(this.container, 'keydown', this.paletteKeyDown, this);\n }\n };\n ColorPicker.prototype.formResetHandler = function () {\n this.value = this.initialInputValue;\n attributes(this.element, {\n 'value': this.initialInputValue\n });\n };\n ColorPicker.prototype.addCtrlSwitchEvent = function () {\n var ctrlSwitchBtn = select('.' + CTRLSWITCH, this.container);\n if (ctrlSwitchBtn) {\n EventHandler.add(ctrlSwitchBtn, 'click', this.btnClickHandler, this);\n }\n };\n ColorPicker.prototype.ctrlBtnKeyDown = function (e) {\n if (e.keyCode === 13) {\n var applyBtn = select('.' + APPLY, this.container);\n if (applyBtn) {\n var cValue = this.rgbToHex(this.rgb);\n this.triggerChangeEvent(cValue);\n }\n this.splitBtn.element.focus();\n }\n };\n ColorPicker.prototype.pickerKeyDown = function (e) {\n switch (e.keyCode) {\n case 39:\n this.handlerDragPosition(1, this.enableRtl ? -1 : 1, e);\n break;\n case 37:\n this.handlerDragPosition(1, this.enableRtl ? 1 : -1, e);\n break;\n case 38:\n this.handlerDragPosition(2, 1, e);\n break;\n case 40:\n this.handlerDragPosition(2, -1, e);\n break;\n case 13:\n {\n e.preventDefault();\n var cValue = this.rgbToHex(this.rgb);\n this.enterKeyHandler(cValue);\n }\n }\n };\n ColorPicker.prototype.enterKeyHandler = function (value) {\n this.triggerChangeEvent(value);\n if (!this.inline) {\n this.splitBtn.element.focus();\n }\n };\n ColorPicker.prototype.closePopup = function (e) {\n var _this = this;\n var beforeCloseArgs = {\n element: this.container,\n event: e,\n cancel: false\n };\n this.trigger('beforeClose', beforeCloseArgs, function (observedcloseArgs) {\n if (!observedcloseArgs.cancel) {\n _this.splitBtn.toggle();\n _this.onPopupClose();\n }\n });\n };\n ColorPicker.prototype.triggerChangeEvent = function (value, e) {\n var hex = value.slice(0, 7);\n this.trigger('change', {\n currentValue: {\n hex: hex,\n rgba: this.convertToRgbString(this.rgb)\n },\n event: e,\n previousValue: {\n hex: this.value.slice(0, 7),\n rgba: this.convertToRgbString(this.hexToRgb(this.value))\n },\n value: this.enableOpacity ? value : hex\n });\n if (this.showRecentColors) {\n this.recentColors.unshift(hex);\n if (this.inline) {\n this.renderRecentColor();\n }\n }\n if (this.enableOpacity) {\n this.setProperties({\n 'value': value\n }, true);\n } else {\n this.setProperties({\n 'value': hex\n }, true);\n }\n this.element.value = hex ? hex : '#000000';\n };\n ColorPicker.prototype.handlerDragPosition = function (prob, value, e) {\n e.preventDefault();\n this.hsv[prob] += value * (e.ctrlKey ? 1 : 3);\n if (this.hsv[prob] < 0) {\n this.hsv[prob] = 0;\n }\n this.updateHsv();\n this.convertToOtherFormat(true, e);\n };\n ColorPicker.prototype.handlerDown = function (e) {\n e.preventDefault();\n if (e.type === 'mousedown') {\n this.clientX = Math.abs(e.pageX - pageXOffset);\n this.clientY = Math.abs(e.pageY - pageYOffset);\n this.setTooltipOffset(8);\n } else {\n this.clientX = Math.abs(e.changedTouches[0].pageX - pageXOffset);\n this.clientY = Math.abs(e.changedTouches[0].pageY - pageYOffset);\n this.setTooltipOffset(-8);\n }\n this.setHsv(this.clientX, this.clientY);\n this.getDragHandler().style.transition = 'left .4s cubic-bezier(.25, .8, .25, 1), top .4s cubic-bezier(.25, .8, .25, 1)';\n this.updateHsv();\n this.convertToOtherFormat(false, e);\n this.getDragHandler().focus();\n EventHandler.add(document, 'mousemove touchmove', this.handlerMove, this);\n EventHandler.add(document, 'mouseup touchend', this.handlerEnd, this);\n };\n ColorPicker.prototype.handlerMove = function (e) {\n if (e.type !== 'touchmove') {\n e.preventDefault();\n }\n var x;\n var y;\n if (e.type === 'mousemove') {\n x = Math.abs(e.pageX - pageXOffset);\n y = Math.abs(e.pageY - pageYOffset);\n } else {\n x = Math.abs(e.changedTouches[0].pageX - pageXOffset);\n y = Math.abs(e.changedTouches[0].pageY - pageYOffset);\n }\n this.setHsv(x, y);\n var dragHandler = this.getDragHandler();\n this.updateHsv();\n this.convertToOtherFormat(false, e);\n this.getTooltipInst().refresh(dragHandler);\n if (!this.tooltipEle.style.transform) {\n if (Math.abs(this.clientX - x) > 8 || Math.abs(this.clientY - y) > 8) {\n select('.' + HSVAREA, this.container).style.cursor = 'pointer';\n dragHandler.style.transition = 'none';\n if (!this.inline) {\n this.tooltipEle.style.zIndex = (parseInt(this.getPopupEle().style.zIndex, 10) + 1).toString();\n }\n this.tooltipEle.style.transform = 'rotate(45deg)';\n dragHandler.classList.add('e-hide-handler');\n }\n }\n };\n ColorPicker.prototype.setHsv = function (clientX, clientY) {\n var ele = select('.' + HSVAREA, this.container);\n var position = ele.getBoundingClientRect();\n if (this.enableRtl) {\n clientX = clientX > position.right ? 0 : Math.abs(clientX - position.right);\n } else {\n clientX = clientX > position.left ? Math.abs(clientX - position.left) : 0;\n }\n clientY = clientY > position.top ? Math.abs(clientY - position.top) : 0;\n this.hsv[2] = Math.round(Number(100 * (ele.offsetHeight - Math.max(0, Math.min(ele.offsetHeight, clientY - ele.offsetTop))) / ele.offsetHeight) * 10) / 10;\n this.hsv[1] = Math.round(Number(100 * Math.max(0, Math.min(ele.offsetWidth, clientX - ele.offsetLeft)) / ele.offsetWidth) * 10) / 10;\n };\n ColorPicker.prototype.handlerEnd = function (e) {\n if (e.type !== 'touchend') {\n e.preventDefault();\n }\n EventHandler.remove(document, 'mousemove touchmove', this.handlerMove);\n EventHandler.remove(document, 'mouseup touchend', this.handlerEnd);\n var dragHandler = this.getDragHandler();\n select('.' + HSVAREA, this.container).style.cursor = '';\n if (this.tooltipEle.style.transform) {\n this.tooltipEle.style.transform = '';\n dragHandler.classList.remove('e-hide-handler');\n }\n if (!this.inline && !this.showButtons) {\n this.closePopup(e);\n }\n };\n ColorPicker.prototype.btnClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.' + MODESWITCH)) {\n e.stopPropagation();\n this.switchToPalette();\n } else {\n if (target.classList.contains(APPLY) || target.classList.contains(CANCEL)) {\n this.ctrlBtnClick(target, e);\n }\n }\n };\n ColorPicker.prototype.switchToPalette = function () {\n this.trigger('beforeModeSwitch', {\n element: this.container,\n mode: 'Palette'\n });\n this.unWireEvents();\n this.destroyOtherComp();\n detach(select('.e-slider-preview', this.container));\n if (!this.getWrapper().classList.contains(HIDEVALUE)) {\n remove(select('.' + INPUTWRAPPER, this.container));\n }\n detach(this.getHsvContainer());\n this.createPalette();\n this.firstPaletteFocus();\n this.createInput();\n this.refreshPopupPos();\n //for image editor popup position refreshing\n if (this.element.parentElement && this.element.parentElement.parentElement && this.element.parentElement.parentElement.classList.contains('e-ie-ddb-popup')) {\n this.refreshImageEditorPopupPos();\n }\n this.wireEvents();\n this.trigger('onModeSwitch', {\n element: this.container,\n mode: 'Palette'\n });\n };\n //for image editor popup position refreshing\n ColorPicker.prototype.refreshImageEditorPopupPos = function () {\n if (Browser.isDevice) {\n var popupEle = this.getPopupEle();\n popupEle.style.left = formatUnit(0 + pageXOffset);\n popupEle.style.top = formatUnit(0 + pageYOffset);\n var btnElem = document.querySelector(\"#\" + this.element.parentElement.parentElement.id.split('-popup')[0]);\n if (btnElem) {\n //eslint-disable-next-line @typescript-eslint/no-explicit-any\n popupEle.parentElement.ej2_instances[0].refreshPosition(btnElem);\n }\n }\n };\n ColorPicker.prototype.refreshPopupPos = function () {\n if (!this.inline) {\n var popupEle = this.getPopupEle();\n popupEle.style.left = formatUnit(0 + pageXOffset);\n popupEle.style.top = formatUnit(0 + pageYOffset);\n this.getPopupInst().refreshPosition(this.splitBtn.element.parentElement);\n }\n };\n ColorPicker.prototype.formatSwitchHandler = function () {\n if (this.isRgb) {\n this.updateValue(this.hsv, true, 3, [360, 100, 100]);\n this.isRgb = false;\n } else {\n this.updateValue(this.rgb, true, 2);\n this.isRgb = true;\n }\n };\n ColorPicker.prototype.updateValue = function (value, format, idx, max) {\n var clsName = ['e-rh-value', 'e-gs-value', 'e-bv-value'];\n var inst;\n for (var i = 0, len = clsName.length; i < len; i++) {\n inst = getInstance(select('.' + clsName[i], this.container), NumericTextBox);\n inst.value = Math.round(value[i]);\n if (format) {\n inst.placeholder = clsName[i].substr(idx, 1).toUpperCase();\n inst.max = max ? max[i] : 255;\n }\n inst.dataBind();\n }\n };\n ColorPicker.prototype.previewHandler = function (e) {\n var target = e.target;\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.convertRgbToNumberArray(target.style.backgroundColor);\n if (!this.rgb[3]) {\n this.rgb[3] = 1;\n }\n var cValue = this.rgbToHex(this.rgb);\n var hsv = this.rgbToHsv.apply(this, this.rgb);\n if (hsv[0] !== this.hsv[0]) {\n this.hueSlider.setProperties({\n 'value': hsv[0]\n }, true);\n this.hueSlider.refresh();\n }\n this.setHsvContainerBg(hsv[0]);\n if (this.enableOpacity && hsv[3] !== this.hsv[3]) {\n this.opacitySlider.setProperties({\n 'value': hsv[3] * 100\n }, true);\n this.opacitySlider.refresh();\n this.updateOpacitySliderBg();\n }\n this.hsv = hsv;\n this.setHandlerPosition();\n this.updateInput(cValue);\n select('.' + PREVIEW + ' .' + CURRENT, this.container).style.backgroundColor = this.convertToRgbString(this.rgb);\n this.triggerEvent(cValue, pValue, this.convertToRgbString(this.rgb), false, e);\n };\n ColorPicker.prototype.paletteClickHandler = function (e) {\n e.preventDefault();\n var target = e.target;\n if (target.classList.contains(TILE)) {\n this.removeTileSelection();\n this.addTileSelection(target);\n if (target.classList.contains(NOCOLOR)) {\n this.noColorTile();\n } else {\n var cValue = target.getAttribute('aria-label');\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hexToRgb(this.roundValue(cValue));\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n if (this.getWrapper().classList.contains(SHOWVALUE)) {\n this.updateInput(cValue);\n }\n this.triggerEvent(cValue, pValue, this.convertToRgbString(this.rgb), false, e);\n }\n if (!this.inline && !this.showButtons) {\n this.closePopup(e);\n }\n } else {\n if (closest(target, '.' + MODESWITCH)) {\n this.switchToPicker();\n } else {\n if (target.classList.contains(APPLY) || target.classList.contains(CANCEL)) {\n this.ctrlBtnClick(target, e);\n } else {\n if (this.getWrapper().classList.contains(SHOWVALUE) && closest(target, '.' + FORMATSWITCH)) {\n this.formatSwitchHandler();\n }\n }\n }\n }\n };\n ColorPicker.prototype.noColorTile = function (isKey) {\n if (isKey === void 0) {\n isKey = false;\n }\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = [];\n this.hsv = [];\n this.triggerEvent('', pValue, '', isKey);\n };\n ColorPicker.prototype.switchToPicker = function () {\n var wrapper = this.getWrapper();\n this.trigger('beforeModeSwitch', {\n element: this.container,\n mode: 'Picker'\n });\n this.unWireEvents();\n [].slice.call(selectAll('.' + PALETTES, this.container)).forEach(function (ele) {\n detach(ele);\n });\n if (this.container.querySelector('.e-clr-pal-rec-wpr')) {\n detach(this.container.querySelector('.e-clr-pal-rec-wpr'));\n }\n if (wrapper.classList.contains(SHOWVALUE)) {\n detach(select('.' + INPUTWRAPPER, this.container));\n }\n this.container.style.width = '';\n var grpEle = select('.e-custom-palette', this.container);\n if (this.presetColors) {\n remove(grpEle);\n }\n this.createPicker();\n this.getDragHandler().focus();\n this.createInput();\n this.refreshPopupPos();\n //for image editor popup position refreshing\n if (this.element.parentElement && this.element.parentElement.parentElement && this.element.parentElement.parentElement.classList.contains('e-ie-ddb-popup')) {\n this.refreshImageEditorPopupPos();\n }\n this.wireEvents();\n this.trigger('onModeSwitch', {\n element: this.container,\n mode: 'Picker'\n });\n };\n ColorPicker.prototype.ctrlBtnClick = function (ele, e) {\n if (ele.classList.contains(APPLY)) {\n var cValue = this.rgbToHex(this.rgb);\n this.triggerChangeEvent(cValue, e);\n }\n if (!this.inline) {\n this.closePopup(e);\n this.splitBtn.element.focus();\n } else if (ele.classList.contains(CANCEL)) {\n var beforeCloseArgs = {\n element: this.container,\n event: e,\n cancel: false\n };\n this.trigger('beforeClose', beforeCloseArgs);\n }\n };\n ColorPicker.prototype.paletteKeyDown = function (e) {\n var target = e.target;\n if (!target.classList.contains(PALETTES)) {\n return;\n }\n var selectedEle;\n var idx;\n var tiles = [].slice.call(selectAll('.' + TILE, target));\n var prevSelectedEle = tiles.filter(function (tile) {\n return tile.classList.contains('e-selected');\n }).pop();\n switch (!e.altKey && e.keyCode) {\n case 39:\n e.preventDefault();\n selectedEle = prevSelectedEle ? tiles[this.tilePosition(tiles, prevSelectedEle, this.enableRtl ? -1 : 1)] : tiles[this.enableRtl ? tiles.length - 1 : 0];\n this.keySelectionChanges(selectedEle);\n break;\n case 37:\n e.preventDefault();\n selectedEle = prevSelectedEle ? tiles[this.tilePosition(tiles, prevSelectedEle, this.enableRtl ? 1 : -1)] : tiles[this.enableRtl ? 0 : tiles.length - 1];\n this.keySelectionChanges(selectedEle);\n break;\n case 38:\n e.preventDefault();\n idx = prevSelectedEle ? this.tilePosition(tiles, prevSelectedEle, -this.columns) : 0;\n selectedEle = tiles[idx] ? tiles[idx] : tiles[idx - this.columns];\n this.keySelectionChanges(selectedEle);\n break;\n case 40:\n e.preventDefault();\n idx = prevSelectedEle ? this.tilePosition(tiles, prevSelectedEle, this.columns) : tiles.length - 1;\n if (tiles[idx]) {\n selectedEle = tiles[idx];\n } else {\n idx %= tiles.length;\n idx += tiles[tiles.length - 1].parentElement.childElementCount;\n selectedEle = tiles[idx];\n }\n this.keySelectionChanges(selectedEle);\n break;\n case 13:\n e.preventDefault();\n if (prevSelectedEle) {\n var cValue = prevSelectedEle.getAttribute('aria-label');\n this.enterKeyHandler(cValue ? cValue : '');\n }\n break;\n }\n };\n ColorPicker.prototype.keySelectionChanges = function (newEle) {\n this.removeTileSelection();\n this.addTileSelection(newEle);\n if (newEle.classList.contains(NOCOLOR)) {\n this.noColorTile(true);\n } else {\n var cValue = newEle.getAttribute('aria-label');\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hexToRgb(cValue);\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n if (this.getWrapper().classList.contains(SHOWVALUE)) {\n this.updateInput(cValue);\n }\n this.triggerEvent(cValue, pValue, this.convertToRgbString(this.rgb), true);\n }\n };\n ColorPicker.prototype.tilePosition = function (items, element, cIdx) {\n items = Array.prototype.slice.call(items);\n var n = items.length;\n var emptyCount = this.columns - items[n - 1].parentElement.childElementCount;\n var idx = items.indexOf(element);\n idx += cIdx;\n if (idx < 0) {\n idx += n + emptyCount;\n } else {\n idx %= n + emptyCount;\n }\n return idx;\n };\n ColorPicker.prototype.inputHandler = function (e) {\n var target = e.target;\n if (!target.value.length) {\n return;\n }\n var hsv;\n var pValue;\n var label = select('.e-float-text', target.parentElement).textContent;\n switch (label) {\n case 'HEX':\n {\n var value = '';\n if (target.value[0] === '#' && target.value.length !== 5 || target.value[0] !== '#' && target.value.length !== 4) {\n value = this.roundValue(target.value);\n }\n if (value.length === 9) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hexToRgb(value + value.substr(-2));\n this.inputValueChange(this.rgbToHsv.apply(this, this.rgb), pValue, target.value, e);\n } else {\n return;\n }\n break;\n }\n case 'R':\n if (this.rgb[0] !== Number(target.value)) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb[0] = Number(target.value);\n hsv = this.rgbToHsv.apply(this, this.rgb);\n this.inputValueChange(hsv, pValue, null, e);\n }\n break;\n case 'G':\n if (this.rgb[1] !== Number(target.value)) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb[1] = Number(target.value);\n hsv = this.rgbToHsv.apply(this, this.rgb);\n this.inputValueChange(hsv, pValue, null, e);\n }\n break;\n case 'B':\n if (this.rgb[2] !== Number(target.value)) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb[2] = Number(target.value);\n hsv = this.rgbToHsv.apply(this, this.rgb);\n this.inputValueChange(hsv, pValue, null, e);\n }\n break;\n case 'H':\n this.hueSlider.value = Number(target.value);\n break;\n case 'S':\n if (this.hsv[1] !== Number(target.value)) {\n this.hsv[1] = Number(target.value);\n this.updateHsv();\n this.convertToOtherFormat(false, e);\n }\n break;\n case 'V':\n if (this.hsv[2] !== Number(target.value)) {\n this.hsv[2] = Number(target.value);\n this.updateHsv();\n this.convertToOtherFormat(false, e);\n }\n break;\n case 'A':\n this.opacitySlider.value = Number(target.value);\n break;\n }\n };\n ColorPicker.prototype.inputValueChange = function (hsv, pValue, value, e) {\n if (hsv[0] !== this.hsv[0]) {\n this.hueSlider.setProperties({\n 'value': hsv[0]\n }, true);\n this.hueSlider.refresh();\n this.setHsvContainerBg(hsv[0]);\n }\n this.hsv = hsv;\n var cValue = this.rgbToHex(this.rgb);\n this.setHandlerPosition();\n this.updateInput(value ? value : cValue);\n var rgba = this.convertToRgbString(this.rgb);\n this.updatePreview(rgba);\n this.triggerEvent(cValue, pValue, rgba, false, e);\n };\n ColorPicker.prototype.triggerEvent = function (cValue, pValue, rgba, isKey, e) {\n if (isKey === void 0) {\n isKey = false;\n }\n var hex = cValue.slice(0, 7);\n if (isNullOrUndefined(e)) {\n e = new MouseEvent('click', {\n bubbles: true,\n cancelable: false\n });\n }\n if (!this.showButtons && !isKey) {\n this.trigger('change', {\n currentValue: {\n hex: hex,\n rgba: rgba\n },\n event: e,\n previousValue: {\n hex: this.value.slice(0, 7),\n rgba: this.convertToRgbString(this.hexToRgb(this.value))\n },\n value: cValue\n });\n if (this.showRecentColors) {\n this.recentColors.unshift(hex);\n if (this.inline) {\n this.renderRecentColor();\n }\n }\n if (this.enableOpacity) {\n this.setProperties({\n 'value': cValue\n }, true);\n } else {\n this.setProperties({\n 'value': hex\n }, true);\n }\n this.element.value = hex ? hex : '#000000';\n } else {\n this.trigger('select', {\n currentValue: {\n hex: hex,\n rgba: rgba\n },\n event: e,\n previousValue: {\n hex: pValue.slice(0, 7),\n rgba: this.convertToRgbString(this.hexToRgb(pValue))\n }\n });\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n ColorPicker.prototype.destroy = function () {\n var _this = this;\n var wrapper = this.getWrapper();\n _super.prototype.destroy.call(this);\n ['tabindex', 'spellcheck'].forEach(function (attr) {\n _this.element.removeAttribute(attr);\n });\n if (this.inline) {\n this.unWireEvents();\n this.destroyOtherComp();\n } else {\n if (this.isPopupOpen()) {\n this.unWireEvents();\n this.destroyOtherComp();\n }\n this.splitBtn.destroy();\n this.splitBtn = null;\n }\n this.tileRipple();\n this.tileRipple = null;\n this.ctrlBtnRipple();\n this.ctrlBtnRipple = null;\n if (this.element.nextElementSibling) {\n detach(this.element.nextElementSibling);\n }\n if (wrapper) {\n wrapper.parentElement.insertBefore(this.element, wrapper);\n detach(wrapper);\n }\n this.container = null;\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n ColorPicker.prototype.destroyOtherComp = function () {\n if (this.isPicker()) {\n var popup = closest(this.hueSlider.element, '.e-color-picker');\n var numericElemColl = popup.querySelectorAll('.e-numerictextbox');\n for (var i = 0; i < numericElemColl.length; i++) {\n getInstance(numericElemColl[i], NumericTextBox).destroy();\n }\n this.hueSlider.destroy();\n if (this.enableOpacity) {\n this.opacitySlider.destroy();\n this.opacitySlider = null;\n }\n this.hueSlider = null;\n var tooltipInst = this.getTooltipInst();\n tooltipInst.close();\n tooltipInst.destroy();\n this.tooltipEle = null;\n }\n };\n ColorPicker.prototype.isPopupOpen = function () {\n return this.getPopupEle().classList.contains('e-popup-open');\n };\n ColorPicker.prototype.unWireEvents = function () {\n if (this.isPicker()) {\n var dragHandler = this.getDragHandler();\n EventHandler.remove(dragHandler, 'keydown', this.pickerKeyDown);\n var ctrlBtn = select('.' + CTRLBTN, this.container);\n if (ctrlBtn) {\n EventHandler.remove(ctrlBtn, 'keydown', this.ctrlBtnKeyDown);\n }\n EventHandler.remove(this.getHsvContainer(), 'mousedown touchstart', this.handlerDown);\n if (this.modeSwitcher || this.showButtons) {\n EventHandler.remove(select('.' + CTRLSWITCH, this.container), 'click', this.btnClickHandler);\n }\n EventHandler.remove(select('.' + PREVIOUS, this.container), 'click', this.previewHandler);\n } else {\n EventHandler.remove(this.container, 'click', this.paletteClickHandler);\n EventHandler.remove(this.container, 'keydown', this.paletteKeyDown);\n }\n };\n ColorPicker.prototype.roundValue = function (value) {\n if (!value) {\n return '';\n }\n if (value[0] !== '#') {\n value = '#' + value;\n }\n var len = value.length;\n if (len === 4) {\n value += 'f';\n len = 5;\n }\n if (len === 5) {\n var tempValue = '';\n for (var i = 1, len_1 = value.length; i < len_1; i++) {\n tempValue += value.charAt(i) + value.charAt(i);\n }\n value = '#' + tempValue;\n len = 9;\n }\n if (len === 7) {\n value += 'ff';\n }\n return value;\n };\n ColorPicker.prototype.hexToRgb = function (hex) {\n if (!hex) {\n return [];\n }\n hex = hex.trim();\n if (hex.length !== 9) {\n hex = this.roundValue(hex);\n }\n var opacity = Number((parseInt(hex.slice(-2), 16) / 255).toFixed(2));\n hex = hex.slice(1, 7);\n var bigInt = parseInt(hex, 16);\n var h = [];\n h.push(bigInt >> 16 & 255);\n h.push(bigInt >> 8 & 255);\n h.push(bigInt & 255);\n h.push(opacity);\n return h;\n };\n ColorPicker.prototype.rgbToHsv = function (r, g, b, opacity) {\n if (this.rgb && !this.rgb.length) {\n return [];\n }\n r /= 255;\n g /= 255;\n b /= 255;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var v = max;\n var d = max - min;\n var s = max === 0 ? 0 : d / max;\n if (max === min) {\n h = 0;\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n var hsv = [Math.round(h * 360), Math.round(s * 1000) / 10, Math.round(v * 1000) / 10];\n if (!isNullOrUndefined(opacity)) {\n hsv.push(opacity);\n }\n return hsv;\n };\n ColorPicker.prototype.hsvToRgb = function (h, s, v, opacity) {\n var r;\n var g;\n var b;\n s /= 100;\n v /= 100;\n if (s === 0) {\n r = g = b = v;\n return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255), opacity];\n }\n h /= 60;\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n switch (i) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n default:\n r = v;\n g = p;\n b = q;\n }\n var rgb = [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\n if (!isNullOrUndefined(opacity)) {\n rgb.push(opacity);\n }\n return rgb;\n };\n ColorPicker.prototype.rgbToHex = function (rgb) {\n return rgb.length ? '#' + this.hex(rgb[0]) + this.hex(rgb[1]) + this.hex(rgb[2]) + (!isNullOrUndefined(rgb[3]) ? rgb[3] !== 0 ? (Math.round(rgb[3] * 255) + 0x10000).toString(16).substr(-2) : '00' : '') : '';\n };\n ColorPicker.prototype.hex = function (x) {\n return ('0' + x.toString(16)).slice(-2);\n };\n ColorPicker.prototype.changeModeSwitcherProp = function (prop) {\n var ctrlSwitchWrapper = select('.' + CTRLSWITCH, this.container);\n if (prop) {\n if (ctrlSwitchWrapper) {\n this.appendModeSwitchBtn();\n } else {\n this.createCtrlBtn();\n if (this.isPicker() && !this.disabled) {\n this.addCtrlSwitchEvent();\n }\n }\n } else {\n if (ctrlSwitchWrapper) {\n if (this.showButtons) {\n detach(select('.' + MODESWITCH, ctrlSwitchWrapper));\n } else {\n remove(ctrlSwitchWrapper);\n }\n }\n }\n };\n ColorPicker.prototype.changeShowBtnProps = function (prop) {\n var ctrlBtnWrapper = select('.' + CTRLSWITCH, this.container);\n if (prop) {\n if (ctrlBtnWrapper) {\n remove(ctrlBtnWrapper);\n }\n this.createCtrlBtn();\n if (this.isPicker() && !this.disabled) {\n this.addCtrlSwitchEvent();\n }\n } else {\n if (this.modeSwitcher) {\n detach(select('.' + CTRLBTN, ctrlBtnWrapper));\n } else {\n remove(ctrlBtnWrapper);\n }\n }\n };\n ColorPicker.prototype.changeValueProp = function (newProp) {\n if (this.isPicker()) {\n this.rgb = this.hexToRgb(newProp);\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n this.setHandlerPosition();\n detach(closest(this.hueSlider.element, '.e-slider-preview'));\n this.createSlider();\n this.setHsvContainerBg();\n this.updateInput(newProp);\n if (this.rgb.length === 4) {\n this.updateOpacityInput(this.rgb[3] * 100);\n }\n } else {\n this.removeTileSelection();\n var ele = this.container.querySelector('span[aria-label=\"' + this.roundValue(newProp) + '\"]');\n if (ele) {\n this.addTileSelection(ele);\n }\n }\n };\n ColorPicker.prototype.setInputEleProps = function () {\n remove(select('.' + INPUTWRAPPER, this.container));\n this.createInput();\n };\n ColorPicker.prototype.changeDisabledProp = function (newProp) {\n if (this.isPicker()) {\n this.hueSlider.enabled = !newProp;\n this.opacitySlider.enabled = !newProp;\n this.setInputEleProps();\n }\n if (newProp) {\n this.toggleDisabled(true);\n this.unWireEvents();\n } else {\n this.toggleDisabled(false);\n this.wireEvents();\n }\n };\n ColorPicker.prototype.changeCssClassProps = function (newProp, oldProp) {\n var wrapper = this.getWrapper();\n var popupWrapper = this.getPopupEle();\n if (oldProp) {\n removeClass([wrapper, popupWrapper], oldProp.split(' '));\n }\n if (newProp) {\n addClass([wrapper, popupWrapper], newProp.replace(/\\s+/g, ' ').trim().split(' '));\n }\n };\n ColorPicker.prototype.changeRtlProps = function (newProp) {\n if (newProp) {\n addClass([this.getWrapper()], 'e-rtl');\n } else {\n removeClass([this.getWrapper()], 'e-rtl');\n }\n };\n ColorPicker.prototype.changePaletteProps = function () {\n detach(this.container.children[0]);\n this.container.style.width = '';\n this.createPalette();\n };\n ColorPicker.prototype.changeOpacityProps = function (newProp) {\n var wrapper = this.getWrapper();\n if (newProp) {\n removeClass([this.container.parentElement], HIDEOPACITY);\n this.createOpacitySlider(select('.e-colorpicker-slider', this.container).appendChild(this.createElement('div', {\n className: 'e-opacity-slider'\n })));\n if (!wrapper.classList.contains(HIDEVALUE) && !wrapper.classList.contains(HIDERGBA)) {\n this.appendOpacityValue(select('.e-input-container', this.container));\n }\n } else {\n addClass([this.container.parentElement], HIDEOPACITY);\n this.opacitySlider.destroy();\n remove(this.opacitySlider.element);\n this.opacitySlider = null;\n if (!wrapper.classList.contains(HIDEVALUE) && !wrapper.classList.contains(HIDERGBA)) {\n remove(select('.' + OPACITY, this.container).parentElement);\n }\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ColorPickerModel} newProp - Specifies new properties\n * @param {ColorPickerModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n ColorPicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n if (!isNullOrUndefined(newProp.value)) {\n var value = this.roundValue(newProp.value);\n if (value.length === 9) {\n this.element.value = this.roundValue(value).slice(0, 7);\n var preview = this.splitBtn && select('.' + SPLITPREVIEW, this.splitBtn.element);\n if (preview) {\n preview.style.backgroundColor = this.convertToRgbString(this.hexToRgb(newProp.value));\n }\n } else if (this.noColor && this.mode === 'Palette' && this.value === '') {\n var preview = this.splitBtn && select('.' + SPLITPREVIEW, this.splitBtn.element);\n preview.style.backgroundColor = '';\n } else {\n this.value = oldProp.value;\n }\n }\n if (!this.inline && isNullOrUndefined(newProp.inline)) {\n var otherCompModel = ['disabled', 'enableRtl'];\n this.splitBtn.setProperties(getModel(newProp, otherCompModel));\n if (!this.isPopupOpen()) {\n this.changeCssClassProps(newProp.cssClass, oldProp.cssClass);\n this.changeRtlProps(newProp.enableRtl);\n return;\n }\n }\n var _loop_1 = function (prop) {\n switch (prop) {\n case 'inline':\n if (newProp.inline) {\n this_1.getWrapper().appendChild(this_1.container);\n this_1.splitBtn.destroy();\n detach(this_1.element.nextElementSibling);\n if (!this_1.container.children.length) {\n this_1.createWidget();\n }\n } else {\n this_1.destroyOtherComp();\n this_1.unWireEvents();\n this_1.container.innerHTML = '';\n this_1.createSplitBtn();\n }\n break;\n case 'cssClass':\n {\n this_1.changeCssClassProps(newProp.cssClass, oldProp.cssClass);\n var props = newProp.cssClass.split(' ').concat(oldProp.cssClass.split(' '));\n props = props.reduce(function (a, b) {\n if (a.indexOf(b) < 0) {\n a.push(b);\n }\n return a;\n }, []);\n var count_1 = 0;\n props.forEach(function (cls) {\n if (count_1 === 0 && (cls === HIDEVALUE || cls === HIDEVALUESWITCH || cls === SHOWVALUE || cls === HIDEHEX || cls === HIDERGBA)) {\n var inputWrap = select('.' + INPUTWRAPPER, _this.container);\n if (inputWrap) {\n remove(select('.' + INPUTWRAPPER, _this.container));\n }\n _this.createInput();\n count_1++;\n }\n });\n break;\n }\n case 'enableRtl':\n if (this_1.isPicker()) {\n this_1.hueSlider.enableRtl = newProp.enableRtl;\n if (this_1.enableOpacity) {\n this_1.opacitySlider.enableRtl = newProp.enableRtl;\n }\n this_1.setInputEleProps();\n }\n this_1.changeRtlProps(newProp.enableRtl);\n break;\n case 'disabled':\n this_1.changeDisabledProp(newProp.disabled);\n break;\n case 'value':\n if (this_1.value !== oldProp.value) {\n this_1.changeValueProp(newProp.value);\n }\n break;\n case 'showButtons':\n this_1.changeShowBtnProps(newProp.showButtons);\n break;\n case 'mode':\n if (newProp.mode === 'Picker') {\n this_1.switchToPicker();\n } else {\n this_1.switchToPalette();\n }\n break;\n case 'modeSwitcher':\n this_1.changeModeSwitcherProp(newProp.modeSwitcher);\n break;\n case 'columns':\n case 'presetColors':\n if (!this_1.isPicker()) {\n this_1.changePaletteProps();\n }\n break;\n case 'noColor':\n if (newProp.noColor) {\n if (this_1.mode === 'Palette' && !this_1.modeSwitcher) {\n this_1.setNoColor();\n }\n } else {\n this_1.changePaletteProps();\n }\n break;\n case 'enableOpacity':\n this_1.changeOpacityProps(newProp.enableOpacity);\n break;\n case 'showRecentColors':\n if (!newProp.showRecentColors) {\n var recentClrWpr = this_1.container.querySelector('.e-clr-pal-rec-wpr');\n if (recentClrWpr) {\n detach(recentClrWpr);\n }\n }\n this_1.recentColors = [];\n break;\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_1(prop);\n }\n };\n /**\n * Sets the focus to Colorpicker\n * its native method\n *\n * @public\n * @returns {void}\n */\n ColorPicker.prototype.focusIn = function () {\n this.element.parentElement.focus();\n };\n __decorate([Property('#008000ff')], ColorPicker.prototype, \"value\", void 0);\n __decorate([Property('')], ColorPicker.prototype, \"cssClass\", void 0);\n __decorate([Property(false)], ColorPicker.prototype, \"disabled\", void 0);\n __decorate([Property('Picker')], ColorPicker.prototype, \"mode\", void 0);\n __decorate([Property(true)], ColorPicker.prototype, \"modeSwitcher\", void 0);\n __decorate([Property(null)], ColorPicker.prototype, \"presetColors\", void 0);\n __decorate([Property(true)], ColorPicker.prototype, \"showButtons\", void 0);\n __decorate([Property(10)], ColorPicker.prototype, \"columns\", void 0);\n __decorate([Property(false)], ColorPicker.prototype, \"inline\", void 0);\n __decorate([Property(false)], ColorPicker.prototype, \"noColor\", void 0);\n __decorate([Property(false)], ColorPicker.prototype, \"enablePersistence\", void 0);\n __decorate([Property(true)], ColorPicker.prototype, \"enableOpacity\", void 0);\n __decorate([Property(false)], ColorPicker.prototype, \"createPopupOnClick\", void 0);\n __decorate([Property(false)], ColorPicker.prototype, \"showRecentColors\", void 0);\n __decorate([Event()], ColorPicker.prototype, \"select\", void 0);\n __decorate([Event()], ColorPicker.prototype, \"change\", void 0);\n __decorate([Event()], ColorPicker.prototype, \"beforeTileRender\", void 0);\n __decorate([Event()], ColorPicker.prototype, \"beforeOpen\", void 0);\n __decorate([Event()], ColorPicker.prototype, \"open\", void 0);\n __decorate([Event()], ColorPicker.prototype, \"beforeClose\", void 0);\n __decorate([Event()], ColorPicker.prototype, \"beforeModeSwitch\", void 0);\n __decorate([Event()], ColorPicker.prototype, \"onModeSwitch\", void 0);\n __decorate([Event()], ColorPicker.prototype, \"created\", void 0);\n ColorPicker = __decorate([NotifyPropertyChanges], ColorPicker);\n return ColorPicker;\n}(Component);\nexport { ColorPicker };","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};\nimport { Component, Property, Event, EventHandler, L10n, setValue, getValue, isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, detach, Internationalization, getUniqueID, closest } from '@syncfusion/ej2-base';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\nimport { Input, containerAttributes, TEXTBOX_FOCUS } from '../input/input';\nvar HIDE_CLEAR = 'e-clear-icon-hide';\n/**\n * Represents the TextBox component that allows the user to enter the values based on it's type.\n * ```html\n * <input name='images' id='textbox'/>\n * ```\n * ```typescript\n * <script>\n * var textboxObj = new TextBox();\n * textboxObj.appendTo('#textbox');\n * </script>\n * ```\n */\nvar TextBox = /** @class */function (_super) {\n __extends(TextBox, _super);\n /**\n *\n * @param {TextBoxModel} options - Specifies the TextBox model.\n * @param {string | HTMLInputElement | HTMLTextAreaElement} element - Specifies the element to render as component.\n * @private\n */\n function TextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousValue = null;\n _this.isHiddenInput = false;\n _this.isForm = false;\n _this.inputPreviousValue = null;\n _this.textboxOptions = options;\n return _this;\n }\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {TextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {TextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'floatLabelType':\n Input.removeFloating(this.textboxWrapper);\n Input.addFloating(this.respectiveElement, this.floatLabelType, this.placeholder);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n this.bindClearEvent();\n break;\n case 'width':\n Input.setWidth(newProp.width, this.textboxWrapper.container);\n break;\n case 'value':\n {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n if (!Input.isBlank(this.value)) {\n this.value = this.value.toString();\n }\n this.isProtectedOnChange = prevOnChange;\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if ((this.isAngular || this.isVue) && this.preventChange === true) {\n this.previousValue = this.isAngular ? this.value : this.previousValue;\n this.preventChange = false;\n } else if (isNullOrUndefined(this.isAngular) || !this.isAngular || this.isAngular && !this.preventChange || this.isAngular && isNullOrUndefined(this.preventChange)) {\n this.raiseChangeEvent();\n }\n }\n break;\n case 'htmlAttributes':\n {\n this.updateHTMLAttributesToElement();\n this.updateHTMLAttributesToWrapper();\n this.checkAttributes(true);\n if (this.multiline && !isNullOrUndefined(this.textarea)) {\n Input.validateInputType(this.textboxWrapper.container, this.textarea);\n } else {\n Input.validateInputType(this.textboxWrapper.container, this.element);\n }\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.respectiveElement);\n break;\n case 'type':\n if (this.respectiveElement.tagName !== 'TEXTAREA') {\n this.respectiveElement.setAttribute('type', this.type);\n Input.validateInputType(this.textboxWrapper.container, this.element);\n this.raiseChangeEvent();\n }\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.respectiveElement, this.textboxWrapper);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.textboxWrapper.container]);\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n Input.calculateWidth(this.respectiveElement, this.textboxWrapper.container);\n break;\n case 'autocomplete':\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n } else {\n this.removeAttributes(['autocomplete']);\n }\n break;\n case 'cssClass':\n Input.updateCssClass(newProp.cssClass, oldProp.cssClass, this.textboxWrapper.container);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({\n placeholder: this.l10n.getConstant('placeholder')\n }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n break;\n }\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TextBox.prototype.getModuleName = function () {\n return 'textbox';\n };\n TextBox.prototype.preRender = function () {\n this.cloneElement = this.element.cloneNode(true);\n this.formElement = closest(this.element, 'form');\n if (!isNullOrUndefined(this.formElement)) {\n this.isForm = true;\n }\n /* istanbul ignore next */\n if (this.element.tagName === 'EJS-TEXTBOX') {\n var ejInstance = getValue('ej2_instances', this.element);\n var inputElement = this.multiline ? this.createElement('textarea') : this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id' && attributeName !== 'class') {\n inputElement.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n inputElement.innerHTML = this.element.innerHTML;\n if (attributeName === 'name') {\n this.element.removeAttribute('name');\n }\n } else if (attributeName === 'class') {\n inputElement.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) {\n return item.indexOf('ng-') !== 0;\n }).join(' '));\n }\n }\n this.element.appendChild(inputElement);\n this.element = inputElement;\n setValue('ej2_instances', ejInstance, this.element);\n }\n this.updateHTMLAttributesToElement();\n this.checkAttributes(false);\n if ((isNullOrUndefined(this.textboxOptions) || this.textboxOptions['value'] === undefined) && this.element.value !== '') {\n this.setProperties({\n value: this.element.value\n }, true);\n }\n if (this.element.tagName !== 'TEXTAREA') {\n this.element.setAttribute('type', this.type);\n }\n if (this.type === 'text' || this.element.tagName === 'INPUT' && this.multiline && this.isReact) {\n this.element.setAttribute('role', 'textbox');\n }\n this.globalize = new Internationalization(this.locale);\n var localeText = {\n placeholder: this.placeholder\n };\n this.l10n = new L10n('textbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({\n placeholder: this.placeholder || this.l10n.getConstant('placeholder')\n }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('textbox'));\n }\n if (!this.element.hasAttribute('name')) {\n this.element.setAttribute('name', this.element.getAttribute('id'));\n }\n if (this.element.tagName === 'INPUT' && this.multiline) {\n this.isHiddenInput = true;\n this.textarea = this.createElement('textarea');\n this.element.parentNode.insertBefore(this.textarea, this.element);\n this.element.setAttribute('type', 'hidden');\n this.textarea.setAttribute('name', this.element.getAttribute('name'));\n this.element.removeAttribute('name');\n this.textarea.setAttribute('role', this.element.getAttribute('role'));\n this.element.removeAttribute('role');\n this.textarea.setAttribute('id', getUniqueID('textarea'));\n var apiAttributes = ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var index = 0; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (this.element.hasAttribute(attributeName) && containerAttributes.indexOf(attributeName) < 0 && !(attributeName === 'id' || attributeName === 'type' || attributeName === 'e-mappinguid')) {\n // e-mappinguid attribute is handled for Grid component.\n this.textarea.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n if (apiAttributes.indexOf(attributeName) < 0) {\n this.element.removeAttribute(attributeName);\n index--;\n }\n }\n }\n }\n };\n TextBox.prototype.checkAttributes = function (isDynamic) {\n var attrs = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) : ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var _i = 0, attrs_1 = attrs; _i < attrs_1.length; _i++) {\n var key = attrs_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(key))) {\n switch (key) {\n case 'disabled':\n if (isNullOrUndefined(this.textboxOptions) || this.textboxOptions['enabled'] === undefined || isDynamic) {\n var enabled = this.element.getAttribute(key) === 'disabled' || this.element.getAttribute(key) === '' || this.element.getAttribute(key) === 'true' ? false : true;\n this.setProperties({\n enabled: enabled\n }, !isDynamic);\n }\n break;\n case 'readonly':\n if (isNullOrUndefined(this.textboxOptions) || this.textboxOptions['readonly'] === undefined || isDynamic) {\n var readonly = this.element.getAttribute(key) === 'readonly' || this.element.getAttribute(key) === '' || this.element.getAttribute(key) === 'true' ? true : false;\n this.setProperties({\n readonly: readonly\n }, !isDynamic);\n }\n break;\n case 'placeholder':\n if (isNullOrUndefined(this.textboxOptions) || this.textboxOptions['placeholder'] === undefined || isDynamic) {\n this.setProperties({\n placeholder: this.element.placeholder\n }, !isDynamic);\n }\n break;\n case 'autocomplete':\n if (isNullOrUndefined(this.textboxOptions) || this.textboxOptions['autocomplete'] === undefined || isDynamic) {\n var autoCompleteTxt = this.element.autocomplete === 'off' ? 'off' : 'on';\n this.setProperties({\n autocomplete: autoCompleteTxt\n }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.textboxOptions) || this.textboxOptions['value'] === undefined || isDynamic) && this.element.value !== '') {\n this.setProperties({\n value: this.element.value\n }, !isDynamic);\n }\n break;\n case 'type':\n if (isNullOrUndefined(this.textboxOptions) || this.textboxOptions['type'] === undefined || isDynamic) {\n this.setProperties({\n type: this.element.type\n }, !isDynamic);\n }\n break;\n }\n }\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n TextBox.prototype.render = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = Input.getInputValidClassList(this.cssClass);\n }\n this.respectiveElement = this.isHiddenInput ? this.textarea : this.element;\n this.textboxWrapper = Input.createInput({\n element: this.respectiveElement,\n floatLabelType: this.floatLabelType,\n properties: {\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n cssClass: updatedCssClassValue,\n readonly: this.readonly,\n placeholder: this.placeholder,\n showClearButton: this.showClearButton\n }\n });\n this.updateHTMLAttributesToWrapper();\n if (this.isHiddenInput) {\n this.respectiveElement.parentNode.insertBefore(this.element, this.respectiveElement);\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.value)) {\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n }\n if (!isNullOrUndefined(this.value)) {\n this.initialValue = this.value;\n this.setInitialValue();\n }\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n } else if (!isNullOrUndefined(this.textboxOptions) && this.textboxOptions['autocomplete'] !== undefined) {\n this.removeAttributes(['autocomplete']);\n }\n this.previousValue = this.value;\n this.inputPreviousValue = this.value;\n this.respectiveElement.defaultValue = this.respectiveElement.value;\n Input.setWidth(this.width, this.textboxWrapper.container);\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n if (!this.element.hasAttribute('aria-labelledby') && !this.element.hasAttribute('placeholder') && !this.element.hasAttribute('aria-label')) {\n this.element.setAttribute('aria-label', 'textbox');\n }\n this.renderComplete();\n };\n TextBox.prototype.updateHTMLAttributesToWrapper = function () {\n Input.updateHTMLAttributesToWrapper(this.htmlAttributes, this.textboxWrapper.container);\n };\n TextBox.prototype.updateHTMLAttributesToElement = function () {\n Input.updateHTMLAttributesToElement(this.htmlAttributes, this.respectiveElement ? this.respectiveElement : this.multiline && !isNullOrUndefined(this.textarea) ? this.textarea : this.element);\n };\n TextBox.prototype.setInitialValue = function () {\n if (!this.isAngular) {\n this.respectiveElement.setAttribute('value', this.initialValue);\n }\n };\n TextBox.prototype.wireEvents = function () {\n EventHandler.add(this.respectiveElement, 'focus', this.focusHandler, this);\n EventHandler.add(this.respectiveElement, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.respectiveElement, 'keydown', this.keydownHandler, this);\n EventHandler.add(this.respectiveElement, 'input', this.inputHandler, this);\n EventHandler.add(this.respectiveElement, 'change', this.changeHandler, this);\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.resetForm, this);\n }\n this.bindClearEvent();\n if (!isNullOrUndefined(this.textboxWrapper.container.querySelector('.e-float-text')) && this.floatLabelType === 'Auto' && this.textboxWrapper.container.classList.contains('e-autofill') && this.textboxWrapper.container.classList.contains('e-outline')) {\n EventHandler.add(this.textboxWrapper.container.querySelector('.e-float-text'), 'animationstart', this.animationHandler, this);\n }\n };\n TextBox.prototype.animationHandler = function () {\n this.textboxWrapper.container.classList.add('e-valid-input');\n var label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label)) {\n label.classList.add('e-label-top');\n if (label.classList.contains('e-label-bottom')) {\n label.classList.remove('e-label-bottom');\n }\n }\n };\n TextBox.prototype.resetValue = function (value) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.value = value;\n if (value == null && this.textboxWrapper.container.classList.contains('e-valid-input') && !(this.floatLabelType === 'Always' && this.textboxWrapper.container.classList.contains('e-outline'))) {\n this.textboxWrapper.container.classList.remove('e-valid-input');\n }\n this.isProtectedOnChange = prevOnChange;\n };\n TextBox.prototype.resetForm = function () {\n if (this.isAngular) {\n this.resetValue('');\n } else {\n this.resetValue(this.initialValue);\n }\n if (!isNullOrUndefined(this.textboxWrapper)) {\n var label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label) && this.floatLabelType !== 'Always') {\n if (isNullOrUndefined(this.initialValue) || this.initialValue === '') {\n label.classList.add('e-label-bottom');\n label.classList.remove('e-label-top');\n } else if (this.initialValue !== '') {\n label.classList.add('e-label-top');\n label.classList.remove('e-label-bottom');\n }\n }\n }\n };\n TextBox.prototype.focusHandler = function (args) {\n var eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('focus', eventArgs);\n };\n TextBox.prototype.focusOutHandler = function (args) {\n if (!(this.previousValue === null && this.value === null && this.respectiveElement.value === '') && this.previousValue !== this.value) {\n this.raiseChangeEvent(args, true);\n }\n var eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('blur', eventArgs);\n };\n TextBox.prototype.keydownHandler = function (args) {\n if ((args.keyCode === 13 || args.keyCode === 9) && !((this.previousValue === null || this.previousValue === '') && (this.value === null || this.value === '') && this.respectiveElement.value === '')) {\n this.setProperties({\n value: this.respectiveElement.value\n }, true);\n }\n };\n TextBox.prototype.inputHandler = function (args) {\n var textboxObj = null || this;\n var eventArgs = {\n event: args,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if (this.isAngular) {\n textboxObj.localChange({\n value: this.respectiveElement.value\n });\n this.preventChange = true;\n }\n if (this.isVue) {\n this.preventChange = true;\n }\n this.trigger('input', eventArgs);\n args.stopPropagation();\n };\n TextBox.prototype.changeHandler = function (args) {\n this.setProperties({\n value: this.respectiveElement.value\n }, true);\n if (this.previousValue !== this.value) {\n this.raiseChangeEvent(args, true);\n }\n args.stopPropagation();\n };\n TextBox.prototype.raiseChangeEvent = function (event, interaction) {\n var eventArgs = {\n event: event,\n value: this.value,\n previousValue: this.previousValue,\n container: this.textboxWrapper.container,\n isInteraction: interaction ? interaction : false,\n isInteracted: interaction ? interaction : false\n };\n this.preventChange = false;\n this.trigger('change', eventArgs);\n this.previousValue = this.value;\n //EJ2CORE-738:For this task we update the textarea value to the input when input tag with multiline is present\n if (this.element.tagName === 'INPUT' && this.multiline && Browser.info.name === 'mozilla') {\n this.element.value = this.respectiveElement.value;\n }\n };\n TextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n if (this.enabled) {\n EventHandler.add(this.textboxWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler, this);\n } else {\n EventHandler.remove(this.textboxWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler);\n }\n }\n };\n TextBox.prototype.resetInputHandler = function (event) {\n event.preventDefault();\n if (!this.textboxWrapper.clearButton.classList.contains(HIDE_CLEAR) || this.textboxWrapper.container.classList.contains('e-static-clear')) {\n Input.setValue('', this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.setProperties({\n value: this.respectiveElement.value\n }, true);\n var eventArgs = {\n event: event,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.trigger('input', eventArgs);\n this.inputPreviousValue = this.respectiveElement.value;\n this.raiseChangeEvent(event, true);\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n }\n };\n TextBox.prototype.unWireEvents = function () {\n EventHandler.remove(this.respectiveElement, 'focus', this.focusHandler);\n EventHandler.remove(this.respectiveElement, 'blur', this.focusOutHandler);\n EventHandler.remove(this.respectiveElement, 'keydown', this.keydownHandler);\n EventHandler.remove(this.respectiveElement, 'input', this.inputHandler);\n EventHandler.remove(this.respectiveElement, 'change', this.changeHandler);\n if (this.isForm) {\n EventHandler.remove(this.formElement, 'reset', this.resetForm);\n }\n if (!isNullOrUndefined(this.textboxWrapper.container.querySelector('.e-float-text')) && this.floatLabelType === 'Auto' && this.textboxWrapper.container.classList.contains('e-outline') && this.textboxWrapper.container.classList.contains('e-autofill')) {\n EventHandler.remove(this.textboxWrapper.container.querySelector('.e-float-text'), 'animationstart', this.animationHandler);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also, it maintains the initial TextBox element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n TextBox.prototype.destroy = function () {\n this.unWireEvents();\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n if (this.element.tagName === 'INPUT' && this.multiline) {\n detach(this.textboxWrapper.container.getElementsByTagName('textarea')[0]);\n this.respectiveElement = this.element;\n this.element.removeAttribute('type');\n }\n this.respectiveElement.value = this.respectiveElement.defaultValue;\n this.respectiveElement.classList.remove('e-input');\n this.removeAttributes(['aria-disabled', 'aria-readonly', 'aria-labelledby']);\n if (!isNullOrUndefined(this.textboxWrapper)) {\n this.textboxWrapper.container.insertAdjacentElement('afterend', this.respectiveElement);\n detach(this.textboxWrapper.container);\n }\n this.textboxWrapper = null;\n Input.destroy({\n element: this.respectiveElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n _super.prototype.destroy.call(this);\n };\n /**\n * Adding the icons to the TextBox component.\n *\n * @param { string } position - Specify the icon placement on the TextBox. Possible values are append and prepend.\n * @param { string | string[] } icons - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for TextBox.\n * @returns {void}\n */\n TextBox.prototype.addIcon = function (position, icons) {\n Input.addIcon(position, icons, this.textboxWrapper.container, this.respectiveElement, this.createElement);\n };\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data.\n */\n TextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Adding the multiple attributes as key-value pair to the TextBox element.\n *\n * @param {string} attributes - Specifies the attributes to be add to TextBox element.\n * @returns {void}\n */\n TextBox.prototype.addAttributes = function (attributes) {\n for (var _i = 0, _a = Object.keys(attributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'disabled') {\n this.setProperties({\n enabled: false\n }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n } else if (key === 'readonly') {\n this.setProperties({\n readonly: true\n }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n } else if (key === 'class') {\n this.respectiveElement.classList.add(attributes[\"\" + key]);\n } else if (key === 'placeholder') {\n this.setProperties({\n placeholder: attributes[\"\" + key]\n }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n } else if (key === 'rows' && this.respectiveElement.tagName === 'TEXTAREA') {\n this.respectiveElement.setAttribute(key, attributes[\"\" + key]);\n } else {\n this.respectiveElement.setAttribute(key, attributes[\"\" + key]);\n }\n }\n };\n /**\n * Removing the multiple attributes as key-value pair to the TextBox element.\n *\n * @param { string[] } attributes - Specifies the attributes name to be removed from TextBox element.\n * @returns {void}\n */\n TextBox.prototype.removeAttributes = function (attributes) {\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var key = attributes_1[_i];\n if (key === 'disabled') {\n this.setProperties({\n enabled: true\n }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n } else if (key === 'readonly') {\n this.setProperties({\n readonly: false\n }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n } else if (key === 'placeholder') {\n this.setProperties({\n placeholder: null\n }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n } else {\n this.respectiveElement.removeAttribute(key);\n }\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n TextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.respectiveElement && this.enabled) {\n this.respectiveElement.focus();\n if (this.textboxWrapper.container.classList.contains('e-input-group') || this.textboxWrapper.container.classList.contains('e-outline') || this.textboxWrapper.container.classList.contains('e-filled')) {\n addClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n TextBox.prototype.focusOut = function () {\n if (document.activeElement === this.respectiveElement && this.enabled) {\n this.respectiveElement.blur();\n if (this.textboxWrapper.container.classList.contains('e-input-group') || this.textboxWrapper.container.classList.contains('e-outline') || this.textboxWrapper.container.classList.contains('e-filled')) {\n removeClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n __decorate([Property('text')], TextBox.prototype, \"type\", void 0);\n __decorate([Property(false)], TextBox.prototype, \"readonly\", void 0);\n __decorate([Property(null)], TextBox.prototype, \"value\", void 0);\n __decorate([Property('Never')], TextBox.prototype, \"floatLabelType\", void 0);\n __decorate([Property('')], TextBox.prototype, \"cssClass\", void 0);\n __decorate([Property(null)], TextBox.prototype, \"placeholder\", void 0);\n __decorate([Property('on')], TextBox.prototype, \"autocomplete\", void 0);\n __decorate([Property({})], TextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([Property(false)], TextBox.prototype, \"multiline\", void 0);\n __decorate([Property(true)], TextBox.prototype, \"enabled\", void 0);\n __decorate([Property(false)], TextBox.prototype, \"showClearButton\", void 0);\n __decorate([Property(false)], TextBox.prototype, \"enablePersistence\", void 0);\n __decorate([Property(null)], TextBox.prototype, \"width\", void 0);\n __decorate([Event()], TextBox.prototype, \"created\", void 0);\n __decorate([Event()], TextBox.prototype, \"destroyed\", void 0);\n __decorate([Event()], TextBox.prototype, \"change\", void 0);\n __decorate([Event()], TextBox.prototype, \"blur\", void 0);\n __decorate([Event()], TextBox.prototype, \"focus\", void 0);\n __decorate([Event()], TextBox.prototype, \"input\", void 0);\n TextBox = __decorate([NotifyPropertyChanges], TextBox);\n return TextBox;\n}(Component);\nexport { TextBox };","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};\nimport { Component, Property, NotifyPropertyChanges, isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { detach, getUniqueID, Event, EventHandler, Internationalization, L10n, addClass, removeClass, closest, formatUnit } from '@syncfusion/ej2-base';\nimport { Input, TEXTBOX_FOCUS } from '../input/input';\nvar HIDE_CLEAR = 'e-clear-icon-hide';\nvar AUTO_WIDTH = 'e-auto-width';\nvar RESIZE_X = 'e-resize-x';\nvar RESIZE_Y = 'e-resize-y';\nvar RESIZE_XY = 'e-resize-xy';\nvar RESIZE_NONE = 'e-resize-none';\nvar TextArea = /** @class */function (_super) {\n __extends(TextArea, _super);\n function TextArea(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousValue = null;\n _this.isForm = false;\n _this.inputPreviousValue = null;\n _this.textareaOptions = options;\n return _this;\n }\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {TextAreaModel} newProp - Returns the dynamic property value of the component.\n * @param {TextAreaModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TextArea.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'floatLabelType':\n Input.removeFloating(this.textareaWrapper);\n Input.addFloating(this.element, this.floatLabelType, this.placeholder);\n if (this.floatLabelType === 'Never') {\n this.element.removeAttribute('aria-labelledby');\n }\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.element, this.floatLabelType, this.textareaWrapper.container);\n this.bindClearEvent();\n if (!this.enabled && this.resizeMode !== 'None') {\n this.element.classList.remove(this.getCurrentResizeClass(this.resizeMode));\n this.element.classList.add(RESIZE_NONE);\n } else {\n this.element.classList.add(this.getCurrentResizeClass(this.resizeMode));\n }\n break;\n case 'width':\n if (this.resizeMode !== 'None' && this.resizeMode !== 'Vertical') {\n this.setElementWidth(newProp.width);\n this.textareaWrapper.container.classList.add(AUTO_WIDTH);\n } else {\n if (this.textareaWrapper.container.classList.contains(AUTO_WIDTH)) {\n this.textareaWrapper.container.classList.remove(AUTO_WIDTH);\n }\n Input.setWidth(newProp.width, this.textareaWrapper.container);\n }\n break;\n case 'value':\n {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n if (!Input.isBlank(this.value)) {\n this.value = this.value.toString();\n }\n this.isProtectedOnChange = prevOnChange;\n Input.setValue(this.value, this.element, this.floatLabelType, this.showClearButton);\n this.inputPreviousValue = this.element.value;\n /* istanbul ignore next */\n if ((this.isAngular || this.isVue) && this.preventChange === true) {\n this.previousValue = this.isAngular ? this.value : this.previousValue;\n this.preventChange = false;\n } else if (isNullOrUndefined(this.isAngular) || !this.isAngular || this.isAngular && !this.preventChange || this.isAngular && isNullOrUndefined(this.preventChange)) {\n this.raiseChangeEvent();\n }\n }\n break;\n case 'htmlAttributes':\n {\n this.updateHTMLAttributesToElement();\n this.updateHTMLAttributesToWrapper();\n this.checkAttributes(true);\n Input.validateInputType(this.textareaWrapper.container, this.element);\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.element);\n if (this.readonly) {\n this.element.setAttribute('aria-readonly', 'true');\n } else {\n this.element.removeAttribute('aria-readonly');\n }\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.element, this.textareaWrapper);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.textareaWrapper.container]);\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.element);\n Input.calculateWidth(this.element, this.textareaWrapper.container);\n break;\n case 'cssClass':\n Input.updateCssClass(newProp.cssClass, oldProp.cssClass, this.textareaWrapper.container);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({\n placeholder: this.l10n.getConstant('placeholder')\n }, true);\n Input.setPlaceholder(this.placeholder, this.element);\n break;\n case 'rows':\n if (this.rows) {\n this.element.setAttribute('rows', this.rows.toString());\n }\n break;\n case 'cols':\n if (this.cols) {\n this.element.setAttribute('cols', this.cols.toString());\n if (this.width == null) {\n this.textareaWrapper.container.classList.add(AUTO_WIDTH);\n }\n }\n break;\n case 'maxLength':\n if (this.maxLength) {\n this.element.setAttribute('maxlength', this.maxLength.toString());\n }\n break;\n case 'resizeMode':\n if (this.enabled) {\n if (this.element.classList.contains(this.getCurrentResizeClass(oldProp.resizeMode))) {\n this.element.classList.remove(this.getCurrentResizeClass(oldProp.resizeMode));\n }\n this.element.classList.add(this.getCurrentResizeClass(this.resizeMode));\n if (this.element.style.width && (this.resizeMode === 'None' || this.resizeMode === 'Vertical')) {\n Input.setWidth(this.element.style.width, this.textareaWrapper.container);\n } else {\n var currentWidth = this.element.offsetWidth;\n this.element.style.width = currentWidth + 'px';\n if (this.textareaWrapper.container.style.width) {\n this.textareaWrapper.container.style.width = '';\n }\n }\n this.setWrapperWidth();\n }\n break;\n }\n }\n };\n TextArea.prototype.preRender = function () {\n this.formElement = closest(this.element, 'form');\n if (!isNullOrUndefined(this.formElement)) {\n this.isForm = true;\n }\n /* istanbul ignore next */\n if (this.element.tagName === 'EJS-TEXTAREA' || this.element.tagName === 'EJS-SMARTTEXTAREA') {\n var ejInstance = getValue('ej2_instances', this.element);\n var inputElement = this.createElement('textarea');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id' && attributeName !== 'class') {\n inputElement.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n inputElement.innerHTML = this.element.innerHTML;\n if (attributeName === 'name') {\n this.element.removeAttribute('name');\n }\n } else if (attributeName === 'class') {\n inputElement.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) {\n return item.indexOf('ng-') !== 0;\n }).join(' '));\n }\n }\n this.element.appendChild(inputElement);\n this.element = inputElement;\n setValue('ej2_instances', ejInstance, this.element);\n }\n this.updateHTMLAttributesToElement();\n this.checkAttributes(false);\n if ((isNullOrUndefined(this.textareaOptions) || this.textareaOptions['value'] === undefined) && this.element.value !== '') {\n this.setProperties({\n value: this.element.value\n }, true);\n }\n this.globalize = new Internationalization(this.locale);\n var localeText = {\n placeholder: this.placeholder\n };\n this.l10n = new L10n('textarea', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({\n placeholder: this.placeholder || this.l10n.getConstant('placeholder')\n }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('textbox'));\n }\n if (!this.element.hasAttribute('name')) {\n this.element.setAttribute('name', this.element.getAttribute('id'));\n }\n if (this.rows) {\n this.element.setAttribute('rows', this.rows.toString());\n }\n if (this.cols) {\n this.element.setAttribute('cols', this.cols.toString());\n }\n if (this.maxLength) {\n this.element.setAttribute('maxlength', this.maxLength.toString());\n }\n if (!this.element.style.resize && this.enabled) {\n this.element.classList.add(this.getCurrentResizeClass(this.resizeMode));\n }\n if (this.enabled) {\n this.element.setAttribute('aria-multiline', 'true');\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n TextArea.prototype.render = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = Input.getInputValidClassList(this.cssClass);\n }\n this.textareaWrapper = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n cssClass: updatedCssClassValue,\n readonly: this.readonly,\n placeholder: this.placeholder,\n showClearButton: this.showClearButton\n }\n });\n this.updateHTMLAttributesToWrapper();\n this.wireEvents();\n if (!isNullOrUndefined(this.value)) {\n Input.setValue(this.value, this.element, this.floatLabelType, this.showClearButton);\n }\n if (!isNullOrUndefined(this.value)) {\n this.initialValue = this.value;\n if (!this.isAngular) {\n this.element.setAttribute('value', this.initialValue);\n }\n }\n this.previousValue = this.value;\n this.inputPreviousValue = this.value;\n this.element.defaultValue = this.element.value;\n Input.setWidth(this.width, this.textareaWrapper.container);\n this.setWrapperWidth();\n this.renderComplete();\n };\n TextArea.prototype.getModuleName = function () {\n return 'textarea';\n };\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns the string value.\n */\n TextArea.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n TextArea.prototype.checkAttributes = function (isDynamic) {\n var attrs = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) : ['placeholder', 'disabled', 'value', 'readonly'];\n for (var _i = 0, attrs_1 = attrs; _i < attrs_1.length; _i++) {\n var key = attrs_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(key))) {\n switch (key) {\n case 'disabled':\n if (isNullOrUndefined(this.textareaOptions) || this.textareaOptions['enabled'] === undefined || isDynamic) {\n var enabled = this.element.getAttribute(key) === 'disabled' || this.element.getAttribute(key) === '' || this.element.getAttribute(key) === 'true' ? false : true;\n this.setProperties({\n enabled: enabled\n }, !isDynamic);\n }\n break;\n case 'readonly':\n if (isNullOrUndefined(this.textareaOptions) || this.textareaOptions['readonly'] === undefined || isDynamic) {\n var readonly = this.element.getAttribute(key) === 'readonly' || this.element.getAttribute(key) === '' || this.element.getAttribute(key) === 'true' ? true : false;\n this.setProperties({\n readonly: readonly\n }, !isDynamic);\n }\n break;\n case 'placeholder':\n if (isNullOrUndefined(this.textareaOptions) || this.textareaOptions['placeholder'] === undefined || isDynamic) {\n this.setProperties({\n placeholder: this.element.placeholder\n }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.textareaOptions) || this.textareaOptions['value'] === undefined || isDynamic) && this.element.value !== '') {\n this.setProperties({\n value: this.element.value\n }, !isDynamic);\n }\n break;\n }\n }\n }\n };\n TextArea.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.element, 'keydown', this.keydownHandler, this);\n EventHandler.add(this.element, 'input', this.inputHandler, this);\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.resetForm, this);\n }\n this.bindClearEvent();\n };\n TextArea.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'blur', this.focusOutHandler);\n EventHandler.remove(this.element, 'keydown', this.keydownHandler);\n EventHandler.remove(this.element, 'input', this.inputHandler);\n EventHandler.remove(this.element, 'change', this.changeHandler);\n if (this.isForm) {\n EventHandler.remove(this.formElement, 'reset', this.resetForm);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also, it maintains the initial TextArea element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n TextArea.prototype.destroy = function () {\n this.unWireEvents();\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n this.element.value = this.element.defaultValue;\n this.element.classList.remove('e-input', RESIZE_X, RESIZE_Y, RESIZE_XY, RESIZE_NONE);\n this.removeAttributes(['aria-disabled', 'aria-readonly', 'aria-labelledby', 'aria-multiline']);\n if (!isNullOrUndefined(this.textareaWrapper)) {\n this.textareaWrapper.container.insertAdjacentElement('afterend', this.element);\n detach(this.textareaWrapper.container);\n }\n this.textareaWrapper = null;\n Input.destroy({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n this.formElement = null;\n _super.prototype.destroy.call(this);\n };\n TextArea.prototype.focusHandler = function (args) {\n var eventArgs = {\n container: this.textareaWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('focus', eventArgs);\n };\n TextArea.prototype.focusOutHandler = function (args) {\n if (!(this.previousValue === null && this.value === null) && this.previousValue !== this.value) {\n this.raiseChangeEvent(args, true);\n }\n var eventArgs = {\n container: this.textareaWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('blur', eventArgs);\n };\n TextArea.prototype.keydownHandler = function (args) {\n if ((args.keyCode === 13 || args.keyCode === 9) && !((this.previousValue === null || this.previousValue === '') && (this.value === null || this.value === '') && this.element.value === '')) {\n this.setProperties({\n value: this.element.value\n }, true);\n }\n };\n TextArea.prototype.inputHandler = function (args) {\n var textareaObj = null || this;\n var eventArgs = {\n event: args,\n value: this.element.value,\n previousValue: this.inputPreviousValue,\n container: this.textareaWrapper.container\n };\n this.inputPreviousValue = this.element.value;\n /* istanbul ignore next */\n if (this.isAngular) {\n textareaObj.localChange({\n value: this.element.value\n });\n this.preventChange = true;\n }\n if (this.isVue) {\n this.preventChange = true;\n }\n this.trigger('input', eventArgs);\n args.stopPropagation();\n };\n TextArea.prototype.changeHandler = function (args) {\n this.setProperties({\n value: this.element.value\n }, true);\n if (this.previousValue !== this.value) {\n this.raiseChangeEvent(args, true);\n }\n args.stopPropagation();\n };\n TextArea.prototype.raiseChangeEvent = function (event, interaction) {\n var eventArgs = {\n event: event,\n value: this.value,\n previousValue: this.previousValue,\n container: this.textareaWrapper.container,\n isInteraction: interaction ? interaction : false,\n isInteracted: interaction ? interaction : false\n };\n this.preventChange = false;\n this.trigger('change', eventArgs);\n this.previousValue = this.value;\n };\n TextArea.prototype.updateHTMLAttributesToWrapper = function () {\n Input.updateHTMLAttributesToWrapper(this.htmlAttributes, this.textareaWrapper.container);\n };\n TextArea.prototype.updateHTMLAttributesToElement = function () {\n Input.updateHTMLAttributesToElement(this.htmlAttributes, this.element);\n };\n TextArea.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n if (this.enabled) {\n EventHandler.add(this.textareaWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler, this);\n } else {\n EventHandler.remove(this.textareaWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler);\n }\n }\n };\n TextArea.prototype.resetInputHandler = function (event) {\n event.preventDefault();\n if (!this.textareaWrapper.clearButton.classList.contains(HIDE_CLEAR) || this.textareaWrapper.container.classList.contains('e-static-clear')) {\n Input.setValue('', this.element, this.floatLabelType, this.showClearButton);\n this.setProperties({\n value: this.element.value\n }, true);\n }\n var eventArgs = {\n event: event,\n value: this.element.value,\n previousValue: this.inputPreviousValue,\n container: this.textareaWrapper.container\n };\n this.trigger('input', eventArgs);\n this.inputPreviousValue = this.element.value;\n this.raiseChangeEvent(event, true);\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n /**\n * Adding the multiple attributes as key-value pair to the TextArea element.\n *\n * @param {string} attributes - Specifies the attributes to be add to TextArea element.\n * @returns {void}\n */\n TextArea.prototype.addAttributes = function (attributes) {\n for (var _i = 0, _a = Object.keys(attributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'disabled') {\n this.setProperties({\n enabled: false\n }, true);\n Input.setEnabled(this.enabled, this.element, this.floatLabelType, this.textareaWrapper.container);\n } else if (key === 'readonly') {\n this.setProperties({\n readonly: true\n }, true);\n Input.setReadonly(this.readonly, this.element);\n } else if (key === 'class') {\n this.element.classList.add(attributes[\"\" + key]);\n } else if (key === 'placeholder') {\n this.setProperties({\n placeholder: attributes[\"\" + key]\n }, true);\n Input.setPlaceholder(this.placeholder, this.element);\n } else {\n this.element.setAttribute(key, attributes[\"\" + key]);\n }\n }\n };\n /**\n * Removing the multiple attributes as key-value pair to the TextArea element.\n *\n * @param { string[] } attributes - Specifies the attributes name to be removed from TextArea element.\n * @returns {void}\n */\n TextArea.prototype.removeAttributes = function (attributes) {\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var key = attributes_1[_i];\n if (key === 'disabled') {\n this.setProperties({\n enabled: true\n }, true);\n Input.setEnabled(this.enabled, this.element, this.floatLabelType, this.textareaWrapper.container);\n } else if (key === 'readonly') {\n this.setProperties({\n readonly: false\n }, true);\n Input.setReadonly(this.readonly, this.element);\n } else if (key === 'placeholder') {\n this.setProperties({\n placeholder: null\n }, true);\n Input.setPlaceholder(this.placeholder, this.element);\n } else {\n this.element.removeAttribute(key);\n }\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n TextArea.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.element.focus();\n if (this.textareaWrapper.container.classList.contains('e-input-group') || this.textareaWrapper.container.classList.contains('e-outline') || this.textareaWrapper.container.classList.contains('e-filled')) {\n addClass([this.textareaWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n TextArea.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.element.blur();\n if (this.textareaWrapper.container.classList.contains('e-input-group') || this.textareaWrapper.container.classList.contains('e-outline') || this.textareaWrapper.container.classList.contains('e-filled')) {\n removeClass([this.textareaWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n /**\n * Sets up the width for the textarea wrapper.\n *\n * @returns {void}\n */\n TextArea.prototype.setWrapperWidth = function () {\n if (this.enabled && (this.resizeMode !== 'None' && this.resizeMode !== 'Vertical' || this.cols || this.element.getAttribute('cols'))) {\n if (this.resizeMode !== 'None' && this.resizeMode !== 'Vertical') {\n if (this.textareaWrapper.container.style.width) {\n this.setElementWidth(this.textareaWrapper.container.style.width);\n this.textareaWrapper.container.style.width = '';\n this.textareaWrapper.container.classList.add(AUTO_WIDTH);\n }\n }\n this.textareaWrapper.container.classList.add(AUTO_WIDTH);\n } else {\n if (this.textareaWrapper.container.classList.contains(AUTO_WIDTH)) {\n this.textareaWrapper.container.classList.remove(AUTO_WIDTH);\n }\n }\n };\n TextArea.prototype.resetForm = function () {\n if (this.isAngular) {\n this.resetValue('');\n } else {\n this.resetValue(this.initialValue);\n }\n if (!isNullOrUndefined(this.textareaWrapper)) {\n var label = this.textareaWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label) && this.floatLabelType !== 'Always') {\n if (isNullOrUndefined(this.initialValue) || this.initialValue === '') {\n label.classList.add('e-label-bottom');\n label.classList.remove('e-label-top');\n } else if (this.initialValue !== '') {\n label.classList.add('e-label-top');\n label.classList.remove('e-label-bottom');\n }\n }\n }\n };\n TextArea.prototype.resetValue = function (value) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.value = value;\n if (value == null && this.textareaWrapper.container.classList.contains('e-valid-input') && !(this.floatLabelType === 'Always' && this.textareaWrapper.container.classList.contains('e-outline'))) {\n this.textareaWrapper.container.classList.remove('e-valid-input');\n }\n this.isProtectedOnChange = prevOnChange;\n };\n TextArea.prototype.setElementWidth = function (width) {\n if (typeof width === 'number') {\n this.element.style.width = formatUnit(width);\n } else if (typeof width === 'string') {\n this.element.style.width = width.match(/px|%|em/) ? width : formatUnit(width);\n }\n };\n TextArea.prototype.getCurrentResizeClass = function (resizeMode) {\n return resizeMode === 'None' ? RESIZE_NONE : resizeMode === 'Both' ? RESIZE_XY : resizeMode === 'Horizontal' ? RESIZE_X : RESIZE_Y;\n };\n __decorate([Property(false)], TextArea.prototype, \"readonly\", void 0);\n __decorate([Property(null)], TextArea.prototype, \"value\", void 0);\n __decorate([Property('Never')], TextArea.prototype, \"floatLabelType\", void 0);\n __decorate([Property('')], TextArea.prototype, \"cssClass\", void 0);\n __decorate([Property(null)], TextArea.prototype, \"placeholder\", void 0);\n __decorate([Property({})], TextArea.prototype, \"htmlAttributes\", void 0);\n __decorate([Property(true)], TextArea.prototype, \"enabled\", void 0);\n __decorate([Property(false)], TextArea.prototype, \"showClearButton\", void 0);\n __decorate([Property(false)], TextArea.prototype, \"enablePersistence\", void 0);\n __decorate([Property(null)], TextArea.prototype, \"width\", void 0);\n __decorate([Property('Both')], TextArea.prototype, \"resizeMode\", void 0);\n __decorate([Property(null)], TextArea.prototype, \"maxLength\", void 0);\n __decorate([Property(null)], TextArea.prototype, \"cols\", void 0);\n __decorate([Property(null)], TextArea.prototype, \"rows\", void 0);\n __decorate([Event()], TextArea.prototype, \"created\", void 0);\n __decorate([Event()], TextArea.prototype, \"destroyed\", void 0);\n __decorate([Event()], TextArea.prototype, \"change\", void 0);\n __decorate([Event()], TextArea.prototype, \"blur\", void 0);\n __decorate([Event()], TextArea.prototype, \"focus\", void 0);\n __decorate([Event()], TextArea.prototype, \"input\", void 0);\n TextArea = __decorate([NotifyPropertyChanges], TextArea);\n return TextArea;\n}(Component);\nexport { TextArea };","var CaretPositionHelper = /** @class */function () {\n function CaretPositionHelper() {}\n CaretPositionHelper.createStyledDiv = function (target, htmlContent) {\n var div = document.createElement('div');\n var styles = {\n position: 'absolute',\n left: -9999,\n top: 0,\n zIndex: -2000\n };\n this.properties.forEach(function (prop) {\n styles[\"\" + prop] = getComputedStyle(target)[prop];\n });\n Object.keys(styles).forEach(function (key) {\n div.style[\"\" + key] = styles[\"\" + key];\n });\n var scrollbarWidth = target.offsetWidth - target.clientWidth;\n div.style.width = target.clientWidth + scrollbarWidth + 'px';\n div.innerHTML = htmlContent;\n if (target && target.parentNode) {\n target.parentNode.insertBefore(div, target.nextSibling);\n }\n return div;\n };\n CaretPositionHelper.createCaretMarker = function (target, htmlContent) {\n var div = this.createStyledDiv(target, htmlContent);\n var marker = div.ownerDocument.getElementById('caret-position-marker');\n var position = {\n left: marker.offsetLeft,\n top: marker.offsetTop,\n height: marker.offsetHeight\n };\n if (div && div.parentNode) {\n div.parentNode.removeChild(div);\n }\n return position;\n };\n CaretPositionHelper.escapeHtml = function (value) {\n return value.replace(/<|>|`|\"|&/g, '?').replace(/\\r\\n|\\r|\\n/g, '<br/>');\n };\n CaretPositionHelper.getCaretPosition = function (target) {\n var position = target.selectionStart || 0;\n var textBeforeCaret = target.value.slice(0, position);\n var textAfterCaret = target.value.slice(position);\n var content = \"<span style=\\\"position: relative; display: inline;\\\">\" + this.escapeHtml(textBeforeCaret) + \"</span>\";\n content += '<span id=\"caret-position-marker\" style=\"position: relative; display: inline;\">|</span>';\n content += \"<span style=\\\"position: relative; display: inline;\\\">\" + this.escapeHtml(textAfterCaret) + \"</span>\";\n var rect = this.createCaretMarker(target, content);\n rect.pos = position;\n return rect;\n };\n CaretPositionHelper.adjustScrollToCaretPosition = function (element) {\n var caretPosition = this.getCaretPosition(element);\n var lineHeight = parseFloat(window.getComputedStyle(element).lineHeight);\n if (caretPosition.top > element.clientHeight + element.scrollTop - lineHeight) {\n element.scrollTop = caretPosition.top - element.clientHeight + lineHeight;\n }\n };\n CaretPositionHelper.getTextAreaPosition = function (element) {\n var computedStyle = window.getComputedStyle(element);\n var position = this.getCaretPosition(element);\n return {\n top: position.top + parseFloat(computedStyle.borderTopWidth) + element.offsetTop - element.scrollTop,\n left: position.left + parseFloat(computedStyle.borderLeftWidth) + element.offsetLeft - element.scrollLeft - 0.25,\n height: position.height,\n elemStyle: computedStyle\n };\n };\n CaretPositionHelper.insertCharacter = function (element, text) {\n var start = element.selectionStart;\n var end = element.selectionEnd;\n element.value = element.value.substring(0, start) + text + element.value.substring(end);\n start += text.length;\n element.setSelectionRange(start, start);\n };\n CaretPositionHelper.properties = ['borderBottomWidth', 'borderLeftWidth', 'borderRightWidth', 'borderTopStyle', 'borderRightStyle', 'borderBottomStyle', 'borderLeftStyle', 'borderTopWidth', 'boxSizing', 'fontFamily', 'fontSize', 'fontWeight', 'height', 'letterSpacing', 'lineHeight', 'marginBottom', 'marginLeft', 'marginRight', 'marginTop', 'outlineWidth', 'overflow', 'overflowX', 'overflowY', 'paddingBottom', 'paddingLeft', 'paddingRight', 'paddingTop', 'textAlign', 'textOverflow', 'textTransform', 'whiteSpace', 'wordBreak', 'wordWrap', 'width'];\n return CaretPositionHelper;\n}();\nexport { CaretPositionHelper };","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};\nimport { addClass, Event, attributes, compile, Component, EventHandler, getUniqueID, select, Browser, append } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, KeyboardEvents, NotifyPropertyChanges, Property, remove, removeClass, initializeCSPTemplate, closest } from '@syncfusion/ej2-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nvar ICONCSS = 'e-rating-icon e-icons e-star-filled';\nvar ITEMLIST = 'e-rating-item-list';\nvar ITEMCONTAINER = 'e-rating-item-container';\nvar SELECTED = 'e-rating-selected';\nvar INTERMEDIATE = 'e-rating-intermediate';\nvar LABEL = 'e-rating-label';\nvar RESET = 'e-icons e-reset';\nvar HIDDEN = 'e-rating-hidden';\nvar DISABLED = 'e-disabled';\nvar READONLY = 'e-rating-readonly';\nvar RTL = 'e-rtl';\nvar ANIMATION = 'e-rating-animation';\nvar FULLTEMPLATE = 'e-rating-full';\nvar EMPTYTEMPLATE = 'e-rating-empty';\nvar SELECTEDVALUE = 'e-selected-value';\nvar RATINGVALUE = '--rating-value';\n/**\n * Defines where to position the label in rating\n */\nexport var LabelPosition;\n(function (LabelPosition) {\n /**\n * The label is positioned at the top center of the rating component.\n */\n LabelPosition[\"Top\"] = \"Top\";\n /**\n * The label is positioned at the bottom center of the rating component.\n */\n LabelPosition[\"Bottom\"] = \"Bottom\";\n /**\n * The label is positioned at the left side of the rating component.\n */\n LabelPosition[\"Left\"] = \"Left\";\n /**\n * The label is positioned at the right side of the rating component.\n */\n LabelPosition[\"Right\"] = \"Right\";\n})(LabelPosition || (LabelPosition = {}));\n/**\n * Defines the precision type of the rating.\n * It is used to component the granularity of the rating, allowing users to provide ratings with varying levels of precision.\n */\nexport var PrecisionType;\n(function (PrecisionType) {\n /**\n * The rating is increased in whole number increments.\n */\n PrecisionType[\"Full\"] = \"Full\";\n /**\n * The rating is increased in increments of 0.5 (half).\n */\n PrecisionType[\"Half\"] = \"Half\";\n /**\n * The rating is increased in increments of 0.25 (quarter).\n */\n PrecisionType[\"Quarter\"] = \"Quarter\";\n /**\n * The rating is increased in increments of 0.1.\n */\n PrecisionType[\"Exact\"] = \"Exact\";\n})(PrecisionType || (PrecisionType = {}));\n/**\n * The Rating component allows the user to rate something by clicking on a set of symbols on a numeric scale.\n * This allows users to provide feedback or ratings for products, services, or content.\n *\n * ```html\n * <input id=\"rating\">\n * ```\n * ```typescript\n * <script>\n * let ratingObj: Rating = new Rating();\n * ratingObj.appendTo('#rating');\n * </script>\n * ```\n */\nvar Rating = /** @class */function (_super) {\n __extends(Rating, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {RatingModel} options - Specifies the rating model\n * @param {string|HTMLButtonElement} element - Specifies the target element\n */\n function Rating(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.itemElements = [];\n return _this;\n }\n Rating.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.keyConfigs = {\n downarrow: 'downarrow',\n leftarrow: 'leftarrow',\n rightarrow: 'rightarrow',\n uparrow: 'uparrow',\n space: 'space'\n };\n this.tooltipOpen = false;\n this.isTouchSelected = false;\n if (closest(this.element, 'form') && this.element.getAttribute('value')) {\n this.setProperties({\n value: this.element.getAttribute('value')\n }, true);\n }\n };\n Rating.prototype.render = function () {\n this.initialize();\n this.updateMinValue();\n this.updateTemplateFunction();\n this.triggerChange(null, this.value, false, true);\n this.renderItems();\n this.displayLabel();\n };\n Rating.prototype.initialize = function () {\n this.wrapper = this.createElement('div', {\n className: 'e-' + this.getModuleName() + '-container '\n });\n this.element.parentNode.insertBefore(this.wrapper, this.element);\n this.wrapper.appendChild(this.element);\n if (this.element.getAttribute('name') == null) {\n this.element.setAttribute('name', this.element.id);\n }\n attributes(this.element, {\n 'aria-label': 'rating'\n });\n this.renderItemList();\n this.updateReset();\n if (this.readOnly) {\n this.wrapper.classList.add(READONLY);\n }\n if (!this.visible) {\n this.wrapper.classList.add(HIDDEN);\n }\n if (this.enableRtl) {\n this.wrapper.classList.add(RTL);\n }\n if (this.enableAnimation) {\n this.wrapper.classList.add(ANIMATION);\n }\n if (this.cssClass) {\n addClass([this.wrapper], this.cssClass.split(' '));\n }\n this.updateTooltip();\n this.wireKeyboardEvent();\n this.updateDisabled();\n };\n Rating.prototype.updateDisabled = function () {\n this.wrapper.classList[this.disabled ? 'add' : 'remove'](DISABLED);\n attributes(this.ratingItemList, {\n 'tabindex': this.disabled ? '-1' : '0'\n });\n this.updateResetButton();\n };\n Rating.prototype.updateResetButton = function () {\n if (this.allowReset) {\n if (this.resetElement) {\n this.resetElement.blur();\n }\n var isDisabled = this.value <= this.min || this.disabled;\n this.resetElement.classList[isDisabled ? 'add' : 'remove'](DISABLED);\n attributes(this.resetElement, {\n 'tabindex': isDisabled ? '-1' : '0',\n 'aria-hidden': isDisabled.toString()\n });\n }\n };\n Rating.prototype.renderItemList = function () {\n var _this = this;\n this.ratingItemList = this.createElement('div', {\n className: ITEMLIST,\n id: this.element.id + '_item-list'\n });\n attributes(this.ratingItemList, {\n 'aria-label': 'rating',\n 'role': 'slider'\n });\n this.wrapper.appendChild(this.ratingItemList);\n EventHandler.add(this.ratingItemList, 'touchmove', function (e) {\n return _this.touchMoveHandler(e);\n }, this);\n EventHandler.add(this.ratingItemList, Browser.touchEndEvent, this.touchEndHandler, this);\n };\n Rating.prototype.touchMoveHandler = function (e) {\n if (!this.isTouchSelected) {\n this.wrapper.classList.add('e-rating-touch');\n this.isTouchSelected = true;\n }\n this.wrapper.classList.add('e-touch-select');\n var rect = this.ratingItemList.getBoundingClientRect();\n var x = e.touches[0].clientX - rect.x;\n var currValue = x / rect.width * this.itemsCount;\n currValue = this.enableRtl ? this.itemsCount - currValue : currValue;\n currValue = currValue < this.min ? this.min : currValue > this.itemsCount ? this.itemsCount : currValue;\n currValue = this.validateValue(currValue);\n var element = currValue === 0 ? null : this.itemElements[parseInt((Math.ceil(currValue) - 1).toString(), 10)];\n if (currValue === this.currentValue) {\n if (this.showTooltip && element) {\n this.openRatingTooltip(element, false);\n }\n return;\n }\n var previousValue = this.currentValue;\n this.triggerChange(e, currValue);\n this.updateCurrentValue(currValue);\n if (this.showTooltip) {\n if (element) {\n if (Math.ceil(currValue) !== Math.ceil(previousValue)) {\n this.closeRatingTooltip();\n }\n this.openRatingTooltip(element, true);\n } else {\n this.closeRatingTooltip();\n }\n }\n };\n Rating.prototype.touchEndHandler = function () {\n this.closeRatingTooltip();\n this.wrapper.classList.remove('e-touch-select');\n };\n Rating.prototype.updateTemplateFunction = function () {\n this.emptyTemplateFunction = this.emptyTemplate ? this.getTemplateString(this.emptyTemplate) : null;\n this.fullTemplateFunction = this.fullTemplate ? this.getTemplateString(this.fullTemplate) : null;\n };\n Rating.prototype.renderItems = function () {\n var _this = this;\n for (var i = 0; i < this.itemsCount; i++) {\n var ratingItemContainer = this.createElement('span', {\n className: ITEMCONTAINER\n });\n var spanItem = this.createElement('span', {\n className: 'e-rating-item'\n });\n var ratingValue = this.getRatingValue(this.value, i);\n this.renderItemContent(spanItem, ratingValue, i, false);\n ratingItemContainer.appendChild(spanItem);\n this.wireItemsEvents(ratingItemContainer, i + 1);\n this.itemElements.push(ratingItemContainer);\n var eventArgs = {\n element: ratingItemContainer,\n value: i + 1\n };\n this.trigger('beforeItemRender', eventArgs, function (args) {\n _this.ratingItemList.appendChild(args.element);\n });\n }\n attributes(this.ratingItemList, {\n 'aria-valuemax': this.itemsCount.toString()\n });\n this.updateItemValue(false);\n };\n Rating.prototype.renderItemContent = function (spanEle, val, index, isrerender) {\n if (isrerender) {\n this.removeItemContent(spanEle);\n }\n if (this.fullTemplate && val === 1) {\n spanEle.classList.add(FULLTEMPLATE);\n append(this.fullTemplateFunction({\n index: index,\n ratingValue: val\n }, this, 'ratingFullTemplate', this.element.id + 'fullTemplate', this.isStringTemplate), spanEle);\n } else if (this.emptyTemplate) {\n spanEle.classList.add(EMPTYTEMPLATE);\n append(this.emptyTemplateFunction({\n index: index,\n ratingValue: val\n }, this, 'ratingEmptyTemplate', this.element.id + 'emptyTemplate', this.isStringTemplate), spanEle);\n } else {\n addClass([spanEle], ICONCSS.split(' '));\n }\n };\n Rating.prototype.removeItemContent = function (spanEle) {\n spanEle.classList.remove(FULLTEMPLATE, EMPTYTEMPLATE);\n removeClass([spanEle], ICONCSS.split(' '));\n if (spanEle.firstChild) {\n spanEle.innerHTML = '';\n }\n };\n Rating.prototype.updateTooltip = function () {\n if (this.showTooltip) {\n this.tooltipObj = new Tooltip({\n target: '.e-rating-item-container',\n windowCollision: true,\n opensOn: 'Custom',\n cssClass: this.cssClass ? 'e-rating-tooltip ' + this.cssClass : 'e-rating-tooltip'\n });\n this.tooltipObj.appendTo(this.ratingItemList);\n } else {\n if (!isNullOrUndefined(this.tooltipObj)) {\n this.tooltipObj.destroy();\n this.tooltipObj = null;\n }\n }\n };\n Rating.prototype.updateMinValue = function () {\n this.setProperties({\n min: this.validateValue(this.min)\n }, true);\n if (this.min > 0 && this.value < this.min) {\n this.triggerChange(null, this.min, false);\n }\n attributes(this.ratingItemList, {\n 'aria-valuemin': this.min.toString()\n });\n };\n Rating.prototype.validateValue = function (currentValue) {\n if (currentValue > this.itemsCount) {\n currentValue = this.itemsCount;\n } else if (currentValue < 0) {\n currentValue = 0;\n } else {\n currentValue = this.precision === PrecisionType.Full || this.enableSingleSelection ? Math.round(currentValue) : this.precision === PrecisionType.Half ? Math.round(currentValue * 2) / 2 : this.precision === PrecisionType.Quarter ? Math.round(currentValue * 4) / 4 : Math.round(currentValue * 10) / 10;\n }\n return currentValue;\n };\n Rating.prototype.getRatingValue = function (value, i) {\n return this.enableSingleSelection ? value > i && value <= i + 1 ? 1 : 0 : value >= i + 1 ? 1 : value < i ? 0 : value - i;\n };\n Rating.prototype.updateItemValue = function (isUpdate) {\n if (isUpdate === void 0) {\n isUpdate = true;\n }\n if (isUpdate && this.isReact) {\n this.clearTemplate(['ratingEmptyTemplate', 'ratingFullTemplate']);\n }\n for (var i = 0; i < this.itemsCount; i++) {\n var itemElement = this.itemElements[parseInt(i.toString(), 10)];\n itemElement.classList.remove(SELECTED, INTERMEDIATE, SELECTEDVALUE);\n var ratingValue = this.getRatingValue(this.currentValue, i);\n if (ratingValue === 1) {\n itemElement.classList.add(SELECTED);\n } else if (ratingValue > 0) {\n itemElement.classList.add(INTERMEDIATE);\n } else if (this.precision === PrecisionType.Full && i + 1 <= this.value && !this.enableSingleSelection) {\n itemElement.classList.add(SELECTEDVALUE);\n }\n if (isUpdate) {\n this.updateItemContent(ratingValue, i);\n }\n itemElement.style.setProperty(RATINGVALUE, ratingValue * 100 + '%');\n itemElement.classList[this.value === 0 && i === 0 || this.value === i + 1 || ratingValue > 0 && ratingValue < 1 ? 'add' : 'remove']('e-rating-focus');\n }\n if (isUpdate) {\n this.renderReactTemplates();\n }\n this.updateResetButton();\n attributes(this.ratingItemList, {\n 'aria-valuenow': this.currentValue.toString()\n });\n attributes(this.element, {\n 'value': this.value.toString()\n });\n };\n Rating.prototype.updateItemContent = function (ratingValue, index) {\n if (!this.fullTemplate && !this.emptyTemplate) {\n return;\n }\n var spanEle = this.itemElements[parseInt(index.toString(), 10)].querySelector('.e-rating-item');\n if (this.fullTemplate && ratingValue === 1) {\n if (!this.isReact && spanEle.classList.contains(FULLTEMPLATE)) {\n return;\n }\n this.removeItemContent(spanEle);\n spanEle.classList.add(FULLTEMPLATE);\n append(this.fullTemplateFunction({\n ratingValue: ratingValue,\n index: index\n }, this, 'ratingFullTemplate', this.element.id + 'fullTemplate' + index, this.isStringTemplate), spanEle);\n } else if (this.emptyTemplate) {\n if (!this.isReact && spanEle.classList.contains(EMPTYTEMPLATE)) {\n return;\n }\n this.removeItemContent(spanEle);\n spanEle.classList.add(EMPTYTEMPLATE);\n append(this.emptyTemplateFunction({\n ratingValue: ratingValue,\n index: index\n }, this, 'ratingEmptyTemplate', this.element.id + 'emptyTemplate' + index, this.isStringTemplate), spanEle);\n } else {\n this.removeItemContent(spanEle);\n addClass([spanEle], ICONCSS.split(' '));\n }\n };\n Rating.prototype.updateTooltipContent = function (isChange) {\n var _this = this;\n if (this.showTooltip) {\n if (this.isReact) {\n this.clearTemplate(['ratingTooltipTemplate']);\n }\n var content_1;\n if (this.tooltipTemplate) {\n content_1 = this.createElement('span', {\n className: 'e-rating-tooltip-content'\n });\n var templateFunction = this.getTemplateString(this.tooltipTemplate);\n append(templateFunction({\n value: this.currentValue\n }, this, 'ratingTooltipTemplate', this.element.id + 'tooltipTemplate', this.isStringTemplate), content_1);\n this.tooltipObj.setProperties({\n content: content_1\n }, isChange);\n if (this.isAngular) {\n setTimeout(function () {\n var ratingSpan = _this.ratingItemList.querySelectorAll('.' + ITEMCONTAINER + '.' + SELECTED);\n _this.tooltipObj.refresh(ratingSpan[ratingSpan.length - 1]);\n });\n }\n } else {\n content_1 = this.currentValue.toString();\n this.tooltipObj.setProperties({\n content: initializeCSPTemplate(function () {\n return content_1;\n })\n }, isChange);\n }\n this.renderReactTemplates();\n }\n };\n Rating.prototype.getTemplateString = function (template) {\n var stringContent = '';\n try {\n if (typeof template !== 'function') {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n stringContent = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n } else {\n stringContent = template;\n }\n } else {\n stringContent = template;\n }\n } catch (e) {\n stringContent = template;\n }\n return compile(stringContent);\n };\n Rating.prototype.displayLabel = function () {\n if (this.showLabel) {\n this.spanLabel = this.createElement('span', {\n className: LABEL\n });\n this.updateLabel();\n this.updateLabelPosition();\n } else {\n if (this.wrapper.contains(this.spanLabel)) {\n remove(this.spanLabel);\n this.spanLabel = null;\n }\n }\n };\n Rating.prototype.updateLabel = function () {\n if (this.showLabel) {\n if (this.labelTemplate) {\n if (this.isReact) {\n this.clearTemplate(['ratingLabelTemplate']);\n }\n if (this.spanLabel.firstChild) {\n this.spanLabel.innerHTML = '';\n }\n var templateFunction = this.getTemplateString(this.labelTemplate);\n append(templateFunction({\n value: this.currentValue\n }, this, 'ratingLabelTemplate', this.element.id + 'labelTemplate', this.isStringTemplate), this.spanLabel);\n this.renderReactTemplates();\n } else {\n this.spanLabel.textContent = this.currentValue + ' / ' + this.itemsCount;\n }\n }\n };\n Rating.prototype.updateReset = function () {\n if (this.allowReset) {\n this.resetElement = this.createElement('span', {\n className: RESET,\n attrs: {\n 'aria-label': 'resetbutton',\n 'role': 'button'\n }\n });\n this.updateResetButton();\n EventHandler.add(this.resetElement, 'click', this.resetClicked, this);\n this.wrapper.insertBefore(this.resetElement, this.ratingItemList);\n } else {\n if (this.wrapper.contains(this.resetElement)) {\n remove(this.resetElement);\n this.resetElement = null;\n }\n }\n };\n Rating.prototype.updateLabelPosition = function () {\n this.clearLabelPosition();\n this.spanLabel.classList.add('e-label-' + this.labelPosition.toLowerCase());\n if (this.labelPosition === 'Left' || this.labelPosition === 'Top') {\n this.wrapper.firstChild.after(this.spanLabel);\n } else {\n this.wrapper.appendChild(this.spanLabel);\n }\n };\n Rating.prototype.clearLabelPosition = function () {\n var removeCss = this.spanLabel.classList.value.match(/(e-label-[top|bottom|right|left]+)/g);\n if (removeCss) {\n removeClass([this.spanLabel], removeCss);\n }\n };\n Rating.prototype.wireItemsEvents = function (itemElement, index) {\n var _this = this;\n EventHandler.add(itemElement, 'click', function (e) {\n return _this.clickHandler(e);\n }, this);\n EventHandler.add(itemElement, 'mousemove', function (e) {\n return _this.mouseMoveHandler(index, e);\n }, this);\n EventHandler.add(itemElement, 'mouseleave', this.mouseLeaveHandler, this);\n };\n Rating.prototype.clickHandler = function (e) {\n this.currentValue = this.min > 0 && this.currentValue < this.min ? this.min : this.currentValue;\n this.triggerChange(e, this.currentValue);\n this.updateItemValue();\n this.updateLabel();\n this.updateResetButton();\n };\n Rating.prototype.updateValueChange = function (e, val, isInteracted) {\n if (isInteracted === void 0) {\n isInteracted = true;\n }\n this.triggerChange(e, val, isInteracted);\n this.updateItemValue();\n this.updateLabel();\n };\n Rating.prototype.triggerChange = function (e, val, isInteracted, isInitial) {\n if (isInteracted === void 0) {\n isInteracted = true;\n }\n if (isInitial === void 0) {\n isInitial = false;\n }\n var ratingObj = null || this;\n val = this.validateValue(val);\n this.currentValue = val;\n if (this.currentValue === this.value) {\n return;\n }\n var eventArgs = {\n event: e,\n isInteracted: isInteracted,\n value: val,\n previousValue: this.value\n };\n this.setProperties({\n value: val\n }, true);\n if (this.isAngular && !isInitial) {\n ratingObj.localChange({\n value: val\n });\n }\n if (!isInitial) {\n this.trigger('valueChanged', eventArgs);\n }\n };\n Rating.prototype.mouseMoveHandler = function (index, e) {\n if (this.isTouchSelected) {\n this.wrapper.classList.remove('e-rating-touch');\n this.isTouchSelected = false;\n }\n var currValue = this.calculateCurrentValue(index, e);\n currValue = this.validateValue(currValue);\n var element = this.itemElements[parseInt((index - 1).toString(), 10)];\n if (currValue === this.currentValue) {\n this.openRatingTooltip(element, false);\n return;\n }\n this.updateCurrentValue(currValue);\n this.openRatingTooltip(element, true);\n var eventArgs = {\n element: element,\n event: e,\n value: currValue\n };\n this.trigger('onItemHover', eventArgs);\n };\n Rating.prototype.openRatingTooltip = function (element, isChange) {\n if (this.showTooltip) {\n if (!this.tooltipOpen) {\n this.updateTooltipContent(false);\n this.tooltipObj.open(element);\n this.tooltipOpen = true;\n } else if (isChange) {\n this.updateTooltipContent(true);\n this.tooltipObj.refresh(element);\n }\n }\n };\n Rating.prototype.closeRatingTooltip = function () {\n if (this.tooltipOpen) {\n this.tooltipObj.close();\n this.tooltipOpen = false;\n }\n };\n Rating.prototype.updateCurrentValue = function (currValue) {\n this.currentValue = currValue;\n this.updateItemValue();\n this.updateLabel();\n };\n Rating.prototype.mouseLeaveHandler = function () {\n this.closeRatingTooltip();\n this.updateCurrentValue(this.value);\n };\n Rating.prototype.calculateCurrentValue = function (index, args) {\n var currentValue = index;\n if (!(this.enableSingleSelection || this.precision === PrecisionType.Full)) {\n currentValue = args.offsetX / this.itemElements[index - 1].clientWidth;\n currentValue = this.enableRtl ? 1 - currentValue : currentValue;\n if (this.precision === PrecisionType.Quarter) {\n currentValue = currentValue <= 0.25 ? 0.25 : currentValue <= 0.5 ? 0.5 : currentValue < 0.75 ? 0.75 : 1.0;\n } else if (this.precision === PrecisionType.Half) {\n currentValue = currentValue <= 0.5 ? 0.5 : 1;\n }\n currentValue = currentValue + index - 1;\n }\n return currentValue;\n };\n /**\n * Reset’s the value to minimum.\n *\n * {% codeBlock src='rating/reset/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n Rating.prototype.reset = function () {\n this.resetClicked(null, false);\n };\n Rating.prototype.resetClicked = function (e, isInteracted) {\n if (isInteracted === void 0) {\n isInteracted = true;\n }\n this.updateValueChange(e, this.min, isInteracted);\n this.updateResetButton();\n };\n Rating.prototype.wireKeyboardEvent = function () {\n this.keyboardModuleRating = new KeyboardEvents(this.wrapper, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n Rating.prototype.keyActionHandler = function (e) {\n e.preventDefault();\n if (this.disabled || this.readOnly) {\n return;\n }\n if (e.target.classList.contains(ITEMLIST)) {\n switch (e.action) {\n case 'uparrow':\n this.handleNavigation(e, true);\n break;\n case 'downarrow':\n this.handleNavigation(e, false);\n break;\n case 'leftarrow':\n this.handleNavigation(e, this.enableRtl);\n break;\n case 'rightarrow':\n this.handleNavigation(e, !this.enableRtl);\n break;\n }\n }\n if (this.allowReset && e.target.classList.contains('e-reset')) {\n switch (e.action) {\n case 'space':\n this.resetClicked(e);\n break;\n }\n }\n };\n Rating.prototype.handleNavigation = function (e, isIncrease) {\n if (!isIncrease && this.value > this.min || isIncrease && this.value < this.itemsCount) {\n var currentValue = this.precision === PrecisionType.Full || this.enableSingleSelection ? 1 : this.precision === PrecisionType.Half ? 0.5 : this.precision === PrecisionType.Quarter ? 0.25 : Math.round(0.1 * 10) / 10;\n currentValue = isIncrease ? this.value + currentValue : this.value - currentValue;\n this.updateValueChange(e, currentValue);\n this.updateResetButton();\n }\n };\n Rating.prototype.updateContent = function () {\n if (this.isReact) {\n this.clearTemplate(['ratingEmptyTemplate', 'ratingFullTemplate']);\n }\n for (var i = 0; i < this.itemsCount; i++) {\n var itemElement = this.itemElements[parseInt(i.toString(), 10)].firstElementChild;\n this.renderItemContent(itemElement, this.getRatingValue(this.value, i), i, true);\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n Rating.prototype.getModuleName = function () {\n return 'rating';\n };\n /**\n * To get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Rating.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n Rating.prototype.removeItemElements = function () {\n for (var i = 0; i < this.itemElements.length; i++) {\n remove(this.itemElements[parseInt(i.toString(), 10)]);\n }\n this.itemElements = [];\n };\n /**\n * Destroys the Rating instance.\n *\n * @returns {void}\n */\n Rating.prototype.destroy = function () {\n var _this = this;\n _super.prototype.destroy.call(this);\n // unwires the events and detach the li elements\n this.removeItemElements();\n this.clearTemplate();\n if (this.spanLabel) {\n remove(this.spanLabel);\n this.spanLabel = null;\n }\n if (this.resetElement) {\n remove(this.resetElement);\n this.resetElement = null;\n }\n if (this.showTooltip) {\n this.tooltipObj.destroy();\n this.tooltipObj = null;\n }\n remove(this.ratingItemList);\n this.ratingItemList = null;\n this.wrapper.parentNode.insertBefore(this.element, this.wrapper);\n remove(this.wrapper);\n this.wrapper = null;\n this.keyboardModuleRating.destroy();\n this.keyboardModuleRating = null;\n ['value', 'aria-label', 'name'].forEach(function (attr) {\n _this.element.removeAttribute(attr);\n });\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RatingModel} newProp - Specifies new properties\n * @param {RatingModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Rating.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.updateValueChange(null, this.value > this.min ? this.value : this.min, false);\n break;\n case 'min':\n this.updateMinValue();\n this.updateItemValue();\n this.updateLabel();\n break;\n case 'showLabel':\n this.displayLabel();\n break;\n case 'visible':\n this.wrapper.classList[!this.visible ? 'add' : 'remove'](HIDDEN);\n break;\n case 'disabled':\n this.updateDisabled();\n break;\n case 'readOnly':\n this.wrapper.classList[this.readOnly ? 'add' : 'remove'](READONLY);\n break;\n case 'allowReset':\n this.updateReset();\n break;\n case 'enableRtl':\n this.wrapper.classList[this.enableRtl ? 'add' : 'remove'](RTL);\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.wrapper], newProp.cssClass.split(' '));\n }\n if (this.tooltipObj) {\n this.tooltipObj.setProperties({\n cssClass: this.cssClass ? 'e-rating-tooltip ' + this.cssClass : 'e-rating-tooltip'\n });\n }\n break;\n case 'labelPosition':\n this.updateLabelPosition();\n break;\n case 'showTooltip':\n this.updateTooltip();\n break;\n case 'precision':\n this.updateMinValue();\n this.triggerChange(null, this.value, false);\n this.updateItemValue();\n this.updateLabel();\n break;\n case 'enableSingleSelection':\n //To validate the value against single selection and update the items, label + trigger change event if value changed\n this.updateValueChange(null, this.currentValue, false);\n break;\n case 'enableAnimation':\n this.wrapper.classList[this.enableAnimation ? 'add' : 'remove'](ANIMATION);\n break;\n case 'emptyTemplate':\n case 'fullTemplate':\n this.updateTemplateFunction();\n this.updateContent();\n break;\n case 'labelTemplate':\n this.updateLabel();\n break;\n case 'itemsCount':\n this.removeItemElements();\n this.renderItems();\n this.updateLabel();\n break;\n }\n }\n };\n __decorate([Property(false)], Rating.prototype, \"allowReset\", void 0);\n __decorate([Property('')], Rating.prototype, \"cssClass\", void 0);\n __decorate([Property(false)], Rating.prototype, \"disabled\", void 0);\n __decorate([Property('')], Rating.prototype, \"emptyTemplate\", void 0);\n __decorate([Property(true)], Rating.prototype, \"enableAnimation\", void 0);\n __decorate([Property(false)], Rating.prototype, \"enableSingleSelection\", void 0);\n __decorate([Property('')], Rating.prototype, \"fullTemplate\", void 0);\n __decorate([Property(5)], Rating.prototype, \"itemsCount\", void 0);\n __decorate([Property(LabelPosition.Right)], Rating.prototype, \"labelPosition\", void 0);\n __decorate([Property('')], Rating.prototype, \"labelTemplate\", void 0);\n __decorate([Property(0.0)], Rating.prototype, \"min\", void 0);\n __decorate([Property(PrecisionType.Full)], Rating.prototype, \"precision\", void 0);\n __decorate([Property(false)], Rating.prototype, \"readOnly\", void 0);\n __decorate([Property(false)], Rating.prototype, \"showLabel\", void 0);\n __decorate([Property(true)], Rating.prototype, \"showTooltip\", void 0);\n __decorate([Property('')], Rating.prototype, \"tooltipTemplate\", void 0);\n __decorate([Property(0.0)], Rating.prototype, \"value\", void 0);\n __decorate([Property(true)], Rating.prototype, \"visible\", void 0);\n __decorate([Event()], Rating.prototype, \"beforeItemRender\", void 0);\n __decorate([Event()], Rating.prototype, \"created\", void 0);\n __decorate([Event()], Rating.prototype, \"onItemHover\", void 0);\n __decorate([Event()], Rating.prototype, \"valueChanged\", void 0);\n Rating = __decorate([NotifyPropertyChanges], Rating);\n return Rating;\n}(Component);\nexport { Rating };","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}();\nimport { Component, removeClass } from '@syncfusion/ej2-base';\nimport { EventHandler, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar SignatureBase = /** @class */function (_super) {\n __extends(SignatureBase, _super);\n function SignatureBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /* minDistance(distance between the two point) was calaculated for smoothness.*/\n _this.minDistance = 5;\n _this.previous = 0;\n /* interval handles for the smoothness in the mouse move event.*/\n _this.interval = 30;\n _this.timeout = null;\n _this.isSignatureEmpty = true;\n _this.backgroundLoaded = null;\n _this.isBlazor = false;\n _this.isResponsive = false;\n _this.signPointsColl = [];\n _this.signRatioPointsColl = [];\n _this.canRedraw = true;\n return _this;\n }\n /**\n * To Initialize the component rendering\n *\n * @private\n * @param {HTMLCanvasElement} element - Specifies the canvas element.\n * @param {BlazorDotnetObject} dotnetRef - Specifies for blazor client to server communication.\n * @returns {void}\n */\n SignatureBase.prototype.initialize = function (element, dotnetRef) {\n this.clearArray = [];\n this.element = element;\n this.canvasContext = this.element.getContext('2d');\n this.canvasContext.canvas.tabIndex = -1;\n if (dotnetRef) {\n this.dotnetRef = dotnetRef;\n this.isBlazor = true;\n if (this.signatureValue) {\n this.loadPersistedSignature();\n }\n }\n this.setHTMLProperties();\n if (isNullOrUndefined(this.signatureValue)) {\n this.updateSnapCollection(true);\n }\n this.wireEvents();\n if (!this.isBlazor) {\n this.trigger('created', null);\n }\n };\n SignatureBase.prototype.wireEvents = function () {\n if (isNullOrUndefined(this.pointColl) && !this.isReadOnly && !this.disabled) {\n EventHandler.add(this.canvasContext.canvas, 'mousedown touchstart', this.mouseDownHandler, this);\n EventHandler.add(this.canvasContext.canvas, 'keydown', this.keyboardHandler, this);\n window.addEventListener('resize', this.resizeHandler.bind(this));\n } else if (this.pointColl) {\n EventHandler.add(this.canvasContext.canvas, 'mousemove touchmove', this.mouseMoveHandler, this);\n EventHandler.add(this.canvasContext.canvas, 'mouseup touchend', this.mouseUpHandler, this);\n EventHandler.add(document, 'mouseup', this.mouseUpHandler, this);\n }\n };\n SignatureBase.prototype.unwireEvents = function (type) {\n if (type === 'mouseup' || type === 'touchend') {\n if (this.canvasContext) {\n EventHandler.remove(this.canvasContext.canvas, 'mousemove touchmove', this.mouseMoveHandler);\n EventHandler.remove(this.canvasContext.canvas, 'mouseup touchend', this.mouseUpHandler);\n }\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n } else {\n if (this.canvasContext) {\n EventHandler.remove(this.canvasContext.canvas, 'mousedown touchstart', this.mouseDownHandler);\n EventHandler.remove(this.canvasContext.canvas, 'keydown', this.keyboardHandler);\n }\n window.removeEventListener('resize', this.resizeHandler);\n }\n };\n SignatureBase.prototype.setHTMLProperties = function () {\n // eslint-disable-next-line max-len\n if (this.element.height === 150 && this.element.width === 300 && this.element.offsetHeight !== 0 && this.element.offsetWidth !== 0) {\n this.element.height = this.element.offsetHeight;\n this.element.width = this.element.offsetWidth;\n this.isResponsive = true;\n } else if ((this.element.height !== this.element.offsetHeight - 1 || this.element.width !== this.element.offsetWidth - 1) && this.element.offsetHeight !== 0 && this.element.offsetWidth !== 0) {\n this.element.height = this.element.offsetHeight;\n this.element.width = this.element.offsetWidth;\n }\n this.canvasContext.fillStyle = this.strokeColor;\n this.tempCanvas = this.createElement('canvas', {\n className: 'e-' + this.getModuleName() + '-temp'\n });\n this.tempContext = this.tempCanvas.getContext('2d');\n this.tempCanvas.width = this.element.width;\n this.tempCanvas.height = this.element.height;\n if (this.backgroundImage) {\n this.canvasContext.canvas.style.backgroundImage = 'url(' + this.backgroundImage + ')';\n this.canvasContext.canvas.style.backgroundRepeat = 'no-repeat';\n if (this.saveWithBackground) {\n this.setBackgroundImage(this.backgroundImage, 'temp');\n }\n } else if (this.backgroundColor) {\n this.canvasContext.canvas.style.backgroundColor = this.backgroundColor;\n }\n };\n SignatureBase.prototype.mouseDownHandler = function (e) {\n if (e.buttons === 1 || e.buttons === 2 || e.type === 'touchstart') {\n if (e.type === 'touchstart') {\n e.preventDefault();\n e.stopPropagation();\n }\n this.beginStroke(e);\n this.wireEvents();\n }\n };\n SignatureBase.prototype.mouseMoveHandler = function (e) {\n if (e.buttons === 1 || e.buttons === 2 || e.type === 'touchmove') {\n if (e.type === 'touchmove') {\n e.preventDefault();\n e.stopPropagation();\n }\n if (this.interval) {\n this.updateStrokeWithThrottle(e);\n } else {\n this.updateStroke(e);\n }\n }\n };\n SignatureBase.prototype.mouseUpHandler = function (e) {\n var args = {\n actionName: 'strokeUpdate'\n };\n if (e.type === 'touchstart') {\n e.preventDefault();\n e.stopPropagation();\n }\n this.endDraw();\n this.updateSnapCollection();\n this.unwireEvents(e.type);\n if (!this.isBlazor) {\n this.trigger('change', args);\n } else {\n this.dotnetRef.invokeMethodAsync('TriggerEventAsync', 'mouseUp');\n }\n this.signatureValue = this.snapColl[this.incStep];\n for (var i = 0; i < this.signPointsColl.length; i++) {\n this.signRatioPointsColl.push({\n x: this.signPointsColl[i].x / this.canvasContext.canvas.width,\n y: this.signPointsColl[i].y / this.canvasContext.canvas.height\n });\n }\n this.signPointsColl = [];\n };\n SignatureBase.prototype.keyboardHandler = function (e) {\n var _this = this;\n var args = {\n fileName: 'Signature',\n type: 'Png',\n cancel: false\n };\n switch (e.key) {\n case 'Delete':\n this.clear();\n break;\n case e.ctrlKey && 's':\n if (!this.isBlazor) {\n this.trigger('beforeSave', args, function (observableSaveArgs) {\n if (!args.cancel) {\n _this.save(observableSaveArgs.type, observableSaveArgs.fileName);\n }\n });\n } else {\n this.dotnetRef.invokeMethodAsync('TriggerEventAsync', 'beforeSave');\n }\n e.preventDefault();\n e.stopImmediatePropagation();\n break;\n case e.ctrlKey && 'z':\n this.undo();\n break;\n case e.ctrlKey && 'y':\n this.redo();\n break;\n }\n };\n SignatureBase.prototype.resizeHandler = function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n if (this.isResponsive && this.canRedraw && this.canvasContext && this.element) {\n this.canvasContext.canvas.width = this.element.offsetWidth;\n this.canvasContext.canvas.height = this.element.offsetHeight;\n this.canvasContext.scale(1, 1);\n this.canvasContext.fillStyle = this.strokeColor;\n var pointSize = (this.minStrokeWidth + this.maxStrokeWidth) / 2;\n for (var i = 0; i < this.signRatioPointsColl.length; i++) {\n this.arcDraw(this.signRatioPointsColl[i].x * this.canvasContext.canvas.width, this.signRatioPointsColl[i].y * this.canvasContext.canvas.height, pointSize);\n }\n this.signPointsColl = [];\n this.canvasContext.closePath();\n this.canvasContext.fill();\n } else if (this.canvasContext && this.element) {\n var restoreImg_1 = new Image();\n restoreImg_1.src = this.snapColl[this.incStep];\n restoreImg_1.onload = function () {\n proxy.canvasContext.clearRect(0, 0, proxy.element.width, proxy.element.height);\n proxy.canvasContext.drawImage(restoreImg_1, 0, 0, proxy.element.width, proxy.element.height);\n };\n }\n };\n SignatureBase.prototype.beginStroke = function (e) {\n this.internalRefresh();\n this.updateStroke(e);\n };\n SignatureBase.prototype.updateStroke = function (e) {\n var point = this.createPoint(e);\n this.addPoint(point);\n };\n SignatureBase.prototype.updateStrokeWithThrottle = function (args) {\n var now = Date.now();\n var remaining = this.interval - (now - this.previous);\n this.storedArgs = args;\n if (remaining <= 0 || remaining > this.interval) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n this.previous = now;\n this.updateStroke(this.storedArgs);\n if (!this.timeout) {\n this.storedArgs = null;\n }\n } else if (!this.timeout) {\n this.timeout = window.setTimeout(this.delay.bind(this), remaining);\n }\n };\n SignatureBase.prototype.delay = function () {\n this.previous = Date.now();\n this.timeout = null;\n this.updateStroke(this.storedArgs);\n if (!this.timeout) {\n this.storedArgs = null;\n }\n };\n SignatureBase.prototype.createPoint = function (e) {\n var rect = this.canvasContext.canvas.getBoundingClientRect();\n if (e.type === 'mousedown' || e.type === 'mousemove') {\n return this.point(e.clientX - rect.left, e.clientY - rect.top, new Date().getTime());\n } else {\n return this.point(e.touches[0].clientX - rect.left, e.touches[0].clientY - rect.top, new Date().getTime());\n }\n };\n /* Returns the current point corrdinates(x, y) and time.*/\n SignatureBase.prototype.point = function (pointX, pointY, time) {\n this.pointX = pointX;\n this.pointY = pointY;\n this.time = time || new Date().getTime();\n return {\n x: this.pointX,\n y: this.pointY,\n time: this.time\n };\n };\n SignatureBase.prototype.addPoint = function (point) {\n var points = this.pointColl;\n var controlPoint1;\n var controlPoint2;\n var lastPoint = points.length > 0 && points[points.length - 1];\n var isLastPointTooClose = lastPoint ? this.distanceTo(lastPoint) <= this.minDistance : false;\n if (!lastPoint || !(lastPoint && isLastPointTooClose)) {\n points.push(point);\n if (points.length > 2) {\n if (points.length === 3) {\n points.unshift(points[0]);\n }\n controlPoint1 = this.calculateCurveControlPoints(points[0], points[1], points[2]).controlPoint2;\n controlPoint2 = this.calculateCurveControlPoints(points[1], points[2], points[3]).controlPoint1;\n this.startPoint = points[1];\n this.controlPoint1 = controlPoint1;\n this.controlPoint2 = controlPoint2;\n this.endPoint = points[2];\n this.startDraw();\n points.shift();\n }\n }\n };\n SignatureBase.prototype.startDraw = function () {\n var velocity;\n velocity = this.pointVelocityCalc(this.startPoint);\n velocity = this.velocity * velocity + (1 - this.velocity) * this.lastVelocity;\n var newWidth = Math.max(this.maxStrokeWidth / (velocity + 1), this.minStrokeWidth);\n this.curveDraw(this.lastWidth, newWidth);\n this.lastVelocity = velocity;\n this.lastWidth = newWidth;\n };\n SignatureBase.prototype.endDraw = function () {\n if (isNullOrUndefined(this.pointColl)) {\n return;\n }\n var canDrawCurve = this.pointColl.length > 2;\n var point = this.pointColl[0];\n if (!canDrawCurve && point) {\n this.strokeDraw(point);\n }\n };\n /* Calculate the Bezier (x, y) coordinate of the curve. */\n SignatureBase.prototype.curveDraw = function (startWidth, endWidth) {\n var context = this.canvasContext;\n var width;\n var i;\n var t1;\n var t2;\n var t3;\n var u1;\n var u2;\n var u3;\n var x;\n var y;\n var widthValue = endWidth - startWidth;\n var bezierLength = this.bezierLengthCalc();\n var drawSteps = Math.ceil(bezierLength) * 2;\n context.beginPath();\n for (i = 0; i < drawSteps; i++) {\n t1 = i / drawSteps;\n t2 = t1 * t1;\n t3 = t2 * t1;\n u1 = 1 - t1;\n u2 = u1 * u1;\n u3 = u2 * u1;\n x = u3 * this.startPoint.x;\n x += 3 * u2 * t1 * this.controlPoint1.x;\n x += 3 * u1 * t2 * this.controlPoint2.x;\n x += t3 * this.endPoint.x;\n y = u3 * this.startPoint.y;\n y += 3 * u2 * t1 * this.controlPoint1.y;\n y += 3 * u1 * t2 * this.controlPoint2.y;\n y += t3 * this.endPoint.y;\n width = Math.min(startWidth + t3 * widthValue, this.maxStrokeWidth);\n this.arcDraw(x, y, width);\n }\n context.closePath();\n context.fill();\n this.isSignatureEmpty = false;\n };\n SignatureBase.prototype.strokeDraw = function (point) {\n var context = this.canvasContext;\n var pointSize = (this.minStrokeWidth + this.maxStrokeWidth) / 2;\n context.beginPath();\n this.arcDraw(point.x, point.y, pointSize);\n context.closePath();\n context.fill();\n this.isSignatureEmpty = false;\n };\n SignatureBase.prototype.arcDraw = function (x, y, size) {\n this.signPointsColl.push({\n x: x,\n y: y\n });\n var context = this.canvasContext;\n context.moveTo(x, y);\n context.arc(x, y, size, 0, 2 * Math.PI, false);\n };\n /* Utility functions for Bezier algorithm*/\n SignatureBase.prototype.calculateCurveControlPoints = function (p1, p2, p3) {\n var dx1 = p1.x - p2.x;\n var dy1 = p1.y - p2.y;\n var dx2 = p2.x - p3.x;\n var dy2 = p2.y - p3.y;\n var m1 = {\n x: (p1.x + p2.x) / 2.0,\n y: (p1.y + p2.y) / 2.0\n };\n var m2 = {\n x: (p2.x + p3.x) / 2.0,\n y: (p2.y + p3.y) / 2.0\n };\n var l1 = Math.sqrt(dx1 * dx1 + dy1 * dy1);\n var l2 = Math.sqrt(dx2 * dx2 + dy2 * dy2);\n var dxm = m1.x - m2.x;\n var dym = m1.y - m2.y;\n var k = l2 / (l1 + l2);\n var cm = {\n x: m2.x + dxm * k,\n y: m2.y + dym * k\n };\n var tx = p2.x - cm.x;\n var ty = p2.y - cm.y;\n return {\n controlPoint1: this.point(m1.x + tx, m1.y + ty, 0),\n controlPoint2: this.point(m2.x + tx, m2.y + ty, 0)\n };\n };\n /* Returns approximated bezier length of the curuve.*/\n SignatureBase.prototype.bezierLengthCalc = function () {\n var steps = 10;\n var length = 0;\n var i;\n var t;\n var pointx1;\n var pointy1;\n var pointx2;\n var pointy2;\n var pointx3;\n var pointy3;\n for (i = 0; i <= steps; i++) {\n t = i / steps;\n pointx1 = this.bezierPointCalc(t, this.startPoint.x, this.controlPoint1.x, this.controlPoint2.x, this.endPoint.x);\n pointy1 = this.bezierPointCalc(t, this.startPoint.y, this.controlPoint1.y, this.controlPoint2.y, this.endPoint.y);\n if (i > 0) {\n pointx3 = pointx1 - pointx2;\n pointy3 = pointy1 - pointy2;\n length += Math.sqrt(pointx3 * pointx3 + pointy3 * pointy3);\n }\n pointx2 = pointx1;\n pointy2 = pointy1;\n }\n return length;\n };\n /* Calculate parametric value of x or y given t and the\n four point(startpoint, controlpoint1, controlpoint2, endpoint) coordinates of a cubic bezier curve.*/\n SignatureBase.prototype.bezierPointCalc = function (t, startpoint, cp1, cp2, endpoint) {\n return startpoint * (1.0 - t) * (1.0 - t) * (1.0 - t) + 3.0 * cp1 * (1.0 - t) * (1.0 - t) * t + 3.0 * cp2 * (1.0 - t) * t * t + endpoint * t * t * t;\n };\n /* Velocity between the current point and last point.*/\n SignatureBase.prototype.pointVelocityCalc = function (startPoint) {\n return this.time !== startPoint.time ? this.distanceTo(startPoint) / (this.time - startPoint.time) : 0;\n };\n /* Distance between the current point and last point.*/\n SignatureBase.prototype.distanceTo = function (start) {\n return Math.sqrt(Math.pow(this.pointX - start.x, 2) + Math.pow(this.pointY - start.y, 2));\n };\n SignatureBase.prototype.isRead = function (isRead) {\n if (isRead) {\n EventHandler.remove(this.canvasContext.canvas, 'mousedown touchstart', this.mouseDownHandler);\n } else if (!this.disabled) {\n EventHandler.add(this.canvasContext.canvas, 'mousedown touchstart', this.mouseDownHandler, this);\n }\n };\n SignatureBase.prototype.enableOrDisable = function (isDisable) {\n this.disabled = isDisable;\n if (isDisable) {\n this.canvasContext.canvas.style.filter = 'opacity(0.5)';\n this.isRead(true);\n } else {\n this.canvasContext.canvas.style.filter = '';\n this.isRead(false);\n }\n };\n SignatureBase.prototype.updateSnapCollection = function (isClear) {\n if (isNullOrUndefined(this.incStep)) {\n this.incStep = -1;\n this.incStep++;\n this.snapColl = [];\n this.clearArray = [];\n } else {\n this.incStep++;\n }\n if (this.incStep < this.snapColl.length) {\n this.snapColl.length = this.incStep;\n }\n if (this.incStep > 0) {\n var canvasNew = this.createElement('canvas', {\n className: 'e-' + this.getModuleName() + '-wrapper'\n });\n var canvasContextNew = canvasNew.getContext('2d');\n if (this.canvasContext) {\n canvasNew.width = this.canvasContext.canvas.width;\n canvasNew.height = this.canvasContext.canvas.height;\n canvasContextNew.drawImage(this.canvasContext.canvas, 0, 0, canvasNew.width, canvasNew.height);\n this.snapColl.push(canvasNew.toDataURL());\n }\n } else {\n this.snapColl.push(this.canvasContext.canvas.toDataURL());\n }\n if (isClear) {\n this.clearArray.push(this.incStep);\n }\n };\n SignatureBase.prototype.setBackgroundImage = function (imageSrc, type) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var imageObj = new Image();\n imageObj.crossOrigin = 'anonymous';\n imageObj.src = imageSrc;\n if (type === 'temp') {\n imageObj.onload = function () {\n proxy.tempContext.globalCompositeOperation = 'source-over';\n proxy.tempContext.drawImage(imageObj, 0, 0, proxy.element.width, proxy.element.height);\n };\n } else {\n imageObj.onload = function () {\n proxy.canvasContext.globalCompositeOperation = 'source-over';\n proxy.canvasContext.drawImage(imageObj, 0, 0, proxy.element.width, proxy.element.height);\n proxy.updateSnapCollection();\n proxy.saveBackground(true);\n };\n this.canvasContext.clearRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n }\n };\n SignatureBase.prototype.setBackgroundColor = function (color) {\n var canvasEle = this.canvasContext;\n canvasEle.strokeStyle = color;\n var i;\n var j;\n for (i = 1; i <= canvasEle.canvas.width; i++) {\n for (j = 1; j <= canvasEle.canvas.height; j++) {\n canvasEle.strokeRect(0, 0, i, j);\n }\n }\n this.updateSnapCollection();\n };\n SignatureBase.prototype.loadPersistedSignature = function () {\n if (isNullOrUndefined(this.signatureValue)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var lastImage = new Image();\n lastImage.src = this.signatureValue;\n lastImage.onload = function () {\n proxy.canvasContext.clearRect(0, 0, proxy.element.width, proxy.element.height);\n proxy.canvasContext.drawImage(lastImage, 0, 0);\n proxy.updateSnapCollection();\n };\n this.isSignatureEmpty = false;\n };\n /**\n * To get the signature as Blob.\n *\n * @param {string} url - specify the url/base 64 string to get blob of the signature.\n * @returns {Blob}.\n */\n SignatureBase.prototype.getBlob = function (url) {\n var arr = url.split(',');\n var type = arr[0].match(/:(.*?);/)[1];\n var bstr = atob(arr[1]);\n var n = bstr.length;\n var u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n return new Blob([u8arr], {\n type: type\n });\n };\n SignatureBase.prototype.download = function (blob, fileName) {\n var blobUrl = URL.createObjectURL(blob);\n var a = document.createElement('a');\n a.href = blobUrl;\n a.target = '_parent';\n a.download = fileName;\n (document.body || document.documentElement).appendChild(a);\n a.click();\n a.parentNode.removeChild(a);\n };\n SignatureBase.prototype.internalRefresh = function () {\n this.pointColl = [];\n this.lastVelocity = 0;\n this.lastWidth = (this.minStrokeWidth + this.maxStrokeWidth) / 2;\n };\n /**\n * To refresh the signature.\n *\n * @returns {void}.\n */\n SignatureBase.prototype.refresh = function () {\n this.isResponsive = false;\n this.setHTMLProperties();\n this.resizeHandler();\n this.internalRefresh();\n };\n /**\n * Erases all the signature strokes signed by user.\n *\n * @returns {void}.\n */\n SignatureBase.prototype.clear = function () {\n var args = {\n actionName: 'clear'\n };\n this.canvasContext.clearRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n this.tempContext.clearRect(0, 0, this.tempContext.canvas.width, this.tempContext.canvas.height);\n if (this.saveWithBackground && this.backgroundImage) {\n this.setBackgroundImage(this.backgroundImage, 'temp');\n }\n this.internalRefresh();\n this.signRatioPointsColl = [];\n this.updateSnapCollection(true);\n this.isSignatureEmpty = this.canRedraw = true;\n if (!this.isBlazor) {\n this.trigger('change', args);\n } else {\n this.dotnetRef.invokeMethodAsync('TriggerEventAsync', 'Clear');\n }\n };\n /**\n * Undo the last user action.\n *\n * @returns {void}.\n */\n SignatureBase.prototype.undo = function () {\n var args = {\n actionName: 'undo'\n };\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n if (this.incStep > 0) {\n this.incStep--;\n var undoImg_1 = new Image();\n undoImg_1.src = this.snapColl[this.incStep];\n undoImg_1.onload = function () {\n proxy.canvasContext.clearRect(0, 0, proxy.element.width, proxy.element.height);\n proxy.canvasContext.drawImage(undoImg_1, 0, 0, proxy.element.width, proxy.element.height);\n };\n }\n this.isClear();\n if (!this.isBlazor) {\n this.trigger('change', args);\n } else {\n this.dotnetRef.invokeMethodAsync('TriggerEventAsync', 'Undo');\n }\n };\n /**\n * Redo the last user action.\n *\n * @returns {void}.\n */\n SignatureBase.prototype.redo = function () {\n var args = {\n actionName: 'redo'\n };\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n if (this.incStep < this.snapColl.length - 1) {\n this.incStep++;\n var redoImg_1 = new Image();\n redoImg_1.src = this.snapColl[this.incStep];\n redoImg_1.onload = function () {\n proxy.canvasContext.clearRect(0, 0, proxy.element.width, proxy.element.height);\n proxy.canvasContext.drawImage(redoImg_1, 0, 0, proxy.element.width, proxy.element.height);\n };\n }\n this.isClear();\n if (!this.isBlazor) {\n this.trigger('change', args);\n } else {\n this.dotnetRef.invokeMethodAsync('TriggerEventAsync', 'Redo');\n }\n };\n SignatureBase.prototype.isClear = function () {\n if (this.clearArray) {\n var empty = false;\n for (var i = 0; i < this.clearArray.length; i++) {\n if (this.clearArray[i] === this.incStep) {\n this.isSignatureEmpty = true;\n empty = true;\n }\n }\n if (!empty) {\n this.isSignatureEmpty = false;\n }\n }\n };\n /**\n * To check whether the signature is empty or not.\n *\n * @returns {boolean}.\n */\n SignatureBase.prototype.isEmpty = function () {\n return this.isSignatureEmpty;\n };\n /**\n * To check whether the undo collection is empty or not.\n *\n * @returns {boolean}.\n */\n SignatureBase.prototype.canUndo = function () {\n return this.incStep > 0;\n };\n /**\n * To check whether the redo collection is empty or not.\n *\n * @returns {boolean}.\n */\n SignatureBase.prototype.canRedo = function () {\n return this.incStep < this.snapColl.length - 1;\n };\n /**\n * To draw the signature based on the given text, with the font family and font size.\n *\n * @param {string} text - specify text to be drawn as signature.\n * @param {string} fontFamily - specify font family of a signature.\n * @param {number} fontSize - specify font size of a signature.\n * @param {number} x- Specifies the x-coordinate to start the text of a signature. Default to the center point of the image if it not specified.\n * @param {number} y - Specifies the y-coordinate to start the text of a signature. Default to the center point of the image if it not specified.\n *\n * @returns {void}.\n */\n SignatureBase.prototype.draw = function (text, fontFamily, fontSize, x, y) {\n var args = {\n actionName: 'draw-text'\n };\n this.canvasContext.clearRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n fontFamily = fontFamily || 'Arial';\n fontSize = fontSize || 30;\n this.canvasContext.font = fontSize + 'px ' + fontFamily;\n var startX = this.element.width / 2;\n var startY = this.element.height / 2;\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n this.canvasContext.textAlign = 'center';\n this.canvasContext.textBaseline = 'middle';\n } else {\n startX = isNullOrUndefined(x) ? startX : x;\n startY = isNullOrUndefined(y) ? startY + fontSize / 2 : y + fontSize / 2;\n }\n this.canvasContext.fillText(text, startX, startY);\n this.updateSnapCollection();\n this.isSignatureEmpty = false;\n this.trigger('change', args);\n };\n /**\n * To load the signature with the given base 64 string, height and width.\n *\n * @param {string} signature - specify the url/base 64 string to be drawn as signature.\n * @param {number} width - specify the width of the loaded signature image.\n * @param {number} height - specify the height of the loaded signature image.\n * @returns {void}.\n */\n SignatureBase.prototype.load = function (signature, width, height) {\n height = height || this.element.height;\n width = width || this.element.width;\n this.canvasContext.clearRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var bitmapImage = new Image();\n bitmapImage.src = signature;\n if (signature.slice(0, 4) !== 'data') {\n bitmapImage.crossOrigin = 'anonymous';\n }\n bitmapImage.onload = function () {\n Promise.all([createImageBitmap(bitmapImage, 0, 0, width, height)]).then(function (results) {\n var tempCanvas = document.createElement('canvas');\n tempCanvas.width = width;\n tempCanvas.height = height;\n tempCanvas.getContext('2d').drawImage(results[0], 0, 0);\n if (signature.slice(0, 4) !== 'data') {\n proxy.canvasContext.globalCompositeOperation = 'source-over';\n }\n proxy.canvasContext.drawImage(tempCanvas, 0, 0, width, height, 0, 0, proxy.element.width, proxy.element.height);\n proxy.updateSnapCollection();\n });\n };\n this.isSignatureEmpty = this.canRedraw = false;\n };\n SignatureBase.prototype.saveBackground = function (savebg) {\n var imageSrc;\n if (savebg && this.backgroundImage) {\n imageSrc = this.snapColl[this.incStep - 1];\n } else {\n imageSrc = this.snapColl[this.incStep];\n }\n if (!savebg) {\n this.canvasContext.clearRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n if (this.backgroundImage) {\n this.setBackgroundImage(this.backgroundImage);\n } else if (this.backgroundColor) {\n this.setBackgroundColor(this.backgroundColor);\n savebg = true;\n }\n }\n if (savebg) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n var imageObj_1 = new Image();\n imageObj_1.crossOrigin = 'anonymous';\n imageObj_1.src = imageSrc;\n imageObj_1.onload = function () {\n proxy_1.backgroundLoaded = true;\n proxy_1.canvasContext.globalCompositeOperation = 'source-over';\n proxy_1.canvasContext.drawImage(imageObj_1, 0, 0, proxy_1.element.width, proxy_1.element.height);\n proxy_1.save(proxy_1.fileType, proxy_1.fileName);\n };\n }\n };\n /**\n * To save the signature with the given file type and file name.\n *\n * @param {SignatureFileType} type - specify type of the file to be saved a signature.\n * @param {string} fileName - specify name of the file to be saved a signature.\n *\n * @returns {void}.\n */\n SignatureBase.prototype.save = function (type, fileName) {\n if (this.saveWithBackground && this.backgroundLoaded == null && (this.backgroundImage || this.backgroundColor)) {\n this.backgroundLoaded = false;\n this.fileType = type;\n this.fileName = fileName;\n this.saveBackground(false);\n } else if (type === 'Svg') {\n fileName = fileName || 'Signature';\n this.toSVG(fileName);\n } else if (type === 'Jpeg') {\n fileName = fileName || 'Signature';\n if (!this.saveWithBackground || this.saveWithBackground && !(this.backgroundImage || this.backgroundColor)) {\n this.toJPEG(fileName);\n } else {\n var dataURL = this.canvasContext.canvas.toDataURL('image/jpeg');\n this.download(this.getBlob(dataURL), fileName + '.' + 'jpeg');\n }\n } else {\n fileName = fileName || 'Signature';\n var dataURL = this.canvasContext.canvas.toDataURL('image/png');\n this.download(this.getBlob(dataURL), fileName + '.' + 'png');\n }\n if (this.saveWithBackground && this.backgroundLoaded) {\n this.resetSnap();\n }\n };\n SignatureBase.prototype.resetSnap = function () {\n this.canvasContext.clearRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var restoreObj = new Image();\n restoreObj.src = this.snapColl[this.incStep - 1];\n restoreObj.onload = function () {\n proxy.canvasContext.drawImage(restoreObj, 0, 0, proxy.element.width, proxy.element.height);\n proxy.updateSnapCollection();\n };\n this.backgroundLoaded = null;\n this.snapColl.pop();\n this.incStep--;\n this.snapColl.pop();\n this.incStep--;\n };\n SignatureBase.prototype.toJPEG = function (fileName) {\n var _this = this;\n var imageSrc = this.snapColl[this.incStep];\n this.setBackgroundColor('#ffffff');\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var imageObj = new Image();\n imageObj.crossOrigin = 'anonymous';\n imageObj.src = imageSrc;\n imageObj.onload = function () {\n proxy.canvasContext.globalCompositeOperation = 'source-over';\n proxy.canvasContext.drawImage(imageObj, 0, 0, proxy.element.width, proxy.element.height);\n var dataURL = proxy.canvasContext.canvas.toDataURL('image/jpeg');\n proxy.download(proxy.getBlob(dataURL), fileName + '.' + 'jpeg');\n proxy.canvasContext.clearRect(0, 0, proxy.canvasContext.canvas.width, proxy.canvasContext.canvas.height);\n _this.resizeHandler();\n };\n this.snapColl.pop();\n this.incStep--;\n };\n SignatureBase.prototype.toSVG = function (fileName, dataUrl) {\n var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('width', this.canvasContext.canvas.width.toString());\n svg.setAttribute('height', this.canvasContext.canvas.height.toString());\n var XLinkNS = 'http://www.w3.org/1999/xlink';\n var img = document.createElementNS('http://www.w3.org/2000/svg', 'image');\n img.setAttributeNS(null, 'height', this.canvasContext.canvas.height.toString());\n img.setAttributeNS(null, 'width', this.canvasContext.canvas.width.toString());\n img.setAttributeNS(XLinkNS, 'xlink:href', dataUrl);\n svg.appendChild(img);\n var prefix = 'data:image/svg+xml;base64,';\n var header = '<svg' + ' xmlns=\"http://www.w3.org/2000/svg\"' + ' xmlns:xlink=\"http://www.w3.org/1999/xlink\"' + (\" width=\\\"\" + this.canvasContext.canvas.width + \"\\\"\") + (\" height=\\\"\" + this.canvasContext.canvas.height + \"\\\"\") + '>';\n var footer = '</svg>';\n var body = svg.innerHTML;\n var data = header + body + footer;\n var svgDataUrl = prefix + btoa(data);\n if (fileName == null) {\n return svgDataUrl;\n } else {\n this.download(this.getBlob(svgDataUrl), fileName + '.' + 'svg');\n return null;\n }\n };\n /**\n * To save the signature as Blob.\n *\n * @returns {Blob}.\n */\n SignatureBase.prototype.saveAsBlob = function () {\n return this.getBlob(this.canvasContext.canvas.toDataURL('image/png'));\n };\n /**\n * Gets the signature as a Base 64 string.\n *\n * This method is used to retrieve the current signature on the canvas as a Base 64-encoded string, in the specified image format.\n *\n * @param {SignatureFileType} [type] - Specifies the type of the image format.\n * Can be one of 'Png', 'Jpeg', or 'Svg'. If not specified, the default is 'Png'.\n * @returns {string} - Returns the Base 64 string of the signature in the specified format.\n */\n SignatureBase.prototype.getSignature = function (type) {\n if (this.saveWithBackground && this.backgroundColor && !this.backgroundImage) {\n this.tempContext.fillStyle = this.backgroundColor;\n this.tempContext.fillRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n } else if (!this.backgroundColor && !this.backgroundImage && type === 'Jpeg') {\n this.tempContext.fillStyle = '#fff';\n this.tempContext.fillRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n }\n this.tempContext.drawImage(this.element, 0, 0);\n if (type === 'Jpeg') {\n return this.tempCanvas.toDataURL('image/jpeg');\n } else if (type === 'Svg') {\n return this.toSVG(null, this.tempCanvas.toDataURL('image/png'));\n } else {\n return this.tempCanvas.toDataURL('image/png');\n }\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n SignatureBase.prototype.getModuleName = function () {\n return 'signature';\n };\n /**\n * To get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n SignatureBase.prototype.getPersistData = function () {\n this.signatureValue = this.snapColl[this.incStep];\n return this.addOnPersist(['signatureValue']);\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n SignatureBase.prototype.destroy = function () {\n if (this.getModuleName() !== 'image-editor') {\n this.unwireEvents(null);\n removeClass([this.element], 'e-' + this.getModuleName());\n this.element.removeAttribute('tabindex');\n this.pointColl = null;\n this.tempContext = null;\n this.tempCanvas = null;\n this.canvasContext = null;\n }\n _super.prototype.destroy.call(this);\n this.element = null;\n };\n /**\n * Modified onPropertyChanged method for both blazor and EJ2 signature component.\n *\n * @private\n * @param {string} key - Specifies the property, which changed.\n * @param {string} value - Specifies the property value changed.\n * @returns {void}\n */\n SignatureBase.prototype.propertyChanged = function (key, value) {\n var canvasNew = this.canvasContext;\n switch (key) {\n case 'backgroundColor':\n canvasNew.canvas.style.backgroundColor = value;\n this.backgroundColor = value;\n break;\n case 'backgroundImage':\n canvasNew.canvas.style.backgroundImage = 'url(' + value + ')';\n this.backgroundImage = value;\n if (this.saveWithBackground) {\n this.setBackgroundImage(this.backgroundImage, 'temp');\n }\n break;\n case 'strokeColor':\n canvasNew.fillStyle = value;\n this.strokeColor = value;\n break;\n case 'saveWithBackground':\n this.saveWithBackground = value;\n break;\n case 'maxStrokeWidth':\n this.maxStrokeWidth = value;\n break;\n case 'minStrokeWidth':\n this.minStrokeWidth = value;\n break;\n case 'velocity':\n this.velocity = value;\n break;\n case 'isReadOnly':\n this.isRead(value);\n break;\n case 'disabled':\n this.enableOrDisable(value);\n break;\n }\n };\n return SignatureBase;\n}(Component);\nexport { SignatureBase };","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};\nimport { Event } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, addClass } from '@syncfusion/ej2-base';\nimport { SignatureBase } from '../common/signature-base';\n/**\n * The Signature component allows user to draw smooth signatures as vector outline of strokes using variable width bezier curve interpolation.\n * It allows to save signature as image.\n * You can use your finger, pen, or mouse on a tablet, touchscreen, etc., to draw your own signature on this Signature component.\n * Signature component is a user interface to draw the Signature or Text.\n * It provides supports for various Background color, Stroke color and Background Image.\n * ```html\n * <canvas id=\"signature\"></canvas>\n * ```\n * ```typescript\n * <script>\n * let signatureObj: Signature = new Signature(null , \"#signature\");\n * </script>\n * ```\n */\nvar Signature = /** @class */function (_super) {\n __extends(Signature, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {SignatureModel} options - Specifies the Signature model.\n * @param {string | HTMLCanvasElement} element - Specifies the element.\n * @private\n */\n function Signature(options, element) {\n return _super.call(this, options, element) || this;\n }\n Signature.prototype.preRender = function () {\n // pre render code snippets\n };\n /**\n * To Initialize the component rendering\n *\n * @private\n * @returns {void}\n */\n Signature.prototype.render = function () {\n this.initialize();\n };\n Signature.prototype.initialize = function () {\n this.element.setAttribute('role', 'img');\n this.element.setAttribute('aria-label', 'signature');\n addClass([this.element], 'e-' + this.getModuleName());\n _super.prototype.initialize.call(this, this.element);\n if (this.enablePersistence) {\n this.loadPersistedSignature();\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n Signature.prototype.getModuleName = function () {\n return _super.prototype.getModuleName.call(this);\n };\n /**\n * To get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Signature.prototype.getPersistData = function () {\n return _super.prototype.getPersistData.call(this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {SignatureModel} newProp - Specifies new properties\n * @param {SignatureModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Signature.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'backgroundColor':\n _super.prototype.propertyChanged.call(this, prop, newProp.backgroundColor);\n break;\n case 'backgroundImage':\n _super.prototype.propertyChanged.call(this, prop, newProp.backgroundImage);\n break;\n case 'strokeColor':\n if (newProp.strokeColor !== oldProp.strokeColor) {\n _super.prototype.propertyChanged.call(this, prop, newProp.strokeColor);\n }\n break;\n case 'maxStrokeWidth':\n if (newProp.maxStrokeWidth !== oldProp.maxStrokeWidth) {\n _super.prototype.propertyChanged.call(this, prop, newProp.maxStrokeWidth);\n }\n break;\n case 'minStrokeWidth':\n if (newProp.minStrokeWidth !== oldProp.minStrokeWidth) {\n _super.prototype.propertyChanged.call(this, prop, newProp.minStrokeWidth);\n }\n break;\n case 'velocity':\n if (newProp.velocity !== oldProp.velocity) {\n _super.prototype.propertyChanged.call(this, prop, newProp.velocity);\n }\n break;\n case 'saveWithBackground':\n _super.prototype.propertyChanged.call(this, prop, newProp.saveWithBackground);\n break;\n case 'isReadOnly':\n _super.prototype.propertyChanged.call(this, prop, newProp.isReadOnly);\n break;\n case 'disabled':\n _super.prototype.propertyChanged.call(this, prop, newProp.disabled);\n break;\n }\n }\n };\n __decorate([Property('')], Signature.prototype, \"backgroundColor\", void 0);\n __decorate([Property('')], Signature.prototype, \"backgroundImage\", void 0);\n __decorate([Property(false)], Signature.prototype, \"disabled\", void 0);\n __decorate([Property(false)], Signature.prototype, \"isReadOnly\", void 0);\n __decorate([Property(true)], Signature.prototype, \"saveWithBackground\", void 0);\n __decorate([Property('#000000')], Signature.prototype, \"strokeColor\", void 0);\n __decorate([Property(0.5)], Signature.prototype, \"minStrokeWidth\", void 0);\n __decorate([Property(2)], Signature.prototype, \"maxStrokeWidth\", void 0);\n __decorate([Property(0.7)], Signature.prototype, \"velocity\", void 0);\n __decorate([Property('en-US')], Signature.prototype, \"locale\", void 0);\n __decorate([Property(false)], Signature.prototype, \"enableRtl\", void 0);\n __decorate([Property(false)], Signature.prototype, \"enablePersistence\", void 0);\n __decorate([Event()], Signature.prototype, \"beforeSave\", void 0);\n __decorate([Event()], Signature.prototype, \"change\", void 0);\n __decorate([Event()], Signature.prototype, \"created\", void 0);\n Signature = __decorate([NotifyPropertyChanges], Signature);\n return Signature;\n}(SignatureBase);\nexport { Signature };","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};\nimport { NotifyPropertyChanges, Component, Property, getUniqueID, isNullOrUndefined, addClass, attributes, removeClass, remove, Event, EventHandler } from '@syncfusion/ej2-base';\nvar INPUTFIELD = 'e-otp-input-field';\nvar RTL = 'e-rtl';\n/**\n * Specifies the type of input for the Otp (One-Time Password) input component.\n */\nexport var OtpInputType;\n(function (OtpInputType) {\n /**\n * Specifies the type of input to be number for the Otp input.\n */\n OtpInputType[\"Number\"] = \"number\";\n /**\n * Specifies the type of input to be text for the Otp input.\n */\n OtpInputType[\"Text\"] = \"text\";\n /**\n * Specifies the type of input to be password for the Otp input.\n */\n OtpInputType[\"Password\"] = \"password\";\n})(OtpInputType || (OtpInputType = {}));\n/**\n * Specifies the style variant for the Otp (One-Time Password) input component.\n */\nexport var OtpInputStyle;\n(function (OtpInputStyle) {\n /**\n * Specifies the style of the Otp input to be outlined.\n */\n OtpInputStyle[\"Outlined\"] = \"outlined\";\n /**\n * Specifies the style of the Otp input to be underlined.\n */\n OtpInputStyle[\"Underlined\"] = \"underlined\";\n /**\n * Specifies the style of the Otp input to be filled.\n */\n OtpInputStyle[\"Filled\"] = \"filled\";\n})(OtpInputStyle || (OtpInputStyle = {}));\n/**\n * Enum for the case transformation options for OTP input text.\n *\n * @readonly\n * @enum {string}\n */\nexport var TextTransform;\n(function (TextTransform) {\n /**\n * No case transformation. The input text remains unchanged.\n */\n TextTransform[\"None\"] = \"none\";\n /**\n * Convert the input text to uppercase.\n */\n TextTransform[\"Uppercase\"] = \"uppercase\";\n /**\n * Convert the input text to lowercase.\n */\n TextTransform[\"Lowercase\"] = \"lowercase\";\n})(TextTransform || (TextTransform = {}));\n/**\n * Represents the Otp component that allows the user to enter the otp values.\n * ```html\n * <div id='OTPInput'></div>\n * ```\n * ```typescript\n * <script>\n * var OtpinputObj = new OtpInput();\n * OtpinputObj.appendTo('#OTPInput');\n * </script>\n * ```\n */\nvar OtpInput = /** @class */function (_super) {\n __extends(OtpInput, _super);\n function OtpInput(options, element) {\n var _this = _super.call(this, options, element) || this;\n /* Private variables */\n _this.inputs = [];\n _this.previousValue = '';\n _this.separatorElements = [];\n _this.shouldFireFocus = true;\n _this.shouldFireBlur = true;\n _this.isFocusInCalled = false;\n _this.isFocusOutCalled = false;\n _this.handleWheelEvent = function (e) {\n e.preventDefault();\n };\n return _this;\n }\n OtpInput.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n OtpInput.prototype.render = function () {\n this.initialize();\n };\n OtpInput.prototype.initialize = function () {\n attributes(this.element, {\n 'role': 'group'\n });\n this.renderInputs();\n this.renderSeparator(1, this.inputs.length);\n this.addPlaceHolder();\n this.updateCssClass(this.cssClass);\n this.updateVariantClass();\n this.updateAriaLabel(this.ariaLabels);\n this.setElementAttributes(this.htmlAttributes, this.element);\n if (this.enableRtl) {\n this.element.classList.add(RTL);\n }\n this.previousValue = this.value.toString();\n if (this.autoFocus) {\n this.focusIn();\n }\n };\n OtpInput.prototype.renderInputs = function () {\n this.hiddenInputEle = this.createElement('input', {\n id: 'otpInput_hidden',\n attrs: {\n name: this.element.id,\n type: 'hidden',\n value: this.type === 'number' ? this.value.toString().replace(/\\D/g, '') : this.value.toString(),\n autoComplete: 'off'\n }\n });\n this.element.appendChild(this.hiddenInputEle);\n for (var i = 0; i < this.length; i++) {\n this.createOtpInput(i);\n }\n };\n OtpInput.prototype.createOtpInput = function (index) {\n var valueContainer = this.getDefaultValue();\n var inputValue = '';\n if (valueContainer) {\n var valueAtIndex = valueContainer[parseInt(index.toString(), 10)];\n if (this.type === 'number') {\n if (!isNaN(Number(valueAtIndex))) {\n inputValue = valueAtIndex;\n }\n } else {\n inputValue = valueAtIndex || '';\n }\n }\n var inputEle = this.createElement('input', {\n id: this.element.id + \"-\" + (index + 1),\n className: INPUTFIELD + ' ' + 'e-input',\n attrs: {\n maxlength: '1',\n type: this.type,\n inputmode: this.htmlAttributes['inputmode'] || (this.type === 'number' ? 'numeric' : 'text')\n }\n });\n if (this.disabled) {\n inputEle.setAttribute('disabled', 'disabled');\n }\n this.element.appendChild(inputEle);\n this.inputs.push(inputEle);\n if (inputValue) {\n inputEle.value = inputValue;\n }\n this.wireEvents(inputEle, index);\n };\n OtpInput.prototype.renderSeparator = function (index, length) {\n if (this.separator.length > 0) {\n for (var i = index; i < length; i++) {\n var separatorElement = this.createElement('span', {\n className: 'e-otp-separator'\n });\n separatorElement.textContent = this.separator;\n this.separatorElements.push(separatorElement);\n this.element.insertBefore(separatorElement, this.inputs[parseInt(i.toString(), 10)]);\n }\n }\n };\n OtpInput.prototype.updateSeparatorValue = function () {\n var _this = this;\n if (this.separator === '') {\n this.separatorElements.forEach(function (element) {\n return remove(element);\n });\n this.separatorElements = [];\n } else {\n this.separatorElements.forEach(function (element) {\n element.textContent = _this.separator;\n });\n }\n };\n OtpInput.prototype.addPlaceHolder = function () {\n for (var i = 0; i < this.inputs.length; i++) {\n var placeholderValue = this.placeholder.length <= 1 ? this.placeholder : this.placeholder.charAt(i);\n this.setElementAttributes({\n 'placeholder': placeholderValue\n }, this.inputs[parseInt(i.toString(), 10)]);\n }\n };\n OtpInput.prototype.updateInputType = function (inputType) {\n var inputMode = this.htmlAttributes['inputmode'] || (inputType === 'number' ? 'numeric' : 'text');\n this.inputs.forEach(function (input) {\n input.type = inputType;\n input.setAttribute('inputmode', inputMode);\n });\n };\n OtpInput.prototype.getDefaultValue = function () {\n var extractedValue = typeof this.value === 'number' ? this.value.toString() : this.value;\n if (this.textTransform) {\n extractedValue = this.getTransformedText(extractedValue);\n }\n // To remove the white space if present.\n var value = extractedValue.replace(/\\s/g, '');\n return value.length > 0 ? value.split('') : undefined;\n };\n OtpInput.prototype.getTransformedText = function (transformingText) {\n var transformedText = this.textTransform.toLowerCase() === TextTransform.Lowercase ? transformingText.toLowerCase() : this.textTransform.toLowerCase() === TextTransform.Uppercase ? transformingText.toUpperCase() : transformingText;\n return transformedText;\n };\n OtpInput.prototype.handleInputChange = function (index, event) {\n var currentInputElement = this.inputs[parseInt(index.toString(), 10)];\n if (currentInputElement && index < this.length - 1 && currentInputElement.value.length > 0) {\n var nextInputElement = this.inputs[parseInt(index.toString(), 10) + 1];\n this.shouldFireFocus = this.shouldFireBlur = false;\n nextInputElement.focus();\n if (nextInputElement && nextInputElement.value.length > 0) {\n nextInputElement.select();\n }\n }\n var target = event.target;\n if (target.value.length > 1) {\n target.value = target.value.slice(0, 1);\n }\n if (this.textTransform) {\n target.value = this.getTransformedText(target.value);\n }\n this.triggerInputEvent(index, event);\n this.triggerValuechanged(event, true);\n };\n OtpInput.prototype.handleKeyAction = function (index, event) {\n if (event.key.length > 1 && !(index === 0 && event.key === 'Backspace' || index === this.length - 1 && event.key === 'Delete')) {\n this.shouldFireFocus = this.shouldFireBlur = false;\n }\n var currentInputElement = this.inputs[parseInt(index.toString(), 10)];\n var previousInputElement = this.inputs[parseInt(index.toString(), 10) - 1];\n var nextInputElement = this.inputs[parseInt(index.toString(), 10) + 1];\n if (event.key === 'Delete') {\n var value = '';\n if (currentInputElement.value.length > 0) {\n value = currentInputElement.value;\n currentInputElement.value = '';\n } else if (index !== this.inputs.length - 1) {\n value = nextInputElement.value;\n nextInputElement.value = '';\n nextInputElement.focus();\n }\n if (value.length > 0) {\n this.triggerInputEvent(index, event);\n }\n } else if (event.key === 'Backspace') {\n if (index !== 0 && currentInputElement.value.length === 0) {\n var previousValue = previousInputElement.value;\n previousInputElement.value = '';\n previousInputElement.focus();\n if (previousValue.length > 0) {\n this.triggerInputEvent(index, event);\n }\n }\n } else if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {\n if (event.key === 'ArrowLeft' && index > 0) {\n previousInputElement.focus();\n previousInputElement.select();\n } else if (event.key === 'ArrowRight' && index < this.inputs.length - 1) {\n nextInputElement.focus();\n nextInputElement.select();\n }\n event.preventDefault();\n } else if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n event.preventDefault();\n } else if (event.key !== 'Tab' && !event.shiftKey && !event.ctrlKey) {\n if (this.type === 'number' && /\\D/.test(event.key.toLocaleLowerCase())) {\n event.preventDefault();\n }\n }\n };\n OtpInput.prototype.handleSelection = function (index) {\n var currentInputElement = this.inputs[parseInt(index.toString(), 10)];\n if (currentInputElement.value) {\n currentInputElement.select();\n }\n };\n OtpInput.prototype.handleFocus = function (index, event) {\n addClass([this.inputs[parseInt(index.toString(), 10)]], 'e-otp-input-focus');\n if (this.shouldFireFocus) {\n var eventArgs = {\n element: this.element,\n event: event,\n index: index,\n isInteracted: this.isFocusInCalled ? false : true,\n value: this.value\n };\n this.trigger('focus', eventArgs);\n }\n this.shouldFireFocus = true;\n };\n OtpInput.prototype.handleBlur = function (index, event) {\n removeClass([this.inputs[parseInt(index.toString(), 10)]], 'e-otp-input-focus');\n if (this.shouldFireBlur) {\n var eventArgs = {\n element: this.element,\n event: event,\n value: this.value,\n index: index,\n isInteracted: this.isFocusOutCalled ? false : true\n };\n this.trigger('blur', eventArgs);\n }\n this.shouldFireBlur = true;\n };\n OtpInput.prototype.handlePaste = function (index, event) {\n var clipboardData = event.clipboardData;\n if (clipboardData) {\n var pastedText = clipboardData.getData('text');\n var pastedValues = pastedText.split('');\n var pastedValueIndex = 0;\n for (var i = index; i < this.inputs.length; i++) {\n if (pastedValues.length > 0 && pastedValues[parseInt(pastedValueIndex.toString(), 10)]) {\n this.inputs[parseInt(i.toString(), 10)].value = pastedValues[parseInt(pastedValueIndex.toString(), 10)];\n pastedValueIndex++;\n this.updateValueProperty();\n }\n }\n this.focusIn();\n this.triggerValuechanged(event, true);\n }\n };\n OtpInput.prototype.triggerInputEvent = function (index, event) {\n var previousValue = this.value.toString();\n this.updateValueProperty();\n var inputEventArgs = {\n element: this.element,\n event: event,\n previousValue: previousValue,\n value: this.value.toString(),\n index: index\n };\n this.trigger('input', inputEventArgs);\n };\n OtpInput.prototype.triggerValuechanged = function (event, isInteracted) {\n if (this.length === this.value.toString().length) {\n if (this.previousValue !== this.value) {\n var eventArgs = {\n element: this.element,\n event: event,\n isInteracted: isInteracted ? isInteracted : false,\n previousValue: this.previousValue,\n value: this.value\n };\n this.trigger('valueChanged', eventArgs);\n this.previousValue = this.value.toString();\n }\n }\n };\n OtpInput.prototype.wireEvents = function (inputEle, index) {\n EventHandler.add(inputEle, 'focus', this.handleFocus.bind(this, index), this);\n EventHandler.add(inputEle, 'blur', this.handleBlur.bind(this, index), this);\n EventHandler.add(inputEle, 'input', this.handleInputChange.bind(this, index), this);\n EventHandler.add(inputEle, 'keydown', this.handleKeyAction.bind(this, index), this);\n EventHandler.add(inputEle, 'click', this.handleSelection.bind(this, index), this);\n EventHandler.add(inputEle, 'paste', this.handlePaste.bind(this, index), this);\n EventHandler.add(inputEle, 'wheel', this.handleWheelEvent, this);\n };\n OtpInput.prototype.unWireEvents = function () {\n for (var i = 0; i < this.inputs.length; i++) {\n var currentInputElement = this.inputs[parseInt(i.toString(), 10)];\n EventHandler.remove(currentInputElement, 'focus', this.handleFocus.bind(this, i));\n EventHandler.remove(currentInputElement, 'blur', this.handleBlur.bind(this, i));\n EventHandler.remove(currentInputElement, 'input', this.handleInputChange.bind(this, i));\n EventHandler.remove(currentInputElement, 'keydown', this.handleKeyAction.bind(this, i));\n EventHandler.remove(currentInputElement, 'click', this.handleSelection.bind(this, i));\n EventHandler.remove(currentInputElement, 'paste', this.handlePaste.bind(this, i));\n EventHandler.remove(currentInputElement, 'wheel', this.handleWheelEvent);\n }\n };\n OtpInput.prototype.updateValueProperty = function () {\n var value = '';\n this.inputs.forEach(function (input) {\n value += input.value;\n });\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.value = typeof this.value === 'number' ? parseInt(value, 10) : value;\n this.isProtectedOnChange = prevOnChange;\n this.hiddenInputEle.value = this.value.toString();\n };\n OtpInput.prototype.updateInputValue = function (previousValue) {\n var stringifiedValue = this.value.toString();\n if (this.textTransform) {\n stringifiedValue = this.getTransformedText(stringifiedValue);\n }\n var previousStringValue = previousValue.toString();\n for (var i = 0; i < this.inputs.length; i++) {\n if (previousStringValue.charAt(i) !== stringifiedValue.charAt(i)) {\n this.inputs[parseInt(i.toString(), 10)].value = stringifiedValue.charAt(i);\n this.hiddenInputEle.value = stringifiedValue;\n }\n }\n this.focusIn();\n };\n OtpInput.prototype.updateCssClass = function (addCss, removeCss) {\n if (removeCss === void 0) {\n removeCss = '';\n }\n var _a, _b;\n var cssClasses;\n if (removeCss) {\n cssClasses = removeCss.trim().split(' ');\n (_a = this.element.classList).remove.apply(_a, cssClasses);\n }\n if (addCss) {\n cssClasses = addCss.trim().split(' ');\n (_b = this.element.classList).add.apply(_b, cssClasses);\n }\n };\n OtpInput.prototype.updateVariantClass = function () {\n var variantClass = this.stylingMode.toLocaleLowerCase() === 'outlined' ? 'outline' : this.stylingMode.toLocaleLowerCase();\n var validClasses = ['underlined', 'filled', 'outline'];\n if (validClasses.indexOf(variantClass) !== -1) {\n removeClass([this.element], validClasses.map(function (cls) {\n return \"e-\" + cls;\n }));\n addClass([this.element], \"e-\" + variantClass);\n }\n };\n OtpInput.prototype.updateAriaLabel = function (customAriaLabel) {\n this.inputs.forEach(function (input, index) {\n var defaultLabel = \"Enter Otp Character \" + (index + 1);\n var ariaLabel = customAriaLabel && customAriaLabel.length > 0 ? customAriaLabel[parseInt(index.toString(), 10)] || defaultLabel : defaultLabel;\n input.setAttribute('aria-label', ariaLabel);\n });\n };\n OtpInput.prototype.updateDisabledState = function () {\n var _this = this;\n this.inputs.forEach(function (input) {\n if (_this.disabled) {\n input.setAttribute('disabled', 'disabled');\n } else {\n input.removeAttribute('disabled');\n }\n });\n };\n OtpInput.prototype.setElementAttributes = function (htmlAttributes, element) {\n if (!isNullOrUndefined(htmlAttributes)) {\n for (var key in htmlAttributes) {\n if (key === 'class') {\n var elementClass = htmlAttributes['class'].replace(/\\s+/g, ' ').trim();\n if (elementClass) {\n addClass([element], elementClass.split(' '));\n }\n } else if (key === 'inputmode') {\n this.setInputMode(htmlAttributes[\"\" + key]);\n } else if (key === 'name' && this.element.id === element.id) {\n this.hiddenInputEle.setAttribute(key, htmlAttributes[\"\" + key]);\n } else {\n element.setAttribute(key, htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n OtpInput.prototype.setInputMode = function (inputModeValue) {\n for (var i = 0; i < this.inputs.length; i++) {\n this.inputs[parseInt(i.toString(), 10)].setAttribute('inputmode', inputModeValue);\n }\n };\n OtpInput.prototype.handleLengthChange = function (currentValue, previousValue) {\n var isLengthAdded = currentValue - previousValue > 0;\n if (isLengthAdded) {\n for (var i = previousValue; i < currentValue; i++) {\n this.createOtpInput(i);\n }\n this.renderSeparator(previousValue, currentValue);\n this.addPlaceHolder();\n this.updateAriaLabel(this.ariaLabels);\n } else {\n if (currentValue >= 0 && this.inputs.length > 0) {\n for (var i = currentValue; i < this.inputs.length; i++) {\n remove(this.inputs[parseInt(i.toString(), 10)]);\n }\n this.inputs.splice(currentValue);\n if (this.separatorElements.length > 0) {\n // separator should be completely removed when length is 0 or 1;\n var index = currentValue === 0 ? 0 : currentValue - 1;\n for (var i = index; i < this.separatorElements.length; i++) {\n remove(this.separatorElements[parseInt(i.toString(), 10)]);\n }\n this.separatorElements.splice(index);\n }\n }\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n OtpInput.prototype.getModuleName = function () {\n return 'otpinput';\n };\n /**\n * To get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n OtpInput.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Destroy the Otp input.\n *\n * @returns {void}\n */\n OtpInput.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.unWireEvents();\n this.inputs.forEach(function (input) {\n remove(input);\n });\n this.separatorElements.forEach(function (separatorElement) {\n remove(separatorElement);\n });\n remove(this.hiddenInputEle);\n removeClass([this.element], ['e-underlined', 'e-filled', 'e-outline', 'e-rtl']);\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.trim().split(' '));\n }\n this.element.removeAttribute('role');\n this.inputs = [];\n this.separatorElements = [];\n this.hiddenInputEle = null;\n };\n /**\n * Sets the focus to the Otp input for interaction.\n *\n * @returns {void}\n */\n OtpInput.prototype.focusIn = function () {\n this.isFocusInCalled = true;\n var focusIndex = this.inputs.length - 1;\n for (var index = 0; index < this.inputs.length; index++) {\n if (!(this.inputs[parseInt(index.toString(), 10)].value.length > 0)) {\n focusIndex = index;\n break;\n }\n }\n this.inputs[parseInt(focusIndex.toString(), 10)].focus();\n this.isFocusInCalled = false;\n };\n /**\n * Remove the focus from Otp input, if it is in focus state.\n *\n * @returns {void}\n */\n OtpInput.prototype.focusOut = function () {\n this.isFocusOutCalled = true;\n this.inputs.forEach(function (input) {\n input.blur();\n });\n this.isFocusOutCalled = false;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {OtpInputModel} newProp - Specifies new properties\n * @param {OtpInputModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n OtpInput.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'textTransform':\n this.updateInputValue(this.value);\n break;\n case 'value':\n this.updateInputValue(oldProp.value);\n this.triggerValuechanged();\n break;\n case 'placeholder':\n this.addPlaceHolder();\n break;\n case 'disabled':\n this.updateDisabledState();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'separator':\n if (oldProp.separator === '') {\n this.renderSeparator(1, this.inputs.length);\n } else {\n this.updateSeparatorValue();\n }\n break;\n case 'htmlAttributes':\n this.setElementAttributes(newProp.htmlAttributes, this.element);\n break;\n case 'type':\n this.updateInputType(newProp.type);\n break;\n case 'stylingMode':\n this.updateVariantClass();\n break;\n case 'ariaLabels':\n this.updateAriaLabel(newProp.ariaLabels);\n break;\n case 'length':\n this.handleLengthChange(newProp.length, oldProp.length);\n break;\n case 'enableRtl':\n this.element.classList[this.enableRtl ? 'add' : 'remove'](RTL);\n break;\n case 'autoFocus':\n if (this.autoFocus) {\n this.focusIn();\n }\n break;\n }\n }\n };\n __decorate([Property(4)], OtpInput.prototype, \"length\", void 0);\n __decorate([Property('')], OtpInput.prototype, \"value\", void 0);\n __decorate([Property(OtpInputType.Number)], OtpInput.prototype, \"type\", void 0);\n __decorate([Property('')], OtpInput.prototype, \"separator\", void 0);\n __decorate([Property('')], OtpInput.prototype, \"placeholder\", void 0);\n __decorate([Property(OtpInputStyle.Outlined)], OtpInput.prototype, \"stylingMode\", void 0);\n __decorate([Property(false)], OtpInput.prototype, \"disabled\", void 0);\n __decorate([Property('')], OtpInput.prototype, \"cssClass\", void 0);\n __decorate([Property(false)], OtpInput.prototype, \"autoFocus\", void 0);\n __decorate([Property(TextTransform.None)], OtpInput.prototype, \"textTransform\", void 0);\n __decorate([Property({})], OtpInput.prototype, \"htmlAttributes\", void 0);\n __decorate([Property([])], OtpInput.prototype, \"ariaLabels\", void 0);\n __decorate([Event()], OtpInput.prototype, \"created\", void 0);\n __decorate([Event()], OtpInput.prototype, \"valueChanged\", void 0);\n __decorate([Event()], OtpInput.prototype, \"focus\", void 0);\n __decorate([Event()], OtpInput.prototype, \"blur\", void 0);\n __decorate([Event()], OtpInput.prototype, \"input\", void 0);\n OtpInput = __decorate([NotifyPropertyChanges], OtpInput);\n return OtpInput;\n}(Component);\nexport { OtpInput };","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};\nimport { NotifyPropertyChanges, Component, getUniqueID, Property, isNullOrUndefined as isNOU, Event, EventHandler, ChildProperty, Complex, removeClass, addClass, L10n } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Tooltip } from '@syncfusion/ej2-popups';\n/**\n * Configuration settings for the toggle button used in the SpeechToText component.\n */\nvar ButtonSettings = /** @class */function (_super) {\n __extends(ButtonSettings, _super);\n function ButtonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('')], ButtonSettings.prototype, \"content\", void 0);\n __decorate([Property('')], ButtonSettings.prototype, \"stopContent\", void 0);\n __decorate([Property('')], ButtonSettings.prototype, \"iconCss\", void 0);\n __decorate([Property('')], ButtonSettings.prototype, \"stopIconCss\", void 0);\n __decorate([Property('Left')], ButtonSettings.prototype, \"iconPosition\", void 0);\n __decorate([Property(false)], ButtonSettings.prototype, \"isPrimary\", void 0);\n return ButtonSettings;\n}(ChildProperty);\nexport { ButtonSettings };\n/**\n * Configuration settings for tooltips in the SpeechToText component.\n * This allows customization of the tooltip content and its positioning.\n */\nvar TooltipSettings = /** @class */function (_super) {\n __extends(TooltipSettings, _super);\n function TooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('Start listening')], TooltipSettings.prototype, \"content\", void 0);\n __decorate([Property('Stop listening')], TooltipSettings.prototype, \"stopContent\", void 0);\n __decorate([Property('TopCenter')], TooltipSettings.prototype, \"position\", void 0);\n return TooltipSettings;\n}(ChildProperty);\nexport { TooltipSettings };\n/**\n * Enum representing the operational states of the SpeechToText component.\n */\nexport var SpeechToTextState;\n(function (SpeechToTextState) {\n /**\n * Specifies the state where the SpeechToText component is inactive and not processing spoken input.\n */\n SpeechToTextState[\"Inactive\"] = \"Inactive\";\n /**\n * Specifies the state where the SpeechToText component is actively listening to spoken input.\n */\n SpeechToTextState[\"Listening\"] = \"Listening\";\n /**\n * Specifies the state where the SpeechToText component has stopped processing spoken input.\n */\n SpeechToTextState[\"Stopped\"] = \"Stopped\";\n})(SpeechToTextState || (SpeechToTextState = {}));\n//#endregion\nvar SpeechToText = /** @class */function (_super) {\n __extends(SpeechToText, _super);\n //#endregion\n //#region Inherited methods\n /**\n * Constructor for creating the component\n *\n * @param {SpeechToTextModel} options - Specifies the SpeechToTextModel model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function SpeechToText(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.fullTranscript = '';\n _this.isClicked = false;\n _this.isUserInteracted = false;\n _this.hasStarted = false;\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n SpeechToText.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n SpeechToText.prototype.getDirective = function () {\n return 'EJS-SPEECHTOTEXT';\n };\n /**\n * To get component name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n SpeechToText.prototype.getModuleName = function () {\n return 'speech-to-text';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @private\n * @returns {string} - It returns the persisted data.\n */\n SpeechToText.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n SpeechToText.prototype.render = function () {\n this.renderSpeechToText();\n this.initializeSpeechRecognition();\n if (!isNOU(this.listeningState)) {\n this.handleStateChange();\n }\n this.wireEvents();\n };\n //#endregion\n //#region Private Methods\n SpeechToText.prototype.initializeLocale = function () {\n this.l10n = new L10n(this.getModuleName(), {\n abortedError: 'Speech recognition was aborted.',\n audioCaptureError: 'No microphone detected. Ensure your microphone is connected.',\n defaultError: 'An unknown error occurred.',\n networkError: 'Network error occurred. Check your internet connection.',\n noSpeechError: 'No speech detected. Please speak into the microphone.',\n notAllowedError: 'Microphone access denied. Allow microphone permissions.',\n serviceNotAllowedError: 'Speech recognition service is not allowed in this context.',\n unsupportedBrowserError: 'The browser does not support the SpeechRecognition API.',\n startAriaLabel: 'Press to start speaking and transcribe your words',\n stopAriaLabel: 'Press to stop speaking and end transcription',\n startTooltipText: 'Start listening',\n stopTooltipText: 'Stop listening'\n }, this.locale);\n };\n SpeechToText.prototype.renderSpeechToText = function () {\n this.initializeLocale();\n var iconCss = !isNOU(this.buttonSettings.iconCss) && this.buttonSettings.iconCss !== '' ? this.buttonSettings.iconCss : 'e-icons e-listen-icon';\n this.buttonInst = new Button({\n iconCss: iconCss,\n isPrimary: this.buttonSettings.isPrimary,\n cssClass: this.updateButtonCssClass(),\n disabled: this.disabled,\n content: this.buttonSettings.content,\n iconPosition: this.buttonSettings.iconPosition,\n enableRtl: this.enableRtl\n });\n this.buttonInst.appendTo(this.element);\n this.updateTooltip();\n this.updateCssClass(this.cssClass, '');\n this.updateAriaLabel();\n if (!isNOU(this.htmlAttributes)) {\n this.addHtmlAttributes(this.htmlAttributes);\n }\n };\n SpeechToText.prototype.updateAriaLabel = function () {\n var ariaLabel;\n if (this.htmlAttributes && this.htmlAttributes['aria-label']) {\n ariaLabel = this.htmlAttributes['aria-label'];\n } else {\n ariaLabel = this.micOn ? this.l10n.getConstant('stopAriaLabel') : this.l10n.getConstant('startAriaLabel');\n }\n this.element.setAttribute('aria-label', ariaLabel);\n };\n SpeechToText.prototype.updateCssClass = function (newClass, oldClass) {\n if (oldClass) {\n removeClass([this.element], oldClass.trim().split(' '));\n }\n if (newClass) {\n addClass([this.element], newClass.trim().split(' '));\n }\n };\n SpeechToText.prototype.updateButtonCssClass = function () {\n var content = this.isClicked ? this.buttonSettings.stopContent : this.buttonSettings.content;\n var cssClass;\n if (content === '') {\n cssClass = 'e-round';\n }\n if (this.micOn) {\n cssClass += ' e-listening-state';\n }\n return cssClass;\n };\n SpeechToText.prototype.updateTooltip = function () {\n if (this.showTooltip) {\n if (this.tooltipSettings) {\n if (this.tooltipSettings.content === 'Start listening') {\n this.tooltipSettings.content = this.l10n.getConstant('startTooltipText');\n }\n if (this.tooltipSettings.stopContent === 'Stop listening') {\n this.tooltipSettings.stopContent = this.l10n.getConstant('stopTooltipText');\n }\n }\n this.tooltipInst = new Tooltip({\n content: this.hasStarted ? this.tooltipSettings.stopContent : this.tooltipSettings.content,\n position: this.tooltipSettings.position,\n windowCollision: true,\n cssClass: this.cssClass ? 'e-speech-to-text-tooltip ' + this.cssClass : 'e-speech-to-text-tooltip',\n opensOn: 'Hover',\n enableRtl: this.enableRtl\n });\n this.tooltipInst.appendTo(this.element);\n } else {\n if (!isNOU(this.tooltipInst)) {\n this.tooltipInst.destroy();\n this.tooltipInst = null;\n }\n }\n };\n SpeechToText.prototype.handleStateChange = function () {\n if (this.disabled) {\n return;\n }\n if (this.listeningState === SpeechToTextState.Listening) {\n this.micOn = true;\n this.startSpeechRecognition();\n } else if (this.listeningState === SpeechToTextState.Inactive || this.listeningState === SpeechToTextState.Stopped) {\n if (this.micOn) {\n this.micOn = false;\n this.stopSpeechRecognition();\n } else {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.listeningState = SpeechToTextState.Inactive;\n this.isProtectedOnChange = prevOnChange;\n }\n }\n };\n SpeechToText.prototype.addHtmlAttributes = function (attrs) {\n if (attrs) {\n for (var attr in attrs) {\n if (Object.prototype.hasOwnProperty.call(attrs, attr)) {\n this.element.setAttribute(attr, attrs[attr]);\n }\n }\n }\n };\n SpeechToText.prototype.removeHtmlAttributes = function (attrs) {\n if (attrs) {\n for (var attr in attrs) {\n if (Object.prototype.hasOwnProperty.call(attrs, attr)) {\n this.element.removeAttribute(attr);\n }\n }\n }\n };\n SpeechToText.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.handleButtonClick, this);\n };\n SpeechToText.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'click', this.handleButtonClick);\n };\n SpeechToText.prototype.handleButtonClick = function (event) {\n this.isUserInteracted = true;\n this.micOn = !this.micOn;\n if (this.micOn) {\n this.startSpeechRecognition(event);\n } else {\n this.stopSpeechRecognition(event);\n }\n };\n SpeechToText.prototype.triggerUnSupportedError = function () {\n var eventArgs = {\n error: 'unsupported-browser',\n errorMessage: this.l10n.getConstant('unsupportedBrowserError')\n };\n this.trigger('onError', eventArgs);\n };\n SpeechToText.prototype.initializeSpeechRecognition = function () {\n var _this = this;\n var windowInst = window;\n var SpeechRecognition = windowInst.SpeechRecognition || windowInst.webkitSpeechRecognition;\n if (!SpeechRecognition) {\n this.triggerUnSupportedError();\n return;\n }\n this.recognition = new SpeechRecognition();\n this.recognition.continuous = true;\n this.recognition.lang = this.lang;\n this.recognition.interimResults = this.allowInterimResults;\n this.recognition.onstart = function (event) {\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.transcript = _this.fullTranscript = '';\n _this.isProtectedOnChange = prevOnChange;\n var eventArgs = {\n cancel: false,\n listeningState: SpeechToTextState.Listening,\n event: event,\n isInteracted: _this.isUserInteracted\n };\n _this.trigger('onStart', eventArgs, function () {\n if (!eventArgs.cancel) {\n _this.handleStartRecognition();\n } else {\n _this.recognition.abort();\n _this.micOn = false;\n }\n });\n };\n this.recognition.onend = function (event) {\n if (_this.hasStarted) {\n _this.micOn = false;\n _this.handleStopRecognition(event);\n }\n };\n this.recognition.onerror = function (event) {\n var errorMessage = '';\n switch (event.error) {\n case 'not-allowed':\n errorMessage = _this.l10n.getConstant('notAllowedError');\n break;\n case 'audio-capture':\n errorMessage = _this.l10n.getConstant('audioCaptureError');\n break;\n case 'network':\n errorMessage = _this.l10n.getConstant('networkError');\n break;\n case 'no-speech':\n errorMessage = _this.l10n.getConstant('noSpeechError');\n break;\n case 'aborted':\n errorMessage = _this.l10n.getConstant('abortedError');\n break;\n case 'service-not-allowed':\n errorMessage = _this.l10n.getConstant('serviceNotAllowedError');\n break;\n default:\n errorMessage = _this.l10n.getConstant('defaultError');\n }\n var eventArgs = {\n event: event,\n error: event.error,\n errorMessage: errorMessage\n };\n _this.trigger('onError', eventArgs);\n _this.isUserInteracted = false;\n };\n this.recognition.onresult = function (event) {\n var result = event.results[event.resultIndex];\n var interimTranscript = '';\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n if (result.isFinal) {\n _this.fullTranscript += result[0].transcript;\n _this.transcript = _this.fullTranscript;\n } else {\n interimTranscript += result[0].transcript;\n _this.transcript = _this.fullTranscript + interimTranscript;\n }\n var eventArgs = {\n event: event,\n transcript: _this.transcript,\n isInterimResult: !result.isFinal\n };\n _this.trigger('transcriptChanged', eventArgs, function () {\n if (eventArgs.transcript !== _this.transcript) {\n var prevOnChange_1 = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.transcript = _this.fullTranscript = eventArgs.transcript;\n _this.isProtectedOnChange = prevOnChange_1;\n }\n });\n _this.isProtectedOnChange = prevOnChange;\n };\n };\n SpeechToText.prototype.handleStartRecognition = function () {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.hasStarted = true;\n this.listeningState = SpeechToTextState.Listening;\n if (!isNOU(this.tooltipInst)) {\n this.tooltipInst.content = this.tooltipSettings.stopContent;\n }\n this.updateAriaLabel();\n this.isClicked = true;\n this.buttonInst.cssClass = this.updateButtonCssClass();\n this.buttonInst.content = this.buttonSettings.stopContent;\n var iconCss = !isNOU(this.buttonSettings.stopIconCss) && this.buttonSettings.stopIconCss !== '' ? this.buttonSettings.stopIconCss : 'e-icons e-listen-stop';\n this.buttonInst.iconCss = iconCss;\n this.isProtectedOnChange = prevOnChange;\n };\n SpeechToText.prototype.triggerUnSupportedStart = function (event) {\n var _this = this;\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.transcript = '';\n this.isProtectedOnChange = prevOnChange;\n var eventArgs = {\n cancel: false,\n listeningState: SpeechToTextState.Listening,\n event: event,\n isInteracted: this.isUserInteracted\n };\n this.trigger('onStart', eventArgs, function () {\n if (!eventArgs.cancel) {\n _this.handleStartRecognition();\n }\n });\n };\n SpeechToText.prototype.startSpeechRecognition = function (event) {\n if (this.hasStarted) {\n return;\n }\n if (this.recognition) {\n this.recognition.start();\n } else {\n this.triggerUnSupportedStart(event);\n }\n };\n SpeechToText.prototype.stopSpeechRecognition = function (event) {\n if (this.recognition) {\n this.recognition.stop();\n } else {\n this.handleStopRecognition(event);\n }\n };\n SpeechToText.prototype.handleStopRecognition = function (event) {\n if (!this.hasStarted) {\n return;\n } // Ensure onStop is only processed if needed\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.listeningState = SpeechToTextState.Stopped;\n if (!isNOU(this.tooltipInst)) {\n this.tooltipInst.content = this.tooltipSettings.content;\n }\n this.updateAriaLabel();\n this.isClicked = false;\n this.buttonInst.cssClass = this.updateButtonCssClass();\n this.buttonInst.content = this.buttonSettings.content;\n var eventArgs = {\n listeningState: SpeechToTextState.Stopped,\n event: event,\n isInteracted: this.isUserInteracted\n };\n this.trigger('onStop', eventArgs);\n this.listeningState = SpeechToTextState.Inactive;\n var iconCss = !isNOU(this.buttonSettings.iconCss) && this.buttonSettings.iconCss !== '' ? this.buttonSettings.iconCss : 'e-icons e-listen-icon';\n this.buttonInst.iconCss = iconCss;\n this.hasStarted = false;\n this.isProtectedOnChange = prevOnChange;\n };\n SpeechToText.prototype.buttonSettingsChanges = function (oldModel, newModel) {\n if (oldModel.content !== newModel.content || oldModel.stopContent !== newModel.stopContent) {\n this.buttonInst.content = this.hasStarted ? this.buttonSettings.stopContent : this.buttonSettings.content;\n this.buttonInst.cssClass = this.updateButtonCssClass();\n }\n if (oldModel.iconCss !== newModel.iconCss || oldModel.stopIconCss !== newModel.stopIconCss) {\n var iconCss = !isNOU(this.buttonSettings.iconCss) && this.buttonSettings.iconCss !== '' ? this.buttonSettings.iconCss : 'e-icons e-listen-icon';\n var stopIconCss = !isNOU(this.buttonSettings.stopIconCss) && this.buttonSettings.stopIconCss !== '' ? this.buttonSettings.stopIconCss : 'e-icons e-listen-stop';\n this.buttonInst.iconCss = this.hasStarted ? stopIconCss : iconCss;\n }\n if (oldModel.iconPosition !== newModel.iconPosition) {\n this.buttonInst.iconPosition = this.buttonSettings.iconPosition;\n }\n if (oldModel.isPrimary !== newModel.isPrimary) {\n this.buttonInst.isPrimary = this.buttonSettings.isPrimary;\n }\n };\n SpeechToText.prototype.destroyAndNullify = function (obj) {\n if (obj) {\n obj.destroy();\n obj = null;\n }\n };\n //#endregion\n //#region Public Methods\n /**\n * Destroy the SpeechToText.\n *\n * @returns {void}\n */\n SpeechToText.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.unWireEvents();\n this.destroyAndNullify(this.buttonInst);\n this.destroyAndNullify(this.tooltipInst);\n this.recognition = null;\n this.micOn = null;\n this.htmlAttributes = this.tooltipSettings = this.buttonSettings = null;\n this.element.classList.remove('e-rtl');\n };\n /**\n * Begins the audio capture process by listening to the user's microphone input.\n * This method initiates the speech-to-text process and continuously updates the `transcript` property with interim and final recognition results.\n *\n * @returns {void} No return value.\n */\n SpeechToText.prototype.startListening = function () {\n if (!this.disabled && !this.isClicked) {\n this.isUserInteracted = false;\n this.micOn = true;\n this.startSpeechRecognition();\n }\n };\n /**\n * Stops the audio capture process and finalizes the speech recognition.\n * This method ends the ongoing speech-to-text operation and completes the recognition process, storing the final transcription.\n * It is typically called to stop listening when the user is finished speaking.\n *\n * @returns {void} No return value.\n */\n SpeechToText.prototype.stopListening = function () {\n if (!this.disabled && this.isClicked) {\n this.isUserInteracted = false;\n this.micOn = false;\n this.stopSpeechRecognition();\n }\n };\n /**\n * Called if any of the property value is changed.\n *\n * @param {SpeechToTextModel} newProp - Specifies new properties\n * @param {SpeechToTextModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n SpeechToText.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'lang':\n if (this.recognition) {\n this.recognition.lang = this.lang;\n }\n break;\n case 'allowInterimResults':\n if (this.recognition) {\n this.recognition.interimResults = this.allowInterimResults;\n }\n break;\n case 'buttonSettings':\n this.buttonSettingsChanges(oldProp.buttonSettings, newProp.buttonSettings);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'disabled':\n this.buttonInst.disabled = this.disabled;\n this.handleStateChange();\n break;\n case 'htmlAttributes':\n this.removeHtmlAttributes(oldProp.htmlAttributes);\n this.addHtmlAttributes(newProp.htmlAttributes);\n break;\n case 'listeningState':\n this.handleStateChange();\n break;\n case 'tooltipSettings':\n case 'showTooltip':\n this.updateTooltip();\n break;\n case 'transcript':\n this.transcript = this.fullTranscript = newProp.transcript;\n break;\n case 'enableRtl':\n this.buttonInst.enableRtl = this.tooltipInst.enableRtl = this.enableRtl;\n break;\n case 'locale':\n this.l10n.setLocale(this.locale);\n this.updateAriaLabel();\n this.updateTooltip();\n break;\n }\n }\n };\n __decorate([Property('')], SpeechToText.prototype, \"transcript\", void 0);\n __decorate([Property('')], SpeechToText.prototype, \"lang\", void 0);\n __decorate([Property(true)], SpeechToText.prototype, \"allowInterimResults\", void 0);\n __decorate([Property(true)], SpeechToText.prototype, \"showTooltip\", void 0);\n __decorate([Property('Inactive')], SpeechToText.prototype, \"listeningState\", void 0);\n __decorate([Complex({}, ButtonSettings)], SpeechToText.prototype, \"buttonSettings\", void 0);\n __decorate([Complex({}, TooltipSettings)], SpeechToText.prototype, \"tooltipSettings\", void 0);\n __decorate([Property(false)], SpeechToText.prototype, \"disabled\", void 0);\n __decorate([Property('')], SpeechToText.prototype, \"cssClass\", void 0);\n __decorate([Property({})], SpeechToText.prototype, \"htmlAttributes\", void 0);\n __decorate([Event()], SpeechToText.prototype, \"created\", void 0);\n __decorate([Event()], SpeechToText.prototype, \"onStart\", void 0);\n __decorate([Event()], SpeechToText.prototype, \"onStop\", void 0);\n __decorate([Event()], SpeechToText.prototype, \"onError\", void 0);\n __decorate([Event()], SpeechToText.prototype, \"transcriptChanged\", void 0);\n SpeechToText = __decorate([NotifyPropertyChanges], SpeechToText);\n return SpeechToText;\n}(Component);\nexport { SpeechToText };","exports.__esModule = true;\nexports.Helmet = undefined;\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\nvar _react = require(\"react\");\nvar _react2 = _interopRequireDefault(_react);\nvar _propTypes = require(\"prop-types\");\nvar _propTypes2 = _interopRequireDefault(_propTypes);\nvar _reactSideEffect = require(\"react-side-effect\");\nvar _reactSideEffect2 = _interopRequireDefault(_reactSideEffect);\nvar _reactFastCompare = require(\"react-fast-compare\");\nvar _reactFastCompare2 = _interopRequireDefault(_reactFastCompare);\nvar _HelmetUtils = require(\"./HelmetUtils.js\");\nvar _HelmetConstants = require(\"./HelmetConstants.js\");\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n return target;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n return _temp = _class = function (_React$Component) {\n _inherits(HelmetWrapper, _React$Component);\n function HelmetWrapper() {\n _classCallCheck(this, HelmetWrapper);\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !(0, _reactFastCompare2.default)(this.props, nextProps);\n };\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n switch (child.type) {\n case _HelmetConstants.TAG_NAMES.SCRIPT:\n case _HelmetConstants.TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n case _HelmetConstants.TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n };\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _extends2;\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n return _extends({}, arrayTypeChildren, (_extends2 = {}, _extends2[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _extends2));\n };\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _extends3, _extends4;\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n switch (child.type) {\n case _HelmetConstants.TAG_NAMES.TITLE:\n return _extends({}, newProps, (_extends3 = {}, _extends3[child.type] = nestedChildren, _extends3.titleAttributes = _extends({}, newChildProps), _extends3));\n case _HelmetConstants.TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n case _HelmetConstants.TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n return _extends({}, newProps, (_extends4 = {}, _extends4[child.type] = _extends({}, newChildProps), _extends4));\n };\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _extends5;\n newFlattenedProps = _extends({}, newFlattenedProps, (_extends5 = {}, _extends5[arrayChildName] = arrayTypeChildren[arrayChildName], _extends5));\n });\n return newFlattenedProps;\n };\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!_HelmetConstants.VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return (0, _HelmetUtils.warn)(\"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.\");\n }\n return (0, _HelmetUtils.warn)(\"Only elements types \" + _HelmetConstants.VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n }\n if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n return typeof nestedChild !== \"string\";\n }))) {\n throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``}</\" + child.type + \"> ) Refer to our API for more information.\");\n }\n }\n return true;\n };\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n var arrayTypeChildren = {};\n _react2.default.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = _objectWithoutProperties(_child$props, [\"children\"]);\n var newChildProps = (0, _HelmetUtils.convertReactPropstoHtmlAttributes)(childProps);\n _this2.warnOnInvalidChildren(child, nestedChildren);\n switch (child.type) {\n case _HelmetConstants.TAG_NAMES.LINK:\n case _HelmetConstants.TAG_NAMES.META:\n case _HelmetConstants.TAG_NAMES.NOSCRIPT:\n case _HelmetConstants.TAG_NAMES.SCRIPT:\n case _HelmetConstants.TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = _objectWithoutProperties(_props, [\"children\"]);\n var newProps = _extends({}, props);\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n return _react2.default.createElement(Component, newProps);\n };\n _createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \"<img src='http://mysite.com/js/test.js'\"}]\n * @param {Function} onChangeClientState: \"(newState) => console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n */\n set: function set(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n return HelmetWrapper;\n }(_react2.default.Component), _class.propTypes = {\n base: _propTypes2.default.object,\n bodyAttributes: _propTypes2.default.object,\n children: _propTypes2.default.oneOfType([_propTypes2.default.arrayOf(_propTypes2.default.node), _propTypes2.default.node]),\n defaultTitle: _propTypes2.default.string,\n defer: _propTypes2.default.bool,\n encodeSpecialCharacters: _propTypes2.default.bool,\n htmlAttributes: _propTypes2.default.object,\n link: _propTypes2.default.arrayOf(_propTypes2.default.object),\n meta: _propTypes2.default.arrayOf(_propTypes2.default.object),\n noscript: _propTypes2.default.arrayOf(_propTypes2.default.object),\n onChangeClientState: _propTypes2.default.func,\n script: _propTypes2.default.arrayOf(_propTypes2.default.object),\n style: _propTypes2.default.arrayOf(_propTypes2.default.object),\n title: _propTypes2.default.string,\n titleAttributes: _propTypes2.default.object,\n titleTemplate: _propTypes2.default.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = (0, _HelmetUtils.mapStateOnServer)({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n return mappedState;\n }, _temp;\n};\nvar NullComponent = function NullComponent() {\n return null;\n};\nvar HelmetSideEffects = (0, _reactSideEffect2.default)(_HelmetUtils.reducePropsToState, _HelmetUtils.handleClientStateChange, _HelmetUtils.mapStateOnServer)(NullComponent);\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\nexports.Helmet = HelmetExport;\nexports.default = HelmetExport;","/**\n * IncrementalSearch module file\n */\nvar queryString = '';\nvar prevString = '';\nvar tempQueryString = '';\nvar matches = [];\nvar activeClass = 'e-active';\nvar prevElementId = '';\n/**\n * Search and focus the list item based on key code matches with list text content.\n *\n * @param {number} keyCode - Specifies the key code which pressed on keyboard events.\n * @param {HTMLElement[]} items - Specifies an array of HTMLElement, from which matches find has done.\n * @param {number} selectedIndex - Specifies the selected item in list item, so that search will happen after selected item otherwise it will do from initial.\n * @param {boolean} ignoreCase - Specifies the case consideration when search has done.\n * @param {string} elementId - Specifies the list element ID.\n * @param {boolean} [queryStringUpdated] - Optional parameter.\n * @param {string} [currentValue] - Optional parameter.\n * @param {boolean} [isVirtual] - Optional parameter.\n * @param {boolean} [refresh] - Optional parameter.\n * @returns {Element} Returns list item based on key code matches with list text content.\n */\nexport function incrementalSearch(keyCode, items, selectedIndex, ignoreCase, elementId, queryStringUpdated, currentValue, isVirtual, refresh) {\n if (!queryStringUpdated || queryString === '') {\n if (tempQueryString !== '') {\n queryString = tempQueryString + String.fromCharCode(keyCode);\n tempQueryString = '';\n } else {\n queryString += String.fromCharCode(keyCode);\n }\n } else if (queryString === prevString) {\n tempQueryString = String.fromCharCode(keyCode);\n }\n if (isVirtual) {\n setTimeout(function () {\n tempQueryString = '';\n }, 700);\n setTimeout(function () {\n queryString = '';\n }, 3000);\n } else {\n setTimeout(function () {\n queryString = '';\n }, 1000);\n }\n var index;\n queryString = ignoreCase ? queryString.toLowerCase() : queryString;\n if (prevElementId === elementId && prevString === queryString && !refresh) {\n for (var i = 0; i < matches.length; i++) {\n if (matches[i].classList.contains(activeClass)) {\n index = i;\n break;\n }\n if (currentValue && matches[i].textContent.toLowerCase() === currentValue.toLowerCase()) {\n index = i;\n break;\n }\n }\n index = index + 1;\n if (isVirtual) {\n return matches[index] && matches.length - 1 !== index ? matches[index] : matches[matches.length];\n }\n return matches[index] ? matches[index] : matches[0];\n } else {\n var listItems = items;\n var strLength = queryString.length;\n var text = void 0;\n var item = void 0;\n selectedIndex = selectedIndex ? selectedIndex + 1 : 0;\n var i = selectedIndex;\n matches = [];\n do {\n if (i === listItems.length) {\n i = -1;\n }\n if (i === -1) {\n index = 0;\n } else {\n index = i;\n }\n item = listItems[index];\n text = ignoreCase ? item.innerText.toLowerCase() : item.innerText;\n if (text.substr(0, strLength) === queryString) {\n matches.push(listItems[index]);\n }\n i++;\n } while (i !== selectedIndex);\n prevString = queryString;\n prevElementId = elementId;\n if (isVirtual) {\n var indexUpdated = false;\n for (var i_1 = 0; i_1 < matches.length; i_1++) {\n if (currentValue && matches[i_1].textContent.toLowerCase() === currentValue.toLowerCase()) {\n index = i_1;\n indexUpdated = true;\n break;\n }\n }\n if (currentValue && indexUpdated) {\n index = index + 1;\n }\n return matches[index] ? matches[index] : matches[0];\n }\n return matches[0];\n }\n}\n// eslint-disable-next-line valid-jsdoc\n/**\n * Search the list item based on given input value matches with search type.\n *\n * @param {string} inputVal - Specifies the given input value.\n * @param {HTMLElement[]} items - Specifies the list items.\n * @param {SearchType} searchType - Specifies the filter type.\n * @param {boolean} [ignoreCase=true] - Specifies the case sensitive option for search operation.\n * @param {(string | number | boolean | { [key: string]: Object })[]} [dataSource] - Specifies the data source.\n * @param {{ text: string, value: string }} [fields] - Specifies the fields.\n * @param {string} [type] - Specifies the type.\n * @returns {{ item: Element | null, index: number | null }} Returns the search matched items.\n */\nexport function Search(inputVal, items, searchType, ignoreCase, dataSource, fields, type, ignoreAccent) {\n var listItems = items;\n ignoreCase = ignoreCase !== undefined && ignoreCase !== null ? ignoreCase : true;\n var itemData = {\n item: null,\n index: null\n };\n if (inputVal && inputVal.length) {\n var strLength = inputVal.length;\n var queryStr = ignoreCase ? inputVal.toLocaleLowerCase() : inputVal;\n queryStr = escapeCharRegExp(queryStr);\n var _loop_1 = function (i, itemsData) {\n var item = itemsData[i];\n var filterValue;\n if (items && dataSource) {\n var checkField_1 = item;\n var fieldValue_1 = fields.text.split('.');\n dataSource.filter(function (data) {\n Array.prototype.slice.call(fieldValue_1).forEach(function (value) {\n /* eslint-disable security/detect-object-injection */\n if (type === 'object' && !data.isHeader && checkField_1.textContent.toString().indexOf(data[value]) !== -1 && checkField_1.getAttribute('data-value') === data[fields.value].toString() || type === 'string' && checkField_1.textContent.toString().indexOf(data) !== -1) {\n filterValue = type === 'object' ? data[value] : data;\n }\n });\n });\n }\n var text = dataSource && filterValue ? (ignoreCase ? filterValue.toString().toLocaleLowerCase() : filterValue).replace(/^\\s+|\\s+$/g, '') : (ignoreCase ? item.textContent.toLocaleLowerCase() : item.textContent).replace(/^\\s+|\\s+$/g, '');\n /* eslint-disable security/detect-non-literal-regexp */\n if (ignoreAccent && text && queryStr) {\n text = text.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n queryStr = queryStr.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n }\n if (searchType === 'Equal' && text === queryStr || searchType === 'StartsWith' && text.substr(0, strLength) === queryStr || searchType === 'EndsWith' && text.substr(text.length - queryStr.length) === queryStr || searchType === 'Contains' && new RegExp(queryStr, 'g').test(text)) {\n itemData.item = item;\n itemData.index = i;\n return {\n value: {\n item: item,\n index: i\n }\n };\n }\n };\n for (var i = 0, itemsData = listItems; i < itemsData.length; i++) {\n var state_1 = _loop_1(i, itemsData);\n if (typeof state_1 === \"object\") return state_1.value;\n }\n return itemData;\n /* eslint-enable security/detect-non-literal-regexp */\n }\n return itemData;\n}\n/**\n * @param {string} value - The value to escape.\n * @returns {string} Returns the escaped string.\n */\nexport function escapeCharRegExp(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n/**\n * @param {string} elementId - The ID of the list element.\n * @returns {void}\n */\nexport function resetIncrementalSearchValues(elementId) {\n if (prevElementId === elementId) {\n prevElementId = '';\n prevString = '';\n queryString = '';\n matches = [];\n }\n}","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}"],"sourceRoot":""}