fast72 commited on
Commit
83c4a31
·
verified ·
1 Parent(s): cd4551a

Update public/index.html

Browse files
Files changed (1) hide show
  1. public/index.html +71 -50
public/index.html CHANGED
@@ -3,77 +3,98 @@
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>CodeMirror 5 - Multi Language Editor</title>
7
- <link rel="stylesheet" href="https://codemirror.net/lib/codemirror.css">
8
- <script src="https://codemirror.net/codemirror.js"></script>
9
- <script src="https://codemirror.net/addon/edit/closebrackets.js"></script>
10
- <script src="https://codemirror.net/addon/selection/active-line.js"></script>
11
- <script src="https://codemirror.net/addon/lint/lint.js"></script>
12
-
13
- <script src="https://codemirror.net/mode/javascript/javascript.js"></script>
14
- <script src="https://codemirror.net/mode/python/python.js"></script>
15
- <script src="https://codemirror.net/mode/htmlmixed/htmlmixed.js"></script>
16
- <script src="https://codemirror.net/mode/css/css.js"></script>
17
- <script src="https://codemirror.net/mode/xml/xml.js"></script>
18
- <script src="https://codemirror.net/mode/php/php.js"></script>
19
- <script src="https://codemirror.net/mode/clike/clike.js"></script>
20
- <script src="https://codemirror.net/mode/sql/sql.js"></script>
21
-
22
  <style>
23
  body { font-family: Arial, sans-serif; margin: 20px; }
24
- #editor-container { width: 100%; max-width: 800px; margin: auto; }
25
- #editor { height: 500px; border: 1px solid #ddd; }
26
  select, button, label { margin: 5px; padding: 8px; font-size: 16px; }
27
  </style>
28
  </head>
29
  <body>
30
- <div id="editor-container">
31
- <h2>CodeMirror 5 Editor</h2>
32
- <select id="language">
33
- <option value="javascript">JavaScript</option>
34
- <option value="python">Python</option>
35
- <option value="htmlmixed">HTML</option>
36
- <option value="css">CSS</option>
37
- <option value="php">PHP</option>
38
- <option value="clike">C / C++ / Java</option>
39
- <option value="sql">SQL</option>
40
- <option value="xml">XML</option>
41
- </select>
42
- <button onclick="downloadFile()">Download</button>
43
- <label><input type="checkbox" id="wrapCode"> Wrap Code</label>
44
- <textarea id="code">// Start coding...</textarea>
45
- <div id="editor"></div>
46
- </div>
 
 
 
47
 
48
- <script>
49
- let editor = CodeMirror(document.getElementById("editor"), {
50
- value: "// Start coding...\nconsole.log('Hello, CodeMirror 5!');",
51
- lineNumbers: true,
52
- mode: "javascript",
53
- theme: "default",
54
- matchBrackets: true,
55
- autoCloseBrackets: true,
56
- styleActiveLine: true,
57
- indentUnit: 4,
58
- tabSize: 4
59
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
 
61
  document.getElementById("language").addEventListener("change", function() {
62
- editor.setOption("mode", this.value);
63
  });
64
 
65
  document.getElementById("wrapCode").addEventListener("change", function() {
66
- editor.setOption("lineWrapping", this.checked);
67
  });
68
 
69
  function downloadFile() {
70
- const content = editor.getValue();
71
  const blob = new Blob([content], { type: "text/plain" });
72
  const a = document.createElement("a");
73
  a.href = URL.createObjectURL(blob);
74
  a.download = "code.txt";
75
  a.click();
76
  }
 
 
77
  </script>
78
  </body>
79
  </html>
 
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>CodeMirror 6 - Editor dengan Pre</title>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  <style>
8
  body { font-family: Arial, sans-serif; margin: 20px; }
9
+ pre { background: #f5f5f5; padding: 10px; border: 1px solid #ddd; }
10
+ #editor-container { height: 500px; border: 1px solid #ddd; margin-top: 10px; }
11
  select, button, label { margin: 5px; padding: 8px; font-size: 16px; }
12
  </style>
13
  </head>
14
  <body>
15
+ <h2>CodeMirror 6 Editor</h2>
16
+ <select id="language">
17
+ <option value="javascript">JavaScript</option>
18
+ <option value="python">Python</option>
19
+ <option value="html">HTML</option>
20
+ <option value="css">CSS</option>
21
+ <option value="php">PHP</option>
22
+ <option value="java">Java</option>
23
+ <option value="cpp">C++</option>
24
+ <option value="c">C</option>
25
+ <option value="sql">SQL</option>
26
+ <option value="xml">XML</option>
27
+ <option value="rust">Rust</option>
28
+ <option value="go">Go</option>
29
+ </select>
30
+ <button onclick="downloadFile()">Download</button>
31
+ <label><input type="checkbox" id="wrapCode"> Wrap Code</label>
32
+
33
+ <pre id="code-preview">// Start coding...</pre>
34
+ <div id="editor-container"></div>
35
 
36
+ <script type="module">
37
+ import { basicSetup } from "https://cdn.skypack.dev/@codemirror/basic-setup";
38
+ import { EditorView, keymap, lineWrapping } from "https://cdn.skypack.dev/@codemirror/view";
39
+ import { EditorState } from "https://cdn.skypack.dev/@codemirror/state";
40
+ import { indentWithTab } from "https://cdn.skypack.dev/@codemirror/commands";
41
+ import { javascript } from "https://cdn.skypack.dev/@codemirror/lang-javascript";
42
+ import { python } from "https://cdn.skypack.dev/@codemirror/lang-python";
43
+ import { html } from "https://cdn.skypack.dev/@codemirror/lang-html";
44
+ import { css } from "https://cdn.skypack.dev/@codemirror/lang-css";
45
+ import { php } from "https://cdn.skypack.dev/@codemirror/lang-php";
46
+ import { java } from "https://cdn.skypack.dev/@codemirror/lang-java";
47
+ import { cpp } from "https://cdn.skypack.dev/@codemirror/lang-cpp";
48
+ import { c } from "https://cdn.skypack.dev/@codemirror/lang-c";
49
+ import { sql } from "https://cdn.skypack.dev/@codemirror/lang-sql";
50
+ import { xml } from "https://cdn.skypack.dev/@codemirror/lang-xml";
51
+ import { rust } from "https://cdn.skypack.dev/@codemirror/lang-rust";
52
+ import { go } from "https://cdn.skypack.dev/@codemirror/lang-go";
53
+
54
+ const languageModes = { javascript, python, html, css, php, java, cpp, c, sql, xml, rust, go };
55
+
56
+ let editor;
57
+ function createEditor(language = "javascript") {
58
+ if (editor) editor.destroy();
59
+
60
+ const codePreview = document.getElementById("code-preview");
61
+ const initialCode = codePreview.textContent;
62
+
63
+ const startState = EditorState.create({
64
+ doc: initialCode,
65
+ extensions: [
66
+ basicSetup,
67
+ keymap.of([indentWithTab]),
68
+ languageModes[language]()
69
+ ]
70
+ });
71
+
72
+ editor = new EditorView({
73
+ state: startState,
74
+ parent: document.getElementById("editor-container")
75
+ });
76
+
77
+ codePreview.style.display = "none";
78
+ }
79
 
80
  document.getElementById("language").addEventListener("change", function() {
81
+ createEditor(this.value);
82
  });
83
 
84
  document.getElementById("wrapCode").addEventListener("change", function() {
85
+ editor.dispatch({ effects: lineWrapping.of(this.checked) });
86
  });
87
 
88
  function downloadFile() {
89
+ const content = editor.state.doc.toString();
90
  const blob = new Blob([content], { type: "text/plain" });
91
  const a = document.createElement("a");
92
  a.href = URL.createObjectURL(blob);
93
  a.download = "code.txt";
94
  a.click();
95
  }
96
+
97
+ createEditor();
98
  </script>
99
  </body>
100
  </html>