diff --git a/deno.jsonc b/deno.jsonc
index 1e34d89..b719421 100644
--- a/deno.jsonc
+++ b/deno.jsonc
@@ -3,6 +3,9 @@
"indentWidth": 4,
"lineWidth": 100
},
+ "tasks": {
+ "dev": "deno run -A dev.ts"
+ },
"exclude": ["./docs"],
"lib": ["dom", "dom.iterable", "dom.asynciterable", "deno.ns"]
}
diff --git a/deno.lock b/deno.lock
new file mode 100644
index 0000000..b8431b0
--- /dev/null
+++ b/deno.lock
@@ -0,0 +1,114 @@
+{
+ "version": "5",
+ "specifiers": {
+ "jsr:@std/cli@^1.0.12": "1.0.13",
+ "jsr:@std/cli@^1.0.23": "1.0.23",
+ "jsr:@std/encoding@^1.0.10": "1.0.10",
+ "jsr:@std/encoding@^1.0.7": "1.0.7",
+ "jsr:@std/fmt@^1.0.5": "1.0.5",
+ "jsr:@std/fmt@^1.0.8": "1.0.8",
+ "jsr:@std/fs@^1.0.19": "1.0.19",
+ "jsr:@std/html@^1.0.3": "1.0.3",
+ "jsr:@std/html@^1.0.5": "1.0.5",
+ "jsr:@std/http@*": "1.0.13",
+ "jsr:@std/http@1.0.21": "1.0.21",
+ "jsr:@std/internal@^1.0.10": "1.0.12",
+ "jsr:@std/media-types@^1.1.0": "1.1.0",
+ "jsr:@std/net@^1.0.4": "1.0.4",
+ "jsr:@std/net@^1.0.6": "1.0.6",
+ "jsr:@std/path@^1.0.8": "1.0.8",
+ "jsr:@std/path@^1.1.2": "1.1.2",
+ "jsr:@std/streams@^1.0.13": "1.0.13",
+ "jsr:@std/streams@^1.0.9": "1.0.9"
+ },
+ "jsr": {
+ "@std/cli@1.0.13": {
+ "integrity": "5db2d95ab2dca3bca9fb6ad3c19908c314e93d6391c8b026725e4892d4615a69"
+ },
+ "@std/cli@1.0.23": {
+ "integrity": "bf95b7a9425ba2af1ae5a6359daf58c508f2decf711a76ed2993cd352498ccca"
+ },
+ "@std/encoding@1.0.7": {
+ "integrity": "f631247c1698fef289f2de9e2a33d571e46133b38d042905e3eac3715030a82d"
+ },
+ "@std/encoding@1.0.10": {
+ "integrity": "8783c6384a2d13abd5e9e87a7ae0520a30e9f56aeeaa3bdf910a3eaaf5c811a1"
+ },
+ "@std/fmt@1.0.5": {
+ "integrity": "0cfab43364bc36650d83c425cd6d99910fc20c4576631149f0f987eddede1a4d"
+ },
+ "@std/fmt@1.0.8": {
+ "integrity": "71e1fc498787e4434d213647a6e43e794af4fd393ef8f52062246e06f7e372b7"
+ },
+ "@std/fs@1.0.19": {
+ "integrity": "051968c2b1eae4d2ea9f79a08a3845740ef6af10356aff43d3e2ef11ed09fb06"
+ },
+ "@std/html@1.0.3": {
+ "integrity": "7a0ac35e050431fb49d44e61c8b8aac1ebd55937e0dc9ec6409aa4bab39a7988"
+ },
+ "@std/html@1.0.5": {
+ "integrity": "4e2d693f474cae8c16a920fa5e15a3b72267b94b84667f11a50c6dd1cb18d35e"
+ },
+ "@std/http@1.0.13": {
+ "integrity": "d29618b982f7ae44380111f7e5b43da59b15db64101198bb5f77100d44eb1e1e",
+ "dependencies": [
+ "jsr:@std/cli@^1.0.12",
+ "jsr:@std/encoding@^1.0.7",
+ "jsr:@std/fmt@^1.0.5",
+ "jsr:@std/html@^1.0.3",
+ "jsr:@std/media-types",
+ "jsr:@std/net@^1.0.4",
+ "jsr:@std/path@^1.0.8",
+ "jsr:@std/streams@^1.0.9"
+ ]
+ },
+ "@std/http@1.0.21": {
+ "integrity": "abb5c747651ee6e3ea6139858fd9b1810d2c97f53a5e6722f3b6d27a6d263edc",
+ "dependencies": [
+ "jsr:@std/cli@^1.0.23",
+ "jsr:@std/encoding@^1.0.10",
+ "jsr:@std/fmt@^1.0.8",
+ "jsr:@std/fs",
+ "jsr:@std/html@^1.0.5",
+ "jsr:@std/media-types",
+ "jsr:@std/net@^1.0.6",
+ "jsr:@std/path@^1.1.2",
+ "jsr:@std/streams@^1.0.13"
+ ]
+ },
+ "@std/internal@1.0.12": {
+ "integrity": "972a634fd5bc34b242024402972cd5143eac68d8dffaca5eaa4dba30ce17b027"
+ },
+ "@std/media-types@1.1.0": {
+ "integrity": "c9d093f0c05c3512932b330e3cc1fe1d627b301db33a4c2c2185c02471d6eaa4"
+ },
+ "@std/net@1.0.4": {
+ "integrity": "2f403b455ebbccf83d8a027d29c5a9e3a2452fea39bb2da7f2c04af09c8bc852"
+ },
+ "@std/net@1.0.6": {
+ "integrity": "110735f93e95bb9feb95790a8b1d1bf69ec0dc74f3f97a00a76ea5efea25500c"
+ },
+ "@std/path@1.0.8": {
+ "integrity": "548fa456bb6a04d3c1a1e7477986b6cffbce95102d0bb447c67c4ee70e0364be"
+ },
+ "@std/path@1.1.2": {
+ "integrity": "c0b13b97dfe06546d5e16bf3966b1cadf92e1cc83e56ba5476ad8b498d9e3038",
+ "dependencies": [
+ "jsr:@std/internal"
+ ]
+ },
+ "@std/streams@1.0.9": {
+ "integrity": "a9d26b1988cdd7aa7b1f4b51e1c36c1557f3f252880fa6cc5b9f37078b1a5035"
+ },
+ "@std/streams@1.0.13": {
+ "integrity": "772d208cd0d3e5dac7c1d9e6cdb25842846d136eea4a41a62e44ed4ab0c8dd9e"
+ }
+ },
+ "workspace": {
+ "packageJson": {
+ "dependencies": [
+ "npm:@types/ace@^0.0.52"
+ ]
+ }
+ }
+}
diff --git a/dev.ts b/dev.ts
new file mode 100644
index 0000000..459a043
--- /dev/null
+++ b/dev.ts
@@ -0,0 +1,57 @@
+// deno-lint-ignore no-import-prefix
+import { serveDir } from "jsr:@std/http@1.0.21/file-server";
+
+type Addr = {
+ hostname: string;
+ port: number;
+};
+
+function alertListening(addr: Addr) {
+ console.log(`Listening on http://${addr.hostname}:${addr.port}/`);
+}
+
+async function buildDocs() {
+ console.log("building docs");
+ await new Deno.Command("deno", {
+ args: ["task", "build"],
+ cwd: "docs",
+ }).output();
+ console.log("done");
+}
+
+async function watchAndBuildDocs() {
+ let changeOccurred = true;
+ let running = false;
+ setInterval(async () => {
+ if (!changeOccurred || running) {
+ return;
+ }
+ running = true;
+ await buildDocs();
+ changeOccurred = false;
+ running = false;
+ }, 250);
+ const watcher = Deno.watchFs(["docs/src"]);
+ for await (const _ of watcher) {
+ changeOccurred = true;
+ }
+}
+
+function serveDist(addr: Addr) {
+ Deno.serve({
+ port: addr.port,
+ hostname: addr.hostname,
+ onListen: (_) => alertListening(addr),
+ }, (req: Request) => {
+ return serveDir(req, { quiet: true, showIndex: true });
+ });
+}
+
+if (import.meta.main) {
+ await buildDocs();
+ watchAndBuildDocs();
+ serveDist({
+ hostname: "0.0.0.0",
+ port: 8180,
+ });
+}
diff --git a/docs/build.ts b/docs/build.ts
index e6e4e21..8abe622 100644
--- a/docs/build.ts
+++ b/docs/build.ts
@@ -14,13 +14,13 @@ function injectIntoTemplate(
dirComponents.push(`${name}.html`);
}
if (dirComponents.length > 0) {
- breadcrumbs.push(`root`);
+ breadcrumbs.push(`root`);
} else {
breadcrumbs.push(`root`);
}
for (let i = 0; i < dirComponents.length; ++i) {
const component = dirComponents[i];
- const href = "/-/" + dirComponents.filter((_, idx) => idx <= i).join("/");
+ const href = "/docs/-/" + dirComponents.filter((_, idx) => idx <= i).join("/");
if (i < dirComponents.length - 1) {
breadcrumbs.push(`${component}`);
} else {
diff --git a/src/asset_editor.js b/src/asset_editor.js
index a10e24a..94d177f 100644
--- a/src/asset_editor.js
+++ b/src/asset_editor.js
@@ -99,7 +99,7 @@ export class AssetEditor {
this.renderList();
}
- async setPreview(asset) {
+ setPreview(asset) {
this.previewedName = asset.name;
this.preview.title.textContent = asset.name;
diff --git a/src/index.js b/src/index.js
index decd921..5a2459e 100644
--- a/src/index.js
+++ b/src/index.js
@@ -101,7 +101,7 @@ runButton.onclick = async () => {
}
};
-exportButton.onclick = async () => {
+exportButton.onclick = () => {
projectSaveHandler.exportProject();
};
@@ -122,10 +122,9 @@ addEventListener("keydown", (ev) => {
toggleAssetEditorButton.addEventListener("click", () => assetEditor.toggleEditor());
-window.ondragover = (ev) => ev.preventDefault();
-window.ondrop = (ev) => ev.preventDefault();
+globalThis.ondragover = (ev) => ev.preventDefault();
+globalThis.ondrop = (ev) => ev.preventDefault();
-dropZone.onclick = (ev) => ev.preventDefault();
dropZone.ondragover = (ev) => ev.preventDefault();
dropZone.ondrop = async (ev) => {
for (const file of ev.dataTransfer.files) {