diff --git a/README.md b/README.md index 276af4b..5b7cf08 100644 --- a/README.md +++ b/README.md @@ -114,6 +114,9 @@ Colors a node depending on the node title (case-insensitive). **Groups** - Edit group > Color > Custom +- Edit group > freeze/unfreeze (pins group and child nodes) + +![image](https://github.com/failfa-st/hyv/assets/1148334/7558fcfb-1733-4d78-904b-50891f29fa68) **Screenshot from Nodes (similar for Groups)** diff --git a/extensions/groups.js b/extensions/groups.js new file mode 100644 index 0000000..c6d6d18 --- /dev/null +++ b/extensions/groups.js @@ -0,0 +1,59 @@ +/** + * Coded with love by Failfa.st + * LICENSE: AGPL 3.0 + * https://github.com/failfa-st/failfast-comfyui-extensions/blob/main/LICENSE + * + * Visit https://github.com/failfa-st/failfast-comfyui-extensions for more info + * + * Homepage: https://failfa.st + * GitHub: https://github.com/failfa-st + * Discord: https://discord.com/invite/m3TBB9XEkb + */ +import { app } from "../scripts/app.js"; +import { $el } from "../scripts/ui.js"; + +/** + * Render Shadow + */ + +const groupsName = "Failfast.groups"; + +app.registerExtension({ + name: groupsName, + async setup(app) { + const getGroupMenuOptions = LGraphCanvas.prototype.getGroupMenuOptions; + let move = null; + LGraphCanvas.prototype.getGroupMenuOptions = function (group) { + const menuOptions = getGroupMenuOptions.apply(this, arguments); + menuOptions.push( + null, + move + ? { + content: "Unfreeze", + callback: () => { + group.recomputeInsideNodes(); + group.move = move; + move = null; + group._nodes.forEach((node) => { + node.flags.pinned = false; + }); + }, + } + : { + content: "Freeze", + callback: () => { + group.recomputeInsideNodes(); + move = group.move; + group.move = () => {}; + + group._nodes.forEach((node) => { + node.flags.pinned = true; + }); + }, + }, + ); + + return menuOptions; + }; + }, +});