|
1 | 1 | <script> |
2 | 2 | import { onMount, createEventDispatcher } from "svelte"; |
3 | 3 | import CodeMirror from "svelte-codemirror-editor"; |
4 | | - import { keymap } from "@codemirror/view"; |
| 4 | + import { keymap, lineNumbers } from "@codemirror/view"; |
5 | 5 | import { indentUnit, indentOnInput, indentService } from "@codemirror/language"; |
6 | 6 | import { defaultKeymap, history, indentWithTab, historyKeymap } from "@codemirror/commands"; |
7 | 7 | import { EditorState } from "@codemirror/state"; |
|
21 | 21 | export let containerClasses = ''; |
22 | 22 |
|
23 | 23 | /** @type {boolean} */ |
24 | | - export let darkTheme = true; |
| 24 | + export let useDarkTheme = true; |
25 | 25 |
|
26 | 26 | /** @type {boolean} */ |
27 | | - export let useBasicSetup = true; |
| 27 | + export let hideLineNumber = false; |
| 28 | +
|
| 29 | + /** @type {boolean} */ |
| 30 | + export let editable = true; |
28 | 31 |
|
29 | 32 |
|
30 | 33 | /** @type {import("@codemirror/state").Extension[]} */ |
|
33 | 36 | EditorState.tabSize.of(4), |
34 | 37 | indentOnInput(), |
35 | 38 | history(), |
36 | | - keymap.of([...defaultKeymap, ...historyKeymap, indentWithTab]) |
| 39 | + keymap.of([...defaultKeymap, ...historyKeymap, indentWithTab]), |
37 | 40 | ]; |
38 | 41 |
|
39 | 42 | /** @type {import("@codemirror/state").Extension[]} */ |
|
65 | 68 | javascript(), |
66 | 69 | ...baseExtensions |
67 | 70 | ]; |
| 71 | + } else { |
| 72 | + extensions = [ |
| 73 | + ...baseExtensions |
| 74 | + ]; |
| 75 | + } |
| 76 | +
|
| 77 | + if (hideLineNumber) { |
| 78 | + extensions = [ |
| 79 | + lineNumbers({ formatNumber: () => "" }), |
| 80 | + ...extensions |
| 81 | + ]; |
68 | 82 | } |
69 | 83 | }); |
70 | 84 |
|
|
80 | 94 | <CodeMirror |
81 | 95 | class={`code-script-container ${containerClasses}`} |
82 | 96 | lineWrapping |
83 | | - basic={useBasicSetup} |
84 | | - theme={darkTheme ? oneDark : null} |
| 97 | + theme={useDarkTheme ? oneDark : null} |
| 98 | + editable={editable} |
85 | 99 | extensions={extensions} |
86 | 100 | value={scriptText} |
87 | 101 | on:change={e => handleChange(e)} |
|
0 commit comments