tweaking and refactoring...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2018-03-30 14:24:05 +03:00
parent 19b1a9b2c4
commit 5801803a73

View File

@ -260,7 +260,9 @@ function(path){
/*********************************************************************/ /*********************************************************************/
module.selectElemText = function(elem){ var selectElemText =
module.selectElemText =
function(elem){
var range = document.createRange() var range = document.createRange()
range.selectNodeContents(elem) range.selectNodeContents(elem)
var sel = window.getSelection() var sel = window.getSelection()
@ -269,6 +271,32 @@ module.selectElemText = function(elem){
} }
// XXX make this global...
var getCaretOffset =
module.getCaretOffset =
function(elem){
try{
if(window.getSelection){
var r = window.getSelection().getRangeAt(0)
var pre = r.cloneRange()
pre.selectNodeContents(elem)
pre.setEnd(r.endContainer, r.endOffset)
return pre.toString().length || 0
// IE...
} else {
var r = document.selection.createRange()
var pre = document.body.createTextRange()
pre.moveToElementText(elem)
pre.setEndPoint("EndToEnd", r)
return pre.text.length || 0
}
}catch(e){
return -1
}
}
/*********************************************************************/ /*********************************************************************/
// NOTE: repatching a date should not lead to any side effects as this // NOTE: repatching a date should not lead to any side effects as this
@ -413,6 +441,7 @@ if(typeof(jQuery) != typeof(undefined)){
return this return this
} }
jQuery.fn.caretOffset = function(){ return getCaretOffset(this) }
var keyboard = require('lib/keyboard') var keyboard = require('lib/keyboard')
@ -548,16 +577,8 @@ if(typeof(jQuery) != typeof(undefined)){
if(!that.prop('contenteditable')){ if(!that.prop('contenteditable')){
return return
} }
// XXX make this global...
var caretOffset = function(elem){
var range = window.getSelection().getRangeAt(0)
var preCaretRange = range.cloneRange()
preCaretRange.selectNodeContents(elem)
preCaretRange.setEnd(range.endContainer, range.endOffset)
return preCaretRange.toString().length || 0
}
var c = caretOffset(this) var c = getCaretOffset(this)
evt.stopPropagation() evt.stopPropagation()
@ -582,10 +603,11 @@ if(typeof(jQuery) != typeof(undefined)){
&& options.multiline){ && options.multiline){
evt.preventDefault() evt.preventDefault()
// XXX this sometimes eats newline chars...
that.trigger('edit-commit', that.text()) that.trigger('edit-commit', that.text())
// multi-line keep keys... // multi-line keep keys...
} else if(n == 'Enter' >= 0 && options.multiline){ } else if(n == 'Enter' && options.multiline){
return return
// multi-line arrow keys -- keep key iff not at first/last position... // multi-line arrow keys -- keep key iff not at first/last position...