{"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/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","ds","middle","parseInt","left","right","merge","ignoreDiacritics","map","diacritics","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","_this","parse","parseJson","predicateList","concat","getPredicate","sorted","mainPred","childPred","cpre","_a","serverTimezoneOffset","timeZoneHandling","Error","stack","sum","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","jsonText","iterateAndReviveArray","iterateAndReviveJson","jsonReviver","keys_2","ms","exec","offSet","dateParse","toTimeZone","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","dataSource","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","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","item","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","DataManager","persistQuery","isInitialLoad","offline","enablePersistence","id","ignoreOnPersist","timeTillExpiration","cachingPageSize","enableCaching","jsonp","defaultQuery","addEventListener","setPersistData","bind","isDataAvailable","ready","then","getPersistedData","persistedData","persistData","setPersistQuery","persistedQuery","some","keyword","allPredicates","predicateObj","nestedPredicates","nestedPredicate","setDefaultQuery","deffered","Deferred","isCustomDataAdaptor","makeRequest","getDeferedArgs","resolve","nextTick","promise","setImmediate","setTimeout","extendRequest","fnSuccess","fnFail","cache","onSuccess","onFailure","isSelector","reject","process","virtualSelectRecords","fnQueryChild","selector","subDeffer","childArgs","parent","subUrl","childReq","subData","isGraphQLAdaptor","fetchReqOption","virtualRecords","fetch_1","send","catch","Promise","all","pResult","cResult","saveChanges","dofetchRequest","deff_1","fetch_2","successFunc","failureFunc","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","t","s","n","__awaiter","thisArg","_arguments","P","generator","fulfilled","step","next","rejected","__generator","body","f","g","_","label","sent","trys","ops","verb","Symbol","iterator","v","op","TypeError","pop","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","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","isMenu","ul","tagName","ejInst","clonedElement","cloneNode","refEle","nextElementSibling","ejInstance","wrapper","attributes","nodeName","wireEvents","renderComplete","getWrapper","template","enableScrolling","isReact","isAngular","cssClass","hamburgerMode","createHeaderContainer","defaultOption","showItemOnClick","createJsonFromElement","child","setProperties","removeChildElement","createItems","setBlankIconStyle","targetElems","menuHeaderClickHandler","isIos","cmenuHandler","delegateMoverHandler","moverHandler","delegateMouseDownHandler","mouseDownHandler","delegateClickHandler","clickHandler","wireKeyboardEvent","rippleFn","keyConfigs","downarrow","uparrow","enter","leftarrow","rightarrow","escape","home","tab","keyAction","keyBoardHandler","closeMenu","keyHandler","actionName","actionNeeded","removeLIStateByClass","upDownKeyHandler","rightEnterKeyHandler","leftEscKeyHandler","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","isMenuVisible","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","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","clientHeight","Number","xCollision","menuVScroll","cmenuWidth","getMenuWidth","cmenu","isRtl","caretIcon","isVisible","visibility","showIcon","hasField","listBaseOptions","moduleName","itemNavigable","itemCreating","curData","htmlAttributes","isIE","role","tabindex","itemCreated","span","templateID","createList","liTrgt","hdrWrapper","regex","isDifferentElem","isClosed","propName","menuWrapper","cliWrapper","isInstLI","cliWrapperId","setLISelected","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","scrollMenu","nIndex","isCallBack","currentField","enableItems","enable","skipItem","disabled","i_1","showItems","showHideItems","hideItems","ishide","validUl","removeItems","iitems","insertItems","isAfter","menuitem","parentObj","parseFloat","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","extIndex","hdrItem","contents","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","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","hasAttribute","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","touches","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","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","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","onDocumentClick","isClearButtonClick","showOverAllClear","relatedTarget","onFocusOut","isValue","chipWrapper","showOrHideValueTemplate","changeOnBlur","triggerChangeEvent","updateOverFlowView","ensurePlaceHolder","ddtCompareValues","isChipDelete","newValue","stopImmediatePropagation","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","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","checkSelectAll","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","getEventArgs","checkData","selectData","nodeData","itemData","getNode","removeSelectedData","updateClearButton","chipClose","updateDropDownIconState","spinIcon","appendSpan","ensureClearIconPosition","setMultiSelectValue","newValues","selectedValues","selectedValue","every","nodeSelectedData","ddtValue","checkSelection","getChildNodeData","newChildItems","getChildMapperFields","childNodeData","muteOnChange","templateComplier","showChip","textValue","hiddenInputValue","setChipValues","setTagValues","chip","chipContent","CHIP_CLOSE","removeChip","tempArr","setSelectAllWrapper","updateOverflowWrapper","clearCheckAll","selectAllItems","updateTreeSettings","updateValue","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","setOldValue","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","removeFocus","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","stopPropagation","setSearchBoxPosition","backIconElement","footerHeight","headerHeight","clearElement","scrollFocusStatus","updateValueState","tempValues","dispatchEvent","overAllWrapper","focused","activeLiCount","remLi","ulEle_1","virtualUlElement","focusAtFirstListItem","SelectionSettings","ToolbarSettings","ListBox","isValidKey","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","clientY","setScrollDown","scrollElem","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","checkMaxSelection","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","isWordCharacter","String","fromCharCode","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","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","lastWordRange","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","cssText","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","char","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","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","liHeight","getValidLi","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","multiSelectedChip","chipType","chips","setRtl","selectedChips","rippleFunction","chipCreation","chipListArray","attributeArray","fieldsData","getFieldValues","attributesValue","chipArray","elementCreation","avatarIconCss","avatarText","leadingIconCss","enableDelete","chipEnabled","trailingIconCss","leadingIconUrl","trailingIconUrl","chipAvatarElement","chipIconElement","backgroundImage","chipTextElement","templateWrapper","templateContent","chipdeleteElement","chipIconsElement","find","chipData","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","scrollX","outerWidth","outerHeight","elementView","parent_4","reposition","relateToElem","checkFixedParent","parentDisplay","getAnchorPosition","anchorEle","eleRect","anchorRect","anchorPos","fixedElement","tempAnchor","calculateRelativeBasedPosition","callFlip","viewPortRect","horz","vert","relativeElement","fmDialogContainer","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","computedHeight","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","writable","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","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","passive","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","sqrt","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","Infinity","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","manager","getKey","npxManager","convertToChar","validateMsg","validateURL","getInfoFromKey","result_1","invalidPlatform","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","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","tooltipTextElement","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","pow","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","fractionalToInteger","noOfDecimals","tens","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","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","kind","renderSelectedFiles","getAsFile","getSelectedFiles","allFiles","getFilesData","nameElements","selectedElement","formUpload","isFormUpload","getFilesInArray","spinnerTarget","uploadSequential","checkActionComplete","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","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","fileExtension","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","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","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","ariaLabel","updateDisabledState","setInputMode","inputModeValue","handleLengthChange","focusIndex","Outlined","None","_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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U,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,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAA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Y,WAAY,KAAOuuL,EAAOnhL,SAAShO,EAAEY,WAAY,MAI7E,OAAOkI,GAETklL,EAAW+B,MAAQ,cACnB/B,EAAWgC,OAAS,eACpBhC,EAAWI,iBAAmBP,EACvBG,EAzKqB,GA+K1BiC,EAAqB,CACvB,IAAO,MACP,IAAO,MACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,MACP,IAAO,MACP,IAAO,OACP,IAAO,OACP,IAAO,OACP,IAAO,OACP,IAAO,IACP,IAAO,OACP,IAAO,OACP,IAAO,KACP,IAAO,OACP,IAAO,OACP,IAAO,OACP,IAAO,OACP,IAAO,OACP,IAAO,OACP,IAAO,OACP,IAAO,OACP,IAAO,OACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,OACP,IAAO,OACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,KACP,IAAO,MACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,OACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP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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,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,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,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-api.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, setValue, 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 }, 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 data = DataUtil.parse.parseJson(data);\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 var _this = _super.call(this) || this;\n setValue('beforeSend', UrlAdaptor.prototype.beforeSend, _this);\n return _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 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 *
\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   * 
\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|boolean|Predicate|Predicate[]} 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 -1;\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 -1;\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 var lowerCaseNameSpace = nameSpace.charAt(0).toLowerCase() + nameSpace.slice(1);\n var upperCaseNameSpace = nameSpace.charAt(0).toUpperCase() + nameSpace.slice(1);\n if (!isNullOrUndefined(from[nameSpace])) {\n return from[nameSpace];\n } else {\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[]} ds - 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 (ds, field, comparer) {\n if (ds.length <= 1) {\n return ds;\n }\n var middle = parseInt((ds.length / 2).toString(), 10);\n var left = ds.slice(0, middle);\n var right = ds.slice(middle);\n left = this.sort(left, field, comparer);\n right = this.sort(right, field, comparer);\n return this.merge(left, right, field, comparer);\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.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 return val ? typeof val === 'string' ? val.toLowerCase() : val.toString() : val === 0 || val === false ? 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 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 /**\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 };","/* 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.isInitialLoad = true;\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 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.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 (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.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.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) {\n data = DataUtil.parse.parseJson(data);\n }\n var result = _this.adaptor.processResponse(data, _this, query, request.fetchRequest, request);\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 var req = this.extendRequest(url, fnSuccess, fnFail);\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var fetch_1 = new Fetch(req);\n fetch_1.beforeSend = function () {\n _this.beforeSend(fetch_1.fetchRequest, fetch_1);\n };\n req = fetch_1.send();\n req.catch(function (e) {\n return true;\n }); // to handle failure remote requests.\n this.requests.push(fetch_1);\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 DataManager.prototype.beforeSend = function (request, settings) {\n this.adaptor.beforeSend(this, request, settings);\n var headers = this.dataSource.headers;\n var props;\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 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 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 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, '$1');\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 *
\n * \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) {\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 // 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.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 }\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 *
\n * \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 * \n * ```\n * ```typescript\n * \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 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.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 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 };\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.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 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 case ESCAPE:\n this.leftEscKeyHandler(e);\n break;\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 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 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 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 top = Number(this.element.style.top.replace(px, ''));\n left = Number(this.element.style.left.replace(px, ''));\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) {\n offset = this.callFit(ul, false, true, top, left);\n top = offset.top;\n }\n }\n }\n this.toggleVisiblity(ul, false);\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 args.curData.htmlAttributes = {};\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 }\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 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 detach(uls[navIdx.length].children[idx]);\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 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 };\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 }\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)) {\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) {\n ele.querySelector('.' + SELECTED).focus();\n } else {\n this.element.focus();\n }\n }\n } else {\n if (ele) {\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 var currentField = isUniqueId ? item[this.getField('itemId', level)] : item[this.getField('text', level)];\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 {\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 ul.children[idx].classList.add(disabled);\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 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 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 = this.isMenu ? select('.e-menu-parent', uls[navIdx.length]) : uls[navIdx.length];\n ul.insertBefore(li, ul.children[idx]);\n if (i === items.length - 1 && !this.isMenu && ul.style.display === 'block') {\n this.setPosition(null, ul, parseFloat(ul.style.top), parseFloat(ul.style.left));\n ul.style.display = 'block';\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 *
\n * \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 (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 *
\n * \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);\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 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 var items = this.getItems();\n var trgtItemEle = closest(trgt, '.' + CLS_ITEM);\n if (isNOU(trgt) || !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/// \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 *
\n *
    \n * ```\n * ```typescript\n * \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/// \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 * \n * ```\n * ```typescript\n * \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 *
    \n * \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 === Number(this.extIndex(this.itemIndexArray[0]))) {\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 if (this.prevIndex !== this.selectedItem) {\n ele.classList.remove(CLS_ACTIVE);\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].setAttribute('style', 'display:block; 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 }\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 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 _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 _this.hdrEle.style.display = 'none';\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 (false) or show (true). 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 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 * \n * ```\n * ```typescript\n * \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) {\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.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 (!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 attributes(args.nextSlide, {\n 'aria-hidden': 'false'\n });\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 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')) {\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.\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.\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.\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.\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.\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 Button, DropDownButton, Menu and TextBox.\n * Set CssClass property with e-inherit 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///\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 * \n * ```\n * ```typescript\n * \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 * \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 // 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.oldValue = this.value;\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 } 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.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 EventHandler.remove(document, 'mousedown', this.onDocumentClick);\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.oldValue = this.value;\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 this.ensurePlaceHolder();\n }\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.oldValue = this.value;\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.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', '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.setAttribute('style', 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 = 0; i < this.value.length; i++) {\n data = this.treeObj.getTreeData(this.value[i])[0];\n if (isNOU(data)) {\n this.value.splice(this.value.indexOf(this.value[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.oldValue = this.value;\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.oldValue = this.value;\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) {\n return;\n }\n if (!this.isInitialized) {\n this.oldValue = this.value;\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.showCheckBox && _this.showSelectAll) && !_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 if (oldFocussedNode && oldFocussedNode !== focusedElement) {\n oldFocussedNode.setAttribute('tabindex', '-1');\n removeClass([oldFocussedNode], 'e-node-focus');\n }\n }\n if (!isNOU(focusedElement)) {\n if (!_this.allowFiltering) {\n focusedElement.focus();\n }\n addClass([focusedElement], ['e-node-focus']);\n }\n }\n if (_this.treeObj.checkedNodes.length > 0 && !_this.isFilterRestore) {\n var nodes = _this.treeObj.element.querySelectorAll('li');\n var checkedNodes = _this.treeObj.element.querySelectorAll('li[aria-checked=true]');\n if ((checkedNodes.length === nodes.length || _this.checkSelectAll) && _this.checkBoxElement) {\n var wrap = closest(_this.checkBoxElement, '.' + CHECKBOXWRAP);\n _this.changeState(wrap, 'check');\n _this.checkSelectAll = false;\n }\n }\n if (_this.allowFiltering) {\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.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 EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\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 this.isFilterRestore = false;\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.treeObj.dataBind();\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.oldValue = this.value ? this.value.slice() : this.value;\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 = '';\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 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')) {\n this.isReverseUpdate = true;\n this.changeState(wrap, 'uncheck');\n this.isReverseUpdate = false;\n } else if (wrap && args.action === 'check' && checkedNodes.length === this.fields.dataSource.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.oldValue = this.value ? this.value.slice() : this.value;\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 && 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 += '';\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, 'mousedown', this.removeChip, this);\n }\n };\n DropDownTree.prototype.setTagValues = function () {\n if (this.value === null || this.text == null) {\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 };\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 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.oldValue = this.value;\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.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 this.oldValue = oldProp.value;\n this.updateValue(newProp.value);\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, 'mousedown', 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.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/// \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 * \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.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.trim() === '') {\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.trim() !== '') {\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/// \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 * \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 styles: this.getTransformValues()\n });\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 styles: this.GetVirtualTrackHeight()\n });\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/// \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 * \n * ```\n * ```typescript\n * \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.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 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 !== '') {\n filterElem.focus();\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) {\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 if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\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 += '';\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 '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 this.inputElement.setAttribute('contenteditable', 'true');\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.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 var lastWordRange = this.getLastLetter(currentRange);\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 || 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 (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.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 = 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 (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, 0);\n range.setEnd(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 '' + showChar + value + ''.concat(typeof this.suffixText === 'string' ? this.suffixText : '​');\n } else {\n return '' + showChar + value + ''.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 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 {\n this.showPopup();\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(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 * \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 * \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 * \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 * \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 * \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 * \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 * \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\n
    \n { this.dropObj = scope; }} index={this.index} fields={this.dropField} dataSource={this.filterData} created={this.onFilterCreated} change={this.onFilterVersion}/>\n
    \n
    \n
    \n
    {platform}
    \n EditEdit This Document\n Install NuGet\n \n \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 * \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 * \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 * \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 * \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 * \n * \n * \n * \n * \n * \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 * \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 * \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 * \n * \n * \n * \n * \n * \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 * \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 * Smart paste\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 * \n * \n * \n * \n * \n * \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 * \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 * Show 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 * \n * \n * \n * \n * \n * \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 * \n * \n * \n * \n * \n * \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 * Right click / Touch hold to open the ContextMenu
    \n * \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 * \n * \n * \n * \n * \n * \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 * \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 * \n * \n * \n * \n * \n * \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 * \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 * \n * \n * \n * \n * \n * \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 * \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 * \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 * \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 * \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 * \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 * \n * \n * \n * \n * \n * \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 * \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 * \n * \n * \n * \n * \n * \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 * \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 * Editing is restricted\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 * \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 = /
    \\n+(

    (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 = '

    \"Blazor'+ \n '
    ${from}
    '\n +'
    ${subject}
    '\n +'';\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 = `${breadCrumbData[0] === '/' ? '' : ' '} ${bread[0] ? '/ ' + bread[0] : ''}${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: '' });\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: '' });\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 + \". \" + label + \"
    \" + \"    \" + comment + \"

    \"\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 = /

    (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 = `

    ${typeName}: ` + matchContent + '

    ';\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(//g) ? postNode.html.match(//g)[0] : null;\n if (h1){\n var newHeader = h1.replace(/<\\/a>.+<\\/h1>/g,''+headerTag+'');\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 \n
    \n \n {title.replace(/Blazor \\[Preview\\]/, 'Blazor')}\n \n \n \n \n \n
    \n \n \n \n \n
    \n this.leftSideBar = Sidebar}>\n \n
    \n this.search = t} fields={searchFields} dataSource={searchData} placeholder=\"Filter by title\" select={this.searchSelect.bind(this)} >\n
    \n
    \n {/* */}\n {/* */}\n
    \n
    \n
    \n
    \n
    DEMOS
    \n
    SUPPORT
    \n
    \n
    \n
    FORUM
    \n
    DOWNLOAD
    \n
    \n
    \n
    \n {/*
    */}\n {/*
    */}\n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    Search results
    \n
    \n
    \n
    \n { this.dropObj = scope; }} index={this.index} fields={this.dropField} dataSource={this.filterData} change={this.onFilterReleaseNotes} created={this.onFilterCreated}/>\n
    \n { 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)} >\n
    \n
    \n
    \n
    \n \n \n
    Previous
    \n
    \n \n
    Next
    \n
    \n
    \n
    \n {isNotIE ?\n
    \n
    \n
    Is this page helpful?
    \n
    \n
    \n
    No
    \n
    \n
    \n
    \n
    Yes
    \n
    \n
    \n
    \n :
    }\n \n
    \n
    \n \n
    \n this.rightSideBar = Sidebar}>\n \n \n
    \n \n
    \n
    \n
    \n \n \n \n
    \n
    \n {isNotIE ?\n {\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
    \n
    \n\n \n
    \n\n \n
    \n \n \n
    \n \n \n
    \n \n \n
    \n \n \n
    \n \n
    \n\n\n \n\n 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 Privacy policy.' />\n\n
    \n
    \n
    Thank you for your feedback and comments.We will rectify this as soon as possible!
    \n
    \n :
    }\n
    \n
    \n \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 = '';\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: '
    ' }); \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 = '';\n searchResultDiv.innerHTML = '';\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 [''] 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; /* i */\n var CHARSET = 99; /* c */\n var DOCUMENT = 100; /* d */\n var PAGE = 112; /* 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} parent\n * @param {Array} 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 // ::paceholder, l\n // :read-ony, 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 // :\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(\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} parent\n * @param {string} current\n * @param {number} invert\n * @return {Array}\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} 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} selectors\n * @param {Array} 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(...?)|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
    \n \n \n {`${config.siteTitle} | ${this.getLocalTitle()}`}\n \n \n \n \n
    \n {children}\n
    \n
    \n
    \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.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 var dataSource = this.listData;\n var fields = 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.value, item);\n if (!isNullOrUndefined(itemValue) && _this.checkIgnoreCase(getValue(fields.text, item).toString(), text)) {\n value = getValue(fields.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.value, item);\n if (!isNullOrUndefined(itemValue) && !isNullOrUndefined(value) && itemValue.toString() === compareValue_1.toString()) {\n value = getValue(fields.text, item);\n }\n });\n } else {\n dataSource.filter(function (item) {\n if (_this.checkNonIgnoreCase(getValue(fields.text, item), text)) {\n value = getValue(fields.value, item);\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 ? 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 + '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')) {\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 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.setListData(dataSource, fields, query, event);\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 }\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')) {\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 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.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 this.disableListItem(liCollections[index]);\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 liHeight = parseInt(getComputedStyle(this.getValidLi(), null).getPropertyValue('height'), 10);\n var topIndex = Math.round(target.scrollTop / liHeight);\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 * \n * ```\n * ```typescript\n * \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(' '));\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(' '));\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///\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 * \n * \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 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(' '));\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 * \n * \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(' '));\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 * \n * \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.element.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 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(' '));\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 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 if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\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 if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\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 } from '@syncfusion/ej2-base';\nimport { removeClass, rippleEffect, closest } 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};\n/**\n * A chip component is a small block of essential information, mostly used on contacts or filter tags.\n * ```html\n *
    \n * ```\n * ```typescript\n * \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 /**\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: '.e-chip'\n });\n this.renderComplete();\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('.' + 'e-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('.e-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('.e-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 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 }\n }\n };\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([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 ChipList = __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(' '));\n }\n if (newProp.cssClass) {\n addClass(this.overlayEle ? [this.popupEle, this.overlayEle] : [this.popupEle], newProp.cssClass.split(' '));\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///\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 *
    \n * \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 *
    \n * \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 *
    \n * ```\n * ```typescript\n * \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: \"/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/ViUeZwABAgAAAQIAAAECAAABAgBeKSF5XikheV4pIXleKSF5XikheV4pIXleKSF5XikhdyEOCxUxFREzXikheV4pIXleKSF5XikheV4pIXleKSF5XikheU4iG1kCAwQBXikhWl4pIXleKSF5XikheV4pIXleKSF5XikheV4pIXlBHBcxAAECAAABAgAAAQIAAAECAAwFBBgMBQQYDAUEGAwFBBgMBQQYDAUEGAwFBBgMBQQYAwgMBAYDAgoMBQQYDAUEGAwFBBgMBQQYDAUEGAwFBBgMBQQYCgQDEgABAgADDhgSAw4YGAMOGBgDDhgYAw4YGAMOGBgDDhgYAw4YGAIKEAoAAQIAAAECAAABAgAAAQIAfDYr/3w2K/98Niv/fDYr/3w2K/98Niv/fDYr/3w2K/srEw8sQBwWbHw2K/98Niv/fDYr/3w2K/98Niv/fDYr/3w2K/9nLSS7AgMFAh6U970elPf/HpT3/x6U9/8elPf/HpT3/x6U9/8elPf/FWaqZwABAgAAAQIAAAECAAABAgB8Niv/fDYr/3w2K/98Niv/fDYr/3w2K/98Niv/fDYr+ysTDyxAHBZsfDYr/3w2K/98Niv/fDYr/3w2K/98Niv/fDYr/2ctJLsCAwUCHpT3vR6U9/8elPf/HpT3/x6U9/8elPf/HpT3/x6U9/8VZqpnAAECAAABAgAAAQIAAAECAHw2K/98Niv/fDYr/3w2K/98Niv/fDYr/3w2K/98Niv7KxMPLEAcFmx8Niv/fDYr/3w2K/98Niv/fDYr/3w2K/98Niv/Zy0kuwIDBQIelPe9HpT3/x6U9/8elPf/HpT3/x6U9/8elPf/HpT3/xVmqmcAAQIAAAECAAABAgAAAQIAfDYr/3w2K/98Niv/fDYr/3w2K/98Niv/fDYr/3w2K/srEw8sQBwWbHw2K/98Niv/fDYr/3w2K/98Niv/fDYr/3w2K/9nLSS7AgMFAh6U970elPf/HpT3/x6U9/8elPf/HpT3/x6U9/8elPf/FWaqZwABAgAAAQIAAAECAAABAgB8Niv/fDYr/3w2K/98Niv/fDYr/3w2K/98Niv/fDYr+ysTDyxAHBZsfDYr/3w2K/98Niv/fDYr/3w2K/98Niv/fDYr/2ctJLsCAwUCHpT3vR6U9/8elPf/HpT3/x6U9/8elPf/HpT3/x6U9/8VZqpnAAECAAABAgAAAQIAAAECAHw2K/98Niv/fDYr/3w2K/98Niv/fDYr/3w2K/98Niv7KxMPLEAcFmx8Niv/fDYr/3w2K/98Niv/fDYr/3w2K/98Niv/Zy0kuwIDBQIelPe9HpT3/x6U9/8elPf/HpT3/x6U9/8elPf/HpT3/xVmqmcAAQIAAAECAAABAgAAAQIAfDYr/3w2K/98Niv/fDYr/3w2K/98Niv/fDYr/3w2K/srEw8sQBwWbHw2K/98Niv/fDYr/3w2K/98Niv/fDYr/3w2K/9nLSS7AgMFAh6U970elPf/HpT3/x6U9/8elPf/HpT3/x6U9/8elPf/FWaqZwABAgAAAQIAAAECAAABAgB8NivzfDYr83w2K/N8NivzfDYr83w2K/N8NivzfDYr7ysTDypAHBZmfDYr83w2K/N8NivzfDYr83w2K/N8NivzfDYr82ctJLICAwUCHpT3tB6U9/MelPfzHpT38x6U9/MelPfzHpT38x6U9/MVZqpiAAECAAABAgAAAQIAAAECACMPDCQjDwwkIw8MJCMPDCQjDwwkIw8MJCMPDCQjDwwkDAUEBhIIBg8jDwwkIw8MJCMPDCQjDwwkIw8MJCMPDCQjDwwkHQ0KGwABAgAJKkcbCSpHJAkqRyQJKkckCSpHJAkqRyQJKkckCSpHJAYdMQ8AAQIAAAECAAABAgAAAQIARx8ZeUcfGXlHHxl5Rx8ZeUcfGXlHHxl5Rx8ZeUcfGXcYCwgVJRANM0cfGXlHHxl5Rx8ZeUcfGXlHHxl5Rx8ZeUcfGXk7GhRZAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgB8Niv/fDYr/3w2K/98Niv/fDYr/3w2K/98Niv/fDYr+ysTDyxAHBZsfDYr/3w2K/98Niv/fDYr/3w2K/98Niv/fDYr/2ctJLsAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAckPCkVZqttAQcMAwABAgAAAQIAAAECAHw2K/98Niv/fDYr/3w2K/98Niv/fDYr/3w2K/98Niv7KxMPLEAcFmx8Niv/fDYr/3w2K/98Niv/fDYr/3w2K/98Niv/Zy0kuwABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgARVIxCHpT35B6U9/0VaK1pAAECAAABAgAAAQIAfDYr/3w2K/98Niv/fDYr/3w2K/98Niv/fDYr/3w2K/srEw8sQBwWbHw2K/98Niv/fDYr/3w2K/98Niv/fDYr/3w2K/9nLSS7AAECAAABAgAAAQIAAAECAAABAgACAwUCEVGIXx6U9vIelPf/HpT3/x6S8/MNQW1LAAECAAABAgB8Niv/fDYr/3w2K/98Niv/fDYr/3w2K/98Niv/fDYr+ysTDyxAHBZsfDYr/3w2K/98Niv/fDYr/3w2K/98Niv/fDYr/2ctJLsAAQIAAAECAAABAgAAAQIAAwgMBBZttXselPf5HpT3/x6U9/8elPf/HpT3/x6T9ekMPGUqAAECAHw2K/98Niv/fDYr/3w2K/98Niv/fDYr/3w2K/98Niv7KxMPLEAcFmx8Niv/fDYr/3w2K/98Niv/fDYr/3w2K/98Niv/Zy0kuwABAgAAAQIAAAECAAMNFg0af9OkHpT3/h6U9/8elPf/HpT3/x6U9/8elPf/HpT3/x6U99YGHTAcfDYr/3w2K/98Niv/fDYr/3w2K/98Niv/fDYr/3w2K/srEw8sQBwWbHw2K/98Niv/fDYr/3w2K/98Niv/fDYr/3w2K/9nLSS7AAECAAABAgAEER0IG4fhqx6U9/8elPf/HpT3/x6U9/8elPf/HpT3/x6U9/8elPf/HpT3/xqB2Lh8Niv/fDYr/3w2K/98Niv/fDYr/3w2K/98Niv/fDYr+ysTDyxAHBZsfDYr/3w2K/98Niv/fDYr/3w2K/98Niv/fDYr/2ctJLsAAQIAAAECAAIDBAEVaK1eHpT3/R6U9/8elPf/HpT3/x6U9/8elPf/HpT3/x6U9/8elPf/HpT3/mQsI7ZkLCO2ZCwjtmQsI7ZkLCO2ZCwjtmQsI7ZkLCOzIw8MHzQXEk1kLCO2ZCwjtmQsI7ZkLCO2ZCwjtmQsI7ZkLCO2UyQdhQABAgAAAQIAAAECAAIDBAEVabCCHpT3/B6U9/8elPf/HpT3/x6U9/8elPf/HpT3/x6U9/4ZftKrAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAEHCwcagdekHpT3/x6U9/8elPf/HpT3/x6U9/8elPf8GX3RjgQTIAkAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAYeMQ4ciOTCHpT3/x6U9/8elPf/HpT39RJZlW8AAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAYeMRwcieXaHpT3/x6U9+oSV5JNAgMFAgABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAAABAgAAAQIAAAECAA1BbTcdkPHMCzVYNQABAgAAAQIAAAECAAABAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\"","/**\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-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 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 var collide = topCollideCheck(edge.TL.top, edge.BL.top);\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 if (!collideSide.leftSide && collideSide.rightSide && collide.bottomSide) {\n pos.offsetX = 0;\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 *
    \n *
    Popup Content
    \n * ```\n * ```typescript\n * \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 var relateToElement = this.getRelateToElement();\n if (relateToElement.classList.contains('e-filemanager')) {\n this.fmDialogContainer = this.element.getElementsByClassName('e-file-select-wrap')[0];\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.fmDialogContainer) && Browser.isIos) {\n this.fmDialogContainer.style.display = 'block';\n }\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 *
    \n * ```\n * ```typescript\n * \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') {\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 }\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('
    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 *
    Show Tooltip
    \n * ```\n * ```typescript\n * \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 styles: 'width:' + formatUnit(this.width) + ';height:' + formatUnit(this.height) + ';position:absolute;'\n });\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 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 = '';\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 ``\\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 '';\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' + ' ');\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 (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(' ' + reference + '' + div.innerHTML + '' + '');\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 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 * @returns {number} ?\n */\n function getWeekOfYear(date) {\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 - 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 - 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} - 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 *
    \n * \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 };","/* 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.setAttribute('style', properties.styles);\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\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)\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 *
    \n * \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 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);\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 = '28';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats|essentialstudio/i;\n this.errors = {\n noLicense: 'This application was built using a trial version of Syncfusion® Essential Studio®.' + ' To remove the license validation message permanently, a valid license key must be included.',\n trailExpired: 'This application was built using a trial version of Syncfusion® Essential Studio®.' + ' To remove the license validation message permanently, a valid license key must be included.',\n versionMismatched: 'The included Syncfusion® license key is invalid.',\n platformMismatched: 'The included Syncfusion® license key is invalid.',\n invalidKey: 'The included Syncfusion® license key is invalid.'\n };\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 if (res.version.indexOf(this.version) === -1) {\n validateMsg = this.errors.versionMismatched;\n validateMsg = validateMsg.replace('##LicenseVersion', res.version);\n validateMsg = validateMsg.replace('##Requireversion', this.version + '.x');\n } else 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 } 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=Mjg=&utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information';\n var errorDiv = createElement('div', {\n innerHTML: \"\" + validateMsg + ' ' + 'Claim your free account'\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 resultArray.push({\n platform: decryptedStr[0],\n version: decryptedStr[1],\n expiryDate: decryptedStr[2]\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
    \\n
    \\n
    \\n \\n
    \\n
    Claim your FREE account and get a key in less than a minute
    \\n
      \\n
    • Access to a 30-day free trial of any of our products.
    • \\n
    • Access to 24x5 support by developers via the support tickets, forum, feature & feedback page and chat.
    • \\n
    • 200+ ebooks on the latest technologies, industry trends, and research topics.\\n
    • \\n
    • Largest collection of over 7,000 flat and wireframe icons for free with Syncfusion\\u00AE Metro Studio.
    • \\n
    • Free and unlimited access to Syncfusion\\u00AE technical blogs and whitepapers.
    • \\n
    \\n
    Syncfusion is trusted by 29,000+ businesses worldwide
    \\n \\n Claim your FREE account\\n
    have a Syncfusion\\u00AE account? Sign In
    \\n
    \\n
    \";\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 *
    Draggable
    \n * \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 });\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 *
    Droppable
    \n * \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 *
    ;\n * \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.]+ 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, \"'\");\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 + \" \" + _HelmetConstants.HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\";\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 + \"\");\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 (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.} 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.} - 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 (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 () 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 // eslint-disable-next-line no-self-assign\n text = 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 = SanitizeHtmlHelper.sanitize(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 *
    \n *
      \n *
    • Favorite
    • \n *
    • Documents
    • \n *
    • Downloads
    • \n *
    \n *
    \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 *
    \n *
    Item 1
    \n *
    Item 2
    \n *
    Item 3
    \n *
    Item 4
    \n *
    Item 5
    \n *
    \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 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 = pageXOffset ? parseFloat(value.left) - pageXOffset + \"px\" : value.left;\n value.top = pageYOffset ? parseFloat(value.top) - pageYOffset + \"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 = '
    ' + ' ${' + this.listViewInstance.fields.text + '}
    ';\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 = '';\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 * \n * ```\n * ```typescript\n * \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 *
    \n * \n * \n *
    \n * \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 };\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)) && 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 = 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 = 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 = 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 * \n * ```\n * ```typescript\n * \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 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 *
    \n * ```\n * ```typescript\n * \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 Slider.prototype.fractionalToInteger = function (value) {\n value = this.numberOfDecimals(value) === 0 ? Number(value).toFixed(this.noOfDecimals) : value;\n var tens = 1;\n for (var i = 0; i < this.noOfDecimals; i++) {\n tens *= 10;\n }\n value = Number((value * tens).toFixed(0));\n return value;\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.noOfDecimals = this.numberOfDecimals(this.step);\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 = this.fractionalToInteger(this.min);\n var max = this.fractionalToInteger(this.max);\n var steps = this.fractionalToInteger(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 islargeTick = (start - parseFloat(this.min.toString())) % this.ticks.largeStep === 0 ? true : false;\n } else {\n islargeTick = Math.abs(start - parseFloat(this.max.toString())) % this.ticks.largeStep === 0 ? true : false;\n }\n } else {\n var largestep = this.fractionalToInteger(this.ticks.largeStep);\n var startValue = this.fractionalToInteger(start);\n if (orien === 'h') {\n islargeTick = (startValue - min) % largestep === 0 ? true : false;\n } else {\n islargeTick = Math.abs(startValue - parseFloat(max.toString())) % largestep === 0 ? true : false;\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 * \n * ```\n * ```typescript\n * \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 (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 };\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 (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.checkExtension = function (files) {\n var dropFiles = files;\n if (!this.isBlank(this.allowedExtensions)) {\n var allowedExtensions = [];\n var extensions = 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.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 }\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 instanceof Array) {\n uploadFiles = files;\n } else {\n uploadFiles.push(files);\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 * \n * ```\n * ```typescript\n * \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 } else {\n for (var i = 0; i < items.length; i++) {\n item = items[i];\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 = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(item.text) : item.text;\n return this.createElement('a', {\n className: 'e-menu-text e-menu-url',\n innerHTML: tempItem,\n attrs: {\n 'href': item.url\n }\n });\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 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 focusEle.focus();\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/// \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 * \n * ```\n * ```typescript\n * \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 * \n * ```\n * ```typescript\n * \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///\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 * \n * ```\n * ```typescript\n * \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 * \n * ```\n * ```typescript\n * \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, '
    ');\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 = \"\" + this.escapeHtml(textBeforeCaret) + \"\";\n content += '|';\n content += \"\" + this.escapeHtml(textAfterCaret) + \"\";\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 } 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 * \n * ```\n * ```typescript\n * \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 };\n Rating.prototype.render = function () {\n this.initialize();\n this.updateMinValue();\n this.updateTemplateFunction();\n this.triggerChange(null, this.value, false);\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 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) {\n if (isInteracted === void 0) {\n isInteracted = true;\n }\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 this.trigger('valueChanged', eventArgs);\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 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 = '';\n var footer = '';\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 * To get the signature as Base 64.\n *\n * @private\n * @param {SignatureFileType} type - Specifies the type of the image format.\n * @returns {string}.\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 * \n * ```\n * ```typescript\n * \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 *
    \n * ```\n * ```typescript\n * \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 };","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 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 + \">{``} ) 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\": \" 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":""}