2019-02-12 10:29:50 +00:00
// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat
2011-10-25 13:01:58 +00:00
2024-08-24 12:15:18 +00:00
// Copyright 2010, Tim Down
// SPDX-FileCopyrightText: 2010 Tim Down
//
// SPDX-License-Identifier: MIT
//
// 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
2011-10-25 13:01:58 +00:00
( 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 10:29:50 +00: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