Buckets:
| import { app } from "../../../scripts/app.js"; | |
| import { addMenuHandler } from "./common/utils.js"; | |
| function replaceNode(oldNode, newNodeName) { | |
| const newNode = LiteGraph.createNode(newNodeName); | |
| if (!newNode) { | |
| return; | |
| } | |
| app.graph.add(newNode); | |
| newNode.pos = oldNode.pos.slice(); | |
| // Transfer connections from old node to new node | |
| // XY Plot and AnimateDiff have only one output | |
| if(["XY Plot", "AnimateDiff Script"].includes(oldNode.type)) { | |
| if (oldNode.outputs[0] && oldNode.outputs[0].links) { | |
| oldNode.outputs[0].links.forEach(link => { | |
| const targetLinkInfo = oldNode.graph.links[link]; | |
| if (targetLinkInfo) { | |
| const targetNode = oldNode.graph.getNodeById(targetLinkInfo.target_id); | |
| if (targetNode) { | |
| newNode.connect(0, targetNode, targetLinkInfo.target_slot); | |
| } | |
| } | |
| }); | |
| } | |
| } else { | |
| // Noise Control Script, HighRes-Fix Script, and Tiled Upscaler Script have 1 input and 1 output at index 0 | |
| if (oldNode.inputs[0] && oldNode.inputs[0].link !== null) { | |
| const originLinkInfo = oldNode.graph.links[oldNode.inputs[0].link]; | |
| if (originLinkInfo) { | |
| const originNode = oldNode.graph.getNodeById(originLinkInfo.origin_id); | |
| if (originNode) { | |
| originNode.connect(originLinkInfo.origin_slot, newNode, 0); | |
| } | |
| } | |
| } | |
| if (oldNode.outputs[0] && oldNode.outputs[0].links) { | |
| oldNode.outputs[0].links.forEach(link => { | |
| const targetLinkInfo = oldNode.graph.links[link]; | |
| if (targetLinkInfo) { | |
| const targetNode = oldNode.graph.getNodeById(targetLinkInfo.target_id); | |
| if (targetNode) { | |
| newNode.connect(0, targetNode, targetLinkInfo.target_slot); | |
| } | |
| } | |
| }); | |
| } | |
| } | |
| // Remove old node | |
| app.graph.remove(oldNode); | |
| } | |
| function replaceNodeMenuCallback(currentNode, targetNodeName) { | |
| return function() { | |
| replaceNode(currentNode, targetNodeName); | |
| }; | |
| } | |
| function showSwapMenu(value, options, e, menu, node) { | |
| const scriptNodes = [ | |
| "XY Plot", | |
| "Noise Control Script", | |
| "HighRes-Fix Script", | |
| "Tiled Upscaler Script", | |
| "AnimateDiff Script" | |
| ]; | |
| const swapOptions = scriptNodes.filter(n => n !== node.type).map(n => ({ | |
| content: n, | |
| callback: replaceNodeMenuCallback(node, n) | |
| })); | |
| new LiteGraph.ContextMenu(swapOptions, { | |
| event: e, | |
| callback: null, | |
| parentMenu: menu, | |
| node: node | |
| }); | |
| return false; | |
| } | |
| // Extension Definition | |
| app.registerExtension({ | |
| name: "efficiency.SwapScripts", | |
| async beforeRegisterNodeDef(nodeType, nodeData, app) { | |
| if (["XY Plot", "Noise Control Script", "HighRes-Fix Script", "Tiled Upscaler Script", "AnimateDiff Script"].includes(nodeData.name)) { | |
| addMenuHandler(nodeType, function (insertOption) { | |
| insertOption({ | |
| content: "🔄 Swap with...", | |
| has_submenu: true, | |
| callback: showSwapMenu | |
| }); | |
| }); | |
| } | |
| }, | |
| }); | |
Xet Storage Details
- Size:
- 3.48 kB
- Xet hash:
- eaf44e904cf4afdf407d7131f1d2aac86613553f31e2a2db1e0e066095c20b96
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.