wp/wp-includes/js/tinymce/plugins/wpfullscreen/plugin.js
changeset 5 5e2f62d02dcd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wp/wp-includes/js/tinymce/plugins/wpfullscreen/plugin.js	Tue Jun 09 03:35:32 2015 +0200
@@ -0,0 +1,76 @@
+/* global tinymce */
+/**
+ * WP Fullscreen (Distraction-Free Writing) TinyMCE plugin
+ */
+tinymce.PluginManager.add( 'wpfullscreen', function( editor ) {
+	var settings = editor.settings;
+
+	function fullscreenOn() {
+		settings.wp_fullscreen = true;
+		editor.dom.addClass( editor.getDoc().documentElement, 'wp-fullscreen' );
+		// Start auto-resizing
+		editor.execCommand( 'wpAutoResizeOn' );
+	}
+
+	function fullscreenOff() {
+		settings.wp_fullscreen = false;
+		editor.dom.removeClass( editor.getDoc().documentElement, 'wp-fullscreen' );
+		// 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() {
+		var fullscreen = getExtAPI();
+
+		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') ) {
+			fullscreenOn();
+		}
+	});
+
+	// Register buttons
+	editor.addButton( 'wp_fullscreen', {
+		tooltip: 'Distraction-free writing mode',
+		shortcut: 'Alt+Shift+W',
+		onclick: toggleFullscreen,
+		classes: 'wp-fullscreen btn widget' // This overwrites all classes on the container!
+	});
+
+	editor.addMenuItem( 'wp_fullscreen', {
+		text: 'Distraction-free writing mode',
+		icon: 'wp_fullscreen',
+		shortcut: 'Alt+Shift+W',
+		context: 'view',
+		onclick: toggleFullscreen
+	});
+});