mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
2 lines
5.0 KiB
JavaScript
2 lines
5.0 KiB
JavaScript
!function(a){a.fn.drag=function(b,c,d){var e="string"==typeof b?b:"",f=a.isFunction(b)?b:a.isFunction(c)?c:null;return 0!==e.indexOf("drag")&&(e="drag"+e),d=(b==f?c:d)||{},f?this.bind(e,d,f):this.trigger(e)};var b=a.event,c=b.special,d=c.drag={defaults:{which:1,distance:0,not:":input",handle:null,relative:!1,drop:!0,click:!1},datakey:"dragdata",noBubble:!0,add:function(b){var c=a.data(this,d.datakey),e=b.data||{};c.related+=1,a.each(d.defaults,function(a){void 0!==e[a]&&(c[a]=e[a])})},remove:function(){a.data(this,d.datakey).related-=1},setup:function(){if(!a.data(this,d.datakey)){var c=a.extend({related:0},d.defaults);a.data(this,d.datakey,c),b.add(this,"touchstart mousedown",d.init,c),this.attachEvent&&this.attachEvent("ondragstart",d.dontstart)}},teardown:function(){var c=a.data(this,d.datakey)||{};c.related||(a.removeData(this,d.datakey),b.remove(this,"touchstart mousedown",d.init),d.textselect(!0),this.detachEvent&&this.detachEvent("ondragstart",d.dontstart))},init:function(e){if(!d.touched){var f,g=e.data;if(!(0!=e.which&&g.which>0&&e.which!=g.which||a(e.target).is(g.not)||g.handle&&!a(e.target).closest(g.handle,e.currentTarget).length||(d.touched="touchstart"==e.type?this:null,g.propagates=1,g.mousedown=this,g.interactions=[d.interaction(this,g)],g.target=e.target,g.pageX=e.pageX,g.pageY=e.pageY,g.dragging=null,f=d.hijack(e,"draginit",g),!g.propagates)))return f=d.flatten(f),f&&f.length&&(g.interactions=[],a.each(f,function(){g.interactions.push(d.interaction(this,g))})),g.propagates=g.interactions.length,g.drop!==!1&&c.drop&&c.drop.handler(e,g),d.textselect(!1),d.touched?b.add(d.touched,"touchmove touchend",d.handler,g):b.add(document,"mousemove mouseup",d.handler,g),!d.touched||g.live?!1:void 0}},interaction:function(b,c){var e=a(b)[c.relative?"position":"offset"]()||{top:0,left:0};return{drag:b,callback:new d.callback,droppable:[],offset:e}},handler:function(e){var f=e.data;switch(e.type){case!f.dragging&&"touchmove":e.preventDefault();case!f.dragging&&"mousemove":if(Math.pow(e.pageX-f.pageX,2)+Math.pow(e.pageY-f.pageY,2)<Math.pow(f.distance,2))break;e.target=f.target,d.hijack(e,"dragstart",f),f.propagates&&(f.dragging=!0);case"touchmove":e.preventDefault();case"mousemove":if(f.dragging){if(d.hijack(e,"drag",f),f.propagates){f.drop!==!1&&c.drop&&c.drop.handler(e,f);break}e.type="mouseup"}case"touchend":case"mouseup":default:d.touched?b.remove(d.touched,"touchmove touchend",d.handler):b.remove(document,"mousemove mouseup",d.handler),f.dragging?(f.drop!==!1&&c.drop&&c.drop.handler(e,f),d.hijack(e,"dragend",f)):d.hijack(e,"dragclickonly",f),d.textselect(!0),f.click===!1&&f.dragging&&a.data(f.mousedown,"suppress.click",(new Date).getTime()+5),f.dragging=d.touched=!1}},hijack:function(c,e,f,g,h){if(f){var i,j,k,l={event:c.originalEvent,type:c.type},m=e.indexOf("drop")?"drag":"drop",n=g||0,o=isNaN(g)?f.interactions.length:g;c.type=e,c.originalEvent=null,f.results=[];do if(j=f.interactions[n]){if("dragend"!==e&&j.cancelled)continue;k=d.properties(c,f,j),j.results=[],a(h||j[m]||f.droppable).each(function(g,h){return k.target=h,c.isPropagationStopped=function(){return!1},i=h?b.dispatch.call(h,c,k):null,i===!1?("drag"==m&&(j.cancelled=!0,f.propagates-=1),"drop"==e&&(j[m][g]=null)):"dropinit"==e&&j.droppable.push(d.element(i)||h),"dragstart"==e&&(j.proxy=a(d.element(i)||j.drag)[0]),j.results.push(i),delete c.result,"dropinit"!==e?i:void 0}),f.results[n]=d.flatten(j.results),"dropinit"==e&&(j.droppable=d.flatten(j.droppable)),"dragstart"!=e||j.cancelled||k.update()}while(++n<o);return c.type=l.type,c.originalEvent=l.event,d.flatten(f.results)}},properties:function(a,b,c){var e=c.callback;return e.drag=c.drag,e.proxy=c.proxy||c.drag,e.startX=b.pageX,e.startY=b.pageY,e.deltaX=a.pageX-b.pageX,e.deltaY=a.pageY-b.pageY,e.originalX=c.offset.left,e.originalY=c.offset.top,e.offsetX=e.originalX+e.deltaX,e.offsetY=e.originalY+e.deltaY,e.drop=d.flatten((c.drop||[]).slice()),e.available=d.flatten((c.droppable||[]).slice()),e},element:function(a){return a&&(a.jquery||1==a.nodeType)?a:void 0},flatten:function(b){return a.map(b,function(b){return b&&b.jquery?a.makeArray(b):b&&b.length?d.flatten(b):b})},textselect:function(b){a(document)[b?"unbind":"bind"]("selectstart",d.dontstart).css("MozUserSelect",b?"":"none"),document.unselectable=b?"off":"on"},dontstart:function(){return!1},callback:function(){}};d.callback.prototype={update:function(){c.drop&&this.available.length&&a.each(this.available,function(a){c.drop.locate(this,a)})}};var e=b.dispatch;b.dispatch=function(b){return a.data(this,"suppress."+b.type)-(new Date).getTime()>0?void a.removeData(this,"suppress."+b.type):e.apply(this,arguments)};var f=b.fixHooks.touchstart=b.fixHooks.touchmove=b.fixHooks.touchend=b.fixHooks.touchcancel={props:"clientX clientY pageX pageY screenX screenY".split(" "),filter:function(b,c){if(c){var d=c.touches&&c.touches[0]||c.changedTouches&&c.changedTouches[0]||null;d&&a.each(f.props,function(a,c){b[c]=d[c]})}return b}};c.draginit=c.dragstart=c.dragend=d}(jQuery);
|
|
//# sourceMappingURL=../../../maps/libs/jquery/jquery.event.drag.js.map
|