{"version":3,"file":"kendo.draganddrop.min.js","names":["factory","define","amd","$","undefined$1","lastDropTarget","kendo","window","support","document","$window","Class","Widget","ui","Observable","UserEvents","extend","getOffset","draggables","dropTargets","dropAreas","elementUnderCursor","KEYUP","CHANGE","DRAGSTART","HOLD","DRAG","DRAGEND","DRAGCANCEL","HINTDESTROYED","DRAGENTER","DRAGLEAVE","DROP","numericCssPropery","element","property","parseInt","css","within","value","range","Math","min","max","containerBoundaries","container","offset","outerWidth","_outerWidth","outerHeight","_outerHeight","minX","left","minY","top","x","width","y","height","translate","TapCapture","init","options","that","this","domElement","capture","addEventListener","each","eventMap","down","split","_press","bind","up","_release","attachEvent","fn","call","captureNext","cancelCapture","e","trigger","preventDefault","PaneDimension","forcedEnabled","scale","horizontal","measure","scrollSize","axis","makeVirtual","virtual","_virtualMin","_virtualMax","virtualSize","update","outOfBounds","forceEnabled","getSize","getTotal","rescale","silent","total","scaledTotal","size","minScale","centerOffset","enabled","PaneDimensions","forcedMinScale","maxScale","newScale","refresh","centerCoordinates","fitScale","PaneAxis","dimension","movable","dragMove","delta","position","resistance","translateAxis","Pane","elastic","dimensions","userEvents","gesturestart","gesture","press","event","target","closest","is","sender","cancel","gesturechange","coordinates","previousGesture","previousCenter","center","scaleDelta","distance","offsetX","offsetY","scaleWith","move","tagName","match","touch","skip","end","TRANSFORM_STYLE","transitions","prefix","hasHW3D","Movable","style","webkitTransformOrigin","_saveCoordinates","by","scaleTo","moveAxis","moveTo","newCoordinates","round","browser","msie","version","destroyDroppable","collection","widget","i","groupName","group","droppables","destroy","length","splice","DropTarget","push","events","name","_trigger","eventName","draggable","dropTarget","_over","_out","_drop","dropped","destroyGroup","_cache","DropTargetArea","filter","Draggable","_activated","global","allowSelection","threshold","start","_start","hold","_hold","_drag","_end","_cancel","select","_select","find","_afterEndHandler","_afterEnd","_captureEscape","cursorOffset","ignore","holdToDrag","autoScroll","cancelHold","keyCode","keys","ESC","_updateHint","boundaries","location","hintOffset","hint","_shouldIgnoreTarget","ignoreSelector","initialTouch","currentTarget","currentTargetOffset","stop","remove","isFunction","zIndex","appendTo","body","angular","removeAttr","scopeTarget","data","parent","elements","get","scopeFrom","on","cursorElement","_elementUnderCursor","_cursorElement","_scrollableParent","findScrollableParent","_lastEvent","_processMovement","velocity","autoScrollVelocity","scrollableViewPort","_scrollCompenstation","_scrollVelocity","clearInterval","_scrollInterval","setInterval","_autoScroll","_withDropTarget","targetElement","compensation","yIsScrollable","xIsScrollable","isRootNode","scrollableRoot","scrollHeight","scrollWidth","offsetHeight","offsetWidth","yDelta","scrollTop","yInBounds","xDelta","scrollLeft","xInBounds","isDefaultPrevented","setTimeout","animate","initialTarget","child","contains","hide","show","callback","result","targets","areas","theTarget","theFilter","targetLen","areaLen","parentNode","matchesSelector","checkTarget","off","root","bottom","right","edge","safari","documentElement","isScrollable","mouseX","mouseY","rect","AUTO_SCROLL_AREA","plugin","utils","jQuery"],"sources":["kendo.draganddrop.js"],"mappings":"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","sourcesContent":["(function (factory) {\n typeof define === 'function' && define.amd ? define(['kendo.core', 'kendo.userevents'], factory) :\n factory();\n})((function () {\n var __meta__ = {\n id: \"draganddrop\",\n name: \"Drag & drop\",\n category: \"framework\",\n description: \"Drag & drop functionality for any DOM element.\",\n depends: [ \"core\", \"userevents\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n support = kendo.support,\n document = window.document,\n $window = $(window),\n Class = kendo.Class,\n Widget = kendo.ui.Widget,\n Observable = kendo.Observable,\n UserEvents = kendo.UserEvents,\n extend = $.extend,\n getOffset = kendo.getOffset,\n draggables = {},\n dropTargets = {},\n dropAreas = {},\n lastDropTarget,\n elementUnderCursor = kendo.elementUnderCursor,\n KEYUP = \"keyup\",\n CHANGE = \"change\",\n\n // Draggable events\n DRAGSTART = \"dragstart\",\n HOLD = \"hold\",\n DRAG = \"drag\",\n DRAGEND = \"dragend\",\n DRAGCANCEL = \"dragcancel\",\n HINTDESTROYED = \"hintDestroyed\",\n\n // DropTarget events\n DRAGENTER = \"dragenter\",\n DRAGLEAVE = \"dragleave\",\n DROP = \"drop\";\n\n function contains(parent, child) {\n try {\n return $.contains(parent, child) || parent == child;\n } catch (e) {\n return false;\n }\n }\n\n function numericCssPropery(element, property) {\n return parseInt(element.css(property), 10) || 0;\n }\n\n function within(value, range) {\n return Math.min(Math.max(value, range.min), range.max);\n }\n\n function containerBoundaries(container, element) {\n var offset = getOffset(container),\n outerWidth = kendo._outerWidth,\n outerHeight = kendo._outerHeight,\n minX = offset.left + numericCssPropery(container, \"borderLeftWidth\") + numericCssPropery(container, \"paddingLeft\"),\n minY = offset.top + numericCssPropery(container, \"borderTopWidth\") + numericCssPropery(container, \"paddingTop\"),\n maxX = minX + container.width() - outerWidth(element, true),\n maxY = minY + container.height() - outerHeight(element, true);\n\n return {\n x: { min: minX, max: maxX },\n y: { min: minY, max: maxY }\n };\n }\n\n function checkTarget(target, targets, areas) {\n var theTarget, theFilter, i = 0,\n targetLen = targets && targets.length,\n areaLen = areas && areas.length;\n\n while (target && target.parentNode) {\n for (i = 0; i < targetLen; i ++) {\n theTarget = targets[i];\n if (theTarget.element[0] === target) {\n return { target: theTarget, targetElement: target };\n }\n }\n\n for (i = 0; i < areaLen; i ++) {\n theFilter = areas[i];\n if ($.contains(theFilter.element[0], target) && support.matchesSelector.call(target, theFilter.options.filter)) {\n return { target: theFilter, targetElement: target };\n }\n }\n\n target = target.parentNode;\n }\n\n return undefined$1;\n }\n\n var TapCapture = Observable.extend({\n init: function(element, options) {\n var that = this,\n domElement = element[0];\n\n that.capture = false;\n\n if (domElement.addEventListener) {\n $.each(kendo.eventMap.down.split(\" \"), function() {\n domElement.addEventListener(this, that._press.bind(that), true);\n });\n $.each(kendo.eventMap.up.split(\" \"), function() {\n domElement.addEventListener(this, that._release.bind(that), true);\n });\n } else {\n $.each(kendo.eventMap.down.split(\" \"), function() {\n domElement.attachEvent(this, that._press.bind(that));\n });\n $.each(kendo.eventMap.up.split(\" \"), function() {\n domElement.attachEvent(this, that._release.bind(that));\n });\n }\n\n Observable.fn.init.call(that);\n\n that.bind([\"press\", \"release\"], options || {});\n },\n\n captureNext: function() {\n this.capture = true;\n },\n\n cancelCapture: function() {\n this.capture = false;\n },\n\n _press: function(e) {\n var that = this;\n that.trigger(\"press\");\n if (that.capture) {\n e.preventDefault();\n }\n },\n\n _release: function(e) {\n var that = this;\n that.trigger(\"release\");\n\n if (that.capture) {\n e.preventDefault();\n that.cancelCapture();\n }\n }\n });\n\n var PaneDimension = Observable.extend({\n init: function(options) {\n var that = this;\n Observable.fn.init.call(that);\n\n that.forcedEnabled = false;\n\n $.extend(that, options);\n\n that.scale = 1;\n\n if (that.horizontal) {\n that.measure = \"offsetWidth\";\n that.scrollSize = \"scrollWidth\";\n that.axis = \"x\";\n } else {\n that.measure = \"offsetHeight\";\n that.scrollSize = \"scrollHeight\";\n that.axis = \"y\";\n }\n },\n\n makeVirtual: function() {\n $.extend(this, {\n virtual: true,\n forcedEnabled: true,\n _virtualMin: 0,\n _virtualMax: 0\n });\n },\n\n virtualSize: function(min, max) {\n if (this._virtualMin !== min || this._virtualMax !== max) {\n this._virtualMin = min;\n this._virtualMax = max;\n this.update();\n }\n },\n\n outOfBounds: function(offset) {\n return offset > this.max || offset < this.min;\n },\n\n forceEnabled: function() {\n this.forcedEnabled = true;\n },\n\n getSize: function() {\n return this.container[0][this.measure];\n },\n\n getTotal: function() {\n return this.element[0][this.scrollSize];\n },\n\n rescale: function(scale) {\n this.scale = scale;\n },\n\n update: function(silent) {\n var that = this,\n total = that.virtual ? that._virtualMax : that.getTotal(),\n scaledTotal = total * that.scale,\n size = that.getSize();\n\n if (total === 0 && !that.forcedEnabled) {\n return; // we are not visible.\n }\n\n that.max = that.virtual ? -that._virtualMin : 0;\n that.size = size;\n that.total = scaledTotal;\n that.min = Math.min(that.max, size - scaledTotal);\n that.minScale = size / total;\n that.centerOffset = (scaledTotal - size) / 2;\n\n that.enabled = that.forcedEnabled || (scaledTotal > size);\n\n if (!silent) {\n that.trigger(CHANGE, that);\n }\n }\n });\n\n var PaneDimensions = Observable.extend({\n init: function(options) {\n var that = this;\n\n Observable.fn.init.call(that);\n\n that.x = new PaneDimension(extend({ horizontal: true }, options));\n that.y = new PaneDimension(extend({ horizontal: false }, options));\n that.container = options.container;\n that.forcedMinScale = options.minScale;\n that.maxScale = options.maxScale || 100;\n\n that.bind(CHANGE, options);\n },\n\n rescale: function(newScale) {\n this.x.rescale(newScale);\n this.y.rescale(newScale);\n this.refresh();\n },\n\n centerCoordinates: function() {\n return { x: Math.min(0, -this.x.centerOffset), y: Math.min(0, -this.y.centerOffset) };\n },\n\n refresh: function() {\n var that = this;\n that.x.update();\n that.y.update();\n that.enabled = that.x.enabled || that.y.enabled;\n that.minScale = that.forcedMinScale || Math.min(that.x.minScale, that.y.minScale);\n that.fitScale = Math.max(that.x.minScale, that.y.minScale);\n that.trigger(CHANGE);\n }\n });\n\n var PaneAxis = Observable.extend({\n init: function(options) {\n var that = this;\n extend(that, options);\n Observable.fn.init.call(that);\n },\n\n outOfBounds: function() {\n return this.dimension.outOfBounds(this.movable[this.axis]);\n },\n\n dragMove: function(delta) {\n var that = this,\n dimension = that.dimension,\n axis = that.axis,\n movable = that.movable,\n position = movable[axis] + delta;\n\n if (!dimension.enabled) {\n return;\n }\n\n if ((position < dimension.min && delta < 0) || (position > dimension.max && delta > 0)) {\n delta *= that.resistance;\n }\n\n movable.translateAxis(axis, delta);\n that.trigger(CHANGE, that);\n }\n });\n\n var Pane = Class.extend({\n\n init: function(options) {\n var that = this,\n x,\n y,\n resistance,\n movable;\n\n extend(that, { elastic: true }, options);\n\n resistance = that.elastic ? 0.5 : 0;\n movable = that.movable;\n\n that.x = x = new PaneAxis({\n axis: \"x\",\n dimension: that.dimensions.x,\n resistance: resistance,\n movable: movable\n });\n\n that.y = y = new PaneAxis({\n axis: \"y\",\n dimension: that.dimensions.y,\n resistance: resistance,\n movable: movable\n });\n\n that.userEvents.bind([\"press\", \"move\", \"end\", \"gesturestart\", \"gesturechange\"], {\n gesturestart: function(e) {\n that.gesture = e;\n that.offset = that.dimensions.container.offset();\n },\n\n press: function(e) {\n if ($(e.event.target).closest(\"a\").is(\"[data-navigate-on-press=true]\")) {\n e.sender.cancel();\n }\n },\n\n gesturechange: function(e) {\n var previousGesture = that.gesture,\n previousCenter = previousGesture.center,\n\n center = e.center,\n\n scaleDelta = e.distance / previousGesture.distance,\n\n minScale = that.dimensions.minScale,\n maxScale = that.dimensions.maxScale,\n coordinates;\n\n if (movable.scale <= minScale && scaleDelta < 1) {\n // Resist shrinking. Instead of shrinking from 1 to 0.5, it will shrink to 0.5 + (1 /* minScale */ - 0.5) * 0.8 = 0.9;\n scaleDelta += (1 - scaleDelta) * 0.8;\n }\n\n if (movable.scale * scaleDelta >= maxScale) {\n scaleDelta = maxScale / movable.scale;\n }\n\n var offsetX = movable.x + that.offset.left,\n offsetY = movable.y + that.offset.top;\n\n coordinates = {\n x: (offsetX - previousCenter.x) * scaleDelta + center.x - offsetX,\n y: (offsetY - previousCenter.y) * scaleDelta + center.y - offsetY\n };\n\n movable.scaleWith(scaleDelta);\n\n x.dragMove(coordinates.x);\n y.dragMove(coordinates.y);\n\n that.dimensions.rescale(movable.scale);\n that.gesture = e;\n e.preventDefault();\n },\n\n move: function(e) {\n if (e.event.target.tagName.match(/textarea|input/i)) {\n return;\n }\n\n if (x.dimension.enabled || y.dimension.enabled) {\n x.dragMove(e.x.delta);\n y.dragMove(e.y.delta);\n e.preventDefault();\n } else {\n e.touch.skip();\n }\n },\n\n end: function(e) {\n e.preventDefault();\n }\n });\n }\n });\n\n var TRANSFORM_STYLE = support.transitions.prefix + \"Transform\",\n translate;\n\n\n if (support.hasHW3D) {\n translate = function(x, y, scale) {\n return \"translate3d(\" + x + \"px,\" + y + \"px,0) scale(\" + scale + \")\";\n };\n } else {\n translate = function(x, y, scale) {\n return \"translate(\" + x + \"px,\" + y + \"px) scale(\" + scale + \")\";\n };\n }\n\n var Movable = Observable.extend({\n init: function(element) {\n var that = this;\n\n Observable.fn.init.call(that);\n\n that.element = $(element);\n that.element[0].style.webkitTransformOrigin = \"left top\";\n that.x = 0;\n that.y = 0;\n that.scale = 1;\n that._saveCoordinates(translate(that.x, that.y, that.scale));\n },\n\n translateAxis: function(axis, by) {\n this[axis] += by;\n this.refresh();\n },\n\n scaleTo: function(scale) {\n this.scale = scale;\n this.refresh();\n },\n\n scaleWith: function(scaleDelta) {\n this.scale *= scaleDelta;\n this.refresh();\n },\n\n translate: function(coordinates) {\n this.x += coordinates.x;\n this.y += coordinates.y;\n this.refresh();\n },\n\n moveAxis: function(axis, value) {\n this[axis] = value;\n this.refresh();\n },\n\n moveTo: function(coordinates) {\n extend(this, coordinates);\n this.refresh();\n },\n\n refresh: function() {\n var that = this,\n x = that.x,\n y = that.y,\n newCoordinates;\n\n if (that.round) {\n x = Math.round(x);\n y = Math.round(y);\n }\n\n newCoordinates = translate(x, y, that.scale);\n\n if (newCoordinates != that.coordinates) {\n if (kendo.support.browser.msie && kendo.support.browser.version < 10) {\n that.element[0].style.position = \"absolute\";\n that.element[0].style.left = that.x + \"px\";\n that.element[0].style.top = that.y + \"px\";\n\n } else {\n that.element[0].style[TRANSFORM_STYLE] = newCoordinates;\n }\n that._saveCoordinates(newCoordinates);\n that.trigger(CHANGE);\n }\n },\n\n _saveCoordinates: function(coordinates) {\n this.coordinates = coordinates;\n }\n });\n\n function destroyDroppable(collection, widget) {\n var groupName = widget.options.group,\n droppables = collection[groupName],\n i;\n\n Widget.fn.destroy.call(widget);\n\n if (droppables.length > 1) {\n for (i = 0; i < droppables.length; i++) {\n if (droppables[i] == widget) {\n droppables.splice(i, 1);\n break;\n }\n }\n } else {\n droppables.length = 0; // WTF, porting this from the previous destroyGroup\n delete collection[groupName];\n }\n }\n\n var DropTarget = Widget.extend({\n init: function(element, options) {\n var that = this;\n\n Widget.fn.init.call(that, element, options);\n\n var group = that.options.group;\n\n if (!(group in dropTargets)) {\n dropTargets[group] = [ that ];\n } else {\n dropTargets[group].push( that );\n }\n },\n\n events: [\n DRAGENTER,\n DRAGLEAVE,\n DROP\n ],\n\n options: {\n name: \"DropTarget\",\n group: \"default\"\n },\n\n destroy: function() {\n destroyDroppable(dropTargets, this);\n },\n\n _trigger: function(eventName, e) {\n var that = this,\n draggable = draggables[that.options.group];\n\n if (draggable) {\n return that.trigger(eventName, extend({}, e.event, {\n draggable: draggable,\n dropTarget: e.dropTarget\n }));\n }\n },\n\n _over: function(e) {\n this._trigger(DRAGENTER, e);\n },\n\n _out: function(e) {\n this._trigger(DRAGLEAVE, e);\n },\n\n _drop: function(e) {\n var that = this,\n draggable = draggables[that.options.group];\n\n if (draggable) {\n draggable.dropped = !that._trigger(DROP, e);\n }\n }\n });\n\n DropTarget.destroyGroup = function(groupName) {\n var group = dropTargets[groupName] || dropAreas[groupName],\n i;\n\n if (group) {\n for (i = 0; i < group.length; i++) {\n Widget.fn.destroy.call(group[i]);\n }\n\n group.length = 0;\n delete dropTargets[groupName];\n delete dropAreas[groupName];\n }\n };\n\n DropTarget._cache = dropTargets;\n\n var DropTargetArea = DropTarget.extend({\n init: function(element, options) {\n var that = this;\n\n Widget.fn.init.call(that, element, options);\n\n var group = that.options.group;\n\n if (!(group in dropAreas)) {\n dropAreas[group] = [ that ];\n } else {\n dropAreas[group].push( that );\n }\n },\n\n destroy: function() {\n destroyDroppable(dropAreas, this);\n },\n\n options: {\n name: \"DropTargetArea\",\n group: \"default\",\n filter: null\n }\n });\n\n var Draggable = Widget.extend({\n init: function(element, options) {\n var that = this;\n\n Widget.fn.init.call(that, element, options);\n\n that._activated = false;\n\n that.userEvents = new UserEvents(that.element, {\n global: true,\n allowSelection: true,\n filter: that.options.filter,\n threshold: that.options.distance,\n start: that._start.bind(that),\n hold: that._hold.bind(that),\n move: that._drag.bind(that),\n end: that._end.bind(that),\n cancel: that._cancel.bind(that),\n select: that._select.bind(that)\n });\n\n if (kendo.support.touch) {\n that.element.find(that.options.filter).css('touch-action', 'none');\n }\n\n that._afterEndHandler = that._afterEnd.bind(that);\n that._captureEscape = that._captureEscape.bind(that);\n },\n\n events: [\n HOLD,\n DRAGSTART,\n DRAG,\n DRAGEND,\n DRAGCANCEL,\n HINTDESTROYED\n ],\n\n options: {\n name: \"Draggable\",\n distance: ( kendo.support.touch ? 0 : 5),\n group: \"default\",\n cursorOffset: null,\n axis: null,\n container: null,\n filter: null,\n ignore: null,\n holdToDrag: false,\n autoScroll: false,\n dropped: false\n },\n\n cancelHold: function() {\n this._activated = false;\n },\n\n _captureEscape: function(e) {\n var that = this;\n\n if (e.keyCode === kendo.keys.ESC) {\n that._trigger(DRAGCANCEL, { event: e });\n that.userEvents.cancel();\n }\n },\n\n _updateHint: function(e) {\n var that = this,\n coordinates,\n options = that.options,\n boundaries = that.boundaries,\n axis = options.axis,\n cursorOffset = that.options.cursorOffset;\n\n if (cursorOffset) {\n coordinates = { left: e.x.location + cursorOffset.left, top: e.y.location + cursorOffset.top };\n } else {\n that.hintOffset.left += e.x.delta;\n that.hintOffset.top += e.y.delta;\n coordinates = $.extend({}, that.hintOffset);\n }\n\n if (boundaries) {\n coordinates.top = within(coordinates.top, boundaries.y);\n coordinates.left = within(coordinates.left, boundaries.x);\n }\n\n if (axis === \"x\") {\n delete coordinates.top;\n } else if (axis === \"y\") {\n delete coordinates.left;\n }\n\n that.hint.css(coordinates);\n },\n\n _shouldIgnoreTarget: function(target) {\n var ignoreSelector = this.options.ignore;\n return ignoreSelector && $(target).is(ignoreSelector);\n },\n\n _select: function(e) {\n if (!this._shouldIgnoreTarget(e.event.target)) {\n e.preventDefault();\n }\n },\n\n _start: function(e) {\n var that = this,\n options = that.options,\n container = options.container ? $(options.container) : null,\n hint = options.hint;\n\n if (this._shouldIgnoreTarget(e.touch.initialTouch) || (options.holdToDrag && !that._activated)) {\n that.userEvents.cancel();\n return;\n }\n\n that.currentTarget = e.target;\n that.currentTargetOffset = getOffset(that.currentTarget);\n\n if (hint) {\n if (that.hint) {\n that.hint.stop(true, true).remove();\n }\n\n that.hint = kendo.isFunction(hint) ? $(hint.call(that, that.currentTarget)) : hint;\n\n var offset = getOffset(that.currentTarget);\n that.hintOffset = offset;\n\n that.hint.css( {\n position: \"absolute\",\n zIndex: 20000, // the Window's z-index is 10000 and can be raised because of z-stacking\n left: offset.left,\n top: offset.top\n })\n .appendTo(document.body);\n\n that.angular(\"compile\", function() {\n that.hint.removeAttr(\"ng-repeat\");\n var scopeTarget = $(e.target);\n\n while (!scopeTarget.data(\"$$kendoScope\") && scopeTarget.length) {\n scopeTarget = scopeTarget.parent();\n }\n\n return {\n elements: that.hint.get(),\n scopeFrom: scopeTarget.data(\"$$kendoScope\")\n };\n });\n }\n\n draggables[options.group] = that;\n\n that.dropped = false;\n\n if (container) {\n that.boundaries = containerBoundaries(container, that.hint);\n }\n\n $(document).on(KEYUP, that._captureEscape);\n\n if (that._trigger(DRAGSTART, e)) {\n that.userEvents.cancel();\n that._afterEnd();\n }\n\n that.userEvents.capture();\n },\n\n _hold: function(e) {\n this.currentTarget = e.target;\n\n if (this._trigger(HOLD, e)) {\n this.userEvents.cancel();\n } else {\n this._activated = true;\n }\n },\n\n _drag: function(e) {\n e.preventDefault();\n\n var cursorElement = this._elementUnderCursor(e);\n\n if (this.options.autoScroll && this._cursorElement !== cursorElement) {\n this._scrollableParent = findScrollableParent(cursorElement);\n this._cursorElement = cursorElement;\n }\n\n this._lastEvent = e;\n this._processMovement(e, cursorElement);\n\n if (this.options.autoScroll) {\n // chrome seems to trigger mousemove when mouse is moved outside of the window (over the Chrome), too.\n if (this._scrollableParent[0]) {\n var velocity = autoScrollVelocity(e.x.location, e.y.location, scrollableViewPort(this._scrollableParent));\n\n\n this._scrollCompenstation = $.extend({}, this.hintOffset);\n this._scrollVelocity = velocity;\n\n if (velocity.y === 0 && velocity.x === 0) {\n clearInterval(this._scrollInterval);\n this._scrollInterval = null;\n } else if (!this._scrollInterval) {\n this._scrollInterval = setInterval(this._autoScroll.bind(this), 50);\n }\n }\n }\n\n if (this.hint) {\n this._updateHint(e);\n }\n },\n\n _processMovement: function(e, cursorElement) {\n this._withDropTarget(cursorElement, function(target, targetElement) {\n if (!target) {\n if (lastDropTarget) {\n lastDropTarget._trigger(DRAGLEAVE, extend(e, { dropTarget: $(lastDropTarget.targetElement) }));\n lastDropTarget = null;\n }\n return;\n }\n\n if (lastDropTarget) {\n if (targetElement === lastDropTarget.targetElement) {\n return;\n }\n\n lastDropTarget._trigger(DRAGLEAVE, extend(e, { dropTarget: $(lastDropTarget.targetElement) }));\n }\n\n target._trigger(DRAGENTER, extend(e, { dropTarget: $(targetElement) }));\n lastDropTarget = extend(target, { targetElement: targetElement });\n });\n\n this._trigger(DRAG, extend(e, { dropTarget: lastDropTarget, elementUnderCursor: cursorElement }));\n },\n\n _autoScroll: function() {\n var parent = this._scrollableParent[0],\n velocity = this._scrollVelocity,\n compensation = this._scrollCompenstation;\n\n if (!parent) {\n return;\n }\n\n var cursorElement = this._elementUnderCursor(this._lastEvent);\n this._processMovement(this._lastEvent, cursorElement);\n\n var yIsScrollable, xIsScrollable;\n\n var isRootNode = parent === scrollableRoot()[0];\n\n if (isRootNode) {\n yIsScrollable = document.body.scrollHeight > $window.height();\n xIsScrollable = document.body.scrollWidth > $window.width();\n } else {\n yIsScrollable = parent.offsetHeight <= parent.scrollHeight;\n xIsScrollable = parent.offsetWidth <= parent.scrollWidth;\n }\n\n var yDelta = parent.scrollTop + velocity.y;\n var yInBounds = yIsScrollable && yDelta > 0 && yDelta < parent.scrollHeight;\n\n var xDelta = parent.scrollLeft + velocity.x;\n var xInBounds = xIsScrollable && xDelta > 0 && xDelta < parent.scrollWidth;\n\n if (yInBounds) {\n parent.scrollTop += velocity.y;\n } else if (yIsScrollable && yDelta < 0) {\n parent.scrollTop = 0;\n }\n\n if (xInBounds) {\n parent.scrollLeft += velocity.x;\n } else if (xIsScrollable && xDelta < 0) {\n parent.scrollLeft = 0;\n }\n\n if (this.hint && isRootNode && (xInBounds || yInBounds)) {\n if (yInBounds) {\n compensation.top += velocity.y;\n }\n\n if (xInBounds) {\n compensation.left += velocity.x;\n }\n\n this.hint.css(compensation);\n }\n },\n\n _end: function(e) {\n this._withDropTarget(this._elementUnderCursor(e), function(target, targetElement) {\n if (target) {\n target._drop(extend({}, e, { dropTarget: $(targetElement) }));\n lastDropTarget = null;\n }\n });\n\n clearInterval(this._scrollInterval);\n this._scrollInterval = null;\n this._cancel(this._trigger(DRAGEND, e));\n },\n\n _cancel: function(isDefaultPrevented) {\n var that = this;\n\n that._scrollableParent = null;\n this._cursorElement = null;\n clearInterval(this._scrollInterval);\n that._activated = false;\n\n if (that.hint && !that.dropped) {\n setTimeout(function() {\n that.hint.stop(true, true);\n\n if (isDefaultPrevented) {\n that._afterEndHandler();\n } else {\n that.hint.animate(that.currentTargetOffset, \"fast\", that._afterEndHandler);\n }\n }, 0);\n\n } else {\n that._afterEnd();\n }\n },\n\n _trigger: function(eventName, e) {\n var that = this;\n\n return that.trigger(\n eventName, extend(\n {},\n e.event,\n {\n x: e.x,\n y: e.y,\n currentTarget: that.currentTarget,\n initialTarget: e.touch ? e.touch.initialTouch : null,\n dropTarget: e.dropTarget,\n elementUnderCursor: e.elementUnderCursor\n }\n ));\n },\n\n _elementUnderCursor: function(e) {\n var target = elementUnderCursor(e),\n hint = this.hint;\n\n if (hint && contains(hint[0], target)) {\n hint.hide();\n target = elementUnderCursor(e);\n // IE8 does not return the element in iframe from first attempt\n if (!target) {\n target = elementUnderCursor(e);\n }\n hint.show();\n }\n\n return target;\n },\n\n _withDropTarget: function(element, callback) {\n var result,\n group = this.options.group,\n targets = dropTargets[group],\n areas = dropAreas[group];\n\n if (targets && targets.length || areas && areas.length) {\n result = checkTarget(element, targets, areas);\n\n if (result) {\n callback(result.target, result.targetElement);\n } else {\n callback();\n }\n }\n },\n\n destroy: function() {\n var that = this;\n\n Widget.fn.destroy.call(that);\n\n that._afterEnd();\n\n that.userEvents.destroy();\n\n this._scrollableParent = null;\n this._cursorElement = null;\n clearInterval(this._scrollInterval);\n\n that.currentTarget = null;\n },\n\n _afterEnd: function() {\n var that = this;\n\n if (that.hint) {\n that.hint.remove();\n }\n\n delete draggables[that.options.group];\n\n that.trigger(\"destroy\");\n that.trigger(HINTDESTROYED);\n $(document).off(KEYUP, that._captureEscape);\n }\n });\n\n kendo.ui.plugin(DropTarget);\n kendo.ui.plugin(DropTargetArea);\n kendo.ui.plugin(Draggable);\n kendo.TapCapture = TapCapture;\n kendo.containerBoundaries = containerBoundaries;\n\n extend(kendo.ui, {\n Pane: Pane,\n PaneDimensions: PaneDimensions,\n Movable: Movable\n });\n\n function scrollableViewPort(element) {\n var root = scrollableRoot()[0],\n offset,\n top,\n left;\n\n if (element[0] === root) {\n top = root.scrollTop;\n left = root.scrollLeft;\n\n return {\n top: top,\n left: left,\n bottom: top + $window.height(),\n right: left + $window.width()\n };\n } else {\n offset = element.offset();\n offset.bottom = offset.top + element.height();\n offset.right = offset.left + element.width();\n return offset;\n }\n }\n\n function scrollableRoot() {\n return $(kendo.support.browser.edge || kendo.support.browser.safari ? document.body : document.documentElement);\n }\n\n function findScrollableParent(element) {\n var root = scrollableRoot();\n\n if (!element || element === document.body || element === document.documentElement) {\n return root;\n }\n\n var parent = $(element)[0];\n\n while (parent && !kendo.isScrollable(parent) && parent !== document.body) {\n parent = parent.parentNode;\n }\n\n if (parent === document.body) {\n return root;\n }\n\n return $(parent);\n }\n\n function autoScrollVelocity(mouseX, mouseY, rect) {\n var velocity = { x: 0, y: 0 };\n\n var AUTO_SCROLL_AREA = 50;\n\n if (mouseX - rect.left < AUTO_SCROLL_AREA) {\n velocity.x = -(AUTO_SCROLL_AREA - (mouseX - rect.left));\n } else if (rect.right - mouseX < AUTO_SCROLL_AREA) {\n velocity.x = AUTO_SCROLL_AREA - (rect.right - mouseX);\n }\n\n if (mouseY - rect.top < AUTO_SCROLL_AREA) {\n velocity.y = -(AUTO_SCROLL_AREA - (mouseY - rect.top));\n } else if (rect.bottom - mouseY < AUTO_SCROLL_AREA) {\n velocity.y = AUTO_SCROLL_AREA - (rect.bottom - mouseY);\n }\n\n return velocity;\n }\n\n // export for testing\n kendo.ui.Draggable.utils = {\n autoScrollVelocity: autoScrollVelocity,\n scrollableViewPort: scrollableViewPort,\n findScrollableParent: findScrollableParent\n };\n\n })(window.kendo.jQuery);\n\n}));\n"]}