{"version":3,"file":"kendo.draganddrop.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendodraganddrop","js","this","$","undefined$1","lastDropTarget","kendo","window","support","document","$window","Class","Widget","ui","Observable","UserEvents","ClickMoveClick","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","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","clickMoveClick","start","_startClickMoveClick","_drag","_end","_onCancel","allowSelection","threshold","_start","hold","_hold","select","_select","find","_afterEndHandler","_afterEnd","_captureEscape","cursorOffset","ignore","holdToDrag","autoScroll","cancelHold","keyCode","keys","ESC","_updateHint","boundaries","location","hintOffset","startLocation","initialDelta","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","_cancel","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 (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.core.js'), require('kendo.userevents.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.core', 'kendo.userevents'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendodraganddrop = global.kendodraganddrop || {}, global.kendodraganddrop.js = factory()));\n})(this, (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 ClickMoveClick = kendo.ClickMoveClick,\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 if (this.options.clickMoveClick) {\n that.clickMoveClick = new ClickMoveClick(that.element, {\n global: true,\n filter: that.options.filter,\n start: that._startClickMoveClick.bind(that),\n move: that._drag.bind(that),\n end: that._end.bind(that),\n cancel: that._onCancel.bind(that)\n });\n }\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._onCancel.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 clickMoveClick: 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.userEvents.cancel();\n\n if (that.clickMoveClick) {\n that.clickMoveClick.cancel();\n }\n\n this._trigger(DRAGCANCEL, { event: e });\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 if (e.x.delta !== 0 || e.y.delta !== 0) {\n that.hintOffset.left += e.x.delta;\n that.hintOffset.top += e.y.delta;\n coordinates = $.extend({}, that.hintOffset);\n } else {\n that.hintOffset.left = e.x.startLocation + e.x.initialDelta;\n that.hintOffset.top = e.y.startLocation + e.y.initialDelta;\n coordinates = $.extend({}, that.hintOffset);\n }\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 _startClickMoveClick: function(e) {\n this._activated = true;\n\n this._start(e);\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\n if (that.clickMoveClick) {\n that.clickMoveClick.cancel();\n }\n\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 _onCancel: function(e) {\n this._cancel();\n this._trigger(DRAGCANCEL, { event: 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 } 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 clickMoveClick: e.clickMoveClick\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 if (that.clickMoveClick) {\n that.clickMoveClick.destroy();\n }\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 var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}