wp/wp-includes/js/tinymce/plugins/fullscreen/plugin.js
changeset 7 cf61fcea0001
parent 5 5e2f62d02dcd
child 9 177826044cd9
--- a/wp/wp-includes/js/tinymce/plugins/fullscreen/plugin.js	Tue Jun 09 11:14:17 2015 +0000
+++ b/wp/wp-includes/js/tinymce/plugins/fullscreen/plugin.js	Mon Oct 14 17:39:30 2019 +0200
@@ -1,136 +1,177 @@
-/**
- * plugin.js
- *
- * Copyright, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://www.tinymce.com/license
- * Contributing: http://www.tinymce.com/contributing
- */
-
-/*global tinymce:true */
-
-tinymce.PluginManager.add('fullscreen', function(editor) {
-	var fullscreenState = false, DOM = tinymce.DOM, iframeWidth, iframeHeight, resizeHandler;
-	var containerWidth, containerHeight;
-
-	if (editor.settings.inline) {
-		return;
-	}
-
-	function getWindowSize() {
-		var w, h, win = window, doc = document;
-		var body = doc.body;
-
-		// Old IE
-		if (body.offsetWidth) {
-			w = body.offsetWidth;
-			h = body.offsetHeight;
-		}
+(function () {
+var fullscreen = (function () {
+  'use strict';
 
-		// Modern browsers
-		if (win.innerWidth && win.innerHeight) {
-			w = win.innerWidth;
-			h = win.innerHeight;
-		}
-
-		return {w: w, h: h};
-	}
-
-	function toggleFullscreen() {
-		var body = document.body, documentElement = document.documentElement, editorContainerStyle;
-		var editorContainer, iframe, iframeStyle;
-
-		function resize() {
-			DOM.setStyle(iframe, 'height', getWindowSize().h - (editorContainer.clientHeight - iframe.clientHeight));
-		}
+  var Cell = function (initial) {
+    var value = initial;
+    var get = function () {
+      return value;
+    };
+    var set = function (v) {
+      value = v;
+    };
+    var clone = function () {
+      return Cell(get());
+    };
+    return {
+      get: get,
+      set: set,
+      clone: clone
+    };
+  };
 
-		fullscreenState = !fullscreenState;
-
-		editorContainer = editor.getContainer();
-		editorContainerStyle = editorContainer.style;
-		iframe = editor.getContentAreaContainer().firstChild;
-		iframeStyle = iframe.style;
+  var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
 
-		if (fullscreenState) {
-			iframeWidth = iframeStyle.width;
-			iframeHeight = iframeStyle.height;
-			iframeStyle.width = iframeStyle.height = '100%';
-			containerWidth = editorContainerStyle.width;
-			containerHeight = editorContainerStyle.height;
-			editorContainerStyle.width = editorContainerStyle.height = '';
+  var get = function (fullscreenState) {
+    return {
+      isFullscreen: function () {
+        return fullscreenState.get() !== null;
+      }
+    };
+  };
+  var $_6qfcwucejjgwebu0 = { get: get };
 
-			DOM.addClass(body, 'mce-fullscreen');
-			DOM.addClass(documentElement, 'mce-fullscreen');
-			DOM.addClass(editorContainer, 'mce-fullscreen');
+  var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
+
+  var fireFullscreenStateChanged = function (editor, state) {
+    editor.fire('FullscreenStateChanged', { state: state });
+  };
+  var $_en5ltwcijjgwebu6 = { fireFullscreenStateChanged: fireFullscreenStateChanged };
 
-			DOM.bind(window, 'resize', resize);
-			resize();
-			resizeHandler = resize;
-		} else {
-			iframeStyle.width = iframeWidth;
-			iframeStyle.height = iframeHeight;
-
-			if (containerWidth) {
-				editorContainerStyle.width = containerWidth;
-			}
-
-			if (containerHeight) {
-				editorContainerStyle.height = containerHeight;
-			}
-
-			DOM.removeClass(body, 'mce-fullscreen');
-			DOM.removeClass(documentElement, 'mce-fullscreen');
-			DOM.removeClass(editorContainer, 'mce-fullscreen');
-			DOM.unbind(window, 'resize', resizeHandler);
-		}
-
-		editor.fire('FullscreenStateChanged', {state: fullscreenState});
-	}
-
-	editor.on('init', function() {
-		editor.addShortcut('Meta+Alt+F', '', toggleFullscreen);
-	});
-
-	editor.on('remove', function() {
-		if (resizeHandler) {
-			DOM.unbind(window, 'resize', resizeHandler);
-		}
-	});
+  var DOM = global$1.DOM;
+  var getWindowSize = function () {
+    var w;
+    var h;
+    var win = window;
+    var doc = document;
+    var body = doc.body;
+    if (body.offsetWidth) {
+      w = body.offsetWidth;
+      h = body.offsetHeight;
+    }
+    if (win.innerWidth && win.innerHeight) {
+      w = win.innerWidth;
+      h = win.innerHeight;
+    }
+    return {
+      w: w,
+      h: h
+    };
+  };
+  var getScrollPos = function () {
+    var vp = DOM.getViewPort();
+    return {
+      x: vp.x,
+      y: vp.y
+    };
+  };
+  var setScrollPos = function (pos) {
+    window.scrollTo(pos.x, pos.y);
+  };
+  var toggleFullscreen = function (editor, fullscreenState) {
+    var body = document.body;
+    var documentElement = document.documentElement;
+    var editorContainerStyle;
+    var editorContainer, iframe, iframeStyle;
+    var fullscreenInfo = fullscreenState.get();
+    var resize = function () {
+      DOM.setStyle(iframe, 'height', getWindowSize().h - (editorContainer.clientHeight - iframe.clientHeight));
+    };
+    var removeResize = function () {
+      DOM.unbind(window, 'resize', resize);
+    };
+    editorContainer = editor.getContainer();
+    editorContainerStyle = editorContainer.style;
+    iframe = editor.getContentAreaContainer().firstChild;
+    iframeStyle = iframe.style;
+    if (!fullscreenInfo) {
+      var newFullScreenInfo = {
+        scrollPos: getScrollPos(),
+        containerWidth: editorContainerStyle.width,
+        containerHeight: editorContainerStyle.height,
+        iframeWidth: iframeStyle.width,
+        iframeHeight: iframeStyle.height,
+        resizeHandler: resize,
+        removeHandler: removeResize
+      };
+      iframeStyle.width = iframeStyle.height = '100%';
+      editorContainerStyle.width = editorContainerStyle.height = '';
+      DOM.addClass(body, 'mce-fullscreen');
+      DOM.addClass(documentElement, 'mce-fullscreen');
+      DOM.addClass(editorContainer, 'mce-fullscreen');
+      DOM.bind(window, 'resize', resize);
+      editor.on('remove', removeResize);
+      resize();
+      fullscreenState.set(newFullScreenInfo);
+      $_en5ltwcijjgwebu6.fireFullscreenStateChanged(editor, true);
+    } else {
+      iframeStyle.width = fullscreenInfo.iframeWidth;
+      iframeStyle.height = fullscreenInfo.iframeHeight;
+      if (fullscreenInfo.containerWidth) {
+        editorContainerStyle.width = fullscreenInfo.containerWidth;
+      }
+      if (fullscreenInfo.containerHeight) {
+        editorContainerStyle.height = fullscreenInfo.containerHeight;
+      }
+      DOM.removeClass(body, 'mce-fullscreen');
+      DOM.removeClass(documentElement, 'mce-fullscreen');
+      DOM.removeClass(editorContainer, 'mce-fullscreen');
+      setScrollPos(fullscreenInfo.scrollPos);
+      DOM.unbind(window, 'resize', fullscreenInfo.resizeHandler);
+      editor.off('remove', fullscreenInfo.removeHandler);
+      fullscreenState.set(null);
+      $_en5ltwcijjgwebu6.fireFullscreenStateChanged(editor, false);
+    }
+  };
+  var $_dvg07kcgjjgwebu3 = { toggleFullscreen: toggleFullscreen };
 
-	editor.addCommand('mceFullScreen', toggleFullscreen);
-
-	editor.addMenuItem('fullscreen', {
-		text: 'Fullscreen',
-		shortcut: 'Meta+Alt+F',
-		selectable: true,
-		onClick: toggleFullscreen,
-		onPostRender: function() {
-			var self = this;
-
-			editor.on('FullscreenStateChanged', function(e) {
-				self.active(e.state);
-			});
-		},
-		context: 'view'
-	});
+  var register = function (editor, fullscreenState) {
+    editor.addCommand('mceFullScreen', function () {
+      $_dvg07kcgjjgwebu3.toggleFullscreen(editor, fullscreenState);
+    });
+  };
+  var $_bebdcrcfjjgwebu1 = { register: register };
 
-	editor.addButton('fullscreen', {
-		tooltip: 'Fullscreen',
-		shortcut: 'Meta+Alt+F',
-		onClick: toggleFullscreen,
-		onPostRender: function() {
-			var self = this;
+  var postRender = function (editor) {
+    return function (e) {
+      var ctrl = e.control;
+      editor.on('FullscreenStateChanged', function (e) {
+        ctrl.active(e.state);
+      });
+    };
+  };
+  var register$1 = function (editor) {
+    editor.addMenuItem('fullscreen', {
+      text: 'Fullscreen',
+      shortcut: 'Ctrl+Shift+F',
+      selectable: true,
+      cmd: 'mceFullScreen',
+      onPostRender: postRender(editor),
+      context: 'view'
+    });
+    editor.addButton('fullscreen', {
+      active: false,
+      tooltip: 'Fullscreen',
+      cmd: 'mceFullScreen',
+      onPostRender: postRender(editor)
+    });
+  };
+  var $_tne4sckjjgwebuo = { register: register$1 };
 
-			editor.on('FullscreenStateChanged', function(e) {
-				self.active(e.state);
-			});
-		}
-	});
+  global.add('fullscreen', function (editor) {
+    var fullscreenState = Cell(null);
+    if (editor.settings.inline) {
+      return $_6qfcwucejjgwebu0.get(fullscreenState);
+    }
+    $_bebdcrcfjjgwebu1.register(editor, fullscreenState);
+    $_tne4sckjjgwebuo.register(editor);
+    editor.addShortcut('Ctrl+Shift+F', '', 'mceFullScreen');
+    return $_6qfcwucejjgwebu0.get(fullscreenState);
+  });
+  function Plugin () {
+  }
 
-	return {
-		isFullscreen: function() {
-			return fullscreenState;
-		}
-	};
-});
\ No newline at end of file
+  return Plugin;
+
+}());
+})();