angular.module('ngPatternRestrict',[]).directive('ngPatternRestrict',['$log',function(a){'use strict';return{restrict:'A',require:'?ngModel',compile:function(){return function(a,b,c,d){function e(){return b[0].selectionStart}function f(){var a=document.selection.createRange();return a.moveStart('character',-b.val().length),a.text.length}function g(){var a,b,c,d=window.getSelection(),e=(d+'').length,f=!1;do a=(d+'').length,d.modify('extend','backward','character'),0===(d+'').length&&(f=!0);while(a!==(d+'').length);for(b=f?a:a-e,d.collapseToStart(),c=b;c-->0;)d.modify('move','forward','character');for(;e-->0;)d.modify('extend','forward','character');return b}function h(a){b[0].setSelectionRange(a,a)}function i(a){var c=b[0].createTextRange();c.collapse(!0),c.moveEnd('character',a),c.moveStart('character',a),c.select()}function j(a){var b,c=window.getSelection();do b=(c+'').length,c.modify('extend','backward','line');while(b!==(c+'').length);for(c.collapseToStart();a--;)c.modify('move','forward','character')}function k(a){if(!/Opera/i.test(navigator.userAgent))return 0;a.focus(),document.execCommand('selectAll');var b=window.getSelection().focusNode;return(b||{}).selectionStart||0}function l(){b.val(w),angular.isUndefined(x)||z(x)}function m(a){w=a,x=y()}function n(c){if(!B){var e=b.val(),f=b.prop('validity');''===e&&'text'!==b.attr('type')&&f&&f.badInput?(c.preventDefault(),l()):''===e&&0!==k(b[0])?(c.preventDefault(),l()):A.test(e)?m(e):(c.preventDefault(),l()),d&&a.$apply(function(){d.$setViewValue(w)})}}function o(){D||b.bind('input keyup click',n)}function p(){D&&(b.unbind('input',n),b.unbind('keyup',n),b.unbind('click',n),D=!1)}function q(){var a=c.ngPatternRestrict?c.ngPatternRestrict:c.pattern;B=/\^?\.\*\$?/.test(a);try{A=RegExp(a)}catch(b){throw'Invalid RegEx string parsed for ngPatternRestrict: '+a}}function r(a,b){try{return a()||!b}catch(c){return!1}}function s(){var a=b[0];y=r(function(){return a.selectionStart})?e:r(function(){return document.selection},!0)?f:g}function t(){var a=b[0];z='function'==typeof a.setSelectionRange?h:'function'==typeof a.createTextRange?i:j}function u(){C||(q(),w=b.val(),w||(w=''),o(),s(),t(),C=!0)}function v(){p()}var w,x,y,z,A=/.*/,B=!0,C=!1,D=!1;c.$observe('ngPatternRestrict',q),c.$observe('pattern',q),a.$on('$destroy',v),u()}}}}]); //# sourceMappingURL=ng-pattern-restrict.min.js.map