|
|
@@ -0,0 +1,51 @@
|
|
|
+/**
|
|
|
+ * extends codemirror/addon/display/autorefresh
|
|
|
+ *
|
|
|
+ * @author Yuki Takei <yuki@weseek.co.jp>
|
|
|
+ * @see https://codemirror.net/addon/display/autorefresh.js
|
|
|
+ * @see https://github.com/scniro/react-codemirror2/issues/83#issuecomment-398825212
|
|
|
+ */
|
|
|
+/* eslint-disable */
|
|
|
+
|
|
|
+// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
|
|
+// Distributed under an MIT license: http://codemirror.net/LICENSE
|
|
|
+
|
|
|
+(function(mod) {
|
|
|
+ mod(require("codemirror"));
|
|
|
+})(function(CodeMirror) {
|
|
|
+ "use strict"
|
|
|
+
|
|
|
+ CodeMirror.defineOption("autoRefresh", false, function(cm, val) {
|
|
|
+ if (cm.state.autoRefresh) {
|
|
|
+ stopListening(cm, cm.state.autoRefresh)
|
|
|
+ cm.state.autoRefresh = null
|
|
|
+ }
|
|
|
+ if (val && (val.force || cm.display.wrapper.offsetHeight == 0))
|
|
|
+ startListening(cm, cm.state.autoRefresh = {delay: val.delay || 250})
|
|
|
+ })
|
|
|
+
|
|
|
+ function startListening(cm, state) {
|
|
|
+ function check() {
|
|
|
+ if (cm.display.wrapper.offsetHeight) {
|
|
|
+ stopListening(cm, state)
|
|
|
+ if (cm.display.lastWrapHeight != cm.display.wrapper.clientHeight)
|
|
|
+ cm.refresh()
|
|
|
+ } else {
|
|
|
+ state.timeout = setTimeout(check, state.delay)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ state.timeout = setTimeout(check, state.delay)
|
|
|
+ state.hurry = function() {
|
|
|
+ clearTimeout(state.timeout)
|
|
|
+ state.timeout = setTimeout(check, 50)
|
|
|
+ }
|
|
|
+ CodeMirror.on(window, "mouseup", state.hurry)
|
|
|
+ CodeMirror.on(window, "keyup", state.hurry)
|
|
|
+ }
|
|
|
+
|
|
|
+ function stopListening(_cm, state) {
|
|
|
+ clearTimeout(state.timeout)
|
|
|
+ CodeMirror.off(window, "mouseup", state.hurry)
|
|
|
+ CodeMirror.off(window, "keyup", state.hurry)
|
|
|
+ }
|
|
|
+});
|