]> scripts.mit.edu Git - autoinstalls/wordpress.git/blobdiff - wp-includes/js/tinymce/plugins/wpfullscreen/plugin.js
WordPress 4.0
[autoinstalls/wordpress.git] / wp-includes / js / tinymce / plugins / wpfullscreen / plugin.js
index ed60d3cd52425b6ee509c73db4b984272409d088..9e0940e9e7c47ad2c9fd343eed7826cdbfaebb4c 100644 (file)
@@ -3,81 +3,54 @@
  * WP Fullscreen (Distraction Free Writing) TinyMCE plugin
  */
 tinymce.PluginManager.add( 'wpfullscreen', function( editor ) {
-       var settings = editor.settings,
-               oldSize = 0;
-
-       function resize( e ) {
-               var deltaSize, myHeight,
-                       d = editor.getDoc(),
-                       body = d.body,
-                       DOM = tinymce.DOM,
-                       resizeHeight = 250;
-
-               if ( ( e && e.type === 'setcontent' && e.initial ) || editor.settings.inline ) {
-                       return;
-               }
-
-               // Get height differently depending on the browser used
-               myHeight = tinymce.Env.ie ? body.scrollHeight : ( tinymce.Env.webkit && body.clientHeight === 0 ? 0 : body.offsetHeight );
-
-               // Don't make it smaller than 250px
-               if ( myHeight > 250 ) {
-                       resizeHeight = myHeight;
-               }
-
-               body.scrollTop = 0;
-
-               // Resize content element
-               if ( resizeHeight !== oldSize ) {
-                       deltaSize = resizeHeight - oldSize;
-                       DOM.setStyle( DOM.get( editor.id + '_ifr' ), 'height', resizeHeight + 'px' );
-                       oldSize = resizeHeight;
-
-                       // WebKit doesn't decrease the size of the body element until the iframe gets resized
-                       // So we need to continue to resize the iframe down until the size gets fixed
-                       if ( tinymce.isWebKit && deltaSize < 0 ) {
-                               resize( e );
-                       }
-               }
-       }
-
-       // Register the command
-       editor.addCommand( 'wpAutoResize', resize );
+       var settings = editor.settings;
 
        function fullscreenOn() {
                settings.wp_fullscreen = true;
                editor.dom.addClass( editor.getDoc().documentElement, 'wp-fullscreen' );
-               // Add listeners for auto-resizing
-               editor.on( 'change setcontent paste keyup', resize );
+               // Start auto-resizing
+               editor.execCommand( 'wpAutoResizeOn' );
        }
 
        function fullscreenOff() {
                settings.wp_fullscreen = false;
                editor.dom.removeClass( editor.getDoc().documentElement, 'wp-fullscreen' );
-               // Remove listeners for auto-resizing
-               editor.off( 'change setcontent paste keyup', resize );
-               oldSize = 0;
+               // Stop auto-resizing
+               editor.execCommand( 'wpAutoResizeOff' );
        }
 
        // For use from outside the editor.
        editor.addCommand( 'wpFullScreenOn', fullscreenOn );
        editor.addCommand( 'wpFullScreenOff', fullscreenOff );
 
+       function getExtAPI() {
+               return ( typeof wp !== 'undefined' && wp.editor && wp.editor.fullscreen );
+       }
+
+       // Toggle DFW mode. For use from inside the editor.
        function toggleFullscreen() {
-               // Toggle DFW mode. For use from inside the editor.
-               if ( typeof wp === 'undefined' || ! wp.editor || ! wp.editor.fullscreen ) {
-                       return;
-               }
+               var fullscreen = getExtAPI();
 
-               if ( editor.getParam('wp_fullscreen') ) {
-                       wp.editor.fullscreen.off();
-               } else {
-                       wp.editor.fullscreen.on();
+               if ( fullscreen ) {
+                       if ( editor.getParam('wp_fullscreen') ) {
+                               fullscreen.off();
+                       } else {
+                               fullscreen.on();
+                       }
                }
        }
 
        editor.addCommand( 'wpFullScreen', toggleFullscreen );
 
+       editor.on( 'keydown', function( event ) {
+               var fullscreen;
+
+               // Turn fullscreen off when Esc is pressed.
+               if ( event.keyCode === 27 && ( fullscreen = getExtAPI() ) && fullscreen.settings.visible ) {
+                       fullscreen.off();
+               }
+       });
+
        editor.on( 'init', function() {
                // Set the editor when initializing from whitin DFW
                if ( editor.getParam('wp_fullscreen') ) {