summaryrefslogtreecommitdiffstats
path: root/wp-includes/js/tinymce/plugins/fullscreen
diff options
context:
space:
mode:
Diffstat (limited to 'wp-includes/js/tinymce/plugins/fullscreen')
-rw-r--r--wp-includes/js/tinymce/plugins/fullscreen/plugin.js177
-rw-r--r--wp-includes/js/tinymce/plugins/fullscreen/plugin.min.js1
2 files changed, 178 insertions, 0 deletions
diff --git a/wp-includes/js/tinymce/plugins/fullscreen/plugin.js b/wp-includes/js/tinymce/plugins/fullscreen/plugin.js
new file mode 100644
index 0000000..1c5c00e
--- /dev/null
+++ b/wp-includes/js/tinymce/plugins/fullscreen/plugin.js
@@ -0,0 +1,177 @@
+(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));
+})();
diff --git a/wp-includes/js/tinymce/plugins/fullscreen/plugin.min.js b/wp-includes/js/tinymce/plugins/fullscreen/plugin.min.js
new file mode 100644
index 0000000..259afc9
--- /dev/null
+++ b/wp-includes/js/tinymce/plugins/fullscreen/plugin.min.js
@@ -0,0 +1 @@
+!function(m){"use strict";var i=function(e){var n=e,t=function(){return n};return{get:t,set:function(e){n=e},clone:function(){return i(t())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(e){return{isFullscreen:function(){return null!==e.get()}}},n=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),g=function(e,n){e.fire("FullscreenStateChanged",{state:n})},w=n.DOM,r=function(e,n){var t,r,l,i,o,c,s=m.document.body,u=m.document.documentElement,d=n.get(),a=function(){var e,n,t,i;w.setStyle(l,"height",(t=m.window,i=m.document.body,i.offsetWidth&&(e=i.offsetWidth,n=i.offsetHeight),t.innerWidth&&t.innerHeight&&(e=t.innerWidth,n=t.innerHeight),{w:e,h:n}).h-(r.clientHeight-l.clientHeight))},h=function(){w.unbind(m.window,"resize",a)};if(t=(r=e.getContainer()).style,i=(l=e.getContentAreaContainer().firstChild).style,d)i.width=d.iframeWidth,i.height=d.iframeHeight,d.containerWidth&&(t.width=d.containerWidth),d.containerHeight&&(t.height=d.containerHeight),w.removeClass(s,"mce-fullscreen"),w.removeClass(u,"mce-fullscreen"),w.removeClass(r,"mce-fullscreen"),o=d.scrollPos,m.window.scrollTo(o.x,o.y),w.unbind(m.window,"resize",d.resizeHandler),e.off("remove",d.removeHandler),n.set(null),g(e,!1);else{var f={scrollPos:(c=w.getViewPort(),{x:c.x,y:c.y}),containerWidth:t.width,containerHeight:t.height,iframeWidth:i.width,iframeHeight:i.height,resizeHandler:a,removeHandler:h};i.width=i.height="100%",t.width=t.height="",w.addClass(s,"mce-fullscreen"),w.addClass(u,"mce-fullscreen"),w.addClass(r,"mce-fullscreen"),w.bind(m.window,"resize",a),e.on("remove",h),a(),n.set(f),g(e,!0)}},l=function(e,n){e.addCommand("mceFullScreen",function(){r(e,n)})},o=function(t){return function(e){var n=e.control;t.on("FullscreenStateChanged",function(e){n.active(e.state)})}},c=function(e){e.addMenuItem("fullscreen",{text:"Fullscreen",shortcut:"Ctrl+Shift+F",selectable:!0,cmd:"mceFullScreen",onPostRender:o(e),context:"view"}),e.addButton("fullscreen",{active:!1,tooltip:"Fullscreen",cmd:"mceFullScreen",onPostRender:o(e)})};e.add("fullscreen",function(e){var n=i(null);return e.settings.inline||(l(e,n),c(e),e.addShortcut("Ctrl+Shift+F","","mceFullScreen")),t(n)})}(window); \ No newline at end of file