formats.exposed/public/png/png.js

36 lines
881 B
JavaScript
Raw Normal View History

2023-08-01 14:20:57 +00:00
// @ts-check
import parsePng from "./parsePng.js";
2023-08-01 14:20:57 +00:00
import parseHash from "./parseHash.js";
import getNodeUi from "./getNodeUi.js";
import explorer from "./explorer.js";
2023-08-01 14:20:57 +00:00
const errorEl = document.getElementById("error");
const explorerEl = document.getElementById("explorer");
if (!errorEl || !explorerEl) throw new Error("HTML is not set up correctly");
const main = () => {
// TODO: We may want a better UI here.
2023-08-02 16:58:06 +00:00
// TODO: Handle hash changes.
2023-08-01 14:20:57 +00:00
const parsedHash = parseHash(location.hash);
if (!parsedHash) {
location.href = "..";
return;
}
const { bytes } = parsedHash;
const rootNode = parsePng(bytes);
if (!rootNode) {
// TODO: Is there better UI than this?
errorEl.removeAttribute("hidden");
return;
}
explorerEl.innerHTML = "";
explorerEl.append(explorer(rootNode, getNodeUi));
explorerEl.removeAttribute("hidden");
2023-08-01 14:20:57 +00:00
};
main();