var fullscreen = (function (domGlobals) {
var Cell = function (initial) {
var clone = function () {
var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
var get = function (fullscreenState) {
isFullscreen: function () {
return fullscreenState.get() !== null;
var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
var fireFullscreenStateChanged = function (editor, state) {
editor.fire('FullscreenStateChanged', { state: state });
var Events = { fireFullscreenStateChanged: fireFullscreenStateChanged };
var getWindowSize = function () {
var win = domGlobals.window;
var doc = domGlobals.document;
if (win.innerWidth && win.innerHeight) {
var getScrollPos = function () {
var vp = DOM.getViewPort();
var setScrollPos = function (pos) {
domGlobals.window.scrollTo(pos.x, pos.y);
var toggleFullscreen = function (editor, fullscreenState) {
var body = domGlobals.document.body;
var documentElement = domGlobals.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(domGlobals.window, 'resize', resize);
editorContainer = editor.getContainer();
editorContainerStyle = editorContainer.style;
iframe = editor.getContentAreaContainer().firstChild;
iframeStyle = iframe.style;
var newFullScreenInfo = {
scrollPos: getScrollPos(),
containerWidth: editorContainerStyle.width,
containerHeight: editorContainerStyle.height,
iframeWidth: iframeStyle.width,
iframeHeight: iframeStyle.height,
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(domGlobals.window, 'resize', resize);
editor.on('remove', removeResize);
fullscreenState.set(newFullScreenInfo);
Events.fireFullscreenStateChanged(editor, true);
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(domGlobals.window, 'resize', fullscreenInfo.resizeHandler);
editor.off('remove', fullscreenInfo.removeHandler);
fullscreenState.set(null);
Events.fireFullscreenStateChanged(editor, false);
var Actions = { toggleFullscreen: toggleFullscreen };
var register = function (editor, fullscreenState) {
editor.addCommand('mceFullScreen', function () {
Actions.toggleFullscreen(editor, fullscreenState);
var Commands = { register: register };
var postRender = function (editor) {
editor.on('FullscreenStateChanged', function (e) {
var register$1 = function (editor) {
editor.addMenuItem('fullscreen', {
shortcut: 'Ctrl+Shift+F',
onPostRender: postRender(editor),
editor.addButton('fullscreen', {
onPostRender: postRender(editor)
var Buttons = { register: register$1 };
global.add('fullscreen', function (editor) {
var fullscreenState = Cell(null);
if (editor.settings.inline) {
return Api.get(fullscreenState);
Commands.register(editor, fullscreenState);
Buttons.register(editor);
editor.addShortcut('Ctrl+Shift+F', '', 'mceFullScreen');
return Api.get(fullscreenState);