{"version":3,"sources":["webpack:///../node_modules/@syncfusion/ej2-navigations/src/treeview/treeview.js"],"names":["extendStatics","__extends","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","ROOT","COLLAPSIBLE","EXPANDABLE","LISTITEM","LISTTEXT","PARENTITEM","ACTIVE","LOAD","PROCESS","ICON","TEXTWRAP","DROPIN","DROPNEXT","FULLROW","SELECTED","DISABLE","CHECK","CHECKBOXWRAP","FOCUS","treeAriaAttr","treeRole","itemRole","listRole","itemText","wrapperRole","FieldsSettings","_super","apply","ActionSettings","NodeAnimationSettings","effect","duration","easing","TreeView","options","element","_this","call","isRefreshed","preventExpand","checkedElement","disableNode","validArr","validNodes","expandChildren","isFieldChange","changeDataSource","hasTemplate","isFirstRender","isNodeDropped","isInteracted","isRightClick","mouseDownStatus","isDropIn","OldCheckedData","isHiddenItem","TreeView_1","getModuleName","preRender","checkActionNodes","parentNodeCheck","dragStartAction","isAnimate","keyConfigs","escape","end","enter","f2","home","moveDown","moveLeft","moveRight","moveUp","ctrlDown","ctrlUp","ctrlEnter","ctrlHome","ctrlEnd","ctrlA","shiftDown","shiftUp","shiftEnter","shiftHome","shiftEnd","csDown","csUp","csEnter","csHome","csEnd","space","shiftSpace","ctrlSpace","listBaseOption","expandCollapse","showIcon","expandIconClass","ariaAttributes","expandIconPosition","itemCreated","e","beforeNodeCreate","enableHtmlSanitizer","itemNavigable","fullRowNavigable","updateListProp","fields","aniObj","treeList","isLoaded","isInitalExpand","index","setTouchClass","DDTTreeData","JSON","parse","stringify","dataSource","selectedNodes","setProperties","checkedNodes","expandedNodes","getPersistData","addOnPersist","render","initialRender","initialize","setDataBinding","setDisabledMode","setExpandOnType","disabled","setRipple","wireEditingEvents","allowEditing","setDragAndDrop","allowDragAndDrop","wireEvents","renderComplete","setAttribute","id","setCssClass","cssClass","setEnableRtl","setFullRow","fullRowSelect","setTextWrap","nodeTemplateFn","templateComplier","nodeTemplate","classList","add","remove","enableRtl","rippleModel","selector","ignore","rippleFn","iconModel","isCenterRipple","rippleIconFn","isEnabled","setMultiSelect","template","document","querySelectorAll","querySelector","innerHTML","trim","push","isOffline","offline","ready","then","pop","treeData","result","isNumberTypeId","getType","setRootData","renderItems","finalize","catch","trigger","error","executeQuery","getQuery","rootData","mapper","value","query","columns","clone","prop","getActualProperties","_i","_a","keys","col","indexOf","select","from","tableName","addSorting","sortOrder","text","parentID","where","parseFloat","dataType","getDataType","groupedData","getGroupedData","rootItems","getChildNodes","undefined","isChildObject","child","isSorted","level","sortedData","getSortedData","ulElement","createList","createElement","appendChild","rootNodes","loadOnDemand","renderChildNodes","parseInt","toString","finalizeNode","parentCheckData","updateCheckedStateFromDS","autoCheck","showCheckBox","updateParentCheckState","resultData","executeLocal","isChecked","resultId","checkDisabledState","hasChildren","childData","childId","mapper_1","checkState","getCheckedNodeDetails","checkIndeterminateState","checkedId","checkedData","fieldId","childItems","updateChildCheckState","enablePersistence","checkNodes","count","parentEle","changeState","childNodes","preElement","childCheckedElement","indeterminate","data","contains","node","nodeId","getAttribute","OldCheckedNodes","_loop_1","j","this_1","findIndex","nodeCheck","checkedParent","checkedChild","subChildItems","len","checkboxEle","touchClass","icon","item","insertBefore","checkValue","curData","addCheck","frame","frameMouseHandler","createFullRow","allowMultiSelection","addActionClass","selected","expanded","focusIn","textEle","dataId","renderNodeTemplate","eventArgs","nodeData","selectable","firstElementChild","rippleSpan","parentElement","action","actionValue","ds","groupBy","cusQuery","group","getDataSource","grpItem","itemObj","items","list","isFromExpandAll","expandChild","updateAttributes","eNodes","filter","updateList","updateCheckedProp","iNodes","k","sNodes","selectNode","cNodes","disableExpandAttr","nodes","concat","ensureIndeterminate","liElement","ensureParentCheckState","ensureChildCheckState","indeterminateNodes","checkDisabledChildren","checkBoxEle","getElementsByClassName","checkedCount","matchedChildNodes","oldChildCount","dataUid_1","rootNodeChecked_1","childNodeChecked_1","forEach","childNode","HTMLElement","parentNodeChecked","parentNode","some","oldNode","getSelectedChildNodeDetails","parentUL","currentParent","dataUid","map","checkedNodeId","childNodePid","pid","childElement","checkBoxes","childCheck","isFilter","checkbox","dataUID","closest","li","childIds","parentCheck","checkedState","currentLoadData","isNodeChecked","splice","ele","doCheckBoxAction","doCheck","updateFieldChecked","reverse","liEle","getElement","setValidCheckedNode","dynamicCheckState","updateField","checkBox","validateCheckNode","currLi","getNodeData","parent_1","updateIndeterminate","check","subChild","updateChildIndeterminate","parent","indeterminateData","getTreeData","subId","childElementCheck","innerChild","wrapper","state","isPrevent","isAdd","nodeCheckAction","getCheckEvent","observedArgs","cancel","ariaState","frameSpan","removeCheck","ensureStateChange","checked","firstUl","firstNode","updateIdAttr","allowTextWrap","updateWrap","renderReactTemplates","hasPid","doExpandAction","isIE","ulEle","liList","calculateWrap","nextElementSibling","style","height","offsetHeight","eUids","expandGivenNodes","eNode","expandAction","afterFinalized","arr","expandCallback","eUid","callback","doSelectionAction","sUids","sNode","selectGivenNodes","clickHandler","event","isDevice","originalEvent","changedTouches","isIos","elementFromPoint","clientX","clientY","preventContextMenu","which","rippleElement","rippleIcons","removeHover","setFocusElement","checkWrapper","checkElement","triggerClickEvent","collapseNode","toggleSelect","nodeCheckedEvent","isCheck","updateOldCheckedData","dataManager","uncheckedItems","childIndex","expandNode","loaded","hideSpinner","start_1","end_1","ul_1","liEle_1","setHeight","activeElement_1","animate","name","animation","expand","timingFunction","begin","overflow","progress","args","display","animateHeight","expandedNode","ul","addExpand","expandArgs","getExpandEvent","collapseAll","colArgs","nodeCollapseAction","start","activeElement","collapse","collapsedNode","removeExpand","toRemove","removeAttribute","visibility","currentHeight","timeStamp","parentLi","eicon","showSpinner","parents","mapper_2","getChildFields","loadChild","setSelectionForChildNodes","ensureCheckNode","disableTreeNodes","renderSubChild","getNodeObject","doDisableAction","getFields","nodeLevel","dataLevel","getChildMapper","obj","parentId","isRoot","getChildGroup","findChildNodes","findNestedChildNodes","tempField","i_1","objlen","tempArray","idField","items_1","nestedChildNodes","cIcons","curLi","multiSelect","ctrlKey","isActive","unselectNode","getSelectEvent","nodeSelectAction","metaKey","removeSelectAll","shiftKey","startNode","startIndex","endIndex","temp","currNode","addSelect","nodeUnselectAction","removeSelect","focusedNode","getFocusedNode","focusOut","selectedLI","selectedLI_1","expandOnType","expandOn","expandHandler","expandCollapseAction","nodeExpandAction","nodeName","liEles","getId","icon_1","keyActionHandler","inpEle","blur","oldText","preventDefault","checkNode","openNode","shiftKeySelect","navigateNode","navigateRootNode","createTextbox","navigateToFocus","isUp","focusNode","pos","getBoundingClientRect","getScrollParent","parentPos","bottom","scrollTop","top","isVisibleInViewport","scrollIntoView","txtWrap","left","window","innerHeight","documentElement","clientHeight","right","innerWidth","clientWidth","scrollHeight","isTowards","nextNode","getNextNode","getPrevNode","checkWrap","nodeCheckingAction","allCheckNode","parentIndex","childMatchesCheckedNodes","getChildItems","filteredChildItems","itemValue","String","childStateChange","currentItem","requiresUpdate","shouldPreventUpdate","htmlAttributes","class","childIsCheck","newCheck","validateCheck","length_1","hierChildId","childId_1","toBeOpened","focusNextNode","setFocus","isBackwards","rootNode","getRootNode","getEndNode","selectedItem","fNode","ariaChecked","lastChild","previousSibling","nextSibling","prevNode","endNode","preNode","focus","focusedElement","onMouseOver","currentLi","setHover","onMouseLeave","hoveredNode","fromDS","getText","pNode","checkboxElement","nodeFields","textContent","tempArr","isStringTemplate","root","slice","destroyTemplate","clearTemplate","reRenderNodes","removeChild","oldClass","newClass","split","editingHandler","oldInpEle","updateOldText","innerEle","className","attrs","getEditEvent","outerHTML","style_1","offsetWidth","isReact","setTimeout","renderTextBox","innerHtml","inputObj","createInput","properties","container","inputEle","setSelectionRange","wireInputEvents","editData","editFields","inputFocusOut","newText","txtEle","destroy","crudOperation","appendNewText","isInput","updateText","triggerEvent","getNode","newData","innerText","sanitize","getChildNodeObject","newList","toBind","initializeDrag","destroyDrag","virtualEle","dragObj","enableTailMode","enableAutoScroll","dragArea","dragTarget","enableTapHold","tapHoldThreshold","helper","sender","dragRoot","dragWrap","dragLi","isSameNode","cloneEle","cloneNode","children","DRAGITEM","nLen","cNode","body","cursor","dragData","dragStart","listItem","getDragEvent","draggedNode","intDestroy","dragCancelAction","drag","cursorAt","targetTouches","dragAction","dragStop","removeVirtualEle","dropTarget","dropRoot","preventTargetExpand","dragParent","draggedParentNode","dropObj","out","default","over","drop","dropAction","getOffsetX","touchList","offsetX","getOffsetY","offsetY","dropWrap","dropLi","isDescendant","templateTarget","appendIndicator","renderVirtualEle","dropIndicator","virEle","liArray","dragInstance","draggable","ej2_instances","droppedElement","appendNode","draggedElement","dropAsChildNode","dropAsSiblingNode","pre","dropUl","dragParentUl","dragParentLi","moveData","updateElement","updateAriaLevel","updateInstance","dropParentUl","expandParent","childLi","dropParentLi","removedData","updateChildField","refId","getDataPos","currPid","removeChildNodes","addChildData","dropIcon","generateIcon","generateUL","collapseIcon","childElementCount","dragIcon","updateChildAriaLevel","sibEle","dragNode","dropData","draggedNodeData","newParent","dragLiParent","targetParent","indexValue","iconCss","iconClass","position","dropTar","parent_2","parent_3","hasAttribute","clonedNode","droppedNode","droppedNodeData","dropIndex","dropLevel","addFullRow","toAdd","rowDiv","addMultiSelect","liEles_1","liEles_2","collapseByLevel","excludeHiddenNodes","currentLevel","getVisibleNodes","collapseAllNodes","expandByLevel","expandAllNodes","eIcons_1","vNodes","removeNode","removeData","updateSelectedNodes","updateExpandedNodes","dm","newId","currId","doGivenAction","toExpand","addGivenNodes","isRemote","dropEle","updateMapper","dropIcon1","createListItemFromJson","offsetParent","refNode","toUpperCase","url","navigateUrl","updated","childObj","nodeType","validID","checkValidId","doEnableAction","strNodes","filterNestedChild","updatePersistProp","removeField","sleNodes","l","slelen","enodes","nodelen","cnodes","m","names","field","getMapperProp","fieldName","touchEditObj","tap","isDoubleTapped","tapCount","wireClickEvent","touchClickObj","wireExpandOnEvent","touchExpandObj","mouseDownHandler","keyboardModule","keyAction","bind","eventName","unWireEvents","matched","el","secondTap","firstTap","width","setCheckedNodes","nodeChecked","uncheckAll","setIndeterminate","checkAll","setChildCheckState","parent_4","a","isParentNodeCheck","updatePosition","isRefreshChild","childValue","updateChildPosition","currID","found","dynamicState","operation","newNode","prevent","crud","matchedArr","changes","addedRecords","deletedRecords","changedRecords","nodesID","fromTable","saveChanges","deleteSuccess","dmFailure","update","editSucess","insert","addSuccess","updatePreviousText","getHierarchicalParentId","parentsID","onPropertyChanged","newProp","oldProp","onLoaded","addNodes","ensureVisible","beginEdit","disableNodes","enableNodes","parentsId","expandAll","behavior","preventAnimation","getAllCheckedNodes","getDisabledNodes","moveNodes","sourceNodes","refreshNode","updatedChildValue","newNodeData","parentData","refreshData","newliEle","newTextEle","newIcon","fullEle","tooltip","attr","removeNodes","updateNode"],"mappings":"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","file":"5532b8ad-api.js","sourcesContent":["var __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __decorate = this && this.__decorate || function (decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, isUndefined, Browser, compile, isNullOrUndefined, SanitizeHtmlHelper, animationMode } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { rippleEffect, Animation, remove } from '@syncfusion/ej2-base';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { getElement } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, matches, detach, select, selectAll, isVisible, append } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { isNullOrUndefined as isNOU, Touch, getValue, setValue, extend, merge, attributes } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { createCheckBox, rippleMouseHandler } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nvar ROOT = 'e-treeview';\nvar CONTROL = 'e-control';\nvar COLLAPSIBLE = 'e-icon-collapsible';\nvar EXPANDABLE = 'e-icon-expandable';\nvar LISTITEM = 'e-list-item';\nvar LISTTEXT = 'e-list-text';\nvar LISTWRAP = 'e-text-wrap';\nvar IELISTWRAP = 'e-ie-wrap';\nvar PARENTITEM = 'e-list-parent';\nvar HOVER = 'e-hover';\nvar ACTIVE = 'e-active';\nvar LOAD = 'e-icons-spinner';\nvar PROCESS = 'e-process';\nvar ICON = 'e-icons';\nvar TEXTWRAP = 'e-text-content';\nvar INPUT = 'e-input';\nvar INPUTGROUP = 'e-input-group';\nvar TREEINPUT = 'e-tree-input';\nvar EDITING = 'e-editing';\nvar RTL = 'e-rtl';\nvar INTERACTION = 'e-interaction';\nvar DRAGITEM = 'e-drag-item';\nvar DROPPABLE = 'e-droppable';\nvar DRAGGING = 'e-dragging';\nvar SIBLING = 'e-sibling';\nvar DROPIN = 'e-drop-in';\nvar DROPNEXT = 'e-drop-next';\nvar DROPOUT = 'e-drop-out';\nvar NODROP = 'e-no-drop';\nvar FULLROWWRAP = 'e-fullrow-wrap';\nvar FULLROW = 'e-fullrow';\nvar SELECTED = 'e-selected';\nvar EXPANDED = 'e-expanded';\nvar NODECOLLAPSED = 'e-node-collapsed';\nvar DISABLE = 'e-disable';\nvar DROPCOUNT = 'e-drop-count';\nvar CHECK = 'e-check';\nvar INDETERMINATE = 'e-stop';\nvar CHECKBOXWRAP = 'e-treeview-checkbox';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECKBOXRIPPLE = 'e-ripple-container';\nvar RIPPLE = 'e-ripple';\nvar RIPPLEELMENT = 'e-ripple-element';\nvar FOCUS = 'e-node-focus';\nvar IMAGE = 'e-list-img';\nvar BIGGER = 'e-bigger';\nvar SMALL = 'e-small';\nvar CHILD = 'e-has-child';\nvar ITEM_ANIMATION_ACTIVE = 'e-animation-active';\nvar DISABLED = 'e-disabled';\nvar PREVENTSELECT = 'e-prevent';\nvar treeAriaAttr = {\n treeRole: 'group',\n itemRole: 'treeitem',\n listRole: 'group',\n itemText: '',\n wrapperRole: ''\n};\n/**\n * Configures the fields to bind to the properties of node in the TreeView component.\n */\nvar FieldsSettings = /** @class */function (_super) {\n __extends(FieldsSettings, _super);\n function FieldsSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('child')], FieldsSettings.prototype, \"child\", void 0);\n __decorate([Property([])], FieldsSettings.prototype, \"dataSource\", void 0);\n __decorate([Property('expanded')], FieldsSettings.prototype, \"expanded\", void 0);\n __decorate([Property('hasChildren')], FieldsSettings.prototype, \"hasChildren\", void 0);\n __decorate([Property('htmlAttributes')], FieldsSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([Property('iconCss')], FieldsSettings.prototype, \"iconCss\", void 0);\n __decorate([Property('id')], FieldsSettings.prototype, \"id\", void 0);\n __decorate([Property('imageUrl')], FieldsSettings.prototype, \"imageUrl\", void 0);\n __decorate([Property('isChecked')], FieldsSettings.prototype, \"isChecked\", void 0);\n __decorate([Property('parentID')], FieldsSettings.prototype, \"parentID\", void 0);\n __decorate([Property(null)], FieldsSettings.prototype, \"query\", void 0);\n __decorate([Property('selectable')], FieldsSettings.prototype, \"selectable\", void 0);\n __decorate([Property('selected')], FieldsSettings.prototype, \"selected\", void 0);\n __decorate([Property(null)], FieldsSettings.prototype, \"tableName\", void 0);\n __decorate([Property('text')], FieldsSettings.prototype, \"text\", void 0);\n __decorate([Property('tooltip')], FieldsSettings.prototype, \"tooltip\", void 0);\n __decorate([Property('navigateUrl')], FieldsSettings.prototype, \"navigateUrl\", void 0);\n return FieldsSettings;\n}(ChildProperty);\nexport { FieldsSettings };\n/**\n * Configures animation settings for the TreeView component.\n */\nvar ActionSettings = /** @class */function (_super) {\n __extends(ActionSettings, _super);\n function ActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Property('SlideDown')], ActionSettings.prototype, \"effect\", void 0);\n __decorate([Property(400)], ActionSettings.prototype, \"duration\", void 0);\n __decorate([Property('linear')], ActionSettings.prototype, \"easing\", void 0);\n return ActionSettings;\n}(ChildProperty);\nexport { ActionSettings };\n/**\n * Configures the animation settings for expanding and collapsing nodes in TreeView.\n */\nvar NodeAnimationSettings = /** @class */function (_super) {\n __extends(NodeAnimationSettings, _super);\n function NodeAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([Complex({\n effect: 'SlideUp',\n duration: 400,\n easing: 'linear'\n }, ActionSettings)], NodeAnimationSettings.prototype, \"collapse\", void 0);\n __decorate([Complex({\n effect: 'SlideDown',\n duration: 400,\n easing: 'linear'\n }, ActionSettings)], NodeAnimationSettings.prototype, \"expand\", void 0);\n return NodeAnimationSettings;\n}(ChildProperty);\nexport { NodeAnimationSettings };\n/**\n * The TreeView component is used to represent hierarchical data in a tree like structure with advanced\n * functions to perform edit, drag and drop, selection with check-box, and more.\n * ```html\n *
\n * ```\n * ```typescript\n * let treeObj: TreeView = new TreeView();\n * treeObj.appendTo('#tree');\n * ```\n */\nvar TreeView = /** @class */function (_super) {\n __extends(TreeView, _super);\n function TreeView(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isRefreshed = false;\n _this.preventExpand = false;\n _this.checkedElement = [];\n _this.disableNode = [];\n _this.validArr = [];\n _this.validNodes = [];\n _this.expandChildren = [];\n _this.isFieldChange = false;\n _this.changeDataSource = false;\n _this.hasTemplate = false;\n _this.isFirstRender = false;\n // Specifies whether the node is dropped or not\n _this.isNodeDropped = false;\n _this.isInteracted = false;\n _this.isRightClick = false;\n _this.mouseDownStatus = false;\n _this.isDropIn = false;\n _this.OldCheckedData = [];\n _this.isHiddenItem = false;\n return _this;\n }\n TreeView_1 = TreeView;\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n TreeView.prototype.getModuleName = function () {\n return 'treeview';\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n TreeView.prototype.preRender = function () {\n var _this = this;\n this.checkActionNodes = [];\n this.parentNodeCheck = [];\n this.dragStartAction = false;\n this.isAnimate = false;\n this.keyConfigs = {\n escape: 'escape',\n end: 'end',\n enter: 'enter',\n f2: 'f2',\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 ctrlA: 'ctrl+A',\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 shiftSpace: 'shift+space',\n ctrlSpace: 'ctrl+space'\n };\n this.listBaseOption = {\n expandCollapse: true,\n showIcon: true,\n expandIconClass: EXPANDABLE,\n ariaAttributes: treeAriaAttr,\n expandIconPosition: 'Left',\n itemCreated: function (e) {\n _this.beforeNodeCreate(e);\n },\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n itemNavigable: this.fullRowNavigable\n };\n this.updateListProp(this.fields);\n this.aniObj = new Animation({});\n this.treeList = [];\n this.isLoaded = false;\n this.isInitalExpand = false;\n this.expandChildren = [];\n this.index = 0;\n this.setTouchClass();\n this.DDTTreeData = JSON.parse(JSON.stringify(this.fields.dataSource));\n if (isNOU(this.selectedNodes)) {\n this.setProperties({\n selectedNodes: []\n }, true);\n }\n if (isNOU(this.checkedNodes)) {\n this.setProperties({\n checkedNodes: []\n }, true);\n }\n if (isNOU(this.expandedNodes)) {\n this.setProperties({\n expandedNodes: []\n }, true);\n } else {\n this.isInitalExpand = true;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - returns the persisted data\n * @hidden\n */\n TreeView.prototype.getPersistData = function () {\n var keyEntity = ['selectedNodes', 'checkedNodes', 'expandedNodes'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n TreeView.prototype.render = function () {\n this.initialRender = true;\n this.initialize();\n this.setDataBinding(false);\n this.setDisabledMode();\n this.setExpandOnType();\n if (!this.disabled) {\n this.setRipple();\n }\n this.wireEditingEvents(this.allowEditing);\n this.setDragAndDrop(this.allowDragAndDrop);\n if (!this.disabled) {\n this.wireEvents();\n }\n this.initialRender = false;\n this.renderComplete();\n };\n TreeView.prototype.initialize = function () {\n this.element.setAttribute('role', 'tree');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n this.setCssClass(null, this.cssClass);\n this.setEnableRtl();\n this.setFullRow(this.fullRowSelect);\n this.setTextWrap();\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n };\n TreeView.prototype.setDisabledMode = function () {\n if (this.disabled) {\n this.element.classList.add(DISABLED);\n this.element.setAttribute('aria-disabled', 'true');\n } else {\n this.element.classList.remove(DISABLED);\n this.element.setAttribute('aria-disabled', 'false');\n }\n };\n TreeView.prototype.setEnableRtl = function () {\n (this.enableRtl ? addClass : removeClass)([this.element], RTL);\n };\n TreeView.prototype.setRipple = function () {\n var tempStr = '.' + FULLROW + ',.' + TEXTWRAP;\n var rippleModel = {\n selector: tempStr,\n ignore: '.' + TEXTWRAP + ' > .' + ICON + ',.' + INPUTGROUP + ',.' + INPUT + ', .' + CHECKBOXWRAP\n };\n this.rippleFn = rippleEffect(this.element, rippleModel);\n var iconModel = {\n selector: '.' + TEXTWRAP + ' > .' + ICON,\n isCenterRipple: true\n };\n this.rippleIconFn = rippleEffect(this.element, iconModel);\n };\n TreeView.prototype.setFullRow = function (isEnabled) {\n (isEnabled ? addClass : removeClass)([this.element], FULLROWWRAP);\n };\n TreeView.prototype.setMultiSelect = function (isEnabled) {\n if (isEnabled) {\n this.element.setAttribute('aria-multiselectable', 'true');\n } else {\n this.element.setAttribute('aria-multiselectable', 'false');\n }\n };\n TreeView.prototype.templateComplier = function (template) {\n if (template) {\n this.hasTemplate = true;\n this.element.classList.add(INTERACTION);\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 this.element.classList.remove(INTERACTION);\n return undefined;\n };\n TreeView.prototype.setDataBinding = function (changeDataSource) {\n var _this = this;\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager) {\n this.isOffline = this.fields.dataSource.dataSource.offline;\n if (this.fields.dataSource.ready) {\n this.fields.dataSource.ready.then(function (e) {\n _this.isOffline = _this.fields.dataSource.dataSource.offline;\n if (_this.fields.dataSource instanceof DataManager && _this.isOffline) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n _this.renderItems(true);\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n }\n }).catch(function (e) {\n _this.trigger('actionFailure', {\n error: e\n });\n });\n } else {\n this.fields.dataSource.executeQuery(this.getQuery(this.fields)).then(function (e) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n if (changeDataSource) {\n _this.changeDataSource = true;\n }\n _this.renderItems(true);\n _this.changeDataSource = false;\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n }).catch(function (e) {\n _this.trigger('actionFailure', {\n error: e\n });\n });\n }\n } else {\n this.treeList.pop();\n if (isNOU(this.fields.dataSource)) {\n this.rootData = this.treeData = [];\n } else {\n this.treeData = JSON.parse(JSON.stringify(this.fields.dataSource));\n this.setRootData();\n }\n this.isNumberTypeId = this.getType();\n this.renderItems(false);\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.getQuery = function (mapper, value) {\n if (value === void 0) {\n value = null;\n }\n var columns = [];\n var query;\n if (!mapper.query) {\n query = new Query();\n var prop = this.getActualProperties(mapper);\n for (var _i = 0, _a = Object.keys(prop); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col !== 'dataSource' && col !== 'tableName' && col !== 'child' && !!mapper[\"\" + col] && col !== 'url' && columns.indexOf(mapper[\"\" + col]) === -1) {\n columns.push(mapper[\"\" + col]);\n }\n }\n query.select(columns);\n if (Object.prototype.hasOwnProperty.call(prop, 'tableName')) {\n query.from(mapper.tableName);\n }\n } else {\n query = mapper.query.clone();\n }\n ListBase.addSorting(this.sortOrder, mapper.text, query);\n if (!isNOU(value) && !isNOU(mapper.parentID)) {\n query.where(mapper.parentID, 'equal', this.isNumberTypeId ? parseFloat(value) : value);\n }\n return query;\n };\n TreeView.prototype.getType = function () {\n return this.treeData[0] ? typeof getValue(this.fields.id, this.treeData[0]) === 'number' ? true : false : false;\n };\n TreeView.prototype.setRootData = function () {\n this.dataType = this.getDataType(this.treeData, this.fields);\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n var rootItems = this.getChildNodes(this.treeData, undefined, true);\n if (isNOU(rootItems)) {\n this.rootData = [];\n } else {\n this.rootData = rootItems;\n }\n } else {\n this.rootData = this.treeData;\n }\n };\n TreeView.prototype.isChildObject = function () {\n if (typeof this.fields.child === 'object') {\n return true;\n } else {\n return false;\n }\n };\n TreeView.prototype.renderItems = function (isSorted) {\n this.listBaseOption.ariaAttributes.level = 1;\n var sortedData = this.getSortedData(this.rootData);\n this.ulElement = ListBase.createList(this.createElement, isSorted ? this.rootData : sortedData, this.listBaseOption);\n this.element.appendChild(this.ulElement);\n var rootNodes = this.ulElement.querySelectorAll('.e-list-item');\n if (this.loadOnDemand === false) {\n var i = 0;\n while (i < rootNodes.length) {\n this.renderChildNodes(rootNodes[parseInt(i.toString(), 10)], true, null, true);\n i++;\n }\n }\n var parentEle = selectAll('.' + PARENTITEM, this.element);\n if (parentEle.length === 1 && rootNodes && rootNodes.length !== 0 || this.loadOnDemand) {\n this.finalizeNode(this.element);\n }\n this.parentNodeCheck = [];\n this.parentCheckData = [];\n this.updateCheckedStateFromDS();\n if (this.autoCheck && this.showCheckBox && !this.isLoaded) {\n this.updateParentCheckState();\n }\n };\n /**\n * Update the checkedNodes from datasource at initial rendering\n *\n * @returns {void}\n */\n TreeView.prototype.updateCheckedStateFromDS = function () {\n this.validNodes = [];\n if (this.treeData && this.showCheckBox) {\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[parseInt(i.toString(), 10)][this.fields.id] ? resultData[parseInt(i.toString(), 10)][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(resultId) === -1 && !this.isLoaded) {\n this.checkDisabledState(resultId, resultData[i]);\n }\n if (resultData[parseInt(i.toString(), 10)][this.fields.hasChildren]) {\n var id = resultData[parseInt(i.toString(), 10)][this.fields.id];\n var childData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.parentID, 'equal', id, false));\n for (var child = 0; child < childData.length; child++) {\n var childId = childData[parseInt(child.toString(), 10)][this.fields.id] ? childData[parseInt(child.toString(), 10)][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) === -1 && this.autoCheck) {\n this.checkDisabledState(childId, childData[child]);\n }\n }\n }\n }\n for (var i = 0; i < this.checkedNodes.length; i++) {\n var mapper_1 = this.fields;\n var checkState = new DataManager(this.treeData).executeLocal(new Query().where(mapper_1.id, 'equal', this.checkedNodes[parseInt(i.toString(), 10)], true));\n if (checkState[0] && this.autoCheck) {\n this.getCheckedNodeDetails(mapper_1, checkState);\n this.checkIndeterminateState(checkState[0]);\n }\n if (checkState.length > 0) {\n var checkedId = checkState[0][this.fields.id] ? checkState[0][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {\n this.validNodes.push(checkedId);\n }\n }\n var checkedData = new DataManager(this.treeData).executeLocal(new Query().where(mapper_1.parentID, 'equal', this.checkedNodes[parseInt(i.toString(), 10)], true));\n for (var index = 0; index < checkedData.length; index++) {\n var checkedId = checkedData[parseInt(index.toString(), 10)][this.fields.id] ? checkedData[parseInt(index.toString(), 10)][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) === -1 && this.autoCheck) {\n this.checkDisabledState(checkedId, checkedData[index]);\n }\n if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {\n this.validNodes.push(checkedId);\n }\n }\n }\n } else if (this.dataType === 2 || this.fields.dataSource instanceof DataManager && this.isOffline) {\n for (var index = 0; index < this.treeData.length; index++) {\n var fieldId = this.treeData[parseInt(index.toString(), 10)][this.fields.id] ? this.treeData[parseInt(index.toString(), 10)][this.fields.id].toString() : '';\n if (this.treeData[parseInt(index.toString(), 10)][this.fields.isChecked] && !this.isLoaded && this.checkedNodes.indexOf(fieldId) === -1) {\n this.checkDisabledState(fieldId, this.treeData[index]);\n }\n if (this.checkedNodes.indexOf(fieldId) > -1 && this.validNodes.indexOf(fieldId) === -1) {\n this.validNodes.push(fieldId);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[parseInt(index.toString(), 10)]);\n if (childItems) {\n this.updateChildCheckState(childItems, this.treeData[parseInt(index.toString(), 10)]);\n }\n }\n this.validNodes = this.enablePersistence ? this.checkedNodes : this.validNodes;\n }\n this.setProperties({\n checkedNodes: this.validNodes\n }, true);\n }\n };\n /**\n * To check whether the list data has sub child and to change the parent check state accordingly\n *\n * @param {FieldsSettingsModel} mapper - The mapper object containing field settings.\n * @param {Object[]} checkNodes - The array of checked nodes.\n * @returns {void}\n * @private\n */\n TreeView.prototype.getCheckedNodeDetails = function (mapper, checkNodes) {\n var id = checkNodes[0][this.fields.parentID] ? checkNodes[0][this.fields.parentID].toString() : null;\n var count = 0;\n var element = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.id] + '\"]');\n var parentEle = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.parentID] + '\"]');\n if (!element && !parentEle) {\n if (this.parentNodeCheck.indexOf(id) === -1) {\n this.parentNodeCheck.push(id);\n }\n var childNodes = this.getChildNodes(this.treeData, id);\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[parseInt(i.toString(), 10)][this.fields.id] ? childNodes[parseInt(i.toString(), 10)][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(id) === -1) {\n this.checkDisabledState(id);\n }\n }\n var preElement = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', id, true));\n this.getCheckedNodeDetails(mapper, preElement);\n } else if (parentEle) {\n var check = select('.' + CHECK, parentEle);\n if (!check) {\n this.changeState(parentEle, 'indeterminate', null, true, true);\n }\n }\n };\n /**\n * Update the checkedNodes and parent state when all the child Nodes are in checkedstate at initial rendering\n *\n * @returns {void}\n * @private\n */\n TreeView.prototype.updateParentCheckState = function () {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n var childCheckedElement;\n var data = this.treeData;\n if (this.element.classList.contains('e-filtering')) {\n data = this.DDTTreeData;\n }\n for (var i = 0; i < indeterminate.length; i++) {\n var node = closest(indeterminate[parseInt(i.toString(), 10)], '.' + LISTITEM);\n var nodeId = node.getAttribute('data-uid').toString();\n var OldCheckedNodes = void 0;\n if (this.element.classList.contains('e-filtering')) {\n OldCheckedNodes = new DataManager(this.OldCheckedData).executeLocal(new Query().where('parentID', 'equal', nodeId, true));\n }\n if (this.dataType === 1) {\n childCheckedElement = new DataManager(data).executeLocal(new Query().where(this.fields.parentID, 'equal', nodeId, true));\n } else {\n childCheckedElement = this.getChildNodes(data, nodeId);\n }\n var count = 0;\n if (childCheckedElement) {\n var _loop_1 = function (j) {\n var childId = childCheckedElement[parseInt(j.toString(), 10)][this_1.fields.id].toString();\n if (this_1.checkedNodes.indexOf(childId) !== -1) {\n count++;\n } else if (this_1.element.classList.contains('e-filtering') && OldCheckedNodes.findIndex(function (e) {\n return e['id'] === childId;\n }) !== -1) {\n count++;\n }\n };\n var this_1 = this;\n for (var j = 0; j < childCheckedElement.length; j++) {\n _loop_1(j);\n }\n if (count === childCheckedElement.length) {\n var nodeCheck = node.getAttribute('data-uid');\n if (this.checkedNodes.indexOf(nodeCheck) === -1) {\n this.checkDisabledState(nodeCheck);\n }\n this.changeState(node, 'check', null, true, true);\n } else if (count === 0 && this.checkedNodes.length === 0) {\n this.changeState(node, 'uncheck', null, true, true);\n }\n }\n }\n };\n /**\n * Change the parent to indeterminate state whenever the child is in checked state which is not rendered in DOM\n *\n * @param {Object} data - The data object to check for indeterminate state.\n * @returns {void}\n * @private\n */\n TreeView.prototype.checkIndeterminateState = function (data) {\n var element;\n if (this.dataType === 1) {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.parentID] + '\"]');\n } else {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.id] + '\"]');\n }\n if (element) {\n var ariaChecked = element.getAttribute('aria-checked');\n if (ariaChecked !== 'true') {\n this.changeState(element, 'indeterminate', null, true, true);\n }\n } else if (this.dataType === 2) {\n if (this.parentNodeCheck.indexOf(data[this.fields.id].toString()) === -1) {\n this.parentNodeCheck.push(data[this.fields.id].toString());\n }\n }\n };\n /**\n * Update the checkedNodes for child and subchild from datasource (hierarchical datasource) at initial rendering\n *\n * @param {Object[]} childItems - The array of child items to update the checked state.\n * @param {Object} treeData - The tree data object containing field values.\n * @returns {void}\n * @private\n */\n TreeView.prototype.updateChildCheckState = function (childItems, treeData) {\n var count = 0;\n var checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[parseInt(index.toString(), 10)][this.fields.id] ? childItems[parseInt(index.toString(), 10)][this.fields.id].toString() : '';\n if (childItems[parseInt(index.toString(), 10)][this.fields.isChecked] && !this.isLoaded && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkDisabledState(checkedChild, childItems[index]);\n }\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1 && this.autoCheck) {\n this.checkDisabledState(checkedChild, childItems[index]);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (this.checkedNodes.indexOf(checkedChild) > -1 && this.validNodes.indexOf(checkedChild) === -1) {\n this.validNodes.push(checkedChild);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[parseInt(index.toString(), 10)]);\n if (subChildItems && subChildItems.length) {\n if (this.parentCheckData.indexOf(treeData) === -1) {\n this.parentCheckData.push(treeData);\n }\n this.updateChildCheckState(subChildItems, childItems[parseInt(index.toString(), 10)]);\n }\n if (count === childItems.length && this.autoCheck && this.checkedNodes.indexOf(checkedParent) === -1) {\n this.checkDisabledState(checkedParent, treeData);\n }\n }\n if (count !== 0 && this.autoCheck) {\n this.checkIndeterminateState(treeData);\n for (var len = 0; len < this.parentCheckData.length; len++) {\n if (treeData !== this.parentCheckData[parseInt(len.toString(), 10)] && this.parentCheckData[parseInt(len.toString(), 10)]) {\n this.checkIndeterminateState(this.parentCheckData[parseInt(len.toString(), 10)]);\n }\n }\n }\n this.parentCheckData = [];\n };\n TreeView.prototype.beforeNodeCreate = function (e) {\n if (this.showCheckBox) {\n var checkboxEle = createCheckBox(this.createElement, true, {\n cssClass: this.touchClass\n });\n checkboxEle.classList.add(CHECKBOXWRAP);\n var icon = select('div.' + EXPANDABLE + ', div.' + COLLAPSIBLE, e.item);\n var id = e.item.getAttribute('data-uid');\n e.item.childNodes[0].insertBefore(checkboxEle, e.item.childNodes[0].childNodes[isNOU(icon) ? 0 : 1]);\n var checkValue = getValue(e.fields.isChecked, e.curData);\n if (this.checkedNodes.indexOf(id) > -1) {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n e.item.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n } else if (!isNOU(checkValue) && checkValue.toString() === 'true') {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n e.item.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n } else {\n e.item.setAttribute('aria-checked', 'false');\n }\n var frame = select('.' + CHECKBOXFRAME, checkboxEle);\n EventHandler.add(frame, 'mousedown', this.frameMouseHandler, this);\n EventHandler.add(frame, 'mouseup', this.frameMouseHandler, this);\n }\n if (this.fullRowSelect) {\n this.createFullRow(e.item);\n }\n if (this.allowMultiSelection && !e.item.classList.contains(SELECTED)) {\n e.item.setAttribute('aria-selected', 'false');\n }\n var fields = e.fields;\n this.addActionClass(e, fields.selected, SELECTED);\n this.addActionClass(e, fields.expanded, EXPANDED);\n e.item.setAttribute('tabindex', '-1');\n EventHandler.add(e.item, 'focus', this.focusIn, this);\n if (!isNOU(this.nodeTemplateFn)) {\n var textEle = e.item.querySelector('.' + LISTTEXT);\n var dataId = e.item.getAttribute('data-uid');\n textEle.innerHTML = '';\n this.renderNodeTemplate(e.curData, textEle, dataId);\n }\n var eventArgs = {\n node: e.item,\n nodeData: e.curData,\n text: e.text\n };\n if (!this.isRefreshed) {\n this.trigger('drawNode', eventArgs);\n if (e.curData[this.fields.selectable] === false && !this.showCheckBox) {\n e.item.classList.add(PREVENTSELECT);\n e.item.firstElementChild.setAttribute('style', 'cursor: not-allowed');\n }\n }\n };\n TreeView.prototype.frameMouseHandler = function (e) {\n var rippleSpan = select('.' + CHECKBOXRIPPLE, e.target.parentElement);\n rippleMouseHandler(e, rippleSpan);\n };\n TreeView.prototype.addActionClass = function (e, action, cssClass) {\n var data = e.curData;\n var actionValue = getValue(action, data);\n if (!isNOU(actionValue) && actionValue.toString() !== 'false') {\n e.item.classList.add(cssClass);\n }\n };\n TreeView.prototype.getDataType = function (ds, mapper) {\n if (this.fields.dataSource instanceof DataManager) {\n for (var i = 0; i < ds.length; i++) {\n if (this.isOffline) {\n if (typeof mapper.child === 'string' && isNOU(getValue(mapper.child, ds[parseInt(i.toString(), 10)])) && !isNOU(getValue(mapper.parentID, ds[parseInt(i.toString(), 10)]))) {\n return 1;\n }\n } else if (typeof mapper.child === 'string' && isNOU(getValue(mapper.child, ds[parseInt(i.toString(), 10)]))) {\n return 1;\n }\n }\n return 2;\n }\n for (var i = 0, len = ds.length; i < len; i++) {\n if (typeof mapper.child === 'string' && (!isNOU(getValue(mapper.child, ds[parseInt(i.toString(), 10)])) || Object.prototype.hasOwnProperty.call(ds[parseInt(i.toString(), 10)], mapper.child))) {\n return 2;\n }\n if (this.isChildObject()) {\n return 2;\n }\n if (!isNOU(getValue(mapper.parentID, ds[parseInt(i.toString(), 10)])) || !isNOU(getValue(mapper.hasChildren, ds[parseInt(i.toString(), 10)]))) {\n return 1;\n }\n }\n return 1;\n };\n TreeView.prototype.getGroupedData = function (dataSource, groupBy) {\n var cusQuery = new Query().group(groupBy);\n var ds = ListBase.getDataSource(dataSource, cusQuery);\n var grpItem = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[parseInt(j.toString(), 10)].items;\n grpItem.push(itemObj);\n }\n return grpItem;\n };\n TreeView.prototype.getSortedData = function (list) {\n if (list && this.sortOrder !== 'None') {\n list = ListBase.getDataSource(list, ListBase.addSorting(this.sortOrder, this.fields.text));\n }\n return list;\n };\n TreeView.prototype.finalizeNode = function (element, isFromExpandAll, expandChild) {\n var _this = this;\n if (!isFromExpandAll) {\n this.updateAttributes(element);\n }\n if (!expandChild) {\n var eNodes = selectAll('.' + EXPANDED, element);\n if (!this.loadOnDemand && this.fields.dataSource instanceof DataManager) {\n this.isInitalExpand = this.treeData.filter(function (e) {\n return e[_this.fields.expanded] === true;\n }).length > 0 ? true : this.isInitalExpand;\n }\n if (!this.isInitalExpand) {\n for (var i = 0; i < eNodes.length; i++) {\n this.renderChildNodes(eNodes[parseInt(i.toString(), 10)]);\n }\n }\n removeClass(eNodes, EXPANDED);\n }\n if (!isFromExpandAll) {\n this.updateList();\n }\n if (this.isLoaded) {\n this.updateCheckedProp();\n }\n };\n TreeView.prototype.updateAttributes = function (element) {\n var iNodes = selectAll('.' + IMAGE, element);\n for (var k = 0; k < iNodes.length; k++) {\n iNodes[parseInt(k.toString(), 10)].setAttribute('alt', IMAGE);\n }\n if (this.isLoaded) {\n var sNodes = selectAll('.' + SELECTED, element);\n for (var i = 0; i < sNodes.length; i++) {\n this.selectNode(sNodes[parseInt(i.toString(), 10)], null);\n break;\n }\n removeClass(sNodes, SELECTED);\n }\n var cNodes = selectAll('.' + LISTITEM + ':not(.' + EXPANDED + ')', element);\n for (var j = 0; j < cNodes.length; j++) {\n var icon = select('div.' + ICON, cNodes[parseInt(j.toString(), 10)]);\n if (icon && icon.classList.contains(EXPANDABLE)) {\n this.disableExpandAttr(cNodes[parseInt(j.toString(), 10)]);\n }\n }\n };\n TreeView.prototype.updateCheckedProp = function () {\n if (this.showCheckBox) {\n var nodes = [].concat([], this.checkedNodes);\n this.setProperties({\n checkedNodes: nodes\n }, true);\n }\n };\n TreeView.prototype.ensureIndeterminate = function () {\n if (this.autoCheck) {\n var liElement = selectAll('li', this.element);\n var ulElement = void 0;\n for (var i = 0; i < liElement.length; i++) {\n if (liElement[parseInt(i.toString(), 10)].classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, liElement[parseInt(i.toString(), 10)]);\n if (ulElement) {\n this.ensureParentCheckState(liElement[parseInt(i.toString(), 10)]);\n } else {\n this.ensureChildCheckState(liElement[parseInt(i.toString(), 10)]);\n }\n }\n }\n } else {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n for (var i = 0; i < indeterminate.length; i++) {\n indeterminate[parseInt(i.toString(), 10)].classList.remove(INDETERMINATE);\n }\n }\n };\n TreeView.prototype.ensureParentCheckState = function (element) {\n if (!isNOU(element)) {\n if (element.classList.contains(ROOT)) {\n return;\n }\n var ulElement = element;\n if (element.classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, element);\n }\n var checkedNodes = selectAll('.' + CHECKBOXWRAP + ' .' + CHECK, ulElement);\n var indeterminateNodes = selectAll('.' + INDETERMINATE, ulElement);\n var nodes = selectAll(this.checkDisabledChildren ? '.' + LISTITEM : '.' + LISTITEM + ':not(.' + DISABLE + ')', ulElement);\n var checkBoxEle = element.getElementsByClassName(CHECKBOXWRAP)[0];\n var count = nodes.length;\n var checkedCount = checkedNodes.length;\n var matchedChildNodes = [];\n var oldChildCount = [];\n var dataUid_1 = element.getAttribute('data-uid');\n var rootNodeChecked_1 = true;\n var childNodeChecked_1 = false;\n nodes.forEach(function (childNode) {\n if (childNode instanceof HTMLElement) {\n var ariaChecked = childNode.getAttribute('aria-checked');\n if (ariaChecked === 'true') {\n childNodeChecked_1 = true;\n } else {\n rootNodeChecked_1 = false;\n }\n }\n });\n var parentNodeChecked = false;\n if (this.element.classList.contains('e-filtering')) {\n var oldCheckedNodes = new DataManager(this.OldCheckedData).executeLocal(new Query().where('parentID', 'equal', dataUid_1, true));\n checkedCount = oldCheckedNodes.length;\n var parentNode = new DataManager(this.OldCheckedData).executeLocal(new Query().where('hasChildren', 'equal', true, true));\n if (parentNode.length > 0 && this.OldCheckedData.some(function (oldNode) {\n return oldNode.id === dataUid_1;\n }) && childNodeChecked_1) {\n checkedCount = parentNode.length;\n parentNodeChecked = true;\n }\n var childItems = [];\n if (this.dataType === 1) {\n childItems = new DataManager(this.DDTTreeData).executeLocal(new Query().where(this.fields.parentID, 'equal', dataUid_1, true));\n } else {\n childItems = this.getChildNodes(this.DDTTreeData, dataUid_1);\n }\n count = childItems.length;\n }\n if (this.autoCheck && this.showCheckBox && !(this.fields.dataSource instanceof DataManager)) {\n var selectedChildNodeDetails = this.getSelectedChildNodeDetails(dataUid_1);\n matchedChildNodes = selectedChildNodeDetails;\n oldChildCount = new DataManager(this.checkActionNodes).executeLocal(new Query().where('parentID', 'equal', dataUid_1, true));\n }\n if (count === 0 && checkedCount === 0) {\n return;\n } else if (count === checkedCount || parentNodeChecked && count > 0 && oldChildCount.length === matchedChildNodes.length && oldChildCount.length !== 0 && matchedChildNodes.length !== 0 && rootNodeChecked_1 && this.autoCheck && this.showCheckBox) {\n this.changeState(checkBoxEle, 'check', null, true, true);\n } else if (checkedCount > 0 && !parentNodeChecked && this.autoCheck && this.showCheckBox) {\n this.changeState(checkBoxEle, 'indeterminate', null, true, true);\n } else if (checkedCount > 0 || indeterminateNodes.length > 0) {\n this.changeState(checkBoxEle, 'indeterminate', null, true, true);\n } else if (checkedCount === 0) {\n this.changeState(checkBoxEle, 'uncheck', null, true, true);\n }\n var parentUL = closest(element, '.' + PARENTITEM);\n if (!isNOU(parentUL)) {\n var currentParent = closest(parentUL, '.' + LISTITEM);\n this.ensureParentCheckState(currentParent);\n }\n }\n };\n TreeView.prototype.getSelectedChildNodeDetails = function (dataUid) {\n var _this = this;\n return this.checkedNodes.map(function (checkedNodeId) {\n return new DataManager(_this.DDTTreeData).executeLocal(new Query().where('id', 'equal', checkedNodeId, true))[0];\n }).filter(function (childNode) {\n if (childNode && typeof childNode === 'object' && 'pid' in childNode) {\n var childNodePid = childNode.pid;\n if (!isNOU(childNodePid)) {\n return childNodePid.toString() === dataUid;\n }\n }\n return false;\n });\n };\n TreeView.prototype.ensureChildCheckState = function (element, e, isFromExpandAll) {\n var _this = this;\n if (!isNOU(element)) {\n var childElement = select('.' + PARENTITEM, element);\n var checkBoxes = void 0;\n if (!isNOU(childElement)) {\n var childCheck = Array.from(childElement.querySelectorAll('li'));\n checkBoxes = selectAll('.' + CHECKBOXWRAP, childElement);\n if (this.isFilter) {\n checkBoxes = Array.from(checkBoxes).filter(function (checkbox) {\n var dataUID = checkbox.closest('li').getAttribute('data-uid');\n return dataUID !== null && _this.checkedNodes.indexOf(dataUID) !== -1;\n });\n childCheck = Array.from(childCheck).filter(function (li) {\n var childIds = li.getAttribute('data-uid');\n return childIds !== null && _this.checkedNodes.indexOf(childIds) !== -1;\n });\n if (checkBoxes.length === 0) {\n checkBoxes = selectAll('.' + CHECKBOXWRAP, childElement);\n childCheck = Array.from(childElement.querySelectorAll('li'));\n }\n }\n var isChecked = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n var parentCheck = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(INDETERMINATE);\n var checkedState = void 0;\n for (var index = 0; index < checkBoxes.length; index++) {\n var childId = childCheck[parseInt(index.toString(), 10)].getAttribute('data-uid');\n if (!isNOU(this.currentLoadData) && !isNOU(getValue(this.fields.isChecked, this.currentLoadData[parseInt(index.toString(), 10)]))) {\n checkedState = getValue(this.fields.isChecked, this.currentLoadData[parseInt(index.toString(), 10)]) ? 'check' : 'uncheck';\n if (this.ele !== -1) {\n checkedState = isChecked ? 'check' : 'uncheck';\n }\n if (checkedState === 'uncheck' && !isUndefined(this.parentNodeCheck) && this.autoCheck && this.parentNodeCheck.indexOf(childId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n checkedState = 'indeterminate';\n }\n } else {\n var isNodeChecked = checkBoxes[parseInt(index.toString(), 10)].getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n if (isChecked) {\n checkedState = 'check';\n } else if (isNodeChecked && !this.isLoaded) {\n checkedState = 'check';\n } else if (this.checkedNodes.indexOf(childId) !== -1 && this.isLoaded && (parentCheck || isChecked)) {\n checkedState = 'check';\n } else if (childCheck[parseInt(index.toString(), 10)].classList.contains(CHILD) && !isUndefined(this.parentNodeCheck) && this.autoCheck && (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n } else if (this.dataType === 1 && !isUndefined(this.parentNodeCheck) && this.autoCheck && (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n } else {\n checkedState = 'uncheck';\n }\n }\n this.changeState(checkBoxes[parseInt(index.toString(), 10)], checkedState, e, true, true);\n }\n }\n if (this.autoCheck && this.isLoaded && !isFromExpandAll) {\n this.updateParentCheckState();\n }\n }\n };\n TreeView.prototype.doCheckBoxAction = function (nodes, doCheck) {\n if (!isNOU(nodes)) {\n nodes.reverse();\n for (var len = nodes.length - 1; len >= 0; len--) {\n var liEle = this.getElement(nodes[parseInt(len.toString(), 10)]);\n if (isNOU(liEle)) {\n var node = nodes[len - nodes.length] ? nodes[len - nodes.length].toString() : nodes[parseInt(len.toString(), 10)] ? nodes[parseInt(len.toString(), 10)].toString() : null;\n if (node !== '' && doCheck && node) {\n this.setValidCheckedNode(node, nodes);\n this.dynamicCheckState(node, doCheck);\n } else if (this.checkedNodes.indexOf(node) !== -1 && node !== '' && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(node), 1);\n var childItems = this.getChildNodes(this.treeData, node);\n if (childItems) {\n for (var i = 0; i < childItems.length; i++) {\n var id = childItems[parseInt(i.toString(), 10)][this.fields.id] ? childItems[parseInt(i.toString(), 10)][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n var ele = this.element.querySelector('[data-uid=\"' + id + '\"]');\n if (ele) {\n this.changeState(ele, 'uncheck', null);\n }\n }\n }\n if (this.parentNodeCheck.indexOf(node) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(node), 1);\n }\n }\n if (node) {\n this.dynamicCheckState(node, doCheck);\n }\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n continue;\n }\n var checkBox = select('.' + PARENTITEM + ' .' + CHECKBOXWRAP, liEle);\n this.validateCheckNode(checkBox, !doCheck, liEle, null);\n }\n } else {\n var checkBoxes = selectAll('.' + CHECKBOXWRAP, this.element);\n if (this.loadOnDemand) {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[parseInt(index.toString(), 10)], doCheck);\n this.changeState(checkBoxes[parseInt(index.toString(), 10)], doCheck ? 'check' : 'uncheck', null, null, null, doCheck);\n }\n } else {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[parseInt(index.toString(), 10)], doCheck);\n this.changeState(checkBoxes[parseInt(index.toString(), 10)], doCheck ? 'check' : 'uncheck');\n }\n }\n }\n if (nodes) {\n for (var j = 0; j < nodes.length - 1; j++) {\n var node = nodes[parseInt(j.toString(), 10)] ? nodes[parseInt(j.toString(), 10)].toString() : '';\n if (!doCheck) {\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n }\n }\n if (this.autoCheck) {\n this.updateParentCheckState();\n }\n };\n TreeView.prototype.updateFieldChecked = function (checkbox, doCheck) {\n var currLi = closest(checkbox, '.' + LISTITEM);\n var id = currLi.getAttribute('data-uid');\n var nodeDetails = this.getNodeData(currLi);\n if (nodeDetails.isChecked === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n };\n /**\n * Changes the parent and child check state while changing the checkedNodes via setmodel\n *\n * @param {string} node - The unique identifier of the node.\n * @param {boolean} doCheck - A boolean value indicating whether to check or uncheck the node.\n * @returns {void}\n * @private\n */\n TreeView.prototype.dynamicCheckState = function (node, doCheck) {\n if (this.dataType === 1) {\n var count = 0;\n var resultId = new DataManager(this.treeData).executeLocal(new Query().where(this.fields.id, 'equal', node, true));\n if (resultId[0]) {\n var id = resultId[0][this.fields.id] ? resultId[0][this.fields.id].toString() : null;\n var parent_1 = resultId[0][this.fields.parentID] ? resultId[0][this.fields.parentID].toString() : null;\n var parentElement = this.element.querySelector('[data-uid=\"' + parent_1 + '\"]');\n var element = this.element.querySelector('[data-uid=\"' + id + '\"]');\n var childNodes = this.getChildNodes(this.treeData, parent_1);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[parseInt(i.toString(), 10)][this.fields.id] ? childNodes[parseInt(i.toString(), 10)][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && id === node && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n } else if (this.checkedNodes.indexOf(node) === -1 && element && id === node && !doCheck) {\n this.changeState(element, 'uncheck', null);\n } else if (this.checkedNodes.indexOf(node) !== -1 && element && id === node && doCheck) {\n this.changeState(element, 'check', null);\n } else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && id === node && this.autoCheck && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n } else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && id === node && this.autoCheck && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n } else if (!element && !parentElement && id === node && this.autoCheck) {\n this.updateIndeterminate(node, doCheck);\n }\n }\n } else if (this.dataType === 2 || this.fields.dataSource instanceof DataManager && this.isOffline) {\n var id = void 0;\n var parentElement = void 0;\n var check = void 0;\n for (var i = 0; i < this.treeData.length; i++) {\n id = this.treeData[parseInt(i.toString(), 10)][this.fields.id] ? this.treeData[parseInt(i.toString(), 10)][this.fields.id].toString() : '';\n parentElement = this.element.querySelector('[data-uid=\"' + id + '\"]');\n check = parentElement ? select('.' + CHECK, parentElement) : null;\n if (this.checkedNodes.indexOf(id) === -1 && parentElement && check && !doCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n var subChild = getValue(this.fields.child.toString(), this.treeData[parseInt(i.toString(), 10)]);\n if (subChild) {\n this.updateChildIndeterminate(subChild, id, node, doCheck, id);\n }\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for listData\n *\n * @param {string} node - The unique identifier of the node.\n * @param {boolean} doCheck - A boolean value indicating whether to check or uncheck the node.\n * @returns {void}\n * @private\n */\n TreeView.prototype.updateIndeterminate = function (node, doCheck) {\n var indeterminateData = this.getTreeData(node);\n var count = 0;\n var parent;\n if (this.dataType === 1) {\n parent = indeterminateData[0][this.fields.parentID] ? indeterminateData[0][this.fields.parentID].toString() : null;\n }\n var childNodes = this.getChildNodes(this.treeData, parent);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[parseInt(i.toString(), 10)][this.fields.id] ? childNodes[parseInt(i.toString(), 10)][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n if (parentElement && doCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n } else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n } else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n } else if (!parentElement) {\n if (!doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent), 1);\n } else if (doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n } else if (!doCheck && this.checkedNodes.indexOf(parent) !== -1 && this.parentNodeCheck.indexOf(parent) === -1 && count !== 0) {\n this.parentNodeCheck.push(parent);\n }\n this.updateIndeterminate(parent, doCheck);\n if (this.checkedNodes.indexOf(parent) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(parent), 1);\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for hierarchical data\n *\n * @param {Object[]} subChild - Array of child nodes\n * @param {string} parent - Parent identifier\n * @param {string} node - Current node identifier\n * @param {boolean} doCheck - Boolean indicating whether to perform a check\n * @param {string} [child] - Optional child identifier\n * @returns {void}\n * @private\n */\n TreeView.prototype.updateChildIndeterminate = function (subChild, parent, node, doCheck, child) {\n var count = 0;\n for (var j = 0; j < subChild.length; j++) {\n var subId = subChild[parseInt(j.toString(), 10)][this.fields.id] ? subChild[parseInt(j.toString(), 10)][this.fields.id].toString() : '';\n if (this.checkedNodes.indexOf(subId) !== -1) {\n count++;\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n var indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;\n var check = parentElement ? select('.' + CHECK, parentElement) : null;\n var element = this.element.querySelector('[data-uid=\"' + subId + '\"]');\n var childElementCheck = element ? select('.' + CHECK, element) : null;\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && subId === node && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n } else if (this.checkedNodes.indexOf(node) === -1 && parentElement && !element && subId === node && !doCheck) {\n if (this.autoCheck) {\n this.changeState(parentElement, 'uncheck', null);\n } else {\n if (count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n } else {\n this.changeState(parentElement, 'uncheck', null);\n }\n }\n } else if (this.checkedNodes.indexOf(node) === -1 && element && subId === node && !doCheck) {\n this.changeState(element, 'uncheck', null);\n } else if (this.checkedNodes.indexOf(node) === -1 && indeterminate && subId === node && this.autoCheck && count === 0 && !doCheck) {\n indeterminate.classList.remove(INDETERMINATE);\n } else if (this.checkedNodes.indexOf(node) === -1 && !element && check && subId === node && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n } else if (this.checkedNodes.indexOf(subId) === -1 && element && childElementCheck && count === 0) {\n this.changeState(element, 'uncheck', null);\n } else if (!element && !parentElement && subId === node || this.parentNodeCheck.indexOf(parent) !== -1 && this.autoCheck) {\n var childElement = this.element.querySelector('[data-uid=\"' + child + '\"]');\n if (doCheck && count !== 0) {\n this.changeState(childElement, 'indeterminate', null);\n } else if (doCheck && count === subChild.length && this.checkedNodes.indexOf(parent) === -1) {\n this.checkDisabledState(parent);\n } else if (!doCheck && count === 0 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent));\n }\n if (this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n }\n var innerChild = getValue(this.fields.child.toString(), subChild[parseInt(j.toString(), 10)]);\n if (innerChild) {\n this.updateChildIndeterminate(innerChild, subId, node, doCheck, child);\n }\n }\n };\n TreeView.prototype.changeState = function (wrapper, state, e, isPrevent, isAdd, doCheck) {\n var _this = this;\n var eventArgs;\n var currLi = closest(wrapper, '.' + LISTITEM);\n if (!this.checkDisabledChildren && currLi && (currLi.classList.contains(DISABLE) || this.disableNode && this.disableNode.indexOf(currLi.getAttribute('data-uid')) !== -1)) {\n return;\n }\n if (wrapper === currLi) {\n wrapper = select('.' + CHECKBOXWRAP, currLi);\n }\n if (!isPrevent) {\n this.checkActionNodes = [];\n eventArgs = this.getCheckEvent(currLi, state, e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckAction(wrapper, state, currLi, observedArgs, e, isPrevent, isAdd, doCheck);\n }\n });\n } else {\n this.nodeCheckAction(wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck);\n }\n };\n TreeView.prototype.nodeCheckAction = function (wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck) {\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 this.addCheck(currLi);\n ariaState = 'true';\n } else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n this.removeCheck(currLi);\n ariaState = 'false';\n } else if (state === 'indeterminate' && this.autoCheck) {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n this.removeCheck(currLi);\n ariaState = 'mixed';\n }\n ariaState = state === 'check' ? 'true' : state === 'uncheck' ? 'false' : ariaState;\n if (!isNOU(ariaState)) {\n currLi.setAttribute('aria-checked', ariaState);\n }\n if (isAdd) {\n var data = [].concat([], this.checkActionNodes);\n eventArgs = this.getCheckEvent(currLi, state, e);\n if (isUndefined(isPrevent)) {\n eventArgs.data = data;\n }\n }\n if (doCheck !== undefined) {\n this.ensureStateChange(currLi, doCheck);\n }\n if (!isPrevent) {\n if (!isNOU(ariaState)) {\n currLi.setAttribute('aria-checked', ariaState);\n eventArgs.data[0].checked = ariaState;\n this.trigger('nodeChecked', eventArgs);\n this.checkActionNodes = [];\n }\n }\n };\n TreeView.prototype.addCheck = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.checkedNodes.indexOf(id) === -1) {\n this.checkDisabledState(id);\n }\n };\n TreeView.prototype.removeCheck = function (liEle) {\n var index = this.checkedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.checkedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.getCheckEvent = function (currLi, action, e) {\n this.checkActionNodes.push(this.getNodeData(currLi));\n var nodeData = this.checkActionNodes;\n return {\n action: action,\n cancel: false,\n isInteracted: isNOU(e) ? false : true,\n node: currLi,\n data: nodeData\n };\n };\n TreeView.prototype.finalize = function () {\n var firstUl = select('.' + PARENTITEM, this.element);\n if (!isNullOrUndefined(firstUl)) {\n firstUl.setAttribute('role', treeAriaAttr.treeRole);\n this.setMultiSelect(this.allowMultiSelection);\n var firstNode = select('.' + LISTITEM, this.element);\n if (firstNode) {\n firstNode.setAttribute('tabindex', '0');\n this.updateIdAttr(null, firstNode);\n }\n if (this.allowTextWrap) {\n this.updateWrap();\n }\n this.renderReactTemplates();\n this.hasPid = this.rootData[0] ? Object.prototype.hasOwnProperty.call(this.rootData[0], this.fields.parentID) : false;\n this.doExpandAction();\n }\n };\n TreeView.prototype.setTextWrap = function () {\n (this.allowTextWrap ? addClass : removeClass)([this.element], LISTWRAP);\n if (Browser.isIE) {\n (this.allowTextWrap ? addClass : removeClass)([this.element], IELISTWRAP);\n }\n };\n TreeView.prototype.updateWrap = function (ulEle) {\n if (!this.fullRowSelect) {\n return;\n }\n var liEle = ulEle ? selectAll('.' + LISTITEM, ulEle) : this.liList;\n var length = liEle.length;\n for (var i = 0; i < length; i++) {\n this.calculateWrap(liEle[parseInt(i.toString(), 10)]);\n }\n };\n TreeView.prototype.calculateWrap = function (liEle) {\n var element = select('.' + FULLROW, liEle);\n if (element && element.nextElementSibling) {\n element.style.height = this.allowTextWrap ? element.nextElementSibling.offsetHeight + 'px' : '';\n }\n };\n TreeView.prototype.doExpandAction = function () {\n var _this = this;\n var eUids = this.expandedNodes;\n if (!this.loadOnDemand && this.fields.dataSource instanceof DataManager) {\n this.isInitalExpand = this.treeData.filter(function (e) {\n return e[_this.fields.expanded] === true;\n }).length > 0 ? true : this.isInitalExpand;\n }\n if (this.isInitalExpand && eUids.length > 0) {\n this.setProperties({\n expandedNodes: []\n }, true);\n if (this.fields.dataSource instanceof DataManager) {\n this.expandGivenNodes(eUids);\n } else {\n for (var i = 0; i < eUids.length; i++) {\n var eNode = select('[data-uid=\"' + eUids[parseInt(i.toString(), 10)] + '\"]', this.element);\n if (!isNOU(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNOU(icon)) {\n this.expandAction(eNode, icon, null);\n }\n } else {\n if (eUids[parseInt(i.toString(), 10)] && this.expandChildren.indexOf(eUids[parseInt(i.toString(), 10)]) === -1) {\n this.expandChildren.push(eUids[parseInt(i.toString(), 10)].toString());\n }\n continue;\n }\n }\n this.afterFinalized();\n }\n } else {\n this.afterFinalized();\n }\n };\n TreeView.prototype.expandGivenNodes = function (arr) {\n var _this = this;\n this.expandCallback(arr[this.index], function () {\n _this.index++;\n if (_this.index < arr.length) {\n _this.expandGivenNodes(arr);\n } else {\n _this.afterFinalized();\n }\n });\n if (this.index > 0) {\n this.index = 0;\n }\n };\n TreeView.prototype.expandCallback = function (eUid, callback) {\n var eNode = select('[data-uid=\"' + eUid + '\"]', this.element);\n if (!isNOU(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNOU(icon)) {\n this.expandAction(eNode, icon, null, false, callback);\n }\n callback();\n } else {\n callback();\n }\n };\n TreeView.prototype.afterFinalized = function () {\n this.doSelectionAction();\n this.updateCheckedProp();\n this.isAnimate = true;\n this.isInitalExpand = false;\n if ((!this.isLoaded || this.isFieldChange) && !this.isNodeDropped) {\n var eventArgs = {\n data: this.treeData\n };\n this.trigger('dataBound', eventArgs);\n }\n this.isLoaded = true;\n this.isNodeDropped = false;\n };\n TreeView.prototype.doSelectionAction = function () {\n var sNodes = selectAll('.' + SELECTED, this.element);\n var sUids = this.selectedNodes;\n if (sUids.length > 0) {\n this.setProperties({\n selectedNodes: []\n }, true);\n for (var i = 0; i < sUids.length; i++) {\n var sNode = select('[data-uid=\"' + sUids[parseInt(i.toString(), 10)] + '\"]', this.element);\n if (sNode && !sNode.classList.contains('e-active')) {\n this.selectNode(sNode, null, true);\n } else {\n this.selectedNodes.push(sUids[parseInt(i.toString(), 10)]);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n } else {\n this.selectGivenNodes(sNodes);\n }\n removeClass(sNodes, SELECTED);\n };\n TreeView.prototype.selectGivenNodes = function (sNodes) {\n for (var i = 0; i < sNodes.length; i++) {\n if (!sNodes[parseInt(i.toString(), 10)].classList.contains('e-disable')) {\n this.selectNode(sNodes[parseInt(i.toString(), 10)], null, true);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n };\n TreeView.prototype.clickHandler = function (event) {\n var target = Browser.isDevice && event.originalEvent.changedTouches && !Browser.isIos ? document.elementFromPoint(event.originalEvent.changedTouches[0].clientX, event.originalEvent.changedTouches[0].clientY) : event.originalEvent.target;\n EventHandler.remove(this.element, 'contextmenu', this.preventContextMenu);\n if (!target || this.dragStartAction) {\n return;\n } else {\n var classList = target.classList;\n var li = closest(target, '.' + LISTITEM);\n if (!li || li.classList.contains(PREVENTSELECT) && !(classList.contains(EXPANDABLE) || classList.contains(COLLAPSIBLE))) {\n return;\n } else if (event.originalEvent.which !== 3) {\n var rippleElement = select('.' + RIPPLEELMENT, li);\n var rippleIcons = select('.' + ICON, li);\n this.removeHover();\n this.setFocusElement(li);\n if (this.showCheckBox && !li.classList.contains('e-disable')) {\n var checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNOU(checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, checkWrapper);\n this.validateCheckNode(checkWrapper, checkElement.classList.contains(CHECK), li, event.originalEvent);\n this.triggerClickEvent(event.originalEvent, li);\n return;\n }\n }\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(li, target, event);\n } else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, target, event);\n } else if (rippleElement && rippleIcons) {\n if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(EXPANDABLE)) {\n this.expandAction(li, rippleIcons, event);\n } else if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, rippleIcons, event);\n } else if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n } else {\n if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n }\n }\n if (event.originalEvent.which === 3) {\n this.isRightClick = true;\n }\n this.triggerClickEvent(event.originalEvent, li);\n }\n };\n TreeView.prototype.nodeCheckedEvent = function (wrapper, isCheck, e) {\n var eventArgs = this.getCheckEvent(wrapper, isCheck ? 'uncheck' : 'check', e);\n eventArgs.data = eventArgs.data.splice(0, eventArgs.data.length - 1);\n this.trigger('nodeChecked', eventArgs);\n };\n TreeView.prototype.updateOldCheckedData = function (data) {\n var _this = this;\n var dataManager = new DataManager(data);\n var childItems = dataManager.executeLocal(new Query().where('isChecked', 'equal', 'true', true));\n var uncheckedItems = dataManager.executeLocal(new Query().where('isChecked', 'equal', 'false', true));\n if (uncheckedItems.length > 0) {\n var index = this.OldCheckedData.findIndex(function (e) {\n return e['id'] === uncheckedItems[0]['id'];\n });\n if (index !== -1) {\n this.OldCheckedData.splice(index, 1);\n var childNodes = this.OldCheckedData.filter(function (e) {\n return e['parentID'] === uncheckedItems[0]['id'];\n });\n if (childNodes.length > 0) {\n childNodes.forEach(function (child) {\n var childIndex = _this.OldCheckedData.findIndex(function (e) {\n return e['id'] === child.id;\n });\n if (childIndex !== -1) {\n _this.OldCheckedData.splice(childIndex, 1);\n }\n });\n }\n return;\n }\n }\n if (childItems.length > 0) {\n var index = this.OldCheckedData.findIndex(function (e) {\n return e['id'] === childItems[0]['id'];\n });\n if (index === -1) {\n this.OldCheckedData.push(childItems[0]);\n return;\n }\n }\n };\n TreeView.prototype.triggerClickEvent = function (e, li) {\n var eventArgs = {\n event: e,\n node: li\n };\n this.trigger('nodeClicked', eventArgs);\n };\n TreeView.prototype.expandNode = function (currLi, icon, loaded) {\n var _this = this;\n this.renderReactTemplates();\n if (icon.classList.contains(LOAD)) {\n this.hideSpinner(icon);\n }\n if (!this.initialRender) {\n icon.classList.add('interaction');\n }\n if (loaded !== true || loaded === true && currLi.classList.contains('e-expanded')) {\n if (this.preventExpand !== true) {\n removeClass([icon], EXPANDABLE);\n addClass([icon], COLLAPSIBLE);\n var start_1 = 0;\n var end_1 = 0;\n var ul_1 = select('.' + PARENTITEM, currLi);\n var liEle_1 = currLi;\n if (this.isAnimate && !this.isRefreshed) {\n this.setHeight(liEle_1, ul_1);\n var activeElement_1 = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n this.aniObj.animate(ul_1, {\n name: this.animation.expand.effect,\n duration: this.animation.expand.duration === 0 && animationMode === 'Enable' ? 400 : this.animation.expand.duration,\n timingFunction: this.animation.expand.easing,\n begin: function () {\n liEle_1.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start_1 = liEle_1.offsetHeight;\n end_1 = select('.' + TEXTWRAP, currLi).offsetHeight;\n },\n progress: function (args) {\n args.element.style.display = 'block';\n _this.animateHeight(args, start_1, end_1);\n },\n end: function (args) {\n args.element.style.display = 'block';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.expandedNode(liEle_1, ul_1, icon);\n }\n });\n } else {\n this.expandedNode(liEle_1, ul_1, icon);\n }\n }\n } else {\n var ul = select('.' + PARENTITEM, currLi);\n ul.style.display = 'none';\n if (this.fields.dataSource instanceof DataManager === true) {\n this.preventExpand = false;\n }\n }\n if (this.initialRender) {\n icon.classList.add('interaction');\n }\n };\n TreeView.prototype.expandedNode = function (currLi, ul, icon) {\n ul.style.display = 'block';\n currLi.style.display = 'block';\n currLi.style.overflow = '';\n currLi.style.height = '';\n removeClass([icon], PROCESS);\n this.addExpand(currLi);\n if (this.allowTextWrap && this.isLoaded && this.isFirstRender) {\n this.updateWrap(currLi);\n this.isFirstRender = false;\n }\n if (this.isLoaded && this.expandArgs && !this.isRefreshed) {\n this.expandArgs = this.getExpandEvent(currLi, null);\n this.expandArgs.isInteracted = this.isInteracted;\n this.trigger('nodeExpanded', this.expandArgs);\n }\n if (this.isHiddenItem) {\n this.collapseAll([this.getNodeData(currLi).id]);\n }\n };\n TreeView.prototype.addExpand = function (liEle) {\n liEle.setAttribute('aria-expanded', 'true');\n removeClass([liEle], NODECOLLAPSED);\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.expandedNodes.indexOf(id) === -1) {\n this.expandedNodes.push(id);\n }\n };\n TreeView.prototype.collapseNode = function (currLi, icon, e) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n } else {\n addClass([icon], PROCESS);\n }\n var colArgs;\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(currLi, e);\n this.isInteracted = colArgs.isInteracted;\n this.trigger('nodeCollapsing', colArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n } else {\n _this.nodeCollapseAction(currLi, icon, observedArgs);\n }\n });\n } else {\n this.nodeCollapseAction(currLi, icon, colArgs);\n }\n };\n TreeView.prototype.nodeCollapseAction = function (currLi, icon, colArgs) {\n var _this = this;\n removeClass([icon], COLLAPSIBLE);\n addClass([icon], EXPANDABLE);\n var start = 0;\n var end = 0;\n var ul = select('.' + PARENTITEM, currLi);\n var liEle = currLi;\n var activeElement = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate) {\n this.aniObj.animate(ul, {\n name: this.animation.collapse.effect,\n duration: this.animation.collapse.duration === 0 && animationMode === 'Enable' ? 400 : this.animation.collapse.duration,\n timingFunction: this.animation.collapse.easing,\n begin: function () {\n liEle.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start = select('.' + TEXTWRAP, currLi).offsetHeight;\n end = liEle.offsetHeight;\n },\n progress: function (args) {\n _this.animateHeight(args, start, end);\n },\n end: function (args) {\n args.element.style.display = 'none';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.collapsedNode(liEle, ul, icon, colArgs);\n }\n });\n } else {\n this.collapsedNode(liEle, ul, icon, colArgs);\n }\n };\n TreeView.prototype.collapsedNode = function (liEle, ul, icon, colArgs) {\n ul.style.display = 'none';\n liEle.style.overflow = '';\n liEle.style.height = '';\n removeClass([icon], PROCESS);\n this.removeExpand(liEle);\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(liEle, null);\n colArgs.isInteracted = this.isInteracted;\n this.trigger('nodeCollapsed', colArgs);\n }\n };\n TreeView.prototype.removeExpand = function (liEle, toRemove) {\n if (toRemove) {\n liEle.removeAttribute('aria-expanded');\n } else {\n this.disableExpandAttr(liEle);\n }\n var index = this.expandedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.expandedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.disableExpandAttr = function (liEle) {\n liEle.setAttribute('aria-expanded', 'false');\n addClass([liEle], NODECOLLAPSED);\n };\n TreeView.prototype.setHeight = function (currLi, ul) {\n ul.style.display = 'block';\n ul.style.visibility = 'hidden';\n currLi.style.height = currLi.offsetHeight + 'px';\n ul.style.display = 'none';\n ul.style.visibility = '';\n };\n TreeView.prototype.animateHeight = function (args, start, end) {\n var remaining = (args.duration - args.timeStamp) / args.duration;\n var currentHeight = (end - start) * remaining + start;\n args.element.parentElement.style.height = currentHeight + 'px';\n };\n TreeView.prototype.renderChildNodes = function (parentLi, expandChild, callback, loaded, isFromExpandAll) {\n var _this = this;\n var eicon = select('div.' + ICON, parentLi);\n if (isNOU(eicon)) {\n return;\n }\n this.showSpinner(eicon);\n var childItems;\n if (this.fields.dataSource instanceof DataManager) {\n var level = this.parents(parentLi, '.' + PARENTITEM).length;\n var mapper_2 = this.getChildFields(this.fields, level, 1);\n if (isNOU(mapper_2) || isNOU(mapper_2.dataSource)) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n return;\n }\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager && this.isOffline) {\n this.treeList.pop();\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'));\n this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n } else {\n mapper_2.dataSource.executeQuery(this.getQuery(mapper_2, parentLi.getAttribute('data-uid'))).then(function (e) {\n _this.treeList.pop();\n childItems = e.result;\n if (_this.dataType === 1) {\n _this.dataType = 2;\n }\n _this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n }).catch(function (e) {\n _this.trigger('actionFailure', {\n error: e\n });\n });\n }\n } else {\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'), false, parseFloat(parentLi.getAttribute('aria-level')) + 1);\n this.currentLoadData = this.getSortedData(childItems);\n if (isNOU(childItems) || childItems.length === 0) {\n detach(eicon);\n if (eicon.classList.contains(LOAD)) {\n this.hideSpinner(eicon);\n }\n this.removeExpand(parentLi, true);\n return;\n } else {\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, this.currentLoadData, this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi, isFromExpandAll);\n this.finalizeNode(parentLi, isFromExpandAll, expandChild);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded, isFromExpandAll);\n }\n }\n };\n TreeView.prototype.loadChild = function (childItems, mapper, eicon, parentLi, expandChild, callback, loaded) {\n this.currentLoadData = childItems;\n if (isNOU(childItems) || childItems.length === 0) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n } else {\n this.updateListProp(mapper);\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n var id = parentLi.getAttribute('data-uid');\n var nodeData = this.getNodeObject(id);\n setValue('child', childItems, nodeData);\n }\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, childItems, this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi);\n this.finalizeNode(parentLi);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\n }\n if (callback) {\n callback();\n }\n if (expandChild) {\n this.expandedNodes.push(parentLi.getAttribute('data-uid'));\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.disableTreeNodes = function (childItems) {\n if (isNOU(this.disableNode) || this.disableNode.length === 0) {\n return;\n }\n var i = 0;\n while (i < childItems.length) {\n var id = childItems[parseInt(i.toString(), 10)][this.fields.id] ? childItems[parseInt(i.toString(), 10)][this.fields.id].toString() : null;\n if (this.disableNode !== undefined && this.disableNode.indexOf(id) !== -1) {\n this.doDisableAction([id]);\n }\n i++;\n }\n };\n /**\n * Sets the child Item in selectedState while rendering the child node\n *\n * @param {Object[]} nodes - Array of nodes\n * @returns {void}\n */\n TreeView.prototype.setSelectionForChildNodes = function (nodes) {\n if (isNOU(this.selectedNodes) || this.selectedNodes.length === 0) {\n return;\n }\n var i;\n for (i = 0; i < nodes.length; i++) {\n var id = nodes[parseInt(i.toString(), 10)][this.fields.id] ? nodes[parseInt(i.toString(), 10)][this.fields.id].toString() : null;\n if (this.selectedNodes !== undefined && this.selectedNodes.indexOf(id) !== -1) {\n this.doSelectionAction();\n }\n }\n };\n TreeView.prototype.ensureCheckNode = function (element, isFromExpandAll) {\n if (this.showCheckBox) {\n this.ele = this.checkedElement ? this.checkedElement.indexOf(element.getAttribute('data-uid')) : null;\n if (this.autoCheck) {\n this.ensureChildCheckState(element, null, isFromExpandAll);\n if (isFromExpandAll ? select('.' + CHECK, this.element) || select('.' + INDETERMINATE, this.element) : true) {\n this.ensureParentCheckState(element);\n }\n }\n }\n this.currentLoadData = null;\n };\n TreeView.prototype.getFields = function (mapper, nodeLevel, dataLevel) {\n if (nodeLevel === dataLevel) {\n return mapper;\n } else {\n return this.getFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildFields = function (mapper, nodeLevel, dataLevel) {\n if (nodeLevel === dataLevel) {\n return this.getChildMapper(mapper);\n } else {\n return this.getChildFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildMapper = function (mapper) {\n return typeof mapper.child === 'string' || isNOU(mapper.child) ? mapper : mapper.child;\n };\n TreeView.prototype.getChildNodes = function (obj, parentId, isRoot, level) {\n var _this = this;\n if (isRoot === void 0) {\n isRoot = false;\n }\n var childNodes;\n if (isNOU(obj)) {\n return childNodes;\n }\n if (this.dataType === 1) {\n return this.getChildGroup(this.groupedData, parentId, isRoot);\n }\n if (typeof this.fields.child === 'string') {\n return this.findChildNodes(obj, this.fields.id, parentId) || this.findNestedChildNodes(obj, parentId, level) || [];\n }\n if (this.isChildObject()) {\n var tempField = !isNOU(level) ? this.fields : this.fields.child;\n var i = 1;\n while (i < level) {\n if (!isNOU(tempField.child)) {\n tempField = tempField.child;\n } else {\n break;\n }\n i++;\n }\n this.updateListProp(tempField);\n var index = obj.findIndex(function (data) {\n return getValue(_this.fields.id, data) && getValue(_this.fields.id, data).toString() === parentId;\n });\n if (index !== -1) {\n return getValue('child', obj[parseInt(index.toString(), 10)]);\n }\n if (index === -1) {\n for (var i_1 = 0, objlen = obj.length; i_1 < objlen; i_1++) {\n var tempArray = getValue('child', obj[parseInt(i_1.toString(), 10)]);\n var childIndex = !isNOU(tempArray) ? tempArray.findIndex(function (data) {\n return getValue(_this.fields.child.id, data) && getValue(_this.fields.child.id, data).toString() === parentId;\n }) : -1;\n if (childIndex !== -1) {\n return getValue('child', tempArray[parseInt(childIndex.toString(), 10)]);\n } else if (!isNOU(tempArray)) {\n childNodes = this.getChildNodes(tempArray, parentId, false, level);\n if (childNodes !== undefined) {\n break;\n }\n }\n }\n }\n }\n return childNodes;\n };\n TreeView.prototype.findChildNodes = function (items, idField, parentId) {\n var index = items.findIndex(function (data) {\n var value = getValue(idField, data);\n return value && value.toString() === parentId;\n });\n if (index !== -1) {\n return getValue(this.fields.child, items[index]);\n }\n return null;\n };\n TreeView.prototype.findNestedChildNodes = function (items, parentId, level) {\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n var tempArray = getValue(this.fields.child, item);\n if (!isNOU(tempArray)) {\n var childNodes = this.findChildNodes(tempArray, this.fields.id, parentId);\n if (childNodes) {\n return childNodes;\n }\n var nestedChildNodes = this.getChildNodes(tempArray, parentId, false, level);\n if (nestedChildNodes && nestedChildNodes.length > 0) {\n return nestedChildNodes;\n }\n }\n }\n return undefined;\n };\n TreeView.prototype.getChildGroup = function (data, parentId, isRoot) {\n var childNodes;\n if (isNOU(data)) {\n return childNodes;\n }\n for (var i = 0, objlen = data.length; i < objlen; i++) {\n if (!isNOU(data[parseInt(i.toString(), 10)][0]) && !isNOU(getValue(this.fields.parentID, data[parseInt(i.toString(), 10)][0]))) {\n if (getValue(this.fields.parentID, data[parseInt(i.toString(), 10)][0]).toString() === parentId) {\n return data[parseInt(i.toString(), 10)];\n }\n } else if (isRoot) {\n return data[parseInt(i.toString(), 10)];\n } else {\n return [];\n }\n }\n return childNodes;\n };\n TreeView.prototype.renderSubChild = function (element, expandChild, loaded, isFromExpandAll) {\n if (expandChild) {\n var cIcons = selectAll('.' + EXPANDABLE, element);\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[parseInt(i.toString(), 10)];\n if (element.querySelector('.e-icons') !== cIcons[parseInt(i.toString(), 10)]) {\n var curLi = closest(icon, '.' + LISTITEM);\n this.expandArgs = this.getExpandEvent(curLi, null);\n if (loaded !== true) {\n this.trigger('nodeExpanding', this.expandArgs);\n }\n this.renderChildNodes(curLi, expandChild, null, loaded, isFromExpandAll);\n }\n }\n }\n };\n TreeView.prototype.toggleSelect = function (li, e, multiSelect) {\n if (!li.classList.contains('e-disable')) {\n if (this.allowMultiSelection && (e && e.ctrlKey || multiSelect) && this.isActive(li)) {\n this.unselectNode(li, e);\n } else {\n this.selectNode(li, e, multiSelect);\n }\n }\n };\n TreeView.prototype.isActive = function (li) {\n return li.classList.contains(ACTIVE) ? true : false;\n };\n TreeView.prototype.selectNode = function (li, e, multiSelect) {\n var _this = this;\n if (isNOU(li) || !this.allowMultiSelection && this.isActive(li) && !isNOU(e)) {\n this.setFocusElement(li);\n return;\n }\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel && !observedArgs.node.classList.contains(PREVENTSELECT)) {\n _this.nodeSelectAction(li, e, observedArgs, multiSelect);\n }\n });\n } else {\n this.nodeSelectAction(li, e, eventArgs, multiSelect);\n }\n };\n TreeView.prototype.nodeSelectAction = function (li, e, eventArgs, multiSelect) {\n if (!this.allowMultiSelection || !multiSelect && (!e || e && !(e.ctrlKey || e.metaKey))) {\n this.removeSelectAll();\n }\n if (this.allowMultiSelection && e && e.shiftKey) {\n if (!this.startNode) {\n this.startNode = li;\n }\n var startIndex = this.liList.indexOf(this.startNode);\n var endIndex = this.liList.indexOf(li);\n if (startIndex > endIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex; i <= endIndex; i++) {\n var currNode = this.liList[parseInt(i.toString(), 10)];\n if (isVisible(currNode) && !currNode.classList.contains('e-disable')) {\n this.addSelect(currNode);\n }\n }\n } else {\n this.startNode = li;\n this.addSelect(li);\n }\n if (this.isLoaded) {\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n this.isRightClick = false;\n }\n this.isRightClick = false;\n };\n TreeView.prototype.unselectNode = function (li, e) {\n var _this = this;\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'un-select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeUnselectAction(li, observedArgs);\n }\n });\n } else {\n this.nodeUnselectAction(li, eventArgs);\n }\n };\n TreeView.prototype.nodeUnselectAction = function (li, eventArgs) {\n this.removeSelect(li);\n this.setFocusElement(li);\n if (this.isLoaded) {\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n }\n };\n TreeView.prototype.setFocusElement = function (li) {\n if (!isNOU(li)) {\n var focusedNode = this.getFocusedNode();\n if (focusedNode) {\n removeClass([focusedNode], FOCUS);\n focusedNode.setAttribute('tabindex', '-1');\n }\n addClass([li], FOCUS);\n li.setAttribute('tabindex', '0');\n EventHandler.add(li, 'blur', this.focusOut, this);\n this.updateIdAttr(focusedNode, li);\n }\n };\n TreeView.prototype.addSelect = function (liEle) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.selectedNodes.indexOf(id) === -1) {\n this.selectedNodes.push(id);\n }\n };\n TreeView.prototype.removeSelect = function (liEle) {\n if (this.allowMultiSelection) {\n liEle.setAttribute('aria-selected', 'false');\n } else {\n liEle.removeAttribute('aria-selected');\n }\n removeClass([liEle], ACTIVE);\n var index = this.selectedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.selectedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.removeSelectAll = function () {\n var selectedLI = this.element.querySelectorAll('.' + ACTIVE);\n for (var _i = 0, selectedLI_1 = selectedLI; _i < selectedLI_1.length; _i++) {\n var ele = selectedLI_1[_i];\n if (this.allowMultiSelection) {\n ele.setAttribute('aria-selected', 'false');\n } else {\n ele.removeAttribute('aria-selected');\n }\n }\n removeClass(selectedLI, ACTIVE);\n this.setProperties({\n selectedNodes: []\n }, true);\n };\n TreeView.prototype.getSelectEvent = function (currLi, action, e) {\n var nodeData = this.getNodeData(currLi);\n return {\n action: action,\n cancel: false,\n isInteracted: isNOU(e) ? false : true,\n node: currLi,\n nodeData: nodeData\n };\n };\n TreeView.prototype.setExpandOnType = function () {\n this.expandOnType = this.expandOn === 'Auto' ? Browser.isDevice ? 'Click' : 'DblClick' : this.expandOn;\n };\n TreeView.prototype.expandHandler = function (e) {\n var target = Browser.isDevice && e.originalEvent.changedTouches && !Browser.isIos ? document.elementFromPoint(e.originalEvent.changedTouches[0].clientX, e.originalEvent.changedTouches[0].clientY) : e.originalEvent.target;\n if (!target || target.classList.contains(INPUT) || target.classList.contains(ROOT) || target.classList.contains(PARENTITEM) || target.classList.contains(LISTITEM) || target.classList.contains(ICON) || this.showCheckBox && closest(target, '.' + CHECKBOXWRAP)) {\n return;\n } else {\n this.expandCollapseAction(closest(target, '.' + LISTITEM), e);\n }\n };\n TreeView.prototype.expandCollapseAction = function (currLi, e) {\n var icon = select('div.' + ICON, currLi);\n if (!icon || icon.classList.contains(PROCESS)) {\n return;\n } else {\n var classList = icon.classList;\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(currLi, icon, e);\n } else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(currLi, icon, e);\n }\n }\n };\n TreeView.prototype.expandAction = function (currLi, icon, e, expandChild, callback, isFromExpandAll) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n } else {\n addClass([icon], PROCESS);\n }\n if (this.isLoaded && !this.isRefreshed) {\n this.expandArgs = this.getExpandEvent(currLi, e);\n this.isInteracted = this.expandArgs.isInteracted;\n this.trigger('nodeExpanding', this.expandArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n } else {\n _this.nodeExpandAction(currLi, icon, expandChild, callback, isFromExpandAll);\n }\n });\n } else {\n this.nodeExpandAction(currLi, icon, expandChild, callback, isFromExpandAll);\n }\n };\n TreeView.prototype.nodeExpandAction = function (currLi, icon, expandChild, callback, isFromExpandAll) {\n var ul = select('.' + PARENTITEM, currLi);\n if (ul && ul.nodeName === 'UL') {\n this.expandNode(currLi, icon);\n } else {\n this.isFirstRender = true;\n this.renderChildNodes(currLi, expandChild, callback, null, isFromExpandAll);\n var liEles = selectAll('.' + LISTITEM, currLi);\n for (var i = 0; i < liEles.length; i++) {\n var id = this.getId(liEles[parseInt(i.toString(), 10)]);\n if (this.expandChildren.indexOf(id) !== -1 && this.expandChildren !== undefined) {\n var icon_1 = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEles[parseInt(i.toString(), 10)]));\n if (!isNOU(icon_1)) {\n this.expandAction(liEles[parseInt(i.toString(), 10)], icon_1, null);\n }\n this.expandChildren.splice(this.expandChildren.indexOf(id), 1);\n }\n }\n }\n };\n TreeView.prototype.keyActionHandler = function (e) {\n var _this = this;\n var target = e.target;\n var focusedNode = this.getFocusedNode();\n if (target && target.classList.contains(INPUT)) {\n var inpEle = target;\n if (e.action === 'enter') {\n inpEle.blur();\n } else if (e.action === 'escape') {\n inpEle.value = this.oldText;\n inpEle.blur();\n }\n return;\n }\n e.preventDefault();\n var eventArgs = {\n cancel: false,\n event: e,\n node: focusedNode\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n if (_this.showCheckBox) {\n _this.checkNode(e);\n } else {\n _this.toggleSelect(focusedNode, e);\n }\n break;\n case 'moveRight':\n _this.openNode(_this.enableRtl ? false : true, e);\n break;\n case 'moveLeft':\n _this.openNode(_this.enableRtl ? true : false, e);\n break;\n case 'shiftDown':\n _this.shiftKeySelect(true, e);\n break;\n case 'moveDown':\n case 'ctrlDown':\n case 'csDown':\n _this.navigateNode(true);\n break;\n case 'shiftUp':\n _this.shiftKeySelect(false, e);\n break;\n case 'moveUp':\n case 'ctrlUp':\n case 'csUp':\n _this.navigateNode(false);\n break;\n case 'home':\n case 'shiftHome':\n case 'ctrlHome':\n case 'csHome':\n _this.navigateRootNode(true);\n break;\n case 'end':\n case 'shiftEnd':\n case 'ctrlEnd':\n case 'csEnd':\n _this.navigateRootNode(false);\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n case 'shiftSpace':\n case 'ctrlSpace':\n _this.toggleSelect(focusedNode, e);\n break;\n case 'f2':\n if (_this.allowEditing && !focusedNode.classList.contains('e-disable')) {\n _this.createTextbox(focusedNode);\n }\n break;\n case 'ctrlA':\n if (_this.allowMultiSelection) {\n var sNodes = selectAll('.' + LISTITEM + ':not(.' + ACTIVE + ')', _this.element);\n _this.selectGivenNodes(sNodes);\n }\n break;\n }\n }\n });\n };\n TreeView.prototype.navigateToFocus = function (isUp) {\n var focusNode = this.getFocusedNode().querySelector('.' + TEXTWRAP);\n var pos = focusNode.getBoundingClientRect();\n var parent = this.getScrollParent(this.element);\n if (!isNOU(parent)) {\n var parentPos = parent.getBoundingClientRect();\n if (pos.bottom > parentPos.bottom) {\n parent.scrollTop += pos.bottom - parentPos.bottom;\n } else if (pos.top < parentPos.top) {\n parent.scrollTop -= parentPos.top - pos.top;\n }\n }\n var isVisible = this.isVisibleInViewport(focusNode);\n if (!isVisible) {\n focusNode.scrollIntoView(isUp);\n }\n };\n TreeView.prototype.isVisibleInViewport = function (txtWrap) {\n var pos = txtWrap.getBoundingClientRect();\n return pos.top >= 0 && pos.left >= 0 && pos.bottom <= (window.innerHeight || document.documentElement.clientHeight) && pos.right <= (window.innerWidth || document.documentElement.clientWidth);\n };\n TreeView.prototype.getScrollParent = function (node) {\n if (isNOU(node)) {\n return null;\n }\n return node.scrollHeight > node.clientHeight ? node : this.getScrollParent(node.parentElement);\n };\n TreeView.prototype.shiftKeySelect = function (isTowards, e) {\n if (this.allowMultiSelection) {\n var focusedNode = this.getFocusedNode();\n var nextNode = isTowards ? this.getNextNode(focusedNode) : this.getPrevNode(focusedNode);\n this.removeHover();\n this.setFocusElement(nextNode);\n this.toggleSelect(nextNode, e, false);\n this.navigateToFocus(!isTowards);\n } else {\n this.navigateNode(isTowards);\n }\n };\n TreeView.prototype.checkNode = function (e) {\n var focusedNode = this.getFocusedNode();\n var checkWrap = select('.' + CHECKBOXWRAP, focusedNode);\n var isChecked = select(' .' + CHECKBOXFRAME, checkWrap).classList.contains(CHECK);\n if (!focusedNode.classList.contains('e-disable')) {\n if (focusedNode.getElementsByClassName('e-checkbox-disabled').length === 0) {\n this.validateCheckNode(checkWrap, isChecked, focusedNode, e);\n }\n }\n };\n TreeView.prototype.validateCheckNode = function (checkWrap, isCheck, li, e) {\n var _this = this;\n var currLi = closest(checkWrap, '.' + LISTITEM);\n this.checkActionNodes = [];\n var ariaState = !isCheck ? 'true' : 'false';\n if (!isNOU(ariaState)) {\n currLi.setAttribute('aria-checked', ariaState);\n }\n var eventArgs = this.getCheckEvent(currLi, isCheck ? 'uncheck' : 'check', e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckingAction(checkWrap, isCheck, li, observedArgs, e);\n }\n });\n };\n TreeView.prototype.nodeCheckingAction = function (checkWrap, isCheck, li, eventArgs, e) {\n if (this.checkedElement.indexOf(li.getAttribute('data-uid')) === -1) {\n this.checkedElement.push(li.getAttribute('data-uid'));\n if (this.autoCheck) {\n var child = this.getChildNodes(this.treeData, li.getAttribute('data-uid'));\n if (child !== null) {\n this.allCheckNode(child, this.checkedElement, null, null, false);\n } else {\n child = null;\n }\n }\n }\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true);\n if (this.autoCheck) {\n this.ensureChildCheckState(li);\n this.updateOldCheckedData([this.getNodeData(li)]);\n this.ensureParentCheckState(closest(closest(li, '.' + PARENTITEM), '.' + LISTITEM));\n var doCheck = void 0;\n if (eventArgs.action === 'check') {\n doCheck = true;\n } else if (eventArgs.action === 'uncheck') {\n doCheck = false;\n }\n this.ensureStateChange(li, doCheck);\n }\n this.nodeCheckedEvent(checkWrap, isCheck, e);\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM\n *\n * @param {Element} li - The list item element\n * @param {boolean} [doCheck] - Optional parameter to specify whether to perform a check\n * @returns {void}\n */\n TreeView.prototype.ensureStateChange = function (li, doCheck) {\n var _this = this;\n var childElement = select('.' + PARENTITEM, li);\n var parentIndex = li.getAttribute('data-uid');\n var mapper = this.fields;\n if (this.dataType === 1 && this.autoCheck) {\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.parentID, 'equal', parentIndex, true));\n var childMatchesCheckedNodes = resultData.filter(function (item) {\n return _this.checkedNodes.indexOf(item[mapper.id].toString()) !== -1;\n }, this);\n if (this.checkedNodes.indexOf(parentIndex) !== -1 && childMatchesCheckedNodes.length !== resultData.length && this.isFilter) {\n if (childMatchesCheckedNodes.length > 0) {\n resultData = childMatchesCheckedNodes;\n }\n }\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[parseInt(i.toString(), 10)][this.fields.id] ? resultData[parseInt(i.toString(), 10)][this.fields.id].toString() : null;\n var isCheck = resultData[parseInt(i.toString(), 10)][this.fields.isChecked] ? resultData[parseInt(i.toString(), 10)][this.fields.isChecked].toString() : null;\n if (this.checkedNodes.indexOf(parentIndex) !== -1 && this.checkedNodes.indexOf(resultId) === -1) {\n this.checkDisabledState(resultId, resultData[i]);\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n } else if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null && this.checkedNodes.indexOf(resultId) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(resultId), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, resultId, 'isChecked', null);\n }\n if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null || this.parentNodeCheck.indexOf(resultId) !== -1) {\n var childNodes = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childNodes, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n } else {\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n }\n }\n } else if (this.dataType === 1 && !this.autoCheck) {\n if (!doCheck) {\n var checkedData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < checkedData.length; i++) {\n var id = checkedData[parseInt(i.toString(), 10)][this.fields.id] ? checkedData[parseInt(i.toString(), 10)][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n }\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n this.checkedNodes = [];\n } else {\n for (var i = 0; i < this.treeData.length; i++) {\n var checkedId = this.treeData[parseInt(i.toString(), 10)][this.fields.id] ? this.treeData[parseInt(i.toString(), 10)][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) === -1) {\n this.checkDisabledState(checkedId, this.treeData[i]);\n }\n }\n }\n } else {\n var childItems = this.getChildNodes(this.treeData, parentIndex);\n if (childItems) {\n var filteredChildItems = childItems.filter(function (item) {\n var itemValue = String(item[Object.keys(item)[0]]);\n return _this.checkedNodes.indexOf(itemValue) !== -1;\n });\n if (filteredChildItems.length > 0 && childItems.length && this.isFilter) {\n childItems = filteredChildItems;\n }\n this.childStateChange(childItems, parentIndex, childElement, doCheck);\n }\n }\n };\n TreeView.prototype.checkDisabledState = function (resultId, currentItem) {\n var requiresUpdate = this.checkDisabledChildren;\n if (!requiresUpdate) {\n var shouldPreventUpdate = true;\n if (this.loadOnDemand && this.fields.htmlAttributes) {\n currentItem = isNOU(currentItem) ? currentItem : this.getNodeObject(resultId);\n if (!isNOU(currentItem)) {\n var htmlAttributes = currentItem[this.fields.htmlAttributes];\n if (htmlAttributes && !isNOU(htmlAttributes.class) && htmlAttributes.class.indexOf(DISABLE) !== -1) {\n shouldPreventUpdate = false;\n }\n }\n }\n var liElement = select(\"[data-uid=\\\"\" + resultId + \"\\\"]\", this.element);\n requiresUpdate = liElement ? !liElement.classList.contains(DISABLE) : this.disableNode.indexOf(resultId) === -1 && shouldPreventUpdate;\n }\n if (requiresUpdate) {\n this.checkedNodes.push(resultId);\n }\n };\n TreeView.prototype.getChildItems = function (childItems, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var childId = childItems[parseInt(i.toString(), 10)][this.fields.id] ? childItems[parseInt(i.toString(), 10)][this.fields.id].toString() : null;\n var childIsCheck = childItems[parseInt(i.toString(), 10)][this.fields.isChecked] ? childItems[parseInt(i.toString(), 10)][this.fields.isChecked].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(childId), 1);\n }\n if (this.checkedNodes.indexOf(childId) === -1 && doCheck) {\n this.checkDisabledState(childId, childItems[i]);\n }\n if (childIsCheck === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, childId, 'isChecked', null);\n }\n var subChildItems = this.getChildNodes(this.treeData, childId);\n if (subChildItems.length > 0) {\n this.getChildItems(subChildItems, doCheck);\n }\n }\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM for hierarchical DS\n *\n * @param {Object[]} childItems - Array of child items\n * @param {string} parent - Parent identifier\n * @param {Element} childElement - Child DOM element\n * @param {boolean} [doCheck] - Optional parameter to specify whether to perform a check\n * @returns {void}\n */\n TreeView.prototype.childStateChange = function (childItems, parent, childElement, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var checkedChild = childItems[parseInt(i.toString(), 10)][this.fields.id] ? childItems[parseInt(i.toString(), 10)][this.fields.id].toString() : '';\n var isCheck = childItems[parseInt(i.toString(), 10)][this.fields.isChecked] ? childItems[parseInt(i.toString(), 10)][this.fields.isChecked].toString() : null;\n if (this.autoCheck) {\n if (this.checkedNodes.indexOf(parent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkDisabledState(checkedChild, childItems[i]);\n if (this.parentNodeCheck.indexOf(checkedChild) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(checkedChild), 1);\n }\n } else if (this.checkedNodes.indexOf(parent) === -1 && this.checkedNodes.indexOf(checkedChild) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n }\n }\n } else if (!this.autoCheck) {\n if (!doCheck) {\n if (this.checkedNodes.indexOf(checkedChild) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n }\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n this.checkedNodes = [];\n } else {\n if (this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkDisabledState(checkedChild, childItems[i]);\n }\n }\n }\n var subChild = this.getChildNodes([childItems[parseInt(i.toString(), 10)]], checkedChild);\n if (subChild) {\n this.childStateChange(subChild, parent, childElement, doCheck);\n }\n }\n };\n //This method can be used to get all child nodes of a parent by passing the children of a parent along with 'validateCheck' set to false\n TreeView.prototype.allCheckNode = function (child, newCheck, checked, childCheck, validateCheck) {\n if (child) {\n for (var length_1 = 0; length_1 < child.length; length_1++) {\n var childId = getValue(this.fields.id, child[parseInt(length_1.toString(), 10)]);\n var check = this.element.querySelector('[data-uid=\"' + childId + '\"]');\n //Validates isChecked case while no UI interaction has been performed on the node or it's parent\n if (validateCheck !== false && this.checkedElement.indexOf(childId.toString()) === -1) {\n if (check === null && !isNOU(child[parseInt(length_1.toString(), 10)][this.fields.isChecked]) && newCheck.indexOf(childId.toString()) === -1 || childCheck === 0 || checked === 2) {\n if (child[parseInt(length_1.toString(), 10)][this.fields.isChecked] !== false || checked === 2) {\n newCheck.push(childId.toString());\n } else {\n childCheck = null;\n }\n childCheck = child[parseInt(length_1.toString(), 10)][this.fields.isChecked] !== false || checked === 2 ? 0 : null;\n }\n }\n //Pushes child checked node done thro' UI interaction\n if (newCheck.indexOf(childId.toString()) === -1 && isNOU(checked)) {\n newCheck.push(childId.toString());\n }\n var hierChildId = getValue(this.fields.child.toString(), child[parseInt(length_1.toString(), 10)]);\n //Gets if any next level children are available for child nodes\n if (getValue(this.fields.hasChildren, child[parseInt(length_1.toString(), 10)]) === true || hierChildId) {\n var id = getValue(this.fields.id, child[parseInt(length_1.toString(), 10)]);\n var childId_1 = void 0;\n if (this.dataType === 1) {\n childId_1 = this.getChildNodes(this.treeData, id.toString());\n } else {\n childId_1 = hierChildId;\n }\n if (childId_1) {\n if (isNOU(validateCheck)) {\n this.allCheckNode(childId_1, newCheck, checked, childCheck);\n } else {\n this.allCheckNode(childId_1, newCheck, checked, childCheck, validateCheck);\n }\n childCheck = null;\n }\n }\n childCheck = null;\n }\n }\n };\n TreeView.prototype.openNode = function (toBeOpened, e) {\n var focusedNode = this.getFocusedNode();\n var icon = select('div.' + ICON, focusedNode);\n if (toBeOpened) {\n if (!icon) {\n return;\n } else if (icon.classList.contains(EXPANDABLE)) {\n this.expandAction(focusedNode, icon, e);\n } else {\n this.focusNextNode(focusedNode, true);\n }\n } else {\n if (icon && icon.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(focusedNode, icon, e);\n } else {\n var parentLi = closest(closest(focusedNode, '.' + PARENTITEM), '.' + LISTITEM);\n if (!parentLi) {\n return;\n } else {\n if (!parentLi.classList.contains('e-disable')) {\n this.setFocus(focusedNode, parentLi);\n this.navigateToFocus(true);\n }\n }\n }\n }\n };\n TreeView.prototype.navigateNode = function (isTowards) {\n var focusedNode = this.getFocusedNode();\n this.focusNextNode(focusedNode, isTowards);\n };\n TreeView.prototype.navigateRootNode = function (isBackwards) {\n var focusedNode = this.getFocusedNode();\n var rootNode = isBackwards ? this.getRootNode() : this.getEndNode();\n if (!rootNode.classList.contains('e-disable')) {\n this.setFocus(focusedNode, rootNode);\n this.navigateToFocus(isBackwards);\n }\n };\n TreeView.prototype.getFocusedNode = function () {\n var selectedItem;\n var fNode = select('.' + LISTITEM + '[tabindex=\"0\"]', this.element);\n if (!isNOU(fNode)) {\n var ariaChecked = fNode.getAttribute('aria-checked');\n if (ariaChecked === 'mixed' || ariaChecked === 'false') {\n this.isFilter = false;\n }\n }\n if (isNOU(fNode)) {\n selectedItem = select('.' + LISTITEM, this.element);\n }\n return isNOU(fNode) ? isNOU(selectedItem) ? this.element.firstElementChild : selectedItem : fNode;\n };\n TreeView.prototype.focusNextNode = function (li, isTowards) {\n var nextNode = isTowards ? this.getNextNode(li) : this.getPrevNode(li);\n this.setFocus(li, nextNode);\n this.navigateToFocus(!isTowards);\n if (nextNode.classList.contains('e-disable')) {\n var lastChild = nextNode.lastChild;\n if (nextNode.previousSibling == null && nextNode.classList.contains('e-level-1')) {\n this.focusNextNode(nextNode, true);\n } else if (nextNode.nextSibling == null && nextNode.classList.contains('e-node-collapsed')) {\n this.focusNextNode(nextNode, false);\n } else if (nextNode.nextSibling == null && lastChild.classList.contains(TEXTWRAP)) {\n this.focusNextNode(nextNode, false);\n } else {\n this.focusNextNode(nextNode, isTowards);\n }\n }\n };\n TreeView.prototype.getNextNode = function (li) {\n var index = this.liList.indexOf(li);\n var nextNode;\n do {\n index++;\n nextNode = this.liList[parseInt(index.toString(), 10)];\n if (isNOU(nextNode)) {\n return li;\n }\n } while (!isVisible(nextNode));\n return nextNode;\n };\n TreeView.prototype.getPrevNode = function (li) {\n var index = this.liList.indexOf(li);\n var prevNode;\n do {\n index--;\n prevNode = this.liList[parseInt(index.toString(), 10)];\n if (isNOU(prevNode)) {\n return li;\n }\n } while (!isVisible(prevNode));\n return prevNode;\n };\n TreeView.prototype.getRootNode = function () {\n var index = 0;\n var rootNode;\n do {\n rootNode = this.liList[parseInt(index.toString(), 10)];\n index++;\n } while (!isVisible(rootNode));\n return rootNode;\n };\n TreeView.prototype.getEndNode = function () {\n var index = this.liList.length - 1;\n var endNode;\n do {\n endNode = this.liList[parseInt(index.toString(), 10)];\n index--;\n } while (!isVisible(endNode));\n return endNode;\n };\n TreeView.prototype.setFocus = function (preNode, nextNode) {\n removeClass([preNode], FOCUS);\n preNode.setAttribute('tabindex', '-1');\n if (!nextNode.classList.contains('e-disable')) {\n addClass([nextNode], FOCUS);\n nextNode.setAttribute('tabindex', '0');\n nextNode.focus();\n EventHandler.add(nextNode, 'blur', this.focusOut, this);\n this.updateIdAttr(preNode, nextNode);\n }\n };\n TreeView.prototype.updateIdAttr = function (preNode, nextNode) {\n this.element.removeAttribute('aria-activedescendant');\n if (preNode) {\n preNode.removeAttribute('id');\n }\n nextNode.setAttribute('id', this.element.id + '_active');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n };\n TreeView.prototype.focusIn = function () {\n if (!this.mouseDownStatus) {\n var focusedElement = this.getFocusedNode();\n if (focusedElement.classList.contains('e-disable')) {\n focusedElement.setAttribute('tabindex', '-1');\n this.navigateNode(true);\n } else {\n focusedElement.setAttribute('tabindex', '0');\n addClass([focusedElement], FOCUS);\n EventHandler.add(focusedElement, 'blur', this.focusOut, this);\n }\n this.mouseDownStatus = false;\n }\n };\n TreeView.prototype.focusOut = function (event) {\n var focusedElement = this.getFocusedNode();\n if (event.target === focusedElement) {\n removeClass([focusedElement], FOCUS);\n EventHandler.remove(focusedElement, 'blur', this.focusOut);\n }\n };\n TreeView.prototype.onMouseOver = function (e) {\n if (Browser.isDevice) {\n return;\n }\n var target = e.target;\n var classList = target.classList;\n var currentLi = closest(target, '.' + LISTITEM);\n if (!currentLi || classList.contains(PARENTITEM) || classList.contains(LISTITEM)) {\n this.removeHover();\n return;\n } else {\n if (currentLi && !currentLi.classList.contains('e-disable')) {\n this.setHover(currentLi);\n }\n }\n };\n TreeView.prototype.setHover = function (li) {\n if (!li.classList.contains(HOVER) && !li.classList.contains(PREVENTSELECT)) {\n this.removeHover();\n addClass([li], HOVER);\n }\n };\n TreeView.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n TreeView.prototype.removeHover = function () {\n var hoveredNode = selectAll('.' + HOVER, this.element);\n if (hoveredNode && hoveredNode.length) {\n removeClass(hoveredNode, HOVER);\n }\n };\n TreeView.prototype.getNodeData = function (currLi, fromDS) {\n if (!isNOU(currLi) && currLi.classList.contains(LISTITEM) && !isNOU(closest(currLi, '.' + CONTROL)) && closest(currLi, '.' + CONTROL).classList.contains(ROOT)) {\n var id = currLi.getAttribute('data-uid');\n var text = this.getText(currLi, fromDS);\n var pNode = closest(currLi.parentNode, '.' + LISTITEM);\n var pid = pNode ? pNode.getAttribute('data-uid') : null;\n var selected = currLi.classList.contains(ACTIVE);\n var selectable = currLi.classList.contains(PREVENTSELECT) ? false : true;\n var expanded = currLi.getAttribute('aria-expanded') === 'true' ? true : false;\n var hasChildren = currLi.getAttribute('aria-expanded') !== null ? true : (select('.' + EXPANDABLE, currLi) || select('.' + COLLAPSIBLE, currLi)) != null ? true : false;\n var checked = null;\n var checkboxElement = select('.' + CHECKBOXWRAP, currLi);\n if (this.showCheckBox && checkboxElement) {\n checked = currLi.getAttribute('aria-checked');\n }\n return {\n id: id,\n text: text,\n parentID: pid,\n selected: selected,\n selectable: selectable,\n expanded: expanded,\n isChecked: checked,\n hasChildren: hasChildren\n };\n }\n return {\n id: '',\n text: '',\n parentID: '',\n selected: false,\n expanded: false,\n isChecked: '',\n hasChildren: false\n };\n };\n TreeView.prototype.getText = function (currLi, fromDS) {\n if (fromDS) {\n var nodeData = this.getNodeObject(currLi.getAttribute('data-uid'));\n var level = parseFloat(currLi.getAttribute('aria-level'));\n var nodeFields = this.getFields(this.fields, level, 1);\n return getValue(nodeFields.text, nodeData);\n }\n return select('.' + LISTTEXT, currLi).textContent;\n };\n TreeView.prototype.getExpandEvent = function (currLi, e) {\n var nodeData = this.getNodeData(currLi);\n return {\n cancel: false,\n isInteracted: isNOU(e) ? false : true,\n node: currLi,\n nodeData: nodeData,\n event: e\n };\n };\n TreeView.prototype.renderNodeTemplate = function (data, textEle, dataId) {\n var tempArr = this.nodeTemplateFn(data, this, 'nodeTemplate' + dataId, this.element.id + 'nodeTemplate', this.isStringTemplate, undefined, textEle, this.root);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, textEle);\n }\n };\n TreeView.prototype.destroyTemplate = function (liEle) {\n this.clearTemplate(['nodeTemplate' + liEle.getAttribute('data-uid')]);\n };\n TreeView.prototype.reRenderNodes = function () {\n this.updateListProp(this.fields);\n if (Browser.isIE) {\n this.ulElement = this.element.querySelector('.e-list-parent.e-ul');\n this.ulElement.parentElement.removeChild(this.ulElement);\n } else {\n this.element.innerHTML = '';\n }\n if (!isNOU(this.nodeTemplateFn)) {\n this.clearTemplate();\n }\n this.setTouchClass();\n this.setProperties({\n selectedNodes: [],\n checkedNodes: [],\n expandedNodes: []\n }, true);\n this.checkedElement = [];\n this.isLoaded = false;\n this.setDataBinding(true);\n };\n TreeView.prototype.setCssClass = function (oldClass, newClass) {\n if (!isNOU(oldClass) && oldClass !== '') {\n removeClass([this.element], oldClass.split(' '));\n }\n if (!isNOU(newClass) && newClass !== '') {\n addClass([this.element], newClass.split(' '));\n }\n };\n TreeView.prototype.editingHandler = function (e) {\n var target = e.target;\n if (!target || target.classList.contains(ROOT) || target.classList.contains(PARENTITEM) || target.classList.contains(LISTITEM) || target.classList.contains(ICON) || target.classList.contains(INPUT) || target.classList.contains(INPUTGROUP)) {\n return;\n } else {\n var liEle = closest(target, '.' + LISTITEM);\n this.createTextbox(liEle);\n }\n };\n TreeView.prototype.createTextbox = function (liEle) {\n var _this = this;\n var oldInpEle = select('.' + TREEINPUT, this.element);\n if (oldInpEle) {\n oldInpEle.blur();\n }\n var textEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var innerEle = this.createElement('input', {\n className: TREEINPUT,\n attrs: {\n value: this.oldText\n }\n });\n var eventArgs = this.getEditEvent(liEle, null, innerEle.outerHTML);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var inpWidth = textEle.offsetWidth + 5;\n var style_1 = 'width:' + inpWidth + 'px';\n addClass([liEle], EDITING);\n if (!isNOU(_this.nodeTemplateFn)) {\n _this.destroyTemplate(liEle);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (_this.isReact) {\n setTimeout(function () {\n _this.renderTextBox(eventArgs, textEle, style_1);\n }, 5);\n } else {\n _this.renderTextBox(eventArgs, textEle, style_1);\n }\n }\n });\n };\n TreeView.prototype.renderTextBox = function (eventArgs, textEle, style) {\n textEle.innerHTML = eventArgs.innerHtml;\n var inpEle = select('.' + TREEINPUT, textEle);\n this.inputObj = Input.createInput({\n element: inpEle,\n properties: {\n enableRtl: this.enableRtl\n }\n }, this.createElement);\n this.inputObj.container.setAttribute('style', style);\n inpEle.focus();\n var inputEle = inpEle;\n inputEle.setSelectionRange(0, inputEle.value.length);\n this.wireInputEvents(inpEle);\n };\n TreeView.prototype.updateOldText = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n this.editData = this.getNodeObject(id);\n var level = parseFloat(liEle.getAttribute('aria-level'));\n this.editFields = this.getFields(this.fields, level, 1);\n this.oldText = getValue(this.editFields.text, this.editData);\n };\n TreeView.prototype.inputFocusOut = function (e) {\n if (!select('.' + TREEINPUT, this.element)) {\n return;\n }\n var target = e.target;\n var newText = target.value;\n var txtEle = closest(target, '.' + LISTTEXT);\n var liEle = closest(target, '.' + LISTITEM);\n detach(this.inputObj.container);\n Input.destroy({\n element: target,\n properties: this.properties\n });\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n this.crudOperation('update', null, liEle, newText, null, null, true);\n } else {\n this.appendNewText(liEle, txtEle, newText, true);\n }\n EventHandler.remove(target, 'blur', this.inputFocusOut);\n this.inputObj = null;\n detach(target);\n target = null;\n };\n TreeView.prototype.appendNewText = function (liEle, txtEle, newText, isInput) {\n var _this = this;\n var eventArgs = this.getEditEvent(liEle, newText, null);\n this.trigger('nodeEdited', eventArgs, function (observedArgs) {\n newText = observedArgs.cancel ? observedArgs.oldText : observedArgs.newText;\n _this.updateText(liEle, txtEle, newText, isInput);\n if (observedArgs.oldText !== newText) {\n _this.triggerEvent('nodeEdited', [_this.getNode(liEle)]);\n }\n });\n };\n TreeView.prototype.updateText = function (liEle, txtEle, newText, isInput) {\n var newData = setValue(this.editFields.text, newText, this.editData);\n if (!isNOU(this.nodeTemplateFn)) {\n txtEle.innerText = '';\n var dataId = liEle.getAttribute('data-uid');\n this.renderNodeTemplate(newData, txtEle, dataId);\n this.renderReactTemplates();\n } else {\n if (this.enableHtmlSanitizer) {\n txtEle.innerText = SanitizeHtmlHelper.sanitize(newText);\n } else {\n txtEle.innerHTML = newText;\n }\n }\n if (isInput) {\n removeClass([liEle], EDITING);\n liEle.focus();\n EventHandler.add(liEle, 'blur', this.focusOut, this);\n addClass([liEle], FOCUS);\n }\n if (this.allowTextWrap) {\n this.calculateWrap(liEle);\n }\n };\n TreeView.prototype.getElement = function (ele) {\n if (isNOU(ele)) {\n return null;\n } else if (typeof ele === 'string') {\n return this.element.querySelector('[data-uid=\"' + ele + '\"]');\n } else if (typeof ele === 'object') {\n return getElement(ele);\n } else {\n return null;\n }\n };\n TreeView.prototype.getId = function (ele) {\n if (isNOU(ele)) {\n return null;\n } else if (typeof ele === 'string') {\n return ele;\n } else if (typeof ele === 'object') {\n return getElement(ele).getAttribute('data-uid');\n } else {\n return null;\n }\n };\n TreeView.prototype.getEditEvent = function (liEle, newText, inpEle) {\n var data = this.getNodeData(liEle);\n return {\n cancel: false,\n newText: newText,\n node: liEle,\n nodeData: data,\n oldText: this.oldText,\n innerHtml: inpEle\n };\n };\n TreeView.prototype.getNodeObject = function (id) {\n var childNodes;\n if (isNOU(id)) {\n return childNodes;\n } else if (this.dataType === 1) {\n for (var i = 0, objlen = this.treeData.length; i < objlen; i++) {\n var dataId = getValue(this.fields.id, this.treeData[parseInt(i.toString(), 10)]);\n if (!isNOU(this.treeData[parseInt(i.toString(), 10)]) && !isNOU(dataId) && dataId.toString() === id) {\n return this.treeData[parseInt(i.toString(), 10)];\n }\n }\n } else {\n return this.getChildNodeObject(this.treeData, this.fields, id);\n }\n return childNodes;\n };\n TreeView.prototype.getChildNodeObject = function (obj, mapper, id) {\n var newList;\n if (isNOU(obj)) {\n return newList;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataId = getValue(mapper.id, obj[parseInt(i.toString(), 10)]);\n if (obj[parseInt(i.toString(), 10)] && dataId && dataId.toString() === id) {\n return obj[parseInt(i.toString(), 10)];\n } else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[parseInt(i.toString(), 10)]))) {\n var childData = getValue(mapper.child, obj[parseInt(i.toString(), 10)]);\n newList = this.getChildNodeObject(childData, this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n } else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[parseInt(i.toString(), 10)]))) {\n var child = 'child';\n newList = this.getChildNodeObject(getValue(child, obj[parseInt(i.toString(), 10)]), this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n } else if (this.isChildObject()) {\n var children = 'child';\n var childData = getValue(children, obj[parseInt(i.toString(), 10)]);\n newList = this.getChildNodeObject(childData, this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n }\n return newList;\n };\n TreeView.prototype.setDragAndDrop = function (toBind) {\n if (toBind && !this.disabled) {\n this.initializeDrag();\n } else {\n this.destroyDrag();\n }\n };\n TreeView.prototype.initializeDrag = function () {\n var _this = this;\n var virtualEle;\n this.dragObj = new Draggable(this.element, {\n enableTailMode: true,\n enableAutoScroll: true,\n dragArea: this.dragArea,\n dragTarget: '.' + TEXTWRAP,\n enableTapHold: true,\n tapHoldThreshold: 100,\n helper: function (e) {\n _this.dragTarget = e.sender.target;\n var dragRoot = closest(_this.dragTarget, '.' + ROOT);\n var dragWrap = closest(_this.dragTarget, '.' + TEXTWRAP);\n _this.dragLi = closest(_this.dragTarget, '.' + LISTITEM);\n if (_this.fullRowSelect && !dragWrap && _this.dragTarget.classList.contains(FULLROW)) {\n dragWrap = _this.dragTarget.nextElementSibling;\n }\n if (!_this.dragTarget || !e.element.isSameNode(dragRoot) || !dragWrap || _this.dragTarget.classList.contains(ROOT) || _this.dragTarget.classList.contains(PARENTITEM) || _this.dragTarget.classList.contains(LISTITEM) || _this.dragLi.classList.contains('e-disable')) {\n return false;\n }\n var cloneEle = dragWrap.cloneNode(true);\n if (isNOU(select('div.' + ICON, cloneEle))) {\n var icon = _this.createElement('div', {\n className: ICON + ' ' + EXPANDABLE\n });\n cloneEle.insertBefore(icon, cloneEle.children[0]);\n }\n var cssClass = DRAGITEM + ' ' + ROOT + ' ' + _this.cssClass + ' ' + (_this.enableRtl ? RTL : '');\n virtualEle = _this.createElement('div', {\n className: cssClass\n });\n virtualEle.appendChild(cloneEle);\n var nLen = _this.selectedNodes.length;\n if (nLen > 1 && _this.allowMultiSelection && _this.dragLi.classList.contains(ACTIVE)) {\n var cNode = _this.createElement('span', {\n className: DROPCOUNT,\n innerHTML: '' + nLen\n });\n virtualEle.appendChild(cNode);\n }\n document.body.appendChild(virtualEle);\n document.body.style.cursor = '';\n _this.dragData = _this.getNodeData(_this.dragLi);\n return virtualEle;\n },\n dragStart: function (e) {\n addClass([_this.element], DRAGGING);\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, null, e.target, null, virtualEle, level);\n if (eventArgs.draggedNode.classList.contains(EDITING)) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n } else {\n _this.trigger('nodeDragStart', eventArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n } else {\n _this.dragStartAction = true;\n }\n });\n }\n },\n drag: function (e) {\n _this.dragObj.setProperties({\n cursorAt: {\n top: !isNOU(e.event.targetTouches) || Browser.isDevice ? 60 : -20\n }\n });\n _this.dragAction(e, virtualEle);\n },\n dragStop: function (e) {\n removeClass([_this.element], DRAGGING);\n if (!e.target.classList.contains('e-sibling')) {\n _this.removeVirtualEle();\n }\n var dropTarget = e.target;\n var preventTargetExpand = false;\n var dropRoot = closest(dropTarget, '.' + DROPPABLE);\n // eslint-disable-next-line\n var isHelperElement = true;\n if (!dropTarget || !dropRoot) {\n detach(e.helper);\n document.body.style.cursor = '';\n }\n var listItem = closest(dropTarget, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, dropTarget, dropTarget, null, e.helper, level);\n eventArgs.preventTargetExpand = preventTargetExpand;\n _this.trigger('nodeDragStop', eventArgs, function (observedArgs) {\n _this.dragParent = observedArgs.draggedParentNode;\n _this.preventExpand = observedArgs.preventTargetExpand;\n if (observedArgs.cancel) {\n if (e.helper.parentNode) {\n detach(e.helper);\n }\n document.body.style.cursor = '';\n isHelperElement = false;\n if (dropTarget.classList.contains('e-sibling')) {\n _this.removeVirtualEle();\n }\n }\n _this.dragStartAction = false;\n });\n }\n });\n this.dropObj = new Droppable(this.element, {\n out: function (e) {\n if (!isNOU(e) && !e.target.classList.contains(SIBLING) && _this.dropObj.dragData.default && _this.dropObj.dragData.default.helper.classList.contains(ROOT)) {\n document.body.style.cursor = 'not-allowed';\n }\n },\n over: function () {\n document.body.style.cursor = '';\n },\n drop: function (e) {\n _this.dropAction(e);\n _this.removeVirtualEle();\n }\n });\n };\n TreeView.prototype.dragCancelAction = function (virtualEle) {\n detach(virtualEle);\n removeClass([this.element], DRAGGING);\n this.dragStartAction = false;\n };\n TreeView.prototype.getOffsetX = function (event, target) {\n var touchList = event.changedTouches;\n if (touchList && touchList.length > 0) {\n return touchList[0].clientX - target.getBoundingClientRect().left;\n } else {\n return event.offsetX;\n }\n };\n TreeView.prototype.getOffsetY = function (event, target) {\n var touchList = event.changedTouches;\n if (touchList && touchList.length > 0) {\n return touchList[0].clientY - target.getBoundingClientRect().top;\n } else {\n return event.offsetY;\n }\n };\n TreeView.prototype.dragAction = function (e, virtualEle) {\n var dropRoot = closest(e.target, '.' + DROPPABLE);\n var dropWrap = closest(e.target, '.' + TEXTWRAP);\n var icon = select('div.' + ICON, virtualEle);\n removeClass([icon], [DROPIN, DROPNEXT, DROPOUT, NODROP]);\n this.isDropIn = false;\n this.removeVirtualEle();\n document.body.style.cursor = '';\n var classList = e.target.classList;\n var event = e.event;\n var offsetY = this.getOffsetY(event, e.target);\n var offsetX = this.getOffsetX(event, e.target);\n if (this.fullRowSelect && !dropWrap && !isNOU(classList) && classList.contains(FULLROW)) {\n dropWrap = e.target.nextElementSibling;\n }\n if (dropRoot) {\n var dropLi = closest(e.target, '.' + LISTITEM);\n var checkWrapper = closest(e.target, '.' + CHECKBOXWRAP);\n var collapse = closest(e.target, '.' + COLLAPSIBLE);\n var expand = closest(e.target, '.' + EXPANDABLE);\n if (!dropRoot.classList.contains(ROOT) || dropWrap && !dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi)) {\n if (this.hasTemplate && dropLi) {\n var templateTarget = select(this.fullRowSelect ? '.' + FULLROW : '.' + TEXTWRAP, dropLi);\n if (e && !expand && !collapse && offsetY < 7 && !checkWrapper || expand && offsetY < 5 || collapse && offsetX < 3) {\n var index = this.fullRowSelect ? 1 : 0;\n this.appendIndicator(dropLi, icon, index);\n } else if (e && !expand && !collapse && !checkWrapper && templateTarget && offsetY > templateTarget.offsetHeight - 10 || expand && offsetY > 19 || collapse && offsetX > 19) {\n var index = this.fullRowSelect ? 2 : 1;\n this.appendIndicator(dropLi, icon, index);\n } else {\n addClass([icon], DROPIN);\n this.isDropIn = true;\n }\n } else {\n if (dropLi && e && !expand && !collapse && offsetY < 7 && !checkWrapper || expand && offsetY < 5 || collapse && offsetX < 3) {\n var index = this.fullRowSelect ? 1 : 0;\n this.appendIndicator(dropLi, icon, index);\n } else if (dropLi && e && !expand && !collapse && e.target.offsetHeight > 0 && offsetY > e.target.offsetHeight - 10 && !checkWrapper || expand && offsetY > 19 || collapse && offsetX > 19) {\n var index = this.fullRowSelect ? 2 : 1;\n this.appendIndicator(dropLi, icon, index);\n } else {\n addClass([icon], DROPIN);\n this.isDropIn = true;\n }\n }\n } else if (e.target.nodeName === 'LI' && !dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi)) {\n addClass([icon], DROPNEXT);\n this.renderVirtualEle(e);\n } else if (e.target.classList.contains(SIBLING)) {\n addClass([icon], DROPNEXT);\n } else {\n addClass([icon], DROPOUT);\n }\n } else {\n addClass([icon], NODROP);\n document.body.style.cursor = 'not-allowed';\n }\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = this.getDragEvent(e.event, this, e.target, e.target, null, virtualEle, level);\n if (eventArgs.dropIndicator) {\n removeClass([icon], eventArgs.dropIndicator);\n }\n this.trigger('nodeDragging', eventArgs);\n if (eventArgs.dropIndicator) {\n addClass([icon], eventArgs.dropIndicator);\n }\n };\n TreeView.prototype.appendIndicator = function (dropLi, icon, index) {\n addClass([icon], DROPNEXT);\n var virEle = this.createElement('div', {\n className: SIBLING\n });\n dropLi.insertBefore(virEle, dropLi.children[parseInt(index.toString(), 10)]);\n };\n TreeView.prototype.dropAction = function (e) {\n var event = e.event;\n var offsetY = this.getOffsetY(event, e.target);\n var dropTarget = e.target;\n var dragObj;\n var level;\n var drop = false;\n var nodeData = [];\n var liArray = [];\n var dragInstance = e.dragData.draggable;\n for (var i = 0; i < dragInstance.ej2_instances.length; i++) {\n if (dragInstance.ej2_instances[parseInt(i.toString(), 10)] instanceof TreeView_1) {\n dragObj = dragInstance.ej2_instances[parseInt(i.toString(), 10)];\n break;\n }\n }\n if (dragObj && dragObj.dragTarget) {\n var dragTarget = dragObj.dragTarget;\n var dragLi = closest(dragTarget, '.' + LISTITEM);\n var dropLi = closest(dropTarget, '.' + LISTITEM);\n liArray.push(dragLi);\n if (dropLi == null && dropTarget.classList.contains(ROOT)) {\n dropLi = dropTarget.firstElementChild;\n }\n detach(e.droppedElement);\n document.body.style.cursor = '';\n if (!dropLi || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n return;\n }\n if (dragObj.allowMultiSelection && dragLi.classList.contains(ACTIVE)) {\n var sNodes = selectAll('.' + ACTIVE, dragObj.element);\n liArray = sNodes;\n if (e.target.offsetHeight <= 33 && offsetY > e.target.offsetHeight - 10 && offsetY > 6) {\n for (var i = sNodes.length - 1; i >= 0; i--) {\n if (dropLi.isSameNode(sNodes[parseInt(i.toString(), 10)]) || this.isDescendant(sNodes[parseInt(i.toString(), 10)], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[parseInt(i.toString(), 10)], dropLi, e, dragObj, offsetY);\n }\n } else {\n for (var i = 0; i < sNodes.length; i++) {\n if (dropLi.isSameNode(sNodes[parseInt(i.toString(), 10)]) || this.isDescendant(sNodes[parseInt(i.toString(), 10)], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[parseInt(i.toString(), 10)], dropLi, e, dragObj, offsetY);\n }\n }\n } else {\n this.appendNode(dropTarget, dragLi, dropLi, e, dragObj, offsetY);\n }\n level = parseInt(dragLi.getAttribute('aria-level'), 10);\n drop = true;\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n for (var i = 0; i < liArray.length; i++) {\n nodeData.push(this.getNode(liArray[parseInt(i.toString(), 10)]));\n }\n this.trigger('nodeDropped', this.getDragEvent(e.event, dragObj, dropTarget, e.target, e.dragData.draggedElement, null, level, drop));\n if (dragObj.element.id !== this.element.id) {\n dragObj.triggerEvent('nodeDropped', nodeData);\n this.isNodeDropped = true;\n this.fields.dataSource = this.treeData;\n }\n this.triggerEvent('nodeDropped', nodeData);\n };\n TreeView.prototype.appendNode = function (dropTarget, dragLi, dropLi, e, dragObj, offsetY) {\n var checkWrapper = closest(dropTarget, '.' + CHECKBOXWRAP);\n var collapse = closest(e.target, '.' + COLLAPSIBLE);\n var expand = closest(e.target, '.' + EXPANDABLE);\n if (!dragLi.classList.contains('e-disable') && !checkWrapper && (expand && e.event.offsetY < 5 || collapse && e.event.offsetX < 3 || expand && e.event.offsetY > 19 || collapse && e.event.offsetX > 19 || !expand && !collapse)) {\n if (dropTarget.nodeName === 'LI') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n } else if (dropTarget.firstElementChild && dropTarget.classList.contains(ROOT)) {\n if (dropTarget.firstElementChild.nodeName === 'UL') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n } else if (dropTarget.classList.contains('e-icon-collapsible') || dropTarget.classList.contains('e-icon-expandable')) {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n } else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY, null, dropTarget);\n }\n } else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY, true, dropTarget);\n }\n if (this.showCheckBox) {\n this.ensureIndeterminate();\n }\n };\n TreeView.prototype.dropAsSiblingNode = function (dragLi, dropLi, e, dragObj) {\n var dropUl = closest(dropLi, '.' + PARENTITEM);\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var pre;\n if (e.target.offsetHeight > 0 && e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n } else if (e.event.offsetY < 2) {\n pre = true;\n } else if (e.target.classList.contains('e-icon-expandable') || e.target.classList.contains('e-icon-collapsible')) {\n if (e.event.offsetY < 5 || e.event.offsetX < 3) {\n pre = true;\n } else if (e.event.offsetY > 15 || e.event.offsetX > 17) {\n pre = false;\n }\n }\n if (e.target.classList.contains('e-icon-expandable') || e.target.classList.contains('e-icon-collapsible')) {\n var target = e.target.closest('li');\n dropUl.insertBefore(dragLi, pre ? target : target.nextElementSibling);\n } else {\n dropUl.insertBefore(dragLi, pre ? e.target : e.target.nextElementSibling);\n }\n this.moveData(dragLi, dropLi, dropUl, pre, dragObj);\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n } else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.dropAsChildNode = function (dragLi, dropLi, dragObj, index, e, pos, isCheck, dropTarget) {\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var dropParentUl = closest(dropLi, '.' + PARENTITEM);\n var templateTarget;\n if (e && e.target) {\n templateTarget = select(this.fullRowSelect ? '.' + FULLROW : '.' + TEXTWRAP, dropLi);\n }\n if (e && (pos < 7 && !dropTarget.classList.contains('e-sibling') || dropTarget.classList.contains('e-sibling') && !dropLi.lastChild.classList.contains('e-sibling')) && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi);\n this.moveData(dragLi, dropLi, dropParentUl, true, dragObj);\n } else if (e && e.target.offsetHeight > 0 && pos > e.target.offsetHeight - 10 && !isCheck && !this.hasTemplate) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n } else if (this.hasTemplate && templateTarget && pos > templateTarget.offsetHeight - 10 && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n } else {\n var dropUl = this.expandParent(dropLi);\n var childLi = !isNullOrUndefined(index) ? dropUl.childNodes[parseInt(index.toString(), 10)] : null;\n dropUl.insertBefore(dragLi, childLi);\n this.moveData(dragLi, childLi, dropUl, true, dragObj);\n }\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n } else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.moveData = function (dragLi, dropLi, dropUl, pre, dragObj) {\n var dropParentLi = closest(dropUl, '.' + LISTITEM);\n var id = this.getId(dragLi);\n var removedData = dragObj.updateChildField(dragObj.treeData, dragObj.fields, id, null, null, true);\n var refId = this.getId(dropLi);\n var index = this.getDataPos(this.treeData, this.fields, refId);\n var parentId = this.getId(dropParentLi);\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', true);\n var pos = isNOU(index) ? this.treeData.length : pre ? index : index + 1;\n if (isNOU(parentId) && !this.hasPid) {\n delete removedData[0][this.fields.parentID];\n } else {\n var currPid = this.isNumberTypeId ? parseFloat(parentId) : parentId;\n setValue(this.fields.parentID, currPid, removedData[0]);\n }\n this.treeData.splice(pos, 0, removedData[0]);\n if (dragObj.element.id !== this.element.id) {\n var childData = dragObj.removeChildNodes(id);\n pos++;\n for (var i = 0, len = childData.length; i < len; i++) {\n this.treeData.splice(pos, 0, childData[parseInt(i.toString(), 10)]);\n pos++;\n }\n dragObj.groupedData = dragObj.getGroupedData(dragObj.treeData, dragObj.fields.parentID);\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n } else {\n this.addChildData(this.treeData, this.fields, parentId, removedData, pre ? index : index + 1);\n }\n };\n TreeView.prototype.expandParent = function (dropLi) {\n var dropIcon = select('div.' + EXPANDABLE + ', div.' + COLLAPSIBLE, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && this.preventExpand !== true) {\n this.expandAction(dropLi, dropIcon, null);\n }\n var dropUl = select('.' + PARENTITEM, dropLi);\n if (this.preventExpand === true && !dropUl && dropIcon) {\n this.renderChildNodes(dropLi);\n }\n dropUl = select('.' + PARENTITEM, dropLi);\n if (!isNOU(dropUl) && this.preventExpand === true) {\n dropUl.style.display = 'none';\n }\n if (!isNOU(dropUl) && this.preventExpand === false) {\n dropUl.style.display = 'block';\n }\n if (isNOU(dropUl) && this.preventExpand === true) {\n if (isNOU(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n var icon = select('div.' + EXPANDABLE + ', div.' + COLLAPSIBLE, dropLi);\n if (icon) {\n icon.classList.add('e-icon-expandable');\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n if (icon) {\n removeClass([icon], COLLAPSIBLE);\n } else {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n dropLi.setAttribute('aria-expanded', 'false');\n dropUl.style.display = 'none';\n }\n if (isNOU(dropUl)) {\n var args = this.expandArgs;\n if (isNOU(args) || args && args.name !== 'nodeExpanding') {\n this.trigger('nodeExpanding', this.getExpandEvent(dropLi, null));\n }\n if (isNOU(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n }\n var icon = select('div.' + EXPANDABLE + ', div.' + COLLAPSIBLE, dropLi);\n if (icon) {\n removeClass([icon], EXPANDABLE);\n } else {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n icon = select('div.' + ICON, dropLi);\n removeClass([icon], EXPANDABLE);\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n this.addExpand(dropLi);\n this.trigger('nodeExpanded', this.getExpandEvent(dropLi, null));\n }\n var collapseIcon = select('div.' + COLLAPSIBLE, dropLi);\n if (!isNOU(dropUl) && collapseIcon && this.preventExpand) {\n removeClass([collapseIcon], COLLAPSIBLE);\n dropLi.setAttribute('aria-expanded', 'false');\n addClass([collapseIcon], EXPANDABLE);\n }\n return dropUl;\n };\n TreeView.prototype.updateElement = function (dragParentUl, dragParentLi) {\n if (dragParentLi && dragParentUl.childElementCount === 0) {\n var dragIcon = select('div.' + ICON, dragParentLi);\n detach(dragParentUl);\n detach(dragIcon);\n var parentId = this.getId(dragParentLi);\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', false);\n this.removeExpand(dragParentLi, true);\n }\n };\n TreeView.prototype.updateAriaLevel = function (dragLi) {\n var level = this.parents(dragLi, '.' + PARENTITEM).length;\n dragLi.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, dragLi), level + 1);\n };\n TreeView.prototype.updateChildAriaLevel = function (element, level) {\n if (!isNOU(element)) {\n var cNodes = element.childNodes;\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[parseInt(i.toString(), 10)];\n liEle.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, liEle), level + 1);\n }\n }\n };\n TreeView.prototype.renderVirtualEle = function (e) {\n var pre;\n var event = e.event;\n var offsetY = this.getOffsetY(event, e.target);\n if (offsetY > e.target.offsetHeight - 2) {\n pre = false;\n } else if (offsetY < 2) {\n pre = true;\n }\n var virEle = this.createElement('div', {\n className: SIBLING\n });\n var index = this.fullRowSelect ? pre ? 1 : 2 : pre ? 0 : 1;\n e.target.insertBefore(virEle, e.target.children[parseInt(index.toString(), 10)]);\n };\n TreeView.prototype.removeVirtualEle = function () {\n var sibEle = select('.' + SIBLING);\n if (sibEle) {\n detach(sibEle);\n }\n };\n TreeView.prototype.destroyDrag = function () {\n if (this.dragObj && this.dropObj) {\n this.dragObj.destroy();\n this.dropObj.destroy();\n }\n };\n TreeView.prototype.getDragEvent = function (event, obj, dropTarget, target, dragNode, cloneEle, level, drop) {\n var dropLi = dropTarget ? closest(dropTarget, '.' + LISTITEM) : null;\n var dropData = dropLi ? this.getNodeData(dropLi) : null;\n var draggedNode = obj ? obj.dragLi : dragNode;\n var draggedNodeData = obj ? obj.dragData : null;\n var newParent = dropTarget ? this.parents(dropTarget, '.' + LISTITEM) : null;\n var dragLiParent = obj.dragLi.parentElement;\n var dragParent = obj.dragLi ? closest(dragLiParent, '.' + LISTITEM) : null;\n var targetParent = null;\n var indexValue = null;\n var iconCss = [DROPNEXT, DROPIN, DROPOUT, NODROP];\n var iconClass = null;\n var node = drop === true ? draggedNode : dropLi;\n var index = node ? closest(node, '.e-list-parent') : null;\n var i = 0;\n var position = null;\n dragParent = obj.dragLi && dragParent === null ? closest(dragLiParent, '.' + ROOT) : dragParent;\n dragParent = drop === true ? this.dragParent : dragParent;\n if (cloneEle) {\n while (i < 4) {\n if (select('.' + ICON, cloneEle).classList.contains(iconCss[parseInt(i.toString(), 10)])) {\n iconClass = iconCss[parseInt(i.toString(), 10)];\n break;\n }\n i++;\n }\n }\n if (index) {\n var dropTar = 0;\n for (i = 0; i < index.childElementCount; i++) {\n dropTar = drop !== true && index.children[parseInt(i.toString(), 10)] === draggedNode && dropLi !== draggedNode ? ++dropTar : dropTar;\n if (drop !== true && index.children[parseInt(i.toString(), 10)].classList.contains('e-hover')) {\n indexValue = event.offsetY >= 23 ? i + 1 : i;\n break;\n } else if (index.children[parseInt(i.toString(), 10)] === node) {\n indexValue = event.offsetY >= 23 ? i : i;\n break;\n }\n }\n indexValue = dropTar !== 0 ? --indexValue : indexValue;\n position = this.isDropIn ? 'Inside' : event.offsetY < 7 ? 'Before' : 'After';\n }\n if (dropTarget) {\n if (newParent.length === 0) {\n targetParent = null;\n } else if (dropTarget.classList.contains(LISTITEM)) {\n targetParent = newParent[0];\n } else {\n targetParent = newParent[1];\n }\n }\n if (dropLi === draggedNode) {\n targetParent = dropLi;\n }\n if (dropTarget && target.offsetHeight <= 33 && event.offsetY < target.offsetHeight - 10 && event.offsetY > 6) {\n targetParent = dropLi;\n if (drop !== true) {\n level = ++level;\n var parent_2 = targetParent ? select('.e-list-parent', targetParent) : null;\n indexValue = parent_2 ? parent_2.children.length : 0;\n if (!(this.fields.dataSource instanceof DataManager) && parent_2 === null && targetParent) {\n var parent_3 = targetParent.hasAttribute('data-uid') ? this.getChildNodes(this.fields.dataSource, targetParent.getAttribute('data-uid').toString()) : null;\n indexValue = parent_3 ? parent_3.length : 0;\n }\n }\n }\n return {\n cancel: false,\n clonedNode: cloneEle,\n event: event,\n draggedNode: draggedNode,\n draggedNodeData: draggedNodeData,\n droppedNode: dropLi,\n droppedNodeData: dropData,\n dropIndex: indexValue,\n dropLevel: level,\n draggedParentNode: dragParent,\n dropTarget: targetParent,\n dropIndicator: iconClass,\n target: target,\n position: position\n };\n };\n TreeView.prototype.addFullRow = function (toAdd) {\n var len = this.liList.length;\n if (toAdd) {\n for (var i = 0; i < len; i++) {\n this.createFullRow(this.liList[parseInt(i.toString(), 10)]);\n }\n } else {\n for (var i = 0; i < len; i++) {\n var rowDiv = select('.' + FULLROW, this.liList[parseInt(i.toString(), 10)]);\n detach(rowDiv);\n }\n }\n };\n TreeView.prototype.createFullRow = function (item) {\n var rowDiv = this.createElement('div', {\n className: FULLROW\n });\n item.insertBefore(rowDiv, item.childNodes[0]);\n };\n TreeView.prototype.addMultiSelect = function (toAdd) {\n if (toAdd) {\n var liEles = selectAll('.' + LISTITEM + ':not([aria-selected=\"true\"])', this.element);\n for (var _i = 0, liEles_1 = liEles; _i < liEles_1.length; _i++) {\n var ele = liEles_1[_i];\n ele.setAttribute('aria-selected', 'false');\n }\n } else {\n var liEles = selectAll('.' + LISTITEM + '[aria-selected=\"false\"]', this.element);\n for (var _a = 0, liEles_2 = liEles; _a < liEles_2.length; _a++) {\n var ele = liEles_2[_a];\n ele.removeAttribute('aria-selected');\n }\n }\n };\n TreeView.prototype.collapseByLevel = function (element, level, excludeHiddenNodes, currentLevel) {\n currentLevel = isNOU(currentLevel) ? 1 : currentLevel;\n if (level > 0 && !isNOU(element)) {\n var cNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[parseInt(i.toString(), 10)];\n var icon = select('.' + COLLAPSIBLE, select('.' + TEXTWRAP, liEle));\n if (currentLevel >= level && !isNOU(icon)) {\n this.collapseNode(liEle, icon, null);\n }\n this.collapseByLevel(select('.' + PARENTITEM, liEle), level, excludeHiddenNodes, currentLevel + 1);\n }\n }\n };\n TreeView.prototype.collapseAllNodes = function (excludeHiddenNodes) {\n var cIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + COLLAPSIBLE, this.element));\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[parseInt(i.toString(), 10)];\n var liEle = closest(icon, '.' + LISTITEM);\n this.collapseNode(liEle, icon, null);\n }\n };\n TreeView.prototype.expandByLevel = function (element, level, excludeHiddenNodes) {\n if (level > 0 && !isNOU(element)) {\n var eNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n var liEle = eNodes[parseInt(i.toString(), 10)];\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n this.expandAction(liEle, icon, null);\n }\n this.expandByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\n }\n }\n };\n TreeView.prototype.expandAllNodes = function (excludeHiddenNodes) {\n var eIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + EXPANDABLE, this.element));\n for (var _i = 0, eIcons_1 = eIcons; _i < eIcons_1.length; _i++) {\n var icon = eIcons_1[_i];\n var liEle = closest(icon, '.' + LISTITEM);\n this.expandAction(liEle, icon, null, true, null, true);\n }\n };\n TreeView.prototype.getVisibleNodes = function (excludeHiddenNodes, nodes) {\n var vNodes = Array.prototype.slice.call(nodes);\n if (excludeHiddenNodes) {\n for (var i = 0; i < vNodes.length; i++) {\n if (!isVisible(vNodes[parseInt(i.toString(), 10)])) {\n vNodes.splice(i, 1);\n i--;\n }\n }\n }\n return vNodes;\n };\n TreeView.prototype.removeNode = function (node) {\n var dragParentUl = closest(node, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n if (!isNOU(this.nodeTemplateFn)) {\n this.destroyTemplate(node);\n }\n detach(node);\n this.updateElement(dragParentUl, dragParentLi);\n this.removeData(node);\n };\n TreeView.prototype.updateInstance = function () {\n this.updateList();\n this.updateSelectedNodes();\n this.updateExpandedNodes();\n };\n TreeView.prototype.updateList = function () {\n this.liList = Array.prototype.slice.call(selectAll('.' + LISTITEM, this.element));\n };\n TreeView.prototype.updateSelectedNodes = function () {\n this.setProperties({\n selectedNodes: []\n }, true);\n var sNodes = selectAll('.' + ACTIVE, this.element);\n this.selectGivenNodes(sNodes);\n };\n TreeView.prototype.updateExpandedNodes = function () {\n this.setProperties({\n expandedNodes: []\n }, true);\n var eNodes = selectAll('[aria-expanded=\"true\"]', this.element);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n this.addExpand(eNodes[parseInt(i.toString(), 10)]);\n }\n };\n TreeView.prototype.removeData = function (node) {\n if (this.dataType === 1) {\n var dm = new DataManager(this.treeData);\n var id = this.getId(node);\n var data = {};\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = newId;\n dm.remove(this.fields.id, data);\n this.removeChildNodes(id);\n } else {\n var id = this.getId(node);\n this.updateChildField(this.treeData, this.fields, id, null, null, true);\n }\n };\n TreeView.prototype.removeChildNodes = function (parentId) {\n var cNodes = this.getChildGroup(this.groupedData, parentId, false);\n var childData = [];\n if (cNodes) {\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var dm = new DataManager(this.treeData);\n var id = getValue(this.fields.id, cNodes[parseInt(i.toString(), 10)]).toString();\n var data = {};\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = currId;\n var nodeData = dm.remove(this.fields.id, data);\n childData.push(nodeData[0]);\n this.removeChildNodes(id);\n }\n }\n return childData;\n };\n TreeView.prototype.doGivenAction = function (nodes, selector, toExpand) {\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[parseInt(i.toString(), 10)]);\n if (isNOU(liEle)) {\n continue;\n }\n var icon = select('.' + selector, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n if (toExpand) {\n this.expandAction(liEle, icon, null);\n } else {\n this.collapseNode(liEle, icon, null);\n }\n }\n }\n };\n TreeView.prototype.addGivenNodes = function (nodes, dropLi, index, isRemote, dropEle) {\n if (nodes.length === 0) {\n return;\n }\n var sNodes = this.getSortedData(nodes);\n var level = dropLi ? parseFloat(dropLi.getAttribute('aria-level')) + 1 : 1;\n if (isRemote) {\n this.updateMapper(level);\n }\n var li = ListBase.createListItemFromJson(this.createElement, sNodes, this.listBaseOption, level);\n var id = this.getId(dropLi);\n var dropIcon1;\n if (!isNullOrUndefined(dropLi)) {\n dropIcon1 = select('div.' + ICON, dropLi);\n }\n if (this.dataType === 1 && dropIcon1 && dropIcon1.classList.contains(EXPANDABLE) && this.preventExpand && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = true;\n }\n if (this.dataType !== 1) {\n this.addChildData(this.treeData, this.fields, id, nodes, index);\n this.isFirstRender = false;\n }\n var dropUl;\n if (!dropEle) {\n dropUl = dropLi ? this.expandParent(dropLi) : select('.' + PARENTITEM, this.element);\n } else {\n dropUl = dropEle;\n }\n var refNode = !isNullOrUndefined(index) ? dropUl.childNodes[parseInt(index.toString(), 10)] : null;\n if (!this.isFirstRender || this.dataType === 1) {\n var args = this.expandArgs;\n if (refNode || this.sortOrder === 'None') {\n for (var i = 0; i < li.length; i++) {\n dropUl.insertBefore(li[parseInt(i.toString(), 10)], refNode);\n }\n if (this.dataType === 1 && !isNullOrUndefined(dropLi) && !this.preventExpand && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = false;\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && (isNOU(args) || args.name !== 'nodeExpanding')) {\n this.expandAction(dropLi, dropIcon, null);\n }\n }\n }\n if (!refNode && (this.sortOrder === 'Ascending' || this.sortOrder === 'Descending')) {\n if (dropUl.childNodes.length === 0) {\n for (var i = 0; i < li.length; i++) {\n dropUl.insertBefore(li[parseInt(i.toString(), 10)], refNode);\n }\n if (this.dataType === 1 && !isNullOrUndefined(dropLi) && !this.preventExpand && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = false;\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && (isNOU(args) || args.name !== 'nodeExpanding')) {\n this.expandAction(dropLi, dropIcon, null);\n }\n }\n } else {\n var cNodes = dropUl.childNodes;\n for (var i = 0; i < li.length; i++) {\n for (var j = 0; j < cNodes.length; j++) {\n var returnValue = this.sortOrder === 'Ascending' ? cNodes[parseInt(j.toString(), 10)].textContent.toUpperCase() > li[parseInt(i.toString(), 10)].innerText.toUpperCase() : cNodes[parseInt(j.toString(), 10)].textContent.toUpperCase() < li[parseInt(i.toString(), 10)].innerText.toUpperCase();\n if (returnValue) {\n dropUl.insertBefore(li[parseInt(i.toString(), 10)], cNodes[parseInt(j.toString(), 10)]);\n break;\n }\n dropUl.insertBefore(li[parseInt(i.toString(), 10)], cNodes[cNodes.length]);\n }\n }\n }\n }\n }\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, id, 'hasChildren', true);\n var refId = this.getId(refNode);\n var pos = isNOU(refId) ? this.treeData.length : this.getDataPos(this.treeData, this.fields, refId);\n for (var j = 0; j < nodes.length; j++) {\n if (!isNOU(id)) {\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n setValue(this.fields.parentID, currId, nodes[parseInt(j.toString(), 10)]);\n }\n this.treeData.splice(pos, 0, nodes[parseInt(j.toString(), 10)]);\n pos++;\n }\n }\n this.finalizeNode(dropUl);\n };\n TreeView.prototype.updateMapper = function (level) {\n var mapper = level === 1 ? this.fields : this.getChildFields(this.fields, level - 1, 1);\n this.updateListProp(mapper);\n };\n TreeView.prototype.updateListProp = function (mapper) {\n var prop = this.getActualProperties(mapper);\n this.listBaseOption.fields = prop;\n this.listBaseOption.fields.url = Object.prototype.hasOwnProperty.call(prop, 'navigateUrl') ? prop.navigateUrl : 'navigateUrl';\n };\n TreeView.prototype.getDataPos = function (obj, mapper, id) {\n var pos = null;\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[parseInt(i.toString(), 10)]);\n if (obj[parseInt(i.toString(), 10)] && nodeId && nodeId.toString() === id) {\n return i;\n } else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[parseInt(i.toString(), 10)]))) {\n var data = getValue(mapper.child, obj[parseInt(i.toString(), 10)]);\n pos = this.getDataPos(data, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n } else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[parseInt(i.toString(), 10)]))) {\n var items = getValue('child', obj[parseInt(i.toString(), 10)]);\n pos = this.getDataPos(items, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n }\n return pos;\n };\n TreeView.prototype.addChildData = function (obj, mapper, id, data, index) {\n var updated;\n if (isNOU(id)) {\n index = isNOU(index) ? obj.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n obj.splice(index, 0, data[parseInt(k.toString(), 10)]);\n index++;\n }\n return updated;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[parseInt(i.toString(), 10)]);\n if (obj[parseInt(i.toString(), 10)] && nodeId && nodeId.toString() === id) {\n if (typeof mapper.child === 'string' && Object.prototype.hasOwnProperty.call(obj[parseInt(i.toString(), 10)], mapper.child) && obj[parseInt(i.toString(), 10)][mapper.child] !== null || this.fields.dataSource instanceof DataManager && Object.prototype.hasOwnProperty.call(obj[parseInt(i.toString(), 10)], 'child')) {\n var key = typeof mapper.child === 'string' ? mapper.child : 'child';\n var childData = getValue(key, obj[parseInt(i.toString(), 10)]);\n if (isNOU(childData)) {\n childData = [];\n }\n index = isNOU(index) ? childData.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n childData.splice(index, 0, data[parseInt(k.toString(), 10)]);\n index++;\n }\n } else {\n var key = typeof mapper.child === 'string' ? mapper.child : 'child';\n obj[parseInt(i.toString(), 10)][\"\" + key] = data;\n }\n return true;\n } else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[parseInt(i.toString(), 10)]))) {\n var childObj = getValue(mapper.child, obj[parseInt(i.toString(), 10)]);\n updated = this.addChildData(childObj, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n } else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[parseInt(i.toString(), 10)]))) {\n var childData = getValue('child', obj[parseInt(i.toString(), 10)]);\n updated = this.addChildData(childData, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n }\n return updated;\n };\n TreeView.prototype.doDisableAction = function (nodes) {\n var validNodes = this.nodeType(nodes);\n var validID = this.checkValidId(validNodes);\n this.validArr = [];\n for (var i = 0, len = validID.length; i < len; i++) {\n var id = validID[parseInt(i.toString(), 10)][this.fields.id].toString();\n if (id && this.disableNode.indexOf(id) === -1) {\n this.disableNode.push(id);\n }\n var liEle = this.getElement(id);\n if (liEle) {\n liEle.setAttribute('aria-disabled', 'true');\n addClass([liEle], DISABLE);\n }\n }\n };\n TreeView.prototype.doEnableAction = function (nodes) {\n var strNodes = this.nodeType(nodes);\n for (var i = 0, len = strNodes.length; i < len; i++) {\n var liEle = this.getElement(strNodes[parseInt(i.toString(), 10)]);\n var id = strNodes[parseInt(i.toString(), 10)];\n if (id && this.disableNode.indexOf(id) !== -1) {\n this.disableNode.splice(this.disableNode.indexOf(id), 1);\n }\n if (liEle) {\n liEle.removeAttribute('aria-disabled');\n removeClass([liEle], DISABLE);\n }\n }\n };\n TreeView.prototype.nodeType = function (nodes) {\n var validID = [];\n for (var i = 0, len = nodes.length; i < len; i++) {\n var id = void 0;\n if (typeof nodes[parseInt(i.toString(), 10)] == 'string') {\n id = nodes[parseInt(i.toString(), 10)] ? nodes[parseInt(i.toString(), 10)].toString() : null;\n } else if (typeof nodes[parseInt(i.toString(), 10)] === 'object') {\n id = nodes[parseInt(i.toString(), 10)] ? nodes[parseInt(i.toString(), 10)].getAttribute('data-uid').toString() : null;\n }\n if (validID.indexOf(id) === -1) {\n validID.push(id);\n }\n }\n return validID;\n };\n TreeView.prototype.checkValidId = function (node) {\n var _this = this;\n if (this.dataType === 1) {\n this.validArr = this.treeData.filter(function (data) {\n return node.indexOf(data[_this.fields.id] ? data[_this.fields.id].toString() : null) !== -1;\n });\n } else if (this.dataType === 2) {\n for (var k = 0; k < this.treeData.length; k++) {\n var id = this.treeData[parseInt(k.toString(), 10)][this.fields.id] ? this.treeData[parseInt(k.toString(), 10)][this.fields.id].toString() : null;\n if (node.indexOf(id) !== -1) {\n this.validArr.push(this.treeData[parseInt(k.toString(), 10)]);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[parseInt(k.toString(), 10)]);\n if (childItems) {\n this.filterNestedChild(childItems, node);\n }\n }\n }\n return this.validArr;\n };\n TreeView.prototype.filterNestedChild = function (treeData, nodes) {\n for (var k = 0; k < treeData.length; k++) {\n var id = treeData[parseInt(k.toString(), 10)][this.fields.id] ? treeData[parseInt(k.toString(), 10)][this.fields.id].toString() : null;\n if (nodes.indexOf(id) !== -1) {\n this.validArr.push(treeData[parseInt(k.toString(), 10)]);\n }\n var childItems = getValue(this.fields.child.toString(), treeData[parseInt(k.toString(), 10)]);\n if (childItems) {\n this.filterNestedChild(childItems, nodes);\n }\n }\n };\n TreeView.prototype.setTouchClass = function () {\n var ele = closest(this.element, '.' + BIGGER);\n this.touchClass = isNOU(ele) ? '' : SMALL;\n };\n TreeView.prototype.updatePersistProp = function () {\n this.removeField(this.treeData, this.fields, ['selected', 'expanded']);\n var sleNodes = this.selectedNodes;\n for (var l = 0, slelen = sleNodes.length; l < slelen; l++) {\n this.updateField(this.treeData, this.fields, sleNodes[parseInt(l.toString(), 10)], 'selected', true);\n }\n var enodes = this.expandedNodes;\n for (var k = 0, nodelen = enodes.length; k < nodelen; k++) {\n this.updateField(this.treeData, this.fields, enodes[parseInt(k.toString(), 10)], 'expanded', true);\n }\n if (this.showCheckBox) {\n this.removeField(this.treeData, this.fields, ['isChecked']);\n var cnodes = this.checkedNodes;\n for (var m = 0, nodelen = cnodes.length; m < nodelen; m++) {\n this.updateField(this.treeData, this.fields, cnodes[parseInt(m.toString(), 10)], 'isChecked', true);\n }\n }\n };\n TreeView.prototype.removeField = function (obj, mapper, names) {\n if (isNOU(obj) || isNOU(mapper)) {\n return;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n for (var j = 0; j < names.length; j++) {\n var field = this.getMapperProp(mapper, names[parseInt(j.toString(), 10)]);\n if (!isNOU(obj[parseInt(i.toString(), 10)][\"\" + field])) {\n delete obj[parseInt(i.toString(), 10)][\"\" + field];\n }\n }\n if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[parseInt(i.toString(), 10)]))) {\n this.removeField(getValue(mapper.child, obj[parseInt(i.toString(), 10)]), this.getChildMapper(mapper), names);\n } else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[parseInt(i.toString(), 10)]))) {\n this.removeField(getValue('child', obj[parseInt(i.toString(), 10)]), this.getChildMapper(mapper), names);\n }\n }\n };\n TreeView.prototype.getMapperProp = function (mapper, fieldName) {\n switch (fieldName) {\n case 'selected':\n return !isNOU(mapper.selected) ? mapper.selected : 'selected';\n case 'expanded':\n return !isNOU(mapper.expanded) ? mapper.expanded : 'expanded';\n case 'isChecked':\n return !isNOU(mapper.isChecked) ? mapper.isChecked : 'isChecked';\n case 'hasChildren':\n return !isNOU(mapper.hasChildren) ? mapper.hasChildren : 'hasChildren';\n default:\n return fieldName;\n }\n };\n TreeView.prototype.updateField = function (obj, mapper, id, key, value) {\n if (isNOU(id)) {\n return;\n } else if (this.dataType === 1) {\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', newId, false));\n setValue(this.getMapperProp(mapper, key), value, resultData[0]);\n } else {\n this.updateChildField(obj, mapper, id, key, value);\n }\n };\n TreeView.prototype.updateChildField = function (obj, mapper, id, key, value, remove) {\n var removedData;\n if (isNOU(obj)) {\n return removedData;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[parseInt(i.toString(), 10)]);\n if (obj[parseInt(i.toString(), 10)] && !isNOU(nodeId) && nodeId.toString() === id) {\n if (remove) {\n removedData = obj.splice(i, 1);\n } else {\n setValue(this.getMapperProp(mapper, key), value, obj[parseInt(i.toString(), 10)]);\n removedData = [];\n }\n return removedData;\n } else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[parseInt(i.toString(), 10)]))) {\n var childData = getValue(mapper.child, obj[parseInt(i.toString(), 10)]);\n removedData = this.updateChildField(childData, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n } else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[parseInt(i.toString(), 10)]))) {\n var childItems = getValue('child', obj[parseInt(i.toString(), 10)]);\n removedData = this.updateChildField(childItems, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n }\n }\n return removedData;\n };\n TreeView.prototype.triggerEvent = function (action, node) {\n this.renderReactTemplates();\n if (action === 'addNodes') {\n var nodeData = [];\n for (var i = 0; i < node.length; i++) {\n nodeData.push(this.getNode(this.getElement(isNOU(node[parseInt(i.toString(), 10)][this.fields.id]) ? getValue(this.fields.id, node[parseInt(i.toString(), 10)]).toString() : null)));\n }\n node = nodeData;\n }\n var eventArgs = {\n data: this.treeData,\n action: action,\n nodeData: node\n };\n this.trigger('dataSourceChanged', eventArgs);\n };\n TreeView.prototype.wireInputEvents = function (inpEle) {\n EventHandler.add(inpEle, 'blur', this.inputFocusOut, this);\n };\n TreeView.prototype.wireEditingEvents = function (toBind) {\n var _this = this;\n if (toBind && !this.disabled) {\n this.touchEditObj = new Touch(this.element, {\n tap: function (e) {\n if (_this.isDoubleTapped(e) && e.tapCount === 2) {\n e.originalEvent.preventDefault();\n _this.editingHandler(e.originalEvent);\n }\n }\n });\n } else {\n if (this.touchEditObj) {\n this.touchEditObj.destroy();\n }\n }\n };\n TreeView.prototype.wireClickEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n this.touchClickObj = new Touch(this.element, {\n tap: function (e) {\n _this.clickHandler(e);\n }\n });\n } else {\n if (this.touchClickObj) {\n this.touchClickObj.destroy();\n }\n }\n };\n TreeView.prototype.wireExpandOnEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n this.touchExpandObj = new Touch(this.element, {\n tap: function (e) {\n if ((_this.expandOnType === 'Click' || _this.expandOnType === 'DblClick' && _this.isDoubleTapped(e) && e.tapCount === 2) && e.originalEvent.which !== 3) {\n _this.expandHandler(e);\n }\n }\n });\n } else {\n if (this.touchExpandObj) {\n this.touchExpandObj.destroy();\n }\n }\n };\n TreeView.prototype.mouseDownHandler = function (e) {\n this.mouseDownStatus = true;\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (e.ctrlKey && this.allowMultiSelection) {\n EventHandler.add(this.element, 'contextmenu', this.preventContextMenu, this);\n }\n };\n TreeView.prototype.preventContextMenu = function (e) {\n e.preventDefault();\n };\n TreeView.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'mousedown', this.mouseDownHandler, this);\n this.wireClickEvent(true);\n if (this.expandOnType !== 'None') {\n this.wireExpandOnEvent(true);\n }\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.element, 'mouseout', this.onMouseLeave, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n TreeView.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'mousedown', this.mouseDownHandler);\n this.wireClickEvent(false);\n this.wireExpandOnEvent(false);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.element, 'mouseout', this.onMouseLeave);\n if (!this.disabled) {\n this.keyboardModule.destroy();\n }\n };\n TreeView.prototype.parents = function (element, selector) {\n var matched = [];\n var el = element.parentNode;\n while (!isNOU(el)) {\n if (matches(el, selector)) {\n matched.push(el);\n }\n el = el.parentNode;\n }\n return matched;\n };\n TreeView.prototype.isDoubleTapped = function (e) {\n var target = e.originalEvent.target;\n var secondTap;\n if (target && e.tapCount) {\n if (e.tapCount === 1) {\n this.firstTap = closest(target, '.' + LISTITEM);\n } else if (e.tapCount === 2) {\n secondTap = closest(target, '.' + LISTITEM);\n }\n }\n return this.firstTap === secondTap;\n };\n TreeView.prototype.isDescendant = function (parent, child) {\n var node = child.parentNode;\n while (!isNOU(node)) {\n if (node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n };\n TreeView.prototype.showSpinner = function (element) {\n addClass([element], LOAD);\n createSpinner({\n target: element,\n width: Browser.isDevice ? 16 : 14\n }, this.createElement);\n showSpinner(element);\n };\n TreeView.prototype.hideSpinner = function (element) {\n hideSpinner(element);\n element.innerHTML = '';\n removeClass([element], LOAD);\n };\n TreeView.prototype.setCheckedNodes = function (nodes) {\n nodes = JSON.parse(JSON.stringify(nodes));\n if (nodes.length > 1 && typeof this.nodeChecked === 'function' && this.nodeChecked.length > 0) {\n this.isFilter = true;\n }\n this.uncheckAll(this.checkedNodes);\n this.setIndeterminate(nodes);\n if (nodes.length > 0) {\n this.checkAll(nodes);\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel\n *\n * @param {string} node - The unique identifier of the node.\n * @param {string[]} [nodes=[]] - The list of node IDs to check.\n * @returns {void}\n * @private\n */\n TreeView.prototype.setValidCheckedNode = function (node, nodes) {\n if (nodes === void 0) {\n nodes = [];\n }\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', node, true));\n if (resultData[0]) {\n this.setChildCheckState(resultData, node, resultData[0], nodes);\n if (this.autoCheck) {\n var parent_4 = resultData[0][this.fields.parentID] ? resultData[0][this.fields.parentID].toString() : null;\n var childNodes = this.getChildNodes(this.treeData, parent_4);\n var count = 0;\n for (var len = 0; len < childNodes.length; len++) {\n var childId = childNodes[parseInt(len.toString(), 10)][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(parent_4) === -1 && parent_4) {\n this.checkDisabledState(parent_4);\n }\n }\n }\n } else if (this.dataType === 2) {\n for (var a = 0; a < this.treeData.length; a++) {\n var index = this.treeData[parseInt(a.toString(), 10)][this.fields.id] ? this.treeData[parseInt(a.toString(), 10)][this.fields.id].toString() : '';\n if (index === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkDisabledState(node);\n break;\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[parseInt(a.toString(), 10)]);\n if (childItems) {\n this.setChildCheckState(childItems, node, this.treeData[parseInt(a.toString(), 10)], nodes);\n }\n }\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel(for hierarchical DS)\n *\n * @param {Object[]} childItems - The child items to check.\n * @param {string} node - The node to set the check state for.\n * @param {Object} [treeData] - The optional tree data.\n * @param {string[]} [nodes=[]] - The list of node IDs to check.\n * @returns {void}\n * @private\n */\n TreeView.prototype.setChildCheckState = function (childItems, node, treeData, nodes) {\n if (nodes === void 0) {\n nodes = [];\n }\n var checkedParent;\n var count = 0;\n if (this.dataType === 1) {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : null;\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkNode = childItems[parseInt(index.toString(), 10)][this.fields.id] ? childItems[parseInt(index.toString(), 10)][this.fields.id].toString() : null;\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkNode) === -1) {\n this.checkDisabledState(checkNode, childItems[index]);\n }\n }\n if (checkNode === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkDisabledState(node);\n }\n var subChildItems = this.getChildNodes(this.treeData, checkNode);\n var isParentNodeCheck = nodes.length === 1 && nodes[0] === checkNode;\n if (subChildItems.length === node.length || isParentNodeCheck) {\n this.setChildCheckState(subChildItems, node, treeData);\n }\n }\n } else {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[parseInt(index.toString(), 10)][this.fields.id] ? childItems[parseInt(index.toString(), 10)][this.fields.id].toString() : '';\n var isParentNodeCheck = [node].length === 1 && nodes.length === 0;\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1 && (checkedChild === node || isParentNodeCheck)) {\n this.checkDisabledState(checkedChild, childItems[index]);\n }\n }\n if (checkedChild === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkDisabledState(node);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[parseInt(index.toString(), 10)]);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, childItems[parseInt(index.toString(), 10)]);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (count === childItems.length && this.checkedNodes.indexOf(checkedParent) === -1 && this.autoCheck) {\n this.checkDisabledState(checkedParent, treeData);\n }\n }\n }\n };\n TreeView.prototype.setIndeterminate = function (nodes) {\n for (var i = 0; i < nodes.length; i++) {\n this.setValidCheckedNode(nodes[parseInt(i.toString(), 10)], nodes);\n }\n };\n TreeView.prototype.updatePosition = function (id, newData, isRefreshChild, childValue) {\n if (this.dataType === 1) {\n var pos = this.getDataPos(this.treeData, this.fields, id);\n this.treeData.splice(pos, 1, newData);\n if (isRefreshChild) {\n this.removeChildNodes(id);\n for (var j = 0; j < childValue.length; j++) {\n this.treeData.splice(pos, 0, childValue[parseInt(j.toString(), 10)]);\n pos++;\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n } else {\n this.updateChildPosition(this.treeData, this.fields, id, [newData], undefined);\n }\n };\n TreeView.prototype.updateChildPosition = function (treeData, mapper, currID, newData, index) {\n var found;\n for (var i = 0, objlen = treeData.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, treeData[parseInt(i.toString(), 10)]);\n if (treeData[parseInt(i.toString(), 10)] && nodeId && nodeId.toString() === currID) {\n treeData[parseInt(i.toString(), 10)] = newData[0];\n return true;\n } else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, treeData[parseInt(i.toString(), 10)]))) {\n var childObj = getValue(mapper.child, treeData[parseInt(i.toString(), 10)]);\n found = this.updateChildPosition(childObj, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n } else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', treeData[parseInt(i.toString(), 10)]))) {\n var childData = getValue('child', treeData[parseInt(i.toString(), 10)]);\n found = this.updateChildPosition(childData, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n }\n }\n return found;\n };\n TreeView.prototype.dynamicState = function () {\n this.setDragAndDrop(this.allowDragAndDrop);\n this.wireEditingEvents(this.allowEditing);\n if (!this.disabled) {\n this.wireEvents();\n this.setRipple();\n } else {\n this.unWireEvents();\n this.rippleFn();\n this.rippleIconFn();\n }\n };\n TreeView.prototype.crudOperation = function (operation, nodes, target, newText, newNode, index, prevent) {\n var _this = this;\n var data = this.fields.dataSource;\n var matchedArr = [];\n var query = this.getQuery(this.fields);\n var key = this.fields.id;\n var crud;\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n var nodesID = [];\n if (nodes) {\n nodesID = this.nodeType(nodes);\n } else if (target) {\n if (typeof target == 'string') {\n nodesID[0] = target.toString();\n } else if (typeof target === 'object') {\n nodesID[0] = target.getAttribute('data-uid').toString();\n }\n }\n for (var i = 0, len = nodesID.length; i < len; i++) {\n var liEle = this.getElement(nodesID[parseInt(i.toString(), 10)]);\n if (isNullOrUndefined(liEle)) {\n continue;\n }\n var removedData = this.getNodeObject(nodesID[parseInt(i.toString(), 10)]);\n matchedArr.push(removedData);\n }\n switch (operation) {\n case 'delete':\n if (nodes.length === 1) {\n crud = data.remove(key, matchedArr[0], query.fromTable, query);\n } else {\n changes.deletedRecords = matchedArr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then(function () {\n return _this.deleteSuccess(nodesID);\n }).catch(function (e) {\n return _this.dmFailure(e);\n });\n break;\n case 'update':\n matchedArr[0][this.fields.text] = newText;\n crud = data.update(key, matchedArr[0], query.fromTable, query);\n crud.then(function () {\n return _this.editSucess(target, newText, prevent);\n }).catch(function (e) {\n return _this.dmFailure(e, target, prevent);\n });\n break;\n case 'insert':\n if (newNode.length === 1) {\n crud = data.insert(newNode[0], query.fromTable, query);\n } else {\n var arr = [];\n for (var i = 0, len = newNode.length; i < len; i++) {\n arr.push(newNode[parseInt(i.toString(), 10)]);\n }\n changes.addedRecords = arr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then(function () {\n var dropLi = _this.getElement(target);\n _this.addSuccess(newNode, dropLi, index);\n _this.preventExpand = false;\n }).catch(function (e) {\n return _this.dmFailure(e);\n });\n break;\n }\n };\n TreeView.prototype.deleteSuccess = function (nodes) {\n var nodeData = [];\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[parseInt(i.toString(), 10)]);\n nodeData.push(this.getNode(liEle));\n if (isNOU(liEle)) {\n continue;\n }\n this.removeNode(liEle);\n }\n this.updateInstance();\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.triggerEvent('removeNode', nodeData);\n };\n TreeView.prototype.editSucess = function (target, newText, prevent) {\n var liEle = this.getElement(target);\n var txtEle = select('.' + LISTTEXT, liEle);\n this.appendNewText(liEle, txtEle, newText, prevent);\n };\n TreeView.prototype.addSuccess = function (nodes, dropLi, index) {\n var _this = this;\n var dropUl;\n var icon = dropLi ? dropLi.querySelector('.' + ICON) : null;\n if (dropLi && icon && icon.classList.contains(EXPANDABLE) && dropLi.querySelector('.' + PARENTITEM) === null) {\n this.renderChildNodes(dropLi, null, function () {\n dropUl = dropLi.querySelector('.' + PARENTITEM);\n _this.addGivenNodes(nodes, dropLi, index, true, dropUl);\n _this.triggerEvent('addNodes', nodes);\n });\n } else {\n this.addGivenNodes(nodes, dropLi, index, true);\n this.triggerEvent('addNodes', nodes);\n }\n };\n TreeView.prototype.dmFailure = function (e, target, prevent) {\n if (target) {\n this.updatePreviousText(target, prevent);\n }\n this.trigger('actionFailure', {\n error: e\n });\n };\n TreeView.prototype.updatePreviousText = function (target, prevent) {\n var liEle = this.getElement(target);\n var txtEle = select('.' + LISTTEXT, liEle);\n this.updateText(liEle, txtEle, this.oldText, prevent);\n };\n TreeView.prototype.getHierarchicalParentId = function (node, data, parentsID) {\n var _this = this;\n var index = data.findIndex(function (data) {\n return data[_this.fields.id] && data[_this.fields.id].toString() === node;\n });\n if (index === -1) {\n for (var i = 0; i < data.length; i++) {\n var childItems = getValue(this.fields.child.toString(), data[parseInt(i.toString(), 10)]);\n if (!isNOU(childItems)) {\n index = childItems.findIndex(function (data) {\n return data[_this.fields.id] && data[_this.fields.id].toString() === node;\n });\n if (index === -1) {\n this.getHierarchicalParentId(node, childItems, parentsID);\n } else {\n parentsID.push(data[parseInt(i.toString(), 10)][this.fields.id].toString());\n this.getHierarchicalParentId(data[parseInt(i.toString(), 10)][this.fields.id].toString(), this.treeData, parentsID);\n break;\n }\n }\n }\n }\n return parentsID;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TreeViewModel} newProp - The new property value.\n * @param {TreeViewModel} oldProp - The old property value.\n * @returns {void}\n * @private\n */\n TreeView.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 'allowDragAndDrop':\n this.setDragAndDrop(this.allowDragAndDrop);\n break;\n case 'dragArea':\n if (this.allowDragAndDrop) {\n this.dragObj.dragArea = this.dragArea;\n }\n break;\n case 'allowEditing':\n this.wireEditingEvents(this.allowEditing);\n break;\n case 'allowMultiSelection':\n if (this.selectedNodes.length > 1) {\n var sNode = this.getElement(this.selectedNodes[0]);\n this.isLoaded = false;\n this.removeSelectAll();\n this.selectNode(sNode, null);\n this.isLoaded = true;\n }\n this.setMultiSelect(this.allowMultiSelection);\n this.addMultiSelect(this.allowMultiSelection);\n break;\n case 'allowTextWrap':\n this.setTextWrap();\n this.updateWrap();\n break;\n case 'checkedNodes':\n if (this.showCheckBox) {\n this.checkedNodes = oldProp.checkedNodes;\n this.setCheckedNodes(newProp.checkedNodes);\n }\n break;\n case 'autoCheck':\n if (this.showCheckBox) {\n this.autoCheck = newProp.autoCheck;\n this.ensureIndeterminate();\n }\n break;\n case 'cssClass':\n this.setCssClass(oldProp.cssClass, newProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'expandedNodes':\n this.isAnimate = false;\n this.setProperties({\n expandedNodes: []\n }, true);\n this.collapseAll();\n this.isInitalExpand = true;\n this.setProperties({\n expandedNodes: isNOU(newProp.expandedNodes) ? [] : newProp.expandedNodes\n }, true);\n this.doExpandAction();\n this.isInitalExpand = false;\n this.isAnimate = true;\n break;\n case 'expandOn':\n this.wireExpandOnEvent(false);\n this.setExpandOnType();\n if (this.expandOnType !== 'None' && !this.disabled) {\n this.wireExpandOnEvent(true);\n }\n break;\n case 'disabled':\n this.setDisabledMode();\n this.dynamicState();\n break;\n case 'fields':\n this.isAnimate = false;\n this.isFieldChange = true;\n this.initialRender = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact || this.isReact && !(this.fields.dataSource instanceof DataManager)) {\n if (!this.element.classList.contains('e-filtering')) {\n this.DDTTreeData = JSON.parse(JSON.stringify(this.fields.dataSource));\n }\n this.reRenderNodes();\n }\n this.initialRender = false;\n this.isAnimate = true;\n this.isFieldChange = false;\n break;\n case 'fullRowSelect':\n this.setFullRow(this.fullRowSelect);\n this.addFullRow(this.fullRowSelect);\n if (this.allowTextWrap) {\n this.setTextWrap();\n this.updateWrap();\n }\n break;\n case 'loadOnDemand':\n if (this.loadOnDemand === false && !this.onLoaded) {\n var nodes = this.element.querySelectorAll('li');\n var i = 0;\n while (i < nodes.length) {\n if (nodes[parseInt(i.toString(), 10)].getAttribute('aria-expanded') !== 'true') {\n this.renderChildNodes(nodes[parseInt(i.toString(), 10)], true, null, true);\n }\n i++;\n }\n this.onLoaded = true;\n }\n break;\n case 'nodeTemplate':\n this.hasTemplate = false;\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n this.reRenderNodes();\n break;\n case 'selectedNodes':\n this.removeSelectAll();\n this.setProperties({\n selectedNodes: newProp.selectedNodes\n }, true);\n this.doSelectionAction();\n break;\n case 'showCheckBox':\n case 'checkDisabledChildren':\n this.reRenderNodes();\n break;\n case 'sortOrder':\n this.reRenderNodes();\n break;\n case 'fullRowNavigable':\n this.setProperties({\n fullRowNavigable: newProp.fullRowNavigable\n }, true);\n this.listBaseOption.itemNavigable = newProp.fullRowNavigable;\n this.reRenderNodes();\n break;\n }\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n *\n * @returns {void}\n */\n TreeView.prototype.destroy = function () {\n this.clearTemplate();\n this.element.removeAttribute('aria-activedescendant');\n this.unWireEvents();\n this.wireEditingEvents(false);\n if (!this.disabled) {\n this.rippleFn();\n this.rippleIconFn();\n }\n this.setCssClass(this.cssClass, null);\n this.setDragAndDrop(false);\n this.setFullRow(false);\n if (this.ulElement && this.ulElement.parentElement) {\n this.ulElement.parentElement.removeChild(this.ulElement);\n }\n this.ulElement = null;\n this.liList = null;\n this.startNode = null;\n this.firstTap = null;\n this.expandArgs = null;\n this.dragLi = null;\n this.dragTarget = null;\n this.dragParent = null;\n this.dragObj = null;\n this.dropObj = null;\n this.inputObj = null;\n this.touchEditObj = null;\n this.touchExpandObj = null;\n this.touchClickObj = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Adds the collection of TreeView nodes based on target and index position. If target node is not specified,\n * then the nodes are added as children of the given parentID or in the root level of TreeView.\n *\n * @param { object } nodes - Specifies the array of JSON data that has to be added.\n * @param { string | Element } target - Specifies ID of TreeView node/TreeView node as target element.\n * @param { number } index - Specifies the index to place the newly added nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n * @returns {void}\n */\n TreeView.prototype.addNodes = function (nodes, target, index, preventTargetExpand) {\n if (isNOU(nodes)) {\n return;\n }\n nodes = JSON.parse(JSON.stringify(nodes));\n var dropLi = this.getElement(target);\n this.preventExpand = preventTargetExpand;\n if (this.fields.dataSource instanceof DataManager) {\n if (!this.isOffline) {\n this.crudOperation('insert', null, target, null, nodes, index, this.preventExpand);\n } else {\n this.addSuccess(nodes, dropLi, index);\n }\n } else if (this.dataType === 2) {\n this.addGivenNodes(nodes, dropLi, index);\n } else {\n if (dropLi) {\n this.addGivenNodes(nodes, dropLi, index);\n } else {\n nodes = this.getSortedData(nodes);\n for (var i = 0; i < nodes.length; i++) {\n var pid = getValue(this.fields.parentID, nodes[parseInt(i.toString(), 10)]);\n dropLi = pid ? this.getElement(pid.toString()) : pid;\n if (!isNullOrUndefined(pid) && isNullOrUndefined(dropLi)) {\n this.isHiddenItem = true;\n this.preventExpand = false;\n this.ensureVisible(pid);\n this.preventExpand = preventTargetExpand;\n this.isHiddenItem = false;\n dropLi = this.getElement(pid.toString());\n }\n this.addGivenNodes([nodes[parseInt(i.toString(), 10)]], dropLi, index);\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.updateCheckedStateFromDS();\n if (this.showCheckBox && dropLi) {\n this.ensureParentCheckState(dropLi);\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n this.triggerEvent('addNodes', nodes);\n }\n };\n /**\n * Editing can also be enabled by using the `beginEdit` property, instead of clicking on the\n * TreeView node. On passing the node ID or element through this property, the edit textBox\n * will be created for the particular node thus allowing us to edit it.\n *\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @returns {void}\n */\n TreeView.prototype.beginEdit = function (node) {\n var ele = this.getElement(node);\n if (isNOU(ele) || this.disabled) {\n return;\n }\n this.createTextbox(ele);\n };\n /**\n * Checks all the unchecked nodes. You can also check specific nodes by passing array of unchecked nodes\n * as argument to this method.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @returns {void}\n */\n TreeView.prototype.checkAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, true);\n }\n };\n /**\n * Collapses all the expanded TreeView nodes. You can collapse specific nodes by passing array of nodes as argument to this method.\n * You can also collapse all the nodes excluding the hidden nodes by setting **excludeHiddenNodes** to true. If you want to collapse\n * a specific level of nodes, set **level** as argument to collapseAll method.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/ array of TreeView node.\n * @param {number} level - TreeView nodes will collapse up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes of TreeView when collapsing all nodes.\n * @returns {void}\n */\n TreeView.prototype.collapseAll = function (nodes, level, excludeHiddenNodes) {\n if (!isNOU(nodes)) {\n this.doGivenAction(nodes, COLLAPSIBLE, false);\n } else {\n if (level > 0) {\n this.collapseByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n } else {\n this.collapseAllNodes(excludeHiddenNodes);\n }\n }\n };\n /**\n * Disables the collection of nodes by passing the ID of nodes or node elements in the array.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n * @returns {void}\n */\n TreeView.prototype.disableNodes = function (nodes) {\n if (!isNOU(nodes)) {\n this.doDisableAction(nodes);\n }\n };\n /**\n * Enables the collection of disabled nodes by passing the ID of nodes or node elements in the array.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n * @returns {void}\n */\n TreeView.prototype.enableNodes = function (nodes) {\n if (!isNOU(nodes)) {\n this.doEnableAction(nodes);\n }\n };\n /**\n * Ensures visibility of the TreeView node by using node ID or node element.\n * When many TreeView nodes are present and we need to find a particular node, `ensureVisible` property\n * helps bring the node to visibility by expanding the TreeView and scrolling to the specific node.\n *\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView nodes.\n * @returns {void}\n */\n TreeView.prototype.ensureVisible = function (node) {\n var parentsId = [];\n if (this.dataType === 1) {\n var nodeData = this.getTreeData(node);\n while (nodeData.length !== 0 && !isNOU(nodeData[0][this.fields.parentID])) {\n parentsId.push(nodeData[0][this.fields.parentID].toString());\n nodeData = this.getTreeData(nodeData[0][this.fields.parentID].toString());\n }\n } else if (this.dataType === 2) {\n parentsId = this.getHierarchicalParentId(node, this.treeData, parentsId);\n }\n this.expandAll(parentsId.reverse(), null, null, this.isHiddenItem);\n var liEle = this.getElement(node);\n if (!isNOU(liEle)) {\n if (typeof node == 'object') {\n var parents = this.parents(liEle, '.' + LISTITEM);\n this.expandAll(parents);\n }\n setTimeout(function () {\n liEle.scrollIntoView({\n behavior: 'smooth'\n });\n }, 450);\n }\n };\n /**\n * Expands all the collapsed TreeView nodes. You can expand the specific nodes by passing the array of collapsed nodes\n * as argument to this method. You can also expand all the collapsed nodes by excluding the hidden nodes by setting\n * **excludeHiddenNodes** to true to this method. To expand a specific level of nodes, set **level** as argument to expandAll method.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n * @param {number} level - TreeView nodes will expand up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes when expanding all nodes.\n * @param {boolean} preventAnimation - Prevent the expand animation when expanding all nodes.\n * @returns {void}\n */\n TreeView.prototype.expandAll = function (nodes, level, excludeHiddenNodes, preventAnimation) {\n this.isAnimate = !preventAnimation;\n if (!isNOU(nodes)) {\n this.doGivenAction(nodes, EXPANDABLE, true);\n } else {\n if (level > 0) {\n this.expandByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n } else {\n this.expandAllNodes(excludeHiddenNodes);\n if (!this.loadOnDemand || this.element.classList.contains('e-filtering')) {\n this.updateAttributes(this.element);\n this.updateList();\n }\n }\n }\n this.isAnimate = true;\n };\n /**\n * Gets all the checked nodes including child, whether it is loaded or not.\n *\n * @returns {string[]} - An array of strings representing the unique identifiers of checked nodes.\n */\n TreeView.prototype.getAllCheckedNodes = function () {\n var checkNodes = this.checkedNodes;\n return checkNodes;\n };\n /**\n * Gets all the disabled nodes including child, whether it is loaded or not.\n *\n * @returns {string[]} An array of strings representing the unique identifiers of disabled nodes.\n */\n TreeView.prototype.getDisabledNodes = function () {\n var disabledNodes = this.disableNode;\n return disabledNodes;\n };\n /**\n * Gets the node's data such as id, text, parentID, selected, isChecked, and expanded by passing the node element or it's ID.\n *\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @returns {Object} - The data associated with the specified node.\n */\n TreeView.prototype.getNode = function (node) {\n var ele = this.getElement(node);\n return this.getNodeData(ele, true);\n };\n /**\n * To get the updated data source of TreeView after performing some operation like drag and drop, node editing,\n * node selecting/unSelecting, node expanding/collapsing, node checking/unChecking, adding and removing node.\n * * If you pass the ID of TreeView node as arguments for this method then it will return the updated data source\n * of the corresponding node otherwise it will return the entire updated data source of TreeView.\n * * The updated data source also contains custom attributes if you specified in data source.\n *\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @isGenericType true\n * @returns {Object} - The tree data associated with the specified node or element.\n */\n TreeView.prototype.getTreeData = function (node) {\n var id = this.getId(node);\n this.updatePersistProp();\n if (isNOU(id)) {\n return this.treeData;\n } else {\n var data = this.getNodeObject(id);\n return isNOU(data) ? [] : [data];\n }\n };\n /**\n * Moves the collection of nodes within the same TreeView based on target or its index position.\n *\n * @param {string[] | Element[]} sourceNodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {number} index - Specifies the index to place the moved nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n * @returns {void}\n */\n TreeView.prototype.moveNodes = function (sourceNodes, target, index, preventTargetExpand) {\n if (isNOU(sourceNodes) || sourceNodes.length === 0) {\n return;\n }\n var dropLi = this.getElement(target);\n var nodeData = [];\n if (isNOU(dropLi)) {\n this.isHiddenItem = true;\n this.ensureVisible(target);\n this.isHiddenItem = false;\n dropLi = this.getElement(target);\n }\n for (var i = 0; i < sourceNodes.length; i++) {\n var dragLi = this.getElement(sourceNodes[parseInt(i.toString(), 10)]);\n nodeData.push(this.getNode(dragLi));\n if (isNOU(dragLi) || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n continue;\n }\n this.preventExpand = preventTargetExpand;\n this.dropAsChildNode(dragLi, dropLi, this, index, null, null, null, dropLi);\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n this.triggerEvent('moveNodes', nodeData);\n };\n /**\n * Refreshes a particular node of the TreeView.\n *\n * @param {string | Element} target - Specifies the ID of TreeView node or TreeView node as target element.\n * @param {Object[]} newData - Specifies the new data of TreeView node.\n * @returns {void}\n * ```typescript\n * var treeObj = document.getElementById(\"treeview\").ej2_instances[0];\n * var data = treeObj.getTreeData(\"01\");\n * var newData = {\n * id: data[0].id,\n * name: \"new Text\",\n * };\n * treeObj.refreshNode(\"01\", [newData]);\n * ```\n */\n TreeView.prototype.refreshNode = function (target, newData) {\n if (isNOU(target) || isNOU(newData)) {\n return;\n }\n var isRefreshChild = false;\n if (this.dataType === 1 && newData.length > 1) {\n isRefreshChild = true;\n } else if (this.dataType === 2 && newData.length === 1) {\n var updatedChildValue = getValue(this.fields.child.toString(), newData[0]);\n if (!isNOU(updatedChildValue)) {\n isRefreshChild = true;\n }\n }\n var liEle = this.getElement(target);\n var id = liEle ? liEle.getAttribute('data-uid') : target ? target.toString() : null;\n this.refreshData = this.getNodeObject(id);\n newData = JSON.parse(JSON.stringify(newData));\n var newNodeData;\n var parentData;\n if (this.dataType === 1 && isRefreshChild) {\n for (var k = 0; k < newData.length; k++) {\n if (isNOU(newData[parseInt(k.toString(), 10)][this.fields.parentID])) {\n parentData = newData[parseInt(k.toString(), 10)];\n newData.splice(k, 1);\n break;\n }\n }\n newNodeData = extend({}, this.refreshData, parentData);\n } else {\n newNodeData = extend({}, this.refreshData, newData[0]);\n }\n if (isNOU(liEle)) {\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n return;\n }\n this.isRefreshed = true;\n var level = parseFloat(liEle.getAttribute('aria-level'));\n var newliEle = ListBase.createListItemFromJson(this.createElement, [newNodeData], this.listBaseOption, level);\n var ul = select('.' + PARENTITEM, liEle);\n var childItems = getValue(this.fields.child.toString(), newNodeData);\n if (isRefreshChild && ul || isRefreshChild && !isNOU(childItems)) {\n var parentEle = liEle.parentElement;\n var index = Array.prototype.indexOf.call(parentEle.childNodes, liEle);\n remove(liEle);\n parentEle.insertBefore(newliEle[0], parentEle.childNodes[parseInt(index.toString(), 10)]);\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n if (isRefreshChild && ul) {\n this.expandAll([id]);\n }\n } else {\n var txtEle = select('.' + TEXTWRAP, liEle);\n var newTextEle = select('.' + TEXTWRAP, newliEle[0]);\n var icon = select('div.' + ICON, txtEle);\n var newIcon = select('div.' + ICON, newTextEle);\n if (icon && newIcon) {\n if (newIcon.classList.contains(EXPANDABLE) && icon.classList.contains(COLLAPSIBLE)) {\n removeClass([newIcon], EXPANDABLE);\n addClass([newIcon], COLLAPSIBLE);\n } else if (newIcon.classList.contains(COLLAPSIBLE) && icon.classList.contains(EXPANDABLE)) {\n removeClass([newIcon], COLLAPSIBLE);\n addClass([newIcon], EXPANDABLE);\n } else if (icon.classList.contains('interaction')) {\n addClass([newIcon], 'interaction');\n }\n }\n remove(txtEle);\n var fullEle = select('.' + FULLROW, liEle);\n fullEle.parentNode.insertBefore(newTextEle, fullEle.nextSibling);\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n }\n liEle = this.getElement(target);\n if (newNodeData[this.fields.tooltip]) {\n liEle.setAttribute('title', newNodeData[this.fields.tooltip]);\n }\n if (Object.prototype.hasOwnProperty.call(newNodeData, this.fields.htmlAttributes) && newNodeData[this.fields.htmlAttributes]) {\n var attr = {};\n merge(attr, newNodeData[this.fields.htmlAttributes]);\n if (attr.class) {\n addClass([liEle], attr.class.split(' '));\n delete attr.class;\n } else {\n attributes(liEle, attr);\n }\n }\n if (this.selectedNodes.indexOf(id) !== -1) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n }\n this.isRefreshed = false;\n this.triggerEvent('refreshNode', [this.getNode(liEle)]);\n };\n /**\n * Removes the collection of TreeView nodes by passing the array of node details as argument to this method.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @returns {void}\n */\n TreeView.prototype.removeNodes = function (nodes) {\n if (!isNOU(nodes)) {\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n this.crudOperation('delete', nodes);\n } else {\n this.deleteSuccess(nodes);\n }\n }\n };\n /**\n * Replaces the text of the TreeView node with the given text only when the `allowEditing` property is enabled.\n *\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {string} newText - Specifies the new text of TreeView node.\n * @returns {void}\n */\n TreeView.prototype.updateNode = function (target, newText) {\n var _this = this;\n if (isNOU(target) || isNOU(newText) || !this.allowEditing) {\n return;\n }\n var liEle = this.getElement(target);\n if (isNOU(liEle)) {\n return;\n }\n var txtEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var eventArgs = this.getEditEvent(liEle, null, null);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n if (_this.fields.dataSource instanceof DataManager && !_this.isOffline) {\n _this.crudOperation('update', null, target, newText, null, null, false);\n } else {\n _this.appendNewText(liEle, txtEle, newText, false);\n }\n }\n });\n };\n /**\n * Unchecks all the checked nodes. You can also uncheck the specific nodes by passing array of checked nodes\n * as argument to this method.\n *\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @returns {void}\n */\n TreeView.prototype.uncheckAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, false);\n }\n };\n var TreeView_1;\n __decorate([Property(false)], TreeView.prototype, \"allowDragAndDrop\", void 0);\n __decorate([Property(false)], TreeView.prototype, \"allowEditing\", void 0);\n __decorate([Property(false)], TreeView.prototype, \"allowMultiSelection\", void 0);\n __decorate([Property(false)], TreeView.prototype, \"allowTextWrap\", void 0);\n __decorate([Complex({}, NodeAnimationSettings)], TreeView.prototype, \"animation\", void 0);\n __decorate([Property()], TreeView.prototype, \"checkedNodes\", void 0);\n __decorate([Property(true)], TreeView.prototype, \"checkDisabledChildren\", void 0);\n __decorate([Property('')], TreeView.prototype, \"cssClass\", void 0);\n __decorate([Property(false)], TreeView.prototype, \"disabled\", void 0);\n __decorate([Property(null)], TreeView.prototype, \"dragArea\", void 0);\n __decorate([Property(true)], TreeView.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([Property(false)], TreeView.prototype, \"enablePersistence\", void 0);\n __decorate([Property()], TreeView.prototype, \"expandedNodes\", void 0);\n __decorate([Property('Auto')], TreeView.prototype, \"expandOn\", void 0);\n __decorate([Complex({}, FieldsSettings)], TreeView.prototype, \"fields\", void 0);\n __decorate([Property(true)], TreeView.prototype, \"fullRowSelect\", void 0);\n __decorate([Property(true)], TreeView.prototype, \"loadOnDemand\", void 0);\n __decorate([Property()], TreeView.prototype, \"locale\", void 0);\n __decorate([Property()], TreeView.prototype, \"nodeTemplate\", void 0);\n __decorate([Property()], TreeView.prototype, \"selectedNodes\", void 0);\n __decorate([Property('None')], TreeView.prototype, \"sortOrder\", void 0);\n __decorate([Property(false)], TreeView.prototype, \"showCheckBox\", void 0);\n __decorate([Property(true)], TreeView.prototype, \"autoCheck\", void 0);\n __decorate([Property(false)], TreeView.prototype, \"fullRowNavigable\", void 0);\n __decorate([Event()], TreeView.prototype, \"actionFailure\", void 0);\n __decorate([Event()], TreeView.prototype, \"created\", void 0);\n __decorate([Event()], TreeView.prototype, \"dataBound\", void 0);\n __decorate([Event()], TreeView.prototype, \"dataSourceChanged\", void 0);\n __decorate([Event()], TreeView.prototype, \"drawNode\", void 0);\n __decorate([Event()], TreeView.prototype, \"destroyed\", void 0);\n __decorate([Event()], TreeView.prototype, \"keyPress\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeChecked\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeChecking\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeClicked\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeCollapsed\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeCollapsing\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeDragging\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeDragStart\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeDragStop\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeDropped\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeEdited\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeEditing\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeExpanded\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeExpanding\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeSelected\", void 0);\n __decorate([Event()], TreeView.prototype, \"nodeSelecting\", void 0);\n TreeView = TreeView_1 = __decorate([NotifyPropertyChanges], TreeView);\n return TreeView;\n}(Component);\nexport { TreeView };"],"sourceRoot":""}