Merge branch '2.0'
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / js / 3rdParty / codemirror / addon / display / fullscreen.js
1 (function(mod) {
2 if (typeof exports == "object" && typeof module == "object") // CommonJS
3 mod(require("../../lib/codemirror"));
4 else if (typeof define == "function" && define.amd) // AMD
5 define(["../../lib/codemirror"], mod);
6 else // Plain browser env
7 mod(CodeMirror);
8 })(function(CodeMirror) {
9 "use strict";
10
11 CodeMirror.defineOption("fullScreen", false, function(cm, val, old) {
12 if (old == CodeMirror.Init) old = false;
13 if (!old == !val) return;
14 if (val) setFullscreen(cm);
15 else setNormal(cm);
16 });
17
18 function setFullscreen(cm) {
19 var wrap = cm.getWrapperElement();
20 cm.state.fullScreenRestore = {scrollTop: window.pageYOffset, scrollLeft: window.pageXOffset,
21 width: wrap.style.width, height: wrap.style.height};
22 wrap.style.width = "";
23 wrap.style.height = "auto";
24 wrap.className += " CodeMirror-fullscreen";
25 document.documentElement.style.overflow = "hidden";
26 cm.refresh();
27 }
28
29 function setNormal(cm) {
30 var wrap = cm.getWrapperElement();
31 wrap.className = wrap.className.replace(/\s*CodeMirror-fullscreen\b/, "");
32 document.documentElement.style.overflow = "";
33 var info = cm.state.fullScreenRestore;
34 wrap.style.width = info.width; wrap.style.height = info.height;
35 window.scrollTo(info.scrollLeft, info.scrollTop);
36 cm.refresh();
37 }
38 });