-
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathdev.caretaware.min.js
11 lines (11 loc) · 2.03 KB
/
dev.caretaware.min.js
1
2
3
4
5
6
7
8
9
10
11
/**
* Copyright (c) 2015, Leo Di Donato <leodidonato@gmail.com>
* caretaware.min.js - AngularJS directive for caret aware elements
* @version 0.3.0
* @link http://github.com/leodido/ng-caret-aware
* @license MIT
*/
(function(){function n(f,h,p){function g(a){var c=(b.value||'').replace(/\r/g,'').length,d=~~a;0>d?d=c+a:d>c&&(d=c);return d}console.log('CaretController::ctor');var b=h[0],m;h='setSelectionRange'in b||'selectionStart'in b;var r='createTextRange'in b||'selection'in document,e=this,k,l;switch(!0){case h:k=function(){var a=b.selectionStart,c=b.selectionEnd,d=c-a;return{start:a,end:c,length:d,text:b.value.substr(a,d)}};l=function(a){a=g(a);b.focus();b.setSelectionRange(a,a);b.selectionStart=a;b.selectionEnd=a;f[e.a()]=
a};break;case r:k=function(){b.focus();var a=document.selection.createRange();if(null===a)return{start:0,end:b.value.length,length:0};var c=b.createTextRange(),d=c.duplicate();c.moveToBookmark(a.getBookmark());d.setEndPoint('EndToStart',c);c=d.text.length;a=a.text;d=a.length;return{start:c,end:c+d,length:d,text:a}};l=function(a){a=g(a);var c=b.createTextRange();c.move('character',a);c.select();f[e.a()]=a};break;default:k=function(){return{start:0,end:0,length:0,text:''}},l=function(){}}m=p.caretAware||
'caret';f[m]=0;e.a=function(){return m};e.c=function(a){if(!isNaN(parseFloat(a))&&isFinite(a))return l(a),e;throw new TypeError('Position MUST be numeric.');};e.b=function(){return k().start};e.getSelection=k;e.getNamespace=e.a;e.setPosition=e.c;e.getPosition=e.b}n.$inject=['$scope','$element','$attrs'];function q(){console.log('CaretAware::ctor')}q.prototype.link=function(f,h,p,g){console.log('CaretAware::link');h.on('keydown keyup click',function(){f.$evalAsync(function(){f[g.a()]=g.b()})});f.$watch(g.a(),function(b){g.b()!==b&&g.c(b)});f.$on('$destroy',function(){delete f[g.a()];h.off('keydown keyup click')})};angular.module('leodido.caretAware',[]).directive('caretAware',function(){var f=new q;return{restrict:'AC',require:'caretAware',controller:n,link:f.link}});})();
//# sourceMappingURL=dev.caretaware.min.js.map