github.com/elliott5/community@v0.14.1-0.20160709191136-823126fb026a/app/public/codemirror/addon/display/fullscreen.js (about)

     1  // CodeMirror, copyright (c) by Marijn Haverbeke and others
     2  // Distributed under an MIT license: http://codemirror.net/LICENSE
     3  
     4  (function(mod) {
     5    if (typeof exports == "object" && typeof module == "object") // CommonJS
     6      mod(require("../../lib/codemirror"));
     7    else if (typeof define == "function" && define.amd) // AMD
     8      define(["../../lib/codemirror"], mod);
     9    else // Plain browser env
    10      mod(CodeMirror);
    11  })(function(CodeMirror) {
    12    "use strict";
    13  
    14    CodeMirror.defineOption("fullScreen", false, function(cm, val, old) {
    15      if (old == CodeMirror.Init) old = false;
    16      if (!old == !val) return;
    17      if (val) setFullscreen(cm);
    18      else setNormal(cm);
    19    });
    20  
    21    function setFullscreen(cm) {
    22      var wrap = cm.getWrapperElement();
    23      cm.state.fullScreenRestore = {scrollTop: window.pageYOffset, scrollLeft: window.pageXOffset,
    24                                    width: wrap.style.width, height: wrap.style.height};
    25      wrap.style.width = "";
    26      wrap.style.height = "auto";
    27      wrap.className += " CodeMirror-fullscreen";
    28      document.documentElement.style.overflow = "hidden";
    29      cm.refresh();
    30    }
    31  
    32    function setNormal(cm) {
    33      var wrap = cm.getWrapperElement();
    34      wrap.className = wrap.className.replace(/\s*CodeMirror-fullscreen\b/, "");
    35      document.documentElement.style.overflow = "";
    36      var info = cm.state.fullScreenRestore;
    37      wrap.style.width = info.width; wrap.style.height = info.height;
    38      window.scrollTo(info.scrollLeft, info.scrollTop);
    39      cm.refresh();
    40    }
    41  });