{"version":3,"file":"kendo.draganddrop.js","names":["__meta__","id","name","category","description","depends","$","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","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","_trigger","eventName","draggable","dropTarget","_over","_out","_drop","dropped","destroyGroup","_cache","DropTargetArea","filter","Draggable","_activated","clickMoveClick","global","start","_startClickMoveClick","_drag","_end","_onCancel","allowSelection","threshold","_start","hold","_hold","select","_select","find","_afterEndHandler","_afterEnd","_captureEscape","cursorOffset","ignore","holdToDrag","showHintOnHold","autoScroll","preventOsHoldFeatures","cancelHold","keyCode","keys","ESC","_updateHint","boundaries","location","hintOffset","startLocation","initialDelta","hint","_shouldIgnoreTarget","ignoreSelector","_hint","stop","remove","isFunction","currentTarget","zIndex","appendTo","body","initialTouch","currentTargetOffset","on","cursorElement","_elementUnderCursor","_cursorElement","_scrollableParent","findScrollableParent","_lastEvent","_processMovement","velocity","autoScrollVelocity","scrollableViewPort","_scrollCompenstation","_scrollVelocity","clearInterval","_scrollInterval","setInterval","_autoScroll","_withDropTarget","targetElement","parent","compensation","yIsScrollable","xIsScrollable","isRootNode","scrollableRoot","scrollHeight","scrollWidth","offsetHeight","offsetWidth","yDelta","scrollTop","yInBounds","xDelta","scrollLeft","xInBounds","ev","attr","one","_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","kendo$1"],"sources":["kendo.draganddrop.js"],"mappings":"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","sourcesContent":["import './kendo.core.js';\nimport './kendo.userevents.js';\n\nvar __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 press: that._press.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 showHintOnHold: false,\n autoScroll: false,\n dropped: false,\n clickMoveClick: false,\n preventOsHoldFeatures: 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 _hint: function() {\n var that = this,\n hint = that.options.hint;\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 },\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 that._hint();\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 if (this.options.showHintOnHold) {\n this._hint();\n }\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 _press: function(ev) {\n if (this.options.preventOsHoldFeatures) {\n ev.target.css('-webkit-user-select', 'none');\n ev.target.attr('unselectable', 'on');\n ev.target.one('contextmenu', (ev) => {\n ev.preventDefault();\n });\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);\nvar kendo$1 = kendo;\n\nexport { kendo$1 as default };\n"]}