{"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","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","scrollTo","scrollIntoView","block","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","_renderGroup","applyStylesFromKendoAttributes","_updateNodes","nodeWrapper","isCollapsed","context","render","setCheckedState","findByUid","toggleClass","end","elements","_toggle","ns","_appendItems","dataItems","viewItems","rootItems","_refreshChildren","child","empty","_refreshRoot","groupHtml","parentElement","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 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 scrollTo: function(item) {\n if (item && item.length > 0) {\n item[0].scrollIntoView({ block: \"nearest\" });\n }\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 that.scrollTo(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 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 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 },\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 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 },\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 (node.children().hasClass(\"k-hidden\")) {\n node.children().removeClass(\"k-hidden\");\n }\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 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"]}