function collapseWhitespace (options) {
            var element = options.element;
            var isBlock = options.isBlock;
            var isVoid = options.isVoid;
            var isPre = options.isPre || function (node) {
                return node.nodeName === 'PRE'
            };

            if (!element.firstChild || isPre(element)) return

            var prevText = null;
            var prevVoid = false;

            var prev = null;
            var node = next(prev, element, isPre);

            while (node !== element) {
                if (node.nodeType === 3 || node.nodeType === 4) { // Node.TEXT_NODE or Node.CDATA_SECTION_NODE
                    var text = node.data.replace(/[ \r\n\t]+/g, ' ');

                    if ((!prevText || / $/.test(prevText.data)) &&
                        !prevVoid && text[0] === ' ') {
                        text = text.substr(1);
                    }

                    // `text` might be empty at this point.
                    if (!text) {
                        node = remove(node);
                        continue
                    }

                    node.data = text;

                    prevText = node;
                } else if (node.nodeType === 1) { // Node.ELEMENT_NODE
                    if (isBlock(node) || node.nodeName === 'BR') {
                        if (prevText) {
                            prevText.data = prevText.data.replace(/ $/, '');
                        }

                        prevText = null;
                        prevVoid = false;
                    } else if (isVoid(node)) {
                        // Avoid trimming space around non-block, non-BR void elements.
                        prevText = null;
                        prevVoid = true;
                    }
                } else {
                    node = remove(node);
                    continue
                }

                var nextNode = next(prev, node, isPre);
                prev = node;
                node = nextNode;
            }

            if (prevText) {
                prevText.data = prevText.data.replace(/ $/, '');
                if (!prevText.data) {
                    remove(prevText);
                }
            }
        }
/**
         * collapseWhitespace(options) removes extraneous whitespace from an the given element.
         *
         * @param {Object} options
         */
collapseWhitespace(options) removes extraneous whitespace from an the given element.
@param {Object} options
collapseWhitespace ( options ) removes extraneous whitespace from an the given element . @param { Object } options
function collapseWhitespace (options) {
            var element = options.element;
            var isBlock = options.isBlock;
            var isVoid = options.isVoid;
            var isPre = options.isPre || function (node) {
                return node.nodeName === 'PRE'
            };
            if (!element.firstChild || isPre(element)) return
            var prevText = null;
            var prevVoid = false;
            var prev = null;
            var node = next(prev, element, isPre);
            while (node !== element) {
                if (node.nodeType === 3 || node.nodeType === 4) { 
                    var text = node.data.replace(/[ \r\n\t]+/g, ' ');
                    if ((!prevText || / $/.test(prevText.data)) &&
                        !prevVoid && text[0] === ' ') {
                        text = text.substr(1);
                    }
                    if (!text) {
                        node = remove(node);
                        continue
                    }
                    node.data = text;
                    prevText = node;
                } else if (node.nodeType === 1) { 
                    if (isBlock(node) || node.nodeName === 'BR') {
                        if (prevText) {
                            prevText.data = prevText.data.replace(/ $/, '');
                        }
                        prevText = null;
                        prevVoid = false;
                    } else if (isVoid(node)) {
                        prevText = null;
                        prevVoid = true;
                    }
                } else {
                    node = remove(node);
                    continue
                }
                var nextNode = next(prev, node, isPre);
                prev = node;
                node = nextNode;
            }
            if (prevText) {
                prevText.data = prevText.data.replace(/ $/, '');
                if (!prevText.data) {
                    remove(prevText);
                }
            }
        }
function collapseWhitespace ( options ) { var element = options . element ; var isBlock = options . isBlock ; var isVoid = options . isVoid ; var isPre = options . isPre || function ( node ) { return node . nodeName === 'PRE' } ; if ( ! element . firstChild || isPre ( element ) ) return var prevText = null ; var prevVoid = false ; var prev = null ; var node = next ( prev , element , isPre ) ; while ( node !== element ) { if ( node . nodeType === 3 || node . nodeType === 4 ) { var text = node . data . replace ( / [ \r\n\t]+ / g , ' ' ) ; if ( ( ! prevText || /  $ / . test ( prevText . data ) ) && ! prevVoid && text [ 0 ] === ' ' ) { text = text . substr ( 1 ) ; } if ( ! text ) { node = remove ( node ) ; continue } node . data = text ; prevText = node ; } else if ( node . nodeType === 1 ) { if ( isBlock ( node ) || node . nodeName === 'BR' ) { if ( prevText ) { prevText . data = prevText . data . replace ( /  $ / , '' ) ; } prevText = null ; prevVoid = false ; } else if ( isVoid ( node ) ) { prevText = null ; prevVoid = true ; } } else { node = remove ( node ) ; continue } var nextNode = next ( prev , node , isPre ) ; prev = node ; node = nextNode ; } if ( prevText ) { prevText . data = prevText . data . replace ( /  $ / , '' ) ; if ( ! prevText . data ) { remove ( prevText ) ; } } }
collapseWhitespace(options) removes extraneous whitespace from an the given element.
collapseWhitespace ( options ) removes extraneous whitespace from an the given element .
// Node.TEXT_NODE or Node.CDATA_SECTION_NODE // `text` might be empty at this point. // Node.ELEMENT_NODE // Avoid trimming space around non-block, non-BR void elements.