fullscreen.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // CodeMirror, copyright (c) by Marijn Haverbeke and others
  2. // Distributed under an MIT license: https://codemirror.net/LICENSE
  3. ;(function (mod) {
  4. if (typeof exports == 'object' && typeof module == 'object')
  5. // CommonJS
  6. mod(require('../../lib/codemirror'))
  7. else if (typeof define == 'function' && define.amd)
  8. // AMD
  9. define(['../../lib/codemirror'], mod)
  10. // Plain browser env
  11. else mod(CodeMirror)
  12. })(function (CodeMirror) {
  13. 'use strict'
  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. function setFullscreen(cm) {
  21. var wrap = cm.getWrapperElement()
  22. cm.state.fullScreenRestore = { scrollTop: window.pageYOffset, scrollLeft: window.pageXOffset, width: wrap.style.width, height: wrap.style.height }
  23. wrap.style.width = ''
  24. wrap.style.height = 'auto'
  25. wrap.className += ' CodeMirror-fullscreen'
  26. document.documentElement.style.overflow = 'hidden'
  27. cm.refresh()
  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
  35. wrap.style.height = info.height
  36. window.scrollTo(info.scrollLeft, info.scrollTop)
  37. cm.refresh()
  38. }
  39. })