!function(){var moduleFactory=function($){var module=this;$.require().script("mvc/event.drop").done(function(){var exports=function(){$.Drag.prototype.scrolls=function(elements,options){for(var elements=$(elements),i=0;i<elements.length;i++)this.constructor.responder._elements.push(elements.eq(i).data("_dropData",new $.Scrollable(elements[i],options))[0])},$.Scrollable=function(element,options){this.element=$(element),this.options=$.extend({distance:30,delta:function(diff,distance){return(distance-diff)/2},direction:"xy"},options),this.x=-1!=this.options.direction.indexOf("x"),this.y=-1!=this.options.direction.indexOf("y")
},$.extend($.Scrollable.prototype,{init:function(element){this.element=$(element)},callHandlers:function(method,el,ev,drag){this[method](el||this.element[0],ev,this,drag)},dropover:function(){},dropon:function(){this.clear_timeout()},dropout:function(){this.clear_timeout()},dropinit:function(){},dropend:function(){},clear_timeout:function(){this.interval&&(clearTimeout(this.interval),this.interval=null)},distance:function(diff){return(30-diff)/2},dropmove:function(el,ev,drop,drag){this.clear_timeout();var mouse=ev.vector(),location_object=$(el==document.documentElement?window:el),dimensions=location_object.dimensionsv("outer"),position=location_object.offsetv(),bottom=position.y()+dimensions.y()-mouse.y(),top=mouse.y()-position.y(),right=position.x()+dimensions.x()-mouse.x(),left=mouse.x()-position.x(),dx=0,dy=0,distance=this.options.distance;
if(distance>bottom&&this.y?dy=this.options.delta(bottom,distance):distance>top&&this.y&&(dy=-this.options.delta(top,distance)),distance>right&&this.options&&this.x?dx=this.options.delta(right,distance):distance>left&&this.x&&(dx=-this.options.delta(left,distance)),dx||dy){var self=this;this.interval=setTimeout(function(){self.move($(el),drag.movingElement,dx,dy,ev,ev.clientX,ev.clientY,ev.screenX,ev.screenY)},15)}},move:function(scroll_element,drag_element,dx,dy,ev){scroll_element.scrollTop(scroll_element.scrollTop()+dy),scroll_element.scrollLeft(scroll_element.scrollLeft()+dx),drag_element.trigger($.event.fix({type:"mousemove",clientX:ev.clientX,clientY:ev.clientY,screenX:ev.screenX,screenY:ev.screenY,pageX:ev.pageX,pageY:ev.pageY}))
}})};exports(),module.resolveWith(exports)})};dispatch("mvc/event.drag.scroll").containing(moduleFactory).to("Foundry/2.1 Modules")}();