-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathapp.js
213 lines (168 loc) · 5.36 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
/**
* JavaScript File for Online Code Editor web application
*/
// Function for compiling the HTML,CSS and JavaScript code entered by the user
function compile() {
var html;
var css;
var js;
var code = document.getElementById("code").contentWindow.document;
document.body.onkeyup = function () {
html = htmleditor.getValue();
css = csseditor.getValue();
js = jseditor.getValue();
code.open();
code.writeln(
html +
"<style>" +
css +
"</style>" +
"<script>" +
js +
"</script>"
);
code.close();
};
}
compile()
// Bind the "compile" function to the "keyup" event on the document body
document.body.addEventListener("keyup", compile);
// Binds the "compile" function to the "keyup" event on the document body
function bindCompileEvent() {
document.body.addEventListener("keyup", compile);
}
// Call bindCompileEvent() after the page loads
window.onload = function () {
bindCompileEvent();
};
// Function to download the HTML code entered by the user
function downloadhtml(htmlcontent) {
const element = document.createElement('a');
const blob = new Blob([htmlcontent], { type: 'plain/text' });
const fileUrl = URL.createObjectURL(blob);
element.setAttribute('href', fileUrl); //file location
element.setAttribute('download', "index.html"); // file name
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
};
// Function to download the CSS code entered by the user
function downloadCSS(csscontent) {
const element = document.createElement('a');
const blob = new Blob([csscontent], { type: 'plain/text' });
const fileUrl = URL.createObjectURL(blob);
element.setAttribute('href', fileUrl); //file location
element.setAttribute('download', 'style.css'); // file name
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
};
// Function to download the JavaScript code entered by the user
function downloadJS(jscontent) {
const element = document.createElement('a');
const blob = new Blob([jscontent], { type: 'plain/text' });
const fileUrl = URL.createObjectURL(blob);
element.setAttribute('href', fileUrl); //file location
element.setAttribute('download', 'script.js'); // file name
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
};
window.onload = () => {
// Event listener for the HTML download button
document.getElementById('HTMLdownload').
addEventListener('click', e => {
const htmlcontent = htmleditor.getValue()
if (htmlcontent) {
downloadhtml(htmlcontent);
}
});
// Event listener for the CSS download button
document.getElementById("CSSdownload").addEventListener("click", (e) => {
const csscontent = csseditor.getValue()
if (csscontent) {
downloadCSS(csscontent);
}
});
// Event listener for the JavaScript download button
document.getElementById("JSdownload").addEventListener("click", (e) => {
const jscontent = jseditor.getValue()
if (jscontent) {
downloadJS(jscontent);
}
});
}
// Create a CodeMirror instance from the 'html' textarea element
var htmleditor = CodeMirror.fromTextArea
(document.getElementById('html'), {
mode: "xml",
theme: "ayu-dark",
lineNumbers: true,
autoCloseTags: true
});
// Create a CodeMirror instance from the 'css' textarea element
var csseditor = CodeMirror.fromTextArea
(document.getElementById('css'), {
mode: "css",
theme: "ayu-dark",
lineNumbers: true,
autoCloseTags: true
});
// Create a CodeMirror instance from the 'js' textarea element
var jseditor = CodeMirror.fromTextArea
(document.getElementById('js'), {
mode: "javascript",
theme: "ayu-dark",
lineNumbers: true,
autoCloseTags: true
});
// Function to load a local HTML file into the HTML editor
function htmllocalLoad(files) {
if (files.length == 1) {
document.title = escape(files[0].name);
var reader = new FileReader();
reader.onload = function (e) {
htmleditor.setValue(e.target.result);
};
reader.readAsText(files[0]);
}
}
// Function to load a local CSS file into the CSS editor
function csslocalLoad(files) {
if (files.length == 1) {
document.title = escape(files[0].name);
var reader = new FileReader();
reader.onload = function (e) {
csseditor.setValue(e.target.result);
};
reader.readAsText(files[0]);
}
}
// Function to load a local JavaScript file into the JavaScript editor
function jslocalLoad(files) {
if (files.length == 1) {
document.title = escape(files[0].name);
var reader = new FileReader();
reader.onload = function (e) {
jseditor.setValue(e.target.result);
};
reader.readAsText(files[0]);
}
}
// Function to reset the editor
function resetFunction() {
location.reload();
}
// Function to toggle between two CSS stylesheets for changing layout
function toggle() {
var el = document.getElementById("style");
if (el.href.match("style.css")) {
el.href = "style2.css";
}
else {
el.href = "style.css";
}
}