diff -r 490d5cc509ed -r cf61fcea0001 wp/wp-includes/js/tinymce/plugins/fullscreen/plugin.js --- 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; + +}()); +})();