{"version":3,"file":"kendo.treeview.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendotreeview","js","this","$","undefined$1","TreeView","subGroup","nodeContents","nodeIcon","spriteRe","kendo","window","ui","data","encode","htmlEncode","extend","template","isArray","Array","Widget","HierarchicalDataSource","keys","NS","TEMP_NS","SELECT","CHECK","NAVIGATE","CHANGE","ERROR","CHECKED","INDETERMINATE","DRAGSTART","DRAG","DROP","DRAGEND","DATABOUND","ITEMSLOADED","LOADCOMPLETED","REQUESTEND","CLICK","UNDEFINED","KSTATEHOVER","KTREEVIEW","NODE","TOGGLE_ICON","TOGGLE_ICON_ELM","STRING","ARIA_CHECKED","ARIA_SELECTED","ARIA_DISABLED","ARIA_EXPANDED","ARIA_ACTIVEDESCENDANT","ARIA_BUSY","DISABLED","bindings","text","url","spriteCssClass","imageUrl","isDomElement","o","HTMLElement","nodeType","nodeName","contentChild","filter","node","result","children","length","checkboxes","find","insertAction","indexOffset","nodeData","referenceNode","parentNode","group","closest","parent","is","_dataSourceMove","dataSource","model","referenceItem","dataItem","referenceNodeIndex","indexOf","index","_insert","updateNodeHtml","wrapper","toggleButton","checkbox","innerWrapper","hasClass","prependTo","remove","removeAttr","appendTo","append","eq","addClass","container","tmp","toLowerCase","nextSibling","nodeValue","trim","test","className","insertBefore","firstChild","appendChild","moveContents","DataBoundWidget","init","element","options","inferred","list","that","hasDataSource","loadOnDemand","prototype","call","_dataSourceUids","_animation","_accessors","_templates","root","_wrapper","_group","_applyCssClasses","_tabindex","attr","_dataSource","_attachEvents","_dragging","_syncHtmlAndDataSource","autoBind","_progress","fetch","_attemptLoadCompleted","bind","checkChildren","updateIndeterminate","id","_ariaId","format","guid","notify","clickableItems","MOUSEENTER","_clickHandler","_click","on","e","preventDefault","removeClass","_toggleButtonClick","_keydown","_keypress","_focus","_blur","_mousedown","_checkboxChange","_retryRequest","target","focus","i","item","uid","itemCheckbox","view","uidAttr","expandedAttr","checkboxesEnabled","items","expanded","hasChildren","checked","prop","next","animationOptions","animation","hasCollapseAnimation","collapse","expand","reverse","effects","hide","enabled","dragAndDrop","dragging","widget","HierarchicalDragAndDrop","reorderable","$angular","autoScroll","allowedContainers","itemSelector","hintText","_hintText","clickMoveClick","contains","source","destination","dropHintContainer","itemFromTarget","content","first","last","dropPositionFrom","dropHint","prevAll","dragstart","trigger","sourceNode","drag","originalEvent","dropTarget","pageY","pageX","statusClass","status","setStatusClass","setStatus","drop","navigationTarget","_tempPreventNavigation","destinationNode","valid","setValid","state","dropPosition","position","dragend","triggerDragEnd","current","insertAfter","destroy","ev","off","templates","dragClue","treeview","fieldAccessor","_fieldAccessor","ref","encoded","_checkboxes","setAttributes","attributes","hasOwnProperty","wrapperCssClass","firstLevel","cssClass","groupLength","textClass","isLink","selected","checkboxClass","toggleButtonClass","toggleIcon","icon","support","isRtl","groupAttributes","groupCssClass","r","renderItems","itemContent","itemElement","tag","textAttr","toJSON","loading","messages","retry","requestFailed","setDataSource","one","_bindDataSource","_refreshHandler","refresh","_errorHandler","_error","_loadCompletedHandler","_loadCompleted","_requestEndHandler","_dsRequestEnd","_loadedNodes","setTimeout","type","_loadCompletedFired","concat","nodes","_unbindDataSource","unbind","silentRead","fields","field","create","recursiveRead","_initChildren","events","name","duration","dataTextField","size","textField","fieldName","fieldBindings","count","getter","map","x","d","Math","min","level","setOptions","fn","_trigger","eventName","_setChecked","datasource","value","isFunction","_setCheckedValue","_setIndeterminate","siblings","all","indeterminate","subnodes","_bubbleIndeterminate","skipDownward","_skip","set","isChecked","_preventChange","currentTarget","toggle","browser","msie","edge","_clickTarget","_focusable","select","clickTarget","touch","_nextVisible","scrollContainer","containers","offsets","documentElement","document","scrollHeight","clientHeight","push","scrollTop","focusElement","_enabled","skipSelf","wrapperRe","itemRe","_expanded","nextParent","_previousVisible","lastChild","prev","key","keyCode","focused","rtl","RIGHT","LEFT","DOWN","UP","HOME","END","ENTER","SPACEBAR","matchToFocus","focusedNode","get","_match","clearTimeout","_matchTimer","_matchNextByText","startIndex","contents","href","wrap","_getSelectedNode","groupElement","css","_nodes","groupData","each","_updateNodeClasses","defaultTemplate","html","renderCheckBox","rounded","replace","textWrap","_processNodes","callback","getByUid","_dataItem","_insertNode","insertCallback","collapsed","childrenData","updatedGroupLength","nodeHtml","_renderItem","angular","elements","_renderGroup","applyStylesFromKendoAttributes","_updateNodes","nodeWrapper","isCollapsed","context","render","setCheckedState","findByUid","toggleClass","end","_toggle","ns","_appendItems","dataItems","viewItems","rootItems","_refreshChildren","child","empty","_refreshRoot","groupHtml","parentElement","_angularItems","action","bubble","_remove","_loaded","load","retryHtml","replaceWith","loaded","enable","arguments","_current","_updateActiveDescendant","direction","height","kendoStop","kendoAnimate","reset","complete","force","showProgress","loadingText","_objectOrSelf","referenceDataItem","destTreeview","destDataSource","loadPromise","Deferred","resolve","promise","_toObservableData","obj","jQuery","ObservableArray","splice","apply","success","loadModel","inserted","done","max","add","noop","keepData","prevSibling","detach","findByText","getAttribute","expandPath","path","nodeIds","slice","nodeElement","then","proceed","shift","_parentIds","parents","unshift","expandTo","Node","len","cssProperties","registerPrefix","plugin"],"sources":["kendo.treeview.js"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.data.js'), require('kendo.treeview.draganddrop.js'), require('kendo.html.input.js'), require('kendo.icons.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.data', 'kendo.treeview.draganddrop', 'kendo.html.input', 'kendo.icons'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendotreeview = global.kendotreeview || {}, global.kendotreeview.js = factory()));\n})(this, (function () {\n var __meta__ = {\n id: \"treeview\",\n name: \"TreeView\",\n category: \"web\",\n description: \"The TreeView widget displays hierarchical data in a traditional tree structure,with support for interactive drag-and-drop operations.\",\n depends: [ \"data\", \"html.input\", \"icons\" ],\n features: [{\n id: \"treeview-dragging\",\n name: \"Drag & Drop\",\n description: \"Support for drag & drop\",\n depends: [ \"treeview.draganddrop\" ]\n }]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n ui = kendo.ui,\n data = kendo.data,\n encode = kendo.htmlEncode,\n extend = $.extend,\n template = kendo.template,\n isArray = Array.isArray,\n Widget = ui.Widget,\n HierarchicalDataSource = data.HierarchicalDataSource,\n keys = kendo.keys,\n NS = \".kendoTreeView\",\n TEMP_NS = \".kendoTreeViewTemp\",\n SELECT = \"select\",\n CHECK = \"check\",\n NAVIGATE = \"navigate\",\n EXPAND = \"expand\",\n CHANGE = \"change\",\n ERROR = \"error\",\n CHECKED = \"checked\",\n INDETERMINATE = \"indeterminate\",\n COLLAPSE = \"collapse\",\n DRAGSTART = \"dragstart\",\n DRAG = \"drag\",\n DROP = \"drop\",\n DRAGEND = \"dragend\",\n DATABOUND = \"dataBound\",\n ITEMSLOADED = \"itemsLoaded\",\n LOADCOMPLETED = \"loadCompleted\",\n REQUESTEND = \"requestEnd\",\n CLICK = \"click\",\n KENDOKEYDOWN = \"kendoKeydown\",\n UNDEFINED = \"undefined\",\n KSTATEHOVER = \"k-hover\",\n KTREEVIEW = \"k-treeview\",\n VISIBLE = \":visible\",\n NODE = \".k-item\",\n TOGGLE_ICON = \"k-toggle-icon\",\n TOGGLE_ICON_ELM = \"\",\n STRING = \"string\",\n ARIA_CHECKED = \"aria-checked\",\n ARIA_SELECTED = \"aria-selected\",\n ARIA_DISABLED = \"aria-disabled\",\n ARIA_EXPANDED = \"aria-expanded\",\n ARIA_ACTIVEDESCENDANT = \"aria-activedescendant\",\n ARIA_BUSY = \"aria-busy\",\n DISABLED = \"k-disabled\",\n TreeView,\n subGroup, nodeContents, nodeIcon,\n spriteRe,\n bindings = {\n text: \"dataTextField\",\n url: \"dataUrlField\",\n spriteCssClass: \"dataSpriteCssClassField\",\n imageUrl: \"dataImageUrlField\"\n },\n isJQueryInstance = function(obj) {\n return (obj instanceof kendo.jQuery) || (window.jQuery && obj instanceof window.jQuery);\n },\n isDomElement = function(o) {\n return (\n typeof HTMLElement === \"object\" ? o instanceof HTMLElement : //DOM2\n o && typeof o === \"object\" && o.nodeType === 1 && typeof o.nodeName === STRING\n );\n };\n\n function contentChild(filter) {\n return function(node) {\n var result = node.children(\".k-animation-container\");\n\n if (!result.length) {\n result = node;\n }\n\n return result.children(filter);\n };\n }\n\n function templateNoWith(code) {\n return kendo.template(code, { useWithBlock: false });\n }\n\n subGroup = contentChild(\".k-group\");\n nodeContents = contentChild(\".k-group,.k-content\");\n nodeIcon = function(node) {\n return node.children(\"div\").find((\".k-treeview-toggle > .\" + TOGGLE_ICON));\n };\n\n function checkboxes(node) {\n return node.find(\".k-checkbox-wrapper:first input[type=checkbox]\");\n }\n\n function insertAction(indexOffset) {\n return function(nodeData, referenceNode) {\n referenceNode = referenceNode.closest(NODE);\n\n var group = referenceNode.parent(),\n parentNode;\n\n if (group.parent().is(\"li\")) {\n parentNode = group.parent();\n }\n\n return this._dataSourceMove(nodeData, group, parentNode, function(dataSource, model) {\n var referenceItem = this.dataItem(referenceNode);\n var referenceNodeIndex = referenceItem && referenceNode.parent().children().length !== referenceItem.parent().length ? referenceItem.parent().indexOf(referenceItem) : referenceNode.index();\n\n return this._insert(dataSource.data(), model, referenceNodeIndex + indexOffset);\n });\n };\n }\n\n spriteRe = /k-sprite/;\n\n function moveContents(node, container) {\n var tmp;\n\n while (node && node.nodeName.toLowerCase() != \"ul\") {\n tmp = node;\n node = node.nextSibling;\n\n if (tmp.nodeType == 3) {\n tmp.nodeValue = kendo.trim(tmp.nodeValue);\n }\n\n if (spriteRe.test(tmp.className)) {\n container.insertBefore(tmp, container.firstChild);\n } else {\n container.appendChild(tmp);\n }\n }\n }\n\n function updateNodeHtml(node) {\n var wrapper = node.children(\"div\"),\n group = node.children(\"ul\"),\n toggleButton = wrapper.find((\".k-treeview-toggle > .\" + TOGGLE_ICON)),\n checkbox = node.children(\"input[type=checkbox]\"),\n innerWrapper = wrapper.children(\".k-in\");\n\n if (node.hasClass(\"k-treeview\")) {\n return;\n }\n\n if (!wrapper.length) {\n wrapper = $(\"
\").prependTo(node);\n }\n\n if (!toggleButton.length && group.length) {\n toggleButton = $((\"\" + TOGGLE_ICON_ELM + \"\")).prependTo(wrapper);\n } else if (!group.length || !group.children().length) {\n toggleButton.parent().remove();\n group.remove();\n node.removeAttr(ARIA_EXPANDED);\n }\n\n if (checkbox.length) {\n $(\"\").appendTo(wrapper).append(checkbox);\n }\n\n if (!innerWrapper.length) {\n innerWrapper = node.children(\"a\").eq(0).addClass(\"k-in k-link\");\n\n if (!innerWrapper.length) {\n innerWrapper = $(\"\");\n }\n\n innerWrapper.appendTo(wrapper);\n\n if (wrapper.length) {\n moveContents(wrapper[0].nextSibling, innerWrapper[0]);\n }\n }\n }\n\n TreeView = kendo.ui.DataBoundWidget.extend({\n init: function(element, options) {\n var that = this,\n inferred = false,\n hasDataSource = options && !!options.dataSource,\n list;\n\n if (isArray(options)) {\n options = { dataSource: options };\n }\n\n if (options && typeof options.loadOnDemand == UNDEFINED && isArray(options.dataSource)) {\n options.loadOnDemand = false;\n }\n\n Widget.prototype.init.call(that, element, options);\n\n element = that.element;\n options = that.options;\n\n that._dataSourceUids = {};\n\n list = (element.is(\"ul\") && element) ||\n (element.hasClass(KTREEVIEW) && element.children(\"ul\"));\n\n inferred = !hasDataSource && list.length;\n\n if (inferred) {\n options.dataSource.list = list;\n }\n\n that._animation();\n\n that._accessors();\n\n that._templates();\n\n // render treeview if it's not already rendered\n if (!element.hasClass(KTREEVIEW)) {\n that._wrapper();\n\n if (list) {\n that.root = element;\n that._group(that.wrapper);\n }\n } else {\n // otherwise just initialize properties\n that.wrapper = element;\n that.root = element.children(\"ul\").eq(0);\n }\n\n that._applyCssClasses();\n that._tabindex();\n\n that.wrapper.find(\">ul\").attr(\"role\", \"tree\");\n\n that._dataSource(inferred);\n\n that._attachEvents();\n\n that._dragging();\n\n if (!inferred) {\n if (options.autoBind) {\n that._progress(true);\n that.dataSource.fetch(this._attemptLoadCompleted.bind(this));\n }\n } else {\n that._syncHtmlAndDataSource();\n }\n\n if (options.checkboxes && options.checkboxes.checkChildren) {\n that.updateIndeterminate();\n }\n\n if (that.element[0].id) {\n that._ariaId = kendo.format(\"{0}_tv_active\", that.element[0].id);\n } else {\n that._ariaId = kendo.guid() + \"_tv_active\";\n }\n\n kendo.notify(that);\n },\n\n _attachEvents: function() {\n var that = this,\n clickableItems = \".k-in:not(.k-selected,.k-disabled)\",\n MOUSEENTER = \"mouseenter\";\n\n that._clickHandler = that._click.bind(that);\n\n that.wrapper\n .on(MOUSEENTER + NS, \".k-in.k-selected\", function(e) { e.preventDefault(); })\n .on(MOUSEENTER + NS, clickableItems, function() { $(this).addClass(KSTATEHOVER); })\n .on(\"mouseleave\" + NS, clickableItems, function() { $(this).removeClass(KSTATEHOVER); })\n .on(CLICK + NS, clickableItems, that._clickHandler)\n .on(\"dblclick\" + NS, \".k-in:not(.k-disabled)\", that._toggleButtonClick.bind(that))\n .on(CLICK + NS, (\".\" + TOGGLE_ICON), that._toggleButtonClick.bind(that))\n .on(\"keydown\" + NS, that, that._keydown.bind(that))\n .on(\"keypress\" + NS, that._keypress.bind(that))\n .on(\"focus\" + NS, that._focus.bind(that))\n .on(\"blur\" + NS, that._blur.bind(that))\n .on(\"mousedown\" + NS, (\".k-in,.k-checkbox-wrapper :checkbox,.\" + TOGGLE_ICON), that._mousedown.bind(that))\n .on(\"change\" + NS, \".k-checkbox-wrapper :checkbox\", that._checkboxChange.bind(that))\n .on(\"click\" + NS, \".k-request-retry\", that._retryRequest.bind(that))\n .on(\"click\" + NS, \".k-link.k-disabled\", function(e) { e.preventDefault(); })\n .on(\"click\" + NS, function(e) {\n var target = $(e.target);\n\n if (!target.is(\":kendoFocusable\") && !target.find(\"input,select,textarea,button,object\").is(\":kendoFocusable\")) {\n that.focus();\n }\n });\n },\n\n _syncHtmlAndDataSource: function(root, dataSource) {\n root = root || this.root;\n dataSource = dataSource || this.dataSource;\n var data = dataSource.view(),\n uidAttr = kendo.attr(\"uid\"),\n expandedAttr = kendo.attr(\"expanded\"),\n checkboxesEnabled = this.options.checkboxes,\n items = root.children(\"li\"),\n i,\n item,\n dataItem,\n uid,\n itemCheckbox;\n\n for (i = 0; i < items.length; i++) {\n dataItem = data[i];\n uid = dataItem.uid;\n item = items.eq(i);\n item.attr(\"role\", \"treeitem\")\n .attr(uidAttr, uid)\n .attr(ARIA_SELECTED, item.hasClass(\"k-selected\"));\n\n dataItem.expanded = item.attr(expandedAttr) === \"true\";\n\n if (dataItem.hasChildren) {\n item.attr(ARIA_EXPANDED, dataItem.expanded);\n }\n\n if (checkboxesEnabled) {\n itemCheckbox = checkboxes(item);\n dataItem.checked = itemCheckbox.prop(CHECKED);\n itemCheckbox.attr(\"id\", \"_\" + uid);\n itemCheckbox.next(\".k-checkbox-label\").attr(\"for\", \"_\" + uid);\n\n item.attr(ARIA_CHECKED, item.checked);\n }\n\n this._syncHtmlAndDataSource(item.children(\"ul\"), dataItem.children);\n }\n },\n\n _animation: function() {\n var options = this.options,\n animationOptions = options.animation,\n hasCollapseAnimation = animationOptions.collapse && \"effects\" in animationOptions.collapse,\n collapse = extend({}, animationOptions.expand, animationOptions.collapse);\n\n if (!hasCollapseAnimation) {\n collapse = extend(collapse, { reverse: true });\n }\n\n if (animationOptions === false) {\n animationOptions = {\n expand: { effects: {} },\n collapse: { hide: true, effects: {} }\n };\n }\n\n animationOptions.collapse = extend(collapse, { hide: true });\n options.animation = animationOptions;\n },\n\n _dragging: function() {\n var enabled = this.options.dragAndDrop;\n var dragging = this.dragging;\n\n if (enabled && !dragging) {\n var widget = this;\n\n this.dragging = new ui.HierarchicalDragAndDrop(this.element, {\n reorderable: true,\n $angular: this.options.$angular,\n autoScroll: this.options.autoScroll,\n filter: \"div:not(.k-disabled) .k-in\",\n allowedContainers: \".k-treeview\",\n itemSelector: \".k-treeview .k-item\",\n hintText: this._hintText.bind(this),\n clickMoveClick: this.options.dragAndDrop.clickMoveClick === true ? true : false,\n contains: function(source, destination) {\n return $.contains(source, destination);\n },\n dropHintContainer: function(item) {\n return item;\n },\n itemFromTarget: function(target) {\n var item = target.closest(\".k-treeview-top,.k-treeview-mid,.k-treeview-bot\");\n return {\n item: item,\n content: target.closest(\".k-in\"),\n first: item.hasClass(\"k-treeview-top\"),\n last: item.hasClass(\"k-treeview-bot\")\n };\n },\n dropPositionFrom: function(dropHint) {\n return dropHint.prevAll(\".k-in\").length > 0 ? \"after\" : \"before\";\n },\n dragstart: function(source) {\n widget.wrapper.attr(kendo.attr(\"scrollable\"), false);\n return widget.trigger(DRAGSTART, { sourceNode: source[0] });\n },\n drag: function(options) {\n widget.trigger(DRAG, {\n originalEvent: options.originalEvent,\n sourceNode: options.source[0],\n dropTarget: options.target[0],\n pageY: options.pageY,\n pageX: options.pageX,\n statusClass: options.status,\n setStatusClass: options.setStatus\n });\n },\n drop: function(options) {\n var dropTarget = $(options.dropTarget);\n var navigationTarget = dropTarget.closest(\"a\");\n\n if (navigationTarget && navigationTarget.attr(\"href\")) {\n widget._tempPreventNavigation(navigationTarget);\n }\n\n return widget.trigger(DROP, {\n originalEvent: options.originalEvent,\n sourceNode: options.source,\n destinationNode: options.destination,\n valid: options.valid,\n setValid: function(state) {\n this.valid = state;\n options.setValid(state);\n },\n dropTarget: options.dropTarget,\n dropPosition: options.position\n });\n },\n dragend: function(options) {\n var source = options.source;\n var destination = options.destination;\n var position = options.position;\n\n widget.wrapper.removeAttr(kendo.attr(\"scrollable\"));\n\n function triggerDragEnd(source) {\n if (widget.options.checkboxes && widget.options.checkboxes.checkChildren) {\n widget.updateIndeterminate();\n }\n\n widget.current(source);\n widget.element.focus();\n\n widget.trigger(DRAGEND, {\n originalEvent: options.originalEvent,\n sourceNode: source && source[0],\n destinationNode: destination[0],\n dropPosition: position\n });\n }\n\n // perform reorder / move\n // different handling is necessary because append might be async in remote bound tree\n if (position == \"over\") {\n widget.append(source, destination, triggerDragEnd);\n } else {\n if (position == \"before\") {\n source = widget.insertBefore(source, destination);\n } else if (position == \"after\") {\n source = widget.insertAfter(source, destination);\n }\n\n triggerDragEnd(source);\n }\n }\n });\n } else if (!enabled && dragging) {\n dragging.destroy();\n this.dragging = null;\n }\n },\n\n _tempPreventNavigation: function(node) {\n node.on(CLICK + NS + TEMP_NS, function(ev) {\n ev.preventDefault();\n node.off(CLICK + NS + TEMP_NS);\n });\n },\n\n _hintText: function(node) {\n return this.templates.dragClue({\n item: this.dataItem(node),\n treeview: this.options\n });\n },\n\n _templates: function() {\n var this$1$1 = this;\n\n var that = this,\n options = that.options,\n fieldAccessor = that._fieldAccessor.bind(that);\n\n if (options.template && typeof options.template == STRING) {\n options.template = template(options.template);\n } else if (!options.template) {\n options.template = function (ref) {\n var item = ref.item;\n\n var text = fieldAccessor(\"text\")(item);\n\n if (typeof item.encoded != 'undefined' && item.encoded === false) {\n return (\"\" + text + \"\");\n }\n\n return (\"\" + (encode(text)) + \"\");\n };\n }\n\n that._checkboxes();\n\n that.templates = {\n setAttributes: function(item) {\n var result = \"\";\n var attributes = item.attr || {};\n\n for (var attr in attributes) {\n if (attributes.hasOwnProperty(attr) && attr !== \"class\") {\n result += attr + \"=\\\"\" + attributes[attr] + \"\\\" \";\n }\n }\n\n return result;\n },\n wrapperCssClass: function(group, item) {\n var result = \"k-item k-treeview-item\",\n index = item.index;\n\n if (group.firstLevel && index === 0) {\n result += \" k-first\";\n }\n\n if (index == group.length - 1) {\n result += \" k-last\";\n }\n\n return result;\n },\n cssClass: function(group, item) {\n var result = \"\",\n index = item.index,\n groupLength = group.length - 1;\n\n if (group.firstLevel && index === 0) {\n result += \"k-treeview-top \";\n }\n\n if (index === 0 && index != groupLength) {\n result += \"k-treeview-top\";\n } else if (index == groupLength) {\n result += \"k-treeview-bot\";\n } else {\n result += \"k-treeview-mid\";\n }\n\n return result;\n },\n textClass: function(item, isLink) {\n var result = \"k-treeview-leaf k-in\";\n\n if (isLink) {\n result += \" k-link\";\n }\n\n if (item.enabled === false) {\n result += \" k-disabled\";\n }\n\n if (item.selected === true) {\n result += \" k-selected\";\n }\n\n return result;\n },\n checkboxClass: function(item) {\n var result = \"k-checkbox\";\n\n if (item.enabled === false) {\n result += \" k-disabled\";\n }\n\n return result;\n },\n toggleButtonClass: function(item) {\n var result = \"k-treeview-toggle\";\n\n if (item.enabled === false) {\n result += \" k-disabled\";\n }\n\n return result;\n },\n toggleIcon: function(icon, item) {\n if (item.expanded !== true) {\n return ui.icon(icon, { icon: (\"caret-alt-\" + (kendo.support.isRtl(that.element) ? 'left' : 'right')) });\n } else {\n return ui.icon(icon, { icon: 'caret-alt-down' });\n }\n },\n groupAttributes: function(group) {\n var attributes = \"\";\n\n if (!group.firstLevel) {\n attributes = \"role='group'\";\n }\n\n return attributes + (group.expanded !== true ? (\" \" + (kendo.attr(\"style-display\")) + \"=\\\"none\\\"\") : \"\");\n },\n groupCssClass: function(group) {\n var cssClass = \"k-group k-treeview-group\";\n\n if (group.firstLevel) {\n cssClass += \" k-treeview-lines\";\n }\n\n return cssClass;\n },\n dragClue: function (data) { return data.treeview.template(data); },\n group: function (data) { return \"
    \" +\n data.renderItems(data) +\n \"
\"; },\n itemContent: function (data) {\n var imageUrl = fieldAccessor(\"imageUrl\")(data.item);\n var spriteCssClass = fieldAccessor(\"spriteCssClass\")(data.item);\n var result = \"\";\n\n if (imageUrl) {\n result += \"\";\n }\n\n if (spriteCssClass) {\n result += \"\";\n }\n\n result += data.treeview.template(data);\n\n return result;\n },\n itemElement: function (data) {\n var that = this$1$1,\n item = data.item,\n r = data.r;\n var url = fieldAccessor(\"url\")(item),\n tag = url ? 'a' : 'span',\n textAttr = url ? ' href=\"' + url + '\"' : '';\n var result = \"
\";\n\n if (item.hasChildren) {\n result += \"\" +\n r.toggleIcon($(TOGGLE_ICON_ELM), item) +\n \"\";\n }\n\n if (data.treeview.checkboxes) {\n result += \"\" +\n data.treeview.checkboxes.template(data) +\n \"\";\n }\n\n result += \"<\" + tag + \" class='\" + (r.textClass(item, !!url)) + \"'\" + textAttr + \">\" +\n r.itemContent(data) +\n \"\";\n\n result += \"
\";\n\n return result;\n },\n item: function (data) {\n var item = data.item,\n r = data.r;\n var result =\n \"
  • \" +\n r.itemElement(data) +\n \"
  • \";\n\n return result;\n },\n loading: function (ref) {\n var messages = ref.messages;\n\n return (\"
    \" + (encode(messages.loading)));\n },\n retry: function (ref) {\n var messages = ref.messages;\n\n return (encode(messages.requestFailed)) + \" \" +\n \"\";\n }\n };\n },\n\n items: function() {\n return this.element.find(\".k-item > div:first-child\");\n },\n\n setDataSource: function(dataSource) {\n var options = this.options;\n\n options.dataSource = dataSource;\n\n this._dataSourceUids = {};\n\n this._dataSource();\n\n if (options.checkboxes && options.checkboxes.checkChildren) {\n this.dataSource.one(\"change\", this.updateIndeterminate.bind(this, null));\n }\n\n if (this.options.autoBind) {\n this.dataSource.fetch(this._attemptLoadCompleted.bind(this));\n }\n },\n\n _bindDataSource: function() {\n var that = this;\n\n that._refreshHandler = that.refresh.bind(that);\n that._errorHandler = that._error.bind(that);\n that._loadCompletedHandler = that._loadCompleted.bind(that);\n that._requestEndHandler = that._dsRequestEnd.bind(that);\n that._loadedNodes = [];\n\n that.dataSource.bind(CHANGE, that._refreshHandler);\n that.dataSource.bind(ERROR, that._errorHandler);\n\n that.dataSource.bind(ITEMSLOADED, that._loadCompletedHandler);\n that.dataSource.bind(REQUESTEND, that._requestEndHandler);\n },\n\n _dsRequestEnd: function(e) {\n var that = this;\n\n setTimeout(function() {\n if (e.type === \"read\" && !that._loadCompletedFired) {\n that._attemptLoadCompleted();\n }\n });\n },\n\n _loadCompleted: function(e) {\n var that = this;\n that._loadedNodes = that._loadedNodes.concat(e.nodes);\n\n if (!that.dataSource.loading() && that.options.loadOnDemand === false) {\n that.trigger(LOADCOMPLETED, { nodes: that._loadedNodes });\n that._loadedNodes = [];\n }\n },\n\n _attemptLoadCompleted: function() { // If there are no items to be loaded ensure event is triggered on dataBound\n var that = this,\n items = that.dataSource.view(),\n current, i;\n\n if (that.options.loadOnDemand === false) {\n for (i = 0; i < items.length; i++) {\n current = items[i];\n if (current.hasChildren && (!current.children || !current.children.data() || current.children.data().length === 0)) {\n return;\n }\n }\n\n that._loadCompletedFired = true;\n that.trigger(LOADCOMPLETED, { nodes: [] });\n }\n },\n\n _unbindDataSource: function() {\n var dataSource = this.dataSource;\n\n if (dataSource) {\n dataSource.unbind(CHANGE, this._refreshHandler);\n dataSource.unbind(ERROR, this._errorHandler);\n dataSource.unbind(ITEMSLOADED, this._loadCompletedHandler);\n dataSource.unbind(REQUESTEND, this._requestEndHandler);\n }\n },\n\n _dataSource: function(silentRead) {\n var that = this,\n options = that.options,\n dataSource = options.dataSource;\n\n function recursiveRead(data) {\n for (var i = 0; i < data.length; i++) {\n data[i]._initChildren();\n\n data[i].children.fetch();\n\n recursiveRead(data[i].children.view());\n }\n }\n\n dataSource = isArray(dataSource) ? { data: dataSource } : dataSource;\n\n that._unbindDataSource();\n\n if (!dataSource.fields) {\n dataSource.fields = [\n { field: \"text\" },\n { field: \"url\" },\n { field: \"spriteCssClass\" },\n { field: \"imageUrl\" }\n ];\n }\n\n that.dataSource = dataSource = HierarchicalDataSource.create(dataSource);\n\n if (silentRead) {\n dataSource.fetch();\n\n recursiveRead(dataSource.view());\n }\n\n that._bindDataSource();\n },\n\n events: [\n DRAGSTART,\n DRAG,\n DROP,\n DRAGEND,\n\n DATABOUND,\n LOADCOMPLETED,\n\n EXPAND,\n COLLAPSE,\n SELECT,\n CHANGE,\n NAVIGATE,\n CHECK,\n KENDOKEYDOWN\n ],\n\n options: {\n name: \"TreeView\",\n dataSource: {},\n animation: {\n expand: {\n effects: \"expand:vertical\",\n duration: 200\n }, collapse: {\n duration: 100\n }\n },\n messages: {\n loading: \"Loading...\",\n requestFailed: \"Request failed.\",\n retry: \"Retry\"\n },\n dragAndDrop: false,\n checkboxes: false,\n autoBind: true,\n autoScroll: false,\n loadOnDemand: true,\n template: \"\",\n dataTextField: null,\n size: \"medium\"\n },\n\n _accessors: function() {\n var that = this,\n options = that.options,\n i, field, textField,\n element = that.element;\n\n for (i in bindings) {\n field = options[bindings[i]];\n textField = element.attr(kendo.attr(i + \"-field\"));\n\n if (!field && textField) {\n field = textField;\n }\n\n if (!field) {\n field = i;\n }\n\n if (!isArray(field)) {\n field = [field];\n }\n\n options[bindings[i]] = field;\n }\n },\n\n // generates accessor function for a given field name, honoring the data*Field arrays\n _fieldAccessor: function(fieldName) {\n var fieldBindings = this.options[bindings[fieldName]],\n count = fieldBindings.length;\n\n return (function(item) {\n if (count === 0) {\n return kendo.getter(fieldName)(item);\n }\n\n return $.map(fieldBindings, function(x) {\n return function(d) { return kendo.getter(x)(d); };\n })[Math.min(item.level(), count - 1)](item);\n });\n },\n\n setOptions: function(options) {\n Widget.fn.setOptions.call(this, options);\n\n this._animation();\n\n this._dragging();\n\n this._accessors();\n\n this._templates();\n },\n\n _trigger: function(eventName, node) {\n return this.trigger(eventName, {\n node: node.closest(NODE)[0]\n });\n },\n\n _setChecked: function(datasource, value) {\n if (!datasource || !kendo.isFunction(datasource.view)) {\n return;\n }\n\n for (var i = 0, nodes = datasource.view(); i < nodes.length; i++) {\n if (nodes[i].enabled !== false) {\n this._setCheckedValue(nodes[i], value);\n }\n\n if (nodes[i].children) {\n this._setChecked(nodes[i].children, value);\n }\n }\n },\n\n _setCheckedValue: function(node, value) {\n node[CHECKED] = value;\n },\n\n _setIndeterminate: function(node) {\n var group = subGroup(node),\n siblings, length,\n all = true,\n i;\n\n if (!group.length) {\n return;\n }\n\n siblings = checkboxes(group.children());\n\n length = siblings.length;\n\n if (!length) {\n return;\n } else if (length > 1) {\n for (i = 1; i < length; i++) {\n if (siblings[i].checked != siblings[i - 1].checked ||\n siblings[i].indeterminate || siblings[i - 1].indeterminate) {\n all = false;\n break;\n }\n }\n } else {\n all = !siblings[0].indeterminate;\n }\n\n node.attr(ARIA_CHECKED, all ? siblings[0].checked : \"mixed\");\n\n return checkboxes(node)\n .data(INDETERMINATE, !all)\n .prop(INDETERMINATE, !all)\n .prop(CHECKED, all && siblings[0].checked);\n },\n\n updateIndeterminate: function(node) {\n // top-down update of inital indeterminate state for all nodes\n node = node || this.wrapper;\n\n var subnodes = subGroup(node).children();\n var i;\n var checkbox;\n var dataItem;\n\n if (subnodes.length) {\n for (i = 0; i < subnodes.length; i++) {\n this.updateIndeterminate(subnodes.eq(i));\n }\n\n if (node.is(\".k-treeview\")) {\n return;\n }\n\n checkbox = this._setIndeterminate(node);\n\n dataItem = this.dataItem(node);\n\n if (checkbox && checkbox.prop(CHECKED)) {\n dataItem.checked = true;\n } else {\n if (dataItem) {\n delete dataItem.checked;\n }\n }\n }\n },\n\n _bubbleIndeterminate: function(node, skipDownward) {\n // bottom-up setting of indeterminate state of parent nodes\n if (!node.length) {\n return;\n }\n\n if (!skipDownward) {\n //update the indeterminate state of the node itself\n this.updateIndeterminate(node);\n }\n\n var parentNode = this.parent(node),\n checkbox;\n\n if (parentNode.length) {\n this._setIndeterminate(parentNode);\n\n checkbox = parentNode.children(\"div\").find(\".k-checkbox-wrapper input[type=checkbox]\");\n\n this._skip = true;\n if (checkbox.prop(INDETERMINATE) === false) {\n this.dataItem(parentNode).set(CHECKED, checkbox.prop(CHECKED));\n } else {\n // delete this.dataItem(parentNode).checked;\n this.dataItem(parentNode).set(CHECKED, false);\n }\n\n this._skip = false;\n\n this._bubbleIndeterminate(parentNode, true);\n }\n },\n\n _checkboxChange: function(e) {\n var that = this;\n var checkbox = $(e.target);\n var isChecked = checkbox.prop(CHECKED);\n var node = checkbox.closest(NODE);\n var dataItem = this.dataItem(node);\n\n if (this._preventChange) {\n return;\n }\n\n if (dataItem.checked != isChecked) {\n dataItem.set(CHECKED, isChecked);\n node.attr(ARIA_CHECKED, isChecked);\n this._trigger(CHECK, node);\n }\n\n if (checkbox.is(\":focus\")) {\n that._trigger(NAVIGATE, node);\n that.focus();\n }\n },\n\n _toggleButtonClick: function(e) {\n var node = $(e.currentTarget).closest(NODE);\n\n if (node.is(\"[aria-disabled='true']\")) {\n return;\n }\n\n this.toggle(node);\n },\n\n _mousedown: function(e) {\n var that = this;\n var currentTarget = $(e.currentTarget);\n var node = $(e.currentTarget).closest(NODE);\n var browser = kendo.support.browser;\n\n if (node.is(\"[aria-disabled='true']\")) {\n return;\n }\n\n //IE does not trigger change for indeterminate checkboxes\n if ((browser.msie || browser.edge) && currentTarget.is(\":checkbox\")) {\n if (currentTarget.prop(INDETERMINATE)) {\n that._preventChange = false;\n\n currentTarget.prop(CHECKED, !currentTarget.prop(CHECKED));\n currentTarget.trigger(CHANGE);\n\n currentTarget.on(CLICK + NS, function(e) {\n e.preventDefault();\n });\n\n that._preventChange = true;\n } else {\n currentTarget.off(CLICK + NS);\n that._preventChange = false;\n }\n }\n\n that._clickTarget = node;\n that.current(node);\n },\n\n _focusable: function(node) {\n return node && node.length && node.is(\":visible\") && !node.find(\".k-in\").first().hasClass(DISABLED);\n },\n\n _focus: function() {\n var current = this.select(),\n clickTarget = this._clickTarget;\n\n // suppress initial focus state on touch devices (until keyboard is used)\n if (kendo.support.touch) {\n return;\n }\n\n if (clickTarget && clickTarget.length) {\n current = clickTarget;\n }\n\n if (!this._focusable(current)) {\n current = this.current();\n }\n\n if (!this._focusable(current)) {\n current = this._nextVisible($());\n }\n\n this.current(current);\n },\n\n focus: function() {\n var wrapper = this.wrapper,\n scrollContainer = wrapper[0],\n containers = [],\n offsets = [],\n documentElement = document.documentElement,\n i;\n\n do {\n scrollContainer = scrollContainer.parentNode;\n\n if (scrollContainer.scrollHeight > scrollContainer.clientHeight) {\n containers.push(scrollContainer);\n offsets.push(scrollContainer.scrollTop);\n }\n } while (scrollContainer != documentElement);\n\n kendo.focusElement(wrapper);\n\n for (i = 0; i < containers.length; i++) {\n containers[i].scrollTop = offsets[i];\n }\n },\n\n _blur: function() {\n this.current().find(\".k-in\").first().removeClass(\"k-focus\");\n },\n\n _enabled: function(node) {\n return !node.children(\"div\").children(\".k-in\").hasClass(DISABLED);\n },\n\n parent: function(node) {\n var wrapperRe = /\\bk-treeview\\b(?!-)/,\n itemRe = /\\bk-item\\b/,\n result,\n skipSelf;\n\n if (typeof node == STRING) {\n node = this.element.find(node);\n }\n\n if (!isDomElement(node)) {\n node = node[0];\n }\n\n skipSelf = itemRe.test(node.className);\n\n do {\n node = node.parentNode;\n\n if (itemRe.test(node.className)) {\n if (skipSelf) {\n result = node;\n } else {\n skipSelf = true;\n }\n }\n } while (!wrapperRe.test(node.className) && !result);\n\n return $(result);\n },\n\n _nextVisible: function(node) {\n var that = this,\n expanded = that._expanded(node),\n result;\n\n function nextParent(node) {\n while (node.length && !node.next().length) {\n node = that.parent(node);\n }\n\n if (node.next().length) {\n return node.next();\n } else {\n return node;\n }\n }\n\n if (!node.length || !node.is(\":visible\")) {\n result = that.root.children().eq(0);\n } else if (expanded) {\n result = subGroup(node).children().first();\n\n // expanded node with no children\n if (!result.length) {\n result = nextParent(node);\n }\n } else {\n result = nextParent(node);\n }\n\n return result;\n },\n\n _previousVisible: function(node) {\n var that = this,\n lastChild,\n result;\n\n if (!node.length || node.prev().length) {\n if (node.length) {\n result = node.prev();\n } else {\n result = that.root.children().last();\n }\n\n while (that._expanded(result)) {\n lastChild = subGroup(result).children().last();\n\n if (!lastChild.length) {\n break;\n }\n\n result = lastChild;\n }\n } else {\n result = that.parent(node) || node;\n }\n\n return result;\n },\n\n _keydown: function(e) {\n var that = this,\n key = e.keyCode,\n target,\n focused = that.current(),\n expanded = that._expanded(focused),\n checkbox = focused.find(\".k-checkbox-wrapper\").first().find(\":checkbox\"),\n rtl = kendo.support.isRtl(that.element);\n\n if (e.target != e.currentTarget) {\n return;\n }\n\n if ((!rtl && key == keys.RIGHT) || (rtl && key == keys.LEFT)) {\n if (expanded) {\n target = that._nextVisible(focused);\n } else if (!focused.find(\".k-in\").first().hasClass(DISABLED)) {\n that.expand(focused);\n }\n } else if ((!rtl && key == keys.LEFT) || (rtl && key == keys.RIGHT)) {\n if (expanded && !focused.find(\".k-in\").first().hasClass(DISABLED)) {\n that.collapse(focused);\n } else {\n target = that.parent(focused);\n\n if (!that._enabled(target)) {\n target = undefined$1;\n }\n }\n } else if (key == keys.DOWN) {\n target = that._nextVisible(focused);\n } else if (key == keys.UP) {\n target = that._previousVisible(focused);\n } else if (key == keys.HOME) {\n target = that._nextVisible($());\n } else if (key == keys.END) {\n target = that._previousVisible($());\n } else if (key == keys.ENTER && !focused.find(\".k-in\").first().hasClass(DISABLED)) {\n if (!focused.find(\".k-in\").first().hasClass(\"k-selected\")) {\n if (!that._trigger(SELECT, focused)) {\n that.select(focused);\n }\n }\n } else if (key == keys.SPACEBAR && checkbox.length) {\n if (!focused.find(\".k-in\").first().hasClass(DISABLED)) {\n checkbox.prop(CHECKED, !checkbox.prop(CHECKED))\n .data(INDETERMINATE, false)\n .prop(INDETERMINATE, false);\n\n that._checkboxChange({ target: checkbox });\n }\n target = focused;\n }\n\n if (target) {\n e.preventDefault();\n\n if (focused[0] != target[0]) {\n that._trigger(NAVIGATE, target);\n that.current(target);\n }\n }\n },\n\n _keypress: function(e) {\n var that = this;\n var delay = 300;\n var focusedNode = that.current().get(0);\n var matchToFocus;\n var key = e.key;\n var isPrintable = key.length === 1;\n\n if (!isPrintable) {\n return;\n }\n\n if (!that._match) {\n that._match = \"\";\n }\n\n that._match += key;\n clearTimeout(that._matchTimer);\n that._matchTimer = setTimeout(function() {\n that._match = \"\";\n }, delay);\n\n matchToFocus = focusedNode &&\n that._matchNextByText(\n Array.prototype.indexOf.call(that.element.find(\".k-item\"),\n focusedNode), that._match\n );\n\n if (!matchToFocus.length) {\n matchToFocus = that._matchNextByText(-1, that._match);\n }\n\n if (matchToFocus.get(0) && matchToFocus.get(0) !== focusedNode) {\n that._trigger(NAVIGATE, matchToFocus);\n that.current(matchToFocus);\n }\n },\n\n _matchNextByText: function(startIndex, text) {\n var element = this.element;\n var textNodes = element.find(\".k-in\").filter(function(i, element) {\n return (i > startIndex &&\n $(element).is(\":visible\") &&\n $(element).text().toLowerCase().indexOf(text) === 0);\n });\n\n return textNodes.eq(0).closest(NODE);\n },\n\n _click: function(e) {\n var that = this,\n node = $(e.currentTarget),\n contents = nodeContents(node.closest(NODE)),\n href = node.attr(\"href\"),\n shouldNavigate;\n\n if (href) {\n shouldNavigate = href == \"#\" || href.indexOf(\"#\" + this.element.id + \"-\") >= 0;\n } else {\n shouldNavigate = contents.length && !contents.children().length;\n }\n\n if (shouldNavigate) {\n e.preventDefault();\n }\n\n if (!node.hasClass(\".k-selected\") && !that._trigger(SELECT, node)) {\n that.select(node);\n }\n },\n\n _wrapper: function() {\n var that = this,\n element = that.element,\n wrapper, root,\n wrapperClasses = \"k-treeview\";\n\n if (element.is(\"ul\")) {\n wrapper = element.wrap('
    ').parent();\n root = element;\n } else {\n wrapper = element;\n root = wrapper.children(\"ul\").eq(0);\n }\n\n that.wrapper = wrapper.addClass(wrapperClasses);\n that.root = root;\n },\n\n _getSelectedNode: function() {\n return this.element.find(\".k-selected\").closest(NODE);\n },\n\n _group: function(item) {\n var that = this,\n firstLevel = item.hasClass(KTREEVIEW),\n group = {\n firstLevel: firstLevel,\n expanded: firstLevel || that._expanded(item)\n },\n groupElement = item.children(\"ul\");\n\n groupElement\n .addClass(that.templates.groupCssClass(group))\n .css(\"display\", group.expanded ? \"\" : \"none\");\n\n if (!firstLevel) {\n groupElement.attr(\"role\", \"group\");\n }\n\n that._nodes(groupElement, group);\n },\n\n _nodes: function(groupElement, groupData) {\n var that = this,\n nodes = groupElement.children(\"li\"),\n nodeData;\n\n groupData = extend({ length: nodes.length }, groupData);\n\n nodes.each(function(i, node) {\n node = $(node);\n\n nodeData = { index: i, expanded: that._expanded(node) };\n\n updateNodeHtml(node);\n\n that._updateNodeClasses(node, groupData, nodeData);\n\n // iterate over child nodes\n that._group(node);\n });\n },\n\n _checkboxes: function() {\n var options = this.options;\n var checkboxes = options.checkboxes;\n var defaultTemplate, checkbox;\n\n if (checkboxes) {\n defaultTemplate = kendo.html.renderCheckBox($(\"\"), $.extend({}, options, {\n rounded: \"medium\"\n }));\n\n defaultTemplate = defaultTemplate.replace(\">\", \"\");\n\n checkbox = function (ref) {\n var item = ref.item;\n\n return defaultTemplate +\n \" id=\\\"_\" + (item.uid) + \"\\\" aria-hidden=\\\"true\\\" type=\\\"checkbox\\\" tabindex=\\\"-1\\\"\" +\n (checkboxes.name ? 'name=\"' + checkboxes.name + '\"' : '') + \" \" +\n ((item.enabled === false) ? 'disabled' : '') + \" \" +\n (item.checked ? 'checked' : '') + \"/>\";\n };\n\n checkboxes = extend({\n template: checkbox\n }, options.checkboxes);\n\n if (typeof checkboxes.template == STRING) {\n checkboxes.template = template(checkboxes.template);\n }\n\n options.checkboxes = checkboxes;\n }\n },\n\n _updateNodeClasses: function(node, groupData, nodeData) {\n var wrapper = node.children(\"div\"),\n group = node.children(\"ul\"),\n templates = this.templates;\n\n if (node.hasClass(\"k-treeview\")) {\n return;\n }\n\n nodeData = nodeData || {};\n nodeData.expanded = typeof nodeData.expanded != UNDEFINED ? nodeData.expanded : this._expanded(node);\n nodeData.index = typeof nodeData.index != UNDEFINED ? nodeData.index : node.index();\n nodeData.enabled = typeof nodeData.enabled != UNDEFINED ? nodeData.enabled : !wrapper.children(\".k-in\").hasClass(\"k-disabled\");\n\n groupData = groupData || {};\n groupData.firstLevel = typeof groupData.firstLevel != UNDEFINED ? groupData.firstLevel : node.parent().parent().hasClass(KTREEVIEW);\n groupData.length = typeof groupData.length != UNDEFINED ? groupData.length : node.parent().children().length;\n\n // li\n node.removeClass(\"k-first k-last\")\n .addClass(templates.wrapperCssClass(groupData, nodeData));\n\n // div\n wrapper.removeClass(\"k-treeview-top k-treeview-mid k-treeview-bot\")\n .addClass(templates.cssClass(groupData, nodeData));\n\n // chekbox\n var checkbox = wrapper.find(\".k-checkbox\");\n checkbox.removeClass(\"k-checkbox k-disabled\").addClass(templates.checkboxClass(nodeData));\n\n // span / a\n var textWrap = wrapper.children(\".k-in\");\n var isLink = textWrap[0] && textWrap[0].nodeName.toLowerCase() == \"a\";\n textWrap.removeClass(\"k-in k-link k-disabled\")\n .addClass(templates.textClass(nodeData, isLink));\n\n // toggle button\n if (group.length || node.attr(\"data-hasChildren\") == \"true\") {\n var toggleButton = wrapper.find(\".k-treeview-toggle\");\n var toggleIcon = toggleButton.children((\".\" + TOGGLE_ICON));\n toggleButton.removeClass(\"k-treeview-toggle k-disabled\").addClass(templates.toggleButtonClass(nodeData));\n\n // renderv icon\n templates.toggleIcon(toggleIcon, nodeData);\n\n\n group.addClass(\"k-group k-treeview-group\");\n }\n },\n\n\n _processNodes: function(nodes, callback) {\n var that = this;\n var items = that.element.find(nodes);\n for (var i = 0; i < items.length; i++) {\n callback.call(that, i, $(items[i]).closest(NODE));\n }\n },\n\n dataItem: function(node) {\n var uid = $(node).closest(NODE).attr(kendo.attr(\"uid\")),\n dataSource = this.dataSource;\n\n return dataSource && dataSource.getByUid(uid);\n },\n\n _dataItem: function(node) {\n var uid = $(node).closest(NODE).attr(kendo.attr(\"uid\")),\n dataSource = this.dataSource;\n\n return dataSource && this._dataSourceUids[uid];\n },\n\n _insertNode: function(nodeData, index, parentNode, insertCallback, collapsed) {\n var that = this,\n group = subGroup(parentNode),\n updatedGroupLength = group.children().length + 1,\n childrenData,\n groupData = {\n firstLevel: parentNode.hasClass(KTREEVIEW),\n expanded: !collapsed,\n length: updatedGroupLength\n }, node, i, item, nodeHtml = \"\", firstChild, lastChild,\n append = function(item, group) {\n item.appendTo(group);\n };\n\n for (i = 0; i < nodeData.length; i++) {\n item = nodeData[i];\n\n item.index = index + i;\n\n nodeHtml += that._renderItem({\n group: groupData,\n item: item\n });\n }\n\n node = $(nodeHtml);\n\n if (!node.length) {\n return;\n }\n\n that.angular(\"compile\", function() {\n return {\n elements: node.get(),\n data: nodeData.map(function(item) {\n return { dataItem: item };\n })\n };\n });\n\n if (!group.length) {\n group = $(that._renderGroup({\n group: groupData\n }));\n\n kendo.applyStylesFromKendoAttributes(group, [\"display\"]);\n group.appendTo(parentNode);\n\n parentNode.attr(ARIA_EXPANDED, true);\n }\n\n insertCallback(node, group);\n\n if (parentNode.hasClass(\"k-item\")) {\n updateNodeHtml(parentNode);\n that._updateNodeClasses(parentNode, groupData, { expanded: !collapsed });\n }\n\n firstChild = node.prev().first();\n lastChild = node.next().last();\n\n that._updateNodeClasses(firstChild, {}, { expanded: firstChild.attr(kendo.attr(\"expanded\")) == \"true\" });\n that._updateNodeClasses(lastChild, {}, { expanded: lastChild.attr(kendo.attr(\"expanded\")) == \"true\" });\n\n // render sub-nodes\n for (i = 0; i < nodeData.length; i++) {\n item = nodeData[i];\n\n if (item.hasChildren) {\n childrenData = item.children.data();\n\n if (childrenData.length) {\n that._insertNode(childrenData, item.index, node.eq(i), append, !item.expanded);\n }\n }\n }\n\n return node;\n },\n\n _updateNodes: function(items, field) {\n var that = this;\n var i, node, nodeWrapper, item, isChecked, isCollapsed, kin;\n var context = { treeview: that.options, item: item };\n var render = field != \"expanded\" && field != \"checked\";\n\n function setCheckedState(root, state) {\n if (root.is(\".k-group\")) {\n root.find(\".k-item:not([aria-disabled])\").attr(ARIA_CHECKED, state);\n }\n\n root.find(\".k-checkbox-wrapper input[type=checkbox]:not([disabled])\")\n .prop(CHECKED, state)\n .data(INDETERMINATE, false)\n .prop(INDETERMINATE, false);\n }\n\n if (field == \"selected\") {\n item = items[0];\n\n node = that.findByUid(item.uid);\n kin = node.find(\".k-in\").first();\n\n kin.removeClass(\"k-hover\")\n .toggleClass(\"k-selected\", item[field])\n .end();\n\n if (item[field]) {\n that.current(node);\n }\n\n node.attr(ARIA_SELECTED, !!item[field]);\n } else {\n var elements = $.map(items, function(item) {\n return that.findByUid(item.uid).children(\"div\");\n });\n\n if (render) {\n that.angular(\"cleanup\", function() { return { elements: elements }; });\n }\n\n for (i = 0; i < items.length; i++) {\n context.item = item = items[i];\n nodeWrapper = elements[i];\n node = nodeWrapper.parent();\n\n if (render) {\n if (kendo.unbind) {\n kendo.unbind(nodeWrapper);\n }\n nodeWrapper.children(\".k-in\")\n .html(that.templates.itemContent(context));\n }\n\n if (field == CHECKED) {\n isChecked = item[field];\n\n setCheckedState(nodeWrapper, isChecked);\n\n node.attr(ARIA_CHECKED, isChecked);\n\n if (that.options.checkboxes.checkChildren) {\n setCheckedState(node.children(\".k-group\"), isChecked);\n\n that._setChecked(item.children, isChecked);\n\n that._bubbleIndeterminate(node);\n }\n } else if (field == \"expanded\") {\n that._toggle(node, item, item[field]);\n } else if (field == \"enabled\") {\n node.find(\".k-checkbox-wrapper input[type=checkbox]\").prop(\"disabled\", !item[field]);\n\n isCollapsed = !nodeContents(node).is(VISIBLE);\n\n node.removeAttr(ARIA_DISABLED);\n\n if (!item[field]) {\n if (item.selected) {\n item.set(\"selected\", false);\n }\n\n if (item.expanded) {\n item.set(\"expanded\", false);\n }\n\n isCollapsed = true;\n node.attr(ARIA_SELECTED, false)\n .attr(ARIA_DISABLED, true);\n }\n\n that._updateNodeClasses(node, {}, { enabled: item[field], expanded: !isCollapsed });\n }\n\n if (nodeWrapper.length) {\n this.trigger(\"itemChange\", { item: nodeWrapper, data: item, ns: ui });\n }\n }\n\n if (render) {\n that.angular(\"compile\", function() {\n return {\n elements: elements,\n data: $.map(items, function(item) {\n return [{ dataItem: item }];\n })\n };\n });\n }\n }\n },\n\n _appendItems: function(index, items, parentNode) {\n var group = subGroup(parentNode);\n var children = group.children();\n var collapsed = !this._expanded(parentNode);\n\n if (this.element === parentNode) {\n var dataItems = this.dataSource.data();\n var viewItems = this.dataSource.view();\n var rootItems = viewItems.length < dataItems.length ? viewItems : dataItems;\n index = rootItems.indexOf(items[0]);\n } else if (items.length) {\n index = items[0].parent().indexOf(items[0]);\n }\n\n if (typeof index == UNDEFINED) {\n index = children.length;\n }\n\n this._insertNode(items, index, parentNode, function(item, group) {\n // insert node into DOM\n if (index >= children.length) {\n item.appendTo(group);\n } else {\n item.insertBefore(children.eq(index));\n }\n }, collapsed);\n\n if (!collapsed) {\n this._updateNodeClasses(parentNode, {}, { expanded: !collapsed });\n subGroup(parentNode).css(\"display\", \"block\");\n }\n },\n\n _refreshChildren: function(parentNode, items, index) {\n var i, children, child;\n var options = this.options;\n var loadOnDemand = options.loadOnDemand;\n var checkChildren = options.checkboxes && options.checkboxes.checkChildren;\n\n subGroup(parentNode).empty();\n\n if (!items.length) {\n updateNodeHtml(parentNode);\n } else {\n this._appendItems(index, items, parentNode);\n\n children = subGroup(parentNode).children();\n\n if (loadOnDemand && checkChildren) {\n this._bubbleIndeterminate(children.last());\n }\n\n for (i = 0; i < children.length; i++) {\n child = children.eq(i);\n this.trigger(\"itemChange\", {\n item: child.children(\"div\"),\n data: items[i],\n ns: ui\n });\n }\n }\n },\n\n _refreshRoot: function(items) {\n var groupHtml = this._renderGroup({\n items: items,\n group: {\n firstLevel: true,\n expanded: true\n }\n });\n\n if (this.root.length && this.root[0].parentElement) {\n this._angularItems(\"cleanup\");\n\n var group = $(groupHtml);\n\n this.root\n .attr(\"class\", group.attr(\"class\"))\n .html(group.html());\n } else {\n this.root = this.wrapper.html(groupHtml).children(\"ul\");\n }\n\n var elements = this.root.children(\".k-item\");\n for (var i = 0; i < items.length; i++) {\n this.trigger(\"itemChange\", {\n item: elements.eq(i),\n data: items[i],\n ns: ui\n });\n }\n this._angularItems(\"compile\");\n },\n\n refresh: function(e) {\n var node = e.node;\n var action = e.action;\n var items = e.items;\n var parentNode = this.wrapper;\n var options = this.options;\n var loadOnDemand = options.loadOnDemand;\n var checkChildren = options.checkboxes && options.checkboxes.checkChildren;\n var i;\n\n if (this._skip) {\n return;\n }\n\n for (i = 0; i < items.length; i++) {\n this._dataSourceUids[items[i].uid] = items[i];\n }\n\n if (e.field) {\n if (!items[0] || !items[0].level) {\n return;\n }\n\n return this._updateNodes(items, e.field);\n }\n\n if (node) {\n parentNode = this.findByUid(node.uid);\n this._progress(parentNode, false);\n }\n\n if (checkChildren && action != \"remove\") {\n var bubble = false;\n\n for (i = 0; i < items.length; i++) {\n if (\"checked\" in items[i]) {\n bubble = true;\n break;\n }\n }\n\n if (!bubble && node && node.checked) {\n for (i = 0; i < items.length; i++) {\n items[i].checked = true;\n }\n }\n }\n\n if (action == \"add\") {\n this._appendItems(e.index, items, parentNode);\n } else if (action == \"remove\") {\n this._remove(this.findByUid(items[0].uid), false);\n } else if (action == \"itemchange\") {\n this._updateNodes(items);\n } else if (action == \"itemloaded\") {\n this._refreshChildren(parentNode, items, e.index);\n } else {\n this._refreshRoot(items);\n this.element.attr(ARIA_BUSY, false);\n }\n\n if (action != \"remove\") {\n for (i = 0; i < items.length; i++) {\n if (!loadOnDemand || items[i].expanded || items[i]._loaded) {\n items[i].load();\n }\n }\n }\n\n this.wrapper.find(\">ul\").attr(\"role\", \"tree\");\n\n\n this.trigger(DATABOUND, { node: node ? parentNode : undefined$1 });\n if (this.dataSource.filter() && this.options.checkboxes.checkChildren) {\n this.updateIndeterminate(parentNode);\n }\n },\n\n _error: function(e) {\n var node = e.node && this.findByUid(e.node.uid);\n var retryHtml = this.templates.retry({ messages: this.options.messages });\n\n if (node) {\n this._progress(node, false);\n this._expanded(node, false);\n nodeIcon(node).replaceWith(ui.icon($(TOGGLE_ICON_ELM), { icon: \"arrow-rotate-cw\" }));\n e.node.loaded(false);\n } else {\n this._progress(false);\n this.dataSource.data([]);\n this.element.html(retryHtml);\n }\n },\n\n _retryRequest: function(e) {\n e.preventDefault();\n\n this.dataSource.fetch(this._attemptLoadCompleted.bind(this));\n },\n\n expand: function(nodes) {\n this._processNodes(nodes, function(index, item) {\n this.toggle(item, true);\n });\n },\n\n collapse: function(nodes) {\n this._processNodes(nodes, function(index, item) {\n this.toggle(item, false);\n });\n },\n\n enable: function(nodes, enable) {\n if (typeof nodes === \"boolean\") {\n enable = nodes;\n nodes = this.items();\n } else {\n enable = arguments.length == 2 ? !!enable : true;\n }\n\n this._processNodes(nodes, function(index, item) {\n this.dataItem(item).set(\"enabled\", enable);\n });\n },\n\n current: function(node) {\n var that = this,\n current = that._current,\n element = that.element;\n\n if (arguments.length > 0 && node && node.length) {\n if (current) {\n current.find(\".k-in\").first().removeClass(\"k-focus\");\n }\n\n current = that._current = $(node, element).closest(NODE);\n current.find(\".k-in\").first().addClass(\"k-focus\");\n that._updateActiveDescendant();\n\n return;\n }\n\n if (!current) {\n current = that._nextVisible($());\n }\n\n return current;\n },\n\n _updateActiveDescendant: function() {\n var current = this._current,\n id = current[0].id || this._ariaId,\n prev = this.element.find(\"#\" + this._ariaId);\n\n if (prev.length > 0) {\n prev.removeAttr(\"id\");\n }\n\n this.root.removeAttr(ARIA_ACTIVEDESCENDANT);\n current.attr(\"id\", id);\n this.root.attr(ARIA_ACTIVEDESCENDANT, id);\n },\n\n select: function(node) {\n var that = this,\n element = that.element;\n\n if (!arguments.length) {\n return element.find(\".k-selected\").closest(NODE);\n }\n\n node = $(node, element).closest(NODE);\n\n element.find(\".k-selected\").each(function() {\n var dataItem = that.dataItem(this);\n if (dataItem) {\n dataItem.set(\"selected\", false);\n delete dataItem.selected;\n } else {\n $(this).removeClass(\"k-selected\");\n }\n });\n\n if (node.length) {\n that.dataItem(node).set(\"selected\", true);\n that._clickTarget = node;\n }\n\n that.trigger(CHANGE);\n },\n\n _toggle: function(node, dataItem, expand) {\n var options = this.options;\n var contents = nodeContents(node);\n var direction = expand ? \"expand\" : \"collapse\";\n var loaded;\n\n if (contents.data(\"animating\")) {\n return;\n }\n\n loaded = dataItem && dataItem.loaded();\n\n if (expand && !loaded) {\n if (options.loadOnDemand) {\n this._progress(node, true);\n }\n\n contents.remove();\n dataItem.load();\n } else {\n this._updateNodeClasses(node, {}, { expanded: expand });\n\n if (!expand) {\n contents.css(\"height\", contents.height()).css(\"height\");\n }\n\n contents\n .kendoStop(true, true)\n .kendoAnimate(extend(\n { reset: true },\n options.animation[direction],\n { complete: function() {\n if (expand) {\n contents.css(\"height\", \"\");\n }\n } }\n ));\n }\n\n },\n\n toggle: function(node, expand) {\n node = $(node);\n\n if (!nodeIcon(node)) {\n return;\n }\n\n if (arguments.length == 1) {\n expand = !this._expanded(node);\n }\n\n this._expanded(node, expand);\n },\n\n destroy: function() {\n var that = this;\n\n Widget.fn.destroy.call(that);\n\n that.wrapper.off(NS);\n that.wrapper.find(\".k-checkbox-wrapper :checkbox\").off(NS);\n that._clickHandler = null;\n\n that._unbindDataSource();\n\n if (that.dragging) {\n that.dragging.destroy();\n }\n\n that._dataSourceUids = {};\n\n kendo.destroy(that.element);\n\n that.root = that.wrapper = that.element = null;\n },\n\n _expanded: function(node, value, force) {\n var expandedAttr = kendo.attr(\"expanded\");\n var dataItem;\n var expanded = value;\n var direction = expanded ? \"expand\" : \"collapse\";\n\n if (arguments.length == 1) {\n dataItem = this._dataItem(node);\n return node.attr(expandedAttr) === \"true\" || (dataItem && dataItem.expanded);\n }\n\n dataItem = this.dataItem(node);\n\n if (nodeContents(node).data(\"animating\")) {\n return;\n }\n\n if (force || !this._trigger(direction, node)) {\n if (expanded) {\n node.attr(expandedAttr, \"true\");\n node.attr(ARIA_EXPANDED, \"true\");\n } else {\n node.removeAttr(expandedAttr);\n node.attr(ARIA_EXPANDED, \"false\");\n }\n\n if (dataItem) {\n dataItem.set(\"expanded\", expanded);\n // necessary when expanding an item yields an error and the item is not expanded as a result\n expanded = dataItem.expanded;\n }\n }\n },\n\n _progress: function(node, showProgress) {\n var element = this.element;\n var loadingText = this.templates.loading({ messages: this.options.messages });\n\n if (arguments.length == 1) {\n showProgress = node;\n\n if (showProgress) {\n element.html(loadingText);\n } else {\n element.empty();\n }\n\n this.element.attr(ARIA_BUSY, showProgress);\n } else {\n nodeIcon(node).replaceWith(\n $(TOGGLE_ICON_ELM)\n .toggleClass('k-i-loading', showProgress)\n .toggleClass('k-icon', showProgress));\n node.attr(ARIA_BUSY, showProgress);\n }\n },\n\n text: function(node, text) {\n var dataItem = this.dataItem(node),\n fieldBindings = this.options[bindings.text],\n level = dataItem.level(),\n length = fieldBindings.length,\n field = fieldBindings[Math.min(level, length - 1)];\n\n if (text) {\n dataItem.set(field, text);\n } else {\n return dataItem[field];\n }\n },\n\n _objectOrSelf: function(node) {\n return $(node).closest(\"[data-role=treeview]\").data(\"kendoTreeView\") || this;\n },\n\n _dataSourceMove: function(nodeData, group, parentNode, callback) {\n var referenceDataItem,\n destTreeview = this._objectOrSelf(parentNode || group),\n destDataSource = destTreeview.dataSource;\n var loadPromise = $.Deferred().resolve().promise();\n\n if (parentNode && parentNode[0] != destTreeview.element[0]) {\n referenceDataItem = destTreeview.dataItem(parentNode);\n\n if (!referenceDataItem.loaded()) {\n destTreeview._progress(parentNode, true);\n loadPromise = referenceDataItem.load();\n }\n\n if (parentNode != this.root) {\n destDataSource = referenceDataItem.children;\n\n if (!destDataSource || !(destDataSource instanceof HierarchicalDataSource)) {\n referenceDataItem._initChildren();\n referenceDataItem.loaded(true);\n destDataSource = referenceDataItem.children;\n }\n }\n }\n\n nodeData = this._toObservableData(nodeData);\n\n return callback.call(destTreeview, destDataSource, nodeData, loadPromise);\n },\n\n _toObservableData: function(node) {\n var dataItem = node, dataSource, uid;\n\n if (isJQueryInstance(node) || isDomElement(node)) {\n dataSource = this._objectOrSelf(node).dataSource;\n uid = $(node).attr(kendo.attr(\"uid\"));\n dataItem = dataSource.getByUid(uid);\n\n if (dataItem) {\n dataItem = dataSource.remove(dataItem);\n }\n }\n\n return dataItem;\n },\n\n _insert: function(data, model, index) {\n if (!(model instanceof kendo.data.ObservableArray)) {\n if (!isArray(model)) {\n model = [model];\n }\n } else {\n // items will be converted to new Node instances\n model = model.toJSON();\n }\n\n var parentNode = data.parent();\n\n if (parentNode && parentNode._initChildren) {\n parentNode.hasChildren = true;\n parentNode._initChildren();\n }\n\n data.splice.apply(data, [ index, 0 ].concat(model));\n\n return this.findByUid(data[index].uid);\n },\n\n insertAfter: insertAction(1),\n\n insertBefore: insertAction(0),\n\n append: function(nodeData, parentNode, success) {\n var group = this.root;\n\n if (parentNode && nodeData instanceof jQuery && parentNode[0] === nodeData[0]) {\n return;\n }\n\n parentNode = parentNode && parentNode.length ? parentNode : null;\n\n if (parentNode) {\n group = subGroup(parentNode);\n }\n\n return this._dataSourceMove(nodeData, group, parentNode, function(dataSource, model, loadModel) {\n var inserted;\n var that = this;\n\n function add() {\n if (parentNode) {\n that._expanded(parentNode, true, true);\n }\n\n var data = dataSource.data(),\n index = Math.max(data.length, 0);\n\n return that._insert(data, model, index);\n }\n\n loadModel.done(function() {\n inserted = add();\n success = success || $.noop;\n success(inserted);\n });\n\n return inserted || null;\n });\n },\n\n _remove: function(node, keepData) {\n var that = this,\n parentNode,\n prevSibling, nextSibling;\n\n node = $(node, that.element);\n\n if (node.attr(\"id\") === that.root.attr(ARIA_ACTIVEDESCENDANT)) {\n that.root.removeAttr(ARIA_ACTIVEDESCENDANT);\n }\n\n this.angular(\"cleanup\", function() {\n return { elements: node.get() };\n });\n\n parentNode = node.parent().parent();\n prevSibling = node.prev();\n nextSibling = node.next();\n\n node[keepData ? \"detach\" : \"remove\"]();\n\n if (parentNode.hasClass(\"k-item\")) {\n updateNodeHtml(parentNode);\n that._updateNodeClasses(parentNode);\n }\n\n that._updateNodeClasses(prevSibling);\n that._updateNodeClasses(nextSibling);\n\n return node;\n },\n\n remove: function(node) {\n var dataItem = this.dataItem(node);\n if (dataItem) {\n this.dataSource.remove(dataItem);\n }\n },\n\n detach: function(node) {\n return this._remove(node, true);\n },\n\n findByText: function(text) {\n return $(this.element).find(\".k-in\").filter(function(i, element) {\n return $(element).text() == text;\n }).closest(NODE);\n },\n\n findByUid: function(uid) {\n var items = this.element.find(\".k-item\");\n var uidAttr = kendo.attr(\"uid\");\n var result;\n\n for (var i = 0; i < items.length; i++) {\n if (items[i].getAttribute(uidAttr) == uid) {\n result = items[i];\n break;\n }\n }\n\n return $(result);\n },\n\n expandPath: function(path, complete) {\n var treeview = this;\n var nodeIds = path.slice(0);\n var callback = complete || $.noop;\n\n function proceed() {\n nodeIds.shift();\n\n if (nodeIds.length) {\n expand(nodeIds[0]).then(proceed);\n } else {\n callback.call(treeview);\n }\n }\n\n function expand(id) {\n var result = $.Deferred();\n var node = treeview.dataSource.get(id);\n var expandedAttr = kendo.attr(\"expanded\");\n var nodeElement;\n\n if (node) {\n nodeElement = treeview.findByUid(node.uid);\n\n if (node.loaded()) {\n node.set(\"expanded\", true);\n nodeElement.attr(expandedAttr, true);\n nodeElement.attr(ARIA_EXPANDED, true);\n result.resolve();\n } else {\n // manually show progress of the node\n // should be moved to `refresh`\n // if the datasource starts triggering a `requestStart` event for nodes\n treeview._progress(nodeElement, true);\n\n node.load().then(function() {\n node.set(\"expanded\", true);\n nodeElement.attr(expandedAttr, true);\n nodeElement.attr(ARIA_EXPANDED, true);\n result.resolve();\n });\n }\n } else {\n result.resolve();\n }\n\n return result.promise();\n }\n\n // expand async nodes\n expand(nodeIds[0]).then(proceed);\n },\n\n _parentIds: function(node) {\n var parent = node && node.parentNode();\n var parents = [];\n while (parent && parent.parentNode) {\n parents.unshift(parent.id);\n parent = parent.parentNode();\n }\n\n return parents;\n },\n\n expandTo: function(node) {\n if (!(node instanceof kendo.data.Node)) {\n node = this.dataSource.get(node);\n }\n\n var parents = this._parentIds(node);\n\n this.expandPath(parents);\n },\n\n _renderItem: function(options) {\n if (!options.group) {\n options.group = {};\n }\n\n options.treeview = this.options;\n\n options.r = this.templates;\n\n return this.templates.item(options);\n },\n\n _renderGroup: function(options) {\n var that = this;\n\n options.renderItems = function(options) {\n var html = \"\",\n i = 0,\n items = options.items,\n len = items ? items.length : 0,\n group = options.group;\n\n group.length = len;\n\n for (; i < len; i++) {\n options.group = group;\n options.item = items[i];\n options.item.index = i;\n html += that._renderItem(options);\n }\n\n return html;\n };\n\n options.r = that.templates;\n\n return that.templates.group(options);\n }\n });\n\n kendo.cssProperties.registerPrefix(\"TreeView\", \"k-treeview-\");\n\n ui.plugin(TreeView);\n })(window.kendo.jQuery);\n var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}