-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathevents.js
110 lines (95 loc) · 2.92 KB
/
events.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
// ! Imports
import {$js, update, updateURLCode, $html, $css} from './main';
import {download, exportFile} from './download';
import {$} from './main';
import cssFormatMonaco from 'css-format-monaco';
import * as monaco from 'monaco-editor';
import {preview} from './previewer';
import {lightTheme} from './settings';
// ! Variables
const $skypackBar = $('.skypackbar');
const $skypackBtn = $('#importmodule');
const $runBtn = $('#run');
const $skypackInp = $('#skyinp');
const $downloadBtn = $('#download');
const $exportBtn = $('#export');
const $jsBtn = $('#skypack');
const $previewBtn = $('#preview');
const $importBtn = $('#import');
function importData() {
const input = document.createElement('input');
input.type = 'file';
input.onchange = (e) => {
// you can use this method to get file and perform respective operations
const files = e.target.files;
const f = files[0];
let r= '';
console.log(f);
const reader = new FileReader();
reader.readAsText(f);
reader.onload = function(f) {
r = f.target.result.split('###>><</CODEEBOX_SEPARATOR');
$html.setValue(r[1]);
$css.setValue(r[2]);
$js.setValue(r[3]);
};
};
input.click();
}
// * Open settings button
let sopen = false;
$jsBtn.addEventListener('click', () => {
if (!sopen) {
$skypackBar.style.display = 'block';
console.log(lightTheme);
$jsBtn.style.borderLeft = `3px solid ${lightTheme ? '#222' : '#ccc'}`;
} else {
$skypackBar.style.display = 'none';
$jsBtn.style.borderLeft = `3px solid transparent`;
}
sopen = !sopen;
});
// ! Event listeners
$skypackBtn.addEventListener('click', () => {
$js.trigger('keyboard', 'type',
{text: `import ${$skypackInp.value.replace('-', '').toLowerCase()} from 'https://cdn.skypack.dev/${$skypackInp.value}'`});
});
$downloadBtn.addEventListener('click', () => {
download();
const oldColor = $downloadBtn.style.color;
$downloadBtn.style.color = 'lightgreen';
setTimeout((() => $downloadBtn.style.color = oldColor), 5000);
});
$exportBtn.addEventListener('click', () => {
exportFile();
const oldColor = $exportBtn.style.color;
$downloadBtn.style.color = 'lightgreen';
setTimeout((() => $exportBtn.style.color = oldColor), 5000);
});
$previewBtn.addEventListener('click', () => {
preview($html.getValue(), $css.getValue(), $js.getValue());
});
$runBtn.addEventListener('click', () => {
update();
});
$importBtn.addEventListener('click', () => {
importData();
});
[$js, $html, $css].forEach((e) => {
e.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyS, function() {
update();
updateURLCode($html.getValue(), $css.getValue(), $js.getValue());
});
e.addCommand(monaco.KeyMod.CtrlCmd |
monaco.KeyMod.Shift |
monaco.KeyCode.KeyP, () => {
$html.trigger('anyString', 'editor.action.quickCommand');
});
});
const generateCssFormater = () => cssFormatMonaco(
monaco,
{
indent_size: 2,
},
);
generateCssFormater();