File tree 4 files changed +71
-2
lines changed
4 files changed +71
-2
lines changed Original file line number Diff line number Diff line change 40
40
},
41
41
"type" : " module" ,
42
42
"dependencies" : {
43
- "clsx" : " ^2.1.1"
43
+ "clsx" : " ^2.1.1" ,
44
+ "monaco-editor" : " ^0.49.0"
44
45
}
45
46
}
Original file line number Diff line number Diff line change
1
+ <script >
2
+ import { onDestroy , onMount } from ' svelte' ;
3
+
4
+ /** @type {HTMLDivElement|undefined} */
5
+ let divElement;
6
+ /** @type {import('monaco-editor')|undefined} */
7
+ let monaco;
8
+ /** @type {import('monaco-editor').editor.IStandaloneCodeEditor|undefined} */
9
+ let editor;
10
+ /** @type {import('monaco-editor').editor.IStandaloneEditorConstructionOptions} */
11
+ const editorOptions = {
12
+ minimap: { enabled: false },
13
+ theme: ' vs-dark' ,
14
+ overviewRulerLanes: 0
15
+ };
16
+
17
+ onMount (async () => {
18
+ if (! divElement) {
19
+ throw new Error (' div element is undefined' );
20
+ }
21
+ monaco = (await import (' $lib/utils/monaco' )).default ;
22
+ editor = monaco .editor .create (divElement, editorOptions);
23
+ editor .setValue (' Hello World' );
24
+ });
25
+
26
+ onDestroy (() => {
27
+ editor? .dispose ();
28
+ });
29
+ < / script>
30
+
31
+ < div class = " flex h-full flex-col" >
32
+ < div bind: this = {divElement} id= " editor" class = " h-full flex-grow overflow-hidden" / >
33
+ < / div>
Original file line number Diff line number Diff line change
1
+ import * as monaco from 'monaco-editor' ;
2
+
3
+ // Import the workers in a production-safe way.
4
+ // This is different than in Monaco's documentation for Vite,
5
+ // but avoids a weird error ("Unexpected usage") at runtime
6
+ import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker' ;
7
+ import cssWorker from 'monaco-editor/esm/vs/language/css/css.worker?worker' ;
8
+ import htmlWorker from 'monaco-editor/esm/vs/language/html/html.worker?worker' ;
9
+ import jsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker' ;
10
+ import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker' ;
11
+
12
+ self . MonacoEnvironment = {
13
+ getWorker : function ( _ , label ) {
14
+ switch ( label ) {
15
+ case 'json' :
16
+ return new jsonWorker ( ) ;
17
+ case 'css' :
18
+ case 'scss' :
19
+ case 'less' :
20
+ return new cssWorker ( ) ;
21
+ case 'html' :
22
+ case 'handlebars' :
23
+ case 'razor' :
24
+ return new htmlWorker ( ) ;
25
+ case 'typescript' :
26
+ case 'javascript' :
27
+ return new tsWorker ( ) ;
28
+ default :
29
+ return new editorWorker ( ) ;
30
+ }
31
+ }
32
+ } ;
33
+
34
+ export default monaco ;
Original file line number Diff line number Diff line change 1
1
<script >
2
+ import Editor from ' $lib/components/Editor.svelte' ;
2
3
import Navbar from ' $lib/components/Navbar.svelte' ;
3
4
</script >
4
5
5
6
<div class =" flex h-full flex-col overflow-hidden" >
6
7
<Navbar />
7
- TODO: Add body
8
+ < Editor />
8
9
</div >
9
10
10
11
<style >
You can’t perform that action at this time.
0 commit comments