annotate .cms/lib/codemirror/demo/widget.html @ 1:1d486627aa1e draft default tip

24.10
author Coffee CMS <info@coffee-cms.ru>
date Sat, 12 Oct 2024 02:51:39 +0000
parents 78edf6b517a0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1 <!doctype html>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
2
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
3 <title>CodeMirror: Inline Widget Demo</title>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
4 <meta charset="utf-8"/>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
5 <link rel=stylesheet href="../doc/docs.css">
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
6
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
7 <link rel="stylesheet" href="../lib/codemirror.css">
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
8 <script src="../lib/codemirror.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
9 <script src="../mode/javascript/javascript.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
10 <script src="https://cdnjs.cloudflare.com/ajax/libs/jshint/2.9.5/jshint.min.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
11 <style>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
12 .CodeMirror {border: 1px solid black;}
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
13 .lint-error {font-family: arial; font-size: 70%; background: #ffa; color: #a00; padding: 2px 5px 3px; }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
14 .lint-error-icon {color: white; background-color: red; font-weight: bold; border-radius: 50%; padding: 0 3px; margin-right: 7px;}
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
15 </style>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
16 <div id=nav>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
17 <a href="https://codemirror.net/5"><h1>CodeMirror</h1><img id=logo src="../doc/logo.png"></a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
18
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
19 <ul>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
20 <li><a href="../index.html">Home</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
21 <li><a href="../doc/manual.html">Manual</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
22 <li><a href="https://github.com/codemirror/codemirror5">Code</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
23 </ul>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
24 <ul>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
25 <li><a class=active href="#">Inline Widget</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
26 </ul>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
27 </div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
28
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
29 <article>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
30 <h2>Inline Widget Demo</h2>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
31
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
32
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
33 <div id=code></div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
34 <script id="script">var widgets = []
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
35 function updateHints() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
36 editor.operation(function(){
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
37 for (var i = 0; i < widgets.length; ++i)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
38 editor.removeLineWidget(widgets[i]);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
39 widgets.length = 0;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
40
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
41 JSHINT(editor.getValue());
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
42 for (var i = 0; i < JSHINT.errors.length; ++i) {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
43 var err = JSHINT.errors[i];
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
44 if (!err) continue;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
45 var msg = document.createElement("div");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
46 var icon = msg.appendChild(document.createElement("span"));
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
47 icon.innerHTML = "!!";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
48 icon.className = "lint-error-icon";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
49 msg.appendChild(document.createTextNode(err.reason));
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
50 msg.className = "lint-error";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
51 widgets.push(editor.addLineWidget(err.line - 1, msg, {coverGutter: false, noHScroll: true}));
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
52 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
53 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
54 var info = editor.getScrollInfo();
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
55 var after = editor.charCoords({line: editor.getCursor().line + 1, ch: 0}, "local").top;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
56 if (info.top + info.clientHeight < after)
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
57 editor.scrollTo(null, after - info.clientHeight + 3);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
58 }
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
59
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
60 window.onload = function() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
61 var sc = document.getElementById("script");
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
62 var content = sc.textContent || sc.innerText || sc.innerHTML;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
63
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
64 window.editor = CodeMirror(document.getElementById("code"), {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
65 lineNumbers: true,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
66 mode: "javascript",
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
67 value: content
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
68 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
69
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
70 var waiting;
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
71 editor.on("change", function() {
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
72 clearTimeout(waiting);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
73 waiting = setTimeout(updateHints, 500);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
74 });
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
75
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
76 setTimeout(updateHints, 100);
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
77 };
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
78
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
79 "long line to create a horizontal scrollbar, in order to test whether the (non-inline) widgets stay in place when scrolling to the right";
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
80 </script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
81 <p>This demo runs <a href="http://jshint.com">JSHint</a> over the code
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
82 in the editor (which is the script used on this page), and
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
83 inserts <a href="../doc/manual.html#addLineWidget">line widgets</a> to
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
84 display the warnings that JSHint comes up with.</p>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
85 </article>