!function(n,t){"undefined"!=typeof module&&module.exports?module.exports=t(require("angular")):"function"==typeof define&&define.amd?define(["angular"],t):t(n.angular)}(this,function(n){"use strict";var t,f=n.module("ngDialog",[]),i=n.element,r=n.isDefined,u=(document.body||document.documentElement).style,s=r(u.animation)||r(u.WebkitAnimation)||r(u.MozAnimation)||r(u.MsAnimation)||r(u.OAnimation),e="animationend webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend",o=!1;f.provider("ngDialog",function(){var c=this.defaults={className:"ngdialog-theme-default",plain:!1,showClose:!0,closeByDocument:!0,closeByEscape:!0,closeByNavigation:!1,appendTo:!1,preCloseCallback:!1,overlay:!0,cache:!0};this.setForceBodyReload=function(n){o=n||!1};this.setDefaults=function(t){n.extend(c,t)};var u,f=0,r=0,h={};this.$get=["$document","$templateCache","$compile","$q","$http","$rootScope","$timeout","$window","$controller",function(l,a,v,y,p,w,b,k,d){var g=l.find("body"),nt,tt;return o&&w.$on("$locationChangeSuccess",function(){g=l.find("body")}),nt={onDocumentKeydown:function(n){27===n.keyCode&&tt.close("$escape")},setBodyPadding:function(n){var t=parseInt(g.css("padding-right")||0,10);g.css("padding-right",t+n+"px");g.data("ng-dialog-original-padding",t)},resetBodyPadding:function(){var n=g.data("ng-dialog-original-padding");n?g.css("padding-right",n+"px"):g.css("padding-right","")},performCloseDialog:function(n,i){var f=n.attr("id"),o;"undefined"!=typeof k.Hammer?(o=t.hammerTime,o.off("tap",u),o.destroy&&o.destroy(),delete t.hammerTime):n.unbind("click");1===r&&g.unbind("keydown");n.hasClass("ngdialog-closing")||(r-=1);w.$broadcast("ngDialog.closing",n);r=0>r?0:r;s?(t.$destroy(),n.unbind(e).bind(e,function(){n.remove();0===r&&(g.removeClass("ngdialog-open"),nt.resetBodyPadding());w.$broadcast("ngDialog.closed",n)}).addClass("ngdialog-closing")):(t.$destroy(),n.remove(),0===r&&(g.removeClass("ngdialog-open"),nt.resetBodyPadding()),w.$broadcast("ngDialog.closed",n));h[f]&&(h[f].resolve({id:f,value:i,$dialog:n,remainingDialogs:r}),delete h[f])},closeDialog:function(t,i){var u=t.data("$ngDialogPreCloseCallback"),r;u&&n.isFunction(u)?(r=u.call(t,i),n.isObject(r)?r.closePromise?r.closePromise.then(function(){nt.performCloseDialog(t,i)}):r.then(function(){nt.performCloseDialog(t,i)},function(){}):r||nt.performCloseDialog(t,i)):nt.performCloseDialog(t,i)}},tt={open:function(e){function it(n,t){return p.get(n,t||{}).then(function(n){return n.data||""})}function ft(t){return t?n.isString(t)&&o.plain?t:"boolean"!=typeof o.cache||o.cache?a.get(t)||it(t,{cache:!0}):it(t,{cache:!1}):"Empty template"}var l=this,o=n.copy(c),rt,s,ut;return e=e||{},n.extend(o,e),f+=1,l.latestID="ngdialog"+f,h[l.latestID]=rt=y.defer(),t=n.isObject(o.scope)?o.scope.$new():w.$new(),y.when(ft(o.template||o.templateUrl)).then(function(e){var c,y,h,p;if((a.put(o.template||o.templateUrl,e),o.showClose&&(e+='<div class="ngdialog-close"><\/div>'),l.$result=s=i('<div id="ngdialog'+f+'" class="ngdialog"><\/div>'),s.html(o.overlay?'<div class="ngdialog-overlay"><\/div><div class="ngdialog-content">'+e+"<\/div>":'<div class="ngdialog-content">'+e+"<\/div>"),o.data&&n.isString(o.data))?(c=o.data.replace(/^\s*/,"")[0],t.ngDialogData="{"===c||"["===c?n.fromJson(o.data):o.data):o.data&&n.isObject(o.data)&&(t.ngDialogData=o.data),o.controller&&(n.isString(o.controller)||n.isArray(o.controller)||n.isFunction(o.controller))&&(y=d(o.controller,{$scope:t,$element:s}),s.data("$ngDialogControllerController",y)),(o.className&&s.addClass(o.className),ut=o.appendTo&&n.isString(o.appendTo)?n.element(document.querySelector(o.appendTo)):g,o.preCloseCallback)&&(n.isFunction(o.preCloseCallback)?h=o.preCloseCallback:n.isString(o.preCloseCallback)&&t&&(n.isFunction(t[o.preCloseCallback])?h=t[o.preCloseCallback]:t.$parent&&n.isFunction(t.$parent[o.preCloseCallback])?h=t.$parent[o.preCloseCallback]:w&&n.isFunction(w[o.preCloseCallback])&&(h=w[o.preCloseCallback])),h&&s.data("$ngDialogPreCloseCallback",h)),t.closeThisDialog=function(n){nt.closeDialog(s,n)},b(function(){var i,n;v(s)(t);i=k.innerWidth-g.prop("clientWidth");g.addClass("ngdialog-open");n=i-(k.innerWidth-g.prop("clientWidth"));n>0&&nt.setBodyPadding(n);ut.append(s);o.name?w.$broadcast("ngDialog.opened",{dialog:s,name:o.name}):w.$broadcast("ngDialog.opened",s)}),o.closeByEscape&&g.bind("keydown",nt.onDocumentKeydown),o.closeByNavigation&&w.$on("$locationChangeSuccess",function(){nt.closeDialog(s)}),u=function(n){var r=o.closeByDocument?i(n.target).hasClass("ngdialog-overlay"):!1,t=i(n.target).hasClass("ngdialog-close");(r||t)&&tt.close(s.attr("id"),t?"$closeButton":"$document")},"undefined"!=typeof k.Hammer){p=t.hammerTime=k.Hammer(s[0]);p.on("tap",u)}else s.bind("click",u);return r+=1,tt}),{id:"ngdialog"+f,closePromise:rt.promise,close:function(n){nt.closeDialog(s,n)}}},openConfirm:function(t){var u=y.defer(),r={closeByEscape:!1,closeByDocument:!1},f;return n.extend(r,t),r.scope=n.isObject(r.scope)?r.scope.$new():w.$new(),r.scope.confirm=function(n){u.resolve(n);var t=i(document.getElementById(f.id));nt.performCloseDialog(t,n)},f=tt.open(r),f.closePromise.then(function(n){return n?u.reject(n.value):u.reject()}),u.promise},close:function(n,t){var r=i(document.getElementById(n));return r.length?nt.closeDialog(r,t):tt.closeAll(t),tt},closeAll:function(t){var r=document.querySelectorAll(".ngdialog");n.forEach(r,function(n){nt.closeDialog(i(n),t)})},getDefaults:function(){return c}},tt}]});f.directive("ngDialog",["ngDialog",function(t){return{restrict:"A",scope:{ngDialogScope:"="},link:function(i,r,u){r.on("click",function(r){var e,f;r.preventDefault();e=n.isDefined(i.ngDialogScope)?i.ngDialogScope:"noScope";n.isDefined(u.ngDialogClosePrevious)&&t.close(u.ngDialogClosePrevious);f=t.getDefaults();t.open({template:u.ngDialog,className:u.ngDialogClass||f.className,controller:u.ngDialogController,scope:e,data:u.ngDialogData,showClose:"false"===u.ngDialogShowClose?!1:"true"===u.ngDialogShowClose?!0:f.showClose,closeByDocument:"false"===u.ngDialogCloseByDocument?!1:"true"===u.ngDialogCloseByDocument?!0:f.closeByDocument,closeByEscape:"false"===u.ngDialogCloseByEscape?!1:"true"===u.ngDialogCloseByEscape?!0:f.closeByEscape,preCloseCallback:u.ngDialogPreCloseCallback||f.preCloseCallback})})}}}])})