Spaces:
Sleeping
Sleeping
(function () { | |
var fullscreen = (function (domGlobals) { | |
'use strict'; | |
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 | |
}; | |
}; | |
var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); | |
var get = function (fullscreenState) { | |
return { | |
isFullscreen: function () { | |
return fullscreenState.get() !== null; | |
} | |
}; | |
}; | |
var Api = { get: get }; | |
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 DOM = global$1.DOM; | |
var getWindowSize = function () { | |
var w; | |
var h; | |
var win = domGlobals.window; | |
var doc = domGlobals.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) { | |
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; | |
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(domGlobals.window, 'resize', resize); | |
editor.on('remove', removeResize); | |
resize(); | |
fullscreenState.set(newFullScreenInfo); | |
Events.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(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) { | |
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 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); | |
}); | |
function Plugin () { | |
} | |
return Plugin; | |
}(window)); | |
})(); | |