mirror of
https://github.com/fastmail/Squire.git
synced 2025-01-03 05:00:13 -05:00
597024eecb
Just return a boolean for the TreeWalker filter fn. This diverges from the spec, but since the goal of this implementation is not to fully implement the spec and we're never going to use a native implementation, this doesn't matter and the code is easier to read when the function is just returning a boolean like any normal filter function.
44 lines
1.4 KiB
JavaScript
44 lines
1.4 KiB
JavaScript
/*global doc, navigator */
|
|
/*jshint strict:false */
|
|
|
|
var DOCUMENT_POSITION_PRECEDING = 2; // Node.DOCUMENT_POSITION_PRECEDING
|
|
var ELEMENT_NODE = 1; // Node.ELEMENT_NODE;
|
|
var TEXT_NODE = 3; // Node.TEXT_NODE;
|
|
var SHOW_ELEMENT = 1; // NodeFilter.SHOW_ELEMENT;
|
|
var SHOW_TEXT = 4; // NodeFilter.SHOW_TEXT;
|
|
|
|
var START_TO_START = 0; // Range.START_TO_START
|
|
var START_TO_END = 1; // Range.START_TO_END
|
|
var END_TO_END = 2; // Range.END_TO_END
|
|
var END_TO_START = 3; // Range.END_TO_START
|
|
|
|
var win = doc.defaultView;
|
|
|
|
var ua = navigator.userAgent;
|
|
|
|
var isIOS = /iP(?:ad|hone|od)/.test( ua );
|
|
var isMac = /Mac OS X/.test( ua );
|
|
|
|
var isGecko = /Gecko\//.test( ua );
|
|
var isIE8or9or10 = /Trident\/[456]\./.test( ua );
|
|
var isIE8 = ( win.ie === 8 );
|
|
var isOpera = !!win.opera;
|
|
var isWebKit = /WebKit\//.test( ua );
|
|
|
|
var ctrlKey = isMac ? 'meta-' : 'ctrl-';
|
|
|
|
var useTextFixer = isIE8or9or10 || isOpera;
|
|
var cantFocusEmptyTextNodes = isIE8or9or10 || isWebKit;
|
|
var losesSelectionOnBlur = isIE8or9or10;
|
|
var hasBuggySplit = ( function () {
|
|
var div = doc.createElement( 'DIV' ),
|
|
text = doc.createTextNode( '12' );
|
|
div.appendChild( text );
|
|
text.splitText( 2 );
|
|
return div.childNodes.length !== 2;
|
|
}() );
|
|
|
|
// Use [^ \t\r\n] instead of \S so that nbsp does not count as white-space
|
|
var notWS = /[^ \t\r\n]/;
|
|
|
|
var indexOf = Array.prototype.indexOf;
|