1
0
Fork 0
mirror of https://github.com/documize/community.git synced 2025-07-21 06:09:42 +02:00
documize/gui/public/tinymce/plugins/fullscreen/plugin.js

175 lines
5.1 KiB
JavaScript
Raw Normal View History

2017-12-09 12:42:35 +00:00
(function () {
2018-01-19 11:36:38 +00:00
var fullscreen = (function () {
'use strict';
2017-12-09 12:42:35 +00:00
2018-01-19 11:36:38 +00:00
var Cell = function (initial) {
var value = initial;
var get = function () {
return value;
2017-12-09 12:42:35 +00:00
};
2018-01-19 11:36:38 +00:00
var set = function (v) {
value = v;
2017-12-09 12:42:35 +00:00
};
2018-01-19 11:36:38 +00:00
var clone = function () {
return Cell(get());
2017-12-09 12:42:35 +00:00
};
return {
2018-01-19 11:36:38 +00:00
get: get,
set: set,
clone: clone
2017-12-09 12:42:35 +00:00
};
2018-01-19 11:36:38 +00:00
};
2017-12-09 12:42:35 +00:00
2018-01-19 11:36:38 +00:00
var PluginManager = tinymce.util.Tools.resolve('tinymce.PluginManager');
2017-12-09 12:42:35 +00:00
2018-01-19 11:36:38 +00:00
var get = function (fullscreenState) {
return {
isFullscreen: function () {
return fullscreenState.get() !== null;
2017-12-09 12:42:35 +00:00
}
};
2018-01-19 11:36:38 +00:00
};
2018-01-25 16:14:37 +00:00
var $_ae9ai4bbjcun3xwk = { get: get };
2017-12-09 12:42:35 +00:00
2018-01-19 11:36:38 +00:00
var DOMUtils = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
2017-12-09 12:42:35 +00:00
2018-01-19 11:36:38 +00:00
var fireFullscreenStateChanged = function (editor, state) {
editor.fire('FullscreenStateChanged', { state: state });
};
2018-01-25 16:14:37 +00:00
var $_2eqveubfjcun3xwx = { fireFullscreenStateChanged: fireFullscreenStateChanged };
2018-01-19 11:36:38 +00:00
var DOM = DOMUtils.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
2017-12-09 12:42:35 +00:00
};
2018-01-19 11:36:38 +00:00
};
var getScrollPos = function () {
var vp = DOM.getViewPort();
2017-12-09 12:42:35 +00:00
return {
2018-01-19 11:36:38 +00:00
x: vp.x,
y: vp.y
2017-12-09 12:42:35 +00:00
};
2018-01-19 11:36:38 +00:00
};
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));
2017-12-09 12:42:35 +00:00
};
2018-01-19 11:36:38 +00:00
var removeResize = function () {
DOM.unbind(window, 'resize', resize);
2017-12-09 12:42:35 +00:00
};
2018-01-19 11:36:38 +00:00
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
2017-12-09 12:42:35 +00:00
};
2018-01-19 11:36:38 +00:00
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);
2018-01-25 16:14:37 +00:00
$_2eqveubfjcun3xwx.fireFullscreenStateChanged(editor, true);
2018-01-19 11:36:38 +00:00
} 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);
2018-01-25 16:14:37 +00:00
$_2eqveubfjcun3xwx.fireFullscreenStateChanged(editor, false);
2018-01-19 11:36:38 +00:00
}
};
2018-01-25 16:14:37 +00:00
var $_2ivrlhbdjcun3xwr = { toggleFullscreen: toggleFullscreen };
2017-12-09 12:42:35 +00:00
2018-01-19 11:36:38 +00:00
var register = function (editor, fullscreenState) {
editor.addCommand('mceFullScreen', function () {
2018-01-25 16:14:37 +00:00
$_2ivrlhbdjcun3xwr.toggleFullscreen(editor, fullscreenState);
2018-01-19 11:36:38 +00:00
});
};
2018-01-25 16:14:37 +00:00
var $_b25jiwbcjcun3xwm = { register: register };
2017-12-09 12:42:35 +00:00
2018-01-19 11:36:38 +00:00
var postRender = function (editor) {
return function (e) {
var ctrl = e.control;
editor.on('FullscreenStateChanged', function (e) {
ctrl.active(e.state);
2017-12-09 12:42:35 +00:00
});
};
2018-01-19 11:36:38 +00:00
};
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)
2017-12-09 12:42:35 +00:00
});
2018-01-19 11:36:38 +00:00
};
2018-01-25 16:14:37 +00:00
var $_al2nebgjcun3xwz = { register: register$1 };
2018-01-19 11:36:38 +00:00
PluginManager.add('fullscreen', function (editor) {
var fullscreenState = Cell(null);
2018-01-25 16:14:37 +00:00
$_b25jiwbcjcun3xwm.register(editor, fullscreenState);
$_al2nebgjcun3xwz.register(editor);
2018-01-19 11:36:38 +00:00
editor.addShortcut('Ctrl+Shift+F', '', 'mceFullScreen');
2018-01-25 16:14:37 +00:00
return $_ae9ai4bbjcun3xwk.get(fullscreenState);
2018-01-19 11:36:38 +00:00
});
var Plugin = function () {
};
return Plugin;
2017-12-09 12:42:35 +00:00
2018-01-19 11:36:38 +00:00
}());
})()