Spaces:
Running
Running
| // zipExport.js | |
| import JSZip from "jszip"; | |
| import { loadTree } from "./fileStore"; | |
| export async function downloadProjectZip() { | |
| const tree = loadTree(); | |
| const zip = new JSZip(); | |
| function addToZip(node, folder) { | |
| if (node.type === "file") { | |
| folder.file(node.name, node.content || ""); | |
| } else if (node.type === "folder") { | |
| const newFolder = folder.folder(node.name); | |
| node.children?.forEach((c) => addToZip(c, newFolder)); | |
| } | |
| } | |
| addToZip(tree, zip); | |
| const blob = await zip.generateAsync({ type: "blob" }); | |
| const a = document.createElement("a"); | |
| a.href = URL.createObjectURL(blob); | |
| a.download = "project.zip"; | |
| a.click(); | |
| } | |