Project

General

Profile

1
/*
2
*  Altair Admin
3
*  Codemirror addon (fullscreen)
4
*/
5

    
6
// CodeMirror, copyright (c) by Marijn Haverbeke and others
7
// Distributed under an MIT license: http://codemirror.net/LICENSE
8

    
9
(function(mod) {
10
    if (typeof exports == "object" && typeof module == "object") // CommonJS
11
        mod(require("../../lib/codemirror"));
12
    else if (typeof define == "function" && define.amd) // AMD
13
        define(["../../lib/codemirror"], mod);
14
    else // Plain browser env
15
        mod(CodeMirror);
16
})(function(CodeMirror) {
17
    "use strict";
18

    
19
    CodeMirror.defineOption("fullScreen", false, function(cm, val, old) {
20
        if (old == CodeMirror.Init) old = false;
21
        if (!old == !val) return;
22
        if (val) setFullscreen(cm);
23
        else setNormal(cm);
24
    });
25

    
26
    function setFullscreen(cm) {
27
        var wrap = cm.getWrapperElement();
28
        cm.state.fullScreenRestore = {scrollTop: window.pageYOffset, scrollLeft: window.pageXOffset,
29
            width: wrap.style.width, height: wrap.style.height};
30
        wrap.style.width = "";
31
        wrap.style.height = "auto";
32
        wrap.className += " CodeMirror-fullscreen";
33
        document.body.className += " CodeMirror-fullscreen-active";
34
        document.documentElement.style.overflow = "hidden";
35
        cm.refresh();
36
    }
37

    
38
    function setNormal(cm) {
39
        var wrap = cm.getWrapperElement();
40
        wrap.className = wrap.className.replace(/\s*CodeMirror-fullscreen\b/, "");
41
        document.documentElement.style.overflow = "";
42
        document.body.className = document.body.className.replace(" CodeMirror-fullscreen-active","");
43
        var info = cm.state.fullScreenRestore;
44
        wrap.style.width = info.width; wrap.style.height = info.height;
45
        window.scrollTo(info.scrollLeft, info.scrollTop);
46
        cm.refresh();
47
    }
48
});
(3-3/27)