Files
galaxy/static/scripts/libs/jquery/jquery.event.drop.js
T
2018-05-23 15:37:14 -04:00

1 line
3.2 KiB
JavaScript

!function(t){t.fn.drop=function(e,a,i){var n="string"==typeof e?e:"",o=t.isFunction(e)?e:t.isFunction(a)?a:null;return 0!==n.indexOf("drop")&&(n="drop"+n),i=(e==o?a:i)||{},o?this.bind(n,i,o):this.trigger(n)},t.drop=function(e){e=e||{},a.multi=!0===e.multi?1/0:!1===e.multi?1:isNaN(e.multi)?a.multi:e.multi,a.delay=e.delay||a.delay,a.tolerance=t.isFunction(e.tolerance)?e.tolerance:null===e.tolerance?null:a.tolerance,a.mode=e.mode||a.mode||"intersect"};var e=t.event.special,a=t.event.special.drop={multi:1,delay:20,mode:"overlap",targets:[],datakey:"dropdata",noBubble:!0,add:function(e){t.data(this,a.datakey).related+=1},remove:function(){t.data(this,a.datakey).related-=1},setup:function(){if(!t.data(this,a.datakey)){var e={related:0,active:[],anyactive:0,winner:0,location:{}};t.data(this,a.datakey,e),a.targets.push(this)}},teardown:function(){if(!(t.data(this,a.datakey)||{}).related){t.removeData(this,a.datakey);var e=this;a.targets=t.grep(a.targets,function(t){return t!==e})}},handler:function(i,n){var o;if(n)switch(i.type){case"mousedown":case"touchstart":o=t(a.targets),"string"==typeof n.drop&&(o=o.filter(n.drop)),o.each(function(){var e=t.data(this,a.datakey);e.active=[],e.anyactive=0,e.winner=0}),n.droppable=o,e.drag.hijack(i,"dropinit",n);break;case"mousemove":case"touchmove":a.event=i,a.timer||a.tolerate(n);break;case"mouseup":case"touchend":a.timer=clearTimeout(a.timer),n.propagates&&(e.drag.hijack(i,"drop",n),e.drag.hijack(i,"dropend",n))}},locate:function(e,i){var n=t.data(e,a.datakey),o=t(e),r=o.offset()||{},d=o.outerHeight(),l=o.outerWidth(),c={elem:e,width:l,height:d,top:r.top,left:r.left,right:r.left+l,bottom:r.top+d};return n&&(n.location=c,n.index=i,n.elem=e),c},contains:function(t,e){return(e[0]||e.left)>=t.left&&(e[0]||e.right)<=t.right&&(e[1]||e.top)>=t.top&&(e[1]||e.bottom)<=t.bottom},modes:{intersect:function(t,e,a){return this.contains(a,[t.pageX,t.pageY])?1e9:this.modes.overlap.apply(this,arguments)},overlap:function(t,e,a){return Math.max(0,Math.min(a.bottom,e.bottom)-Math.max(a.top,e.top))*Math.max(0,Math.min(a.right,e.right)-Math.max(a.left,e.left))},fit:function(t,e,a){return this.contains(a,e)?1:0},middle:function(t,e,a){return this.contains(a,[e.left+.5*e.width,e.top+.5*e.height])?1:0}},sort:function(t,e){return e.winner-t.winner||t.index-e.index},tolerate:function(i){var n,o,r,d,l,c,s,u,p=0,h=i.interactions.length,m=[a.event.pageX,a.event.pageY],f=a.tolerance||a.modes[a.mode];do{if(u=i.interactions[p]){if(!u)return;u.drop=[],l=[],c=u.droppable.length,f&&(r=a.locate(u.proxy)),n=0;do{if(s=u.droppable[n]){if(d=t.data(s,a.datakey),!(o=d.location))continue;d.winner=f?f.call(a,a.event,r,o):a.contains(o,m)?1:0,l.push(d)}}while(++n<c);l.sort(a.sort),n=0;do{(d=l[n])&&(d.winner&&u.drop.length<a.multi?(d.active[p]||d.anyactive||(!1!==e.drag.hijack(a.event,"dropstart",i,p,d.elem)[0]?(d.active[p]=1,d.anyactive+=1):d.winner=0),d.winner&&u.drop.push(d.elem)):d.active[p]&&1==d.anyactive&&(e.drag.hijack(a.event,"dropend",i,p,d.elem),d.active[p]=0,d.anyactive-=1))}while(++n<c)}}while(++p<h);a.last&&m[0]==a.last.pageX&&m[1]==a.last.pageY?delete a.timer:a.timer=setTimeout(function(){a.tolerate(i)},a.delay),a.last=a.event}};e.dropinit=e.dropstart=e.dropend=a}(jQuery);