Check the amazing color themes provided by the Ace library!
Previosuly posted on Sololearn, here: https://code.sololearn.com/Wk3CGLWq8qAZ/
A Pen by Massimo Piedimonte on CodePen.
Check the amazing color themes provided by the Ace library!
Previosuly posted on Sololearn, here: https://code.sololearn.com/Wk3CGLWq8qAZ/
A Pen by Massimo Piedimonte on CodePen.
<section class="options"> | |
<select class="options_selection" name="select-language" id="language"> | |
<option value="html">HTML</option> | |
<option value="css">CSS</option> | |
<option value="js">JS</option> | |
<option value="python">Python</option> | |
<option value="php">PHP</option> | |
<option value="ruby">Ruby</option> | |
<option value="java">Java</option> | |
</select> | |
<select class="options_selection" name="select-theme" id="theme"> | |
<option value="monokai">Monokai</option> | |
<option value="dawn">Dawn</option> | |
<option value="github">GitHub</option> | |
<option value="solarizedlight">Solarized Light</option> | |
<option value="sql_server">SQL Server</option> | |
<option value="ambiance">Ambiance</option> | |
<option value="chaos">Chaos</option> | |
<option value="gruvbox">Gruvbox</option> | |
<option value="solarized_dark">Solarized Dark</option> | |
<option value="terminal">Terminal</option> | |
</select> | |
</section> | |
<div id="editor"><!-- | |
Choose a language and | |
a color theme to get started! | |
--> | |
</div> |
onload = function() { | |
// Setup | |
var languageOption = document.getElementById("language"); | |
var themeOption = document.getElementById("theme"); | |
var codeEditor = document.getElementById("editor"); | |
var theme = "monokai"; | |
// Ace Setup | |
var editor = ace.edit("editor"); | |
editor.setTheme("ace/theme/monokai"); | |
editor.getSession().setMode("ace/mode/html"); | |
// Change content dynamically | |
languageOption.onchange = function() { | |
switch(this.value) { | |
case 'html': changeContent('<!--\n\tDid you know?\n\tThe Sololearn CodePlayground\n\tis made with the Ace library\n\tused in this code!\n-->\n\n<!DOCTYPE html>\n<html lang="en">\n\t<head>\n\t\t<meta charset="UTF-8">\n\t</head>\n\t<body>\n\t</body>\n</html>', "html"); break; | |
case 'js': changeContent("// Just an arrow function... \n\nvar waifu = waifu => console.log('Your waifu is ' + waifu);\n\nwaifu('Rem');", "javascript"); break; | |
case 'css': changeContent("/* Oh, let's write some CSS! */\n\nbody {\n\tmargin: 0;\n}\n\n.super_div {\n\tdisplay: inline-block;\n}", "css"); break; | |
case 'python': changeContent("'''\nAlways wanted to learn something\nmore about Python,\nso simple and at the\nsame time so complex!\n'''\n\nprint('Have a nice day!')", "python"); break; | |
case 'php': changeContent("<?php\n\n// PHP and WordPress, nothing else! \n\nif( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ):\n\t wp_nonce_field( 'prefix_function', 'prefix_function_nonce' );\nendif;'", "php"); break; | |
case 'ruby': changeContent("# Ruby, just Ruby!\n\nclass HelloTrema < Trema::Controller\n\tdef start(_args)\n\t\tlogger.info 'Trema started.'\n\tend\n\tdef switch_ready(datapath_id)\n\t\tlogger.info \"Hello #{datapath_id.to_hex}!\"\n\tend\nend", "ruby"); break; | |
case 'java': changeContent("// Do you want some coffee?\n\npublic class HelloWorld\n{\n\tpublic static void main(String[] args) {\n\t\tSystem.out.println('Hello World!');\n\t}\n}", "java"); break; | |
default: changeContent("<!-- Made by Maz -->", "html"); break; | |
} | |
} | |
// Change theme dynamically | |
themeOption.onchange = function() { | |
switch(this.value) { | |
case 'monokai': changeTheme("monokai"); break; | |
case 'dawn': changeTheme("dawn"); break; | |
case 'github': changeTheme("github"); break; | |
case 'plastic': changeTheme("iplastic"); break; | |
case 'solarizedlight': changeTheme("solarized_light"); break; | |
case 'sql_server': changeTheme("sqlserver"); break; | |
case 'ambiance': changeTheme("ambiance"); break; | |
case 'chaos': changeTheme("chaos"); break; | |
case 'gruvbox': changeTheme("gruvbox"); break; | |
case 'solarized_dark': changeTheme("solarized_dark"); break; | |
case 'terminal': changeTheme("terminal"); break; | |
default: changeTheme("monokai"); break; | |
} | |
} | |
// Functions | |
function changeContent(content, lang) { | |
var elementExists = document.getElementById("editor"); | |
if( elementExists ) document.body.removeChild(elementExists); | |
var div = document.createElement("div"); | |
div.innerHTML = content; | |
div.id = "editor"; | |
document.body.appendChild(div); | |
var editor = ace.edit("editor"); | |
editor.setTheme("ace/theme/" + theme); | |
editor.getSession().setMode("ace/mode/" + lang); | |
} | |
function changeTheme(type) { | |
theme = type; | |
var editor = ace.edit("editor"); | |
editor.setTheme("ace/theme/" + theme); | |
} | |
} |
@import url('https://fonts.googleapis.com/css?family=Gruppo'); | |
body { | |
margin: 0; | |
} | |
#editor { | |
width: 80%; | |
height: 80vh; | |
margin: 20px auto 0 auto; | |
} | |
.options { | |
text-align: center; | |
} | |
.options .options_selection { | |
padding: 10px; | |
border: none; | |
margin: 25px 0 10px 0; | |
text-align: center; | |
-webkit-appearance: none; | |
font-family: 'Gruppo', cursive; | |
font-size: 1em; | |
color: #333; | |
font-weight: bolder; | |
width: 30%; | |
background-color: #f2f2f2; | |
} | |
.options .options_selection:focus { | |
outline: none; | |
} | |
select::-ms-expand { | |
display: none; | |
} | |
@media (max-width: 767px) { | |
#editor { | |
width: 90%; | |
} | |
} |