{"version":3,"sources":["kendo.treeview.draganddrop.js"],"names":["f","define","$","undefined","kendo","window","ui","proxy","extend","VISIBILITY","KSTATEHOVER","INPUTSELECTOR","DROPHINTTEMPLATE","HierarchicalDragAndDrop","Class","init","element","options","this","hovered","dragstart","noop","drag","drop","dragend","_draggable","Draggable","ignore","filter","autoScroll","cursorOffset","left","top","support","mobileOS","zoomLevel","hint","_hint","dragcancel","$angular","holdToDrag","hintText","_removeTouchHover","touch","find","removeClass","_hintStatus","newStatus","statusElement","className","trim","replace","e","source","currentTarget","closest","itemSelector","preventDefault","dropHint","reorderable","css","appendTo","hoveredItem","itemHeight","itemTop","itemContent","delta","insertOnTop","insertOnBottom","addChild","itemData","position","status","target","dropTarget","eventTarget","container","allowedContainers","length","contains","itemFromTarget","item","_outerHeight","content","getOffset","y","location","_lastHover","toggleClass","dropHintContainer","first","last","originalEvent","pageY","pageX","x","substring","setStatus","value","indexOf","remove","destination","eventArgs","dropPrevented","dropPositionFrom","valid","setValid","newValid","dropped","destroy","jQuery","amd","a1","a2","a3"],"mappings":"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","file":"kendo.treeview.draganddrop.min.js","sourcesContent":["/*!\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n*/\n(function (f, define) {\n define('kendo.treeview.draganddrop', [\n 'kendo.data',\n 'kendo.draganddrop'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'treeview.draganddrop',\n name: 'Hierarchical Drag & Drop',\n category: 'framework',\n depends: [\n 'core',\n 'draganddrop'\n ],\n advanced: true\n };\n (function ($, undefined) {\n var kendo = window.kendo;\n var ui = kendo.ui;\n var proxy = $.proxy;\n var extend = $.extend;\n var VISIBILITY = 'visibility';\n var KSTATEHOVER = 'k-state-hover';\n var INPUTSELECTOR = 'input,a:not(.k-in),textarea,.k-multiselect-wrap,select,button,a.k-button>.k-icon,button.k-button>.k-icon,span.k-icon.k-i-arrow-60-right,span.k-icon.k-i-arrow-45-down-right';\n var DROPHINTTEMPLATE = '
' + '
' + '
' + '
';\n ui.HierarchicalDragAndDrop = kendo.Class.extend({\n init: function (element, options) {\n this.element = element;\n this.hovered = element;\n this.options = extend({\n dragstart: $.noop,\n drag: $.noop,\n drop: $.noop,\n dragend: $.noop\n }, options);\n this._draggable = new ui.Draggable(element, {\n ignore: INPUTSELECTOR,\n filter: options.filter,\n autoScroll: options.autoScroll,\n cursorOffset: {\n left: 10,\n top: kendo.support.mobileOS ? -40 / kendo.support.zoomLevel() : 10\n },\n hint: proxy(this._hint, this),\n dragstart: proxy(this.dragstart, this),\n dragcancel: proxy(this.dragcancel, this),\n drag: proxy(this.drag, this),\n dragend: proxy(this.dragend, this),\n $angular: options.$angular,\n holdToDrag: options.holdToDrag\n });\n },\n _hint: function (element) {\n return '
' + '' + this.options.hintText(element) + '
';\n },\n _removeTouchHover: function () {\n if (kendo.support.touch && this.hovered) {\n this.hovered.find('.' + KSTATEHOVER).removeClass(KSTATEHOVER);\n this.hovered = false;\n }\n },\n _hintStatus: function (newStatus) {\n var statusElement = this._draggable.hint.find('.k-drag-status')[0];\n if (newStatus) {\n statusElement.className = 'k-icon k-drag-status ' + newStatus;\n } else {\n return kendo.trim(statusElement.className.replace(/(p|k)-(icon|drag-status)/g, ''));\n }\n },\n dragstart: function (e) {\n this.source = e.currentTarget.closest(this.options.itemSelector);\n if (this.options.dragstart(this.source)) {\n e.preventDefault();\n }\n if (this.options.reorderable) {\n this.dropHint = $(DROPHINTTEMPLATE).css(VISIBILITY, 'hidden').appendTo(this.element);\n } else {\n this.dropHint = $();\n }\n },\n drag: function (e) {\n var options = this.options;\n var source = this.source;\n var target = this.dropTarget = $(kendo.eventTarget(e));\n var container = target.closest(options.allowedContainers);\n var hoveredItem, itemHeight, itemTop, itemContent, delta;\n var insertOnTop, insertOnBottom, addChild;\n var itemData, position, status;\n if (!container.length) {\n status = 'k-i-cancel';\n this._removeTouchHover();\n } else if (source[0] == target[0] || options.contains(source[0], target[0])) {\n status = 'k-i-cancel';\n } else {\n status = 'k-i-insert-middle';\n itemData = options.itemFromTarget(target);\n hoveredItem = itemData.item;\n if (hoveredItem.length) {\n this._removeTouchHover();\n itemHeight = kendo._outerHeight(hoveredItem);\n itemContent = itemData.content;\n if (options.reorderable) {\n delta = itemHeight / (itemContent.length > 0 ? 4 : 2);\n itemTop = kendo.getOffset(hoveredItem).top;\n insertOnTop = e.y.location < itemTop + delta;\n insertOnBottom = itemTop + itemHeight - delta < e.y.location;\n addChild = itemContent.length && !insertOnTop && !insertOnBottom;\n } else {\n addChild = true;\n insertOnTop = false;\n insertOnBottom = false;\n }\n this.hovered = addChild ? container : false;\n this.dropHint.css(VISIBILITY, addChild ? 'hidden' : 'visible');\n if (this._lastHover && this._lastHover[0] != itemContent[0]) {\n this._lastHover.removeClass(KSTATEHOVER);\n }\n this._lastHover = itemContent.toggleClass(KSTATEHOVER, addChild);\n if (addChild) {\n status = 'k-i-plus';\n } else {\n position = hoveredItem.position();\n position.top += insertOnTop ? 0 : itemHeight;\n this.dropHint.css(position)[insertOnTop ? 'prependTo' : 'appendTo'](options.dropHintContainer(hoveredItem));\n if (insertOnTop && itemData.first) {\n status = 'k-i-insert-up';\n }\n if (insertOnBottom && itemData.last) {\n status = 'k-i-insert-down';\n }\n }\n } else if (target[0] != this.dropHint[0]) {\n if (this._lastHover) {\n this._lastHover.removeClass(KSTATEHOVER);\n }\n if (!$.contains(this.element[0], container[0])) {\n status = 'k-i-plus';\n } else {\n status = 'k-i-cancel';\n }\n }\n }\n this.options.drag({\n originalEvent: e.originalEvent,\n source: source,\n target: target,\n pageY: e.y.location,\n pageX: e.x.location,\n status: status.substring(2),\n setStatus: function (value) {\n status = value;\n }\n });\n if (status.indexOf('k-i-insert') !== 0) {\n this.dropHint.css(VISIBILITY, 'hidden');\n }\n this._hintStatus(status);\n },\n dragcancel: function () {\n this.dropHint.remove();\n },\n dragend: function (e) {\n var position = 'over', source = this.source, destination, dropHint = this.dropHint, dropTarget = this.dropTarget, eventArgs, dropPrevented;\n if (dropHint.css(VISIBILITY) == 'visible') {\n position = this.options.dropPositionFrom(dropHint);\n destination = dropHint.closest(this.options.itemSelector);\n } else if (dropTarget) {\n destination = dropTarget.closest(this.options.itemSelector);\n if (!destination.length) {\n destination = dropTarget.closest(this.options.allowedContainers);\n }\n }\n eventArgs = {\n originalEvent: e.originalEvent,\n source: source[0],\n destination: destination[0],\n valid: this._hintStatus() != 'k-i-cancel',\n setValid: function (newValid) {\n this.valid = newValid;\n },\n dropTarget: dropTarget[0],\n position: position\n };\n dropPrevented = this.options.drop(eventArgs);\n dropHint.remove();\n this._removeTouchHover();\n if (this._lastHover) {\n this._lastHover.removeClass(KSTATEHOVER);\n }\n if (!eventArgs.valid || dropPrevented) {\n this._draggable.dropped = eventArgs.valid;\n return;\n }\n this._draggable.dropped = true;\n this.options.dragend({\n originalEvent: e.originalEvent,\n source: source,\n destination: destination,\n position: position\n });\n },\n destroy: function () {\n this._lastHover = this.hovered = null;\n this._draggable.destroy();\n }\n });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));"]}