wp/wp-includes/js/tinymce/plugins/fullscreen/plugin.js
changeset 9 177826044cd9
parent 7 cf61fcea0001
equal deleted inserted replaced
8:c7c34916027a 9:177826044cd9
     1 (function () {
     1 (function () {
     2 var fullscreen = (function () {
     2 var fullscreen = (function (domGlobals) {
     3   'use strict';
     3     'use strict';
     4 
     4 
     5   var Cell = function (initial) {
     5     var Cell = function (initial) {
     6     var value = initial;
     6       var value = initial;
     7     var get = function () {
     7       var get = function () {
     8       return value;
     8         return value;
       
     9       };
       
    10       var set = function (v) {
       
    11         value = v;
       
    12       };
       
    13       var clone = function () {
       
    14         return Cell(get());
       
    15       };
       
    16       return {
       
    17         get: get,
       
    18         set: set,
       
    19         clone: clone
       
    20       };
     9     };
    21     };
    10     var set = function (v) {
    22 
    11       value = v;
    23     var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
       
    24 
       
    25     var get = function (fullscreenState) {
       
    26       return {
       
    27         isFullscreen: function () {
       
    28           return fullscreenState.get() !== null;
       
    29         }
       
    30       };
    12     };
    31     };
    13     var clone = function () {
    32     var Api = { get: get };
    14       return Cell(get());
    33 
       
    34     var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
       
    35 
       
    36     var fireFullscreenStateChanged = function (editor, state) {
       
    37       editor.fire('FullscreenStateChanged', { state: state });
    15     };
    38     };
    16     return {
    39     var Events = { fireFullscreenStateChanged: fireFullscreenStateChanged };
    17       get: get,
    40 
    18       set: set,
    41     var DOM = global$1.DOM;
    19       clone: clone
    42     var getWindowSize = function () {
       
    43       var w;
       
    44       var h;
       
    45       var win = domGlobals.window;
       
    46       var doc = domGlobals.document;
       
    47       var body = doc.body;
       
    48       if (body.offsetWidth) {
       
    49         w = body.offsetWidth;
       
    50         h = body.offsetHeight;
       
    51       }
       
    52       if (win.innerWidth && win.innerHeight) {
       
    53         w = win.innerWidth;
       
    54         h = win.innerHeight;
       
    55       }
       
    56       return {
       
    57         w: w,
       
    58         h: h
       
    59       };
    20     };
    60     };
    21   };
    61     var getScrollPos = function () {
    22 
    62       var vp = DOM.getViewPort();
    23   var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
    63       return {
    24 
    64         x: vp.x,
    25   var get = function (fullscreenState) {
    65         y: vp.y
    26     return {
    66       };
    27       isFullscreen: function () {
    67     };
    28         return fullscreenState.get() !== null;
    68     var setScrollPos = function (pos) {
       
    69       domGlobals.window.scrollTo(pos.x, pos.y);
       
    70     };
       
    71     var toggleFullscreen = function (editor, fullscreenState) {
       
    72       var body = domGlobals.document.body;
       
    73       var documentElement = domGlobals.document.documentElement;
       
    74       var editorContainerStyle;
       
    75       var editorContainer, iframe, iframeStyle;
       
    76       var fullscreenInfo = fullscreenState.get();
       
    77       var resize = function () {
       
    78         DOM.setStyle(iframe, 'height', getWindowSize().h - (editorContainer.clientHeight - iframe.clientHeight));
       
    79       };
       
    80       var removeResize = function () {
       
    81         DOM.unbind(domGlobals.window, 'resize', resize);
       
    82       };
       
    83       editorContainer = editor.getContainer();
       
    84       editorContainerStyle = editorContainer.style;
       
    85       iframe = editor.getContentAreaContainer().firstChild;
       
    86       iframeStyle = iframe.style;
       
    87       if (!fullscreenInfo) {
       
    88         var newFullScreenInfo = {
       
    89           scrollPos: getScrollPos(),
       
    90           containerWidth: editorContainerStyle.width,
       
    91           containerHeight: editorContainerStyle.height,
       
    92           iframeWidth: iframeStyle.width,
       
    93           iframeHeight: iframeStyle.height,
       
    94           resizeHandler: resize,
       
    95           removeHandler: removeResize
       
    96         };
       
    97         iframeStyle.width = iframeStyle.height = '100%';
       
    98         editorContainerStyle.width = editorContainerStyle.height = '';
       
    99         DOM.addClass(body, 'mce-fullscreen');
       
   100         DOM.addClass(documentElement, 'mce-fullscreen');
       
   101         DOM.addClass(editorContainer, 'mce-fullscreen');
       
   102         DOM.bind(domGlobals.window, 'resize', resize);
       
   103         editor.on('remove', removeResize);
       
   104         resize();
       
   105         fullscreenState.set(newFullScreenInfo);
       
   106         Events.fireFullscreenStateChanged(editor, true);
       
   107       } else {
       
   108         iframeStyle.width = fullscreenInfo.iframeWidth;
       
   109         iframeStyle.height = fullscreenInfo.iframeHeight;
       
   110         if (fullscreenInfo.containerWidth) {
       
   111           editorContainerStyle.width = fullscreenInfo.containerWidth;
       
   112         }
       
   113         if (fullscreenInfo.containerHeight) {
       
   114           editorContainerStyle.height = fullscreenInfo.containerHeight;
       
   115         }
       
   116         DOM.removeClass(body, 'mce-fullscreen');
       
   117         DOM.removeClass(documentElement, 'mce-fullscreen');
       
   118         DOM.removeClass(editorContainer, 'mce-fullscreen');
       
   119         setScrollPos(fullscreenInfo.scrollPos);
       
   120         DOM.unbind(domGlobals.window, 'resize', fullscreenInfo.resizeHandler);
       
   121         editor.off('remove', fullscreenInfo.removeHandler);
       
   122         fullscreenState.set(null);
       
   123         Events.fireFullscreenStateChanged(editor, false);
    29       }
   124       }
    30     };
   125     };
    31   };
   126     var Actions = { toggleFullscreen: toggleFullscreen };
    32   var $_6qfcwucejjgwebu0 = { get: get };
       
    33 
   127 
    34   var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
   128     var register = function (editor, fullscreenState) {
    35 
   129       editor.addCommand('mceFullScreen', function () {
    36   var fireFullscreenStateChanged = function (editor, state) {
   130         Actions.toggleFullscreen(editor, fullscreenState);
    37     editor.fire('FullscreenStateChanged', { state: state });
       
    38   };
       
    39   var $_en5ltwcijjgwebu6 = { fireFullscreenStateChanged: fireFullscreenStateChanged };
       
    40 
       
    41   var DOM = global$1.DOM;
       
    42   var getWindowSize = function () {
       
    43     var w;
       
    44     var h;
       
    45     var win = window;
       
    46     var doc = document;
       
    47     var body = doc.body;
       
    48     if (body.offsetWidth) {
       
    49       w = body.offsetWidth;
       
    50       h = body.offsetHeight;
       
    51     }
       
    52     if (win.innerWidth && win.innerHeight) {
       
    53       w = win.innerWidth;
       
    54       h = win.innerHeight;
       
    55     }
       
    56     return {
       
    57       w: w,
       
    58       h: h
       
    59     };
       
    60   };
       
    61   var getScrollPos = function () {
       
    62     var vp = DOM.getViewPort();
       
    63     return {
       
    64       x: vp.x,
       
    65       y: vp.y
       
    66     };
       
    67   };
       
    68   var setScrollPos = function (pos) {
       
    69     window.scrollTo(pos.x, pos.y);
       
    70   };
       
    71   var toggleFullscreen = function (editor, fullscreenState) {
       
    72     var body = document.body;
       
    73     var documentElement = document.documentElement;
       
    74     var editorContainerStyle;
       
    75     var editorContainer, iframe, iframeStyle;
       
    76     var fullscreenInfo = fullscreenState.get();
       
    77     var resize = function () {
       
    78       DOM.setStyle(iframe, 'height', getWindowSize().h - (editorContainer.clientHeight - iframe.clientHeight));
       
    79     };
       
    80     var removeResize = function () {
       
    81       DOM.unbind(window, 'resize', resize);
       
    82     };
       
    83     editorContainer = editor.getContainer();
       
    84     editorContainerStyle = editorContainer.style;
       
    85     iframe = editor.getContentAreaContainer().firstChild;
       
    86     iframeStyle = iframe.style;
       
    87     if (!fullscreenInfo) {
       
    88       var newFullScreenInfo = {
       
    89         scrollPos: getScrollPos(),
       
    90         containerWidth: editorContainerStyle.width,
       
    91         containerHeight: editorContainerStyle.height,
       
    92         iframeWidth: iframeStyle.width,
       
    93         iframeHeight: iframeStyle.height,
       
    94         resizeHandler: resize,
       
    95         removeHandler: removeResize
       
    96       };
       
    97       iframeStyle.width = iframeStyle.height = '100%';
       
    98       editorContainerStyle.width = editorContainerStyle.height = '';
       
    99       DOM.addClass(body, 'mce-fullscreen');
       
   100       DOM.addClass(documentElement, 'mce-fullscreen');
       
   101       DOM.addClass(editorContainer, 'mce-fullscreen');
       
   102       DOM.bind(window, 'resize', resize);
       
   103       editor.on('remove', removeResize);
       
   104       resize();
       
   105       fullscreenState.set(newFullScreenInfo);
       
   106       $_en5ltwcijjgwebu6.fireFullscreenStateChanged(editor, true);
       
   107     } else {
       
   108       iframeStyle.width = fullscreenInfo.iframeWidth;
       
   109       iframeStyle.height = fullscreenInfo.iframeHeight;
       
   110       if (fullscreenInfo.containerWidth) {
       
   111         editorContainerStyle.width = fullscreenInfo.containerWidth;
       
   112       }
       
   113       if (fullscreenInfo.containerHeight) {
       
   114         editorContainerStyle.height = fullscreenInfo.containerHeight;
       
   115       }
       
   116       DOM.removeClass(body, 'mce-fullscreen');
       
   117       DOM.removeClass(documentElement, 'mce-fullscreen');
       
   118       DOM.removeClass(editorContainer, 'mce-fullscreen');
       
   119       setScrollPos(fullscreenInfo.scrollPos);
       
   120       DOM.unbind(window, 'resize', fullscreenInfo.resizeHandler);
       
   121       editor.off('remove', fullscreenInfo.removeHandler);
       
   122       fullscreenState.set(null);
       
   123       $_en5ltwcijjgwebu6.fireFullscreenStateChanged(editor, false);
       
   124     }
       
   125   };
       
   126   var $_dvg07kcgjjgwebu3 = { toggleFullscreen: toggleFullscreen };
       
   127 
       
   128   var register = function (editor, fullscreenState) {
       
   129     editor.addCommand('mceFullScreen', function () {
       
   130       $_dvg07kcgjjgwebu3.toggleFullscreen(editor, fullscreenState);
       
   131     });
       
   132   };
       
   133   var $_bebdcrcfjjgwebu1 = { register: register };
       
   134 
       
   135   var postRender = function (editor) {
       
   136     return function (e) {
       
   137       var ctrl = e.control;
       
   138       editor.on('FullscreenStateChanged', function (e) {
       
   139         ctrl.active(e.state);
       
   140       });
   131       });
   141     };
   132     };
   142   };
   133     var Commands = { register: register };
   143   var register$1 = function (editor) {
   134 
   144     editor.addMenuItem('fullscreen', {
   135     var postRender = function (editor) {
   145       text: 'Fullscreen',
   136       return function (e) {
   146       shortcut: 'Ctrl+Shift+F',
   137         var ctrl = e.control;
   147       selectable: true,
   138         editor.on('FullscreenStateChanged', function (e) {
   148       cmd: 'mceFullScreen',
   139           ctrl.active(e.state);
   149       onPostRender: postRender(editor),
   140         });
   150       context: 'view'
   141       };
       
   142     };
       
   143     var register$1 = function (editor) {
       
   144       editor.addMenuItem('fullscreen', {
       
   145         text: 'Fullscreen',
       
   146         shortcut: 'Ctrl+Shift+F',
       
   147         selectable: true,
       
   148         cmd: 'mceFullScreen',
       
   149         onPostRender: postRender(editor),
       
   150         context: 'view'
       
   151       });
       
   152       editor.addButton('fullscreen', {
       
   153         active: false,
       
   154         tooltip: 'Fullscreen',
       
   155         cmd: 'mceFullScreen',
       
   156         onPostRender: postRender(editor)
       
   157       });
       
   158     };
       
   159     var Buttons = { register: register$1 };
       
   160 
       
   161     global.add('fullscreen', function (editor) {
       
   162       var fullscreenState = Cell(null);
       
   163       if (editor.settings.inline) {
       
   164         return Api.get(fullscreenState);
       
   165       }
       
   166       Commands.register(editor, fullscreenState);
       
   167       Buttons.register(editor);
       
   168       editor.addShortcut('Ctrl+Shift+F', '', 'mceFullScreen');
       
   169       return Api.get(fullscreenState);
   151     });
   170     });
   152     editor.addButton('fullscreen', {
   171     function Plugin () {
   153       active: false,
   172     }
   154       tooltip: 'Fullscreen',
       
   155       cmd: 'mceFullScreen',
       
   156       onPostRender: postRender(editor)
       
   157     });
       
   158   };
       
   159   var $_tne4sckjjgwebuo = { register: register$1 };
       
   160 
   173 
   161   global.add('fullscreen', function (editor) {
   174     return Plugin;
   162     var fullscreenState = Cell(null);
       
   163     if (editor.settings.inline) {
       
   164       return $_6qfcwucejjgwebu0.get(fullscreenState);
       
   165     }
       
   166     $_bebdcrcfjjgwebu1.register(editor, fullscreenState);
       
   167     $_tne4sckjjgwebuo.register(editor);
       
   168     editor.addShortcut('Ctrl+Shift+F', '', 'mceFullScreen');
       
   169     return $_6qfcwucejjgwebu0.get(fullscreenState);
       
   170   });
       
   171   function Plugin () {
       
   172   }
       
   173 
   175 
   174   return Plugin;
   176 }(window));
   175 
       
   176 }());
       
   177 })();
   177 })();