define(["angular","jquery","jquery.ripple","jquery.vclick"],(function(e,t,n){!function(e,r,o){if(void 0===r)throw Error("angular-jqev: AngularJS is undefined but is necessary.");if(void 0===t)throw Error("angular-jqev: jQuery is undefined but is necessary.");var i=r.module("hmTouchEvents",[]),a=[],s=function(e){var t=o(e);t.on("touchstart",l),t.on("touchend touchcancel",u),a.push(e)},c=function(e){var t=o(e);t.off("touchstart",l),t.off("touchend touchcancel",u),t.removeClass("mob");var n=a.indexOf(e);n>-1&&a.splice(n,1)},l=function(e){if(!(e.originalEvent.type.indexOf("mouse")>-1)){var t=this;setTimeout((function(){p||(o(t).addClass("mob"),e.originalEvent.type.indexOf("mouse")<0?o(t).addClass("touch"):o(t).removeClass("touch"))}))}},u=function(){var e=this;setTimeout((function(){o(e).removeClass("touch")}),80)},p=!1;o(e).on("scrollstart",(function(){for(var e in p=!0,a)o(a[e]).removeClass("touch")})),o(e).on("scrollstop",(function(){p=!1})),o(e).on("scrollend",(function(){p=!1})),o(document).on("touchend touchcancel",(function(){for(var e in a)setTimeout((function(){o(a[e]).removeClass("touch")}),80)})),r.forEach(["hmTap:vclick","vClick:vclick","vMouseover:vmouseover","vMouseout:vmouseout","vMousedown:vmousedown"],(function(e){var t=e.split(":"),a=t[0],l=t[1];i.directive(a,["$parse","$window","$viewport","$timeout",function(e,t,i,u){return{restrict:"A",scope:!1,priority:1,link:function(t,p,f){var m=function(n){n.element=p;var r=e(f[a]).bind(null,t);if(h.ripple||h.delay){function o(){n.isPropagationStopped()||r({$event:n,$element:p})}"delay"in h&&!h.delay?(o(),n.isPropagationStopped()||(t.$$phase?t.$applyAsync(c):t.$apply())):u(o,h.delay||100)}else if(!n.isPropagationStopped()){var i;if(n.target&&n.target.tagName){var s=n.target.tagName.toLowerCase();i="label"==s||"input"==s}if(i||h.direct){var c=function(){r({$event:n,$element:p})};t.$$phase?t.$applyAsync(c):(c(),t.$apply())}else t.$applyAsync((function(){r({$event:n,$element:p})}))}},v=f.hmOptions&&r.isObject(t.$eval(f.hmOptions))?t.$eval(f.hmOptions):{},d=i.data("android"),h=r.extend({normal:!1,ripple:d,delay:d?100:0},v);d&&"androiddelay"in h&&(h.delay=h.androiddelay);var $=h.normal&&"vclick"==l?"click":l;if(p&&p.length>0){c(p),"vclick"==$&&(h.ripple?(n.add(p,"center"==h.ripple),p.addClass("a-ripple")):s(p)),o(p).on($,m);var g=function(){o(p).off($,m),"vclick"==$&&(c(p),h.ripple&&(n.remove(p),p.removeClass("a-ripple")))};t.$on("$destroy",g),p.one("$destroy",g)}}}}])})),i.directive("hmUrl",["$parse","$httpParamSerializer","$timeout",function(t,n,r){return{restrict:"A",scope:!1,link:function(o,i,a){var s=t(a.hmUrlClicked).bind(null,o),c=t(a.hmUrlIntercept).bind(null,o),l=t(a.hmUrlChange).bind(null,o),u=o.$eval(a.hmUrl),p=function(e){e.preventDefault()};o.$on("$destroy",(function(){i.off("vclick").off("click",p)})),i.one("$destroy",(function(){i.off("vclick").off("click",p)})),i.on("vclick",(function(t){var r=o.$eval(a.hmUrlParams),l=i.attr("href")||"",p=i.attr("target")||"_parent";if(r){r=n(r);var f,m=l;l.indexOf("#")>-1&&(f=(m=l.split("#"))[1],l=m[0]),r&&(l.indexOf("?")>-1?l+="&"+r:l+="?"+r),f&&(l+="#"+f)}try{t.preventDefault()}catch(e){}u&&t.stopPropagation(),o.$applyAsync((function(){var n=c({$link:l});("boolean"!=typeof n||n)&&(s({$event:t,$url:l}),e.open(l,p))}))})).on("click",p),a.hmUrlChange&&"ngHref"in a&&o.$watch((function(e){return a.ngHref}),(function(e){r((function(){var t=l({$url:e});i.attr("href",t)}))}))}}}]),i.directive("hmHighlight",["$viewport",function(e){return{restrict:"A",scope:!1,priority:1,link:function(t,o,i){var a=i.hmHighlight&&r.isObject(t.$eval(i.hmHighlight))?t.$eval(i.hmHighlight):{},l=r.extend({ripple:e.data("android")},a);s(o),l.ripple?n.add(o,"center"==l.ripple):s(o),t.$on("$destroy",(function(){l.ripple?n.remove(o):c(o)})),o.one("$destroy",(function(){l.ripple?n.remove(o):c(o)}))}}}]).directive("hmSwipeRemove",["$parse","$animateCss","$document",function(t,n,o){return{restrict:"A",scope:!1,link:function(n,i,a){var s,c=t(a.hmSwipeRemove).bind(null,n),l=r.merge({direction:"right",enabled:!0,minspeed:180,maxspeed:100},n.$eval(a.hmSwipeRemoveOptions)),u=i,p={x:0,perc:0,prev:!1,prevent:!1},f={},m=l.enabled,v=l.direction,d=l.maxspeed,h=l.maxspeed;if(m){var $,g,y=!1,w=function(e){e.stopPropagation()},b=0,x=function(t){if(s&&!(Math.abs(t.clientX-f.startX)<30))if(Math.abs(t.clientY-f.startY)>=25&&!f.started)o.off("vmousemove",x);else{f.started=!0,t.preventDefault(),s.removeClass("reset"),s.addClass("grab"),r.element(e).trigger("scrollstart");var n=t.clientX;p.prev||(p.prev=n),p.x+=n-p.prev,p.perc=100*p.x/e.innerWidth,"left"==v?(p.x>0&&(p.x=0),p.perc>0&&(p.perc=0)):(p.x<0&&(p.x=0),p.perc<0&&(p.perc=0)),s.css({transform:"translate3d("+p.perc+"%,0,0)","-webkit-transform":"translate3d("+p.perc+"%,0,0)"}),clearTimeout($),y="left"==v?n<p.prev:n>p.prev,$=setTimeout((function(){y=!1}),200),b||(b=(new Date).getTime()),g=setTimeout((function(){b=(new Date).getTime()}),h),p.prev=n}},C=function(e){clearTimeout(g),o.off("vmousemove",x);var t=(new Date).getTime(),r=Math.max(0,h-Math.round(100*(t-b))/100);if(f.started){if(s){s.removeClass("grab");var i="left"==v?-100:100,a=function(e){var t=Math.max(h,e||Math.min(d,r));s.animate3({translate3d:i+"%,0,0"},{duration:t,complete:function(){u.css({"transition-duration":"0s","-webkit-transition-duration":"0s"}),n.$applyAsync((function(){c()})),setTimeout((function(){u.css({transform:"","-webkit-transform":"","transition-duration":"","-webkit-transition-duration":""})}))}})};"left"==v&&p.perc>-70||"right"==v&&p.perc<70?(s.removeClass("grab reset"),y?a():s.animate3({translate3d:"0%,0,0"},{duration:d,complete:function(){u.css({transform:"","-webkit-transform":""})}}),p.perc=0,p.x=0,p.prev=0):(a(d),s.removeClass("grab reset"),l.keep||s.triggerHandler("$destroy")),u.oneFirst("click",w),s=!1}f.started=!1}},k=function(){l["max-window-size"];var t=e.innerWidth;T=t<=880},T=!0;u.addClass("touch-element-swipeh-cl"),u.on("vmousedown",(function(e){if(!T)return!0;e.button&&2==e.button||(s=u,u.off("click",w),o.on("vmousemove",x),f.startX=e.clientX,f.startY=e.clientY)})),u.on("vmouseup",C),o.on("vmouseup",C),u.on("$destroy",(function(){u.off("vmousedown").off("vmouseup"),o.off("vmouseup",C).off("vmousemove",x),u.removeClass("grab reset").removeClass("touch-element-swipeh-cl"),r.element(e).off("resize",k)})),l["max-window-size"]&&(r.element(e).on("resize",k),k()),n.$on("$destroy",(function(){u.triggerHandler("$destroy"),r.element(e).off("resize",k)}))}}}}]).directive("hmSwipe",["$parse","$animateCss","$document",function(t,n,o){return{restrict:"A",scope:!1,link:function(n,i,a){var s,c=t(a.hmSwipe).bind(null,n),l=t(a.hmSwipeThreshold).bind(null,n),u=t(a.hmSwipeThresholdReset).bind(null,n),p=t(a.hmSwipeStart).bind(null,n),f=t(a.hmSwipeEnd).bind(null,n),m=r.merge({direction:"both",enabled:!0,minspeed:180,maxspeed:100,threshold:70},n.$eval(a.hmSwipeOptions)),v=i,d={x:0,perc:0,prev:!1,prevent:!1},h={},$=m.enabled,g=m.direction,y=(m.maxspeed,m.maxspeed);if(!$)return!1;var w,b,x=!1,C=function(e){e.stopPropagation()},k=0,T=function(t){if(s&&!(Math.abs(t.clientX-h.startX)<30))if(Math.abs(t.clientY-h.startY)>=25&&!h.started)o.off("vmousemove",T);else{h.started||n.$applyAsync((function(){p({$event:t})})),h.started=!0,t.preventDefault(),s.removeClass("reset"),s.addClass("grab"),r.element(e).trigger("scrollstart");var i=t.clientX;d.prev||(d.prev=i),d.x+=i-d.prev,d.perc=100*d.x/e.innerWidth,"left"==g?(d.x>0&&(d.x=0),d.perc>0&&(d.perc=0)):"right"==g&&(d.x<0&&(d.x=0),d.perc<0&&(d.perc=0)),n.$applyAsync((function(){c({$event:t,$moved:d.perc})})),clearTimeout(w),x="left"==g?i<d.prev:"right"==g?i>d.prev:i!=d.prev,w=setTimeout((function(){x=!1}),200),k||(k=(new Date).getTime()),b=setTimeout((function(){k=(new Date).getTime()}),y),d.prev=i}},A=function(e){clearTimeout(b),o.off("vmousemove",T);var t=(new Date).getTime();Math.max(0,y-Math.round(100*(t-k))/100);h.started&&(s&&(s.removeClass("grab"),"left"==g&&d.perc>-1*m.threshold||"right"==g&&d.perc<m.threshold?(s.removeClass("grab reset"),x?n.$applyAsync((function(){l({$event:e,$moved:d.perc})})):n.$applyAsync((function(){u({$event:e,$moved:d.perc})})),d.perc=0,d.x=0,d.prev=0):(s.removeClass("grab reset"),n.$applyAsync((function(){l({$event:e,$moved:d.perc})}))),v.oneFirst("click",C),s=!1),h.started=!1,n.$applyAsync((function(){f({$event:e})})))},S=function(){var t=m["max-window-size"],n=e.innerWidth;M=!t||n<=t},M=!0;v.addClass("touch-element-swipeh-cl"),v.on("vmousedown",(function(e){if(!M)return!0;e.button&&2==e.button||(s=v,v.off("click",C),o.on("vmousemove",T),h.startX=e.clientX,h.startY=e.clientY)})),v.on("vmouseup",A),o.on("vmouseup",A),v.on("$destroy",(function(){v.off("vmousedown").off("vmouseup"),o.off("vmouseup",A).off("vmousemove",T),v.removeClass("grab reset").removeClass("touch-element-swipeh-cl"),r.element(e).off("resize",S)})),m["max-window-size"]&&(r.element(e).on("resize",S),S()),n.$on("$destroy",(function(){v.triggerHandler("$destroy"),r.element(e).off("resize",S)}))}}}])}(window,e,t)}));