| Current Path : /home/lejardintz/www/media/foundry/3.1/scripts/event/ |
| Current File : /home/lejardintz/www/media/foundry/3.1/scripts/event/drop.min.js |
!function(){var moduleFactory=function($){var module=this,jQuery=$,exports=function(){!function($){$.fn.drop=function(str,arg,opts){var type="string"==typeof str?str:"",fn=$.isFunction(str)?str:$.isFunction(arg)?arg:null;return 0!==type.indexOf("drop")&&(type="drop"+type),opts=(str==fn?arg:opts)||{},fn?this.bind(type,opts,fn):this.trigger(type)},$.drop=function(opts){opts=opts||{},drop.multi=opts.multi===!0?1/0:opts.multi===!1?1:isNaN(opts.multi)?drop.multi:opts.multi,drop.delay=opts.delay||drop.delay,drop.tolerance=$.isFunction(opts.tolerance)?opts.tolerance:null===opts.tolerance?null:drop.tolerance,drop.mode=opts.mode||drop.mode||"intersect"
};var $event=$.event,$special=$event.special,drop=$.event.special.drop={multi:1,delay:20,mode:"overlap",targets:[],datakey:"dropdata",noBubble:!0,add:function(){var data=$.data(this,drop.datakey);data.related+=1},remove:function(){$.data(this,drop.datakey).related-=1},setup:function(){if(!$.data(this,drop.datakey)){var data={related:0,active:[],anyactive:0,winner:0,location:{}};$.data(this,drop.datakey,data),drop.targets.push(this)}},teardown:function(){var data=$.data(this,drop.datakey)||{};if(!data.related){$.removeData(this,drop.datakey);
var element=this;drop.targets=$.grep(drop.targets,function(target){return target!==element})}},handler:function(event,dd){var $targets;if(dd)switch(event.type){case"mousedown":case"touchstart":$targets=$(drop.targets),"string"==typeof dd.drop&&($targets=$targets.filter(dd.drop)),$targets.each(function(){var data=$.data(this,drop.datakey);data.active=[],data.anyactive=0,data.winner=0}),dd.droppable=$targets,$special.drag.hijack(event,"dropinit",dd);break;case"mousemove":case"touchmove":drop.event=event,drop.timer||drop.tolerate(dd);
break;case"mouseup":case"touchend":drop.timer=clearTimeout(drop.timer),dd.propagates&&($special.drag.hijack(event,"drop",dd),$special.drag.hijack(event,"dropend",dd))}},locate:function(elem,index){var data=$.data(elem,drop.datakey),$elem=$(elem),posi=$elem.offset()||{},height=$elem.outerHeight(),width=$elem.outerWidth(),location={elem:elem,width:width,height:height,top:posi.top,left:posi.left,right:posi.left+width,bottom:posi.top+height};return data&&(data.location=location,data.index=index,data.elem=elem),location
},contains:function(target,test){return(test[0]||test.left)>=target.left&&(test[0]||test.right)<=target.right&&(test[1]||test.top)>=target.top&&(test[1]||test.bottom)<=target.bottom},modes:{intersect:function(event,proxy,target){return this.contains(target,[event.pageX,event.pageY])?1e9:this.modes.overlap.apply(this,arguments)},overlap:function(event,proxy,target){return Math.max(0,Math.min(target.bottom,proxy.bottom)-Math.max(target.top,proxy.top))*Math.max(0,Math.min(target.right,proxy.right)-Math.max(target.left,proxy.left))
},fit:function(event,proxy,target){return this.contains(target,proxy)?1:0},middle:function(event,proxy,target){return this.contains(target,[proxy.left+.5*proxy.width,proxy.top+.5*proxy.height])?1:0}},sort:function(a,b){return b.winner-a.winner||a.index-b.index},tolerate:function(dd){var i,drp,drg,data,arr,len,elem,ia,x=0,end=dd.interactions.length,xy=[drop.event.pageX,drop.event.pageY],tolerance=drop.tolerance||drop.modes[drop.mode];do if(ia=dd.interactions[x]){if(!ia)return;ia.drop=[],arr=[],len=ia.droppable.length,tolerance&&(drg=drop.locate(ia.proxy)),i=0;
do if(elem=ia.droppable[i]){if(data=$.data(elem,drop.datakey),drp=data.location,!drp)continue;data.winner=tolerance?tolerance.call(drop,drop.event,drg,drp):drop.contains(drp,xy)?1:0,arr.push(data)}while(++i<len);arr.sort(drop.sort),i=0;do(data=arr[i])&&(data.winner&&ia.drop.length<drop.multi?(data.active[x]||data.anyactive||($special.drag.hijack(drop.event,"dropstart",dd,x,data.elem)[0]!==!1?(data.active[x]=1,data.anyactive+=1):data.winner=0),data.winner&&ia.drop.push(data.elem)):data.active[x]&&1==data.anyactive&&($special.drag.hijack(drop.event,"dropend",dd,x,data.elem),data.active[x]=0,data.anyactive-=1));
while(++i<len)}while(++x<end);drop.last&&xy[0]==drop.last.pageX&&xy[1]==drop.last.pageY?delete drop.timer:drop.timer=setTimeout(function(){drop.tolerate(dd)},drop.delay),drop.last=drop.event}};$special.dropinit=$special.dropstart=$special.dropend=drop}(jQuery)};exports(),module.resolveWith(exports)};FD31.module("event/drop",moduleFactory)}();