2019-02-12 11:29:50 +01:00
// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat
2011-10-25 15:01:58 +02:00
/ *
Rangy Text Inputs , a cross - browser textarea and text input library plug - in for jQuery .
Part of Rangy , a cross - browser JavaScript range and selection library
http : //code.google.com/p/rangy/
Depends on jQuery 1.0 or later .
Copyright 2010 , Tim Down
Licensed under the MIT license .
Version : 0.1 . 205
Build date : 5 November 2010
* /
( function ( n ) { function o ( e , g ) { var a = typeof e [ g ] ; return a === "function" || ! ! ( a == "object" && e [ g ] ) || a == "unknown" } function p ( e , g , a ) { if ( g < 0 ) g += e . value . length ; if ( typeof a == "undefined" ) a = g ; if ( a < 0 ) a += e . value . length ; return { start : g , end : a } } function k ( ) { return typeof document . body == "object" && document . body ? document . body : document . getElementsByTagName ( "body" ) [ 0 ] } var i , h , q , l , r , s , t , u , m ; n ( document ) . ready ( function ( ) { function e ( a , b ) { return function ( ) { var c = this . jquery ? this [ 0 ] : this , d = c . nodeName . toLowerCase ( ) ; if ( c . nodeType ==
1 && ( d == "textarea" || d == "input" && c . type == " text ")){c=[c].concat(Array.prototype.slice.call(arguments));c=a.apply(this,c);if(!b)return c}if(b)return this}}var g=document.createElement(" textarea ");k().appendChild(g);if(typeof g.selectionStart!=" undefined "&&typeof g.selectionEnd!=" undefined " ) { i = function ( a ) { return { start : a . selectionStart , end : a . selectionEnd , length : a . selectionEnd - a . selectionStart , text : a . value . slice ( a . selectionStart , a . selectionEnd ) } } ; h = function ( a , b , c ) { b = p ( a , b , c ) ; a . selectionStart = b . start ; a . selectionEnd =
b . end } ; m = function ( a , b ) { if ( b ) a . selectionEnd = a . selectionStart ; else a . selectionStart = a . selectionEnd } } else if ( o ( g , "createTextRange" ) && typeof document . selection == "object" && document . selection && o ( document . selection , "createRange" ) ) { i = function ( a ) { var b = 0 , c = 0 , d , f , j ; if ( ( j = document . selection . createRange ( ) ) && j . parentElement ( ) == a ) { f = a . value . length ; d = a . value . replace ( /\r\n/g , "\n" ) ; c = a . createTextRange ( ) ; c . moveToBookmark ( j . getBookmark ( ) ) ; j = a . createTextRange ( ) ; j . collapse ( false ) ; if ( c . compareEndPoints ( "StartToEnd" , j ) >
- 1 ) b = c = f ; else { b = - c . moveStart ( "character" , - f ) ; b += d . slice ( 0 , b ) . split ( "\n" ) . length - 1 ; if ( c . compareEndPoints ( "EndToEnd" , j ) > - 1 ) c = f ; else { c = - c . moveEnd ( "character" , - f ) ; c += d . slice ( 0 , c ) . split ( "\n" ) . length - 1 } } } return { start : b , end : c , length : c - b , text : a . value . slice ( b , c ) } } ; h = function ( a , b , c ) { b = p ( a , b , c ) ; c = a . createTextRange ( ) ; var d = b . start - ( a . value . slice ( 0 , b . start ) . split ( "\r\n" ) . length - 1 ) ; c . collapse ( true ) ; if ( b . start == b . end ) c . move ( "character" , d ) ; else { c . moveEnd ( "character" , b . end - ( a . value . slice ( 0 , b . end ) . split ( "\r\n" ) . length -
1 ) ) ; c . moveStart ( "character" , d ) } c . select ( ) } ; m = function ( a , b ) { var c = document . selection . createRange ( ) ; c . collapse ( b ) ; c . select ( ) } } else { k ( ) . removeChild ( g ) ; window . console && window . console . log && window . console . log ( "TextInputs module for Rangy not supported in your browser. Reason: No means of finding text input caret position" ) ; return } k ( ) . removeChild ( g ) ; l = function ( a , b , c , d ) { var f ; if ( b != c ) { f = a . value ; a . value = f . slice ( 0 , b ) + f . slice ( c ) } d && h ( a , b , b ) } ; q = function ( a ) { var b = i ( a ) ; l ( a , b . start , b . end , true ) } ; u = function ( a ) { var b =
i ( a ) , c ; if ( b . start != b . end ) { c = a . value ; a . value = c . slice ( 0 , b . start ) + c . slice ( b . end ) } h ( a , b . start , b . start ) ; return b . text } ; r = function ( a , b , c , d ) { var f = a . value ; a . value = f . slice ( 0 , c ) + b + f . slice ( c ) ; if ( d ) { b = c + b . length ; h ( a , b , b ) } } ; s = function ( a , b ) { var c = i ( a ) , d = a . value ; a . value = d . slice ( 0 , c . start ) + b + d . slice ( c . end ) ; c = c . start + b . length ; h ( a , c , c ) } ; t = function ( a , b , c ) { var d = i ( a ) , f = a . value ; a . value = f . slice ( 0 , d . start ) + b + d . text + c + f . slice ( d . end ) ; b = d . start + b . length ; h ( a , b , b + d . length ) } ; n . fn . extend ( { getSelection : e ( i , false ) , setSelection : e ( h ,
2019-02-12 11:29:50 +01:00
true ) , collapseSelection : e ( m , true ) , deleteSelectedText : e ( q , true ) , deleteText : e ( l , true ) , extractSelectedText : e ( u , false ) , insertText : e ( r , true ) , replaceSelectedText : e ( s , true ) , surroundSelectedText : e ( t , true ) } ) } ) } ) ( jQuery ) ;
// @license-end