Mercurial
comparison .cms/lib/codemirror/addon/display/autorefresh.js @ 0:78edf6b517a0 draft
24.10
author | Coffee CMS <info@coffee-cms.ru> |
---|---|
date | Fri, 11 Oct 2024 22:40:23 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:78edf6b517a0 |
---|---|
1 // CodeMirror, copyright (c) by Marijn Haverbeke and others | |
2 // Distributed under an MIT license: https://codemirror.net/5/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 }); |