!function(e){"use strict";function a(){return"ondrag"in document.createElement("a")}function n(e){e.originalEvent&&(e.dataTransfer=e.originalEvent.dataTransfer),"undefined"!=typeof e.dataTransfer&&"none"===e.dataTransfer.dropEffect&&("copy"===e.dataTransfer.effectAllowed||"move"===e.dataTransfer.effectAllowed?e.dataTransfer.dropEffect=e.dataTransfer.effectAllowed:"copyMove"!==e.dataTransfer.effectAllowed&&"copymove"!==e.dataTransfer.effectAllowed||(e.dataTransfer.dropEffect=e.ctrlKey?"copy":"move"))}if(!a())return void e.module("ang-drag-drop",[]);var r=e.module("ang-drag-drop",[]);r.directive("uiDraggable",["$parse","$rootScope","$dragImage",function(a,r,t){return function(o,d,i){function f(e){e.originalEvent&&(e.dataTransfer=e.originalEvent.dataTransfer),setTimeout(function(){d.unbind("$destroy",f)},0);var t=i.dragChannel||"defaultchannel";if(r.$broadcast("ANGULAR_DRAG_END",e,t),n(e),e.dataTransfer&&"none"!==e.dataTransfer.dropEffect){if(i.onDropSuccess){var s=a(i.onDropSuccess);o.$evalAsync(function(){s(o,{$event:e})})}}else if(e.dataTransfer&&"none"===e.dataTransfer.dropEffect&&i.onDropFailure){var l=a(i.onDropFailure);o.$evalAsync(function(){l(o,{$event:e})})}d.removeClass(c)}function s(n,r){var t;n.originalEvent&&(n.dataTransfer=n.originalEvent.dataTransfer),t=a(r),o.$apply(function(){var a,r=t(o,{$event:n});r&&e.isString(r)&&(a=document.getElementById(r),a&&n.dataTransfer.setDragImage(a,0,0))})}function l(n){n.originalEvent&&(n.dataTransfer=n.originalEvent.dataTransfer);var l=!v||u.classList.contains(g);if(l){var p=i.dragChannel||"defaultchannel",$="";i.drag&&($=o.$eval(i.drag));var m=i.dragImage||null;d.addClass(c),d.bind("$destroy",f);var D=!(document.uniqueID||window.opera);if(m&&D){var T=a(i.dragImage);o.$apply(function(){var a=T(o,{$event:n});if(a&&(e.isString(a)&&(a=t.generate(a)),a.image)){var r=a.xOffset||0,d=a.yOffset||0;n.dataTransfer.setDragImage(a.image,r,d)}})}else i.dragImageElementId&&s(n,i.dragImageElementId);var h={x:n.offsetX,y:n.offsetY},b={data:$,channel:p,offset:h},y=e.toJson(b);if(n.dataTransfer.setData("text",y),n.dataTransfer.effectAllowed="copyMove",i.onDragStart){var A=a(i.onDragStart);o.$evalAsync(function(){A(o,{$event:n})})}r.$broadcast("ANGULAR_DRAG_START",n,p,b)}else n.preventDefault()}var g,u,v=!1,c=i.draggingClass||"on-dragging";d.attr("draggable",!1),o.$watch(i.uiDraggable,function(e){e?(d.attr("draggable",e),d.bind("dragend",f),d.bind("dragstart",l)):(d.removeAttr("draggable"),d.unbind("dragend",f),d.unbind("dragstart",l))}),e.isString(i.dragHandleClass)&&(v=!0,g=i.dragHandleClass.trim()||"drag-handle",d.bind("mousedown",function(e){u=e.target}))}}]),r.directive("uiOnDrop",["$parse","$rootScope",function(a,r){return function(t,o,d){function i(e){for(var a={x:e.offsetX,y:e.offsetY},n=e.target;n!==o[0];)if(a.x=a.x+n.offsetLeft,a.y=a.y+n.offsetTop,n=n.offsetParent,!n)return null;return a}function f(e){return e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),d.uiOnDragOver&&t.$evalAsync(function(){b(t,{$event:e,$channel:p})}),!1}function s(e){if(e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),c--,0===c&&(t.$evalAsync(function(){h(t,{$event:e,$channel:p})}),o.addClass(m),o.removeClass(D)),d.uiOnDragLeave){var n=a(d.uiOnDragLeave);t.$evalAsync(function(){n(t,{$event:e,$channel:p})})}}function l(e){if(e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),0===c&&(t.$evalAsync(function(){T(t,{$event:e,$channel:p})}),o.removeClass(m),o.addClass(D)),c++,d.uiOnDragEnter){var n=a(d.uiOnDragEnter);t.$evalAsync(function(){n(t,{$event:e,$channel:p})})}r.$broadcast("ANGULAR_HOVER",$)}function g(r){r.originalEvent&&(r.dataTransfer=r.originalEvent.dataTransfer),r.preventDefault&&r.preventDefault(),r.stopPropagation&&r.stopPropagation();var f=r.dataTransfer.getData("text");f=e.fromJson(f);var s=i(r),l=s?{x:s.x-f.offset.x,y:s.y-f.offset.y}:null;n(r);var g=a(d.uiOnDrop);t.$evalAsync(function(){g(t,{$data:f.data,$event:r,$channel:f.channel,$position:l})}),o.removeClass(m),c=0}function u(e,a){if("*"===a)return!0;var n=new RegExp("(\\s|[,])+("+e+")(\\s|[,])+","i");return n.test(","+a+",")}function v(e){return e.originalEvent&&(e.dataTransfer=e.originalEvent.dataTransfer),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),e.dataTransfer.dropEffect="none",!1}var c=0,p=d.dropChannel||"defaultchannel",$="",m=d.dragEnterClass||"on-drag-enter",D=d.dragHoverClass||"on-drag-hover",T=a(d.onDragEnter),h=a(d.onDragLeave),b=a(d.uiOnDragOver),y=r.$on("ANGULAR_DRAG_START",function(e,n,r,i){$=r;var c=!0;if(u(r,p)||(c=!1),c&&d.dropValidate){var D=a(d.dropValidate);c=D(t,{$drop:{scope:t,element:o},$event:n,$data:i.data,$channel:i.channel})}c?(o.bind("dragover",f),o.bind("dragenter",l),o.bind("dragleave",s),o.bind("drop",g),o.addClass(m)):(o.bind("dragover",v),o.bind("dragenter",v),o.bind("dragleave",v),o.bind("drop",v),o.removeClass(m))}),A=r.$on("ANGULAR_DRAG_END",function(){o.unbind("dragover",f),o.unbind("dragenter",l),o.unbind("dragleave",s),o.unbind("drop",g),o.removeClass(D),o.removeClass(m),o.unbind("dragover",v),o.unbind("dragenter",v),o.unbind("dragleave",v),o.unbind("drop",v)});t.$on("$destroy",function(){y(),A()}),d.$observe("dropChannel",function(e){e&&(p=e)})}}]),r.constant("$dragImageConfig",{height:20,width:200,padding:10,font:"bold 11px Arial",fontColor:"#eee8d5",backgroundColor:"#93a1a1",xOffset:0,yOffset:0}),r.service("$dragImage",["$dragImageConfig",function(a){function n(e,a,n){var t=e.measureText(a).width;if(tn.width;)a=a.substring(0,a.length-1),t=e.measureText(a+r).width;return a+r}var r="…";this.generate=function(r,t){var o=e.extend({},a,t||{}),d=document.createElement("canvas");d.height=o.height,d.width=o.width;var i=d.getContext("2d");i.fillStyle=o.backgroundColor,i.fillRect(0,0,o.width,o.height),i.font=o.font,i.fillStyle=o.fontColor;var f=n(i,r,o);i.fillText(f,4,o.padding+4);var s=new Image;return s.src=d.toDataURL(),{image:s,xOffset:o.xOffset,yOffset:o.yOffset}}}])}(angular);