/** * angular-ui-utils - Swiss-Army-Knife of AngularJS tools (with no external dependencies!) * @version v0.0.4 - 2018-08-28 * @link http://angular-ui.github.com * @license MIT License, http://www.opensource.org/licenses/MIT */ angular.module("ui.event",[]).directive("uiEvent",["$parse",function(a){return function(b,c,d){var e=b.$eval(d.uiEvent);angular.forEach(e,function(d,e){var f=a(d);c.bind(e,function(a){var c=Array.prototype.slice.call(arguments);c=c.splice(1),f(b,{$event:a,$params:c}),b.$$phase||b.$apply()})})}}]),angular.module("ui.format",[]).filter("format",function(){return function(a,b){var c=a;if(angular.isString(c)&&void 0!==b)if(angular.isArray(b)||angular.isObject(b)||(b=[b]),angular.isArray(b)){var d=b.length,e=function(a,c){return c=parseInt(c,10),c>=0&&d>c?b[c]:a};c=c.replace(/\$([0-9]+)/g,e)}else angular.forEach(b,function(a,b){c=c.split(":"+b).join(a)});return c}}),angular.module("ui.highlight",[]).filter("highlight",function(){return function(a,b,c){return b||angular.isNumber(b)?(a=a.toString(),b=b.toString(),c?a.split(b).join(''+b+""):a.replace(new RegExp(b,"gi"),'$&')):a}}),angular.module("ui.indeterminate",[]).directive("uiIndeterminate",[function(){return{compile:function(a,b){return b.type&&"checkbox"===b.type.toLowerCase()?function(a,b,c){a.$watch(c.uiIndeterminate,function(a,c){b[0].indeterminate=!!a})}:angular.noop}}}]),angular.module("ui.inflector",[]).filter("inflector",function(){function a(a){return a.replace(/^([a-z])|\s+([a-z])/g,function(a){return a.toUpperCase()})}function b(a,b){return a.replace(/[A-Z]/g,function(a){return b+a})}var c={humanize:function(c){return a(b(c," ").split("_").join(" "))},underscore:function(a){return a.substr(0,1).toLowerCase()+b(a.substr(1),"_").toLowerCase().split(" ").join("_")},variable:function(b){return b=b.substr(0,1).toLowerCase()+a(b.split("_").join(" ")).substr(1).split(" ").join("")}};return function(a,b,d){return b!==!1&&angular.isString(a)?(b=b||"humanize",c[b](a)):a}}),angular.module("ui.jq",[]).value("uiJqConfig",{}).directive("uiJq",["uiJqConfig","$timeout",function(a,b){return{restrict:"A",compile:function(c,d){if(!angular.isFunction(c[d.uiJq]))throw new Error('ui-jq: The "'+d.uiJq+'" function does not exist');var e=a&&a[d.uiJq];return function(a,c,d){function f(){b(function(){c[d.uiJq].apply(c,g)},0,!1)}var g=[];d.uiOptions?(g=a.$eval("["+d.uiOptions+"]"),angular.isObject(e)&&angular.isObject(g[0])&&(g[0]=angular.extend({},e,g[0]))):e&&(g=[e]),d.ngModel&&c.is("select,input,textarea")&&c.bind("change",function(){c.trigger("input")}),d.uiRefresh&&a.$watch(d.uiRefresh,function(a){f()}),f()}}}}]),angular.module("ui.keypress",[]).factory("keypressHelper",["$parse",function(a){var b={8:"backspace",9:"tab",13:"enter",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"delete"},c=function(a){return a.charAt(0).toUpperCase()+a.slice(1)};return function(d,e,f,g){var h,i=[];h=e.$eval(g["ui"+c(d)]),angular.forEach(h,function(b,c){var d,e;e=a(b),angular.forEach(c.split(" "),function(a){d={expression:e,keys:{}},angular.forEach(a.split("-"),function(a){d.keys[a]=!0}),i.push(d)})}),f.bind(d,function(a){var c=!(!a.metaKey||a.ctrlKey),f=!!a.altKey,g=!!a.ctrlKey,h=!!a.shiftKey,j=a.keyCode;"keypress"===d&&!h&&j>=97&&122>=j&&(j-=32),angular.forEach(i,function(d){var i=d.keys[b[j]]||d.keys[j.toString()],k=!!d.keys.meta,l=!!d.keys.alt,m=!!d.keys.ctrl,n=!!d.keys.shift;i&&k===c&&l===f&&m===g&&n===h&&e.$apply(function(){d.expression(e,{$event:a})})})})}}]),angular.module("ui.keypress").directive("uiKeydown",["keypressHelper",function(a){return{link:function(b,c,d){a("keydown",b,c,d)}}}]),angular.module("ui.keypress").directive("uiKeypress",["keypressHelper",function(a){return{link:function(b,c,d){a("keypress",b,c,d)}}}]),angular.module("ui.keypress").directive("uiKeyup",["keypressHelper",function(a){return{link:function(b,c,d){a("keyup",b,c,d)}}}]),angular.module("ui.mask",[]).value("uiMaskConfig",{maskDefinitions:{9:/\d/,A:/[a-zA-Z]/,"*":/[a-zA-Z0-9]/}}).directive("uiMask",["uiMaskConfig",function(a){return{priority:100,require:"ngModel",restrict:"A",compile:function(){var b=a;return function(a,c,d,e){function f(a){return angular.isDefined(a)?(p(a),K?(j(),k(),!0):i()):i()}function g(a){return K?(D=n(a||""),F=m(D),e.$setValidity("mask",F),F&&D.length?o(D):void 0):a}function h(a){return K?(D=n(a||""),F=m(D),e.$viewValue=D.length?o(D):"",e.$setValidity("mask",F),""===D&&void 0!==e.$error.required&&e.$setValidity("required",!1),F?D:void 0):a}function i(){return K=!1,l(),angular.isDefined(M)?c.attr("placeholder",M):c.removeAttr("placeholder"),angular.isDefined(N)?c.attr("maxlength",N):c.removeAttr("maxlength"),c.val(e.$modelValue),e.$viewValue=e.$modelValue,!1}function j(){D=H=n(e.$modelValue||""),E=G=o(D),F=m(D);var a=F&&D.length?E:"";d.maxlength&&c.attr("maxlength",2*y[y.length-1]),c.attr("placeholder",A),c.val(a),e.$viewValue=a}function k(){L||(c.bind("blur",q),c.bind("mousedown mouseup",r),c.bind("input keyup click",t),L=!0)}function l(){L&&(c.unbind("blur",q),c.unbind("mousedown",r),c.unbind("mouseup",r),c.unbind("input",t),c.unbind("keyup",t),c.unbind("click",t),L=!1)}function m(a){return a.length?a.length>=C:!0}function n(a){var b="",c=z.slice();return a=a.toString(),angular.forEach(B,function(b){a=a.replace(b,"")}),angular.forEach(a.split(""),function(a){c.length&&c[0].test(a)&&(b+=a,c.shift())}),b}function o(a){var b="",c=y.slice();return angular.forEach(A.split(""),function(d,e){a.length&&e===c[0]?(b+=a.charAt(0)||"_",a=a.substr(1),c.shift()):b+=d}),b}function p(a){var b=0;if(y=[],z=[],A="","string"==typeof a){C=0;var c=!1;angular.forEach(a.split(""),function(a){O.maskDefinitions[a]?(y.push(b),A+="_",z.push(O.maskDefinitions[a]),b++,c||C++):"?"===a?c=!0:(A+=a,b++)})}y.push(y.slice().pop()+1),B=A.replace(/[_]+/g,"_").replace(/([^_]+)([a-zA-Z0-9])([^_])/g,"$1$2_$3").split("_"),K=y.length>1?!0:!1}function q(){I=0,J=0,F&&0!==D.length||(E="",c.val(""),a.$apply(function(){e.$setViewValue("")}))}function r(a){"mousedown"===a.type?c.bind("mouseout",s):c.unbind("mouseout",s)}function s(){J=x(this),c.unbind("mouseout",s)}function t(b){b=b||{};var d=b.which,f=b.type;if(16!==d&&91!==d){var g,h=c.val(),i=G,j=n(h),k=H,l=!1,m=v(this)||0,p=I||0,q=m-p,r=y[0],s=y[j.length]||y.slice().shift(),t=J||0,z=x(this)>0,A=t>0,B=h.length>i.length||t&&h.length>i.length-t,C=h.length=37&&40>=d&&b.shiftKey,E=37===d,F=8===d||"keyup"!==f&&C&&-1===q,K=46===d||"keyup"!==f&&C&&0===q&&!A,L=(E||F||"click"===f)&&m>r;if(J=x(this),!D&&(!z||"click"!==f&&"keyup"!==f)){if("input"===f&&C&&!A&&j===k){for(;F&&m>r&&!u(m);)m--;for(;K&&s>m&&-1===y.indexOf(m);)m++;var M=y.indexOf(m);j=j.substring(0,M)+j.substring(M+1),l=!0}for(g=o(j),G=g,H=j,c.val(g),l&&a.$apply(function(){e.$setViewValue(j)}),B&&r>=m&&(m=r+1),L&&m--,m=m>s?s:r>m?r:m;!u(m)&&m>r&&s>m;)m+=L?-1:1;(L&&s>m||B&&!u(p))&&m++,I=m,w(this,m)}}}function u(a){return y.indexOf(a)>-1}function v(a){if(void 0!==a.selectionStart)return a.selectionStart;if(document.selection){a.focus();var b=document.selection.createRange();return b.moveStart("character",-a.value.length),b.text.length}return 0}function w(a,b){if(0!==a.offsetWidth&&0!==a.offsetHeight)if(a.setSelectionRange)a.focus(),a.setSelectionRange(b,b);else if(a.createTextRange){var c=a.createTextRange();c.collapse(!0),c.moveEnd("character",b),c.moveStart("character",b),c.select()}}function x(a){return void 0!==a.selectionStart?a.selectionEnd-a.selectionStart:document.selection?document.selection.createRange().text.length:0}var y,z,A,B,C,D,E,F,G,H,I,J,K=!1,L=!1,M=d.placeholder,N=d.maxlength,O={};d.uiOptions?(O=a.$eval("["+d.uiOptions+"]"),angular.isObject(O[0])&&(O=function(a,b){for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]?angular.extend(b[c],a[c]):b[c]=angular.copy(a[c]));return b}(b,O[0]))):O=b,d.$observe("uiMask",f),e.$formatters.push(g),e.$parsers.push(h),c.bind("mousedown mouseup",r),Array.prototype.indexOf||(Array.prototype.indexOf=function(a){"use strict";if(null===this)throw new TypeError;var b=Object(this),c=b.length>>>0;if(0===c)return-1;var d=0;if(arguments.length>1&&(d=Number(arguments[1]),d!==d?d=0:0!==d&&d!==1/0&&d!==-(1/0)&&(d=(d>0||-1)*Math.floor(Math.abs(d)))),d>=c)return-1;for(var e=d>=0?d:Math.max(c-Math.abs(d),0);c>e;e++)if(e in b&&b[e]===a)return e;return-1})}}}}]),angular.module("ui.reset",[]).value("uiResetConfig",null).directive("uiReset",["uiResetConfig",function(a){var b=null;return void 0!==a&&(b=a),{require:"ngModel",link:function(a,c,d,e){var f;f=angular.element(''),c.wrap('').after(f),f.bind("click",function(c){c.preventDefault(),a.$apply(function(){d.uiReset?e.$setViewValue(a.$eval(d.uiReset)):e.$setViewValue(b),e.$render()})})}}}]),angular.module("ui.route",[]).directive("uiRoute",["$location","$parse",function(a,b){return{restrict:"AC",scope:!0,compile:function(c,d){var e;if(d.uiRoute)e="uiRoute";else if(d.ngHref)e="ngHref";else{if(!d.href)throw new Error("uiRoute missing a route or href property on "+c[0]);e="href"}return function(c,d,f){function g(b){(hash=b.indexOf("#"))>-1&&(b=b.substr(hash+1)),(j=function(){i(c,a.path().indexOf(b)>-1)})()}function h(b){(hash=b.indexOf("#"))>-1&&(b=b.substr(hash+1)),(j=function(){var d=new RegExp("^"+b+"$",["i"]);i(c,d.test(a.path()))})()}var i=b(f.ngModel||f.routeModel||"$uiRoute").assign,j=angular.noop;switch(e){case"uiRoute":f.uiRoute?h(f.uiRoute):f.$observe("uiRoute",h);break;case"ngHref":f.ngHref?g(f.ngHref):f.$observe("ngHref",g);break;case"href":g(f.href)}c.$on("$routeChangeSuccess",function(){j()}),c.$on("$stateChangeSuccess",function(){j()})}}}}]),angular.module("ui.scrollfix",[]).directive("uiScrollfix",["$window",function(a){"use strict";return{require:"^?uiScrollfixTarget",link:function(b,c,d,e){var f=c[0].offsetTop,g=e&&e.$element||angular.element(a);d.uiScrollfix?"-"===d.uiScrollfix.charAt(0)?d.uiScrollfix=f-d.uiScrollfix.substr(1):"+"===d.uiScrollfix.charAt(0)&&(d.uiScrollfix=f+parseFloat(d.uiScrollfix.substr(1))):d.uiScrollfix=f,g.bind("scroll",function(){var b;if(angular.isDefined(a.pageYOffset))b=a.pageYOffset;else{var e=document.compatMode&&"BackCompat"!==document.compatMode?document.documentElement:document.body;b=e.scrollTop}!c.hasClass("ui-scrollfix")&&b>d.uiScrollfix?c.addClass("ui-scrollfix"):c.hasClass("ui-scrollfix")&&b