github.com/elliott5/community@v0.14.1-0.20160709191136-823126fb026a/app/public/codemirror/addon/display/autorefresh.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("autoRefresh", false, function(cm, val) { 15 if (cm.state.autoRefresh) { 16 stopListening(cm, cm.state.autoRefresh) 17 cm.state.autoRefresh = null 18 } 19 if (val && cm.display.wrapper.offsetHeight == 0) 20 startListening(cm, cm.state.autoRefresh = {delay: val.delay || 250}) 21 }) 22 23 function startListening(cm, state) { 24 function check() { 25 if (cm.display.wrapper.offsetHeight) { 26 stopListening(cm, state) 27 if (cm.display.lastWrapHeight != cm.display.wrapper.clientHeight) 28 cm.refresh() 29 } else { 30 state.timeout = setTimeout(check, state.delay) 31 } 32 } 33 state.timeout = setTimeout(check, state.delay) 34 state.hurry = function() { 35 clearTimeout(state.timeout) 36 state.timeout = setTimeout(check, 50) 37 } 38 CodeMirror.on(window, "mouseup", state.hurry) 39 CodeMirror.on(window, "keyup", state.hurry) 40 } 41 42 function stopListening(_cm, state) { 43 clearTimeout(state.timeout) 44 CodeMirror.off(window, "mouseup", state.hurry) 45 CodeMirror.off(window, "keyup", state.hurry) 46 } 47 });