From 028ffb8961d3f7d64109648ca143c8c9289e4cb9 Mon Sep 17 00:00:00 2001 From: codetypes Date: Tue, 16 Jul 2024 18:00:16 +0800 Subject: [PATCH] support delete node in batch --- package-lock.json | 14 +++++++------- package.json | 2 +- src/contexts/workspace-context.ts | 19 ++++++++++++++----- 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 80e2819..0662a71 100644 --- a/package-lock.json +++ b/package-lock.json @@ -48,7 +48,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "sass": "^1.60.0", - "typescript": "^5.4.5", + "typescript": "^5.5.3", "vite": "^4.1.4", "vite-electron-plugin": "^0.8.3", "vite-plugin-electron": "^0.28.4", @@ -9148,9 +9148,9 @@ } }, "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -16415,9 +16415,9 @@ } }, "typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", "dev": true }, "undici-types": { diff --git a/package.json b/package.json index a2c2c10..8f02036 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "sass": "^1.60.0", - "typescript": "^5.4.5", + "typescript": "^5.5.3", "vite": "^4.1.4", "vite-electron-plugin": "^0.8.3", "vite-plugin-electron": "^0.28.4", diff --git a/src/contexts/workspace-context.ts b/src/contexts/workspace-context.ts index c1a8a5a..9c30743 100644 --- a/src/contexts/workspace-context.ts +++ b/src/contexts/workspace-context.ts @@ -16,7 +16,7 @@ import { Editor } from "../components/editor"; let buildDir: string | undefined; interface BatchScript { - processTree?(tree: TreeModel): TreeModel; + processTree?(tree: TreeModel, path: string): TreeModel; processNode?(node: NodeModel, tree: TreeModel): NodeModel; } @@ -319,14 +319,23 @@ export const useWorkspace = create((set, get) => ({ const treeStr = fs.readFileSync(file.path, "utf8"); let tree: TreeModel | undefined = JSON.parse(treeStr); if (batch.processTree && tree) { - tree = batch.processTree(tree); + tree = batch.processTree(tree, file.path); } if (tree && batch.processNode) { const processNode = (node: NodeModel) => { - batch.processNode?.(node, tree!); - node.children?.forEach((child) => processNode(child)); + if (node.children) { + const children: NodeModel[] = []; + node.children?.forEach((child) => { + const newChild = processNode(child); + if (newChild) { + children.push(newChild); + } + }); + node.children = children; + } + return batch.processNode?.(node, tree!); }; - processNode(tree.root); + tree.root = processNode(tree.root) ?? ({} as NodeModel); } if (tree) { fs.writeFileSync(file.path, JSON.stringify(tree, null, 2));