touch.js
3.23 KB
//>>built
define("./_base/kernel ./aspect ./dom ./dom-class ./_base/lang ./on ./has ./mouse ./domReady ./_base/window".split(" "),function(B,t,u,m,H,k,h,l,C,c){function g(a,e,c){return c?function(a,e){return k(a,c,e)}:D?function(c,f){var b=k(c,e,function(b){f.call(this,b);q=(new Date).getTime()}),E=k(c,a,function(b){(!q||(new Date).getTime()>q+1E3)&&f.call(this,b)});return{remove:function(){b.remove();E.remove()}}}:function(e,c){return k(e,a,c)}}function F(a){do if(void 0!==a.dojoClick)return a;while(a=a.parentNode)}
function G(a,f,g){if(!l.isRight(a)){var h=F(a.target);if(e=!a.target.disabled&&h&&h.dojoClick)if(p=(n="useTarget"==e)?h:a.target,n&&a.preventDefault(),w=a.changedTouches?a.changedTouches[0].pageX-c.global.pageXOffset:a.clientX,x=a.changedTouches?a.changedTouches[0].pageY-c.global.pageYOffset:a.clientY,y=("object"==typeof e?e.x:"number"==typeof e?e:0)||4,z=("object"==typeof e?e.y:"number"==typeof e?e:0)||4,!A){a=function(b){c.doc.addEventListener(b,function(a){var d=a.target;e&&!a._dojo_click&&(new Date).getTime()<=
r+1E3&&("INPUT"!=d.tagName||!m.contains(d,"dijitOffScreen"))&&(a.stopPropagation(),a.stopImmediatePropagation&&a.stopImmediatePropagation(),"click"==b&&("INPUT"!=d.tagName||"radio"==d.type&&(m.contains(d,"dijitCheckBoxInput")||m.contains(d,"mblRadioButton"))||"checkbox"==d.type&&(m.contains(d,"dijitCheckBoxInput")||m.contains(d,"mblCheckBox")))&&"TEXTAREA"!=d.tagName&&"AUDIO"!=d.tagName&&"VIDEO"!=d.tagName&&a.preventDefault())},!0)};var v=function(b){e=n?u.isDescendant(c.doc.elementFromPoint(b.changedTouches?
b.changedTouches[0].pageX-c.global.pageXOffset:b.clientX,b.changedTouches?b.changedTouches[0].pageY-c.global.pageYOffset:b.clientY),p):e&&(b.changedTouches?b.changedTouches[0].target:b.target)==p&&Math.abs((b.changedTouches?b.changedTouches[0].pageX-c.global.pageXOffset:b.clientX)-w)<=y&&Math.abs((b.changedTouches?b.changedTouches[0].pageY-c.global.pageYOffset:b.clientY)-x)<=z};A=!0;c.doc.addEventListener(f,function(b){l.isRight(b)||(v(b),n&&b.preventDefault())},!0);c.doc.addEventListener(g,function(b){if(!l.isRight(b)&&
(v(b),e)){var a=function(a){var d=document.createEvent("MouseEvents");d._dojo_click=!0;d.initMouseEvent(a,!0,!0,b.view,b.detail,c.screenX,c.screenY,c.clientX,c.clientY,b.ctrlKey,b.altKey,b.shiftKey,b.metaKey,0,null);return d};r=(new Date).getTime();var d=n?p:b.target;"LABEL"===d.tagName&&(d=u.byId(d.getAttribute("for"))||d);var c=b.changedTouches?b.changedTouches[0]:b,f=a("mousedown"),g=a("mouseup"),h=a("click");setTimeout(function(){k.emit(d,"mousedown",f);k.emit(d,"mouseup",g);k.emit(d,"click",
h);r=(new Date).getTime()},0)}},!0);a("click");a("mousedown");a("mouseup")}}}h("ios");var f=function(){var a={},c;for(c in{down:1,move:1,up:1,cancel:1,over:1,out:1})a[c]="pointer"+c;return a}(),D=h("touch-events"),A,e,n=!1,p,w,x,y,z,r,q;h("touch")&&C(function(){c.doc.addEventListener(f.down,function(a){G(a,f.move,f.up)},!0)});t={press:g("mousedown","touchstart",f.down),move:g("mousemove","dojotouchmove",f.move),release:g("mouseup","dojotouchend",f.up),cancel:g(l.leave,"touchcancel",f.cancel),over:g("mouseover",
"dojotouchover",f.over),out:g("mouseout","dojotouchout",f.out),enter:l._eventHandler(g("mouseover","dojotouchover",f.over)),leave:l._eventHandler(g("mouseout","dojotouchout",f.out))};return B.touch=t});