"use strict";if("undefined"==typeof jQuery)throw new Error("angular-confirm requires jQuery");if("undefined"==typeof angular)throw new Error("angular-confirm requires Angular");angular.module("cp.ngConfirm",[]).service("$ngConfirmTemplate",function(){this.default='<div class="ng-confirm"><div class="ng-confirm-bg ng-confirm-bg-h"><\/div><div class="ng-confirm-scrollpane"><div class="ng-bs3-container"><div class="ng-bs3-row"><div class="ng-confirm-box-p"><div class="ng-confirm-box" role="dialog" aria-labelledby="labelled" tabindex="-1"><div class="ng-confirm-closeIcon"><\/div><div class="ng-confirm-title-c"><span class="ng-confirm-icon-c"><i><\/i><\/span><span class="ng-confirm-title"><\/span><\/div><div class="ng-confirm-content-pane"><div class="ng-confirm-content"><\/div><\/div><div class="ng-confirm-buttons"><\/div><div class="ng-confirm-clear"><\/div><\/div><\/div><\/div><\/div><\/div><\/div>'}).service("$ngConfirmDefaults",function(){return{title:"Hello",titleClass:"",type:"default",typeAnimated:!0,content:"Are you sure to continue?",contentUrl:!1,defaultButtons:{ok:function(){}},icon:"",theme:"white",bgOpacity:null,animation:"zoom",closeAnimation:"scale",animationSpeed:400,animationBounce:1.2,scope:!1,escapeKey:!1,rtl:!1,buttons:{},container:"body",containerFluid:!1,backgroundDismiss:!1,backgroundDismissAnimation:"shake",alignMiddle:!0,offsetTop:50,offsetBottom:50,autoClose:!1,closeIcon:null,closeIconClass:!1,columnClass:"small",boxWidth:"50%",useBootstrap:!0,bootstrapClasses:{container:"container",containerFluid:"container-fluid",row:"row"},onScopeReady:function(){},onReady:function(){},onOpenBefore:function(){},onOpen:function(){},onClose:function(){},onDestroy:function(){},onAction:function(){}}}).service("$ngConfirm",["$rootScope","$ngConfirmDefaults","$ngConfirmBase",function(n,t,i){return function(n,r,u){return"string"==typeof n&&(n={content:n,buttons:t.defaultButtons},n.title="string"==typeof r?r||!1:!1,"object"==typeof r&&(n.scope=r),"object"==typeof u&&(n.scope=u)),"undefined"==typeof n&&(n={}),n=angular.extend({},t,n),new i(n)}}]).factory("$ngConfirmBase",["$rootScope","$ngConfirmDefaults","$timeout","$compile","$ngConfirmTemplate","$interval","$templateRequest","$log","$q",function(n,t,i,r,u,f,e,o,s){var h=function(n){angular.extend(this,n);this._init()};return h.prototype={_init:function(){this._lastFocused=angular.element("body").find(":focus");this._id=Math.round(999999*Math.random());this.open()},_providedScope:!1,_prepare:function(){var t=this,i,r,f;this.$el=angular.element(u.default);t.scope?this._providedScope=!0:(this._providedScope=!1,t.scope=n.$new());"function"==typeof this.onScopeReady&&this.onScopeReady.apply(this,[this.scope]);this.$confirmBox=this.$el.find(".ng-confirm-box");this.$confirmBoxParent=this.$el.find(".ng-confirm-box-p");this.$titleContainer=this.$el.find(".ng-confirm-title-c");this.$title=this.$el.find(".ng-confirm-title");this.$icon=this.$el.find(".ng-confirm-icon-c");this.$content=this.$el.find(".ng-confirm-content");this.$confirmBg=this.$el.find(".ng-confirm-bg");this.$contentPane=this.$el.find(".ng-confirm-content-pane");this.$closeIcon=this.$el.find(".ng-confirm-closeIcon");this.$bs3Container=this.$el.find(".ng-bs3-container");this.$buttonContainer=this.$el.find(".ng-confirm-buttons");this.$scrollPane=this.$el.find(".ng-confirm-scrollpane");i="ng-confirm-box"+this._id;(this.$confirmBox.attr("aria-labelledby",i),this.$content.attr("id",i),this._setAnimationClass(this.animation),this.setDismissAnimation(this.backgroundDismissAnimation),this.setTheme(this.theme),this.setType(this.type),this._setButtons(this.buttons),this.setCloseIcon(this.closeIcon),this.setCloseIconClass(this.closeIconClass),this.setTypeAnimated(this.typeAnimated),this.useBootstrap?(this.setColumnClass(this.columnClass),this.$el.find(".ng-bs3-row").addClass(this.bootstrapClasses.row).addClass("justify-content-md-center justify-content-sm-center justify-content-xs-center justify-content-lg-center"),this.setContainerFluid(this.containerFluid)):this.setBoxWidth(this.boxWidth),this.setTitleClass(this.titleClass),this.setTitle(this.title),this.setIcon(this.icon),this.setBgOpacity(this.bgOpacity),this.setRtl(this.rtl),this._contentReady=s.defer(),this._modalReady=s.defer(),s.all([this._contentReady.promise,this._modalReady.promise]).then(function(){t.isAjax&&(t.setContent(t.content),t.loading(!1));"function"==typeof t.onReady&&t.onReady.apply(t,[t.scope])}),this.contentUrl)?(this.loading(!0),this.isAjax=!0,r=this.contentUrl,"function"==typeof this.contentUrl&&(r=this.contentUrl()),this.isAjaxLoading=!0,e(r).then(function(n){t.content=n;t._contentReady.resolve();t.isAjaxLoading=!1},function(){t.content="";t._contentReady.resolve();t.isAjaxLoading=!1})):(f=this.content,"function"==typeof this.content&&(f=this.content()),this.content=f,this.setContent(this.content),this._contentReady.resolve());"none"==this.animation&&(this.animationSpeed=1,this.animationBounce=1);this.$confirmBg.css(this._getCSS(this.animationSpeed,1))},isAjax:!1,isAjaxLoading:!1,isLoading:!1,_hideClass:"ng-confirm-el-hide",_loadingClass:"ng-confirm-loading",loading:function(n){this.isLoading=n;n?this.$confirmBox.addClass(this._loadingClass):this.$confirmBox.removeClass(this._loadingClass)},setContent:function(n){if(!this.$content)return void o.error("Attempted to set content before $content is defined");n="<div>"+n+"<\/div>";var t=r(n)(this.scope);this.$content.append(t)},_typeList:["default","blue","green","red","orange","purple","dark"],_typePrefix:"ng-confirm-type-",_pSetType:"",setType:function(n){if(this._typeList.indexOf(n.toLowerCase())==-1)return o.warn("Invalid dialog type: "+n),!1;var t=this._typePrefix+n;this.$el.removeClass(this._pSetType).addClass(t);this._pSetType=t},_setTypeAnimatedClass:"ng-confirm-type-animated",setTypeAnimated:function(n){n?this.$confirmBox.addClass(this._setTypeAnimatedClass):this.$confirmBox.removeClass(this._setTypeAnimatedClass)},_pTitleClass:"",setTitleClass:function(n){this.$titleContainer.removeClass(this._pTitleClass).addClass(n);this._pTitleClass=n},setBoxWidth:function(n){return this.useBootstrap?void o.warn("Cannot set boxWidth as useBootstrap is set to true. use columnClass instead."):void this.$confirmBox.css("width",n)},setContainerFluid:function(n){return this.useBootstrap?(n?this.$bs3Container.removeClass(this.bootstrapClasses.container).addClass(this.bootstrapClasses.containerFluid):this.$bs3Container.removeClass(this.bootstrapClasses.containerFluid).addClass(this.bootstrapClasses.container),void(this.containerFluid=n)):void o.warn("Cannot set containerFluid as useBootstrap is set to false.")},_pSetColumnClass:"",setColumnClass:function(n){if(!this.useBootstrap)return void o.warn("Cannot set columnClass as useBootstrap is set to false, use bixWidth instead");n=n.toLowerCase();var t;switch(n){case"xl":case"xlarge":t="col-md-12";break;case"l":case"large":t="col-md-8 col-md-offset-2";break;case"m":case"medium":t="col-md-6 col-md-offset-3";break;case"s":case"small":t="col-md-4 col-md-offset-4 col-sm-6 col-sm-offset-3 col-xs-10 col-xs-offset-1";break;case"xs":case"xsmall":t="col-md-2 col-md-offset-5";break;default:t=n}this.$confirmBoxParent.removeClass(this._pSetColumnClass).addClass(t);this._pSetColumnClass=t},setIcon:function(n){"function"==typeof n&&(n=n());n?(this.$icon.html(angular.element("<i><\/i>").addClass(n)),this.$icon.removeClass(this._hideClass)):this.$icon.addClass(this._hideClass);this.icon||this.title?this.$titleContainer.removeClass(this._hideClass):this.$titleContainer.addClass(this._hideClass);this.icon=n},setTitle:function(n){"function"==typeof n&&(n=n());n?(this.$title.html(n),this.$title.removeClass(this._hideClass)):this.$title.addClass(this._hideClass);this.icon||this.title?this.$titleContainer.removeClass(this._hideClass):this.$titleContainer.addClass(this._hideClass);this.title=n},setCloseIcon:function(n){0==this._buttonCount&&null==n&&(n=!0);n?this.$closeIcon.removeClass(this._hideClass):this.$closeIcon.addClass(this._hideClass);this.closeIcon=n},setCloseIconClass:function(n){var t;t=n?angular.element("<i><\/i>").addClass(this.closeIconClass):angular.element("<span>&times;<\/span>").addClass(this.closeIconClass);this.$closeIcon.html(t);this.closeIconClass=n},_animationPrefix:"ng-confirm-animation-",_pSetAnimation:"",_setAnimationClass:function(n){var t=this._prefixThis(n,this._animationPrefix);this.$confirmBox.removeClass(this._pSetAnimation).addClass(t);this._pSetAnimation=t},_removeAnimationClass:function(){this.$confirmBox.removeClass(this._pSetAnimation);this._pSetAnimation=""},_bgDismissPrefix:"ng-confirm-hilight-",_pSetDismissAnimation:"",setDismissAnimation:function(n){var t=this._prefixThis(n,this._bgDismissPrefix);this.$confirmBox.removeClass(this._pSetDismissAnimation).addClass(t);this._pSetDismissAnimation=t},_prefixThis:function(n,t){return n=n.split(","),angular.forEach(n,function(i,r){i.indexOf(t)==-1&&(n[r]=t+i.trim())}),n.join(" ").toLowerCase()},_setButtons:function(n){var t=this;"object"!=typeof n&&(n={});angular.forEach(n,function(i,r){"function"==typeof i&&(n[r]=i={action:i});n[r].text=i.text||r;n[r].btnClass=i.btnClass||"btn-default";n[r].action=i.action||angular.noop;n[r].keys=i.keys||[];n[r].disabled=i.disabled||!1;"undefined"==typeof i.show&&(i.show=!0);n[r].show=i.show;angular.forEach(n[r].keys,function(t,i){n[r].keys[i]=t.toLowerCase()});var u=angular.element('<button type="button" class="btn"><span class="ng-confirm-btn-text"><\/span><\/button>');n[r].setText=function(n){u.find(".ng-confirm-btn-text").html(n)};n[r].setBtnClass=function(t){u.removeClass(n[r].btnClass).addClass(t);n[r].btnClass=t};n[r].setDisabled=function(t){t?u.attr("disabled","disabled"):u.removeAttr("disabled");n[r].disabled=t};n[r].setShow=function(i){i?u.removeClass(t._hideClass):u.addClass(t._hideClass);n[r].show=i};n[r].setText(n[r].text);n[r].setBtnClass(n[r].btnClass);n[r].setDisabled(n[r].disabled);n[r].setShow(n[r].show);u.click(function(n){n.preventDefault();t.triggerButton(r)});n[r].el=u;t.$buttonContainer.append(u)});this.buttons=n;this._buttonCount=Object.keys(n).length},_buttonCount:0,_themePrefix:"ng-confirm-",_pSetTheme:"",setTheme:function(n){var t=this._prefixThis(n,this._themePrefix);this.$el.removeClass(this._pSetTheme).addClass(t);this._pSetTheme=t},_rtlClass:"ng-confirm-rtl",setRtl:function(n){n?this.$el.addClass(this._rtlClass):this.$el.removeClass(this._rtlClass);this.rtl=n},setBgOpacity:function(n){this.$confirmBg.css("opacity",n);this.bgOpacity=n},_cubic_bezier:"0.36, 0.55, 0.19",_getCSS:function(n,t){return{"-webkit-transition-duration":n/1e3+"s","transition-duration":n/1e3+"s","-webkit-transition-timing-function":"cubic-bezier("+this._cubic_bezier+", "+t+")","transition-timing-function":"cubic-bezier("+this._cubic_bezier+", "+t+")"}},_hash:function(n){var r=n.toString(),t=0,i,u;if(0==r.length)return t;for(i=0;i<r.length;i++)u=r.toString().charCodeAt(i),t=(t<<5)-t+u,t&=t;return t},_digestWatchUnRegister:!1,_bindEvents:function(){var n=this;this._digestWatchUnRegister=this.scope.$watch(function(){n.setDialogCenter("Digest watcher")});this.$closeIcon.on("click."+n._id,function(){n._closeClick()});angular.element(window).on("resize."+n._id,function(){n.setDialogCenter("Window Resize")});angular.element(window).on("keyup."+n._id,function(t){n._reactOnKey(t)});this.$scrollPane.on("click",function(){n._scrollPaneClick()});this.$confirmBox.on("click",function(){n.boxClicked=!0})},_unBindEvents:function(){angular.element(window).off("resize."+this._id);angular.element(window).off("keyup."+this._id);this.$closeIcon.off("click."+this._id);this._digestWatchUnRegister&&this._digestWatchUnRegister()},_reactOnKey:function(n){var f=this,u=angular.element(".ng-confirm"),i,r,t;if(u.eq(u.length-1)[0]!==this.$el[0])return!1;i=n.which;$(this.$el).find(":input").is(":focus")&&/13|32/.test(i)||(r=this._getKey(i),"esc"===r&&this.escapeKey&&(1==this.escapeKey?this._scrollPaneClick():("string"==typeof this.escapeKey||"function"==typeof this.escapeKey)&&(t=!1,t="function"==typeof this.escapeKey?this.escapeKey():this.escapeKey,t&&(angular.isDefined(this.buttons[t])?this._buttonClick(t):o.warn("Invalid escapeKey, no buttons found with name "+t)))),angular.forEach(this.buttons,function(n,t){n.keys.indexOf(r)!=-1&&f._buttonClick(t)}))},_scrollPaneClick:function(){var n,t,i,r;if(this.boxClicked)return this.boxClicked=!1,!1;t=!1;i=!1;(n="function"==typeof this.backgroundDismiss?this.backgroundDismiss():this.backgroundDismiss,"string"==typeof n&&angular.isDefined(this.buttons[n])?(t=n,i=!1):i="undefined"==typeof n||1==!!n,t)&&(r=this.buttons[t].action.apply(this,[this.scope,this.buttons[t]]),i="undefined"==typeof r||!!r);i?this.close():this.hiLightModal()},_closeClick:function(){var n,t=!1,i=!1,r;(n="function"==typeof this.closeIcon?this.closeIcon():this.closeIcon,"string"==typeof n&&angular.isDefined(this.buttons[n])?(t=n,i=!1):i="undefined"==typeof n||1==!!n,t)&&(r=this.buttons[t].action.apply(this,[this.scope,this.buttons[t]]),i="undefined"==typeof r||1==!!r);i&&this.close()},_hilightAnimating:!1,_hilightClass:"ng-confirm-hilight",hiLightModal:function(){var n=this;this._hilightAnimating||(this._hilightAnimating=!0,this.$confirmBox.addClass(this._hilightClass),setTimeout(function(){n._hilightAnimating=!1;n.$confirmBox.removeClass(n._hilightClass)},this.animationSpeed))},_buttonClick:function(n){var t=this.buttons[n].action.apply(this,[this.scope,this.buttons[n]]);return"function"==typeof this.onAction&&this.onAction.apply(this,[this.scope,n]),"undefined"==typeof t||t?this.close():this.scope.$apply(),t},triggerButton:function(n){return this._buttonClick(n)},setDialogCenter:function(n){var i,r,u,f,e,h;n=n||"n/a";var o=this.$content,t=o.outerHeight(),c=this.$contentPane.outerHeight(),s=o.children();0!=s.length&&(i=parseInt(s.eq(0).css("margin-top")),i&&(t+=i));r=angular.element(window).height();u=this.$confirmBox.outerHeight();0!=u&&(e=u-c+t,h=this.offsetTop+this.offsetBottom,e>r-h||!this.alignMiddle?(f={"margin-top":this.offsetTop,"margin-bottom":this.offsetBottom},angular.element("body").addClass("ng-confirm-no-scroll-"+this._id)):(f={"margin-top":(r-e)/2,"margin-bottom":0},angular.element("body").removeClass("ng-confirm-no-scroll-"+this._id)),this.$contentPane.css({height:t}).scrollTop(0),this.$confirmBox.css(f))},_getKey:function(n){switch(n){case 192:return"tilde";case 13:return"enter";case 16:return"shift";case 9:return"tab";case 20:return"capslock";case 17:return"ctrl";case 91:return"win";case 18:return"alt";case 27:return"esc"}var t=String.fromCharCode(n);return!!/^[A-z0-9]+$/.test(t)&&t.toLowerCase()},open:function(){var n=this;return this._prepare(),i(function(){n._open()},100),!0},_open:function(){var n=this;"function"==typeof this.onOpenBefore&&this.onOpenBefore.apply(this,[this.scope]);angular.element(this.container).append(this.$el);n.setDialogCenter("_open");setTimeout(function(){n.$contentPane.css(n._getCSS(n.animationSpeed,1));n.$confirmBox.css(n._getCSS(n.animationSpeed,n.animationBounce));n._removeAnimationClass();n.$confirmBg.removeClass("ng-confirm-bg-h");n.$confirmBox.focus();setTimeout(function(){n._bindEvents();n.$confirmBox.css(n._getCSS(n.animationSpeed,1));n._modalReady.resolve();"function"==typeof n.onOpen&&n.onOpen.apply(n,[n.scope]);n._startCountDown()},n.animationSpeed)},100)},_autoCloseKey:!1,_autoCloseInterval:0,_startCountDown:function(){var n=this,t,u,i,r;if("string"==typeof this.autoClose){if(t=this.autoClose.split("|"),2!=t.length)return void o.error("Invalid option for autoClose. example 'close|10000'");if(this._autoCloseKey=t[0],u=t[1],i=u/1e3,!angular.isDefined(this.buttons[this._autoCloseKey]))return void o.error('Auto close button "'+n._autoCloseKey+'" not defined.');r=angular.element('<span class="ng-confirm-timer"><\/span>');this.buttons[this._autoCloseKey].el.append(r);this._autoCloseInterval=setInterval(function(){var t=i?" ("+--i+")":"";r.html(t);i<1&&(n._stopCountDown(),n._buttonClick(n._autoCloseKey))},1e3)}},_stopCountDown:function(){this._autoCloseInterval&&clearInterval(this._autoCloseInterval)},closed:!1,isClosed:function(){return this.closed},isOpen:function(){return!this.closed},close:function(){var n=this,t;return"function"==typeof this.onClose&&this.onClose.apply(this,[this.scope]),this._unBindEvents(),this._stopCountDown(),this._setAnimationClass(this.closeAnimation),this.$confirmBg.addClass("ng-confirm-bg-h"),t=.4*this.animationSpeed,setTimeout(function(){n.$el.remove();n.closed=!0;n._providedScope||n.scope.$destroy();"function"==typeof n.onDestroy&&n.onDestroy.apply(n,[n.scope]);angular.element("body").removeClass("ng-confirm-no-scroll-"+n._id);n._lastFocused.focus();n=void 0},t),!0}},h}])