11require . config ( { paths : { 'vs' : 'https://unpkg.com/monaco-editor@latest/min/vs' } } ) ;
22window . MonacoEnvironment = { getWorkerUrl : ( ) => proxy } ;
33
4+ var extentions = {
5+ 'html' : 'html' ,
6+ 'css' : 'css' ,
7+ 'js' : 'javascript' ,
8+ 'json' : 'json' ,
9+ 'ts' : 'typescript' ,
10+ 'md' : 'markdown' ,
11+ 'txt' : 'text' ,
12+ 'py' : 'python' ,
13+ 'java' : 'java' ,
14+ 'c' : 'c' ,
15+ }
16+
417var languages = {
518 html : {
6- hasTheme : false ,
7- startingCode =
19+ startingCode :
820`<!DOCTYPE html>
921<html lang="en">
1022 <head>
@@ -18,10 +30,8 @@ var languages = {
1830</html>`
1931 } ,
2032 css : {
21- hasTheme : false ,
2233 } ,
2334 javascript : {
24- hasTheme : false ,
2535 } ,
2636 json : {
2737 hasTheme : false ,
@@ -38,6 +48,8 @@ var languages = {
3848 markdown : {
3949 hasTheme : true ,
4050 } ,
51+ text : {
52+ } ,
4153}
4254
4355var buttons = [
@@ -56,10 +68,6 @@ buttons.forEach(b => {
5668 else document . querySelector ( `#${ b } ` ) . onclick = window [ b ]
5769} )
5870
59- Object . keys ( languages ) . forEach ( language => {
60- monaco . languages . setMonarchTokensProvider ( language , editorThemes [ language ] ( ) ) ;
61- } )
62-
6371var editor
6472
6573function getShareLinkCode ( ) {
@@ -81,19 +89,34 @@ let proxy = URL.createObjectURL(new Blob([`
8189 importScripts('https://unpkg.com/monaco-editor@latest/min/vs/base/worker/workerMain.js');
8290` ] , { type : 'text/javascript' } ) ) ;
8391
84- var language = alert ( `What language do you want to use? (acceptable values are "${ Object . keys ( languages ) . join ( ', ' ) } ")` )
85- if ( ! language || language == '' || ! Object . keys ( languages ) . includes ( language ) ) {
86- alert ( 'Error: Invalid language value entered, defaulting to "html"' )
87- language = 'html'
92+ var ext = codeObj . ext
93+
94+ var language
95+ if ( ! languages [ ext ] ) {
96+ language = prompt ( `What language do you want to use? (acceptable values are "${ Object . keys ( languages ) . join ( ', ' ) } ")` )
97+ if ( ! language || language == '' || ! Object . keys ( languages ) . includes ( language ) ) {
98+ alert ( 'Error: Invalid language value entered, defaulting to "html"' )
99+ language = 'html'
100+ }
101+ }
102+ else {
103+ language = languages [ ext ]
88104}
89105
90106require ( [ "vs/editor/editor.main" ] , function ( ) {
91107 editor = monaco . editor . create ( document . getElementById ( 'container' ) , {
92- value : tempCode ?? languages [ language ] . startingCode ,
108+ value : codeObj . content ?? languages [ language ] . startingCode ,
93109 language : language ,
94- theme : languages [ language ] . hasTheme ? language : 'vs-dark'
110+ theme : ! ! editorThemes [ language ] ? language : 'vs-dark'
95111 } ) ;
96112
113+
114+ Object . keys ( languages ) . forEach ( l => {
115+ if ( ! editorThemes [ l ] ) return
116+ monaco . languages . setMonarchTokensProvider ( l , editorThemes [ l ] ( ) ) ;
117+ } )
118+
119+
97120 editor . onKeyDown ( keyDown ) ;
98121} ) ;
99122
@@ -105,8 +128,7 @@ function previewHTML() {
105128 ext = title . split ( '.' ) [ 1 ]
106129 }
107130
108- let value = tinymce . activeEditor . getContent ( { format : 'raw' } ) ;
109- textarea = document . querySelector ( 'textarea' )
131+ var value = editor . getValue ( )
110132
111133 let eleVal = 'documentElement'
112134 if ( value . includes ( '<html' ) ) {
0 commit comments