// ComfyUI Prompt Manager Extension - 扩展入口点 import { app } from "/scripts/app.js"; import { PromptManager, PromptEmbedder } from "./PromptManagerCore.js"; const CLIP_TEXT_ENCODERS = [ "CLIPTextEncode", "CLIPTextEncodeSDXL", "CLIPTextEncodeSDXLRefiner", "BNK_CLIPTextEncodeAdvanced", "AdvancedCLIPTextEncode", "CLIPTextEncodeFlux", "easy negative", "easy positive", "Easy Use", "Easy Negative", "Easy Positive", "CLIPTextEncodeFlux(Advanced)", "CLIP Text Encode (Prompt)", "WanVideoTextEncode" ]; // 全局提示词管理器 const promptManager = new PromptManager(); function addPromptEmbedderButton(node) { // 创建按钮widget const embedButton = node.addWidget("button", "嵌入提示词", null, () => { const embedder = new PromptEmbedder(node, promptManager); embedder.show(); }); // 设置按钮属性 embedButton.serialize = false; embedButton.options = { hideOnZoom: false }; // 自定义按钮绘制 const originalComputeSize = embedButton.computeSize; embedButton.computeSize = function(width) { return [width, 35]; }; // 设置按钮点击区域 embedButton.mouse = function(event, pos, node) { if (event.type === "pointerdown") { const embedder = new PromptEmbedder(node, promptManager); embedder.show(); return true; } return false; }; return embedButton; } // 注册扩展 app.registerExtension({ name: "ComfyUI.PromptManager", async beforeRegisterNodeDef(nodeType, nodeData, app) { // 检查是否是CLIP文本编码器节点 if (CLIP_TEXT_ENCODERS.includes(nodeData.name)) { const onNodeCreated = nodeType.prototype.onNodeCreated; nodeType.prototype.onNodeCreated = function() { const result = onNodeCreated ? onNodeCreated.apply(this, arguments) : undefined; addPromptEmbedderButton(this); return result; }; } } });