Hook up prettier in the editor.

git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4854 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
2024-02-17 18:53:21 +00:00
parent a12f2fec5a
commit 498d8b6520
8 changed files with 139 additions and 9 deletions

View File

@ -205,7 +205,6 @@ class TfFilesElement extends LitElement {
gFiles[file.name] = {
doc: new cm6.EditorState.create({doc: text, extensions: cm6.extensions}),
buffer: buffer,
generation: -1,
isNew: true,
};
gCurrentFile = file.name;
@ -1010,7 +1009,6 @@ function updateFiles() {
function makeNewFile(name) {
gFiles[name] = {
doc: cm6.EditorState.create({extensions: cm6.extensions}),
generation: -1,
};
openFile(name);
}
@ -1121,6 +1119,27 @@ async function appImport() {
}
}
async function sourcePretty() {
let prettier = (await import('/prettier/standalone.mjs')).default;
let babel = (await import('/prettier/babel.mjs')).default;
let estree = (await import('/prettier/estree.mjs')).default;
let source = gEditor.state.doc.toString();
let formatted = await prettier.format(source, {
parser: 'babel',
plugins: [babel, estree],
useTabs: true,
});
if (source !== formatted) {
gEditor.dispatch({
changes: {
from: 0,
to: gEditor.state.doc.length,
insert: formatted,
}
});
}
}
window.addEventListener("load", function() {
window.addEventListener("hashchange", hashChange);
window.addEventListener("focus", focus);
@ -1134,6 +1153,7 @@ window.addEventListener("load", function() {
document.getElementById('delete').addEventListener('click', () => deleteApp());
document.getElementById('export').addEventListener('click', () => appExport());
document.getElementById('import').addEventListener('click', () => appImport());
document.getElementById('pretty').addEventListener('click', () => sourcePretty());
document.getElementById('trace_button').addEventListener('click', function(event) {
event.preventDefault();
trace();

View File

@ -24,6 +24,7 @@
<button class="w3-bar-item w3-button w3-blue" id="icon" name="icon" accesskey="i" onmouseover="set_access_key_title(event)" data-tip="Set an icon/emoji for the app">📦</button>
<button class="w3-bar-item w3-button w3-blue" id="export" name="export" accesskey="e" onmouseover="set_access_key_title(event)" data-tip="Export app to .zip file">Export</button>
<button class="w3-bar-item w3-button w3-blue" id="import" name="import" accesskey="i" onmouseover="set_access_key_title(event)" data-tip="Import app from .zip file">Import</button>
<button class="w3-bar-item w3-button w3-blue" id="pretty" name="pretty" accesskey="p" onmouseover="set_access_key_title(event)" data-tip="Clean up source formatting">🧼</button>
<input class="w3-bar-item w3-input w3-border w3-blue" type="text" id="name" name="name" style="flex: 1 1; min-width: 1em"></input>
<button class="w3-bar-item w3-button w3-blue" id="delete" name="delete" accesskey="d" onmouseover="set_access_key_title(event)" data-tip="Delete the app">Delete</button>
<button class="w3-bar-item w3-button w3-blue" id="trace_button" accesskey="t" onmouseover="set_access_key_title(event)" data-tip="Open a performance trace for the server">Trace</button>