{"version":3,"sources":["webpack:///./node_modules/@syncfusion/ej2-navigations/src/treeview/treeview.js"],"names":["__extends","extendStatics","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","CONTROL","COLLAPSIBLE","EXPANDABLE","LISTITEM","LISTTEXT","LISTWRAP","IELISTWRAP","PARENTITEM","HOVER","ACTIVE","LOAD","PROCESS","ICON","TEXTWRAP","INPUT","INPUTGROUP","TREEINPUT","EDITING","RTL","INTERACTION","DRAGITEM","DROPPABLE","DRAGGING","SIBLING","DROPIN","DROPNEXT","DROPOUT","NODROP","FULLROWWRAP","FULLROW","SELECTED","EXPANDED","NODECOLLAPSED","DISABLE","DROPCOUNT","CHECK","INDETERMINATE","CHECKBOXWRAP","CHECKBOXFRAME","CHECKBOXRIPPLE","RIPPLE","RIPPLEELMENT","FOCUS","IMAGE","BIGGER","SMALL","CHILD","ITEM_ANIMATION_ACTIVE","DISABLED","PREVENTSELECT","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","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","selectedNodes","setProperties","checkedNodes","expandedNodes","getPersistData","keyEntity","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","tempStr","rippleModel","selector","ignore","rippleFn","iconModel","isCenterRipple","rippleIconFn","isEnabled","setMultiSelect","firstUl","removeAttribute","template","document","querySelectorAll","querySelector","innerHTML","trim","push","dataSource","isOffline","offline","ready","then","pop","treeData","result","isNumberTypeId","getType","setRootData","renderItems","finalize","catch","trigger","error","executeQuery","getQuery","rootData","JSON","parse","stringify","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","isSorted","level","sortedData","getSortedData","ulElement","createList","createElement","appendChild","rootNodes","loadOnDemand","renderChildNodes","parentEle","finalizeNode","parentCheckData","updateCheckedStateFromDS","autoCheck","showCheckBox","updateParentCheckState","resultData","executeLocal","isChecked","resultId","toString","hasChildren","id_1","childData","child","childId","mapper_1","checkState","getCheckedNodeDetails","checkIndeterminateState","checkedId","checkedData","fieldId","childItems","updateChildCheckState","checkNodes","count","check","changeState","childNodes","preElement","childCheckedElement","indeterminate","node","nodeId","getAttribute","j","nodeCheck","data","ariaChecked","checkedParent","checkedChild","subChildItems","len","checkboxEle","touchClass","icon","item","insertBefore","checkValue","curData","addCheck","frame","frameMouseHandler","createFullRow","allowMultiSelection","contains","addActionClass","selected","expanded","focusIn","textEle","dataId","renderNodeTemplate","eventArgs","nodeData","selectable","firstElementChild","rippleSpan","parentElement","action","actionValue","ds","groupBy","cusQuery","group","getDataSource","grpItem","itemObj","items","list","iNodes","k","sNodes","selectNode","cNodes","disableExpandAttr","eNodes","updateList","updateCheckedProp","nodes","concat","ensureIndeterminate","liElement","ensureParentCheckState","ensureChildCheckState","indeterminateNodes","checkBoxEle","getElementsByClassName","parentUL","currentParent","childElement","checkBoxes","parentCheck","childCheck","checkedState","currentLoadData","isNodeChecked","splice","ele","doCheckBoxAction","doCheck","updateFieldChecked","liEle","getElement","setValidCheckedNode","dynamicCheckState","updateField","checkBox","validateCheckNode","checkbox","currLi","nodeDetails","getNodeData","parent_1","updateIndeterminate","subChild","updateChildIndeterminate","parent","indeterminateData","getTreeData","subId","childElementCheck","innerChild","wrapper","state","isPrevent","isAdd","nodeCheckAction","getCheckEvent","observedArgs","cancel","ariaState","frameSpan","removeCheck","ensureStateChange","checked","firstNode","updateIdAttr","allowTextWrap","updateWrap","renderReactTemplates","hasPid","doExpandAction","isIE","ulEle","liList","calculateWrap","nextElementSibling","style","height","offsetHeight","eUids","expandGivenNodes","eNode","expandAction","afterFinalized","arr","proxy","expandCallback","eUid","callback","doSelectionAction","sUids","sNode","selectGivenNodes","clickHandler","event","isDevice","isIos","elementFromPoint","originalEvent","changedTouches","clientX","clientY","preventContextMenu","li","which","rippleElement","rippleIcons","removeHover","setFocusElement","checkWrapper","checkElement","triggerClickEvent","collapseNode","toggleSelect","nodeCheckedEvent","isCheck","expandNode","loaded","hideSpinner","start_1","end_1","proxy_1","ul_1","liEle_1","setHeight","activeElement_1","animate","name","animation","expand","timingFunction","begin","args","overflow","HTMLElement","progress","display","animateHeight","expandedNode","ul","addExpand","expandArgs","getExpandEvent","colArgs","nodeCollapseAction","start","activeElement","collapse","collapsedNode","removeExpand","toRemove","visibility","remaining","timeStamp","currentHeight","parentLi","expandChild","eicon","showSpinner","parents","mapper_2","getChildFields","loadChild","setSelectionForChildNodes","ensureCheckNode","disableTreeNodes","renderSubChild","getNodeObject","doDisableAction","getFields","nodeLevel","dataLevel","getChildMapper","obj","parentId","isRoot","getChildGroup","findIndex","objlen","tempArray","childIndex","cIcons","curLi","multiSelect","ctrlKey","isActive","unselectNode","getSelectEvent","nodeSelectAction","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","isVisible","isVisibleInViewport","scrollIntoView","txtWrap","left","window","innerHeight","documentElement","clientHeight","right","innerWidth","clientWidth","scrollHeight","isTowards","nextNode","getNextNode","getPrevNode","checkWrap","nodeCheckingAction","allCheckNode","parentIndex","getChildItems","childStateChange","childIsCheck","newCheck","validateCheck","length_1","hierChildId","childId_1","toBeOpened","focusNextNode","setFocus","isBackwards","rootNode","getRootNode","getEndNode","selectedItem","fNode","lastChild","previousSibling","nextSibling","prevNode","endNode","preNode","focus","focusedElement","onMouseOver","currentLi","setHover","onMouseLeave","hoveredNode","fromDS","getText","pNode","parentNode","pid","checkboxElement","nodeFields","textContent","tempArr","isStringTemplate","root","slice","destroyTemplate","clearTemplate","reRenderNodes","removeChild","oldClass","newClass","split","editingHandler","oldInpEle","updateOldText","innerEle","className","attrs","getEditEvent","outerHTML","inpWidth","offsetWidth","style_1","isReact","setTimeout","renderTextBox","innerHtml","inputObj","createInput","properties","container","inputEle","setSelectionRange","wireInputEvents","editData","editFields","inputFocusOut","newText","txtEle","crudOperation","appendNewText","isInput","updateText","triggerEvent","getNode","newData","innerText","getChildNodeObject","newList","toBind","initializeDrag","destroyDrag","virtualEle","dragObj","enableTailMode","enableAutoScroll","dragArea","dragTarget","enableTapHold","tapHoldThreshold","helper","sender","dragRoot","dragWrap","dragLi","isSameNode","cloneEle","cloneNode","children","nLen","cNode","body","cursor","dragData","dragStart","listItem","parseInt","getDragEvent","draggedNode","intDestroy","dragCancelAction","drag","cursorAt","targetTouches","dragAction","dragStop","removeVirtualEle","dropTarget","preventTargetExpand","dropRoot","dragParent","draggedParentNode","dropObj","out","default","over","drop","dropAction","dropWrap","dropLi","isDescendant","templateTarget","offsetY","offsetX","appendIndicator","renderVirtualEle","dropIndicator","virEle","dragInstance","liArray","draggable","i_1","ej2_instances","droppedElement","i_2","appendNode","i_3","draggedElement","dropAsChildNode","dropAsSiblingNode","pre","dropUl","dragParentUl","dragParentLi","closest","moveData","updateElement","updateAriaLevel","updateInstance","dropParentUl","expandParent","childLi","dropParentLi","removedData","updateChildField","refId","getDataPos","currPid","removeChildNodes","addChildData","dropIcon","generateIcon","generateUL","childElementCount","dragIcon","updateChildAriaLevel","sibEle","destroy","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","getVisibleNodes","collapseAllNodes","expandByLevel","expandAllNodes","eIcons","vNodes","removeNode","removeData","updateSelectedNodes","updateExpandedNodes","dm","newId","currId","doGivenAction","toExpand","addGivenNodes","isRemote","dropEle","updateMapper","refNode","dropIcon1","createListItemFromJson","offsetParent","returnValue","toUpperCase","url","navigateUrl","updated","childObj","nodeType","validID","checkValidId","doEnableAction","strNodes","filter","filterNestedChild","updatePersistProp","removeField","sleNodes","l","slelen","enodes","nodelen","cnodes","m","names","field","getMapperProp","fieldName","proxy_2","touchEditObj","tap","isDoubleTapped","tapCount","wireClickEvent","proxy_3","touchClickObj","wireExpandOnEvent","proxy_4","touchExpandObj","mouseDownHandler","keyboardModule","keyAction","bind","eventName","unWireEvents","matched","el","secondTap","firstTap","width","setCheckedNodes","uncheckAll","setIndeterminate","checkAll","setChildCheckState","parent_4","a","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","collapseAll","onLoaded","addNodes","beginEdit","disableNodes","enableNodes","ensureVisible","parentsId","reverse","expandAll","behavior","getAllCheckedNodes","getDisabledNodes","disabledNodes","moveNodes","sourceNodes","refreshNode","updatedChildValue","newNodeData","parentData","refreshData","newliEle","newTextEle","newIcon","fullEle","tooltip","htmlAttributes","attr","class","removeNodes","updateNode"],"mappings":"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","file":"js/chunk-vendors~44270a61.df168eca.4.2.0.js","sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\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, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n 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 } 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-checkbox-wrapper';\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([\n Property('child')\n ], FieldsSettings.prototype, \"child\", void 0);\n __decorate([\n Property([])\n ], FieldsSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Property('expanded')\n ], FieldsSettings.prototype, \"expanded\", void 0);\n __decorate([\n Property('hasChildren')\n ], FieldsSettings.prototype, \"hasChildren\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], FieldsSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldsSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('id')\n ], FieldsSettings.prototype, \"id\", void 0);\n __decorate([\n Property('imageUrl')\n ], FieldsSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Property('isChecked')\n ], FieldsSettings.prototype, \"isChecked\", void 0);\n __decorate([\n Property('parentID')\n ], FieldsSettings.prototype, \"parentID\", void 0);\n __decorate([\n Property(null)\n ], FieldsSettings.prototype, \"query\", void 0);\n __decorate([\n Property('selectable')\n ], FieldsSettings.prototype, \"selectable\", void 0);\n __decorate([\n Property('selected')\n ], FieldsSettings.prototype, \"selected\", void 0);\n __decorate([\n Property(null)\n ], FieldsSettings.prototype, \"tableName\", void 0);\n __decorate([\n Property('text')\n ], FieldsSettings.prototype, \"text\", void 0);\n __decorate([\n Property('tooltip')\n ], FieldsSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property('navigateUrl')\n ], 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([\n Property('SlideDown')\n ], ActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], ActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('linear')\n ], 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([\n Complex({ effect: 'SlideUp', duration: 400, easing: 'linear' }, ActionSettings)\n ], NodeAnimationSettings.prototype, \"collapse\", void 0);\n __decorate([\n Complex({ effect: 'SlideDown', duration: 400, easing: 'linear' }, ActionSettings)\n ], 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 // eslint-disable-next-line\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 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 if (isNOU(this.selectedNodes)) {\n this.setProperties({ selectedNodes: [] }, true);\n }\n if (isNOU(this.checkedNodes)) {\n this.setProperties({ checkedNodes: [] }, true);\n }\n if (isNOU(this.expandedNodes)) {\n this.setProperties({ expandedNodes: [] }, true);\n }\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 }\n else {\n this.element.classList.remove(DISABLED);\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 var firstUl = select('.' + PARENTITEM, this.element);\n if (isEnabled) {\n firstUl.setAttribute('aria-multiselectable', 'true');\n }\n else {\n firstUl.removeAttribute('aria-multiselectable');\n }\n };\n // eslint-disable-next-line\n TreeView.prototype.templateComplier = function (template) {\n if (template) {\n this.hasTemplate = true;\n // eslint-disable-next-line\n var e = void 0;\n this.element.classList.add(INTERACTION);\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\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 /* eslint-disable */\n this.isOffline = this.fields.dataSource.dataSource.offline;\n if (this.fields.dataSource.ready) {\n this.fields.dataSource.ready.then(function (e) {\n /* eslint-disable */\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', { 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', { error: e });\n });\n }\n }\n else {\n this.treeList.pop();\n if (isNOU(this.fields.dataSource)) {\n this.rootData = this.treeData = [];\n }\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) { value = null; }\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]\n && col !== 'url' && columns.indexOf(mapper[col]) === -1) {\n columns.push(mapper[col]);\n }\n }\n query.select(columns);\n if (prop.hasOwnProperty('tableName')) {\n query.from(mapper.tableName);\n }\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 }\n else {\n this.rootData = rootItems;\n }\n }\n else {\n this.rootData = this.treeData;\n }\n };\n TreeView.prototype.renderItems = function (isSorted) {\n /* eslint-disable */\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[i], 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 TreeView.prototype.updateCheckedStateFromDS = function (id) {\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[i][this.fields.id] ? resultData[i][this.fields.id].toString() : null;\n var resultPId = resultData[i][this.fields.parentID] ? resultData[i][this.fields.parentID].toString() : null;\n if (this.checkedNodes.indexOf(resultId) === -1 && !(this.isLoaded)) {\n this.checkedNodes.push(resultId);\n }\n if (resultData[i][this.fields.hasChildren]) {\n var id_1 = resultData[i][this.fields.id];\n var childData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.parentID, 'equal', id_1, false));\n for (var child = 0; child < childData.length; child++) {\n var childId = childData[child][this.fields.id] ? childData[child][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) === -1 && this.autoCheck) {\n this.checkedNodes.push(childId);\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).\n executeLocal(new Query().where(mapper_1.id, 'equal', this.checkedNodes[i], 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).\n executeLocal(new Query().where(mapper_1.parentID, 'equal', this.checkedNodes[i], true));\n for (var index = 0; index < checkedData.length; index++) {\n var checkedId = checkedData[index][this.fields.id] ? checkedData[index][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedId);\n }\n if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {\n this.validNodes.push(checkedId);\n }\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.isOffline)) {\n for (var index = 0; index < this.treeData.length; index++) {\n var fieldId = this.treeData[index][this.fields.id] ? this.treeData[index][this.fields.id].toString() : '';\n if (this.treeData[index][this.fields.isChecked] && !(this.isLoaded) && this.checkedNodes.indexOf(fieldId) === -1) {\n this.checkedNodes.push(fieldId);\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[index]);\n if (childItems) {\n this.updateChildCheckState(childItems, this.treeData[index]);\n }\n }\n this.validNodes = (this.enablePersistence) ? this.checkedNodes : this.validNodes;\n }\n this.setProperties({ checkedNodes: this.validNodes }, true);\n }\n };\n /**\n * To check whether the list data has sub child and to change the parent check state accordingly\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 var len = this.parentNodeCheck.length;\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[i][this.fields.id] ? childNodes[i][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.checkedNodes.push(id);\n }\n }\n var preElement = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.id, 'equal', id, true));\n this.getCheckedNodeDetails(mapper, preElement);\n }\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 TreeView.prototype.updateParentCheckState = function () {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n var childCheckedElement;\n for (var i = 0; i < indeterminate.length; i++) {\n var node = closest(indeterminate[i], '.' + LISTITEM);\n var nodeId = node.getAttribute('data-uid').toString();\n if (this.dataType === 1) {\n childCheckedElement = new DataManager(this.treeData).\n executeLocal(new Query().where(this.fields.parentID, 'equal', nodeId, true));\n }\n else {\n childCheckedElement = this.getChildNodes(this.treeData, nodeId);\n }\n var count = 0;\n if (childCheckedElement) {\n for (var j = 0; j < childCheckedElement.length; j++) {\n var childId = childCheckedElement[j][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childCheckedElement.length) {\n var nodeCheck = node.getAttribute('data-uid');\n if (this.checkedNodes.indexOf(nodeCheck) === -1) {\n this.checkedNodes.push(nodeCheck);\n }\n this.changeState(node, 'check', null, true, true);\n }\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 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 }\n else {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.id] + '\"]');\n }\n if (element) {\n var ariaChecked = element.querySelector('.' + CHECKBOXWRAP).getAttribute('aria-checked');\n if (ariaChecked !== 'true') {\n this.changeState(element, 'indeterminate', null, true, true);\n }\n }\n else if (this.dataType === 2) {\n var len = this.parentNodeCheck.length;\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 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[index][this.fields.id] ? childItems[index][this.fields.id].toString() : '';\n if (childItems[index][this.fields.isChecked] && !(this.isLoaded) && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedChild);\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[index]);\n if (subChildItems && subChildItems.length) {\n if (this.parentCheckData.indexOf(treeData) === -1)\n this.parentCheckData.push(treeData);\n this.updateChildCheckState(subChildItems, childItems[index]);\n }\n if (count === childItems.length && this.autoCheck && this.checkedNodes.indexOf(checkedParent) === -1) {\n this.checkedNodes.push(checkedParent);\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[len]) && (this.parentCheckData[len])) {\n this.checkIndeterminateState(this.parentCheckData[len]);\n }\n }\n }\n this.parentCheckData = [];\n };\n TreeView.prototype.beforeNodeCreate = function (e) {\n if (this.showCheckBox) {\n var checkboxEle = createCheckBox(this.createElement, true, { cssClass: this.touchClass });\n checkboxEle.setAttribute('role', 'checkbox');\n checkboxEle.setAttribute('aria-label', 'checkbox');\n var icon = select('div.' + ICON, 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 checkboxEle.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n }\n else if (!isNOU(checkValue) && checkValue.toString() === 'true') {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n checkboxEle.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n }\n else {\n checkboxEle.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[i])) && !isNOU(getValue(mapper.parentID, ds[i]))) {\n return 1;\n }\n }\n else if ((typeof mapper.child === 'string') && isNOU(getValue(mapper.child, ds[i]))) {\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[i]))) {\n return 2;\n }\n if (!isNOU(getValue(mapper.parentID, ds[i])) || !isNOU(getValue(mapper.hasChildren, ds[i]))) {\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[j].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) {\n var iNodes = selectAll('.' + IMAGE, element);\n for (var k = 0; k < iNodes.length; k++) {\n iNodes[k].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[i], 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[j]);\n if (icon && icon.classList.contains(EXPANDABLE)) {\n this.disableExpandAttr(cNodes[j]);\n }\n }\n var eNodes = selectAll('.' + EXPANDED, element);\n if (!this.isInitalExpand) {\n for (var i = 0; i < eNodes.length; i++) {\n this.renderChildNodes(eNodes[i]);\n }\n }\n removeClass(eNodes, EXPANDED);\n this.updateList();\n if (this.isLoaded) {\n this.updateCheckedProp();\n }\n };\n TreeView.prototype.updateCheckedProp = function () {\n if (this.showCheckBox) {\n var nodes = [].concat([], this.checkedNodes);\n this.setProperties({ checkedNodes: nodes }, 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[i].classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, liElement[i]);\n if (ulElement) {\n this.ensureParentCheckState(liElement[i]);\n }\n else {\n this.ensureChildCheckState(liElement[i]);\n }\n }\n }\n }\n else {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n for (var i = 0; i < indeterminate.length; i++) {\n indeterminate[i].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('.' + CHECK, ulElement);\n var indeterminateNodes = selectAll('.' + INDETERMINATE, ulElement);\n var nodes = selectAll('.' + LISTITEM, ulElement);\n var checkBoxEle = element.getElementsByClassName(CHECKBOXWRAP)[0];\n if (nodes.length === checkedNodes.length) {\n this.changeState(checkBoxEle, 'check', null, true, true);\n }\n else if (checkedNodes.length > 0 || indeterminateNodes.length > 0) {\n this.changeState(checkBoxEle, 'indeterminate', null, true, true);\n }\n else if (checkedNodes.length === 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.ensureChildCheckState = function (element, e) {\n if (!isNOU(element)) {\n var childElement = select('.' + PARENTITEM, element);\n var checkBoxes = void 0;\n if (!isNOU(childElement)) {\n checkBoxes = selectAll('.' + CHECKBOXWRAP, childElement);\n var isChecked = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n var parentCheck = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(INDETERMINATE);\n var childCheck = childElement.querySelectorAll('li');\n var expandState = childElement.parentElement.getAttribute('aria-expanded');\n var checkedState = void 0;\n for (var index = 0; index < checkBoxes.length; index++) {\n var childId = childCheck[index].getAttribute('data-uid');\n if (!isNOU(this.currentLoadData) && !isNOU(getValue(this.fields.isChecked, this.currentLoadData[index]))) {\n checkedState = getValue(this.fields.isChecked, this.currentLoadData[index]) ? 'check' : 'uncheck';\n if (this.ele !== -1) {\n checkedState = isChecked ? 'check' : 'uncheck';\n }\n if ((checkedState === 'uncheck') && (!isUndefined(this.parentNodeCheck) && this.autoCheck\n && this.parentNodeCheck.indexOf(childId) !== -1)) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n checkedState = 'indeterminate';\n }\n }\n else {\n var isNodeChecked = checkBoxes[index].getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n if (isChecked) {\n checkedState = 'check';\n }\n else if (isNodeChecked && !this.isLoaded) {\n checkedState = 'check';\n }\n else if (this.checkedNodes.indexOf(childId) !== -1 && this.isLoaded && (parentCheck || isChecked)) {\n checkedState = 'check';\n }\n else if (childCheck[index].classList.contains(CHILD) && (!isUndefined(this.parentNodeCheck) && this.autoCheck\n && (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else if (this.dataType === 1 && (!isUndefined(this.parentNodeCheck) && this.autoCheck &&\n (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else {\n checkedState = 'uncheck';\n }\n }\n this.changeState(checkBoxes[index], checkedState, e, true, true);\n }\n }\n if (this.autoCheck && this.isLoaded) {\n this.updateParentCheckState();\n }\n }\n };\n TreeView.prototype.doCheckBoxAction = function (nodes, doCheck) {\n var li = selectAll('.' + LISTITEM, this.element);\n if (!isNOU(nodes)) {\n for (var len = nodes.length; len >= 0; len--) {\n var liEle = void 0;\n if (nodes.length === 1) {\n liEle = this.getElement(nodes[len - 1]);\n }\n else {\n liEle = this.getElement(nodes[len]);\n }\n if (isNOU(liEle)) {\n var node = void 0;\n node = nodes[len - nodes.length] ? nodes[len - nodes.length].toString() : nodes[len] ? nodes[len].toString() : null;\n if (node !== '' && doCheck && node) {\n this.setValidCheckedNode(node);\n this.dynamicCheckState(node, doCheck);\n }\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[i][this.fields.id] ? childItems[i][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 }\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[index], doCheck);\n this.changeState(checkBoxes[index], doCheck ? 'check' : 'uncheck', null, null, null, doCheck);\n }\n }\n else {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[index], doCheck);\n this.changeState(checkBoxes[index], doCheck ? 'check' : 'uncheck');\n }\n }\n }\n if (nodes) {\n for (var j = 0; j < nodes.length; j++) {\n var node = nodes[j] ? nodes[j].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 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 indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;\n var check = parentElement ? select('.' + CHECK, parentElement) : null;\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[i][this.fields.id] ? childNodes[i][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 }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (id === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && element && (id === node) && doCheck) {\n this.changeState(element, 'check', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!element && !parentElement && (id === node) && this.autoCheck) {\n this.updateIndeterminate(node, doCheck);\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n 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[i][this.fields.id] ? this.treeData[i][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[i]);\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 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[i][this.fields.id] ? childNodes[i][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 }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\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 }\n else if (doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n else if (!doCheck && this.checkedNodes.indexOf(parent) !== -1 && this.parentNodeCheck.indexOf(parent) === -1\n && 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 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[j][this.fields.id] ? subChild[j][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 }\n else if (this.checkedNodes.indexOf(node) === -1 && parentElement && !element && (subId === node) && !doCheck) {\n if (this.autoCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else {\n if (count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else {\n this.changeState(parentElement, 'uncheck', null);\n }\n }\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (subId === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && indeterminate && (subId === node) && this.autoCheck && count === 0\n && !doCheck) {\n indeterminate.classList.remove(INDETERMINATE);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && check && (subId === node) && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(subId) === -1 && element && childElementCheck && count === 0) {\n this.changeState(element, 'uncheck', null);\n }\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 }\n else if (doCheck && count === subChild.length && this.checkedNodes.indexOf(parent) === -1) {\n this.checkedNodes.push(parent);\n }\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[j]);\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 (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 }\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 }\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 }\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 wrapper.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 wrapper.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.checkedNodes.push(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 { action: action, cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, data: nodeData };\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] ? this.rootData[0].hasOwnProperty(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[i]);\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 eUids = this.expandedNodes;\n if (this.isInitalExpand && eUids.length > 0) {\n this.setProperties({ expandedNodes: [] }, true);\n /* eslint-disable */\n if (this.fields.dataSource instanceof DataManager) {\n this.expandGivenNodes(eUids);\n }\n else {\n for (var i = 0; i < eUids.length; i++) {\n var eNode = select('[data-uid=\"' + eUids[i] + '\"]', 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 }\n else {\n if (eUids[i] && this.expandChildren.indexOf(eUids[i]) === -1) {\n this.expandChildren.push(eUids[i].toString());\n }\n continue;\n }\n }\n this.afterFinalized();\n }\n }\n else {\n this.afterFinalized();\n }\n };\n TreeView.prototype.expandGivenNodes = function (arr) {\n var proxy = this;\n this.expandCallback(arr[this.index], function () {\n proxy.index++;\n if (proxy.index < arr.length) {\n proxy.expandGivenNodes(arr);\n }\n else {\n proxy.afterFinalized();\n }\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 else {\n callback();\n }\n }\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 = { data: this.treeData };\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({ selectedNodes: [] }, true);\n for (var i = 0; i < sUids.length; i++) {\n var sNode = select('[data-uid=\"' + sUids[i] + '\"]', this.element);\n if (sNode && !(sNode.classList.contains('e-active'))) {\n this.selectNode(sNode, null, true);\n }\n else {\n this.selectedNodes.push(sUids[i]);\n }\n if (!this.allowMultiSelection) {\n break;\n }\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[i].classList.contains('e-disable')) {\n this.selectNode(sNodes[i], null, true);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n };\n TreeView.prototype.clickHandler = function (event) {\n var target = Browser.isDevice && !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 }\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 }\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 }\n else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, target, event);\n }\n else if (rippleElement && rippleIcons) {\n if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(EXPANDABLE)) {\n this.expandAction(li, rippleIcons, event);\n }\n else if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, rippleIcons, event);\n }\n else if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\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 currLi = closest(wrapper, '.' + LISTITEM);\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.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 proxy_1 = this;\n var ul_1 = select('.' + PARENTITEM, currLi);\n var liEle_1 = currLi;\n this.setHeight(liEle_1, ul_1);\n var activeElement_1 = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate && !this.isRefreshed) {\n this.aniObj.animate(ul_1, {\n name: this.animation.expand.effect,\n duration: this.animation.expand.duration,\n timingFunction: this.animation.expand.easing,\n begin: function (args) {\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 proxy_1.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 }\n else {\n this.expandedNode(liEle_1, ul_1, icon);\n }\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 };\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 }\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 }\n else {\n _this.nodeCollapseAction(currLi, icon, observedArgs);\n }\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 proxy = this;\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,\n timingFunction: this.animation.collapse.easing,\n begin: function (args) {\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 proxy.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 }\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 }\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) {\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 /* eslint-disable */\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 }\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', { error: e });\n });\n }\n }\n else {\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'));\n this.currentLoadData = this.getSortedData(childItems);\n if (isNOU(childItems) || childItems.length === 0) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n return;\n }\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);\n this.finalizeNode(parentLi);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\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 }\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 (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.disableTreeNodes = function (childItems) {\n var i = 0;\n while (i < childItems.length) {\n var id = childItems[i][this.fields.id] ? childItems[i][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 TreeView.prototype.setSelectionForChildNodes = function (nodes) {\n var i;\n for (i = 0; i < nodes.length; i++) {\n var id = nodes[i][this.fields.id] ? nodes[i][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) {\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);\n this.ensureParentCheckState(element);\n }\n }\n this.currentLoadData = null;\n };\n TreeView.prototype.getFields = function (mapper, nodeLevel, dataLevel) {\n if (nodeLevel === dataLevel) {\n return mapper;\n }\n else {\n return this.getFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildFields = function (mapper, nodeLevel, dataLevel) {\n var childData;\n if (nodeLevel === dataLevel) {\n return this.getChildMapper(mapper);\n }\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) {\n var _this = this;\n if (isRoot === void 0) { isRoot = false; }\n var childNodes;\n if (isNOU(obj)) {\n return childNodes;\n }\n else if (this.dataType === 1) {\n return this.getChildGroup(this.groupedData, parentId, isRoot);\n }\n else {\n if (typeof this.fields.child === 'string') {\n var index = obj.findIndex(function (data) { return data[_this.fields.id] && data[_this.fields.id].toString() === parentId; });\n if (index !== -1) {\n return getValue(this.fields.child, obj[index]);\n }\n if (index === -1) {\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var tempArray = getValue(this.fields.child, obj[i]);\n var childIndex = !isNOU(tempArray) ? tempArray.findIndex(function (data) { return data[_this.fields.id] && data[_this.fields.id].toString() === parentId; }) : -1;\n if (childIndex !== -1) {\n return getValue(this.fields.child, tempArray[childIndex]);\n }\n else if (!isNOU(tempArray)) {\n childNodes = this.getChildNodes(tempArray, parentId);\n if (childNodes !== undefined) {\n break;\n }\n }\n }\n }\n }\n }\n return childNodes;\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[i][0]) && !isNOU(getValue(this.fields.parentID, data[i][0]))) {\n if (getValue(this.fields.parentID, data[i][0]).toString() === parentId) {\n return data[i];\n }\n }\n else if (isRoot) {\n return data[i];\n }\n else {\n return [];\n }\n }\n return childNodes;\n };\n TreeView.prototype.renderSubChild = function (element, expandChild, loaded) {\n if (expandChild) {\n var cIcons = selectAll('.' + EXPANDABLE, element);\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[i];\n if (element.querySelector('.e-icons') !== cIcons[i]) {\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);\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 }\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 }\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)))) {\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[i];\n if (isVisible(currNode) && !currNode.classList.contains('e-disable')) {\n this.addSelect(currNode);\n }\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 }\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 }\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 }\n else {\n ele.removeAttribute('aria-selected');\n }\n }\n removeClass(selectedLI, ACTIVE);\n this.setProperties({ selectedNodes: [] }, true);\n };\n TreeView.prototype.getSelectEvent = function (currLi, action, e) {\n var nodeData = this.getNodeData(currLi);\n return { action: action, cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, nodeData: nodeData };\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 = e.originalEvent.target;\n if (!target || target.classList.contains(INPUT) || target.classList.contains(ROOT) ||\n target.classList.contains(PARENTITEM) || target.classList.contains(LISTITEM) ||\n target.classList.contains(ICON) || this.showCheckBox && closest(target, '.' + CHECKBOXWRAP)) {\n return;\n }\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 }\n else {\n var classList = icon.classList;\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(currLi, icon, e);\n }\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) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n }\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 }\n else {\n _this.nodeExpandAction(currLi, icon, expandChild, callback);\n }\n });\n }\n else {\n this.nodeExpandAction(currLi, icon, expandChild, callback);\n }\n };\n TreeView.prototype.nodeExpandAction = function (currLi, icon, expandChild, callback) {\n var ul = select('.' + PARENTITEM, currLi);\n if (ul && ul.nodeName === 'UL') {\n this.expandNode(currLi, icon);\n }\n else {\n this.isFirstRender = true;\n this.renderChildNodes(currLi, expandChild, callback);\n var liEles = selectAll('.' + LISTITEM, currLi);\n for (var i = 0; i < liEles.length; i++) {\n var id = this.getId(liEles[i]);\n if (this.expandChildren.indexOf(id) !== -1 && this.expandChildren !== undefined) {\n var icon_1 = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEles[i]));\n if (!isNOU(icon_1)) {\n this.expandAction(liEles[i], 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 }\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 }\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, e);\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 }\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) &&\n 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 }\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 checkWrap.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 (child !== null) ? this.allCheckNode(child, this.checkedElement, null, null, false) : child = null;\n }\n }\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true);\n if (this.autoCheck) {\n this.ensureChildCheckState(li);\n this.ensureParentCheckState(closest(closest(li, '.' + PARENTITEM), '.' + LISTITEM));\n var doCheck = void 0;\n if (eventArgs.action === 'check') {\n doCheck = true;\n }\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 TreeView.prototype.ensureStateChange = function (li, doCheck) {\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 for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[i][this.fields.id] ? resultData[i][this.fields.id].toString() : null;\n var isCheck = resultData[i][this.fields.isChecked] ? resultData[i][this.fields.isChecked].toString() : null;\n if (this.checkedNodes.indexOf(parentIndex) !== -1 && this.checkedNodes.indexOf(resultId) === -1) {\n this.checkedNodes.push(resultId);\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 }\n else if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null &&\n 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 ||\n 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 }\n else {\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n }\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[i][this.fields.id] ? checkedData[i][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 }\n else {\n for (var i = 0; i < this.treeData.length; i++) {\n var checkedId = this.treeData[i][this.fields.id] ? this.treeData[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) === -1) {\n this.checkedNodes.push(checkedId);\n }\n }\n }\n }\n else {\n var childItems = this.getChildNodes(this.treeData, parentIndex);\n if (childItems) {\n this.childStateChange(childItems, parentIndex, childElement, doCheck);\n }\n }\n };\n TreeView.prototype.getChildItems = function (childItems, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var childId = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n var childIsCheck = childItems[i][this.fields.isChecked] ? childItems[i][this.fields.isChecked].toString() :\n 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.checkedNodes.push(childId);\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 TreeView.prototype.childStateChange = function (childItems, parent, childElement, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var checkedChild = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : '';\n var isCheck = childItems[i][this.fields.isChecked] ? childItems[i][this.fields.isChecked].toString() : null;\n if (this.autoCheck) {\n if (this.checkedNodes.indexOf(parent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n if (this.parentNodeCheck.indexOf(checkedChild) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(checkedChild), 1);\n }\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 }\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 }\n else {\n if (this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n }\n }\n var subChild = this.getChildNodes([childItems[i]], 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[length_1]);\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[length_1][this.fields.isChecked]) && newCheck.indexOf(childId.toString()) === -1)\n || childCheck === 0 || checked === 2)) {\n (child[length_1][this.fields.isChecked] !== false || checked === 2) ? newCheck.push(childId.toString())\n : childCheck = null;\n childCheck = (child[length_1][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[length_1]);\n //Gets if any next level children are available for child nodes\n if (getValue(this.fields.hasChildren, child[length_1]) === true || hierChildId) {\n var id = getValue(this.fields.id, child[length_1]);\n var childId_1 = void 0;\n if (this.dataType === 1) {\n childId_1 = this.getChildNodes(this.treeData, id.toString());\n }\n else {\n childId_1 = hierChildId;\n }\n if (childId_1) {\n (isNOU(validateCheck)) ? this.allCheckNode(childId_1, newCheck, checked, childCheck) :\n this.allCheckNode(childId_1, newCheck, checked, childCheck, validateCheck);\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 }\n else if (icon.classList.contains(EXPANDABLE)) {\n this.expandAction(focusedNode, icon, e);\n }\n else {\n this.focusNextNode(focusedNode, true);\n }\n }\n else {\n if (icon && icon.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(focusedNode, icon, e);\n }\n else {\n var parentLi = closest(closest(focusedNode, '.' + PARENTITEM), '.' + LISTITEM);\n if (!parentLi) {\n return;\n }\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 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 }\n else if (nextNode.nextSibling == null && nextNode.classList.contains('e-node-collapsed')) {\n this.focusNextNode(nextNode, false);\n }\n else if (nextNode.nextSibling == null && lastChild.classList.contains(TEXTWRAP)) {\n this.focusNextNode(nextNode, false);\n }\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[index];\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[index];\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[index];\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[index];\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') && !nextNode.classList.contains(PREVENTSELECT)) {\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 focusedElement.setAttribute(\"tabindex\", \"0\");\n addClass([focusedElement], FOCUS);\n EventHandler.add(focusedElement, 'blur', this.focusOut, this);\n }\n this.mouseDownStatus = false;\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 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 }\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 ;\n TreeView.prototype.onMouseLeave = function (e) {\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 ;\n TreeView.prototype.getNodeData = function (currLi, fromDS) {\n if (!isNOU(currLi) && currLi.classList.contains(LISTITEM) &&\n !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 = checkboxElement.getAttribute('aria-checked');\n }\n return {\n id: id, text: text, parentID: pid, selected: selected, selectable: selectable, expanded: expanded,\n isChecked: checked, hasChildren: hasChildren\n };\n }\n return { id: '', text: '', parentID: '', selected: false, expanded: false, isChecked: '', hasChildren: false };\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 { cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, nodeData: nodeData, event: e };\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 }\n else {\n this.element.innerHTML = '';\n }\n if (!isNOU(this.nodeTemplateFn)) {\n this.clearTemplate();\n }\n this.setTouchClass();\n this.setProperties({ selectedNodes: [], checkedNodes: [], expandedNodes: [] }, 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) ||\n target.classList.contains(LISTITEM) || target.classList.contains(ICON) ||\n target.classList.contains(INPUT) || target.classList.contains(INPUTGROUP)) {\n return;\n }\n else {\n var liEle = closest(target, '.' + LISTITEM);\n this.createTextbox(liEle, e);\n }\n };\n TreeView.prototype.createTextbox = function (liEle, e) {\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', { className: TREEINPUT, attrs: { value: this.oldText } });\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 if (_this.isReact) {\n setTimeout(function () {\n _this.renderTextBox(eventArgs, textEle, style_1);\n }, 5);\n }\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 if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n this.crudOperation('update', null, liEle, newText, null, null, true);\n }\n else {\n this.appendNewText(liEle, txtEle, newText, true);\n }\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 }\n else {\n this.enableHtmlSanitizer ? txtEle.innerText = newText : txtEle.innerHTML = newText;\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 }\n else if (typeof ele === 'string') {\n return this.element.querySelector('[data-uid=\"' + ele + '\"]');\n }\n else if (typeof ele === 'object') {\n return getElement(ele);\n }\n else {\n return null;\n }\n };\n TreeView.prototype.getId = function (ele) {\n if (isNOU(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return ele;\n }\n else if (typeof ele === 'object') {\n return (getElement(ele)).getAttribute('data-uid');\n }\n else {\n return null;\n }\n };\n TreeView.prototype.getEditEvent = function (liEle, newText, inpEle) {\n var data = this.getNodeData(liEle);\n return { cancel: false, newText: newText, node: liEle, nodeData: data, oldText: this.oldText, innerHtml: inpEle };\n };\n TreeView.prototype.getNodeObject = function (id) {\n var childNodes;\n if (isNOU(id)) {\n return childNodes;\n }\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[i]);\n if (!isNOU(this.treeData[i]) && !isNOU(dataId) && dataId.toString() === id) {\n return this.treeData[i];\n }\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[i]);\n if (obj[i] && dataId && dataId.toString() === id) {\n return obj[i];\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childData = getValue(mapper.child, obj[i]);\n newList = this.getChildNodeObject(childData, this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var child = 'child';\n newList = this.getChildNodeObject(getValue(child, obj[i]), 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 }\n else {\n this.destroyDrag();\n }\n };\n TreeView.prototype.initializeDrag = function () {\n var _this = this;\n var virtualEle;\n var proxy = this;\n this.dragObj = new Draggable(this.element, {\n enableTailMode: true, 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 ||\n _this.dragTarget.classList.contains(ROOT) || _this.dragTarget.classList.contains(PARENTITEM) ||\n _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 = proxy.createElement('div', { className: ICON + ' ' + EXPANDABLE });\n cloneEle.insertBefore(icon, cloneEle.children[0]);\n }\n var cssClass = DRAGITEM + ' ' + ROOT + ' ' + _this.cssClass + ' ' + (_this.enableRtl ? RTL : '');\n virtualEle = proxy.createElement('div', { className: cssClass });\n virtualEle.appendChild(cloneEle);\n var nLen = _this.selectedNodes.length;\n if (nLen > 1 && _this.allowMultiSelection && _this.dragLi.classList.contains(ACTIVE)) {\n var cNode = proxy.createElement('span', { className: DROPCOUNT, innerHTML: '' + nLen });\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 }\n else {\n _this.trigger('nodeDragStart', eventArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n }\n else {\n _this.dragStartAction = true;\n }\n });\n }\n },\n drag: function (e) {\n _this.dragObj.setProperties({ cursorAt: { top: (!isNOU(e.event.targetTouches) || Browser.isDevice) ? 60 : -20 } });\n _this.dragAction(e, virtualEle);\n },\n dragStop: function (e) {\n removeClass([_this.element], DRAGGING);\n _this.removeVirtualEle();\n var dropTarget = e.target;\n var preventTargetExpand = false;\n var dropRoot = (closest(dropTarget, '.' + DROPPABLE));\n var isHelperElement = true;\n if (!dropTarget || !dropRoot) {\n detach(e.helper);\n document.body.style.cursor = '';\n isHelperElement = false;\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 }\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 (e) {\n document.body.style.cursor = '';\n },\n drop: function (e) {\n _this.dropAction(e);\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.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.removeVirtualEle();\n document.body.style.cursor = '';\n var classList = e.target.classList;\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 &&\n (!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) && e.event.offsetY < 7 && !checkWrapper) || (((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3)))) {\n var index = this.fullRowSelect ? (1) : (0);\n this.appendIndicator(dropLi, icon, index);\n }\n else if ((e && (!expand && !collapse) && !checkWrapper && templateTarget && e.event.offsetY > templateTarget.offsetHeight - 10) || ((expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19))) {\n var index = this.fullRowSelect ? (2) : (1);\n this.appendIndicator(dropLi, icon, index);\n }\n else {\n addClass([icon], DROPIN);\n }\n }\n else {\n if ((dropLi && e && (!expand && !collapse) && (e.event.offsetY < 7) && !checkWrapper) || (((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3)))) {\n var index = this.fullRowSelect ? (1) : (0);\n this.appendIndicator(dropLi, icon, index);\n }\n else if ((dropLi && e && (!expand && !collapse) && (e.target.offsetHeight > 0 && e.event.offsetY > (e.target.offsetHeight - 10)) && !checkWrapper) || (((expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19)))) {\n var index = this.fullRowSelect ? (2) : (1);\n this.appendIndicator(dropLi, icon, index);\n }\n else {\n addClass([icon], DROPIN);\n }\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 }\n else if (e.target.classList.contains(SIBLING)) {\n addClass([icon], DROPNEXT);\n }\n else {\n addClass([icon], DROPOUT);\n }\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', { className: SIBLING });\n dropLi.insertBefore(virEle, dropLi.children[index]);\n };\n /* eslint-disable */\n TreeView.prototype.dropAction = function (e) {\n var offsetY = e.event.offsetY;\n var dropTarget = e.target;\n var dragObj;\n var level;\n var drop = false;\n var dragInstance;\n var nodeData = [];\n var liArray = [];\n dragInstance = e.dragData.draggable;\n for (var i_1 = 0; i_1 < dragInstance.ej2_instances.length; i_1++) {\n if (dragInstance.ej2_instances[i_1] instanceof TreeView_1) {\n dragObj = dragInstance.ej2_instances[i_1];\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_2 = sNodes.length - 1; i_2 >= 0; i_2--) {\n if (dropLi.isSameNode(sNodes[i_2]) || this.isDescendant(sNodes[i_2], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[i_2], dropLi, e, dragObj, offsetY);\n }\n }\n else {\n for (var i_3 = 0; i_3 < sNodes.length; i_3++) {\n if (dropLi.isSameNode(sNodes[i_3]) || this.isDescendant(sNodes[i_3], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[i_3], dropLi, e, dragObj, offsetY);\n }\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[i]));\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 }\n else if (dropTarget.firstElementChild && dropTarget.classList.contains(ROOT)) {\n if (dropTarget.firstElementChild.nodeName === 'UL') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n }\n else if ((dropTarget.classList.contains('e-icon-collapsible')) || (dropTarget.classList.contains('e-icon-expandable'))) {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY);\n }\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY, true);\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 }\n else if (e.event.offsetY < 2) {\n pre = true;\n }\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 }\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 }\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 }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.dropAsChildNode = function (dragLi, dropLi, dragObj, index, e, pos, isCheck) {\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) && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi);\n this.moveData(dragLi, dropLi, dropParentUl, true, dragObj);\n }\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 }\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 }\n else {\n var dropUl = this.expandParent(dropLi);\n var childLi = dropUl.childNodes[index];\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 }\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 }\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[i]);\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 }\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.' + ICON, 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.' + ICON, 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 }\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.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.' + ICON, dropLi);\n if (icon) {\n removeClass([icon], EXPANDABLE);\n }\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 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[i];\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 if (e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (e.event.offsetY < 2) {\n pre = true;\n }\n var virEle = this.createElement('div', { className: SIBLING });\n var index = this.fullRowSelect ? (pre ? 1 : 2) : (pre ? 0 : 1);\n e.target.insertBefore(virEle, e.target.children[index]);\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[i])) {\n iconClass = iconCss[i];\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[i] === draggedNode && dropLi !== draggedNode) ? ++dropTar : dropTar;\n if ((drop !== true && index.children[i].classList.contains('e-hover'))) {\n indexValue = (event.offsetY >= 23) ? i + 1 : i;\n break;\n }\n else if (index.children[i] === node) {\n indexValue = (event.offsetY >= 23) ? i : i;\n break;\n }\n }\n indexValue = (dropTar !== 0) ? --indexValue : indexValue;\n position = (iconClass == \"e-drop-in\") ? \"Inside\" : ((event.offsetY < 7) ? \"Before\" : \"After\");\n }\n if (dropTarget) {\n if (newParent.length === 0) {\n targetParent = null;\n }\n else if (dropTarget.classList.contains(LISTITEM)) {\n targetParent = newParent[0];\n }\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') ?\n 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[i]);\n }\n }\n else {\n for (var i = 0; i < len; i++) {\n var rowDiv = select('.' + FULLROW, this.liList[i]);\n detach(rowDiv);\n }\n }\n };\n TreeView.prototype.createFullRow = function (item) {\n var rowDiv = this.createElement('div', { className: FULLROW });\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 }\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) {\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[i];\n var icon = select('.' + COLLAPSIBLE, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n this.collapseNode(liEle, icon, null);\n }\n this.collapseByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\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[i];\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[i];\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, len = eIcons.length; i < len; i++) {\n var icon = eIcons[i];\n var liEle = closest(icon, '.' + LISTITEM);\n this.expandAction(liEle, icon, 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[i])) {\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({ selectedNodes: [] }, true);\n var sNodes = selectAll('.' + ACTIVE, this.element);\n this.selectGivenNodes(sNodes);\n };\n TreeView.prototype.updateExpandedNodes = function () {\n this.setProperties({ expandedNodes: [] }, 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[i]);\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 }\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[i]).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[i]);\n if (isNOU(liEle)) {\n continue;\n }\n var icon = select('.' + selector, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n toExpand ? this.expandAction(liEle, icon, null) : this.collapseNode(liEle, icon, null);\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 refNode;\n var dropIcon1;\n if (!isNullOrUndefined(dropLi)) {\n dropIcon1 = select('div.' + ICON, dropLi);\n }\n if (this.dataType === 1 && dropIcon1 && dropIcon1.classList.contains(EXPANDABLE) && !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 }\n else {\n dropUl = dropEle;\n }\n refNode = dropUl.childNodes[index];\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[i], refNode);\n }\n if (this.dataType === 1 && !isNullOrUndefined(dropLi) && !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[i], refNode);\n }\n if (this.dataType === 1 && !isNullOrUndefined(dropLi) && !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 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[j].textContent.toUpperCase() > li[i].innerText.toUpperCase() : cNodes[j].textContent.toUpperCase() < li[i].innerText.toUpperCase();\n if (returnValue) {\n dropUl.insertBefore(li[i], cNodes[j]);\n break;\n }\n dropUl.insertBefore(li[i], 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[j]);\n }\n this.treeData.splice(pos, 0, nodes[j]);\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 = prop.hasOwnProperty('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[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n return i;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var data = getValue(mapper.child, obj[i]);\n pos = this.getDataPos(data, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var items = getValue('child', obj[i]);\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[k]);\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[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n if ((typeof mapper.child === 'string' && (obj[i].hasOwnProperty(mapper.child) && obj[i][mapper.child] !== null)) ||\n ((this.fields.dataSource instanceof DataManager) && obj[i].hasOwnProperty('child'))) {\n var key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n var childData = getValue(key, obj[i]);\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[k]);\n index++;\n }\n }\n else {\n var key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n obj[i][key] = data;\n }\n return true;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childObj = getValue(mapper.child, obj[i]);\n updated = this.addChildData(childObj, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n else if ((this.fields.dataSource instanceof DataManager) && !isNOU(getValue('child', obj[i]))) {\n var childData = getValue('child', obj[i]);\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[i][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[i]);\n var id = strNodes[i];\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[i] == \"string\") {\n id = (nodes[i]) ? nodes[i].toString() : null;\n }\n else if (typeof nodes[i] === \"object\") {\n id = nodes[i] ? nodes[i].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 }\n else if (this.dataType === 2) {\n for (var k = 0; k < this.treeData.length; k++) {\n var id = this.treeData[k][this.fields.id] ? this.treeData[k][this.fields.id].toString() : null;\n if (node.indexOf(id) !== -1) {\n this.validArr.push(this.treeData[k]);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[k]);\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[k][this.fields.id] ? treeData[k][this.fields.id].toString() : null;\n if (nodes.indexOf(id) !== -1) {\n this.validArr.push(treeData[k]);\n }\n var childItems = getValue(this.fields.child.toString(), treeData[k]);\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[l], '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[k], '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[m], '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[j]);\n if (!isNOU(obj[i][field])) {\n delete obj[i][field];\n }\n }\n if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n this.removeField(getValue(mapper.child, obj[i]), this.getChildMapper(mapper), names);\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n this.removeField(getValue('child', obj[i]), 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 var childNodes;\n if (isNOU(id)) {\n return;\n }\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 }\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[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n if (remove) {\n removedData = obj.splice(i, 1);\n }\n else {\n setValue(this.getMapperProp(mapper, key), value, obj[i]);\n removedData = [];\n }\n return removedData;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childData = getValue(mapper.child, obj[i]);\n removedData = this.updateChildField(childData, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var childItems = getValue('child', obj[i]);\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[i][this.fields.id]) ? getValue(this.fields.id, node[i]).toString() : null)));\n }\n node = nodeData;\n }\n var eventArgs = { data: this.treeData, action: action, nodeData: node };\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 var proxy_2 = this;\n this.touchEditObj = new Touch(this.element, {\n tap: function (e) {\n if (_this.isDoubleTapped(e) && e.tapCount === 2) {\n e.originalEvent.preventDefault();\n proxy_2.editingHandler(e.originalEvent);\n }\n }\n });\n }\n else {\n if (this.touchEditObj) {\n this.touchEditObj.destroy();\n }\n }\n };\n TreeView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n var proxy_3 = this;\n this.touchClickObj = new Touch(this.element, {\n tap: function (e) {\n proxy_3.clickHandler(e);\n }\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 var proxy_4 = this;\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))\n && e.originalEvent.which !== 3) {\n proxy_4.expandHandler(e);\n }\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 ;\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 }\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 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 TreeView.prototype.setValidCheckedNode = function (node) {\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]);\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[len][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.checkedNodes.push(parent_4);\n }\n }\n }\n }\n else if (this.dataType === 2) {\n for (var a = 0; a < this.treeData.length; a++) {\n var index = this.treeData[a][this.fields.id] ? this.treeData[a][this.fields.id].toString() : '';\n if (index === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n break;\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[a]);\n if (childItems) {\n this.setChildCheckState(childItems, node, this.treeData[a]);\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 TreeView.prototype.setChildCheckState = function (childItems, node, treeData) {\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[index][this.fields.id] ? childItems[index][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.checkedNodes.push(checkNode);\n }\n }\n if (checkNode === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n }\n var subChildItems = this.getChildNodes(this.treeData, checkNode);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, treeData);\n }\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[index][this.fields.id] ? childItems[index][this.fields.id].toString() : '';\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n }\n if (checkedChild === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[index]);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, childItems[index]);\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.checkedNodes.push(checkedParent);\n }\n }\n }\n };\n TreeView.prototype.setIndeterminate = function (nodes) {\n for (var i = 0; i < nodes.length; i++) {\n this.setValidCheckedNode(nodes[i]);\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[j]);\n pos++;\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\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[i]);\n if (treeData[i] && nodeId && nodeId.toString() === currID) {\n treeData[i] = newData[0];\n return true;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, treeData[i]))) {\n var childObj = getValue(mapper.child, treeData[i]);\n found = this.updateChildPosition(childObj, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', treeData[i]))) {\n var childData = getValue('child', treeData[i]);\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 }\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 }\n else if (target) {\n if (typeof target == \"string\") {\n nodesID[0] = target.toString();\n }\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[i]);\n if (isNullOrUndefined(liEle)) {\n continue;\n }\n var removedData = this.getNodeObject(nodesID[i]);\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 }\n else {\n changes.deletedRecords = matchedArr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then(function (e) { return _this.deleteSuccess(nodesID); })\n .catch(function (e) { return _this.dmFailure(e); });\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 (e) { return _this.editSucess(target, newText, prevent); })\n .catch(function (e) { return _this.dmFailure(e, target, prevent); });\n break;\n case 'insert':\n if (newNode.length == 1) {\n crud = data.insert(newNode[0], query.fromTable, query);\n }\n else {\n var arr = [];\n for (var i = 0, len = newNode.length; i < len; i++) {\n arr.push(newNode[i]);\n }\n changes.addedRecords = arr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then(function (e) {\n var dropLi = _this.getElement(target);\n _this.addSuccess(newNode, dropLi, index);\n _this.preventExpand = false;\n }).catch(function (e) { return _this.dmFailure(e); });\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[i]);\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 dropUl;\n var icon = dropLi ? dropLi.querySelector('.' + ICON) : null;\n var proxy = this;\n if (dropLi && icon && icon.classList.contains(EXPANDABLE) &&\n dropLi.querySelector('.' + PARENTITEM) === null) {\n proxy.renderChildNodes(dropLi, null, function () {\n dropUl = dropLi.querySelector('.' + PARENTITEM);\n proxy.addGivenNodes(nodes, dropLi, index, true, dropUl);\n proxy.triggerEvent('addNodes', nodes);\n });\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', { error: e });\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) { return data[_this.fields.id] && data[_this.fields.id].toString() === node; });\n if (index == -1) {\n for (var i = 0; i < data.length; i++) {\n var childItems = getValue(this.fields.child.toString(), data[i]);\n if (!isNOU(childItems)) {\n index = childItems.findIndex(function (data) { return data[_this.fields.id] && data[_this.fields.id].toString() === node; });\n if (index == -1) {\n this.getHierarchicalParentId(node, childItems, parentsID);\n }\n else {\n parentsID.push(data[i][this.fields.id].toString());\n this.getHierarchicalParentId(data[i][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 * @param {TreeView} newProp\n * @param {TreeView} oldProp\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({ expandedNodes: [] }, true);\n this.collapseAll();\n this.isInitalExpand = true;\n this.setProperties({ expandedNodes: isNOU(newProp.expandedNodes) ? [] : newProp.expandedNodes }, 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 this.reRenderNodes();\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[i].getAttribute('aria-expanded') !== 'true') {\n this.renderChildNodes(nodes[i], 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({ selectedNodes: newProp.selectedNodes }, true);\n this.doSelectionAction();\n break;\n case 'showCheckBox':\n this.reRenderNodes();\n break;\n case 'sortOrder':\n this.reRenderNodes();\n break;\n case 'fullRowNavigable':\n this.setProperties({ fullRowNavigable: newProp.fullRowNavigable }, 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 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 _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 * @param { { [key: string]: 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 */\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 }\n else {\n this.addSuccess(nodes, dropLi, index);\n }\n }\n else if (this.dataType === 2) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n if (dropLi) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n nodes = this.getSortedData(nodes);\n for (var i = 0; i < nodes.length; i++) {\n var pid = getValue(this.fields.parentID, nodes[i]);\n dropLi = pid ? this.getElement(pid.toString()) : pid;\n this.addGivenNodes([nodes[i]], 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 * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\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, null);\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 * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\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 * @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 */\n TreeView.prototype.collapseAll = function (nodes, level, excludeHiddenNodes) {\n if (!isNOU(nodes)) {\n this.doGivenAction(nodes, COLLAPSIBLE, false);\n }\n else {\n if (level > 0) {\n this.collapseByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\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 * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\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 * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\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 * @param {string | Element} node - Specifies ID of TreeView node/TreeView nodes.\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 }\n else if (this.dataType == 2) {\n parentsId = this.getHierarchicalParentId(node, this.treeData, parentsId).reverse();\n }\n this.expandAll(parentsId);\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 () { liEle.scrollIntoView({ behavior: \"smooth\" }); }, 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 * @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 */\n TreeView.prototype.expandAll = function (nodes, level, excludeHiddenNodes) {\n if (!isNOU(nodes)) {\n this.doGivenAction(nodes, EXPANDABLE, true);\n }\n else {\n if (level > 0) {\n this.expandByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.expandAllNodes(excludeHiddenNodes);\n }\n }\n };\n /**\n * Gets all the checked nodes including child, whether it is loaded or not.\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 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 * @param {string | Element} node - Specifies ID of TreeView node/TreeView 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 * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @isGenericType true\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 }\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 * @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 */\n TreeView.prototype.moveNodes = function (sourceNodes, target, index, preventTargetExpand) {\n var dropLi = this.getElement(target);\n var nodeData = [];\n if (isNOU(dropLi)) {\n return;\n }\n for (var i = 0; i < sourceNodes.length; i++) {\n var dragLi = this.getElement(sourceNodes[i]);\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);\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 * @param {string | Element} target - Specifies the ID of TreeView node or TreeView node as target element.\n * @param {{ [key: string]: Object }[]} newData - Specifies the new data of TreeView node.\n */\n TreeView.prototype.refreshNode = function (target, newData) {\n if (isNOU(target) || isNOU(newData)) {\n return;\n }\n var id;\n var isRefreshChild = false;\n if (this.dataType == 1 && newData.length > 1) {\n isRefreshChild = true;\n }\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 id = liEle ? liEle.getAttribute('data-uid') : ((target) ? target.toString() : null);\n this.refreshData = this.getNodeObject(id);\n newData = JSON.parse(JSON.stringify(newData));\n /* eslint-disable */\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[k][this.fields.parentID])) {\n parentData = newData[k];\n newData.splice(k, 1);\n break;\n }\n }\n newNodeData = extend({}, this.refreshData, parentData);\n }\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[index]);\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n if (isRefreshChild && ul) {\n this.expandAll([id]);\n }\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 }\n else if (newIcon.classList.contains(COLLAPSIBLE) && icon.classList.contains(EXPANDABLE)) {\n removeClass([newIcon], COLLAPSIBLE);\n addClass([newIcon], EXPANDABLE);\n }\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 (newNodeData.hasOwnProperty(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 }\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 * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\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 }\n else {\n this.deleteSuccess(nodes);\n }\n }\n };\n /**\n * Replaces the text of the TreeView node with the given text.\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 */\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 }\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 * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.uncheckAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, false);\n }\n };\n var TreeView_1;\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, NodeAnimationSettings)\n ], TreeView.prototype, \"animation\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"checkedNodes\", void 0);\n __decorate([\n Property('')\n ], TreeView.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"disabled\", void 0);\n __decorate([\n Property(null)\n ], TreeView.prototype, \"dragArea\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"expandedNodes\", void 0);\n __decorate([\n Property('Auto')\n ], TreeView.prototype, \"expandOn\", void 0);\n __decorate([\n Complex({}, FieldsSettings)\n ], TreeView.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"fullRowSelect\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"loadOnDemand\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"locale\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"nodeTemplate\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"selectedNodes\", void 0);\n __decorate([\n Property('None')\n ], TreeView.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"autoCheck\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"fullRowNavigable\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"drawNode\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"keyPress\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeChecked\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeChecking\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeClicked\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeCollapsed\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeCollapsing\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragging\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragStart\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragStop\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDropped\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeEdited\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeEditing\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeExpanded\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeExpanding\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeSelected\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeSelecting\", void 0);\n TreeView = TreeView_1 = __decorate([\n NotifyPropertyChanges\n ], TreeView);\n return TreeView;\n}(Component));\nexport { TreeView };\n"],"sourceRoot":""}