X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/b925718b4bf2dd47a8429f844d0a255ca6e35bd1..b22765f41bf0b2021b9beb9120ee0ac91fa89292:/wp-admin/js/editor-expand.js diff --git a/wp-admin/js/editor-expand.js b/wp-admin/js/editor-expand.js index ba5b0952..bf67c64e 100644 --- a/wp-admin/js/editor-expand.js +++ b/wp-admin/js/editor-expand.js @@ -15,7 +15,8 @@ $visualEditor = $(), $textTop = $( '#ed_toolbar' ), $textEditor = $( '#content' ), - $textEditorClone = $( '
' ), + textEditor = $textEditor[0], + oldTextLength = 0, $bottom = $( '#post-status-info' ), $menuBar = $(), $statusBar = $(), @@ -52,16 +53,6 @@ sideSortablesHeight: 0 }; - $textEditorClone.insertAfter( $textEditor ); - - $textEditorClone.css( { - 'font-family': $textEditor.css( 'font-family' ), - 'font-size': $textEditor.css( 'font-size' ), - 'line-height': $textEditor.css( 'line-height' ), - 'white-space': 'pre-wrap', - 'word-wrap': 'break-word' - } ); - function getHeights() { var windowWidth = $window.width(); @@ -84,68 +75,41 @@ } } - function textEditorKeyup( event ) { - var VK = jQuery.ui.keyCode, - key = event.keyCode, - range = document.createRange(), - selStart = $textEditor[0].selectionStart, - selEnd = $textEditor[0].selectionEnd, - textNode = $textEditorClone[0].firstChild, - buffer = 10, - offset, cursorTop, cursorBottom, editorTop, editorBottom; - - if ( selStart && selEnd && selStart !== selEnd ) { - return; - } - - // These are not TinyMCE ranges. - try { - range.setStart( textNode, selStart ); - range.setEnd( textNode, selEnd + 1 ); - } catch ( ex ) {} - - offset = range.getBoundingClientRect(); - - if ( ! offset.height ) { + function textEditorResize() { + if ( mceEditor && ! mceEditor.isHidden() ) { return; } - cursorTop = offset.top - buffer; - cursorBottom = cursorTop + offset.height + buffer; - editorTop = heights.adminBarHeight + heights.toolsHeight + heights.textTopHeight; - editorBottom = heights.windowHeight - heights.bottomHeight; - - if ( cursorTop < editorTop && ( key === VK.UP || key === VK.LEFT || key === VK.BACKSPACE ) ) { - window.scrollTo( window.pageXOffset, cursorTop + window.pageYOffset - editorTop ); - } else if ( cursorBottom > editorBottom ) { - window.scrollTo( window.pageXOffset, cursorBottom + window.pageYOffset - editorBottom ); - } - } - - function textEditorResize() { - if ( ( mceEditor && ! mceEditor.isHidden() ) || ( ! mceEditor && initialMode === 'tinymce' ) ) { + if ( ! mceEditor && initialMode === 'tinymce' ) { return; } - var textEditorHeight = $textEditor.height(), - hiddenHeight; + var length = textEditor.value.length; + var height = parseInt( textEditor.style.height, 10 ); + var top = window.scrollTop; - $textEditorClone.width( $textEditor.width() - 22 ); - $textEditorClone.text( $textEditor.val() + ' ' ); + if ( length < oldTextLength ) { + // textEditor.scrollHeight is not adjusted until the next line. + textEditor.style.height = 'auto'; - hiddenHeight = $textEditorClone.height(); + if ( textEditor.scrollHeight > autoresizeMinHeight ) { + textEditor.style.height = textEditor.scrollHeight + 'px'; + } else { + textEditor.style.height = autoresizeMinHeight + 'px'; + } - if ( hiddenHeight < autoresizeMinHeight ) { - hiddenHeight = autoresizeMinHeight; - } + // Prevent scroll-jumping in Firefox and IE. + window.scrollTop = top; - if ( hiddenHeight === textEditorHeight ) { - return; + if ( textEditor.scrollHeight < height ) { + adjust(); + } + } else if ( height < textEditor.scrollHeight ) { + textEditor.style.height = textEditor.scrollHeight + 'px'; + adjust(); } - $textEditor.height( hiddenHeight ); - - adjust(); + oldTextLength = length; } // We need to wait for TinyMCE to initialize. @@ -474,7 +438,7 @@ if ( event && event.deltaHeight > 0 && event.deltaHeight < 100 ) { window.scrollBy( 0, event.deltaHeight ); - } else if ( advanced ) { + } else if ( visual && advanced ) { fixedBottom = true; $statusBar.css( { @@ -603,8 +567,6 @@ $textEditor.css( { marginTop: heights.textTopHeight } ); - - $textEditorClone.width( contentWrapWidth - 20 - ( borderWidth * 2 ) ); } } } @@ -642,7 +604,7 @@ // Adjust when collapsing the menu, changing the columns, changing the body class. $document.on( 'wp-collapse-menu.editor-expand postboxes-columnchange.editor-expand editor-classchange.editor-expand', adjust ) - .on( 'postbox-toggled.editor-expand', function() { + .on( 'postbox-toggled.editor-expand postbox-moved.editor-expand', function() { if ( ! fixedSideTop && ! fixedSideBottom && window.pageYOffset > pinnedToolsTop ) { fixedSideBottom = true; window.scrollBy( 0, -1 ); @@ -660,7 +622,6 @@ }); $textEditor.on( 'focus.editor-expand input.editor-expand propertychange.editor-expand', textEditorResize ); - $textEditor.on( 'keyup.editor-expand', textEditorKeyup ); mceBind(); // Adjust when entering/exiting fullscreen mode.