]> scripts.mit.edu Git - autoinstalls/wordpress.git/blobdiff - wp-admin/js/editor-expand.js
Wordpress 4.6-scripts
[autoinstalls/wordpress.git] / wp-admin / js / editor-expand.js
index ba5b095203aefa014c8bdc67fcba40f309947e71..bf67c64e04f7c4c88360cacc0b5e9e139a3c2ffd 100644 (file)
@@ -15,7 +15,8 @@
                        $visualEditor = $(),
                        $textTop = $( '#ed_toolbar' ),
                        $textEditor = $( '#content' ),
-                       $textEditorClone = $( '<div id="content-textarea-clone" class="wp-exclude-emoji"></div>' ),
+                       textEditor = $textEditor[0],
+                       oldTextLength = 0,
                        $bottom = $( '#post-status-info' ),
                        $menuBar = $(),
                        $statusBar = $(),
                                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();
 
                        }
                }
 
-               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() + '&nbsp;' );
+                       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.
 
                                        if ( event && event.deltaHeight > 0 && event.deltaHeight < 100 ) {
                                                window.scrollBy( 0, event.deltaHeight );
-                                       } else if ( advanced ) {
+                                       } else if ( visual && advanced ) {
                                                fixedBottom = true;
 
                                                $statusBar.css( {
                                        $textEditor.css( {
                                                marginTop: heights.textTopHeight
                                        } );
-
-                                       $textEditorClone.width( contentWrapWidth - 20 - ( borderWidth * 2 ) );
                                }
                        }
                }
 
                        // 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 );
                                });
 
                        $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.