From dd2a09f5823685d83e214ab9204e5f8d83dd27b8 Mon Sep 17 00:00:00 2001 From: ArtsticH <165130984+ArtsticH@users.noreply.github.com> Date: Mon, 22 Dec 2025 07:28:09 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A5NodeAlignPro=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=A4=A7=E6=9B=B4=E6=96=B0=E5=B7=B2=E5=8F=91=E5=B8=83=EF=BC=88?= =?UTF-8?q?=E5=85=A8=E6=96=B0UI,=20=E6=9B=B4=E5=85=A8=E7=9A=84=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E4=B8=8A=E8=89=B2=E7=B3=BB=E7=BB=9F=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...222-NodeAlignPro全新节点对齐与上色插件.png | Bin 0 -> 168161 bytes ...H20251222-全新节点对齐与上色UI实操演示.png | Bin 0 -> 291363 bytes README.md | 26 +- README_ZH.md | 29 +- __init__.py | 5 +- node_info.js | 3703 +++++++++++------ web/color_svgs.js | 16 - 7 files changed, 2427 insertions(+), 1352 deletions(-) create mode 100644 Example/hPic/H20251222-NodeAlignPro全新节点对齐与上色插件.png create mode 100644 Example/hPic/H20251222-全新节点对齐与上色UI实操演示.png delete mode 100644 web/color_svgs.js diff --git a/Example/hPic/H20251222-NodeAlignPro全新节点对齐与上色插件.png b/Example/hPic/H20251222-NodeAlignPro全新节点对齐与上色插件.png new file mode 100644 index 0000000000000000000000000000000000000000..3ef5471c7c81c6e3e7fc37b72b9b90378e423f81 GIT binary patch literal 168161 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 uxTl!*n~=v@$=FU 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

PFQLU10~GWPRcPKEB9mhs&R68PBpN#J^) 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 co}8WUxw66)?_TiY9QadFynna&wt4XX05cqN [+] Update Preview (A Major Update for the Upcoming Version 😁)↓↓↓↓ - [+] The basic code and concept were basically completed in June-July of this year. Due to my recent busyness, the update has been on hold for a long time. Please be patient and wait; we will strive to launch the major update version before the National Day (see the picture below 👇). Thank you for your support and understanding! -![Update Preview](【更新预告】HT20250627-Snipaste_t011207_ArtsticH_NodeAlignPro_v2.png) +Completely reconstructed ComfyUI Node Alignment and Coloring Plugin, featuring brand-new UI icons and interface interaction logic. The layout of the alignment tool is more in line with the universal operational logic and experience in the design industry, and the position of the coloring tool is more reasonable, facilitating quick coloring operations. -## ✨ Core Features (Coming Soon) +## 🔥 [+] The major version update is here😁↓↓↓↓ +The basic code and concept were basically completed as early as June-July this year, but due to my busy schedule recently, I have put it aside for a long time and have not updated it; + + [+] I took time out to update it these two days. On the premise of retaining the UI and interaction habits of the previous version as much as possible, I redesigned the relevant UI, and basically reconstructed all the relevant logic (see the figure below👇). +![Update Preview](Example/hPic/H20251222-全新节点对齐与上色UI实操演示.png) + +## ✨ Core Features (Officially Launched) | 💫Intelligent Alignment System | [+]💫New Coloring System | [+]💫User-Friendly Interaction Design | [+]💫New Color Picker (Original Design) | |---------------------------|---------------------------|---------------------------|---------------------------| @@ -16,14 +19,17 @@ The newly designed ComfyUI node alignment and coloring plugin has completely red | 📐 Dynamic Spacing Distribution Algorithm | [+]🔗 Real-Time Linked Display of Color Picking Effect | [+]🧩 New Custom Configuration | [+]🎨 Color Card Modes: Color/Gray Scale/Custom | | 👥 Collaborative Operation of Multiple Node Groups | [+]💾 Custom Color Card Collection and Restoration System | [+]💾 Layout Memory and Restoration System | [+]👏 Color Cards: Random/Collect/Remove/Manual Addition | -⚠️Note: `HT20250430 - New UI Scaling Adaptation` (There is a minor bug causing `incomplete display due to excessive global scaling`, but it `does not affect basic usage` and will be fixed later. Therefore, you can currently **use the basic UI scaling with confidence**, i.e., **directly click the "UI Scaling" button**). -⚠️ [+] Note: The three major modules - `💫New Coloring System`, `💫User-Friendly Interaction Design`, and `💫New Color Picker (Original Design)` - have all undergone restructuring to varying degrees, and the basic operation logic of the `v1.0.4_rc version` has been retained as much as possible. Everyone just needs to **wait patiently for the upcoming update**. -## 🖼️ Effect Demonstration +## ✅ New Version Effect Demo🖼️ -![Operation_Demonstration](HT20250501-ArtsticH_NodeAlignPro_demo.webp) +![Operation_Demonstration](Example/hPic/H20251222-NodeAlignPro全新节点对齐与上色插件.png) +⚠️ Note: Regarding multiple alignment modes, you can `try Alt key + Alignment Button` to experience the `new alignment methods` in the new `easter egg feature`. -## ✅ Function Update Records +(Note: The alignment-related functions of the `new Node2.0 Beta version` are not yet stable, and there are cumulative offset issues due to various conversion errors. Reproduction: You can repeatedly enable/disable the native Node2.0 Beta switch in ComfyUI, and you will find that nodes accumulate errors, and their sizes and coordinates will continue to shift. Therefore, adaptation is temporarily not provided (although Node2.0 adaptation has been completed, the `logic for adapting to Node2.0 is temporarily removed` and `will be updated back when it is more stable`)) + +⚠️ [+] Note: The three major modules - `💫Brand New Coloring System`, `💫User-Friendly Interaction Design`, and `💫New Color Picker (Original Design)` - have all been refactored to varying degrees, while retaining the basic operation logic of the `v1.0.4_rc version` as much as possible. Due to being busy in daily life and developing as a hobbyist (not a professional programmer), `there may inevitably be many bugs in this hasty update`. Please help test it, and feel free to submit Issue feedback. Thank you for your support and understanding! + +## ❌ Old Version Interface Comparison ![UI_Linkage-button](Example/hPic/HT20250501-联动【运行按钮】_右键菜单适配_ArtsticH_NodeAlignPro.webp) ![UI_Linkage-button-ContextMenu](Example/hPic/HT20250501-联动【运行按钮】_ArtsticH_NodeAlignPro.webp) diff --git a/README_ZH.md b/README_ZH.md index 295c1ee..7d1daf4 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -2,30 +2,35 @@ [![GitHub stars](https://img.shields.io/github/stars/ArtsticH/ComfyUI_EasyKitHT_NodeAlignPro?style=for-the-badge)](https://github.com/ArtsticH/ComfyUI_EasyKitHT_NodeAlignPro/stargazers) [![License](https://img.shields.io/badge/License-MIT-blue.svg?style=for-the-badge)](LICENSE) [![切换中文](https://img.shields.io/badge/切换中文-README_ZH.md-blue?style=for-the-badge)](README_ZH.md) [![English](https://img.shields.io/badge/English-README.md-blue?style=for-the-badge)](README.md) -全新设计的ComfyUI节点对齐与上色插件,完整重新设计开发了新的UI图标和布局。对齐工具的布局更符合设计行业通用的操作逻辑和体验,上色工具位置更合理,方便快速上色。 +全新重构的ComfyUI节点对齐与上色插件,全新的UI图标和界面交互逻辑。对齐工具的布局更符合设计行业通用的操作逻辑和体验,上色工具位置更合理,方便快速上色。 -## 🔥 [+] 更新预告 (近期版本将会大更新😁)↓↓↓↓ - [+] 基础代码和构思已于今年6-7月份基本完成,由于本人近期较忙,搁置了挺久迟迟没有更新,还请大家耐心等待,争取国庆节前上线大更新版本(详见下图👇)。感谢各位支持和理解! -![更新预告](【更新预告】HT20250627-Snipaste_t011207_ArtsticH_NodeAlignPro_v2.png) +## 🔥 [+] 版本大更新已经来了😁↓↓↓↓ +基础代码和构思早已于今年6-7月份基本完成,由于本人近期较忙,搁置了挺久迟迟没有更新; + + [+] 这两天抽空更新了下,在尽可能保留上一版UI及交互习惯的前提下,重新设计了相关UI,基本上可以说是全部重构了相关逻辑(详见下图👇)。 +![更新预告](Example/hPic/H20251222-全新节点对齐与上色UI实操演示.png) -## ✨ 核心功能 (即将上线) +## ✨ 核心功能 (已正式上线) | 💫智能对齐系统 | [+]💫全新上色系统 | [+]💫人性化交互设计 | [+]💫全新取色器(原创设计) | |---------------------------|---------------------------|---------------------------|---------------------------| -| ✅ 8种基础对齐模式 | [+]🖼️ 一键式颜色管理方案 | 🖱️ 悬浮式工具面板 | [+]✅ 原生JS/CSS实现全新取色系统 | +| ✅ 多种对齐模式 | [+]🖼️ 一键式颜色管理方案 | 🖱️ 悬浮式工具面板 | [+]✅ 原生JS/CSS实现全新取色系统 | | 📐 动态间距分布算法 | [+]🔗 实时联动显示取色效果 | [+]🧩 全新自定义配置 | [+]🎨 色卡模式: 彩色/灰度/自定义 | | 👥 多节点组协同操作 | [+]💾 自定义色卡收藏与恢复系统 | [+]💾 布局记忆与恢复系统 | [+]👏 色卡:随机/收藏/移除/以及手动添加 | -⚠️注:`HT20250430-新增UI缩放适配` (有轻微bug导致`全局缩放过大导致显示不全`,但`不影响基础使用`,后续会修复。 -因此目前你可以**放心的使用基础UI缩放**,即**直接点击“UI缩放”按钮**)。 -⚠️ [+] 注:`💫全新上色系统` `💫人性化交互设计` `💫全新取色器(原创设计)` 这三大板块均进行了不同程度的重构,且尽可能保留了`v1.0.4_rc版`的基础操作逻辑,大家`**耐心等待近期更新**`即可。 -## 🖼️ 效果演示 +## ✅ 新版效果演示🖼️ -![操作演示](HT20250501-ArtsticH_NodeAlignPro_demo.webp) +![操作演示](Example/hPic/H20251222-NodeAlignPro全新节点对齐与上色插件.png) +⚠️注:关于多种对齐模式,可`尝试Alt键+对齐按钮 ` 体验下新的`彩蛋功能`里的`全新对齐方式`。 -## ✅ 更新功能记录 +(注意`新版Node2.0测试版`的对齐相关功能目前还不够稳定,存在各种换算误差的累积偏移问题 (复现:可以来回开启/关闭ComfyUI原生的Node2.0测试版开关,就会发现,节点会累积误差,尺寸、坐标会不断的偏移。因此,暂时不作适配(虽然已经适配好Node2.0了,但还是`暂时移除适配Node2.0的逻辑`,后面`稍微稳定些会更新回来`)) + +⚠️ [+] 注:`💫全新上色系统` `💫人性化交互设计` `💫全新取色器(原创设计)` 这三大板块均进行了不同程度的重构,且尽可能保留了`v1.0.4_rc版`的基础操作逻辑,由于平时较忙且业余开发(非专业程序猿),`仓促更新难免会有不少bug`,还请大家帮忙测试,欢迎提交Issue反馈,感谢各位支持和理解! + + +## ❌ 旧版界面对照 ![UI_联动【运行按钮】](Example/hPic/HT20250501-联动【运行按钮】_右键菜单适配_ArtsticH_NodeAlignPro.webp) ![UI_联动【运行按钮】](Example/hPic/HT20250501-联动【运行按钮】_ArtsticH_NodeAlignPro.webp) diff --git a/__init__.py b/__init__.py index 78ed34a..440eb0d 100644 --- a/__init__.py +++ b/__init__.py @@ -1,8 +1,5 @@ import os -# 插件节点映射(可以不定义任何节点) NODE_CLASS_MAPPINGS = {} - -# 前端文件路径 current_directory = os.path.dirname(os.path.abspath(__file__)) -# 打印输出当前目录 WEB_DIRECTORY = os.path.join(current_directory) +# NODE_JS = ["ArtsticH/hNodeAlignPro.js"] \ No newline at end of file diff --git a/node_info.js b/node_info.js index b266d41..5a68edc 100644 --- a/node_info.js +++ b/node_info.js @@ -1,1328 +1,2411 @@ -import { - ColorSVGs - } from "./web/color_svgs.js"; - const buildSVG = (innerContent, { - t, - pId - }) => { - return ` - ${innerContent} - `; - }; - const Elements = { - rect: (x, y, width, height) => - ``, - vLine: (x, height = 24) => - ``, - hLine: (y, width = 24) => - ``, - dotMatrix: () => { - const dots = []; - const positions = [ - [11, 6], - [21, 6], - [11, 16], - [21, 16], - [11, 26], - [21, 26] - ]; - positions.forEach(([cx, cy], index) => { - dots.push(``); - }); - return dots.join(''); +/** + * 【ComfyUI_EasyKitHT_NodeAlignPro】:核心代码 + * @Artstich_Example + * ArtsticH/hNodeAlignPro.js + * @name ComfyUI_EasyKitHT_NodeAlignPro (ComfyUI Plugin) + * @description Advanced node alignment and coloring tools for ComfyUI + * @author Artstich @date 2025-06-15 @version 1.0.2 @license GPL-3.0 + * @see https://github.com/ArtsticH/ComfyUI_EasyKitHT_NodeAlignPro + */ +(function() { + 'use strict'; + + // 【== CSS 样式注入 ==】 + const styles = ` +.hCMP-SwitchInput, .hAlign-label, .hAlignBtn_Group3, #h0__hApBar0_apBall, #hNAP-Title, #hApBar4__ProH, #hApBar4__ProH__Rename { display: none !important; } +:root { + /* ↓↓↓全局核心颜色定义,不得修改↓↓↓ */ + --hC_Bg: 24, 24, 27; + --hC_Bg95: rgba(var(--hC_Bg), 0.95); + --hC_Border: 61, 61, 67; + --hC_hMenu: var(--hC_Border); + --hC_hBtn_Std: 32, 32, 36; + --hC_hBtn_Hover: rgba(var(--hC_BW1_Black), 0.5); + --hC_hBtn1_Highlight: 55, 55, 126; + --hC_hBtn2_Warning: 69, 30, 30; + --hC_hBtn3_WarningHover: 90, 42, 42; + --hC_hBtn_svg: 107, 107, 112; + --hC_hBtn_svg_B: rgb(var(--hC_BW4_Gray)); + --hC_hBtn_svg_W: rgb(var(--hC_BW6_BrightGray)); + --hC_hBarDivider: 39, 39, 43; + --hC_ComfyUIACBar: 112, 163, 243; + + --hC1_Red: 128, 38, 38; + --hC2_Orange: 133, 64, 31; + --hC3_Yellow: 130, 93, 30; + --hC4_Green: 37, 87, 37; + --hC5_Cyan: 42, 87, 86; + --hC6_Blue: 28, 78, 105; + --hC7_Purple: 55, 55, 125; + + --hC_BW1_Black: 0, 0, 0; + --hC_BW2_DarkGray: 13, 13, 13; + --hC_BW3_DeepGray: 26, 26, 26; + --hC_BW4_Gray: 38, 38, 38; + --hC_BW5_LightGray: 77, 77, 77; + --hC_BW6_BrightGray: 204, 204, 204; + --hC_BW7_White: 255, 255, 255; + /* ↑↑↑全局核心颜色定义,不得修改↑↑↑ */ + + /* 新增:取色器相关变量(全部已按注释要求重命名并统一为x,x,x格式) */ + --hC_CPr0__PurpleStd: var(--hC_hBtn1_Highlight); + --hC_CPr1__bgDark: 30, 30, 30; + --hC_CPr2__bgDarker: 21, 21, 21; + --hC_CPr3__bgLight: 37, 37, 37; + --hC_CPr4__border: --hC_Border; + --hC_CPr5__hNodeDot: 102, 102, 102; + --hC_CPr6__hNodeText: 224, 224, 224; + --hC_CPr7__hNodeIMG: 100, 181, 246; + --hC_CPr8__hNodeLaten: 255, 156, 249; + --hC_CPr9__hNodeVAE: 255, 110, 110; + + /* 【h彩虹色】基础颜色变量 */ + --hC_Rb01__hR__: #ff0000; + --hC_Rb02__Orange: #ff9900; + --hC_Rb03__hYY: #cdff00; + --hC_Rb04__hG__: #35ff00; + --hC_Rb05__hG2__: #00ff66; + --hC_Rb06__hCC: #00ffcc; + --hC_Rb07__hCC2: #00ccff; + --hC_Rb08__hB__: #0066ff; + --hC_Rb09__hB2__: #3300ff; + --hC_Rb10__Purple: #cc00ff; + --hC_Rb11__hMM: #ff0099; + --hC_Rb12__hR__: #ff0000; + --hC__RbList: #ff0000, #ff9900, #cdff00, #35ff00, #00ff66, #00ffcc, #00ccff, #0066ff, #3300ff, #cc00ff, #ff0099, #ff0000; + --hC_Rb__Bottom: linear-gradient(to bottom, var(--hC__RbList)); + --hC_Rb__Left: linear-gradient(to left, var(--hC__RbList)); + --hC_Rb__Right: linear-gradient(to right, var(--hC__RbList)); + --hC_Rb__Top: linear-gradient(to top, var(--hC__RbList)); + + /* 标准尺寸变量 - 以h32为基准 */ + --h32: 32px; + --h2: calc(var(--h32) / 16); + --h3: calc(var(--h32) * 0.09375); + --h4: calc(var(--h32) / 8); + --h6: calc(var(--h32) * 0.1875); + --h8: calc(var(--h32) / 4); + --h10: calc(var(--h32) / 3.2); + --h12: calc(var(--h32) * 0.375); + --h14: calc(var(--h32) * 0.4375); + --h15: calc(var(--h32) * 0.46875); + --h16: calc(var(--h32) / 2); + --h18: calc(var(--h32) * 0.5625); + --h20: calc(var(--h32) * 0.625); + --h22: calc(var(--h32) * 0.6875); + --h24: calc(var(--h32) * 0.75); + --h26: calc(var(--h32) * 0.8125); + --h30: calc(var(--h32) * 0.9375); + --h36: calc(var(--h32) * 1.125); + --h40: calc(var(--h32) * 1.25); + --h48: calc(var(--h32) * 1.5); + --h50: calc(var(--h32) * 1.5625); + --h58: calc(var(--h32) * 1.8125); + --h64: calc(var(--h32) * 2); + --h72: calc(var(--h32) * 2.25); + --h80: calc(var(--h32) * 2.5); + --h82: calc(var(--h32) * 2.5625); + --h96: calc(var(--h32) * 3); + --h108: calc(var(--h32) * 3.375); + --h128: calc(var(--h32) * 4); + --h136: calc(var(--h32) * 4.25); + --h140: calc(var(--h32) * 4.375); + --h144: calc(var(--h32) * 4.5); + --h220: calc(var(--h32) * 6.875); + --h256: calc(var(--h32) * 8); + --h288: calc(var(--h32) * 9); + --h384: calc(var(--h32) * 12); + --h512: calc(var(--h32) * 16); + + /* 尺寸变量 */ + --border-radius: var(--h4); + --border-width: 1px; + --title-bar-radius: var(--h6); + + --node-title-height: var(--h40); + --node-main-height: var(--h80); + --palette-size: var(--h220); + --palette-bar-size: var(--h24); + --hSlider-width: var(--h128); + --slider-width: var(--h12); + --slider-height: var(--palette-size); + --slider-bar-width: var(--h24); + --slider-bar-height: var(--h12); + --hsb-height: var(--h8); + --hsb-bar-width: var(--h8); + --hsb-bar-height: var(--h16); + --slider-spacing: var(--h8); + --hColorPicker__hCPr-width: var(--h384); + + /* 动画与交互变量 */ + --hTrans3: 0.3s; + --btn-hover-scale: 1.2; + --rotate-in-duration: 0.35s; + --rotate-out-duration: 0.25s; + --rotate-in-angle: 75deg; + --easing-standard: cubic-bezier(0.34, 1.56, 0.64, 1); + --easing-out: cubic-bezier(0.22, 1, 0.36, 1); + .hDebugInfo { position: fixed; top: 10px; right: 10px; background: rgba(0,0,0,0.7); color: rgb(var(--hC_hBtn_svg)); padding: 8px; border-radius: 4px; font-size: 12px; font-family: monospace; z-index: calc(var(--hZindex) + 10010); } + .hDebugInfo_V2 { position: fixed !important; top: var(--h108) !important; left: var(--h64) !important; color: rgb(var(--hC_hBtn_svg)) !important; padding: var(--h8) !important; border-radius: var(--h8) !important; font-size: var(--h12) !important; font-family: monospace !important; z-index: var(--h512) !important; transform: none !important; box-sizing: border-box !important; pointer-events: auto !important; will-change: transform !important; isolation: isolate !important; } + + /* Z-index 层级管理 */ + --hZindex: 10001; + --hZindex__h1__hApBar1_Color: calc(var(--hZindex) + 99); + --hZindex__h2__hNodeAlignPro: calc(var(--hZindex) + 199); + --hZindex__hNAP-Title: calc(var(--hZindex) + 3999); + --hZindex__hApBar2__Align: calc(var(--hZindex) + 999); + --hZindex__hApBar4__ProH: calc(var(--hZindex) + 1399); + --hZindex__hApBar4__ProH__Rename: calc(var(--hZindex) + 1799); + --hZindex__hColorPicker: calc(var(--hZindex) + 3799); + --hZindex__h6__hMenu: calc(var(--hZindex) + 5999); + --hZindex__hMenuDropdown: calc(var(--hZindex) + 6000); + --hZindex__dragging: calc(var(--hZindex) + 10000); + --hColorPicker__font-size: 8pt; + + /* 滑块样式变量 */ + --slider-bg: rgb(var(--hC_Border)); + --slider-handle-bg: rgb(var(--hC_BW6_BrightGray)); + --slider-handle-border: 0px solid rgb(var(--hC_BW7_White)); + --slider-handle-shadow: 0 0 3px rgba(var(--hC_BW1_Black), 0.8); + --slider-handle-active-bg: rgb(var(--hC_BW7_White)); + --slider-handle-active-size: 14px; +} + +.hCMP-SwitchInput, .hAlign-label, .hAlignBtn_Group3, +#h0__hApBar0_apBall, #hNAP-Title, #hApBar4__ProH, #hApBar4__ProH__Rename { display: none !important; } + +#hApBar2__Align, #hApBar4__ProH, #hApBar4__ProH__Rename, #h6__hMenu { padding: 0 var(--h8) !important; } +#hNodeAlignKit, #h0__hApBar0_apBall, #h1__hApBar1_Color, #hNAP-Title, +#hNAP-Title__LOGO, #hNAP-Title__Content, #hNAP-Title__Content-Text, #hNAP-Title__Content-ModeSwitch,#hNAP-Title__Context, #hNAP-Title__MenuA, +.hBtnC, .hInput { box-sizing: border-box; } +#hNAP-Title, #hBarMove, #hNAP-Title__LOGOAlign, .hBarDivider, .hCPr__header { cursor: move; } +#h0__hApBar0_apBall, #hNAP-Title__LOGO, #hNAP-Title__Content-ModeSwitch, #hNAP-Title__MenuA, +.hBtnC, .hBtn, .hMenu-btn, .hCMP-hSel__option {cursor: pointer; } + +#hNodeAlignKit { z-index: var(--hZindex); position: fixed; margin: 0; border: none; background: none; box-sizing: border-box; } +#h0__hApBar0_apBall { display: flex; width: var(--h32); height: var(--h32); border: none; border-radius: var(--h32); background: rgb(var(--hC_hBtn1_Highlight)); box-sizing: border-box; transition: all var(--hTrans3) ease; align-items: center; justify-content: center; cursor: pointer; position: relative; } +#h0__hApBar0_apBall:hover { background-color: var(--hC_hBtn_Hover); } +#h0__hApBar0_apBall.active { + width: var(--h64); height: var(--h64); border-radius: var(--h32); background-color: var(--hC_Bg95); border: 2px solid rgb(var(--hC_Border)); z-index: 1001; + box-shadow: 0 0 var(--h5) rgba(100, 100, 255, 0.5), 0 0 var(--h10) rgba(100, 100, 255, 0.3), 0 0 var(--h15) rgba(100, 100, 255, 0.1); + animation: breathe 3s infinite ease-in-out; +} +@keyframes breathe { + 0%, 100% {box-shadow: 0 0 5px rgba(100, 100, 255, 0.5), 0 0 10px rgba(100, 100, 255, 0.3), 0 0 15px rgba(100, 100, 255, 0.1);} + 50% {box-shadow: 0 0 10px rgba(100, 100, 255, 0.7), 0 0 20px rgba(100, 100, 255, 0.5), 0 0 30px rgba(100, 100, 255, 0.3);} +} + +#h0__hApBar0_apBall #hBtnY_barLOGO { transition: all 0.3s ease; width: 100%; height: 100%; } +#h0__hApBar0_apBall.active #hBtnY_barLOGO { filter: invert(23%) sepia(61%) saturate(1291%) hue-rotate(215deg) brightness(94%) contrast(92%); transition: filter 0.3s ease, width 0.3s ease, height 0.3s ease; width: 52px; height: 52px; } +#h0__hApBar0_apBall #hBtnY_barLOGO { transition: width 0.3s ease, height 0.3s ease; } +#hIcon #hBtnY_barLOGO { width: var(--h48); height: var(--h48); } +#h1__hApBar1_Color { position: relative; display: flex; align-items: center; background-color: transparent; padding: var(--h10); border-radius: var(--h12); border: none; box-sizing: border-box; } +.hBtnC { width: var(--h24); height: var(--h24); padding: 0; border: none; background: none; cursor: pointer; border-radius: 50%; position: relative; transition: all var(--hTrans3) var(--easing-standard); box-sizing: border-box; margin: 0 var(--h2); } + +#hClear, #hPick, #hRandom { border-radius: 50% !important; overflow: hidden !important; } +#hClear:hover, #hPick:hover, #hRandom:hover { border-radius: 50% !important; overflow: hidden !important; } +#hClear .hIcon, #hPick .hIcon, #hRandom .hIcon { border-radius: 0 !important; overflow: visible !important; } +.hBtnC_7c { border: 1px solid rgb(var(--hC_BW2_DarkGray)); background: rgb(var(--hC_BW1_Black)); } +.hBtnC:hover { transform: scale(var(--btn-hover-scale)); background: rgb(var(--hC_BW1_Black)); box-shadow: 0 0 5px rgba(var(--hC_Border), 0.7); } +.hBtnC_7c:hover { border: 1px solid rgb(var(--hC_BW2_DarkGray)); } +.hIconC { width: 100%; height: 100%; display: block; } +.hIcon { width: 100%; height: 100%; object-fit: contain; pointer-events: none; } + +#hClear, #hPick, #hRandom { background-color: rgb(var(--hC_BW1_Black)); } +.hColorA_Clear__Slash { fill: rgb(var(--hC1_Red)); } +#hColorA_Clear, #hColorB_Pick, #hColorC_Random { transition: transform var(--hTrans3) var(--easing-standard); } +#hClear:hover, #hPick:hover, #hRandom:hover { transform: scale(var(--btn-hover-scale)) rotate(var(--rotate-in-angle)); animation: rotateIn var(--rotate-in-duration) var(--easing-out); } +#hClear:not(:hover), #hPick:not(:hover), #hRandom:not(:hover) { animation: rotateOut var(--rotate-out-duration) var(--easing-standard); } + +@keyframes rotateIn { 0% { transform: rotate(0deg) scale(var(--btn-hover-scale)); } 100% { transform: rotate(var(--rotate-in-angle)) scale(var(--btn-hover-scale)); } } +@keyframes rotateOut { 0% { transform: rotate(var(--rotate-in-angle)) scale(1); } 100% { transform: rotate(0deg) scale(1); } } +.custom-color-btn { position: relative; } +.love-icon-container { position: absolute; top: 54%; left: 50%; width: 50%; height: 50%; transform: translate(-50%, -50%); z-index: 1; display: flex; align-items: center; justify-content: center; } + +.love-icon-container svg { width: 100%; height: 100%; } +.hBtnC.disabled-state { opacity: 0.5 !important; pointer-events: none !important; cursor: not-allowed !important; } +#hClear.disabled-state, #hPick.disabled-state, #hRandom.disabled-state { transform: none !important; animation: none !important; } +.hBtn_svg { fill: currentColor; } +#hNAP-Title { display: flex; align-items: center; height: var(--h24); padding: 0 var(--h8); margin: 0; background-color: rgb(var(--hC_hBtn_Std)); border: none; border-top-left-radius: var(--title-bar-radius); border-top-right-radius: var(--title-bar-radius); box-sizing: border-box; cursor: move; } +#hNAP-Title__LOGO { width: var(--h22); height: var(--h22); padding: 0; margin: 0 var(--h4); border: none; background: none; cursor: pointer; box-sizing: border-box; } +#hNAP-Title__Content { display: flex; align-items: center; width: 264px; height: 24px; padding: 0; margin: 0; background: none; border: none; box-sizing: border-box; } +#hNAP-Title__Content-Text { padding: 0; margin: 0; color: rgb(var(--hC_hBtn_svg)); font-size: var(--h16); text-align: left; white-space: nowrap; width: auto; box-sizing: border-box; } +#hNAP-Title__Content-ModeSwitch { width: var(--h16); height: var(--h16); padding: 0; margin: 0 var(--h4); border: none; background: var(--hC_hBtn2_Warning); cursor: pointer; box-sizing: border-box; } +#hNAP-Title__Context { height: var(--h16); padding: 0 var(--h8); margin: 0 var(--h4); background-color: var(--hC_Bg95); border: none; border-radius: var(--border-radius); color: rgba(var(--hC_hBtn_svg), 0.5); font-size: 10px; text-align: right; white-space: nowrap; width: 100%; box-sizing: border-box; flex: 1; } +#hNAP-Title__MenuA { width: var(--h32); height: var(--h22); padding: 0; margin: 0 var(--h4); border: none; background: none; cursor: pointer; box-sizing: border-box; } + +#hIcon__MenuA { width: var(--h32); height: var(--h22); background: rgb(var(--hC_hBtn_Std)); } +#h2__hNodeAlignPro { z-index: var(--hZindex__h2__hNodeAlignPro); padding: 0; margin: 0; border: 1px solid rgb(var(--hC_Border)); border-radius: var(--h8); background: none; background: var(--hC_Bg95); } +#hApBar2__Align { z-index: var(--hZindex__hApBar2__Align); display: flex; align-items: center; } +#hApBar4__ProH { display: flex; align-items: center; } +#hApBar4__ProH__Rename { display: flex; align-items: center; } + +[class^="hAlignBtn_Group"], [class^="hSelectBtn_Group"] { display: flex; align-items: center; gap: 0px; padding: 0; } +.hBtn { width: var(--h32); height: var(--h32); padding: 0; border: none; border-radius: var(--border-radius); background: none; cursor: pointer; transition: background-color 0.2s ease; } + +.hBtn:hover { background-color: var(--hC_hBtn_Hover); } +.hAlign-label { width: var(--h40); color: rgb(var(--hC_hBtn_svg)); font-size: calc(var(--h32)-4); } +.hAlign-label2 { width: calc(var(--h32)+2); color: rgb(var(--hC_hBtn_svg)); font-size: calc(var(--h32)-4); } +#hBtn-DispMode__hAlways { width: var(--h48); height: var(--h32); border: none; background: rgb(var(--hC_hBtn1_Highlight)); } + +.hCMP-SwitchInput { display: flex; align-items: center; width: var(--h82); height: var(--h26); background: rgb(var(--hC_BW1_Black)); border: 1px solid rgb(var(--hC_Border)); border-radius: var(--border-radius); } +.hCMP-Switch { display: flex; flex-direction: column; padding: 0; gap: 0; width: var(--h18); height: var(--h26); background: var(--hC_hBtn2_Warning); } +.hCMP-Switch > * { margin: 0; } +.hCMP-Switch__Btn { height: var(--h12); border: none; border-radius: var(--border-radius); background: none; } +.hCMP-Switch__Btn-SVG { width: var(--h18); } +.hInput { width: var(--h64); height: var(--h26); box-sizing: border-box; padding: 0 var(--h4) 0 var(--h2); text-align: right; border: none; background: none; color: rgb(var(--hC_hBtn_svg)); font-size: var(--h16) px; } +.hAlign-label__RenameAB { display: flex; width: var(--h40); height: var(--h32); align-items: center; justify-content: right; padding: 0 var(--h4) 0 var(--h2); color: rgb(var(--hC_hBtn_svg)); font-size: calc(var(--h32)-4); } +.hBarDivider { width: var(--h2); height: var(--h40); background: rgb(var(--hC_hBarDivider)); margin: 0 var(--h8); border: none; cursor: move; } +#hBarMove { cursor: move; } + +#h6__hMenu { position: absolute; background: rgb(var(--hC_hMenu)); border-radius: var(--h8); z-index: var(--hZindex__h6__hMenu); display: grid; grid-template-columns: repeat(4, 1fr); grid-template-rows: auto auto; gap: var(--h8) var(--h4); width: auto; padding: var(--h4) var(--h8) var(--h8) var(--h8) !important; border: 1px solid rgb(var(--hC_Border)); box-sizing: border-box; } +#h6__hMenu > div:last-child { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--h4); justify-items: center; margin-top: 0; height: var(--h26); position: relative; width: 100%; } +.hMenu-btn { border: none; width: var(--h82); height: var(--h26); border-radius: var(--border-radius); background-color: rgb(var(--hC_hBtn_Std)); color: rgb(var(--hC_BW6_BrightGray)); font-size: var(--h16); cursor: pointer; transition: all var(--hTrans3) ease; display: flex; align-items: center; justify-content: center; position: relative; z-index: 2; box-sizing: border-box; } + +.hMenu-btn:hover { background-color: rgb(var(--hC_hBtn1_Highlight)); } +.hMenu-btnReset { background: rgb(var(--hC_hBtn2_Warning)); } +.hMenu-btnReset:hover { background: rgb(var(--hC_hBtn3_WarningHover)); } +#hBugReport { cursor: alias; } +#hGuide { cursor: help; } + +.hCMP__hSelKit { display: inline-block; flex-direction: column; gap: var(--h2); width: var(--h82); height: calc(var(--h16) + var(--h26)); position: relative; vertical-align: top; } +.hCMP-hSel, .hCMP-hSel .hMenu-btn { width: var(--h82) !important; box-sizing: border-box; } +.hSelKit-label { display: block; width: var(--h82); height: var(--h14); color: rgb(var(--hC_hBtn_svg)); font-size: var(--h12); margin: 0; padding: 0 0 0 var(--h4); line-height: 14px; text-align: left; box-sizing: border-box; } +.hCMP-hSel { position: relative; width: var(--h82); height: var(--h26); } +.hCMP-hSel::before { content: ''; position: absolute; top: -8px; left: -8px; right: -8px; bottom: -8px; z-index: 1; display: none; } +.hCMP-hSel:hover::before { display: block; } + +.hCMP-hSel__options { position: absolute; top: 100%; left: 0; width: var(--h82) !important; background-color: rgb(var(--hC_hBtn_Std)); border: 1px solid rgb(var(--hC_Border)); border-radius: var(--border-radius); margin-top: var(--h2); z-index: var(--hZindex__hMenuDropdown); overflow: hidden; box-shadow: 0 var(--h4) var(--h8) rgba(var(--hC_BW1_Black), 0.2); opacity: 0; visibility: hidden; transform: translateY(-5px); transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s ease; box-sizing: border-box; } +.hCMP-hSel__options.active { opacity: 1; visibility: visible; transform: translateY(0); } +.hCMP-hSel__options.fade-out { opacity: 0; visibility: hidden; transform: translateY(-5px); } +.hCMP-hSel__option { padding: var(--h6) var(--h8); color: rgb(var(--hC_BW6_BrightGray)); cursor: pointer; transition: all var(--hTrans3) ease; text-align: center; display: flex; align-items: center; justify-content: center; font-size: var(--h16); } +.hCMP-hSel__option:hover { background-color: rgb(var(--hC_hBtn1_Highlight)); } +.hCMP-hSel__option.selected { background-color: rgba(var(--hC_hBtn1_Highlight), 0.5); } +#hNAP-Title__LOGOAlign:hover, #hBarMove:hover { background-color: rgb(var(--hC_ComfyUIACBar)); } +#hNodeAlignKit, .hBtnC, .hIconC, #h1__hApBar1_Color, .hCPr__header { user-select: none; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-drag: none; -webkit-user-drag: none; -khtml-user-drag: none; -moz-user-drag: none; -o-user-drag: none; } +.Artstich_hColorPicker, .Artstich_hColorPicker * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Microsoft YaHei', sans-serif; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; font-size: var(--hColorPicker__font-size); } +.hIcon__LOGO { width: var(--h32); height: var(--h32); } +.Artstich_hColorPicker { position: absolute; z-index: var(--hZindex__hColorPicker); border: 1px solid rgb(var(--hC_Border)); border-radius: var(--h8); background: rgba(var(--hC_Bg), 1); box-shadow: 0 var(--h10) var(--h30) rgba(var(--hC_BW1_Black), 0.5); overflow: hidden; display: flex; flex-direction: column; width: fit-content; } +.Artstich_hColorPicker input { text-align: end; padding-right: 4px; } +#hexInput2 { width: 56px; } +.hCPr__valueG { border-bottom: 1px solid rgb(var(--hC_Border)); } +.hCPr__header { padding: 4px 8px; display: grid; grid-template-columns: repeat(2, auto); justify-content: start; border-bottom: 1px solid rgb(var(--hC_Border)); width: 100%; } +.hCPr__header h2 { font-weight: normal; color: rgb(var(--hC_hBtn_svg)); font-size: calc(var(--hColorPicker__font-size) * 2 + 2pt); } +.hColorPicker__hCPr { width: fit-content; padding: 8px; box-sizing: border-box; display: flex; flex-direction: column; gap: 0px; margin: 0 auto; } +.hColorPicker__ValueCopy { display: flex; justify-content: flex-end; gap: 10px; margin-bottom: 0px; width: 100%; } +.hCPr__main { display: flex; gap: 20px; width: fit-content; } +.hCPr__mainLeft { margin-top: 16px; margin-left: 8px; display: flex; flex-direction: column; gap: 10px; width: fit-content; } +.hCPr__mainRight { display: flex; flex-direction: column; gap: 0px; width: fit-content; } +.hCPr__mainPicker { display: flex; gap: var(--slider-spacing); align-items: center; width: fit-content; } +.hCPr__mainPicker_colorAreaG { position: relative; width: var(--palette-size); height: var(--palette-size); } +.hCPr__mainPicker_colorArea { width: 100%; height: 100%; border-radius: var(--border-radius); overflow: hidden; cursor: crosshair; position: relative; } + +#hCPr__mainPicker_colorCanvas { width: 100%; height: 100%; display: block; border-radius: var(--border-radius); } + +.hCPr__mainPicker_colorCursor { position: absolute; width: var(--palette-bar-size); height: var(--palette-bar-size); border: 2px solid rgb(var(--hC_BW7_White)); border-radius: 50%; box-shadow: 0 0 3px rgba(var(--hC_BW1_Black), 0.8); transform: translate(-50%, -50%); pointer-events: none; z-index: 10; } +.hCPr__mainPicker_hueSliderG { margin-left: 8px; position: relative; width: var(--slider-width); height: var(--slider-height); } +.hCPr__mainPicker_hueSlider { width: 100%; height: 100%; background: var(--hC_Rb__Bottom); border-radius: var(--border-radius); position: relative; cursor: pointer; } +.hCPr__mainPicker_hueCursor { position: absolute; left: 50%; width: var(--slider-bar-width); height: var(--slider-bar-height); background: rgb(var(--hC_BW7_White)); border: 2px solid rgb(var(--hC_BW7_White)); border-radius: calc(var(--slider-bar-height) / 2); transform: translate(-50%, -50%); pointer-events: none; box-shadow: 0 0 3px rgba(var(--hC_BW1_Black), 0.8); } +.hCPr__nodePreview { border-radius: var(--border-radius); cursor: pointer; margin-top: 10px; display: grid; place-items: center; height: 140px; background: transparent !important; border: none !important; width: fit-content; } + +#hPreview__Node { width: 100%; height: 136px; } +#hCPr__nodeSvg { width: 288px; height: auto; } +.hPreview__Node-Main { fill: rgb(var(--hC_BW4_Gray)); rx: 7.25; ry: 7.25; filter: url(#drop-shadow); } +.hPreview__Node-Title { fill: rgb(var(--hC_CPr0__PurpleStd)); } +.hPreview__Node-Divider { stroke: rgb(var(--hC_Bg)); stroke-width: .75px; stroke-miterlimit: 10; } +.hPreview__Node-Txt { fill: rgb(var(--hC_CPr6__hNodeText)); font-family: MicrosoftYaHei,'Microsoft YaHei'; font-size: 12px; } +.hPreview__Node-Dot { stroke-width: 0; } +.hPreview__Node-Dot1 { fill: rgb(var(--hC_CPr5__hNodeDot)); r: 4.62; } +.hPreview__Node-Input1 { fill: rgb(var(--hC_CPr8__hNodeLaten)); r: 3.87; } +.hPreview__Node-Output2 { fill: rgb(var(--hC_CPr7__hNodeIMG)); stroke: rgb(var(--hC_BW1_Black)); stroke-width: .75px; r: 3.87; } +.hPreview__Node-Input2 { fill: rgb(var(--hC_CPr9__hNodeVAE)); r: 3.87; } +.hCPr__hsbBarKit { border-radius: var(--border-radius); padding: 15px; width: 288px; height: 96px; } +.hCPr__hsbBar_sliderG { margin-bottom: 0; display: flex; align-items: center; gap: 0px; height: 24px; } +.hCPr__hsbBar_sliderLabel { width: 50px; color: rgb(var(--hC_CPr6__hNodeText)); white-space: nowrap; } +.hCPr__hsbBar_hsbBarG { display: flex; align-items: center; gap: 8px; flex: 1; } + +.slider { flex: 1; height: var(--hsb-height); background: var(--slider-bg); border-radius: calc(var(--hsb-height) / 2); position: relative; cursor: pointer; width: var(--hSlider-width); } +.hCPr__sliderFill { position: absolute; height: 100%; width: 100%; left: 0; top: 0; border-radius: calc(var(--hsb-height) / 2); } +.hCPr__hueSliderFill { background: var(--hC_Rb__Right); height: 100%; border-radius: calc(var(--hsb-height) / 2); } +.slider-handle { position: absolute; width: var(--hsb-bar-width); height: var(--hsb-bar-height); background: var(--slider-handle-bg); border: var(--slider-handle-border); border-radius: calc(var(--hsb-bar-width) / 2); box-shadow: var(--slider-handle-shadow); transform: translate(-50%, -50%); cursor: pointer; z-index: 10; top: 50%; } +.slider-handle:active { background: var(--slider-handle-active-bg); width: var(--slider-handle-active-size); height: 22px; transform: translate(-50%, -50%); } +.hCPr__sliderValue { width: 40px; height: 22px; background: rgb(var(--hC_BW1_Black)); border: 1px solid rgb(var(--hC_Border)); border-radius: var(--border-radius); padding: 0px; color: rgb(var(--hC_hBtn_svg)); text-align: center; } +.hCPr__valueG { display: flex; align-items: center; gap: 0; } +.hCPr__valueLabel { width: 58px; font-size: 12px; color: rgb(var(--hC_CPr6__hNodeText)); height: 16px; line-height: 16px; padding: 0 4px; white-space: nowrap; text-align: right; } +.value-input { height: 22px; background: rgb(var(--hC_BW1_Black)); border: 1px solid rgb(var(--hC_Border)); color: rgb(var(--hC_hBtn_svg)); font-size: 12px; font-weight: bold; padding: 0 4px; line-height: 14px; width: 48px; border-radius: 0; outline: none; } +.value-input:first-of-type { border-radius: var(--border-radius) 0 0 var(--border-radius); border-right: none; } +.rgb-input { width: 32px; border-radius: 0; border-right: none; } +.rgb-input:first-of-type { border-radius: var(--border-radius) 0 0 var(--border-radius); } +.rgb-input:last-of-type { border-right: 1px solid rgb(var(--hC_Border)); border-radius: 0; } +.hCPr__rgbLabel { width: 36px; } + +.copy-btn { background: rgb(var(--hC_Border)); color: rgb(var(--hC_hBtn_svg)); border: 1px solid rgb(var(--hC_Border)); height: 22px; width: 22px; padding: 0; display: flex; justify-content: center; align-items: center; cursor: pointer; transition: background 0.2s; border-radius: 0 var(--border-radius) var(--border-radius) 0; position: relative; } +.rgb-copy-btn { border-radius: 0 var(--border-radius) var(--border-radius) 0; margin-left: 0; } +.copy-btn:hover { background: rgb(var(--hC_CPr0__PurpleStd)); } +.hCPr__copyIcon { width: 10px; height: 12px; position: relative; transform: translateX(1px) translateY(-1px); } +.hCPr__copyIcon-front { position: absolute; width: 10px; height: 12px; background: rgb(var(--hC_hBtn_svg)); border: 2px solid rgb(var(--hC_BW1_Black)); border-radius: 1px; top: 3px; left: -3px; } +.hCPr__copyIcon-back { position: absolute; width: 10px; height: 12px; background: rgb(var(--hC_hBtn_svg)); border: 2px solid rgb(var(--hC_BW1_Black)); border-radius: 1px; } +.hCPr__hTips { display: grid; grid-template-columns: repeat(2, auto); justify-content: start; align-items: center; } +#hCPr__nodePreviewTips { color: rgb(var(--hC_CPr6__hNodeText)); font-size: var(--h16); pointer-events: none; display: flex; align-items: center; } +.hCPr__nodeMode { padding: 4px 8px; background: rgb(var(--bar)); border-radius: var(--border-radius); pointer-events: none; color: rgb(var(--hC_CPr6__hNodeText)); font-size: var(--h16); display: flex; align-items: center; margin-left: -8px; } +.slider-touch-area { position: absolute; top: -4px; bottom: -4px; left: -4px; right: -4px; z-index: 2; cursor: pointer; } +.hCPr__mainPicker_hueSlider_touchArea { position: absolute; top: -4px; bottom: -4px; left: -4px; right: -4px; z-index: 2; cursor: pointer; } +#hCPr__HUE_sliderControl { background: none; } +#hCPr__HUE_sliderClip { width: 100% !important; } +.hIcon { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; } +.hBtn_svg { fill: rgb(var(--hC_hBtn_svg)); } +.hBtn_full { fill: rgb(var(--hC_Bg)); } +.hBtn_stroke { fill: none; stroke: rgb(var(--hC_hBtn_svg)); stroke-miterlimit: 10; } +.hBtn_strokeRound { fill: none; stroke: rgb(var(--hC_hBtn_svg)); stroke-linecap: round; stroke-linejoin: round; } +.hColor1_Red { fill: rgb(var(--hC1_Red)); } +.hColor2_Orange { fill: rgb(var(--hC2_Orange)); } +.hColor3_Yellow { fill: rgb(var(--hC3_Yellow)); } +.hColor4_Green { fill: rgb(var(--hC4_Green)); } +.hColor5_Cyan { fill: rgb(var(--hC5_Cyan)); } +.hColor6_Blue { fill: rgb(var(--hC6_Blue)); } +.hColor7_Purple { fill: rgb(var(--hC7_Purple)); } +#hBtnX_barDivider .hBtn_svg { fill: rgb(var(--hC_hBarDivider)); + } + `; + const styleSheet = document.createElement('style'); styleSheet.textContent = styles; document.head.appendChild(styleSheet); + + // 【== 全局日志管理器 ==】 + class __hLogManager { + constructor() { this.debugElement = null; this.maxLines = 7; this.lines = []; this.lastLogKey = null; this.repeatCount = 0; this.initDebugElement(); this.bindToWindow(); } + // 创建新的调试元素 + initDebugElement() { this.debugElement = document.createElement('div'); this.debugElement.id = 'hDebugInfo_V2', this.debugElement.className = 'hDebugInfo_V2', this.debugElement.innerHTML = 'hNodeAlignKit正在初始化...'; document.body.appendChild(this.debugElement); } + + getTimestamp() { + const now = new Date(), year = now.getFullYear(), month = String(now.getMonth() + 1).padStart(2, '0'), day = String(now.getDate()).padStart(2, '0'); + const hours = String(now.getHours()).padStart(2, '0'), minutes = String(now.getMinutes()).padStart(2, '0'), seconds = String(now.getSeconds()).padStart(2, '0'); + return `h${year}${month}${day}_t${hours}${minutes}${seconds}`; + } + + // 检查参数是否为标识符:支持标识符类型:1. [--@开头+]结尾字符串 2. --@开头字符串 3. 数字(用于简洁标识) 4. Symbol类型 + isIdentifier(arg) { return typeof arg === 'string' ? arg.startsWith('[--@') && arg.endsWith(']') || arg.startsWith('--@') : typeof arg === 'number' || typeof arg === 'symbol'; } + // 提取标识符和实际消息 + parseLogArgs(args) { let identifier = null, messageArgs = args; args.length > 0 && this.isIdentifier(args[0]) && (identifier = args[0], messageArgs = args.slice(1)); return { identifier, messageArgs }; } + + // 生成日志键(只基于标识符):如果有标识符,只使用标识符作为键;如果没有标识符,使用级别+时间戳+随机数作为键(确保每条无标识符的日志独立) + generateLogKey(level, identifier) { if (identifier) return String(identifier); return `${level}:${Date.now()}:${Math.random()}`; } + + formatMessage(level, message, count = 1) { + const timestamp = this.getTimestamp(), timestampSpan = `${timestamp}`; + let displayMessage = count > 1 ? `${message} [${count}]` : message, contentSpan = `${displayMessage}`; + switch (level) { + case 'error': contentSpan = `${displayMessage}`; break; + case 'warn': contentSpan = `${displayMessage}`; break; + case 'info': contentSpan = `${displayMessage}`; break; + } + return `${timestampSpan}>_ ${contentSpan}`; + } + + // 添加日志行(支持重复合并) + addLine(level, identifier, message, count = 1) { + const currentKey = this.generateLogKey(level, identifier); + currentKey === this.lastLogKey + ? (this.repeatCount++, this.lines.length > 0 && (() => { const lastLine = this.lines[this.lines.length - 1]; lastLine.count = this.repeatCount; lastLine.message = message; lastLine.html = this.formatMessage(level, message, this.repeatCount); })()) + : (this.lastLogKey = currentKey, this.repeatCount = 1, this.lines.push({ level, message, count: 1, html: this.formatMessage(level, message, 1) }), this.lines.length > this.maxLines && this.lines.shift()); + this.updateDisplay(); + } + // 渐隐日志行 + updateDisplay() { + if (!this.debugElement) return; + const totalLines = this.lines.length; + const displayLines = this.lines.map((line, index) => { + const opacity = 1.0 - (0.7 * ((totalLines - 1 - index) / (totalLines - 1))); return `

`; + }).join(''); + this.debugElement.innerHTML = displayLines; + } + + // 内部日志方法(处理标识符和消息) + _log(level, ...args) { + const { identifier, messageArgs } = this.parseLogArgs(args); + const message = messageArgs.map(arg => typeof arg === 'object' ? (() => { try { return JSON.stringify(arg); } catch { return String(arg); } })() : String(arg)).join(' '); + this.addLine(level, identifier, message); + } + + // 公共日志方法 + log(...args) { this._log('log', ...args); } + error(...args) { this._log('error', ...args); } + warn(...args) { this._log('warn', ...args); } + info(...args) { this._log('info', ...args); } + debug(...args) { this._log('debug', ...args); } + + bindToWindow() { window.hLog = { log: this.log.bind(this), error: this.error.bind(this), warn: this.warn.bind(this), info: this.info.bind(this), debug: this.debug.bind(this) }; } } - }; - // ======================== 具体图标模板 ======================== - const Templates = { - // 拖动按钮 - hBtn_moveElement: () => { - const dotMatrixContent = Elements.dotMatrix().replace(/id="dot"/g, 'id="base-dot"'); - return ` - ${dotMatrixContent} - ${dotMatrixContent.replace(/id="base-dot"/g, 'use href="#base-dot"')} - `; - }, - // 左对齐 - hBtnA_alignLeft: () => ` - ${Elements.rect(10, 9, 12, 6)} - ${Elements.rect(10, 19, 18, 6)} - ${Elements.vLine(5, 24)}`, - // 竖向居中对齐 - hBtnB_alignCenterV: () => ` - ${Elements.rect(9, 9, 14, 6)} - ${Elements.rect(6, 19, 20, 6)} - ${Elements.vLine(15, 24)}`, - // 右对齐 - hBtnC_alignRight: () => ` - ${Elements.rect(11, 9, 12, 6)} - ${Elements.rect(5, 19, 18, 6)} - ${Elements.vLine(26, 24)}`, - // 顶部对齐 - hBtnD_alignTop: () => ` - ${Elements.rect(8, 9, 6, 12)} - ${Elements.rect(18, 9, 6, 18)} - ${Elements.hLine(5, 24)}`, - // 横向居中对齐 - hBtnE_alignCenterH: () => ` - ${Elements.rect(18, 6, 6, 20)} - ${Elements.rect(8, 9, 6, 14)} - ${Elements.hLine(15, 24)}`, - // 底部对齐 - hBtnF_alignButton: () => ` - ${Elements.rect(8, 11, 6, 12)} - ${Elements.rect(18, 5, 6, 18)} - ${Elements.hLine(26, 24)}`, - // 横向分布 基准线(y=7,长度24px) - hBtnG_distributionH: () => ` - ${Elements.rect(19, 5, 2, 7)} - ${Elements.rect(11, 5, 2, 7)} - ${Elements.rect(19, 13, 6, 11)} - ${Elements.rect(7, 13, 6, 15)} - ${Elements.hLine(7, 24)}`, - // 竖向分布 基准线(x=6,高度24px) - hBtnH_distributionV: () => ` - ${Elements.rect(12, 7, 11, 6)} - ${Elements.rect(4, 11, 7, 2)} - ${Elements.rect(4, 19, 7, 2)} - ${Elements.rect(12, 19, 16, 6)} - ${Elements.vLine(6, 24)}`, - // 等宽 - hBtnI_equalWidth: () => ` - ${Elements.rect(9, 9, 14, 6)} - ${Elements.rect(11, 19, 10, 6)} - ${Elements.vLine(4, 24)} - ${Elements.vLine(26, 24)} - ${Elements.rect(4, 21, 5, 2)} - ${Elements.rect(23, 21, 5, 2)}`, - // 等高 - hBtnJ_equalHeight: () => ` - ${Elements.rect(18, 9, 6, 14)} - ${Elements.rect(8, 11, 6, 10)} - ${Elements.hLine(4, 24)} - ${Elements.hLine(26, 24)} - ${Elements.rect(10, 4, 2, 5)} - ${Elements.rect(10, 23, 2, 5)}` - }; - // ======================== 最终导出的SVG常量 ======================== - const hSvg_moveElement = buildSVG(Templates.hBtn_moveElement(), { - t: '1745769856000', - pId: '8808' - }); - const hSvgA_alignLeft = buildSVG(Templates.hBtnA_alignLeft(), { - t: '1725534370541', - pId: '2104' - }); - const hSvgB_alignCenterV = buildSVG(Templates.hBtnB_alignCenterV(), { - t: '1725534363707', - pId: '1810' - }); - const hSvgC_alignRight = buildSVG(Templates.hBtnC_alignRight(), { - t: '1725534384109', - pId: '2398' - }); - const hSvgD_alignTop = buildSVG(Templates.hBtnD_alignTop(), { - t: '1725534367556', - pId: '1957' - }); - const hSvgE_alignCenterH = buildSVG(Templates.hBtnE_alignCenterH(), { - t: '1725534379860', - pId: '2251' - }); - const hSvgF_alignButton = buildSVG(Templates.hBtnF_alignButton(), { - t: '1725534360155', - pId: '1663' - }); - const hSvgG_distributionH = buildSVG(Templates.hBtnG_distributionH(), { - t: '1725534354023', - pId: '1516' - }); - const hSvgH_distributionV = buildSVG(Templates.hBtnH_distributionV(), { - t: '1725534350231', - pId: '1369' - }); - const hSvgI_equalWidth = buildSVG(Templates.hBtnI_equalWidth(), { - t: '1725606034670', - pId: '7216' - }); - const hSvgJ_equalHeight = buildSVG(Templates.hBtnJ_equalHeight(), { - t: '1725606224564', - pId: '7793' - }); - const ButtonManager = { - zoomLevels: [1, 1.5, 2, 0.5], - currentZoom: 1, - isSystemZoom: false, - isRunButtonAligned: false, - linkMode: 0, - linkColors: ['', '#60A5FA', '#355757', '#675535', '#32512A'], - linkOffset: -1, - syncRunButtonPosition() { - if (!this.isRunButtonAligned || this.linkMode === 0) return; - const alignKit = this.hMainToolbar; - const runKit = document.querySelector('.p-panel.actionbar'); - if (alignKit && runKit) { - const alignRect = alignKit.getBoundingClientRect(); - const runRect = runKit.getBoundingClientRect(); - const offset = this.linkOffset; - let left, top; - switch (this.linkMode) { - case 1: - left = alignRect.right + window.scrollX + offset; - top = alignRect.top + window.scrollY; - break; - case 2: - left = alignRect.left + window.scrollX; - top = alignRect.bottom + window.scrollY + offset; - break; - case 3: - left = alignRect.left + window.scrollX; - top = alignRect.top + window.scrollY - runRect.height - offset; - break; - case 4: - left = alignRect.left + window.scrollX - runRect.width - offset; - top = alignRect.top + window.scrollY; - break; + // 【== HTML 结构创建 ==】 + function __hCreateHTML() { + const container = document.createElement('div'); container.id = 'hNodeAlignKit'; + container.innerHTML = ` + +
+
+
+ + + + + + + + + + + +
+ +
+
+ +
+
Node Align Pro
+ + +
+
+ +
+
对齐:
+ + + +
+
+ + + +
+
模式
+ + +
+
分布:
+
+
+ +
+
+ + +
+
尺寸:
+
+
+ +
+
+ + +
+
+
+
选择:
+ + +
+
+
+ +
+
+
+ +
+
+ +
+
+
命名:
+
前缀
+
+ +
+
+
后缀
+
+ +
+
+
+ +
+ + + `; + return container; + } + + // 【== 统一弹窗定位管理器 ==】 + class __hMgr_PopEl__Position { + constructor() { this.container = null; this.currentScale = 1; } + init(container) { this.container = container; window.containerController && (this.currentScale = window.containerController.scale); } + + /** * 计算相对于容器的位置 * @param {DOMRect} targetRect - 目标元素的边界矩形 * @param {String} align - 对齐方式:'top', 'bottom', 'left', 'right', 'center' * @param {Object} offset - 偏移量 {x: 0, y: 0} * @returns {Object} 相对位置 {left, top} */ + calculateRelativePosition(targetRect, align = 'bottom', offset = { x: 0, y: 0 }) { + if (!this.container) return { left: 0, top: 0 }; + const containerRect = this.container.getBoundingClientRect(), currentScale = window.containerController ? window.containerController.scale : 1; + const relativeLeft = (targetRect.left - containerRect.left) / currentScale, relativeTop = (targetRect.top - containerRect.top) / currentScale, relativeRight = (targetRect.right - containerRect.left) / currentScale, relativeBottom = (targetRect.bottom - containerRect.top) / currentScale; + let left = 0, top = 0; + switch (align) { + case 'top': left = relativeLeft + offset.x; top = relativeTop + offset.y; break; + case 'bottom': left = relativeLeft + offset.x; top = relativeBottom + offset.y; break; + case 'left': left = relativeLeft + offset.x; top = relativeTop + offset.y; break; + case 'right': left = relativeLeft + offset.x; top = relativeTop + offset.y; break; + case 'center': left = relativeLeft + (targetRect.width / currentScale / 2) + offset.x; top = relativeTop + (targetRect.height / currentScale / 2) + offset.y; break; + default: left = relativeLeft + offset.x; top = relativeBottom + offset.y; + } + return { left, top }; } - runKit.style.left = `${left}px`; - runKit.style.top = `${top}px`; - } - }, - ColorConfig: { - colors: { - red: '#a93232', - orange: '#79461d', - yellow: '#6e6e1d', - green: '#2b652b', - cyan: '#248382', - blue: '#246283', - purple: '#3c3c83', - custom: '#ffffff' - }, - colorMapping: { - titleDarken: -0.1, - noteTextLighten: 0.2 - } - }, - isInitialized: false, - hMainToolbar: null, - contextMenu: null, - isPermanent: true, - initialX: 0, - initialY: 0, - dragStartX: 0, - dragStartY: 0, - isDragging: false, - hasShownhTooltip: false, - isShow: true, - init() { - if (this.isInitialized) return; - this.isRunButtonAligned = false; - this.currentZoomIndex = 0; - this.systemWideZoom = false; - this.boundOnDragging = this.onDragging.bind(this); - this.boundOnDragEnd = this.onDragEnd.bind(this); - window.addEventListener('beforeunload', () => { - document.removeEventListener('mousedown', this.hideMenuHandler); - document.removeEventListener('keydown', this.escKeyHandler); - }); - const style = document.createElement('style'); - style.textContent = ` - /* 2025-04-28 07:56:21 ArtsticH-提取自 SVG 的全局通用样式 */ - .ht-1 { - fill: #6b6b70; /* 主图标颜色 */ - stroke-width: 0px; - } - .ht-2 { - fill: #525252; /* 拖动按钮圆点颜色 */ - stroke-width: 0px; - } - /* 修改运行按钮容器高度 */ - .p-panel.actionbar { - height: 48px !important; /* 原高度为32px,增加2px */ - min-height: 48px !important; /* 同步调整最小高度 */ - align-items: center; /* 确保内容垂直居中 */ - } - #pv_id_11_content { - /* 这是目标元素-ComfyUI官方原生的【运行按钮】 */ - /* 选择器: #comfyui-body-top > div.comfyui-menu.flex.items-center > div.p-panel.p-component.actionbar.w-fit */ - /* Xpath: //*[@id="comfyui-body-top"]/div[1]/div[4] */ - /* Xpath: /html/body/div[1]/main/div[1]/div[1]/div[1]/div[4] */ - } - #hNodeAlignKit { /* 【对齐按钮组样式】 */ - /* white-space: nowrap; 设置元素为绝对定位方式 position: absolute; */ - top: 20px; - right: 10px; - left: 10px; - bottom: unset; - display: flex; - flex-direction: row; - background: #18181B; - padding: 8px; - border-radius: 6px; - z-index: 9999; - width: fit-content; - height: 48px; - position: absolute; - border: 1px solid; - border-color: #3D3D43; - align-self: center; - box-sizing: border-box; - /* place-items: center; 子元素水平和垂直居中 */ - /* text-align: center; 让子元素水平居中 */ - max-width: 800; - min-width: 420; - } - /* 禁止子元素改变容器尺寸 */ - #hNodeAlignKit > * { - flex-shrink: 0; - } - .hC_alignBtn { - width: 32px; - height: 32px; - background-size: contain; - background-repeat: no-repeat; - background-position: center; - background-color: #18181B; - border: none; - cursor: pointer; - padding: 4px; - border-radius: 4px; - transition: background-color 0.3s ease; - align-self: center; - vertical-align: middle; - display: inline-flex; - align-items: center; - justify-content: center; - } - .hC_alignBtn:hover { - background-color: #222226; - } - /* ↓2025-04-28 01:09:28 Artstich新增移动按钮专属悬浮色-开始 fill: #232935 !important; */ - #hBtn_moveElement:hover { - background-color: #70A3F3 !important; - cursor: move; - } - /* ↓2025-04-28 18:00:05 新增SVG图标样式-开始 */ - /* .hC_alignBtn { border: 1px solid red !important; } 显示按钮大小位置示意测试 */ - .hC_alignBtn svg path { - pointer-events: none; /* 防止路径阻挡点击 */ - } - .hC_alignBtn:hover svg { - filter: drop-shadow(0 2px 4px rgba(255,255,255,0.2)); - } - /* #hBtn_moveElement:hover svg .ht-1 {fill: #232935 !important;} */ - #hNodeAlignKit #hBtn_moveElement:hover svg .ht-1 { /* 精准覆盖 SVG 内部类名 */ - fill: #232935 !important; /* 优先级覆盖内联样式-增加嵌套层级 */ - } - /* ↑2025-04-28 01:09:28 Artstich新增移动按钮专属悬浮色-结束 */ - .hC_dividerLine { - width: 1px; - height: 40px; - background-color: #27272B; - margin: 0px 10px; - border-radius: 9px; - cursor: move; - align-self: center; - } - .hC_dividerLine:active { - cursor: grabbing; - } - /* 提示样式 */ - #hTooltip { - position: absolute; - bottom: -20px; - right: 0; - background: #70A3F3; - color: white; - padding: 5px 10px; - border-radius: 6px; - display: none; - z-index: 1001; - white-space: nowrap; - font-size: 16px; - } - /* 2025-04-28 03:48:09 ArtsticH新增-右键菜单容器样式 */ - #hContext-Menu { - display: flex; /* flex布局 */ - white-space: nowrap; /* 防止换行、合并空白字符 */ - box-sizing: border-box; - background: #18181B; /* 设置提示框的背景颜色-测试定位用 #70A3F3; */ - align-items: center; /* 确保子元素垂直居中 */ - justify-content: center; /* 确保子元素水平居中 */ - width: auto; /* 改为自动宽度width: 1300;auto; */ - height: auto; /* 保持固定高度height: 32px; */ - border-radius: 6px; - z-index: 9999; - padding: 0 8px; /* 添加内边距 */ - gap: 6px; /* 按钮间距 */ - margin-top: -1px !important; /* 微调垂直偏移量 */ - margin-left: -644.28px;/* 微调水平偏移量 margin-left: -630.73px; */ - /* margin-left: -200px; 向左偏移 20px */ - /* display: inline-block; */ - /* vertical-align: middle; */ - /* align-self: center; 新增:确保单个按钮垂直居中 */ - /* place-items: center; 子元素水平和垂直居中 */ - /* text-align: center; 让子元素水平居中 */ - } - /* 2025-04-28 03:48:09 ArtsticH新增-右键菜单按钮样式-精准控制按钮垂直位置 */ - #hContext-Menu :is(input, button) { - height: 26; /* 高度auto;height: 26px; */ - min-height: 16px; /* 最小高度 */ - font-size: 14px; - background: #09090B; - border: 1px solid #3D3D43; - border-radius: 6px; - color: #fff; - padding: 4px 12px; /* 调整内边距 */ - margin: 0; /* 移除外边距。 按钮间距margin: 0 3px; */ - transition: all 0.1s ease; /* 过渡动画 transition: all 0.2s ease; */ - position: relative !important; - } - #hContext-Menu button { - min-height: 32px !important; - /* top: -233x !important; 微调垂直偏移量 */ - /* right: 35px !important; 微调水平偏移量 */ - } - #hContext-Menu input { - outline: none; - min-height: 32px !important; - top: -1.5px !important; /* 微调垂直偏移量 */ - /* right: 35px !important; 微调水平偏移量 */ - } - /* 2025-04-28 03:48:09 ArtsticH新增-悬停效果 */ - #hContext-Menu :is(input, button):hover { - background: #222226; /* 悬停背景色 background: #222226; */ - border-color: #70A3F3; /* 悬停边框色 border-color: #70A3F3; */ - transform: scale(1.1); /* 轻微放大 transform: scale(1.1); */ - } - /* 2025-04-28 03:48:09 ArtsticH新增-点击效果 */ - #hContext-Menu :is(input, button):active { - background: #2D2D32; /* 点击背景色 background: #2D2D32; */ - transform: scale(0.98); /* 轻微缩小 transform: scale(0.98); */ - } - #hContext-Menu input:hover { - outline: none; - transform: scale(1) !important; /* 轻微放大 transform: scale(1.1); */ - } - /* 2025-04-28 03:48:09 ArtsticH新增-点击效果 */ - #hContext-Menu input:active { - outline: none; - transform: scale(0.99) !important; /* 轻微缩小 transform: scale(0.98); */ - } - /* 2025-04-28 03:48:09 ArtsticH新增-文字标签和文字链接样式 */ - #hContext-Menu a.no-underline { - color: #A1A1AA; /* 文字颜色 color: #A1A1AA; */ - text-decoration: none; /* 去除下划线 text-decoration: none; */ - margin-right: 8px; /* 右侧间距 margin-right: 8px; */ - /* display: inline-block !important; */ - /* vertical-align: middle !important; */ - /* line-height: 32px !important; 与按钮高度一致 */ - /* margin-right: 8px !important; */ - } - /* UI缩放按钮专用样式 */ - #ui-scale-btn { - width: 82px !important; - min-width: 82px !important; - max-width: 82px !important; - white-space: nowrap; - overflow: hidden; - - box-sizing: border-box; - - padding: 4px 0px !important; - } - /* 覆盖通用按钮的宽度设置 */ - #hContext-Menu button#ui-scale-btn { - width: 80px !important; - flex-shrink: 0; /* 禁止在flex布局中收缩 */ - } - /* 2025-04-28 18:44:47 新增颜色按钮专用样式 */ - #hNodeAlignKit [id^="color"] { - width: 24px !important; - height: 24px !important; - padding: 0px !important; - margin: 0 2px !important; - background: none !important; - margin-top: 40px; /* 增加上边距,使颜色按钮位于基础按钮下方 */ - } - #hNodeAlignKit [id^="color"] svg { - display: block !important; - width: 100% !important; - height: 100% !important; - transition: transform 0.1s ease; - } - #hNodeAlignKit [id^="color"]:hover svg { - transform: scale(1.5); - filter: drop-shadow(0 2px 4px rgba(255,255,255,0.2)); - } - /* 2025-04-28 18:44:47 颜色按钮激活状态 */ - .hC_alignBtn.color-active { - box-shadow: 0 0 0 2px #70A3F3; - } - /* 颜色选择器图标特殊样式 */ - #colorPick svg { - position: relative; - background: rgba(0,0,0,1); /* rgba(7,7,8,0.8); background: rgba(100,100,100,0.3); */ - border-radius: 50%; /* border-radius: 6px; */ - transition: transform 0.1s ease; /* 2025-04-28 18:44:47 颜色选择器图标动画 */ - } - #colorPick:hover svg { - transform: rotate(15deg); - } - /* 清除按钮特殊样式 */ - #colorClear { - position: relative; - } - #colorClear::after { - content: "×"; - position: absolute; - color: #ff4444; - font-size: 20px; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - transition: font-size 0.1s ease; - } - #colorClear:hover::after { - font-size: 32px; - } - /* 2025-04-28 18:44:47 颜色按钮提示 .color-tooltip { */ - .color-hTooltip { - position: absolute; - bottom: -25px; - background: #333; - color: white; - padding: 2px 8px; - border-radius: 4px; - font-size: 12px; - white-space: nowrap; - } - `; - document.head.appendChild(style); - this.hMainToolbar = document.createElement('div'); - this.hMainToolbar.id = 'hNodeAlignKit'; - this.restorePosition(); - document.body.appendChild(this.hMainToolbar); - const buttons = this.getButtons(); - buttons.forEach(btn => { - if (btn.type === 'hC_dividerLine') { - const hC_dividerLine = document.createElement('div'); - hC_dividerLine.classList.add('hC_dividerLine'); - this.hMainToolbar.appendChild(hC_dividerLine); - } else { - const button = document.createElement('button'); - button.id = btn.id; - button.classList.add('hC_alignBtn'); - button.innerHTML = btn.svg; - button.addEventListener('click', (event) => { - btn.action.call(this, event); - event.stopPropagation(); - }); - this.hMainToolbar.appendChild(button); + + // 定位菜单 + positionMenu() { + const menuContainer = document.getElementById('h6__hMenu'), targetContainer = document.getElementById('h2__hNodeAlignPro'); + if (!menuContainer || !targetContainer || !this.container) return; + const targetRect = targetContainer.getBoundingClientRect(), position = this.calculateRelativePosition(targetRect, 'bottom', { x: 0, y: 0 }); + menuContainer.style.left = `${position.left}px`; menuContainer.style.top = `${position.top - 42}px`; } - }); - this.hMainToolbar.addEventListener('mousedown', (e) => { - const ishBtn_moveElement = e.target.closest('#hBtn_moveElement') !== null; - const ishC_dividerLine = e.target.classList.contains('hC_dividerLine'); - if (ishBtn_moveElement || ishC_dividerLine) { - this.onDragStart(e); + + // 定位取色器 + positionColorPicker() { + const colorPickerPanel = document.getElementById('Artstich_hColorPicker'), colorBar = document.getElementById('h1__hApBar1_Color'); + if (!colorPickerPanel || !colorBar || !this.container) return; + const colorBarRect = colorBar.getBoundingClientRect(), position = this.calculateRelativePosition(colorBarRect, 'bottom', { x: 0, y: 0 }); + colorPickerPanel.style.left = `${position.left}px`; colorPickerPanel.style.top = `${position.top}px`; } - }); - this.isInitialized = true; - this.showContextMenu(); - const hTooltip = document.createElement('div'); - hTooltip.id = 'hTooltip'; - hTooltip.textContent = '右键可选按钮呈现模式'; - this.hMainToolbar.appendChild(hTooltip); - if (!this.hasShownhTooltip) { - this.hMainToolbar.addEventListener('mouseenter', () => { - if (!this.hasShownhTooltip) { + + /** * 通用定位方法 * @param {HTMLElement} popupElement - 弹出元素 * @param {HTMLElement} targetElement - 目标元素 * @param {String} align - 对齐方式 * @param {Object} offset - 偏移量 */ + positionPopup(popupElement, targetElement, align = 'bottom', offset = { x: 0, y: 0 }) { + if (!popupElement || !targetElement || !this.container) return; + const targetRect = targetElement.getBoundingClientRect(), position = this.calculateRelativePosition(targetRect, align, offset); + popupElement.style.left = `${position.left}px`; popupElement.style.top = `${position.top}px`; + } + } + + // 【== 菜单自动隐藏管理器 ==】 + class __hMgr_MenuHide { + constructor() { this.menuContainer = document.getElementById('h6__hMenu'), this.init(); } + init() { if (!this.menuContainer) return; this.bindMenuButtons(), this.bindDropdownOptions(); } + bindMenuButtons() { const buttonSelectors = ['#hReset', '#hBugReport', '#hGuide', '#hBack']; buttonSelectors.forEach(selector => { const button = this.menuContainer.querySelector(selector); button && button.addEventListener('click', () => this.hideMenu()); }); } + bindDropdownOptions() { const options = this.menuContainer.querySelectorAll('.hCMP-hSel__option'); options.forEach(option => { option.addEventListener('click', () => this.hideMenu()); }); } + hideMenu() { if (this.menuContainer && this.menuContainer.style.display !== 'none') { this.menuContainer.style.display = 'none'; } } + showMenu() { if (this.menuContainer) { this.menuContainer.style.display = 'block'; } } + } + + // 【== Actionbar联动管理器 ==】 + const __hMgr_ACbar = { + linkMode: 0, linkOffset: 0, throttleTimer: null, + + syncRunButtonPosition() { + if (this.linkMode !== 1) return; + const alignKit = document.getElementById('hNodeAlignKit'); const runKit = document.querySelector('.p-panel.actionbar'); + if (alignKit && runKit) { + const alignRect = alignKit.getBoundingClientRect(), offset = this.linkOffset; + let left = alignRect.left + window.scrollX, top = alignRect.bottom + window.scrollY + offset; + runKit.style.position = 'fixed'; runKit.style.left = `${left}px`; runKit.style.top = `${top}px`; runKit.style.zIndex = '10000'; + } + }, + // 设置联动模式 + setLinkMode(mode) { + this.linkMode = mode; const isLinked = mode === 1; + if (isLinked) { + this.syncRunButtonPosition(); + document.addEventListener('mousemove', this.throttledSync.bind(this)); + } else { + document.removeEventListener('mousemove', this.throttledSync.bind(this)); + const runKit = document.querySelector('.p-panel.actionbar'); + if (runKit) { runKit.style.left = ''; runKit.style.top = ''; runKit.style.position = ''; } + } + this.updateDropdownText(); this.saveModeToStorage(); + }, + + throttledSync() { if (!this.throttleTimer) { this.throttleTimer = setTimeout(() => { this.syncRunButtonPosition(); this.throttleTimer = null; }, 16); } }, + // 更新菜单文本 + updateDropdownText() { + const dragBtn = document.querySelector('[data-target="hCMP-hSel__drag-options"]'), dragOption1 = document.querySelector('[data-value="hDragMode0_Link"]'), dragOption2 = document.querySelector('[data-value="hDragMode1_Split"]'); + if (dragBtn) { dragBtn.textContent = this.linkMode === 1 ? '联 动' : '解 耦'; } + if (dragOption1 && dragOption2) { dragOption1.classList.toggle('selected', this.linkMode === 1); dragOption2.classList.toggle('selected', this.linkMode === 0); } + }, + saveModeToStorage() { localStorage.setItem('NodeAlignProRunButtonLink', this.linkMode.toString()); }, + loadModeFromStorage() { const saved = localStorage.getItem('NodeAlignProRunButtonLink'); if (saved) { this.linkMode = parseInt(saved); this.linkMode === 1 && setTimeout(() => this.syncRunButtonPosition(), 100); } return this.linkMode; } + }; + + // 【== 解耦式容器控制器 ==】 + class __hController_hNAPKit { + // 核心容器元素 | 基础状态:缩放比例、坐标 | 拖拽状态:拖拽中标识、起始坐标、拖拽元素 | 边界检测:边界数据、宽度限制标识 | 执行初始化逻辑 + constructor(container) { this.hNodeAlignKit = container; this.scale = 1.0, this.posX = 0, this.posY = 0; this.isDragging = false, this.dragStartX = 0, this.dragStartY = 0, this.dragStartPosX = 0, this.dragStartPosY = 0, this.dragElement = null; this.boundaryData = null, this.isWidthConstrained = false; this.init(); } + // 初始化:容器核心样式(固定定位、变换原点、性能优化);依次执行加载状态、绑定事件、边界检查、初始化缩放菜单文本 + init() { this.hNodeAlignKit.style.position = 'fixed', this.hNodeAlignKit.style.transformOrigin = '0 0', this.hNodeAlignKit.style.willChange = 'transform'; this.loadState(), this.bindEvents(), this.enforceBoundaries(), this.updateScaleMenuText(); } + // 获取容器在屏幕上的边界(使用屏幕坐标):获取容器屏幕坐标矩形,返回屏幕坐标(left/right/top/bottom)、屏幕像素宽/高(已包含缩放) + getContainerBounds() { const rect = this.hNodeAlignKit.getBoundingClientRect(); return { left: rect.left, right: rect.right, top: rect.top, bottom: rect.bottom, width: rect.width, height: rect.height }; } + // 执行容器变换赋值(平移+缩放),保存状态、更新缩放菜单文本;联动模式(linkMode=1)下同步运行按钮位置 + updateTransform() { this.hNodeAlignKit.style.transform = `translate(${Math.round(this.posX)}px, ${Math.round(this.posY)}px) scale(${this.scale})`; this.saveState(); this.updateScaleMenuText(); if (__hMgr_ACbar.linkMode === 1) __hMgr_ACbar.syncRunButtonPosition(); } + + // 开始拖拽 + startDrag(clientX, clientY, element = null) { + // 标记拖拽中;记录拖拽起始坐标、容器起始位置、拖拽元素;初始化边界数据(使用屏幕坐标),设置拖拽时的z-index + this.isDragging = true, this.dragStartX = clientX, this.dragStartY = clientY, this.dragStartPosX = this.posX, this.dragStartPosY = this.posY, this.dragElement = element; this.boundaryData = this.initBoundaryData(clientX, clientY), this.setDraggingZIndex(); + element && (element.style.cursor = 'move'); + } + + // 拖拽移动 + dragMove(clientX, clientY) { + if (!this.isDragging) return; + const deltaX = clientX - this.dragStartX, deltaY = clientY - this.dragStartY, { deltaX: limitedDeltaX, deltaY: limitedDeltaY } = this.applyBoundaryLimits(deltaX, deltaY); + this.posX = this.dragStartPosX + limitedDeltaX, this.posY = this.dragStartPosY + limitedDeltaY; this.updateTransform(); + } + + // 重置 + reset() { + this.scale = 1.0; const originalSize = this.getContainerOriginalSize(), scaledWidth = originalSize.width * this.scale, scaledHeight = originalSize.height * this.scale, windowWidth = window.innerWidth, windowHeight = window.innerHeight; + this.posX = Math.max(0, (windowWidth - scaledWidth) / 2); this.posY = windowHeight * 0.2; this.updateTransform(), this.enforceBoundaries(); + if (__hMgr_ACbar.linkMode === 1) setTimeout(() => __hMgr_ACbar.syncRunButtonPosition(), 100); + } + + getContainerOriginalSize() { return { width: this.hNodeAlignKit.offsetWidth, height: this.hNodeAlignKit.offsetHeight }; } + + // 初始化边界数据(在开始拖拽时调用)- 修正版:使用屏幕坐标 + initBoundaryData(startClientX, startClientY) { + const viewportWidth = window.innerWidth, viewportHeight = window.innerHeight, containerBounds = this.getContainerBounds(); + const screenDistance = { left: startClientX, right: viewportWidth - startClientX, top: startClientY, bottom: viewportHeight - startClientY }; + const containerDistance = { left: startClientX - containerBounds.left, right: containerBounds.right - startClientX, top: startClientY - containerBounds.top, bottom: containerBounds.bottom - startClientY }; + const safeDistance = { left: screenDistance.left - containerDistance.left, right: screenDistance.right - containerDistance.right, top: screenDistance.top - containerDistance.top, bottom: screenDistance.bottom - containerDistance.bottom }; + return { startX: startClientX, startY: startClientY, safeDistance }; + } + + // 应用边界限制(在拖拽移动时调用) + applyBoundaryLimits(deltaX, deltaY) { + if (!this.boundaryData) return { deltaX, deltaY }; + const { safeDistance } = this.boundaryData; + let limitedDeltaX = deltaX < 0 ? Math.max(deltaX, -safeDistance.left) : Math.min(deltaX, safeDistance.right); + let limitedDeltaY = deltaY < 0 ? Math.max(deltaY, -safeDistance.top) : Math.min(deltaY, safeDistance.bottom); + return { deltaX: limitedDeltaX, deltaY: limitedDeltaY }; + } + + // 停止拖拽 + stopDrag() { + this.isDragging = false; this.boundaryData = null; this.dragElement && (this.dragElement.style.cursor = 'default', this.dragElement = null); this.resetZIndex(); this.enforceBoundaries(); + if (__hMgr_ACbar.linkMode === 1) __hMgr_ACbar.syncRunButtonPosition(); + } + // 强制容器在边界内(就近原则弹回)- 修正版:使用屏幕坐标 + enforceBoundaries() { + const containerBounds = this.getContainerBounds(), viewportWidth = window.innerWidth, viewportHeight = window.innerHeight, originalSize = this.getContainerOriginalSize(), scaledWidth = originalSize.width * this.scale; + this.isWidthConstrained = scaledWidth > viewportWidth; + + // 宽度受限:强制缩放为1+左对齐,修正垂直位置 + if (this.isWidthConstrained) { + const currentTop = containerBounds.top; this.scale = 1.0, this.posX = 0; const containerTop = currentTop + (this.posY - currentTop); this.posY = containerTop; + this.updateTransform(); const newBounds = this.getContainerBounds(); + let adjustY = newBounds.top < 0 ? -newBounds.top : (newBounds.bottom > viewportHeight ? viewportHeight - newBounds.bottom : 0); adjustY !== 0 && (this.posY += adjustY, this.updateTransform()); + return; + } + + let adjustX = 0, adjustY = 0; + // 左右边界修正 + adjustX = containerBounds.left < 0 && containerBounds.right > viewportWidth ? (viewportWidth - (containerBounds.right - containerBounds.left)) / 2 - containerBounds.left : containerBounds.left < 0 ? -containerBounds.left : containerBounds.right > viewportWidth ? viewportWidth - containerBounds.right : 0; + // 上下边界修正 + adjustY = containerBounds.top < 0 && containerBounds.bottom > viewportHeight ? (viewportHeight - (containerBounds.bottom - containerBounds.top)) / 2 - containerBounds.top : containerBounds.top < 0 ? -containerBounds.top : containerBounds.bottom > viewportHeight ? viewportHeight - containerBounds.bottom : 0; + + if (adjustX === 0 && adjustY === 0) return; + this.posX += adjustX / this.scale, this.posY += adjustY / this.scale, this.updateTransform(); + } + + // 缩放 - 基于当前鼠标位置 + zoom(deltaScale, clientX, clientY) { + const oldScale = this.scale; + let newScale = Math.max(0.1, Math.min(5, this.scale + deltaScale)); + if (newScale === oldScale) return; + + const originalSize = this.getContainerOriginalSize(), viewportWidth = window.innerWidth, scaledWidth = originalSize.width * newScale; + if (scaledWidth > viewportWidth) { newScale = 1.0; const currentPosY = this.posY; this.scale = newScale, this.posX = 0, this.posY = currentPosY; this.updateTransform(), this.enforceBoundaries(); return; } + + const oldPosX = this.posX, oldPosY = this.posY; this.scale = newScale; + // 鼠标坐标存在时:计算缩放前鼠标在容器局部坐标系的位置,调整容器位置以保持鼠标指向同一局部位置(按缩放中心适配) + clientX !== undefined && clientY !== undefined && (() => { const localX = (clientX - oldPosX) / oldScale, localY = (clientY - oldPosY) / oldScale; this.posX = clientX - localX * newScale, this.posY = clientY - localY * newScale; })(); + + this.updateTransform(), this.enforceBoundaries(); + if (__hMgr_ACbar.linkMode === 1) __hMgr_ACbar.syncRunButtonPosition(); + } + + zoomToScale(targetScale, clientX, clientY) { this.zoom(targetScale - this.scale, clientX, clientY); } + + // 更新菜单缩放文字显示 + updateScaleMenuText() { + // 缩放选项配置:value/scale/text映射 + const scaleOptions = [{ value: 'hUIScale_0_5x', scale: 0.5, text: '0.5x' }, { value: 'hUIScale_0_75x', scale: 0.75, text: '0.75x' }, { value: 'hUIScale_1x', scale: 1.0, text: '1x' }, { value: 'hUIScale_1_25x', scale: 1.25, text: '1.25x' }, { value: 'hUIScale_1_5x', scale: 1.5, text: '1.5x' }, { value: 'hUIScale_2x', scale: 2.0, text: '2x' }]; + // 找到与当前缩放比例最接近的选项 + let closestOption = scaleOptions[0], minDiff = Math.abs(this.scale - closestOption.scale); + for (const option of scaleOptions) { const diff = Math.abs(this.scale - option.scale); diff < minDiff && (minDiff = diff, closestOption = option); } + // 更新菜单按钮文字(存在则赋值) + const scaleMenuBtn = document.querySelector('[data-target="hCMP-hSel__scale-options"]'); + scaleMenuBtn && (scaleMenuBtn.textContent = closestOption.text); + // 更新选项选中状态:移除所有选中,匹配value则添加 + const scaleOptionsContainer = document.getElementById('hCMP-hSel__scale-options'); + scaleOptionsContainer && scaleOptionsContainer.querySelectorAll('.hCMP-hSel__option').forEach(option => { + option.classList.remove('selected'); + option.getAttribute('data-value') === closestOption.value && option.classList.add('selected'); + }); + } + + // 设置拖拽时的z-index:优先取CSS变量,无则基于基础z-index+10000 + setDraggingZIndex() { + // 获取CSS变量--hZindex__dragging作为拖拽Z索引(去除首尾空格);获取--hZindex(缺省为10001)并转为整数作为基础Z索引 + const draggingZIndex = getComputedStyle(document.documentElement).getPropertyValue('--hZindex__dragging').trim(), baseZIndex = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--hZindex') || 10001); + this.hNodeAlignKit.style.zIndex = draggingZIndex ? draggingZIndex : (baseZIndex + 10000).toString(); this.hNodeAlignKit.dataset.originalZIndex = this.hNodeAlignKit.style.zIndex; + } + + // 重置z-index:有原始值则按规则恢复(含var则清空,否则用原始值),无则直接清空 + resetZIndex() { + this.hNodeAlignKit.dataset.originalZIndex + ? (this.hNodeAlignKit.style.zIndex = this.hNodeAlignKit.dataset.originalZIndex.includes('var') ? '' : this.hNodeAlignKit.dataset.originalZIndex, delete this.hNodeAlignKit.dataset.originalZIndex) + : (this.hNodeAlignKit.style.zIndex = ''); + } + + saveState() { localStorage.setItem('NodeAlignProPosition', JSON.stringify({ x: this.posX, y: this.posY, scale: this.scale })); } + + loadState() { + const saved = localStorage.getItem('NodeAlignProPosition'); + if (saved) try { + const state = JSON.parse(saved); + this.scale = state.scale || 1.0, this.posX = state.x || 0, this.posY = state.y || 0; + this.updateTransform(); + return true; + } catch (e) { hLog.error('加载位置状态失败:', e); return false; } + + const originalSize = this.getContainerOriginalSize(), scaledWidth = originalSize.width * this.scale, scaledHeight = originalSize.height * this.scale, windowWidth = window.innerWidth, windowHeight = window.innerHeight; + this.posX = Math.max(0, (windowWidth - scaledWidth) / 2), this.posY = windowHeight * 0.2; + this.updateTransform(); + return false; + } + + // 绑定事件 + bindEvents() { + // 拖拽手柄选择器:合并为单行,绑定鼠标按下/进入/离开事件 + const dragHandles = ['#hBarMove', '.hBarDivider', '#hNAP-Title__LOGOAlign', '#hCPr__header']; + dragHandles.forEach(selector => { + document.querySelectorAll(selector).forEach(el => { + el.addEventListener('mousedown', (e) => { this.startDrag(e.clientX, e.clientY, el); e.stopPropagation(); e.preventDefault(); }); + el.addEventListener('mouseenter', () => { !this.isDragging && (el.style.cursor = 'move'); }); + el.addEventListener('mouseleave', () => { !this.isDragging && (el.style.cursor = 'default'); }); + }); + }); + // 全局鼠标事件:移动时调用dragMove更新拖拽位置,松开时调用stopDrag停止拖拽,拖拽时阻止selectstart防止选中文本 + document.addEventListener('mousemove', (e) => { this.dragMove(e.clientX, e.clientY); }); document.addEventListener('mouseup', () => { this.stopDrag(); }); document.addEventListener('selectstart', (e) => { this.isDragging && e.preventDefault(); }); + window.addEventListener('resize', () => { this.enforceBoundaries(); if (__hMgr_ACbar.linkMode === 1) setTimeout(() => __hMgr_ACbar.syncRunButtonPosition(), 100); }); + } + } + + // 【== 基础几何元素SVG生成工具 ==】 + const __hSvgFc_Elements = { + circle: (cx, cy, r, color, attrs = {}) => ` `${k}="${v}"`).join(' ')} />`, + rect: (x, y, width, height, color, attrs = {}) => ` `${k}="${v}"`).join(' ')} />`, + line: (x1, y1, x2, y2, color, attrs = {}) => ` `${k}="${v}"`).join(' ')} />`, + svgContainer: (content, width = 24, height = 24, className = 'hIconC') => `${content}`, + externalSvg: (path, className = 'hIconC') => `SVG图标` + }; + + // 【== 颜色相关SVG组件生成器 ==】 + const __hSvgFc_ColorSVG = { + colorCircle: (color, size = 24) => __hSvgFc_Elements.svgContainer(__hSvgFc_Elements.circle(size / 2, size / 2, size * 0.45, color), size, size), + plusIcon: (color = 'rgba(var(--hC_BW6_BrightGray), 0.7)', size = 24) => { + const half = size / 2, lineLength = size * 0.5, lineStart = half - lineLength / 2, lineEnd = half + lineLength / 2; + const horizontal = __hSvgFc_Elements.line(lineStart, half, lineEnd, half, color, { 'stroke-width': '2', 'stroke-linecap': 'round' }); + const vertical = __hSvgFc_Elements.line(half, lineStart, half, lineEnd, color, { 'stroke-width': '2', 'stroke-linecap': 'round' }); + const bgCircle = __hSvgFc_Elements.circle(half, half, size * 0.45, 'rgba(var(--hC_Bg), 0.5)'); + return __hSvgFc_Elements.svgContainer(`${bgCircle}${horizontal}${vertical}`, size, size); + }, + loveIcon: (color = `rgb(var(--hC_BW1_Black))`, size = 24) => { + const scale = 0.8, scaledSize = size * scale; + const svgContent = ` + + + + + `; + return ` + ${svgContent}`; + } + }; + + // 【== 颜色配置管理 ==】 + const __hColorCfg = { + defaultColors: ['rgb(var(--hC1_Red))', 'rgb(var(--hC2_Orange))', 'rgb(var(--hC3_Yellow))', 'rgb(var(--hC4_Green))', 'rgb(var(--hC5_Cyan))', 'rgb(var(--hC6_Blue))', 'rgb(var(--hC7_Purple))'], + grayScaleColors: ['rgb(var(--hC_BW1_Black))', 'rgb(var(--hC_BW2_DarkGray))', 'rgb(var(--hC_BW3_DeepGray))', 'rgb(var(--hC_BW4_Gray))', 'rgb(var(--hC_BW5_LightGray))', 'rgb(var(--hC_BW6_BrightGray))', 'rgb(var(--hC_BW7_White))'], + buttonIds: ['hColor1_Red', 'hColor2_Orange', 'hColor3_Yellow', 'hColor4_Green', 'hColor5_Cyan', 'hColor6_Blue', 'hColor7_Purple'] + }; + + // 【== 简化的禁用状态管理 ==】 + const __hMgr_DisableState = { + disableElement: el => el && el.classList.add('disabled-state'), enableElement: el => el && el.classList.remove('disabled-state'), + clearAll: () => document.querySelectorAll('.disabled-state').forEach(el => el.classList.remove('disabled-state')) + }; + + // 【== UI更新工具 ==】 + const __hUpdater_UI = { + updatePickBtnColor(color) { + const pickBtn = document.getElementById('hColorB_Pick'); + // 元素+颜色存在时:设置背景色,按RGB亮度动态切换文字色(亮底暗字/暗底亮字) + pickBtn && color && (() => { + pickBtn.style.backgroundColor = color; + const rgb = color.match(/\d+/g); + rgb && (pickBtn.style.color = Math.round(0.299 * rgb[0] + 0.587 * rgb[1] + 0.114 * rgb[2]) > 128 ? 'rgb(38,38,38)' : 'rgb(204,204,204)'); + })(); + }, + + // 这个方法只用于非颜色按钮的SVG颜色更新 + updateButtonSvgColor(button, bgColor) { + // 颜色按钮直接返回,非颜色按钮按背景色亮度设置SVG/图标样式 + if (!button || button.id?.startsWith('hColor')) return; + const brightness = __hUpdater_UI.calculateBrightness(bgColor), isLight = brightness > 128; + const svgColor = getComputedStyle(document.documentElement).getPropertyValue(isLight ? '--hC_hBtn_svg_B' : '--hC_hBtn_svg_W').trim(); + button.style.color = svgColor, button.style.backgroundColor = bgColor; + + // 遍历图标元素:设置SVG颜色/填充,图片滤镜(亮底暗滤镜/暗底亮滤镜) + const iconElement = button.querySelector('.hIcon'); + iconElement && (() => { + iconElement.querySelectorAll('svg').forEach(svg => { svg.style.color = svgColor; svg.querySelectorAll('.hBtn_svg').forEach(innerSvg => { innerSvg.style.color = svgColor, innerSvg.style.fill = svgColor; }); }); + iconElement.querySelectorAll('img.hIconC').forEach(img => { img.style.filter = isLight ? 'invert(0) brightness(0.3)' : 'invert(1) brightness(1.5)'; }); + })(); + }, + + calculateBrightness(color) { + const rgbMatch = color.match(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/); + // 未匹配RGB则返回默认亮度128,否则计算加权亮度(R*0.299+G*0.587+B*0.114)并四舍五入 + return rgbMatch ? Math.round(0.299 * parseInt(rgbMatch[1]) + 0.587 * parseInt(rgbMatch[2]) + 0.114 * parseInt(rgbMatch[3])) : 128; + }, + + restoreDefaultSvgColor(button) { + if (!button) return; + button.style.color = '', button.style.backgroundColor = ''; + // 清除SVG内联样式(color/fill/stroke)+ 图片滤镜,恢复默认样式 + button.querySelectorAll('svg').forEach(svg => { svg.style.color = ''; svg.querySelectorAll('.hBtn_svg').forEach(innerSvg => { innerSvg.style.color = '', innerSvg.style.fill = '', innerSvg.style.stroke = ''; }); }); + button.querySelectorAll('img.hIconC').forEach(img => { img.style.filter = ''; }); + } + }; + + // 【== ComfyUI 功能集成 ==】 + // 【== ComfyUI 节点操作工具 ==】 + const __hMgr_ComfyUINode = { + getComfyUIAppInstance() { return { canvas: LGraphCanvas.active_canvas, graph: LGraphCanvas.active_canvas ? LGraphCanvas.active_canvas.graph : null }; }, + validateAppInstance(app) { return !!app && !!app.graph; }, + getSelectedItems(app) { return [...this.getSelectedNodes(), ...this.getSelectedGroups(app)]; }, + markCanvasDirty(graph) { graph.setDirtyCanvas(true, true); graph.afterChange && graph.afterChange(); }, + isGroupActuallySelected(group, canvas) { return group.selected || (canvas?.selected_group && canvas.selected_group === group); }, + resetSingleNodeColor(node) { if (node) { node.color = undefined; node.bgcolor = undefined; node.setDirtyCanvas && node.setDirtyCanvas(true); } }, + getSelectedNodes() { return LGraphCanvas.active_canvas ? (LGraphCanvas.active_canvas.selected_nodes ? Object.values(LGraphCanvas.active_canvas.selected_nodes) : []) : []; }, + + // 获取选中的组:优先取选中组,无则遍历图谱组筛选选中项(异常返回空数组) + getSelectedGroups(app) { + try { + if (app.canvas?.selected_group) return [app.canvas.selected_group]; + const groups = []; + app.graph?.groups && app.graph.groups.forEach(group => group.selected && groups.push(group)); + return groups; + } catch (error) { hLog.error("获取选中组失败:", error); return []; } + }, + + // 解析CSS变量颜色值(仅在节点上色时使用):提取变量名→获取变量值→返回实际RGB值,解析失败/非变量格式则返回原值 + resolveCSSColor(colorString) { + if (!colorString) return colorString; + if (colorString.includes('var(')) try { + const match = colorString.match(/var\(([^)]+)\)/), varName = match ? match[1].trim() : ''; + const varValue = varName ? getComputedStyle(document.documentElement).getPropertyValue(varName).trim() : ''; + colorString = varValue ? `rgb(${varValue})` : colorString; + } catch (error) { hLog.error('解析CSS变量颜色失败:', error, colorString); } + return colorString; + }, + + // 调整颜色亮度:解析十六进制RGB→计算亮度调整值→限制范围后返回新十六进制颜色 + adjustColorBrightness(hex, percent) { + hex = hex.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i, (m, r, g, b) => '#' + r + r + g + g + b + b); + const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); + if (!result) return '#000000'; + let [, rStr, gStr, bStr] = result, amount = Math.round(2.55 * percent * 100); + let r = Math.min(255, Math.max(0, parseInt(rStr, 16) + amount)), g = Math.min(255, Math.max(0, parseInt(gStr, 16) + amount)), b = Math.min(255, Math.max(0, parseInt(bStr, 16) + amount)); + return '#' + (r | 1 << 8).toString(16).slice(1) + (g | 1 << 8).toString(16).slice(1) + (b | 1 << 8).toString(16).slice(1); + }, + + // RGB转Hex:匹配RGB格式→转换为十六进制,非RGB/已为Hex则返回对应值,失败返回#000000 + rgbToHex(rgb) { + if (!rgb) return '#000000'; + if (rgb.startsWith('#')) return rgb; + const match = rgb.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/); + return match ? '#' + (1 << 24 | parseInt(match[1]) << 16 | parseInt(match[2]) << 8 | parseInt(match[3])).toString(16).slice(1) : '#000000'; + }, + + // 通用应用颜色到单个节点:解析颜色→设置节点文字/背景色,笔记节点单独调整文字色 + applyColorToSingleNode(node, color) { + if (!node || typeof node !== 'object') return; + try { + const resolvedColor = this.resolveCSSColor(color), hexColor = this.rgbToHex(resolvedColor); + node.color = this.adjustColorBrightness(hexColor, -0.1); node.bgcolor = hexColor; + node.setDirtyCanvas && node.setDirtyCanvas(true); + node.type === "Note" && (node.properties.text_color = this.adjustColorBrightness(hexColor, 0.2)); + } catch (error) { hLog.error(`应用颜色到节点失败:`, error); } + }, + + // 重置节点颜色:重置选中节点/分组下节点的颜色,标记画布变更 + resetNodesColor() { + try { + const app = this.getComfyUIAppInstance(); + if (!this.validateAppInstance(app)) return; + const selected = this.getSelectedItems(app); + if (selected.length === 0) return; + selected.forEach(item => { + if (item.is_system) return; + item.pos !== undefined + ? this.resetSingleNodeColor(item) + : item.children && item.children.forEach(nodeId => this.resetSingleNodeColor(app.graph.getNodeById(nodeId))); + }); + this.markCanvasDirty(app.graph); + } catch (error) { hLog.error("颜色重置失败:", error); } + }, + + // 设置节点颜色:根据颜色类型为选中节点/分组上色,标记画布变更 + setNodesColor(colorType) { + try { + const app = this.getComfyUIAppInstance(); + if (!this.validateAppInstance(app)) return hLog.warn("ComfyUI实例获取失败"); + // 颜色映射 - 仅在节点上色时解析CSS变量 + const colorMap = { 'hColor1_Red': 'rgb(var(--hC1_Red))', 'hColor2_Orange': 'rgb(var(--hC2_Orange))', 'hColor3_Yellow': 'rgb(var(--hC3_Yellow))', 'hColor4_Green': 'rgb(var(--hC4_Green))', 'hColor5_Cyan': 'rgb(var(--hC5_Cyan))', 'hColor6_Blue': 'rgb(var(--hC6_Blue))', 'hColor7_Purple': 'rgb(var(--hC7_Purple))' }; + const color = colorType.startsWith('rgb') || colorType.startsWith('#') ? colorType : colorMap[colorType]; + if (!color) return hLog.warn('--@hSetNodeColor_tip', `未定义的颜色类型: ${colorType}`); + const selectedNodes = this.getSelectedNodes(), selectedGroups = this.getSelectedGroups(app); + if (selectedNodes.length + selectedGroups.length === 0) return hLog.warn('--@hSetNodeColor_tip', "未选择任何节点或组"); + + selectedNodes.forEach(node => node.is_system || this.applyColorToSingleNode(node, color)); + selectedGroups.forEach(group => { + const resolvedColor = this.resolveCSSColor(color); + group.color = this.rgbToHex(resolvedColor); + group.children && group.children.forEach(nodeID => this.applyColorToSingleNode(app.graph.getNodeById(nodeID), color)); + }); + + this.markCanvasDirty(app.graph); + hLog.info('--@hSetNodeColor', `颜色 ${color} →已应用至 ${selectedNodes.length}节点(${selectedGroups.length}组)`); + } catch (error) { hLog.error('--@hSetNodeColor_err', "颜色设置失败:", error); } + }, + + // 【== 直接应用颜色值到选中节点:解析颜色后为选中节点/分组上色,标记画布变更 ==】 + __hFc_Color2Nodes(colorValue) { + try { + const app = this.getComfyUIAppInstance(); + if (!this.validateAppInstance(app)) return hLog.warn("ComfyUI实例获取失败"); + const selectedNodes = this.getSelectedNodes(), selectedGroups = this.getSelectedGroups(app); + if (selectedNodes.length + selectedGroups.length === 0) return hLog.warn('--@hColorApply_tip',"请先选择节点或组"); + const resolvedColor = this.resolveCSSColor(colorValue); + + selectedNodes.forEach(node => node.is_system || this.applyColorToSingleNode(node, resolvedColor)); + selectedGroups.length > 0 && hLog.log('--@hColorApply_OK',`节当前颜色${resolvedColor}已同步至→`, selectedNodes.length,'节点(', selectedGroups.length,'组)'); + selectedGroups.forEach(group => { + this.isGroupActuallySelected(group, app.canvas) + ? (group.color = this.rgbToHex(resolvedColor), group.children && group.children.forEach(nodeID => this.applyColorToSingleNode(app.graph.getNodeById(nodeID), resolvedColor))) + : hLog.log('--@hColorApply_Skip','跳过未明确选中的群组', group); + }); + + this.markCanvasDirty(app.graph); + } catch (error) { hLog.error("颜色应用失败:", error); } + }, + + // 随机颜色应用到选中节点:生成统一随机RGB色并应用,返回应用的颜色(失败返回null) + applyRandomColorToSelectedNodes() { + try { + const app = this.getComfyUIAppInstance(); + if (!this.validateAppInstance(app)) return null; + const selectedNodes = this.getSelectedNodes(), selectedGroups = this.getSelectedGroups(app); + if (selectedNodes.length + selectedGroups.length === 0) { hLog.warn('--@hColorRandom_tip', "请先选择节点或组!"); return null; } + + const randomColor = `rgb(${Math.floor(Math.random() * 256)}, ${Math.floor(Math.random() * 256)}, ${Math.floor(Math.random() * 256)})`; + selectedNodes.forEach(node => node.is_system || this.applyColorToSingleNode(node, randomColor)); + selectedGroups.forEach(group => { + this.isGroupActuallySelected(group, app.canvas) + ? (group.color = this.rgbToHex(randomColor), group.children && group.children.forEach(nodeID => this.applyColorToSingleNode(app.graph.getNodeById(nodeID), randomColor))) + : hLog.log('--@hColorRandom_Skip', '跳过未明确选中的群组', group); + }); + + this.markCanvasDirty(app.graph); + hLog.info('--@hColorRandom', `随机颜色${randomColor} →已应用至 ${selectedNodes.length}节点(${selectedGroups.length}组)`); + return randomColor; + } catch (error) { hLog.error('--@hColorErr', "随机颜色应用失败:", error); return null; } + } + }; + + // 【== 对齐功能集成 ==】 + // 【== 通用对齐工具函数(复用重复逻辑:获取选中节点、画布脏状态、对齐/分布/等尺寸通用流程) ==】 + const __hNAP_AlignFc = { + getSelectedNodes: () => __hMgr_ComfyUINode.getSelectedNodes(), + setCanvasDirty: () => { LGraphCanvas.active_canvas && LGraphCanvas.active_canvas.setDirty(true, true); }, + // 通用对齐处理:axis(0=X轴/1=Y轴)、getReference(基准值计算回调)、updateNode(节点更新回调) + handleAlign: (e, axis, getReference, updateNode) => { + const nodes = __hNAP_AlignFc.getSelectedNodes(); + if (nodes.length === 0) return; + const reference = getReference(nodes, e.altKey); + nodes.forEach(node => updateNode(node, reference)); + __hNAP_AlignFc.setCanvasDirty(); + }, + // 通用分布处理:axis(0=X轴/1=Y轴)、handleDistribute(分布逻辑回调) + handleDistribute: (e, axis, handleDistribute) => { + const nodes = __hNAP_AlignFc.getSelectedNodes(); + if (nodes.length <= 1) return; + nodes.sort((a, b) => a.pos[axis] - b.pos[axis]); + handleDistribute(nodes, e.altKey, axis); + __hNAP_AlignFc.setCanvasDirty(); + }, + // 通用等尺寸处理:dim(0=宽度/1=高度)、getTargetSize(目标尺寸计算回调) + handleEqualSize: (e, dim, getTargetSize) => { + const nodes = __hNAP_AlignFc.getSelectedNodes(); + if (nodes.length === 0) return; + const targetSize = getTargetSize(nodes, e.altKey); + nodes.forEach(node => node.size[dim] = targetSize); + __hNAP_AlignFc.setCanvasDirty(); + } + }; + + // 【== 节点对齐工具 ==】 + const __hNAP_AlignTools = { + // 左对齐(X轴)| 垂直居中(X轴居中)| 右对齐(X轴)| 顶部对齐(Y轴)| 水平居中(Y轴居中)| 底部对齐(Y轴) + hBtnA_alignLeft(e) { __hNAP_AlignFc.handleAlign(e, 0, (nodes, isAlt) => isAlt ? Math.max(...nodes.map(n => n.pos[0])) : Math.min(...nodes.map(n => n.pos[0])), (n, ref) => n.pos[0] = ref); }, + hBtnB_alignCenterV(e) { + __hNAP_AlignFc.handleAlign(e, 0, (nodes, isAlt) => isAlt + ? nodes.reduce((mn, n) => n.pos[1] < mn.pos[1] ? n : mn).pos[0] + nodes.reduce((mn, n) => n.pos[1] < mn.pos[1] ? n : mn).size[0] / 2 + : (Math.min(...nodes.map(n => n.pos[0])) + Math.max(...nodes.map(n => n.pos[0] + n.size[0]))) / 2, + (n, ref) => n.pos[0] = ref - n.size[0] / 2); + }, + hBtnC_alignRight(e) { __hNAP_AlignFc.handleAlign(e, 0, (nodes, isAlt) => isAlt ? Math.min(...nodes.map(n => n.pos[0] + n.size[0])) : Math.max(...nodes.map(n => n.pos[0] + n.size[0])), (n, ref) => n.pos[0] = ref - n.size[0]); }, + hBtnD_alignTop(e) { __hNAP_AlignFc.handleAlign(e, 1, (nodes, isAlt) => isAlt ? Math.max(...nodes.map(n => n.pos[1])) : Math.min(...nodes.map(n => n.pos[1])), (n, ref) => n.pos[1] = ref); }, + hBtnE_alignCenterH(e) { + __hNAP_AlignFc.handleAlign(e, 1, (nodes, isAlt) => isAlt + ? nodes.reduce((mn, n) => n.pos[0] < mn.pos[0] ? n : mn).pos[1] + nodes.reduce((mn, n) => n.pos[0] < mn.pos[0] ? n : mn).size[1] / 2 + : (Math.min(...nodes.map(n => n.pos[1])) + Math.max(...nodes.map(n => n.pos[1] + n.size[1]))) / 2, + (n, ref) => n.pos[1] = ref - n.size[1] / 2); + }, + hBtnF_alignButton(e) { __hNAP_AlignFc.handleAlign(e, 1, (nodes, isAlt) => isAlt ? Math.min(...nodes.map(n => n.pos[1] + n.size[1])) : Math.max(...nodes.map(n => n.pos[1] + n.size[1])), (n, ref) => n.pos[1] = ref - n.size[1]); }, + + // 水平分布 | 垂直分布 + hBtnG_distributionH(e) { + __hNAP_AlignFc.handleDistribute(e, 0, (nodes, isAlt, axis) => { + let current = nodes[0].pos[axis]; + isAlt + ? (() => { for (let i = 1; i < nodes.length; i++) { current += nodes[i - 1].size[axis] + 20; nodes[i].pos[axis] = current; } })() + : (() => { + const min = Math.min(...nodes.map(n => n.pos[axis])), max = Math.max(...nodes.map(n => n.pos[axis] + n.size[axis])); + const total = nodes.reduce((sum, n) => sum + n.size[axis], 0), spacing = (max - min - total) / (nodes.length - 1); + current = min; + nodes.forEach(n => { n.pos[axis] = current; current += n.size[axis] + spacing; }); + })(); + }); + }, + hBtnH_distributionV(e) { + __hNAP_AlignFc.handleDistribute(e, 1, (nodes, isAlt, axis) => { + let current = nodes[0].pos[axis]; + isAlt + ? (() => { for (let i = 1; i < nodes.length; i++) { current += nodes[i - 1].size[axis] + 32 + 20; nodes[i].pos[axis] = current; } })() + : (() => { + const min = Math.min(...nodes.map(n => n.pos[axis])), max = Math.max(...nodes.map(n => n.pos[axis] + n.size[axis])); + const total = nodes.reduce((sum, n) => sum + n.size[axis], 0), spacing = (max - min - total) / (nodes.length - 1); + current = min; + nodes.forEach(n => { n.pos[axis] = current; current += n.size[axis] + spacing; }); + })(); + }); + }, + + // 等宽 | 等高 + hBtnI_equalWidth(e) { __hNAP_AlignFc.handleEqualSize(e, 0, (nodes, isAlt) => isAlt ? Math.min(...nodes.map(n => n.size[0])) : Math.max(...nodes.map(n => n.size[0]))); }, + hBtnJ_equalHeight(e) { __hNAP_AlignFc.handleEqualSize(e, 1, (nodes, isAlt) => isAlt ? Math.min(...nodes.map(n => n.size[1])) : Math.max(...nodes.map(n => n.size[1]))); } + }; + + // 【== 颜色模块控制器 ==】 + class __hColor_Module { + constructor() { + this.colorButtons = __hColorCfg.buttonIds.map(id => document.getElementById(id)); + this.funcButtons = { clear: document.getElementById('hClear'), pick: document.getElementById('hPick'), random: document.getElementById('hRandom'), add: document.getElementById('hColorD_Add'), love: document.getElementById('hColorE_Love') }; + this.hiddenColorPicker = document.getElementById('hiddenColorPicker'), this.colorBar = document.getElementById('h1__hApBar1_Color'), this.nodeAlignKit = document.getElementById('hNodeAlignKit'), this.colorPickerPanel = document.getElementById('Artstich_hColorPicker'); + + this.customColors = Array(7).fill(null); this.lockedColors = Array(7).fill(false); + this.activeKeys = new Set(); this.currentMode = 'default'; + this.modeSwitchThrottle = { lastSwitchTime: 0, throttleMs: 50, pendingMode: null, timeoutId: null }; + this.savedState = null; this.colorPickerOutsideClickHandler = null; + + // 添加模式映射表 + this.modeNames = { + 'default': '默认', + 'shift': '灰度色', + 'alt': '自定义色', + 'ctrl': 'Ctrl', + 'ctrl_alt': '颜色锁定/解锁', + 'ctrl_shift': 'Ctrl Shift', + 'alt_shift': 'Alt Shift' + }; + + // 添加按键名映射表 + this.keyNames = { + 'default': '默认', + 'shift': 'Shift', + 'alt': '按【Ctrl Alt】可自行锁定/解锁需要的颜色', + 'ctrl': '开发中...', + 'ctrl_alt': '【鼠标点击任一色卡】则可锁定/解锁颜色 松开【Ctrl】可退出锁定/解锁模式', + 'ctrl_shift': '开发中...', + 'alt_shift': '开发中...' + }; + + this.init(); + } + // 【新增】取色器统一重置方法 + resetColorPicker() { + const defaultColor = { h: 240, s: 57, b: 49 }; // 默认颜色值 (h:240, s:57, b:49 对应 rgb(55, 55, 125)) + // 方法1: 直接设置取色器颜色并触发更新 + if (window.colorPicker) { window.colorPicker.currentColor = defaultColor; typeof window.colorPicker.updateAllUI === 'function' && window.colorPicker.updateAllUI(); } + } + + reset() { this.customColors = Array(7).fill(null); this.lockedColors = Array(7).fill(false); this.activeKeys.clear(); this.currentMode = 'default'; this.clearThrottleTimer(); this.resetColorPicker(); this.updateUI(); hLog.error('--->颜色模块已重置<---'); } + // 【保持原有】初始化 + init() { this.updateUI(); this.bindEvents(); } + + // 【保持原有】更新UI + updateUI() { this.renderColorButtons(); this.updateButtonStates(); __hUpdater_UI.updatePickBtnColor(this.funcButtons.pick?.style.backgroundColor); } + + // 【保持原有】更新按钮禁用状态 + updateButtonStates() { + __hMgr_DisableState.clearAll(); + const disableMap = { 'shift': ['clear', 'pick', 'random'], 'alt': ['pick'], 'ctrl_alt': ['clear', 'pick', 'random'], 'ctrl_shift': ['clear', 'pick', 'random'], 'alt_shift': ['clear', 'pick', 'random'] }; + disableMap[this.currentMode]?.forEach(button => __hMgr_DisableState.disableElement(this.funcButtons[button])); + } + + // 【保持原有】渲染颜色按钮 + renderColorButtons() { + this.colorButtons.forEach((btn, index) => { + if (!btn) return; + btn.style.backgroundColor = ''; btn.style.color = ''; + let content = '', colorValue = '', showCustomColorBtn = false; + // 根据当前模式显示 + switch (this.currentMode) { + case 'default': colorValue = __hColorCfg.defaultColors[index]; content = __hSvgFc_ColorSVG.colorCircle(colorValue); break; + case 'shift': colorValue = __hColorCfg.grayScaleColors[index]; content = __hSvgFc_ColorSVG.colorCircle(colorValue); break; + case 'alt': + case 'ctrl_alt': + showCustomColorBtn = true; colorValue = this.customColors[index] || ''; + content = this.customColors[index] + ? (this.lockedColors[index] + ? `
${__hSvgFc_ColorSVG.colorCircle(colorValue)}
${__hSvgFc_ColorSVG.loveIcon()}
` + : __hSvgFc_ColorSVG.colorCircle(colorValue)) + : __hSvgFc_ColorSVG.plusIcon(); + break; + case 'ctrl': + case 'ctrl_shift': + case 'alt_shift': colorValue = __hColorCfg.defaultColors[index]; content = __hSvgFc_ColorSVG.colorCircle(colorValue); break; + default: colorValue = __hColorCfg.defaultColors[index]; content = __hSvgFc_ColorSVG.colorCircle(colorValue); + } + showCustomColorBtn ? btn.classList.add('custom-color-btn') : btn.classList.remove('custom-color-btn'); + btn.innerHTML = content; btn.dataset.colorValue = colorValue; + }); + } + + // 绑定事件 - 移除鼠标范围检测 + bindEvents() { + // 绑定全局键盘事件 + document.addEventListener('keydown', e => this.handleKeyDown(e), { passive: false }); document.addEventListener('keyup', e => this.handleKeyUp(e)); + + // 窗口失焦/聚焦处理 + window.addEventListener('blur', () => this.handleWindowBlur()); window.addEventListener('focus', () => this.handleWindowFocus()); + + // 【保持原有】颜色按钮事件绑定 + this.colorButtons.forEach((btn, index) => { + if (!btn) return; + btn.addEventListener('click', () => this.handleColorButtonClick(index)); + btn.addEventListener('mousedown', e => this.handleColorBtnMouseDown(e, index)); + btn.addEventListener('dblclick', e => this.handleColorBtnDblClick(e, index)); + btn.addEventListener('dragstart', e => e.preventDefault()); + btn.addEventListener('selectstart', e => e.preventDefault()); + }); + + // 【保持原有】功能按钮事件绑定 + Object.values(this.funcButtons).forEach(btn => btn && (btn.addEventListener('dragstart', e => e.preventDefault()), btn.addEventListener('selectstart', e => e.preventDefault()))); + + // 【保持原有】功能按钮点击事件 + this.funcButtons.pick?.addEventListener('click', e => this.handlePickBtnClick(e)); + this.funcButtons.random?.addEventListener('click', () => this.handleRandomBtnClick()); + this.funcButtons.clear?.addEventListener('click', () => this.handleClearBtnClick()); + + // 【保持原有】其他事件 + this.hiddenColorPicker?.addEventListener('input', e => this.handleColorPickerChange(e)); + this.colorBar?.addEventListener('dragstart', e => e.preventDefault()); + this.colorBar?.addEventListener('selectstart', e => e.preventDefault()); + this.nodeAlignKit?.addEventListener('dragstart', e => e.preventDefault()); + this.nodeAlignKit?.addEventListener('selectstart', e => e.preventDefault()); + } + + // 处理窗口失焦 - 重置状态 + handleWindowBlur() { this.savedState = { currentMode: this.currentMode }; this.activeKeys.clear(); this.currentMode = 'default'; this.clearThrottleTimer(); this.updateUI(); } + + // 处理窗口聚焦 + handleWindowFocus() { this.savedState && (this.currentMode = this.savedState.currentMode, this.savedState = null, this.updateUI()); } + + // 处理按键按下 + handleKeyDown(e) { const key = e.key.toLowerCase(); if (!['shift', 'alt', 'control', 'meta'].includes(key)) return; key === 'alt' && e.preventDefault(); this.activeKeys.add(key); this.switchModeSafely(this.determineMode()); } + + // 处理按键松开 + handleKeyUp(e) { const key = e.key.toLowerCase(); if (!['shift', 'alt', 'control', 'meta'].includes(key)) return; this.activeKeys.delete(key); this.switchModeSafely(this.determineMode()); } + + // 模式判定逻辑 + determineMode() { + const keys = Array.from(this.activeKeys); + return keys.includes('alt') && keys.includes('control') ? 'ctrl_alt' : + keys.includes('shift') && keys.includes('control') ? 'ctrl_shift' : + keys.includes('alt') && keys.includes('shift') ? 'alt_shift' : + keys.includes('alt') ? 'alt' : + keys.includes('shift') ? 'shift' : + keys.includes('control') ? 'ctrl' : 'default'; + } + + // 安全切换模式(带节流) + switchModeSafely(newMode) { + const now = Date.now(), timeSinceLastSwitch = now - this.modeSwitchThrottle.lastSwitchTime; + if (timeSinceLastSwitch < this.modeSwitchThrottle.throttleMs) { + this.modeSwitchThrottle.pendingMode = newMode; this.clearThrottleTimer(); + this.modeSwitchThrottle.timeoutId = setTimeout(() => { + if (this.modeSwitchThrottle.pendingMode === newMode) { this.applyModeSwitch(newMode); this.modeSwitchThrottle.lastSwitchTime = Date.now(); this.modeSwitchThrottle.pendingMode = null; } + }, this.modeSwitchThrottle.throttleMs - timeSinceLastSwitch); return; + } + this.applyModeSwitch(newMode); this.modeSwitchThrottle.lastSwitchTime = now; + } + + applyModeSwitch(newMode) { + if (newMode !== this.currentMode) { + // 退出当前模式的日志 + if (this.currentMode !== 'default') { + const prevKeyName = this.keyNames[this.currentMode] || this.currentMode; + const prevModeName = this.modeNames[this.currentMode]; + } + + // 进入新模式的日志 + if (newMode === 'default') { + hLog.debug('--@hColorMode', '已恢复【默认】模式'); + } else { + const keyName = this.keyNames[newMode] || newMode; + const modeName = this.modeNames[newMode]; + + if (modeName) { + hLog.debug('--@hColorMode', `已进入【${modeName}】模式(${keyName})`); + } else { + hLog.debug('--@hColorMode', `(${keyName})开发中...`); + } + } + + this.currentMode = newMode; + this.updateUI(); + } + } + // 清除节流定时器 + clearThrottleTimer() { this.modeSwitchThrottle.timeoutId && (clearTimeout(this.modeSwitchThrottle.timeoutId), this.modeSwitchThrottle.timeoutId = null); } + + // ============ 以下是保持原有的颜色按钮功能代码 ============ + + // 【保持原有】颜色按钮点击事件 + handleColorButtonClick(index) { + if (['ctrl_alt', 'ctrl_shift', 'alt_shift'].includes(this.currentMode)) return; + let colorValue; + switch (this.currentMode) { + case 'default': + const colorMap = { 0: 'hColor1_Red', 1: 'hColor2_Orange', 2: 'hColor3_Yellow', 3: 'hColor4_Green', 4: 'hColor5_Cyan', 5: 'hColor6_Blue', 6: 'hColor7_Purple' }; + __hMgr_ComfyUINode.setNodesColor(colorMap[index]); colorValue = __hColorCfg.defaultColors[index]; break; + case 'shift': + colorValue = __hColorCfg.grayScaleColors[index]; __hMgr_ComfyUINode.__hFc_Color2Nodes(colorValue); break; + case 'alt': + colorValue = this.customColors[index]; + colorValue ? __hMgr_ComfyUINode.__hFc_Color2Nodes(colorValue) : (this.toggleColorPicker(null), this.doubleClickedIndex = index); break; + default: return; + } + } + + // 【保持原有】颜色按钮鼠标按下事件 + handleColorBtnMouseDown(e, index) { + if (this.currentMode !== 'ctrl_alt') return; + e.preventDefault(); + this.customColors[index] === null ? this.customColors[index] = this.getRandomColor() : this.lockedColors[index] = !this.lockedColors[index]; + this.renderColorButtons(); + } + + // 【保持原有】颜色按钮双击事件 + handleColorBtnDblClick(e, index) { e.preventDefault(); (this.currentMode === 'alt' && !this.lockedColors[index]) && (this.toggleColorPicker(e), this.doubleClickedIndex = index); } + // 【保持原有】取色按钮点击事件 + handlePickBtnClick(e) { !this.funcButtons.pick.classList.contains('disabled-state') && this.toggleColorPicker(e); } + + handleClearBtnClick() { + if (this.funcButtons.clear.classList.contains('disabled-state')) return; + this.funcButtons.random && (this.funcButtons.random.style.backgroundColor = '', __hUpdater_UI.restoreDefaultSvgColor(this.funcButtons.random)); + this.resetColorPicker(); + switch (this.currentMode) { + case 'default': __hMgr_ComfyUINode.resetNodesColor(); hLog.warn('--@hClearBtn', '已清除节点颜色(仅对选择的节点时生效)'); break; + case 'alt': // Alt模式:清除未锁定的自定义颜色 + 清除节点颜色 + for (let i = 0; i < 7; i++) !this.lockedColors[i] && (this.customColors[i] = null); this.renderColorButtons(); __hMgr_ComfyUINode.resetNodesColor(); hLog.warn('--@hClearBtn', '已清除自定义颜色(Alt)(不含锁定色)'); break; + default: __hMgr_ComfyUINode.resetNodesColor(); + } + } + + // 【保持原有】随机按钮点击事件 + handleRandomBtnClick() { + if (this.funcButtons.random.classList.contains('disabled-state')) return; + if (this.currentMode === 'default') { + const randomColor = __hMgr_ComfyUINode.applyRandomColorToSelectedNodes(); + randomColor && (this.funcButtons.random.style.backgroundColor = randomColor, __hUpdater_UI.updateButtonSvgColor(this.funcButtons.random, randomColor)); + return; + } + if (this.currentMode === 'alt') { + for (let i = 0; i < 7; i++) this.customColors[i] = !this.lockedColors[i] ? this.getRandomColor() : this.customColors[i]; + this.renderColorButtons(); const availableColors = this.customColors.filter(color => !!color); + const targetColor = availableColors.length > 0 ? availableColors[Math.floor(Math.random() * availableColors.length)] : this.getRandomColor(); + this.funcButtons.random.style.backgroundColor = targetColor; __hUpdater_UI.updateButtonSvgColor(this.funcButtons.random, targetColor); + const app = __hMgr_ComfyUINode.getComfyUIAppInstance(); + if (!app || !app.graph) return; + const selectedNodes = __hMgr_ComfyUINode.getSelectedNodes().filter(node => !node.is_system); + const selectedGroups = __hMgr_ComfyUINode.getSelectedGroups(app); + if (selectedNodes.length === 0 && selectedGroups.length === 0) return; + if (availableColors.length === 0) { hLog.warn('没有可用颜色'); return; } + const colorTargets = [...selectedNodes.map(node => ({ type: 'node', target: node })), ...selectedGroups.map(group => ({ type: 'group', target: group }))]; + if (!colorTargets.length) return; + const assignedColors = this.assignColorsWithMinDuplication(colorTargets, availableColors); + colorTargets.forEach((target, index) => { + const color = assignedColors[index]; if (!color) return; + if (target.type === 'node') { __hMgr_ComfyUINode.applyColorToSingleNode(target.target, color); } + else { const group = target.target; group.color = __hMgr_ComfyUINode.rgbToHex(color); group.children && group.children.forEach(nodeID => { const node = app.graph.getNodeById(nodeID); node && __hMgr_ComfyUINode.applyColorToSingleNode(node, color); }); } + }); + app.graph.setDirtyCanvas(true, true); app.graph.afterChange && app.graph.afterChange(); + return; + } + const color = this.getRandomColor(); this.funcButtons.random.style.backgroundColor = color; __hUpdater_UI.updateButtonSvgColor(this.funcButtons.random, color); + } + + // 【保持原有】智能分配颜色方法 + assignColorsWithMinDuplication(targets, colors) { + const colorCount = colors.length, targetCount = targets.length, assignedColors = [], shuffledColors = [...colors]; + for (let i = shuffledColors.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1));[shuffledColors[i], shuffledColors[j]] = [shuffledColors[j], shuffledColors[i]]; } + if (targetCount <= colorCount) return assignedColors.push(...shuffledColors.slice(0, targetCount)), assignedColors; + const fullCycles = Math.floor(targetCount / colorCount), remainder = targetCount % colorCount; + for (let i = 0; i < fullCycles; i++) { + const cycleShuffled = [...shuffledColors]; + for (let j = cycleShuffled.length - 1; j > 0; j--) { const k = Math.floor(Math.random() * (j + 1));[cycleShuffled[j], cycleShuffled[k]] = [cycleShuffled[k], cycleShuffled[j]]; } + assignedColors.push(...cycleShuffled); + } + return assignedColors.push(...shuffledColors.slice(0, remainder)), assignedColors; + } + + // 【保持原有】取色器相关方法 + toggleColorPicker(e) { + e?.stopPropagation(); + const colorPickerPanel = this.colorPickerPanel; + if (!colorPickerPanel) return; + const isVisible = colorPickerPanel.style.display !== 'none'; + + isVisible ? this.hideColorPicker() : (() => { + colorPickerPanel.style.display = 'block'; + this.initColorPickerPosition(); + this.addColorPickerOutsideClickHandler(); + // 确保取色器canvas立即初始化 + setTimeout(() => { + window.colorPicker && window.colorPicker.updateAllUI ? window.colorPicker.updateAllUI() : void 0; + const canvas = document.getElementById('hCPr__mainPicker_colorCanvas'); + canvas && (canvas.width === 0 || canvas.height === 0) ? (canvas.width = 220, canvas.height = 220, canvas.style.width = '220px', canvas.style.height = '220px') : void 0; + }, 10); + window.colorPicker && (() => { const { h, s, b } = window.colorPicker.currentColor, { r, g, b: rgbB } = window.colorPicker.hsbToRgb(h, s, b); this.currentPickerColor = `rgb(${r}, ${g}, ${rgbB})`; })(); + })(); + } + + hideColorPicker() { + if (this.colorPickerPanel) { + this.colorPickerPanel.style.display = 'none'; + try { + document.removeEventListener('mousemove', window.colorAreaDragHandler); + document.removeEventListener('mousemove', window.hueDragHandler); + document.removeEventListener('mousemove', window.saturationDragHandler); + document.removeEventListener('mousemove', window.brightnessDragHandler); + document.removeEventListener('mousemove', window.hueControlDragHandler); + window.colorPicker?.isDragging && Object.keys(window.colorPicker.isDragging).forEach(key => window.colorPicker.isDragging[key] = false); + } catch (e) { hLog.warn('清理取色器事件时出错:', e); } + } + this.removeColorPickerOutsideClickHandler(); + (this.doubleClickedIndex !== undefined && this.currentPickerColor) && (this.customColors[this.doubleClickedIndex] = this.currentPickerColor, this.renderColorButtons(), this.doubleClickedIndex = undefined, this.currentPickerColor = null); + } + + addColorPickerOutsideClickHandler() { + this.removeColorPickerOutsideClickHandler(); + this.colorPickerOutsideClickHandler = (e) => { + const colorPickerPanel = this.colorPickerPanel; + if (!colorPickerPanel || colorPickerPanel.style.display === 'none') return; + let target = e.target, isClickInside = false; + while (target && target !== document) { if (target === colorPickerPanel) { isClickInside = true; break; } target = target.parentNode; } + const isPickButton = e.target === this.funcButtons.pick || (this.funcButtons.pick && this.funcButtons.pick.contains(e.target)); + if (e.type === 'contextmenu') { e.preventDefault(); e.stopPropagation(); this.hideColorPicker(); return; } + (!isClickInside && !isPickButton) && this.hideColorPicker(); + }; + document.addEventListener('mousedown', this.colorPickerOutsideClickHandler, { capture: true }); + document.addEventListener('contextmenu', this.colorPickerOutsideClickHandler, { capture: true }); + if (this.colorPickerPanel) this.colorPickerPanel.addEventListener('contextmenu', (e) => { e.preventDefault(); e.stopPropagation(); this.hideColorPicker(); return false; }, { capture: true }); + } + + removeColorPickerOutsideClickHandler() { + this.colorPickerOutsideClickHandler && (document.removeEventListener('mousedown', this.colorPickerOutsideClickHandler, { capture: true }), document.removeEventListener('contextmenu', this.colorPickerOutsideClickHandler, { capture: true }), this.colorPickerOutsideClickHandler = null); + } + + initColorPickerPosition() { this.colorPickerPanel && this.colorBar && window.__hMgr_PopEl__Position?.positionColorPicker(); } + handleColorPickerChange(e) { + this.state?.colorPickerCallback && (() => { + const rgbColor = `rgb(${[1, 3, 5].map(i => parseInt(e.target.value.slice(i, i + 2), 16)).join(',')})`; + this.state.colorPickerCallback(rgbColor); this.state.colorPickerCallback = null; + __hUpdater_UI.updateButtonSvgColor(this.funcButtons.pick, rgbColor); + })(); + } + + openColorPicker(callback) { this.colorPickerCallback = callback; this.hiddenColorPicker.click(); } + getRandomColor() { const r = Math.floor(Math.random() * 256), g = Math.floor(Math.random() * 256), b = Math.floor(Math.random() * 256); return `rgb(${r}, ${g}, ${b})`; } + } + + + // 【== SVG 图标系统 ==】 + const __hSVG_Build = (content, { viewBox = "0 0 32 32" }) => `${content}`; + const hSVGfc = { + Rect: ([x, y, w, h, rx = 0, ry = 0, cls = "hBtn_svg"]) => ``, + Circle: ([cx, cy, r = 2, cls = "hBtn_svg"]) => ``, + Path: ([d, cls = "hBtn_svg"]) => ``, + Polygon: ([points, cls = "hBtn_svg"]) => ``, + Polyline: ([points, cls = "hBtn_svg"]) => ``, + Polyline_Stroke: ([points, cls = "hBtn_stroke"]) => ``, + RectTrans: ([x, y, w, h, transform, rx = 0, ry = 0, cls = "hBtn_svg"]) => `` + }; + const __hSVGkit = { + CloneLine: (element, count, spacing, direction = 'y', startPos = 0) => Array.from({ length: count }, (_, i) => { const offset = startPos + i * spacing; return element.replace(direction === 'y' ? /y="([^"]*)"/g : /x="([^"]*)"/g, (_, val) => `${direction}="${+val + offset}"`); }).join(''), + CloneMatrix: (element, rows, cols, rowSpacing, colSpacing, startX = 0, startY = 0) => Array.from({ length: rows }, (_, row) => Array.from({ length: cols }, (_, col) => element.replace(/cx="([^"]*)"/g, (_, cx) => `cx="${+cx + startX + col * colSpacing}"`).replace(/cy="([^"]*)"/g, (_, cy) => `cy="${+cy + startY + row * rowSpacing}"`)).join('')).join(''), + CloneRotate: (element, count, cx, cy, angleStep = 90) => element + Array.from({ length: count - 1 }, (_, i) => `${element}`).join(''), + BorderDots_FocusFrame: (w, h, size = 1, spacing = 2) => { + const dots = [ + ...Array.from({ length: Math.ceil((w - 18) / spacing) }, (_, i) => hSVGfc.Rect([10 + i * spacing, 5, size, size])), + ...Array.from({ length: Math.ceil((w - 18) / spacing) }, (_, i) => hSVGfc.Rect([8 + i * spacing, h - 5, size, size])), + ...Array.from({ length: Math.ceil((h - 16) / spacing) }, (_, i) => hSVGfc.Rect([5, 8 + i * spacing, size, size])), + ...Array.from({ length: Math.ceil((h - 17) / spacing) }, (_, i) => hSVGfc.Rect([w - 5, 8 + i * spacing, size, size])) + ].join(''); + const corners = [[5, 5, 4, 1], [5, 5, 1, 4], [w - 8, 5, 4, 1], [w - 5, 5, 1, 4], [5, h - 5, 4, 1], [5, h - 8, 1, 4], [w - 8, h - 5, 4, 1], [w - 5, h - 8, 1, 4]]; + return dots + corners.map(corner => hSVGfc.Rect(corner)).join(''); + }, + CornerBadge_I: (pos = 'top-right') => { const [x, y] = pos === 'top-right' ? [21, 5] : [5, 5]; return [hSVGfc.Rect([x + 1, y, 2, 8]), hSVGfc.Rect([x, y, 4, 1]), hSVGfc.Rect([x, y + 7, 4, 1])].join(''); } + }; + const __hSVGkit_Templates = { + hBtnV_barMove: () => __hSVGkit.CloneMatrix(hSVGfc.Circle([6, 6]), 3, 2, 10, 10, 5, 0), + + hBtnA_alignLeft: () => [[10, 9, 12, 6], [10, 19, 18, 6], [6.5, 4, 1, 24]].map(hSVGfc.Rect).join(''), + hBtnB_alignCenterV: () => [[9, 9, 14, 6], [6, 19, 20, 6], [15.5, 4, 1, 24]].map(hSVGfc.Rect).join(''), + hBtnC_alignRight: () => [[11, 9, 12, 6], [5, 19, 18, 6], [25.5, 4, 1, 24]].map(hSVGfc.Rect).join(''), + hBtnD_alignTop: () => [[8, 9, 6, 12], [18, 9, 6, 18], [4, 5, 24, 1]].map(hSVGfc.Rect).join(''), + hBtnE_alignCenterH: () => [[18, 6, 6, 20], [8, 9, 6, 14], [4, 15, 24, 1]].map(hSVGfc.Rect).join(''), + hBtnF_alignButton: () => [[8, 11, 6, 12], [18, 5, 6, 18], [4, 26, 24, 1]].map(hSVGfc.Rect).join(''), + + hBtnG_distEvenH: () => [[19, 4, 1, 6], [12, 4, 1, 6], [19, 12, 6, 11], [7, 12, 6, 15], [4, 7, 24, 1]].map(hSVGfc.Rect).join(''), + hBtnH_distEvenV: () => [[11, 7, 11, 6], [3, 12, 6, 1], [3, 19, 6, 1], [11, 19, 17, 6], [6.5, 4, 1, 24]].map(hSVGfc.Rect).join(''), + hBtnI_equalWidth: () => [[9, 8, 14, 6], [11, 18, 10, 6], [5, 4, 1, 24], [26, 4, 1, 24], [5, 21, 4, 1], [23, 21, 4, 1]].map(hSVGfc.Rect).join(''), + hBtnJ_equalHeight: () => [[17, 9, 6, 14], [7, 11, 6, 10], [4, 5, 24, 1], [4, 26, 24, 1], [10, 5, 1, 4], [10, 23, 1, 4]].map(hSVGfc.Rect).join(''), + + hBtnK_hSelectMode: () => hSVGfc.RectTrans([4, 13, 17, 7, "translate(-4 29) rotate(-90)"]) + hSVGfc.RectTrans([16.5, 9.5, 9, 6, "translate(8.5 33.5) rotate(-90)"]) + __hSVGkit.BorderDots_FocusFrame(32, 32), + hBtnL_hGroupMode: () => { + const base = hSVGfc.RectTrans([4, 14, 15, 7, "translate(-6 29) rotate(-90)"]) + hSVGfc.RectTrans([18, 18, 6, 8, "translate(-1 43) rotate(-90)"]); + const dots = [ + ...Array.from({ length: 10 }, (_, i) => hSVGfc.Rect([5, 8 + i * 2, 1, 1])), + ...Array.from({ length: 10 }, (_, i) => hSVGfc.Rect([7 + i * 2, 27, 1, 1])), + ...Array.from({ length: 10 }, (_, i) => hSVGfc.Rect([27, 26 - i * 2, 1, 1])) + ].join(''); + const special = [[5, 5, 23, 1], [5, 7, 23, 1], [5, 6, 1, 1], [7, 6, 1, 1], [9, 6, 1, 1], [12, 6, 16, 1], [20, 10, 4, 1], [22, 13, 2, 1], [23, 13, 1, 3], [19, 11, 1, 4], [20, 15, 3, 1]]; + return base + dots + special.map(hSVGfc.Rect).join(''); + }, + + hBtnR_selectTool0: () => hSVGfc.Polygon(["10 27 10 5 26 20 16 20 10 27"]), + hBtnR_selectTool1: () => hSVGfc.Polygon(["9 29 9 8 24 22 15 22 9 29"]) + hSVGfc.Rect([21, 5, 2, 8]) + hSVGfc.RectTrans([21, 5, 2, 8, "translate(13 31) rotate(-90)"]), + hBtnR_selectTool2: () => hSVGfc.Polygon(["9 29 9 8 24 22 15 22 9 29"]) + hSVGfc.RectTrans([20, 3, 2, 8, "translate(14 28) rotate(-90)"]) + hSVGfc.RectTrans([22, 10, 2, 4, "translate(11 35) rotate(-90)"]), + hBtnR_selectTool3: () => hSVGfc.Polygon(["9 29 9 8 24 22 15 22 9 29"]) + hSVGfc.Rect([18, 5, 2, 4]) + hSVGfc.Rect([25, 10, 2, 5]) + hSVGfc.RectTrans([19, 4, 2, 4, "translate(14 26) rotate(-90)"]) + hSVGfc.RectTrans([24, 12, 2, 4, "translate(11 39) rotate(-90)"]), + hBtnR_selectTool4: () => hSVGfc.Polygon(["9 29 9 8 24 22 15 22 9 29"]) + hSVGfc.Rect([21, 11, 2, 2]) + hSVGfc.Rect([21, 5, 2, 2]) + hSVGfc.RectTrans([18, 8, 2, 2, "translate(10 28) rotate(-90)"]) + hSVGfc.RectTrans([24, 8, 2, 2, "translate(16 34) rotate(-90)"]), + hBtnR_selectTool5: () => hSVGfc.Polygon(["9 29 9 8 24 22 15 22 9 29"]) + hSVGfc.Rect([24, 11, 2, 2]) + hSVGfc.Rect([21, 8, 2, 2]) + hSVGfc.Rect([18, 5, 2, 2]) + hSVGfc.RectTrans([18, 11, 2, 2, "translate(7 31) rotate(-90)"]) + hSVGfc.RectTrans([24, 5, 2, 2, "translate(19 31) rotate(-90)"]), + + hBtnS_renameTool: () => hSVGfc.Polygon(["5 24 5 14 12 21 8 21 5 24"]) + hSVGfc.RectTrans([8, 3, 2, 8, "translate(2 16) rotate(-90)"]) + hSVGfc.RectTrans([10, 10, 2, 4, "translate(-1 23) rotate(-90)"]) + [[18.9, 5, 4.2, 21], [17, 5, 8, 1], [17, 25, 8, 1]].map(hSVGfc.Rect).join(''), + hBtnS_renameToolA: () => hSVGfc.Polygon(["9 29 9 8 24 22 15 22 9 29"]) + __hSVGkit.CornerBadge_I('top-right') + [[21, 5, 4, 1], [21, 12, 4, 1]].map(hSVGfc.Rect).join(''), + hBtnT_magicTool: () => hSVGfc.RectTrans([4.08, 17.23, 23, 2, "translate(13.7 42.13) rotate(-135)"]) + hSVGfc.Polygon(["9.5,16.87 10.18,18.7 12,19.37 10.18,20.05 9.5,21.87 8.82,20.05 7,19.37 8.82,18.7 9.5,16.87"]) + hSVGfc.Polygon(["13.63 4.2 14.51 6.58 16.89 7.46 14.51 8.34 13.63 10.71 12.75 8.34 10.37 7.46 12.75 6.58 13.63 4.2"]) + hSVGfc.Polygon(["21.6 4.2 23.33 8.87 28 10.6 23.33 12.33 21.6 17 19.87 12.33 15.2 10.6 19.87 8.87 21.6 4.2"]), + + hBtnV_barMenu: () => __hSVGkit.CloneLine(hSVGfc.Rect([6, 7, 20, 2]), 3, 8, 'y', 0), + hBtnV_barMenuA: () => __hSVGkit.CloneLine(hSVGfc.Rect([6, 6, 20, 1]), 3, 5, 'y', 0), + hBtnV_modeSwitch: () => hSVGfc.Polyline_Stroke(["4.28 6.16 8 2.43 11.72 6.16"]) + hSVGfc.Polyline_Stroke(["11.72 9.84 8 13.57 4.28 9.84"]), + hBtnV_shiftDown: () => hSVGfc.Polyline_Stroke(["24.49 6.76 16 15.24 7.51 6.76"], "hBtn_strokeRound"), + hBtnV_shiftUp: () => hSVGfc.Polyline_Stroke(["7.51 15.24 16 6.76 24.49 15.24"], "hBtn_strokeRound"), + hBtnV_switchDown: () => hSVGfc.Polyline_Stroke(["15.25 2.88 9.43 8.7 3.61 2.88"]), + hBtnV_switchDown_1: () => hSVGfc.Polyline_Stroke(["15.25 2.88 9.43 8.7 3.61 2.88"]), + hBtnV_switchDown_2: () => hSVGfc.Polyline_Stroke(["15.25 2.88 9.43 8.7 3.61 2.88"]), + hBtnV_switchDown_3: () => hSVGfc.Polyline_Stroke(["15.25 2.88 9.43 8.7 3.61 2.88"]), + hBtnV_switchDown_4: () => hSVGfc.Polyline_Stroke(["15.25 2.88 9.43 8.7 3.61 2.88"]), + hBtnV_switchUp: () => hSVGfc.Polyline_Stroke(["3.61 9.12 9.43 3.3 15.25 9.12"]), + hBtnV_switchUp_1: () => hSVGfc.Polyline_Stroke(["3.61 9.12 9.43 3.3 15.25 9.12"]), + hBtnV_switchUp_2: () => hSVGfc.Polyline_Stroke(["3.61 9.12 9.43 3.3 15.25 9.12"]), + hBtnV_switchUp_3: () => hSVGfc.Polyline_Stroke(["3.61 9.12 9.43 3.3 15.25 9.12"]), + hBtnV_switchUp_4: () => hSVGfc.Polyline_Stroke(["3.61 9.12 9.43 3.3 15.25 9.12"]), + + hBtnX_barDivider: () => hSVGfc.Rect([9, 0, 1, 40]), + hBtnY_barLOGO_ApBall: () => hSVGfc.Path(["M26,5c.55,0,1,.45,1,1v9c0,3.52-2.61,6.44-6,6.92v-.97c0-.6.39-1.11.94-1.34,1.8-.76,3.06-2.54,3.06-4.61v-7.62c0-.15-.15-.28-.3-.24-2.68.6-4.7,3-4.7,5.86v14h-2v-14c0-4.42,3.58-8,8-8h0Z"]) + hSVGfc.Path(["M7,20.32v6.68h2v-4.89c0-.15-.07-.29-.19-.38-.57-.44-1.07-.94-1.51-1.5-.1-.13-.3-.06-.3.1Z"]) + hSVGfc.Path(["M8,5h0c-.55,0-1,.45-1,1v9c0,1.9.76,3.63,2,4.89,1.05,1.08,2.44,1.81,4,2.03v-.97c0-.6-.39-1.11-.94-1.34-1.8-.76-3.06-2.54-3.06-4.61v-7.62c0-.15.15-.28.3-.24,2.68.6,4.7,3,4.7,5.86v14h2v-14c0-4.42-3.58-8-8-8Z"]), + hBtnY_barLOGO_Color: () => hSVGfc.Path(["M26,5c.55,0,1,.45,1,1v9c0,3.52-2.61,6.44-6,6.92v-.97c0-.6.39-1.11.94-1.34,1.8-.76,3.06-2.54,3.06-4.61v-7.62c0-.15-.15-.28-.3-.24-2.68.6-4.7,3-4.7,5.86v14h-2v-14c0-4.42,3.58-8,8-8h0Z"]) + hSVGfc.Path(["M7,20.32v6.68h2v-4.89c0-.15-.07-.29-.19-.38-.57-.44-1.07-.94-1.51-1.5-.1-.13-.3-.06-.3.1Z"]) + hSVGfc.Path(["M8,5h0c-.55,0-1,.45-1,1v9c0,1.9.76,3.63,2,4.89,1.05,1.08,2.44,1.81,4,2.03v-.97c0-.6-.39-1.11-.94-1.34-1.8-.76-3.06-2.54-3.06-4.61v-7.62c0-.15.15-.28.3-.24,2.68.6,4.7,3,4.7,5.86v14h2v-14c0-4.42-3.58-8-8-8Z"]), + hBtnY_barLOGO_Title: () => hSVGfc.Path(["M26,5c.55,0,1,.45,1,1v9c0,3.52-2.61,6.44-6,6.92v-.97c0-.6.39-1.11.94-1.34,1.8-.76,3.06-2.54,3.06-4.61v-7.62c0-.15-.15-.28-.3-.24-2.68.6-4.7,3-4.7,5.86v14h-2v-14c0-4.42,3.58-8,8-8h0Z"]) + hSVGfc.Path(["M7,20.32v6.68h2v-4.89c0-.15-.07-.29-.19-.38-.57-.44-1.07-.94-1.51-1.5-.1-.13-.3-.06-.3.1Z"]) + hSVGfc.Path(["M8,5h0c-.55,0-1,.45-1,1v9c0,1.9.76,3.63,2,4.89,1.05,1.08,2.44,1.81,4,2.03v-.97c0-.6-.39-1.11-.94-1.34-1.8-.76-3.06-2.54-3.06-4.61v-7.62c0-.15.15-.28.3-.24,2.68.6,4.7,3,4.7,5.86v14h2v-14c0-4.42-3.58-8-8-8Z"]), + hBtnY_barLOGO: () => hSVGfc.Path(["M26,5c.55,0,1,.45,1,1v9c0,3.52-2.61,6.44-6,6.92v-.97c0-.6.39-1.11.94-1.34,1.8-.76,3.06-2.54,3.06-4.61v-7.62c0-.15-.15-.28-.3-.24-2.68.6-4.7,3-4.7,5.86v14h-2v-14c0-4.42,3.58-8,8-8h0Z"]) + hSVGfc.Path(["M7,20.32v6.68h2v-4.89c0-.15-.07-.29-.19-.38-.57-.44-1.07-.94-1.51-1.5-.1-.13-.3-.06-.3.1Z"]) + hSVGfc.Path(["M8,5h0c-.55,0-1,.45-1,1v9c0,1.9.76,3.63,2,4.89,1.05,1.08,2.44,1.81,4,2.03v-.97c0-.6-.39-1.11-.94-1.34-1.8-.76-3.06-2.54-3.06-4.61v-7.62c0-.15.15-.28.3-.24,2.68.6,4.7,3,4.7,5.86v14h2v-14c0-4.42-3.58-8-8-8Z"]), + hBtnZ_barResize: () => hSVGfc.Path(["M6,12H0C4.69,7.31,7.31,4.69,12,0h0v6c0,3.31-2.69,6-6,6Z"]), + + hColorA_Clear: () => hSVGfc.Path(["M12,3c4.97,0,9,4.03,9,9s-4.03,9-9,9S3,16.97,3,12,7.03,3,12,3M12,2C6.49,2,2,6.49,2,12s4.49,10,10,10,10-4.49,10-10S17.51,2,12,2h0Z", "hBtn_full"]) + ``, + hColorB_Pick: () => { + const bar = hSVGfc.Rect([11.38, 3.25, 1.25, 5.62]); + return hSVGfc.Path(["M12,2c5.52,0,10,4.48,10,10s-4.48,10-10,10S2,17.52,2,12,6.48,2,12,2M12,1C5.93,1,1,5.93,1,12s4.93,11,11,11,11-4.93,11-11S18.07,1,12,1h0Z", "hBtn_full"]) + hSVGfc.Path(["M12,6.37c3.1,0,5.62,2.52,5.62,5.62s-2.52,5.62-5.62,5.62-5.62-2.52-5.62-5.62,2.52-5.62,5.62-5.62M12,5.12c-3.8,0-6.88,3.08-6.88,6.88s3.08,6.88,6.88,6.88,6.88-3.08,6.88-6.88-3.08-6.88-6.88-6.88h0Z", "hBtn_svg"]) + hSVGfc.Rect([10.75, 10.75, 2.5, 2.5]) + __hSVGkit.CloneRotate(bar, 4, 12, 12, 90); + }, + hColorC_Random: () => hSVGfc.Path(["M12,2c5.52,0,10,4.48,10,10s-4.48,10-10,10S2,17.52,2,12,6.48,2,12,2M12,1C5.93,1,1,5.93,1,12s4.93,11,11,11,11-4.93,11-11S18.07,1,12,1h0Z", "hBtn_full"]) + hSVGfc.Path(["M12,19.4c-4.08,0-7.4-3.32-7.4-7.4,0-1.05.22-2.07.66-3.04l.43-.96,3.95,3.95-1.03,1.03-2.38-2.38c-.11.46-.17.93-.17,1.4,0,3.27,2.66,5.94,5.94,5.94.84,0,1.66-.18,2.44-.53l.6,1.33c-.97.44-1.99.66-3.04.66Z"]) + hSVGfc.Path(["M18.28,15.86l-3.86-3.86.91-.91,2.48,2.48c.14-.51.21-1.04.21-1.57,0-3.32-2.7-6.02-6.02-6.02-.85,0-1.69.18-2.47.54l-.53-1.17c.96-.43,1.97-.65,3-.65,4.03,0,7.31,3.28,7.31,7.31,0,1.04-.22,2.05-.65,3.01l-.38.85Z"]), + + hColorD_Add: () => hSVGfc.Rect([5, 11, 14, 2]) + hSVGfc.Rect([11, 5, 2, 14]), + hColorE_Love: () => hSVGfc.Path(["M12,21.35l-1.45-1.32C5.4,15.36,2,12.28,2,8.5,2,5.42,4.42,3,7.5,3c1.74,0,3.41,.81,4.5,2.09C13.09,3.81,14.76,3,16.5,3,19.58,3,22,5.42,22,8.5c0,3.78-3.4,6.86-8.55,11.54l-1.45,1.31Z"], "hBtn_svg"), + + colorCircle: (colorClass) => `` + }; + ['hColor1_Red', 'hColor2_Orange', 'hColor3_Yellow', 'hColor4_Green', 'hColor5_Cyan', 'hColor6_Blue', 'hColor7_Purple', 'hColorBW1_Black', 'hColorBW2_DarkGray', 'hColorBW3_DeepGray', 'hColorBW4_Gray', 'hColorBW5_LightGray', 'hColorBW6_BrightGray', 'hColorBW7_White'].forEach(color => { + __hSVGkit_Templates[color] = () => __hSVGkit_Templates.colorCircle(color); + }); + const __hSVG_IconCfg = { + // 对齐类按钮(空) + 'hBtnV_barMove': {}, 'hBtnA_alignLeft': {}, 'hBtnB_alignCenterV': {}, 'hBtnC_alignRight': {}, 'hBtnD_alignTop': {}, 'hBtnE_alignCenterH': {}, 'hBtnF_alignButton': {}, + // 分布/等尺寸类按钮(空) + 'hBtnG_distEvenH': {}, 'hBtnH_distEvenV': {}, 'hBtnI_equalWidth': {}, 'hBtnJ_equalHeight': {}, + // 选择/分组模式(空) + 'hBtnK_hSelectMode': {}, 'hBtnL_hGroupMode': {}, + // 选择工具、重命名工具(空) + 'hBtnR_selectTool0': {}, 'hBtnR_selectTool1': {}, 'hBtnR_selectTool2': {}, 'hBtnR_selectTool3': {}, 'hBtnR_selectTool4': {}, 'hBtnR_selectTool5': {}, 'hBtnS_renameTool': {}, 'hBtnS_renameToolA': {}, 'hBtnT_magicTool': {}, + // 侧边栏菜单/切换类 + 'hBtnV_barMenu': {}, 'hBtnV_barMenuA': { viewBox: "0 0 32 22" }, 'hBtnV_shiftDown': { viewBox: "0 0 32 22" }, 'hBtnV_shiftUp': { viewBox: "0 0 32 22" }, 'hBtnV_modeSwitch': { viewBox: "0 0 16 16" }, + 'hBtnV_switchDown': { viewBox: "0 0 18.86 12" }, 'hBtnV_switchDown_1': { viewBox: "0 0 18.86 12" }, 'hBtnV_switchDown_2': { viewBox: "0 0 18.86 12" }, 'hBtnV_switchDown_3': { viewBox: "0 0 18.86 12" }, 'hBtnV_switchDown_4': { viewBox: "0 0 18.86 12" }, + 'hBtnV_switchUp': { viewBox: "0 0 18.86 12" }, 'hBtnV_switchUp_1': { viewBox: "0 0 18.86 12" }, 'hBtnV_switchUp_2': { viewBox: "0 0 18.86 12" }, 'hBtnV_switchUp_3': { viewBox: "0 0 18.86 12" }, 'hBtnV_switchUp_4': { viewBox: "0 0 18.86 12" }, + // 侧边栏分割线/LOGO/调整尺寸 + 'hBtnX_barDivider': { viewBox: "0 0 19 40" }, + 'hBtnY_barLOGO_ApBall': {}, 'hBtnY_barLOGO_Color': {}, 'hBtnY_barLOGO_Title': {}, 'hBtnY_barLOGO': {}, + 'hBtnZ_barResize': { viewBox: "0 0 12 12" }, + // 颜色工具 + 'hColorA_Clear': { viewBox: "0 0 24 24" }, 'hColorB_Pick': { viewBox: "0 0 24 24" }, 'hColorC_Random': { viewBox: "0 0 24 24" }, + // 彩色系 + 'hColor1_Red': { viewBox: "0 0 24 24" }, 'hColor2_Orange': { viewBox: "0 0 24 24" }, 'hColor3_Yellow': { viewBox: "0 0 24 24" }, 'hColor4_Green': { viewBox: "0 0 24 24" }, 'hColor5_Cyan': { viewBox: "0 0 24 24" }, 'hColor6_Blue': { viewBox: "0 0 24 24" }, 'hColor7_Purple': { viewBox: "0 0 24 24" }, + // 黑白灰系 + 'hColorBW1_Black': { viewBox: "0 0 24 24" }, 'hColorBW2_DarkGray': { viewBox: "0 0 24 24" }, 'hColorBW3_DeepGray': { viewBox: "0 0 24 24" }, 'hColorBW4_Gray': { viewBox: "0 0 24 24" }, 'hColorBW5_LightGray': { viewBox: "0 0 24 24" }, 'hColorBW6_BrightGray': { viewBox: "0 0 24 24" }, 'hColorBW7_White': { viewBox: "0 0 24 24" } + }; + function __hInit_AllIcons() { Object.entries(__hSVG_IconCfg).forEach(([id, config]) => { const element = document.getElementById(id); element && (element.innerHTML = __hSVG_Build(__hSVGkit_Templates[id]?.() || '', config)); }); } + + // 【== 颜色选择器功能 ==】 + // 【== 初始化颜色选择器 ==】 + function __hInit_ColorPicker() { + // 【== 输入框管理器类 ==】 + class __hMgr_InputBox { + constructor(){this.inputs={};this.init();} + init(){this.setupHSBInputs();this.setupRGBInputs();this.setupHexInput();} + + // 通用输入框初始化(复用HSB/RGB重复逻辑) + setupCommonInputs(configs, inputHandler, changeHandler) { + configs.forEach(config => { + const input = document.getElementById(config.id); + if (!input) return; + this.inputs[config.id] = { ...config, element: input }; + // 绑定通用事件(合并短行,字符数<180) + input.addEventListener('input', e => inputHandler(e, config)); input.addEventListener('change', e => changeHandler(e, config)); + input.addEventListener('keydown', e => this.handleKeydown(e, config)); input.addEventListener('blur', e => this.handleBlur(e, config)); + }); + } + + // 处理HSB输入框 + setupHSBInputs() { + const hsbConfigs = [{ id: 'hCPr__HUE_input', min: 0, max: 360, step: 1, prop: 'h' }, { id: 'hCPr__S_input', min: 0, max: 100, step: 1, prop: 's' }, { id: 'hCPr__B_input', min: 0, max: 100, step: 1, prop: 'b' }]; + this.setupCommonInputs(hsbConfigs, this.handleInput.bind(this), this.handleChange.bind(this)); + } + + // 处理RGB输入框 + setupRGBInputs() { + const rgbConfigs = [{ id: 'hCPr__Input_R', min: 0, max: 255, step: 1 }, { id: 'hCPr__Input_G', min: 0, max: 255, step: 1 }, { id: 'hCPr__Input_B', min: 0, max: 255, step: 1 }]; + this.setupCommonInputs(rgbConfigs, this.handleRGBInput.bind(this), this.handleRGBChange.bind(this)); + } + + // 处理十六进制输入框 + setupHexInput() { + const hexInput = document.getElementById('hexInput2'); + if (!hexInput) return; + this.inputs['hexInput2'] = { id: 'hexInput2', min: 0, max: 0xFFFFFF, step: 1, element: hexInput }; + // 绑定十六进制专属事件 + hexInput.addEventListener('input', (e) => this.handleHexInput(e)); hexInput.addEventListener('change', (e) => this.handleHexChange(e)); + hexInput.addEventListener('keydown', (e) => this.handleHexKeydown(e)); hexInput.addEventListener('blur', (e) => this.handleHexBlur(e)); + } + + // 通用输入处理 + handleInput(e, config) { + const input = e.target; + let value = input.value.trim(); + if (value === '') { input.value = config.min; this.updateColorFromInput(config.id, config.min); return; } + const numValue = parseInt(value, 10); + if (isNaN(numValue)) { input.value = this.getCurrentValue(config.id); return; } + const clampedValue = Math.max(config.min, Math.min(config.max, numValue)); + clampedValue !== numValue && (input.value = clampedValue); + + this.updateColorFromInput(config.id, clampedValue); + } + + handleChange(e, config) { this.handleInput(e, config); } + handleRGBInput(e, config) { this.handleInput(e, config); } + handleRGBChange(e, config) { this.handleInput(e, config); } + + // 十六进制输入处理 + handleHexInput(e) { + const input = e.target; + let value = input.value.trim().toUpperCase().replace(/^#/, '').replace(/[^0-9A-F]/g, ''); + value.length > 6 && (value = value.substring(0, 6)); + input.value = value; + value.length === 6 && this.updateColorFromHex(value); + } + + handleHexChange(e) { + const input = e.target; + let value = input.value.trim().toUpperCase().replace(/^#/, ''); + // 空值/补零/长度限制 + value === '' && (value = '000000'); + while (value.length < 6) value = '0' + value; + value.length > 6 && (value = value.substring(0, 6)); + input.value = value; + this.updateColorFromHex(value); + } + + // 键盘事件处理(方向键步进) + handleKeydown(e, config) { + if (e.key === 'ArrowUp' || e.key === 'ArrowDown') { + e.preventDefault(); + const currentValue = parseInt(e.target.value, 10) || config.min, step = config.step || 1, newValue = e.key === 'ArrowUp' ? Math.min(config.max, currentValue + step) : Math.max(config.min, currentValue - step); + e.target.value = newValue; + this.updateColorFromInput(config.id, newValue); + } + } + + // 十六进制键盘事件(提取重复补零/范围逻辑) + handleHexKeydown(e) { + if (e.key === 'ArrowUp' || e.key === 'ArrowDown') { + e.preventDefault(); + let hexValue = e.target.value.trim().toUpperCase().replace(/^#/, ''); !hexValue || !/^[0-9A-F]{1,6}$/.test(hexValue) && (hexValue = '000000'); while (hexValue.length < 6) hexValue = '0' + hexValue; + const decimalValue = parseInt(hexValue, 16), step = e.key === 'ArrowUp' ? 1 : -1; + let newDecimalValue = Math.max(0, Math.min(0xFFFFFF, decimalValue + step)), newHexValue = newDecimalValue.toString(16).toUpperCase(); + while (newHexValue.length < 6) newHexValue = '0' + newHexValue; + e.target.value = newHexValue; this.updateColorFromHex(newHexValue); + } + } + + // 失去焦点事件(复用逻辑) + handleBlur(e, config) { this.handleChange(e, config); } + handleHexBlur(e) { this.handleHexChange(e); } + + // 获取当前值(精简重复的hsbToRgb调用) + getCurrentValue(inputId) { + const config = this.inputs[inputId]; + if (!config) return 0; + + if (inputId === 'hexInput2') return currentColor ? hsbToHex(currentColor.h, currentColor.s, currentColor.b).substring(1) : '000000'; + if (['hCPr__HUE_input', 'hCPr__S_input', 'hCPr__B_input'].includes(inputId)) return currentColor?.[inputId.split('__')[1].split('_')[0].toLowerCase()] || 0; + const rgb = currentColor ? hsbToRgb(currentColor.h, currentColor.s, currentColor.b) : { r: 0, g: 0, b: 0 }; + return inputId === 'hCPr__Input_R' ? rgb.r : inputId === 'hCPr__Input_G' ? rgb.g : inputId === 'hCPr__Input_B' ? rgb.b : config.min; + } + + // 从输入更新颜色(HSB/RGB) + updateColorFromInput(inputId, value) { + if (!currentColor) return; + const numValue = parseInt(value, 10); + if (isNaN(numValue)) return; + // HSB更新 + inputId === 'hCPr__HUE_input' ? currentColor.h = Math.max(0, Math.min(360, numValue)) : inputId === 'hCPr__S_input' ? currentColor.s = Math.max(0, Math.min(100, numValue)) : inputId === 'hCPr__B_input' && (currentColor.b = Math.max(0, Math.min(100, numValue))); + // RGB更新 + if (['hCPr__Input_R', 'hCPr__Input_G', 'hCPr__Input_B'].includes(inputId)) { + const r = parseInt(document.getElementById('hCPr__Input_R').value) || 0, g = parseInt(document.getElementById('hCPr__Input_G').value) || 0, b = parseInt(document.getElementById('hCPr__Input_B').value) || 0; + const hsb = rgbToHsb(r, g, b); currentColor.h = hsb.h; currentColor.s = hsb.s; currentColor.b = hsb.b; + } + updateAllUI(); + } + + // 从十六进制更新颜色 + updateColorFromHex(hexValue) { + if (!hexValue || hexValue.length !== 6) return; + const r = parseInt(hexValue.substring(0, 2), 16), g = parseInt(hexValue.substring(2, 4), 16), b = parseInt(hexValue.substring(4, 6), 16), hsb = rgbToHsb(r, g, b); + currentColor.h = hsb.h; currentColor.s = hsb.s; currentColor.b = hsb.b; updateAllUI(); + } + + // 更新所有输入框的值 + updateAllInputs() { + if (!currentColor) return; + // 更新HSB + this.inputs.hCPr__HUE_input && (this.inputs.hCPr__HUE_input.element.value = Math.round(currentColor.h)); + this.inputs.hCPr__S_input && (this.inputs.hCPr__S_input.element.value = Math.round(currentColor.s)); this.inputs.hCPr__B_input && (this.inputs.hCPr__B_input.element.value = Math.round(currentColor.b)); + // 更新RGB(仅调用一次hsbToRgb) + const rgb = hsbToRgb(currentColor.h, currentColor.s, currentColor.b); + this.inputs.hCPr__Input_R && (this.inputs.hCPr__Input_R.element.value = rgb.r); this.inputs.hCPr__Input_G && (this.inputs.hCPr__Input_G.element.value = rgb.g); + this.inputs.hCPr__Input_B && (this.inputs.hCPr__Input_B.element.value = rgb.b); + this.inputs.hexInput2 && (this.inputs.hexInput2.element.value = hsbToHex(currentColor.h, currentColor.s, currentColor.b).substring(1).toUpperCase()); + } + } + let inputManager; + // 【== 输入框管理器类-结束 ==】 + + const ids = [ + 'colorArea', 'hCPr__mainPicker_colorCanvas', 'colorCursor', 'hueSlider', 'hueCursor', 'hueHandle', 'hCPr__S_handle', 'hCPr__B_handle', 'hPreview__Node', 'hCPr__nodeMode', + 'hCPr__HUE_input', 'hCPr__S_input', 'hCPr__B_input', 'hexInput2', 'hCPr__Input_R', 'hCPr__Input_G', 'hCPr__Input_B', 'hCPr__HUE_sliderControl', 'hCPr__S_slider', 'hCPr__B_slider', + 'hCPr__S_clipContainer', 'hCPr__B_clipContainer', 'hueSliderTouchArea', 'hueTouchArea', 'hCPr__S_fill', 'hCPr__B_fill', 'hCPr__HUE_fill' + ]; + // 初始化取色器核心变量(含SVG元素/hTips引用)、输入管理器及节流控制 + const els = {}; ids.forEach(id => els[id] = document.getElementById(id)); + els.nodeTitle = document.querySelector('#hCPr__nodeSvg .hPreview__Node-Title'), els.nodeMain = document.querySelector('#hCPr__nodeSvg .hPreview__Node-Main'), els.hCPr_hTips = document.querySelector('.hCPr__hTips'); + + let currentColor = { h: 240, s: 57, b: 49 }, colorApplyMode = 1, isDragging = { hue: false, saturation: false, brightness: false, colorArea: false }; + const ctx = els.hCPr__mainPicker_colorCanvas.getContext('2d'); inputManager = new __hMgr_InputBox(); + let applyColorThrottleTimer = null, lastAppliedColor = null; + // 应用颜色到选中节点 + function __hFc_Color2Nodes() { + const { r, g, b } = hsbToRgb(currentColor.h, currentColor.s, currentColor.b), rgbColor = `rgb(${r}, ${g}, ${b})`; + if (lastAppliedColor === rgbColor) return; + lastAppliedColor = rgbColor; + + const selectedNodes = __hMgr_ComfyUINode.getSelectedNodes(), app = __hMgr_ComfyUINode.getComfyUIAppInstance(), selectedGroups = __hMgr_ComfyUINode.getSelectedGroups(app); + (selectedNodes.length + selectedGroups.length > 0) && __hMgr_ComfyUINode.__hFc_Color2Nodes(rgbColor); + } + + const throttleApplyColor = () => { clearTimeout(applyColorThrottleTimer); applyColorThrottleTimer = setTimeout(() => { __hFc_Color2Nodes(); applyColorThrottleTimer = null; }, 100); }; + + function updateAllUI() { + const { r, g, b } = hsbToRgb(currentColor.h, currentColor.s, currentColor.b); + updateColorArea(); updateHueSlider(); updateSliders(); updateNodePreview(); updateInputs(); updateColorCursorPosition(); __hUpdater_UI.updatePickBtnColor(`rgb(${r},${g},${b})`); throttleApplyColor(); + } + + // 【== 初始化canvas尺寸 ==】 + function __hInit_CanvasSize() { + // 提取重复逻辑:设置canvas尺寸并更新颜色区域 + const setCanvasDimensions = (canvas, w, h, usePercent = false) => { canvas.width = w; canvas.height = h; canvas.style.width = usePercent ? '100%' : `${w}px`; canvas.style.height = usePercent ? '100%' : `${h}px`; updateColorArea(); }; + const canvas = els.hCPr__mainPicker_colorCanvas, colorArea = els.colorArea, defaultWidth = 220, defaultHeight = 220; + // 元素存在时执行初始化+延迟适配容器尺寸 + canvas && colorArea && (canvas.style.display = 'block', setCanvasDimensions(canvas, defaultWidth, defaultHeight), setTimeout(() => { + const container = els.hCPr__mainPicker_colorAreaG || colorArea; + container && (() => { + const { width: cw, height: ch } = container.getBoundingClientRect(); + cw > 0 && ch > 0 && (dw = Math.floor(cw), dh = Math.floor(ch), (dw !== defaultWidth || dh !== defaultHeight) && setCanvasDimensions(canvas, dw, dh, true)); + })(); + }, 50)); + } + + // 取色器显示时强制重新初始化Canvas尺寸 + const ensureCanvasSize = () => { + if (!els.hCPr__mainPicker_colorCanvas || !els.colorArea) return; + __hInit_CanvasSize(); setTimeout(() => { - hTooltip.style.display = 'block'; - this.hasShownhTooltip = true; - }, 1000); - } - }); - this.hMainToolbar.addEventListener('mouseleave', () => { - hTooltip.remove(); - }); - } - let isPermanent = localStorage.getItem('NodeAlignerIsPermanent'); - if (isPermanent) { - this.isPermanent = localStorage.getItem('NodeAlignerIsPermanent') == '1'; - this.isPermanent ? this.show() : this.hide(); - } else { - this.show() - } - const linkRunBtn = this.contextMenu.querySelector('#link-run-btn'); - linkRunBtn.addEventListener('click', (e) => { - e.stopPropagation(); - this.linkMode = (this.linkMode + 1) % 5; - this.isRunButtonAligned = this.linkMode !== 0; - linkRunBtn.style.backgroundColor = this.linkColors[this.linkMode]; - if (this.isRunButtonAligned) { - this.syncRunButtonPosition(); - this.hMainToolbar.addEventListener('mousemove', this.syncRunButtonPosition.bind(this)); - } else { - this.hMainToolbar.removeEventListener('mousemove', this.syncRunButtonPosition.bind(this)); - } - }); - }, - createColorCircle(colorName) { - return ColorSVGs.circle(this.ColorConfig.colors[colorName]); - }, - createColorPickerIcon() { - return ` - - - - - - - - - - - - `; - }, - setNodesColor(event, colorType) { - try { - const app = this.getComfyUIAppInstance(); - if (!app) { - console.warn("ComfyUI实例获取失败"); - return; - } - const color = this.ColorConfig.colors[colorType]; - if (!color) { - console.warn(`未定义的颜色类型: ${colorType}`); - return; - } - const selectedNodes = this.getSelectedNodes(app); - const selectedGroups = this.getSelectedGroups(app); - if (selectedNodes.length + selectedGroups.length === 0) { - console.warn("未选择任何节点或组"); - return; - } - selectedNodes.forEach(node => { - if (node.is_system) return; - this.applyColorToNode(node, color); - }); - selectedGroups.forEach(group => { - group.color = color; - if (group.children) { - group.children.forEach(nodeID => { - const node = app.graph.getNodeById(nodeID); - if (node) this.applyColorToNode(node, color); - }); - } - }); - app.graph.setDirtyCanvas(true, true); - if (app.graph.afterChange) app.graph.afterChange(); - } catch (error) { - console.error("颜色设置失败:", error); - } - }, - resetNodesColor() { - try { - const app = this.getComfyUIAppInstance(); - if (!app) return; - const selected = [...this.getSelectedNodes(app), ...this.getSelectedGroups(app)]; - if (selected.length === 0) return; - selected.forEach(item => { - if (item.is_system) return; - if (item.pos !== undefined) { - item.color = undefined; - item.bgcolor = undefined; - if (item.setDirtyCanvas) item.setDirtyCanvas(true); - } else if (item.children) { - item.color = undefined; - item.children.forEach(nodeId => { - const node = app.graph.getNodeById(nodeId); - if (node) { - node.color = undefined; - node.bgcolor = undefined; - if (node.setDirtyCanvas) node.setDirtyCanvas(true); - } - }); - } - }); - app.graph.setDirtyCanvas(true, true); - if (app.graph.afterChange) app.graph.afterChange(); - } catch (error) { - console.error("颜色重置失败:", error); - } - }, - openNativeColorPicker() { - try { - const app = this.getComfyUIAppInstance(); - if (!app) { - console.warn("ComfyUI实例获取失败"); - return; - } - const selectedNodes = this.getSelectedNodes(app); - const selectedGroups = this.getSelectedGroups(app); - if (selectedNodes.length + selectedGroups.length === 0) { - console.warn("请先选择节点或组"); - return; - } - const input = document.createElement('input'); - input.type = 'color'; - input.style.cssText = ` - position: fixed; - opacity: 0; - pointer-events: none; - top: -100px; - `; - const lastColor = selectedNodes[0]?.bgcolor || selectedGroups[0]?.color || '#3355aa'; - input.value = this.rgbToHex(lastColor); - input.addEventListener('change', (e) => { - const color = e.target.value; - selectedNodes.forEach(node => { - if (node.is_system) return; - this.applyColorToNode(node, color); - }); - selectedGroups.forEach(group => { - group.color = color; - if (group.children) { - group.children.forEach(nodeID => { - const node = app.graph.getNodeById(nodeID); - if (node) this.applyColorToNode(node, color); - }); - } - }); - app.graph.setDirtyCanvas(true, true); - if (app.graph.afterChange) app.graph.afterChange(); - document.body.removeChild(input); - }); - document.body.appendChild(input); - input.click(); - } catch (error) { - console.error("颜色选择器打开失败:", error); - } - }, - rgbToHex(rgb) { - if (!rgb) return '#000000'; - if (rgb.startsWith('#')) return rgb; - const match = rgb.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/); - if (match) { - return '#' + - (1 << 24 | - parseInt(match[1]) << 16 | - parseInt(match[2]) << 8 | - parseInt(match[3]) - ).toString(16).slice(1); - } - return '#000000'; - }, - getComfyUIAppInstance() { - return { - canvas: LGraphCanvas.active_canvas, - graph: LGraphCanvas.active_canvas.graph - }; - }, - getButtons() { - return [{ - id: 'hBtn_moveElement', - svg: hSvg_moveElement - }, - { - type: 'hC_dividerLine' - }, - { - id: 'hBtnA_alignLeft', - svg: hSvgA_alignLeft, - action: this.hBtnA_alignLeft.bind(this) - }, - { - id: 'hBtnB_alignCenterV', - svg: hSvgB_alignCenterV, - action: this.hBtnB_alignCenterV.bind(this) - }, - { - id: 'hBtnC_alignRight', - svg: hSvgC_alignRight, - action: this.hBtnC_alignRight.bind(this) - }, - { - type: 'hC_dividerLine' - }, - { - id: 'hBtnD_alignTop', - svg: hSvgD_alignTop, - action: this.hBtnD_alignTop.bind(this) - }, - { - id: 'hBtnE_alignCenterH', - svg: hSvgE_alignCenterH, - action: this.hBtnE_alignCenterH.bind(this) - }, - { - id: 'hBtnF_alignButton', - svg: hSvgF_alignButton, - action: this.hBtnF_alignButton.bind(this) - }, - { - type: 'hC_dividerLine' - }, - { - id: 'hBtnG_distributionH', - svg: hSvgG_distributionH, - action: this.hBtnG_distributionH.bind(this) - }, - { - id: 'hBtnH_distributionV', - svg: hSvgH_distributionV, - action: this.hBtnH_distributionV.bind(this) - }, - { - type: 'hC_dividerLine' - }, - { - id: 'hBtnI_equalWidth', - svg: hSvgI_equalWidth, - action: this.hBtnI_equalWidth.bind(this) - }, - { - id: 'hBtnJ_equalHeight', - svg: hSvgJ_equalHeight, - action: this.hBtnJ_equalHeight.bind(this) - }, - { - type: 'hC_dividerLine' - }, - { - id: 'colorRed', - svg: this.createColorCircle('red'), - action: (e) => this.setNodesColor(e, 'red') - }, - { - id: 'colorOrange', - svg: this.createColorCircle('orange'), - action: (e) => this.setNodesColor(e, 'orange') - }, - { - id: 'colorYellow', - svg: this.createColorCircle('yellow'), - action: (e) => this.setNodesColor(e, 'yellow') - }, - { - id: 'colorGreen', - svg: this.createColorCircle('green'), - action: (e) => this.setNodesColor(e, 'green') - }, - { - id: 'colorCyan', - svg: this.createColorCircle('cyan'), - action: (e) => this.setNodesColor(e, 'cyan') - }, - { - id: 'colorBlue', - svg: this.createColorCircle('blue'), - action: (e) => this.setNodesColor(e, 'blue') - }, - { - id: 'colorPurple', - svg: this.createColorCircle('purple'), - action: (e) => this.setNodesColor(e, 'purple') - }, - { - id: 'colorClear', - svg: this.createColorCircle('clear'), - action: this.resetNodesColor.bind(this) - }, - { - id: 'colorPick', - svg: this.createColorPickerIcon(), - action: () => this.openNativeColorPicker() - }, - { - id: 'hBtn_moveElement', - svg: hSvg_moveElement - }, - ]; - }, - showContextMenu() { - this.contextMenu = document.createElement('div'); - this.contextMenu.id = 'hContext-Menu'; - this.contextMenu.style.display = 'none'; - this.contextMenu.innerHTML = ` - - - - - - - `; - this.hMainToolbar.appendChild(this.contextMenu); - this.hMainToolbar.addEventListener('contextmenu', (event) => { - event.preventDefault(); - const isMenuVisible = this.contextMenu.style.display === 'block'; - const isClickInsideMenu = this.contextMenu.contains(event.target); - if (isMenuVisible) { - if (!isClickInsideMenu) { - this.contextMenu.style.display = 'none'; - } - } else { - this.contextMenu.style.display = 'block'; - this.contextMenu.style.left = `${event.pageX}px`; - this.contextMenu.style.top = `${event.pageY}px`; - } - }); - document.addEventListener('mousedown', (e) => { - if (this.contextMenu.style.display === 'block' && - !this.contextMenu.contains(e.target) && - !this.hMainToolbar.contains(e.target)) { - this.contextMenu.style.display = 'none'; - } - }); - this.contextMenu.addEventListener('contextmenu', (e) => { - e.preventDefault(); - this.contextMenu.style.display = 'none'; - }); - this.contextMenu.querySelector('#pin-mode').addEventListener('click', () => { - this.contextMenu.style.display = 'none'; - this.isPermanent = true; - localStorage.setItem('NodeAlignerIsPermanent', '1'); - this.restorePosition(); - }); - this.contextMenu.querySelector('#toggle-on-select').addEventListener('click', () => { - this.hMainToolbar.style.display = 'none'; - this.contextMenu.style.display = 'none'; - this.isPermanent = false; - localStorage.setItem('NodeAlignerIsPermanent', '0'); - }); - this.contextMenu.querySelector('#ui-scale-btn').addEventListener('click', (e) => { - this.systemWideZoom = e.ctrlKey; - this.toggleUIScale(e); - e.stopPropagation(); - }); - }, - show() { - this.isShow = true; - this.hMainToolbar.style.display = 'flex'; - }, - hide() { - this.isShow = false; - this.hMainToolbar.style.display = 'none'; - }, - setPosition(x, y) { - this.hMainToolbar.style.left = `${x}px`; - this.hMainToolbar.style.top = `${y}px`; - }, - toggleUIScale(e) { - const isCtrlPressed = e ? e.ctrlKey : this.systemWideZoom; - this.currentZoomIndex = (this.currentZoomIndex + 1) % this.zoomLevels.length; - const scale = this.zoomLevels[this.currentZoomIndex]; - if (isCtrlPressed) { - document.body.style.zoom = scale; - this.hMainToolbar.style.transform = ''; - } else { - this.hMainToolbar.style.transform = `scale(${scale})`; - document.body.style.zoom = ''; - } - // 直接更新按钮文本 - const scaleBtn = this.contextMenu.querySelector('#ui-scale-btn'); - if (scaleBtn) { - scaleBtn.textContent = `UI缩放${scale}x`; - } - }, - onDragStart(e) { - if (this.isDragging) return; - const ishBtn_moveElement = e.target.closest('#hBtn_moveElement') !== null; - const ishC_dividerLine = e.target.classList.contains('hC_dividerLine'); - if (!(ishBtn_moveElement || ishC_dividerLine)) return; - this.isDragging = true; - this.initialX = e.clientX; - this.initialY = e.clientY; - this.dragStartX = this.hMainToolbar.offsetLeft; - this.dragStartY = this.hMainToolbar.offsetTop; - document.addEventListener('mousemove', this.boundOnDragging); - document.addEventListener('mouseup', this.boundOnDragEnd); - this.isDragging = true; - }, - onDragging(e) { - if (this.isDragging) { - const originalWidth = this.hMainToolbar.offsetWidth; - const deltaX = e.clientX - this.initialX; - const deltaY = e.clientY - this.initialY; - let newLeft = this.dragStartX + deltaX; - let newTop = this.dragStartY + deltaY; - const containerRect = this.hMainToolbar.getBoundingClientRect(); - const windowWidth = window.innerWidth; - const windowHeight = window.innerHeight; - if (newLeft < 0) { - newLeft = 0; - } else if (newLeft + containerRect.width > windowWidth) { - newLeft = windowWidth - containerRect.width; - } - if (newTop < 0) { - newTop = 0; - } else if (newTop + containerRect.height > windowHeight) { - newTop = windowHeight - containerRect.height; - } - this.hMainToolbar.style.width = `${originalWidth}px`; - this.hMainToolbar.style.left = `${newLeft}px`; - this.hMainToolbar.style.top = `${newTop}px`; - this.hMainToolbar.style.left = `${newLeft}px`; - this.hMainToolbar.style.top = `${newTop}px`; - } - }, - validateAndAdjustPosition(pos) { - const containerRect = this.hMainToolbar.getBoundingClientRect(); - const windowWidth = window.innerWidth; - const windowHeight = window.innerHeight; - const safeLeft = Math.max(0, Math.min(pos.left, windowWidth - containerRect.width)); - const safeTop = Math.max(0, Math.min(pos.top, windowHeight - containerRect.height)); - if (Math.abs(pos.left - safeLeft) > 20 || Math.abs(pos.top - safeTop) > 20) { - return this.getCentralPosition(); - } - return { - left: safeLeft, - top: safeTop - }; - }, - getCentralPosition() { - return { - left: Math.max(0, window.innerWidth / 2 - this.hMainToolbar.offsetWidth / 2), - top: 20 - }; - }, - onDragEnd() { - this.isDragging = false; - document.removeEventListener('mousemove', this.boundOnDragging); - document.removeEventListener('mouseup', this.boundOnDragEnd); - const rect = this.hMainToolbar.getBoundingClientRect(); - const originalPos = { - left: rect.left, - top: rect.top - }; - const safePos = this.validateAndAdjustPosition(originalPos); - this.hMainToolbar.style.left = `${safePos.left}px`; - this.hMainToolbar.style.top = `${safePos.top}px`; - localStorage.setItem('NodeAlignerhMainToolbarPosition', JSON.stringify({ - left: safePos.left, - top: safePos.top - })); - this.hMainToolbar.style.width = 'fit-content'; - this.syncRunButtonPosition(); - }, - restorePosition() { - try { - const savedPosition = JSON.parse(localStorage.getItem('NodeAlignerhMainToolbarPosition')); - if (!savedPosition) { - this.setCentralPosition(); - return; - } - let pos = { - left: savedPosition.left || window.innerWidth / 2 - this.hMainToolbar.offsetWidth / 2, - top: savedPosition.top || 20 + const canvas = els.hCPr__mainPicker_colorCanvas; + canvas && (canvas.width === 0 || canvas.height === 0) && (canvas.width = 220, canvas.height = 220, canvas.style.width = '220px', canvas.style.height = '220px', updateColorArea()); + }, 100); }; - const validatedPos = this.validateAndAdjustPosition(pos); - this.hMainToolbar.style.left = `${validatedPos.left}px`; - this.hMainToolbar.style.top = `${validatedPos.top}px`; - localStorage.setItem('NodeAlignerhMainToolbarPosition', JSON.stringify(validatedPos)); - if (this.isRunButtonAligned) { - this.syncRunButtonPosition(); + // 延迟初始化Canvas+监听显示/resize适配/双击事件绑定 + setTimeout(() => { + __hInit_CanvasSize(); + const p = document.getElementById('Artstich_hColorPicker'); + p && new MutationObserver(m => m.forEach(m => m.attributeName === 'style' && (d = p.style.display, (d === 'block' || d === '')) && setTimeout(ensureCanvasSize, 100))).observe(p, { attributes: !0 }); + setTimeout(() => { + const previewNode = document.getElementById('hPreview__Node'); + previewNode && (previewNode.addEventListener('dblclick', () => toggleColorApplyMode()), (svgElement = document.getElementById('hCPr__nodeSvg')) && svgElement.addEventListener('dblclick', e => (e.stopPropagation(), toggleColorApplyMode()))); + }, 200); + }, 100); + window.addEventListener('resize', () => { els.colorPickerPanel?.style.display !== 'none' && setTimeout(__hInit_CanvasSize, 100); }); + // 【== 初始化canvas尺寸:以确保正确渲染-结束 ==】 + + // 更新取色器颜色区域:尺寸适配+批量绘制优化性能 + function updateColorArea() { + const c = els.hCPr__mainPicker_colorCanvas; + if (!c) return; + + // 确保canvas有效尺寸:优先client尺寸→容器尺寸→固定220 + let w = Math.floor(c.clientWidth), h = Math.floor(c.clientHeight); + (w === 0 || h === 0) && (() => { + const container = els.hCPr__mainPicker_colorAreaG || els.colorArea, rect = container?.getBoundingClientRect() || { width: 0, height: 0 }; + w = rect.width > 0 ? Math.floor(rect.width) : 220; h = rect.height > 0 ? Math.floor(rect.height) : 220; + c.width = w; c.height = h; + })(); + + (c.width !== w || c.height !== h) && (c.width = w, c.height = h); + + // 宽高有效时绘制颜色区域(合并短变量+精简循环内代码) + const { width: w1, height: h1 } = c; + w1 > 0 && h1 > 0 && (() => { + ctx.clearRect(0, 0, w1, h1); + const imgData = ctx.createImageData(w1, h1), d = imgData.data, t = w1 * h1; + for (let i = 0; i < t; i++) { + const x = i % w1, y = Math.floor(i / w1), idx = i * 4; + const { r, g, b: rb } = hsbToRgb(currentColor.h, x / w1 * 100, (1 - y / h1) * 100); + d[idx] = r; d[idx + 1] = g; d[idx + 2] = rb; d[idx + 3] = 255; + } + ctx.putImageData(imgData, 0, 0); + })(); } - const linkRunBtn = this.contextMenu?.querySelector('#link-run-btn'); - if (linkRunBtn) { - linkRunBtn.style.backgroundColor = this.linkColors[this.linkMode]; + + const updateHueSlider = () => (els.hueCursor.style.top = `${currentColor.h / 3.6}%`, els.hueHandle.style.left = `${currentColor.h / 360 * 100}%`); + + function updateSliders() { + els.hCPr__S_handle.style.left = `${currentColor.s}%`; els.hCPr__S_clipContainer.style.width = `${currentColor.s}%`; + els.hCPr__S_fill.style.background = `linear-gradient(to right, ${hsbToHex(currentColor.h, 0, currentColor.b)}, ${hsbToHex(currentColor.h, 100, currentColor.b)})`; + els.hCPr__B_handle.style.left = `${currentColor.b}%`; els.hCPr__B_clipContainer.style.width = `${currentColor.b}%`; + els.hCPr__B_fill.style.background = `linear-gradient(to right, ${hsbToHex(currentColor.h, currentColor.s, 0)}, ${hsbToHex(currentColor.h, currentColor.s, 100)})`; + updateHueSliderAppearance(); } - } catch (e) { - console.warn('位置信息异常,重置到默认位置:', e); - this.setCentralPosition(); - } - }, - setCentralPosition() { - const pos = this.getCentralPosition(); - this.hMainToolbar.style.left = `${pos.left}px`; - this.hMainToolbar.style.top = `${pos.top}px`; - localStorage.setItem('NodeAlignerhMainToolbarPosition', JSON.stringify(pos)); - }, - getSelectedNodes() { - if (!LGraphCanvas.active_canvas) return []; - const selectedNodesObj = LGraphCanvas.active_canvas.selected_nodes; - return selectedNodesObj ? Object.values(selectedNodesObj) : []; - }, - adjustColorBrightness(hex, percent) { - hex = hex.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i, (m, r, g, b) => '#' + r + r + g + g + b + b); - const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); - if (!result) return '#000000'; - let r = parseInt(result[1], 16); - let g = parseInt(result[2], 16); - let b = parseInt(result[3], 16); - const amount = Math.round(2.55 * percent * 100); - r = Math.min(255, Math.max(0, r + amount)); - g = Math.min(255, Math.max(0, g + amount)); - b = Math.min(255, Math.max(0, b + amount)); - return '#' + - (r | 1 << 8).toString(16).slice(1) + - (g | 1 << 8).toString(16).slice(1) + - (b | 1 << 8).toString(16).slice(1); - }, - applyColorToNode(node, color) { - if (!node || typeof node !== 'object') return; - try { - node.color = this.adjustColorBrightness(color, -0.1); - node.bgcolor = color; - if (node.setDirtyCanvas) { - node.setDirtyCanvas(true); + + function updateHueSliderAppearance() { + const hueColors = []; + for (let i = 0; i <= 12; i++) hueColors.push(hsbToHex(i / 12 * 360, currentColor.s, currentColor.b)); + els.hCPr__HUE_fill.style.background = `linear-gradient(to right, ${hueColors.join(', ')})`; } - if (node.type === "Note") { - node.properties.text_color = this.adjustColorBrightness(color, 0.2); + + // 更新节点预览:补全缺失元素→设置SVG填充色→更新按钮色+模式提示 + function updateNodePreview() { + (!els.nodeTitle || !els.nodeMain) && (els.nodeTitle = document.querySelector('#hCPr__nodeSvg .hPreview__Node-Title'), els.nodeMain = document.querySelector('#hCPr__nodeSvg .hPreview__Node-Main')); + const color = hsbToHex(currentColor.h, currentColor.s, currentColor.b), rgb = hsbToRgb(currentColor.h, currentColor.s, currentColor.b); + els.nodeTitle && (els.nodeTitle.style.fill = color), els.nodeMain && (els.nodeMain.style.fill = colorApplyMode === 0 ? '#353535' : color); + __hUpdater_UI.updatePickBtnColor(`rgb(${rgb.r},${rgb.g},${rgb.b})`); + els.hCPr__nodeMode && (els.hCPr__nodeMode.textContent = colorApplyMode === 0 ? '仅标题' : '整体色'); } - } catch (error) { - console.error(`应用颜色到节点失败:`, error); - } - }, - getSelectedGroups(app) { - try { - if (app.canvas?.selected_group) { - return [app.canvas.selected_group]; + + // 更新颜色输入框:优先用输入框管理器,无则回退手动更新HSB/RGB/HEX + function updateInputs() { + // 优先使用输入框管理器更新 + inputManager && inputManager.updateAllInputs() || (() => { + // 回退逻辑:手动更新HSB/RGB/HEX输入框 + els.hCPr__HUE_input && (els.hCPr__HUE_input.value = Math.round(currentColor.h)); els.hCPr__S_input && (els.hCPr__S_input.value = Math.round(currentColor.s)); els.hCPr__B_input && (els.hCPr__B_input.value = Math.round(currentColor.b)); + const { r, g, b } = hsbToRgb(currentColor.h, currentColor.s, currentColor.b); + els.hCPr__Input_R && (els.hCPr__Input_R.value = r); els.hCPr__Input_G && (els.hCPr__Input_G.value = g); els.hCPr__Input_B && (els.hCPr__Input_B.value = b); + els.hexInput2 && (els.hexInput2.value = hsbToHex(currentColor.h, currentColor.s, currentColor.b).substring(1).toUpperCase()); + })(); } - const groups = []; - if (app.graph?.groups) { - for (const group of app.graph.groups) { - if (group.selected) { - groups.push(group); + + // 更新colorCursor位置,确保基于canvas本身的像素坐标系 + function updateColorCursorPosition() { + const c = els.hCPr__mainPicker_colorCanvas; + if (!els.colorArea || !els.colorCursor || !ctx || !c) return; + const { width: w, height: h } = c, x = currentColor.s / 100 * w, y = (1 - currentColor.b / 100) * h; + els.colorCursor.style.left = `${Math.max(0, Math.min(x, w))}px`, els.colorCursor.style.top = `${Math.max(0, Math.min(y, h))}px`; + } + + function addEventListeners() { + const dragHandlers = [colorAreaDragHandler, hueDragHandler, saturationDragHandler, brightnessDragHandler, hueControlDragHandler]; + els.colorArea.addEventListener('mousedown', startDrag('colorArea', colorAreaDragHandler)), els.hueSliderTouchArea.addEventListener('mousedown', startDrag('hue', hueDragHandler)); + addSliderEventListeners(), addInputEventListeners(), addCopyEventListeners(); + + // 为hPreview__Node及其子元素绑定双击事件 + const previewNode = els.hPreview__Node; + previewNode && ( + previewNode.addEventListener('dblclick', e => (e.preventDefault(), e.stopPropagation(), toggleColorApplyMode())), + previewNode.querySelectorAll('*').forEach(el => el.addEventListener('dblclick', e => (e.preventDefault(), e.stopPropagation(), toggleColorApplyMode(), false))) + ); + + document.addEventListener('mouseup', () => { onGlobalMouseUp(); dragHandlers.forEach(h => document.removeEventListener('mousemove', h)); }); + } + + function startDrag(type, handler) { + return e => { + e.preventDefault(), isDragging[type] = !0; + const moveHandler = moveEvent => isDragging[type] && handler(moveEvent); + document.addEventListener('mousemove', moveHandler); + const cleanup = () => { + isDragging[type] = !1; + document.removeEventListener('mousemove', moveHandler); + document.removeEventListener('mouseup', cleanup); + [colorAreaDragHandler, hueDragHandler, saturationDragHandler, brightnessDragHandler, hueControlDragHandler].forEach(h => document.removeEventListener('mousemove', h)); + }; + document.addEventListener('mouseup', cleanup), handler(e); + }; + } + + function onGlobalMouseUp() { + Object.keys(isDragging).forEach(key => isDragging[key] = !1); + // 清理全局mousemove事件,忽略移除错误 + [colorAreaDragHandler, hueDragHandler, saturationDragHandler, brightnessDragHandler, hueControlDragHandler].forEach(h => { try { document.removeEventListener('mousemove', h); } catch (e) { } }); + } + + // colorArea拖拽处理 - 确保光标位置和颜色值准确联动 + function colorAreaDragHandler(e) { + if (!isDragging.colorArea) return; + const c = els.hCPr__mainPicker_colorCanvas; + if (!c) return; + const r = c.getBoundingClientRect(), relX = Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)), relY = Math.max(0, Math.min(1, (e.clientY - r.top) / r.height)); + currentColor.s = relX * 100, currentColor.b = (1 - relY) * 100; + updateAllUI(); + } + + // 色相滑块拖拽处理 + function hueDragHandler(e) { + if (isDragging.hue) { const rect = els.hueSlider.getBoundingClientRect(); let y = Math.max(0, Math.min(rect.height, e.clientY - rect.top)); currentColor.h = (y / rect.height) * 360; els.hueCursor.style.top = `${y}px`; updateAllUI(); } + } + + function saturationDragHandler(e) { if (!isDragging.saturation) return; e.preventDefault(); updateSliderFromMouseMove(e, els.hCPr__S_slider, els.hCPr__S_handle, 'saturation'); } + function brightnessDragHandler(e) { if (!isDragging.brightness) return; e.preventDefault(); updateSliderFromMouseMove(e, els.hCPr__B_slider, els.hCPr__B_handle, 'brightness'); } + function hueControlDragHandler(e) { if (isDragging.hue) updateHueFromControlSlider(e); } + + Object.assign(window, {colorAreaDragHandler,hueDragHandler,saturationDragHandler,brightnessDragHandler,hueControlDragHandler}); + + // 确保滑块位置计算准确 + function updateSliderFromMouseMove(e, slider, handle, type) { + const rect = slider.getBoundingClientRect(); + if (!rect || rect.width <= 0) return hLog.warn('滑块rect无效:', type, rect); + const x = Math.max(0, Math.min(100, (e.clientX - rect.left) / rect.width * 100)); + handle.style.left = `${x}%`; + const clipContainerMap={saturation:els.hCPr__S_clipContainer,brightness:els.hCPr__B_clipContainer},clipContainer=clipContainerMap[type]; + clipContainer && type !== 'hue' && (clipContainer.style.width = `${x}%`); type === 'hue' ? (currentColor.h = (x / 100) * 360, updateColorArea(), updateHueSlider()) + : type === 'saturation' ? currentColor.s = x : type === 'brightness' && (currentColor.b = x); + updateAllUI(); + } + + function updateSliderFromClick(e, slider, handle, type) { + const rect = slider.getBoundingClientRect(); + let x = Math.max(0, Math.min(100, (e.clientX - rect.left) / rect.width * 100)); + handle.style.left = `${x}%`; + const clipContainer = document.getElementById(`${type}ClipContainer`); + clipContainer && type !== 'hue' && (clipContainer.style.width = `${x}%`); + // 根据类型更新颜色属性,色相需额外更新色区和色相滑块UI + type === 'hue' ? (currentColor.h = (x / 100) * 360, updateColorArea(), updateHueSlider()) : type === 'saturation' ? currentColor.s = x : type === 'brightness' && (currentColor.b = x); + updateAllUI(); + } + + function updateHueFromControlSlider(e) { + const rect = els.hCPr__HUE_sliderControl.getBoundingClientRect(); + let x = Math.max(0, Math.min(rect.width, e.clientX - rect.left)); + currentColor.h = (x / rect.width) * 360, updateAllUI(); + } + + function addSliderEventListeners() { + els.hueHandle.addEventListener('mousedown', e => { e.stopPropagation(); startDrag('hue', hueControlDragHandler)(e); }); + els.hueTouchArea.addEventListener('mousedown', e => { updateHueFromControlSlider(e); startDrag('hue', hueControlDragHandler)(e); }); + els.hCPr__HUE_sliderControl.addEventListener('click', e => updateHueFromControlSlider(e)); + addSliderEventListener(els.hCPr__S_slider, els.hCPr__S_handle, 'saturation'); + addSliderEventListener(els.hCPr__B_slider, els.hCPr__B_handle, 'brightness'); + } + + // 确保事件绑定正确 + function addSliderEventListener(slider, handle, type) { + if (!slider || !handle) return; + const getDragHandler = e => startDrag(type, window[`${type}DragHandler`])(e); + handle.addEventListener('mousedown', e => { e.stopPropagation(); e.preventDefault(); getDragHandler(e); }); + const ta = document.getElementById(`${type}TouchArea`); + ta && ta.addEventListener('mousedown', e => { e.preventDefault(); updateSliderFromClick(e, slider, handle, type); getDragHandler(e); }); + slider.addEventListener('mousedown', e => { e.preventDefault(); updateSliderFromClick(e, slider, handle, type); getDragHandler(e); }); + } + + function addCopyEventListeners() { + document.querySelectorAll('.copy-btn').forEach(button => button.addEventListener('click', () => { + const textToCopy = button.classList.contains('rgb-copy-btn') ? `${els.hCPr__Input_R.value}, ${els.hCPr__Input_G.value}, ${els.hCPr__Input_B.value}` : document.getElementById(button.getAttribute('data-target')).value; + navigator.clipboard.writeText(textToCopy).then(()=>{const origHtml=button.innerHTML;button.innerHTML='✓',setTimeout(()=>button.innerHTML=origHtml,1500);hLog.info('已复制到剪贴板:', textToCopy);}).catch(err=>hLog.error('复制失败:',err)); + })); + } + // 切换颜色应用模式:安全检查→切换模式→更新预览/提示/视觉反馈 + function toggleColorApplyMode() { + if (!els.hCPr__nodeMode) return; + colorApplyMode = colorApplyMode === 0 ? 1 : 0; updateNodePreview(); + els.hCPr__nodeMode.textContent = colorApplyMode === 0 ? '仅标题' : '整体色'; + els.hCPr__nodeMode.style.backgroundColor = colorApplyMode === 0 ? 'rgb(var(--hC_BW3_DeepGray))' : 'rgb(var(--hC_CPr0__PurpleStd))'; + } + function hsbToRgb(h, s, b) { + s /= 100, b /= 100; + let r, g, bv, i = Math.floor(h / 60), f = h / 60 - i; + let p = b * (1 - s), q = b * (1 - f * s), t = b * (1 - (1 - f) * s); + switch (i % 6) { + case 0: r = b; g = t; bv = p; break; case 1: r = q; g = b; bv = p; break; case 2: r = p; g = b; bv = t; break; + case 3: r = p; g = q; bv = b; break; case 4: r = t; g = p; bv = b; break; case 5: r = b; g = p; bv = q; break; } - } + return { r: Math.round(r * 255), g: Math.round(g * 255), b: Math.round(bv * 255) }; } - return groups; - } catch (error) { - console.error("获取选中组失败:", error); - return []; - } - }, - groupNodesByCoordinate(nodes, axis, tolerance = 1000) { - if (nodes.length < 4) { - return [nodes]; - } - const groups = []; - const otherAxis = 1 - axis; - nodes.sort((a, b) => a.pos[axis] - b.pos[axis]); - const gaps = []; - for (let i = 1; i < nodes.length; i++) { - gaps.push(nodes[i].pos[axis] - (nodes[i - 1].pos[axis] + nodes[i - 1].size[axis])); - } - const avgGap = gaps.reduce((sum, gap) => sum + gap, 0) / gaps.length; - const stdDevGap = Math.sqrt(gaps.reduce((sum, gap) => sum + Math.pow(gap - avgGap, 2), 0) / gaps.length); - const threshold = avgGap + stdDevGap; - let currentGroup = [nodes[0]]; - for (let i = 1; i < nodes.length; i++) { - const gap = nodes[i].pos[axis] - (nodes[i - 1].pos[axis] + nodes[i - 1].size[axis]); - const otherAxisDiff = Math.abs(nodes[i].pos[otherAxis] - nodes[i - 1].pos[otherAxis]); - if (gap <= threshold && otherAxisDiff <= tolerance) { - currentGroup.push(nodes[i]); - } else { - groups.push(currentGroup); - currentGroup = [nodes[i]]; + + function rgbToHsb(r, g, b) { + r /= 255, g /= 255, b /= 255; + const max = Math.max(r, g, b), min = Math.min(r, g, b), delta = max - min; + let h = 0, s = max === 0 ? 0 : delta / max, v = max; + max === min ? h = 0 : max === r ? h = (g - b) / delta + (g < b ? 6 : 0) : max === g ? h = (b - r) / delta + 2 : max === b && (h = (r - g) / delta + 4); + h = Math.round(h * 60), s = Math.round(s * 100), v = Math.round(v * 100); + return { h, s, b: v }; } - } - groups.push(currentGroup); - return groups; - }, - hBtnA_alignLeft() { - const selectedNodes = this.getSelectedNodes(); - if (selectedNodes.length === 0) { - const canvas = LGraphCanvas.active_canvas; - if (canvas) { - canvas.ds.offset = [80, 140]; - canvas.ds.scale = 1; - canvas.setDirty(true, true); + + function hsbToHex(h,s,b){const rgb=hsbToRgb(h,s,b);return `#${rgb.r.toString(16).padStart(2,'0')}${rgb.g.toString(16).padStart(2,'0')}${rgb.b.toString(16).padStart(2,'0')}`.toUpperCase();} + window.colorPicker = { currentColor, hsbToRgb, updateAllUI }; updateAllUI(), addEventListeners(); + + // 窗口失焦清理拖拽状态和事件 + window.addEventListener('blur', () => { + const isDragging = window.colorPicker?.isDragging; + if (isDragging) Object.keys(isDragging).forEach(key => isDragging[key] = !1); + [colorAreaDragHandler, hueDragHandler, saturationDragHandler, brightnessDragHandler, hueControlDragHandler].forEach(h => { if (h) try { document.removeEventListener('mousemove', h); } catch (e) { } }); + }); + } + + // 【== 主界面初始化 ==】 + function __hInit_MainInterface() { + window.__hMgr_PopEl__Position && window.__hMgr_PopEl__Position.positionMenu(); + // 获取核心DOM元素,缺失则终止 + const menuContainer = document.getElementById('h6__hMenu'), menuButton = document.getElementById('hNAP-Title__MenuA'), container = document.getElementById('hNodeAlignKit'); + if (!menuContainer || !menuButton || !container) return; + + document.addEventListener('click', e => !menuContainer.contains(e.target) && e.target !== menuButton && (menuContainer.style.display = 'none')); + document.getElementById('hBack')?.addEventListener('click', __hMenu_Toggle); + container.addEventListener('contextmenu', e => (e.preventDefault(), __hMenu_Toggle())), menuButton.addEventListener('click', __hMenu_Toggle); + __hBind_hAlignBtn(), __hBind_hMenuBtn(); + } + + // 【== 切换菜单显示 ==】 + function __hMenu_Toggle(e) { + e && e.stopPropagation(); + const menuContainer = document.getElementById('h6__hMenu'); + if (!menuContainer) return; + const isVisible = menuContainer.style.display !== 'none'; + menuContainer.style.display = isVisible ? 'none' : 'block'; + !isVisible && window.__hMgr_PopEl__Position && window.__hMgr_PopEl__Position.positionMenu(); + } + + // 【== 绑定对齐按钮事件 ==】 + function __hBind_hAlignBtn() { + document.getElementById('hAlignLeft').addEventListener('click', (e) => __hNAP_AlignTools.hBtnA_alignLeft(e)); + document.getElementById('hAlignCenterV').addEventListener('click', (e) => __hNAP_AlignTools.hBtnB_alignCenterV(e)); + document.getElementById('hAlignRight').addEventListener('click', (e) => __hNAP_AlignTools.hBtnC_alignRight(e)); + document.getElementById('hAlignTop').addEventListener('click', (e) => __hNAP_AlignTools.hBtnD_alignTop(e)); + document.getElementById('hAlignCenterH').addEventListener('click', (e) => __hNAP_AlignTools.hBtnE_alignCenterH(e)); + document.getElementById('hAlignBottom').addEventListener('click', (e) => __hNAP_AlignTools.hBtnF_alignButton(e)); + document.getElementById('hDistEvenH').addEventListener('click', (e) => __hNAP_AlignTools.hBtnG_distributionH(e)); + document.getElementById('hDistEvenV').addEventListener('click', (e) => __hNAP_AlignTools.hBtnH_distributionV(e)); + document.getElementById('hEqualWidth').addEventListener('click', (e) => __hNAP_AlignTools.hBtnI_equalWidth(e)); + document.getElementById('hEqualHeight').addEventListener('click', (e) => __hNAP_AlignTools.hBtnJ_equalHeight(e)); + } + + // 【== 绑定右键菜单按钮事件:重置插件/反馈Bug/查看指南 ==】 + function __hBind_hMenuBtn() { + document.getElementById('hReset').addEventListener('click', __hReset__hNAP_State); + const openLinkAndHideMenu=(url)=>{window.open(url,'_blank');window.__hMgr_MenuHide&&window.__hMgr_MenuHide.hideMenu();}; + // 绑定Bug反馈/指南按钮事件 + document.getElementById('hBugReport').addEventListener('click', () => openLinkAndHideMenu('https://github.com/ArtsticH/ComfyUI_EasyKitHT_NodeAlignPro/issues')); + document.getElementById('hGuide').addEventListener('click', () => openLinkAndHideMenu('https://github.com/ArtsticH/ComfyUI_EasyKitHT_NodeAlignPro')); + const backBtn = document.getElementById('hBack'); + if (backBtn) backBtn.addEventListener('click', () => { window.__hMgr_MenuHide && window.__hMgr_MenuHide.hideMenu(); }); + } + + // 【== 重置插件状态 - 增强版 ==】 + function __hReset__hNAP_State() { + // 1. 重置总容器位置+缩放(1x) + window.containerController && (window.containerController.reset(), window.containerController.zoomToScale(1.0, window.innerWidth / 2, window.innerHeight / 2)); + + // 2. 显示总容器 + const container = document.getElementById('hNodeAlignKit'); container && (container.style.display = 'block'); + + // 3. 重置颜色模块(这会自动重置取色器、自定义颜色等所有颜色相关状态) + window.__hColor_Module && window.__hColor_Module.reset(); + + // 4. 重置联动模式为解耦 + __hMgr_ACbar.setLinkMode(0); + + // 5. 重置显示模式为常驻 + window.__hMgr_DisplayMode && window.__hMgr_DisplayMode.reset(); + + // 6. 重置所有下拉菜单选项 + __hrReset__hMenu_Selections(); + + // 7. 确保容器变换完成(立即执行,无需延迟) + window.containerController && window.containerController.updateTransform(); + + // 8. 隐藏菜单 + window.__hMgr_MenuHide ? window.__hMgr_MenuHide.hideMenu() : (() => { const menuContainer = document.getElementById('h6__hMenu'); menuContainer && (menuContainer.style.display = 'none'); })(); + hLog.log('NodeAlignPro 已完全重置为默认状态'); + } + + // 【== 重置下拉菜单选择 ==】 + function __hrReset__hMenu_Selections() { + // 复用函数1:处理双选项下拉菜单重置(拖拽/显示模式) + const resetTwoOptionDropdown = (btn, opt1, opt2, text, selectOpt) => { + if (!btn || !opt1 || !opt2) return; + btn.textContent = text; + selectOpt === 1 ? (opt1.classList.add('selected'), opt2.classList.remove('selected')) : (opt1.classList.remove('selected'), opt2.classList.add('selected')); + }; + + // 复用函数2:处理多选项下拉菜单重置(缩放/工作模式) + const resetMultiOptionDropdown = (btn, optionsObj, targetOptKey, text) => { + if (!btn || !optionsObj[targetOptKey]) return; + btn.textContent = text; + Object.values(optionsObj).forEach(opt => opt && opt.classList.remove('selected')); + optionsObj[targetOptKey].classList.add('selected'); + }; + + // 1. 重置拖拽方式为解耦 + const dragBtn = document.querySelector('[data-target="hCMP-hSel__drag-options"]'), dragOption1 = document.querySelector('[data-value="hDragMode0_Link"]'), dragOption2 = document.querySelector('[data-value="hDragMode1_Split"]'); + resetTwoOptionDropdown(dragBtn, dragOption1, dragOption2, '解 耦', 2); + + // 2. 重置UI缩放为1x + const scaleBtn = document.querySelector('[data-target="hCMP-hSel__scale-options"]'), + scaleOptions = { + 'hUIScale_0_5x': document.querySelector('[data-value="hUIScale_0_5x"]'), 'hUIScale_0_75x': document.querySelector('[data-value="hUIScale_0_75x"]'), 'hUIScale_1x': document.querySelector('[data-value="hUIScale_1x"]'), + 'hUIScale_1_25x': document.querySelector('[data-value="hUIScale_1_25x"]'), 'hUIScale_1_5x': document.querySelector('[data-value="hUIScale_1_5x"]'), 'hUIScale_2x': document.querySelector('[data-value="hUIScale_2x"]') + }; + resetMultiOptionDropdown(scaleBtn, scaleOptions, 'hUIScale_1x', '1x'); + + // 3. 重置工作模式为对齐 + const modeBtn = document.querySelector('[data-target="hCMP-hSel__mode-options"]'), + modeOptions = { + 'hApBar0_apBall': document.querySelector('[data-value="hApBar0_apBall"]'), 'hApBar1_Color': document.querySelector('[data-value="hApBar1_Color"]'), 'hApBar2_Align': document.querySelector('[data-value="hApBar2_Align"]'), + 'hApBar3_StdH': document.querySelector('[data-value="hApBar3_StdH"]'), 'hApBar4_ProH': document.querySelector('[data-value="hApBar4_ProH"]') + }; + resetMultiOptionDropdown(modeBtn, modeOptions, 'hApBar2_Align', '-对 齐-'); + + // 4. 重置显示模式为常驻显示(通过__hMgr_DisplayMode) + window.__hMgr_DisplayMode && window.__hMgr_DisplayMode.updateMenuButtonText(); + } + + // 【== 下拉菜单功能 ==】 + function __hInit_hMenu__Dropdown() { + let hActiveDropdown = null, hHoverTimeout = null, hIsInDropdownArea = false; + const hCustomSelects = document.querySelectorAll('.hCMP-hSel .hMenu-btn'), hDropdownContainers = document.querySelectorAll('.hCMP-hSel'); + // 关闭所有下拉菜单:移除激活态并添加淡出动画 + const closeAllHDropdowns = () => { document.querySelectorAll('.hCMP-hSel__options').forEach(option => (option.classList.remove('active'), option.classList.add('fade-out'))); hActiveDropdown = null; }; + // 打开指定下拉菜单:先关闭所有,50ms后激活目标菜单 + const openHDropdown = (targetId) => { closeAllHDropdowns(); setTimeout(() => { const target = document.getElementById(targetId); target && (target.classList.remove('fade-out'), target.classList.add('active'), hActiveDropdown = targetId); }, 50); }; + // 绑定下拉菜单按钮点击事件:切换菜单显隐(当前激活则关闭,否则打开) + hCustomSelects.forEach(select => select.addEventListener('click', e => { e.stopPropagation(); const targetId = select.getAttribute('data-target'); hActiveDropdown === targetId ? closeAllHDropdowns() : openHDropdown(targetId); })); + // 绑定下拉选项点击事件:更新按钮文本、标记选中项、关闭菜单并处理选择逻辑 + document.querySelectorAll('.hCMP-hSel__option').forEach(option => option.addEventListener('click', function () { + const optionText = this.textContent, optionsContainer = this.parentElement, selectBtn = optionsContainer.previousElementSibling; + selectBtn.textContent = optionText; + optionsContainer.querySelectorAll('.hCMP-hSel__option').forEach(opt => opt.classList.remove('selected')), this.classList.add('selected'); + closeAllHDropdowns(); + __hMenu_Selection(this.getAttribute('data-value')); + window.__hMgr_MenuHide && window.__hMgr_MenuHide.hideMenu(); + })); + + // 绑定下拉容器鼠标进出事件:hover时保持菜单打开,离开200ms后关闭 + hDropdownContainers.forEach(container => { + container.addEventListener('mouseenter', () => { hIsInDropdownArea = true; hHoverTimeout && (clearTimeout(hHoverTimeout), hHoverTimeout = null); hActiveDropdown && openHDropdown(container.querySelector('.hMenu-btn').getAttribute('data-target')); }); + container.addEventListener('mouseleave', () => { hIsInDropdownArea = false; hHoverTimeout = setTimeout(() => hActiveDropdown && !hIsInDropdownArea && closeAllHDropdowns(), 200); }); + }); + const menuContainer = document.getElementById('h6__hMenu'); + menuContainer.addEventListener('mouseenter', () => { hIsInDropdownArea = true; hHoverTimeout && (clearTimeout(hHoverTimeout), hHoverTimeout = null); }); + menuContainer.addEventListener('mouseleave', () => { hIsInDropdownArea = false; hHoverTimeout = setTimeout(() => hActiveDropdown && !hIsInDropdownArea && closeAllHDropdowns(), 300); }); + document.addEventListener('click', e => !e.target.closest('.hCMP-hSel') && !e.target.closest('.hCMP-hSel__options') && closeAllHDropdowns()); + document.querySelectorAll('.hCMP-hSel__options').forEach(option => option.addEventListener('click', e => e.stopPropagation())); + document.addEventListener('keydown', e => e.key === 'Escape' && hActiveDropdown && (closeAllHDropdowns(), e.stopPropagation())); + menuContainer.addEventListener('contextmenu', function (e) { closeAllHDropdowns(); }); + } + + const scaleMapping = { 'hUIScale_0_5x': 0.5, 'hUIScale_0_75x': 0.75, 'hUIScale_1x': 1.0, 'hUIScale_1_25x': 1.25, 'hUIScale_1_5x': 1.5, 'hUIScale_2x': 2.0 }; + + // 【== 显示模式管理器 ==】 + class __hMgr_DisplayMode { + constructor() { this.isPermanent = true; this.canvasClickListener = null; this.loadModeFromStorage(); } + + // 重置方法 + reset() { + this.isPermanent = true; + this.saveModeToStorage(); + const container = document.getElementById('hNodeAlignKit'); + container && (container.style.display = 'block'); + const canvas = document.querySelector('canvas#graph-canvas'); + canvas && this.canvasClickListener && (canvas.removeEventListener('click', this.canvasClickListener), this.canvasClickListener = null); + this.updateMenuButtonText(); } - } else { - const groups = this.groupNodesByCoordinate(selectedNodes, 0); - groups.forEach(group => { - const leftMost = Math.min(...group.map(node => node.pos[0])); - group.forEach(node => { - node.pos[0] = leftMost; - }); - }); - } - LGraphCanvas.active_canvas.setDirty(true, true); - }, - hBtnC_alignRight() { - const selectedNodes = this.getSelectedNodes(); - if (selectedNodes.length > 0) { - const groups = this.groupNodesByCoordinate(selectedNodes, 0); - groups.forEach(group => { - const rightMost = Math.max(...group.map(node => node.pos[0] + node.size[0])); - group.forEach(node => { - node.pos[0] = rightMost - node.size[0]; - }); - }); - } - LGraphCanvas.active_canvas.setDirty(true, true); - }, - hBtnD_alignTop() { - const selectedNodes = this.getSelectedNodes(); - if (selectedNodes.length > 0) { - const groups = this.groupNodesByCoordinate(selectedNodes, 1); - groups.forEach(group => { - const topMost = Math.min(...group.map(node => node.pos[1])); - group.forEach(node => { - node.pos[1] = topMost; - }); - }); - } - LGraphCanvas.active_canvas.setDirty(true, true); - }, - hBtnF_alignButton() { - const selectedNodes = this.getSelectedNodes(); - if (selectedNodes.length > 0) { - const groups = this.groupNodesByCoordinate(selectedNodes, 1); - groups.forEach(group => { - const bottomMost = Math.max(...group.map(node => node.pos[1] + node.size[1])); - group.forEach(node => { - node.pos[1] = bottomMost - node.size[1]; - }); - }); - } - LGraphCanvas.active_canvas.setDirty(true, true); - }, - hBtnE_alignCenterH() { - const selectedNodes = this.getSelectedNodes(); - if (selectedNodes.length > 0) { - const groups = this.groupNodesByCoordinate(selectedNodes, 1); - groups.forEach(group => { - const centerY = this.calculateCenterInGroup(group, 1); - group.forEach(node => { - node.pos[1] = centerY - node.size[1] / 2; - }); - }); - } - LGraphCanvas.active_canvas.setDirty(true, true); - }, - hBtnB_alignCenterV() { - const selectedNodes = this.getSelectedNodes(); - if (selectedNodes.length > 0) { - const groups = this.groupNodesByCoordinate(selectedNodes, 0); - groups.forEach(group => { - const centerX = this.calculateCenterInGroup(group, 0); - group.forEach(node => { - node.pos[0] = centerX - node.size[0] / 2; - }); - }); - } - LGraphCanvas.active_canvas.setDirty(true, true); - }, - calculateCenterInGroup(group, axis) { - const minCoord = Math.min(...group.map(node => node.pos[axis])); - const maxCoord = Math.max(...group.map(node => node.pos[axis] + node.size[axis])); - return (minCoord + maxCoord) / 2; - }, - hBtnG_distributionH() { - const nodes = this.getSelectedNodes(); - const axis = 0; - if (nodes.length > 1) { - nodes.sort((a, b) => a.pos[axis] - b.pos[axis]); - const min = Math.min(...nodes.map(node => node.pos[axis])); - const max = Math.max(...nodes.map(node => node.pos[axis] + node.size[axis])); - const totalSize = nodes.reduce((sum, node) => sum + node.size[axis], 0); - const spacing = (max - min - totalSize) / (nodes.length - 1); - let current = min; - nodes.forEach(node => { - node.pos[axis] = current; - current += node.size[axis] + spacing; - }); - LGraphCanvas.active_canvas.setDirty(true, true); - } - }, - hBtnH_distributionV() { - const nodes = this.getSelectedNodes(); - if (nodes.length > 1) { - const axis = 1; - const otherAxis = 0; - const tolerance = 100; - const minSpacing = 20; - const columns = []; - nodes.forEach(node => { - let foundColumn = null; - for (let column of columns) { - const columnX = column[0].pos[otherAxis]; - if (Math.abs(columnX - node.pos[otherAxis]) <= tolerance) { - foundColumn = column; - break; - } - } - if (foundColumn) { - foundColumn.push(node); - } else { - columns.push([node]); - } - }); - const columnHeights = columns.map(column => { - const minY = Math.min(...column.map(node => node.pos[axis])); - const maxY = Math.max(...column.map(node => node.pos[axis] + node.size[axis])); - return maxY - minY; - }); - const maxColumnHeight = Math.max(...columnHeights); - columns.forEach((column, columnIndex) => { - if (column.length > 1) { - column.sort((a, b) => a.pos[axis] - b.pos[axis]); - const minY = Math.min(...column.map(node => node.pos[axis])); - const totalSize = column.reduce((sum, node) => sum + node.size[axis], 0); - let spacing = (maxColumnHeight - totalSize) / (column.length - 1); - spacing = Math.max(spacing, minSpacing); - let currentY = column[0].pos[axis]; - column.forEach((node, idx) => { - if (idx === 0) { - currentY += node.size[axis] + spacing; - } else { - node.pos[axis] = currentY; - currentY += node.size[axis] + spacing; - } - node.pos[otherAxis] = column[0].pos[otherAxis]; + + // 常驻显示模式 + setPermanentMode() { + this.isPermanent = true; + this.saveModeToStorage(); + const container = document.getElementById('hNodeAlignKit'); + container && (container.style.display = 'block'); + const canvas = document.querySelector('canvas#graph-canvas'); + canvas && this.canvasClickListener && (canvas.removeEventListener('click', this.canvasClickListener), this.canvasClickListener = null); + this.updateMenuButtonText(); + } + + // 跟随选框模式 + setFollowingMode() { + this.isPermanent = false; + this.saveModeToStorage(); + const container = document.getElementById('hNodeAlignKit'); + container && (container.style.display = 'none'); + this.setupCanvasListener(); + this.updateMenuButtonText(); + } + setupCanvasListener() { + const canvas = document.querySelector('canvas#graph-canvas'); + if (!canvas) { setTimeout(() => this.setupCanvasListener(), 500); return; } + this.canvasClickListener = (event) => { const selectedNodesCount = this.getSelectedNodesCount(); selectedNodesCount >= 2 ? this.showAtPosition(event.clientX, event.clientY) : this.hide(); }; + canvas.addEventListener('click', this.canvasClickListener); + } + + getSelectedNodesCount() { if (!LGraphCanvas?.active_canvas?.selected_nodes) return 0; return Object.keys(LGraphCanvas.active_canvas.selected_nodes || {}).length; } + + showAtPosition(clientX, clientY) { + const container = document.getElementById('hNodeAlignKit'); + if (!container || !window.containerController) return; + + container.style.display = 'block'; + const originalSize = window.containerController.getContainerOriginalSize(); const scaledWidth = originalSize.width * window.containerController.scale; const scaledHeight = originalSize.height * window.containerController.scale; + let newLeft = clientX - scaledWidth / 2; let newTop = clientY + 20; + const windowWidth = window.innerWidth; const windowHeight = window.innerHeight; + + if (newLeft < 0) newLeft = 0; if (newLeft + scaledWidth > windowWidth) newLeft = windowWidth - scaledWidth; if (newTop < 0) newTop = 0; if (newTop + scaledHeight > windowHeight) newTop = windowHeight - scaledHeight; + + window.containerController.posX = newLeft; window.containerController.posY = newTop; window.containerController.updateTransform(); + setTimeout(() => { window.containerController && window.containerController.enforceBoundaries(); }, 10); + } + + hide() { const container = document.getElementById('hNodeAlignKit'); container && (container.style.display = 'none'); } + + updateMenuButtonText() { + const menuBtn = document.querySelector('[data-target="hCMP-hSel__display-options"]'); + menuBtn && (menuBtn.textContent = this.isPermanent ? '常驻显示' : '跟随选框'); + const optionsContainer = document.getElementById('hCMP-hSel__display-options'); + optionsContainer && optionsContainer.querySelectorAll('.hCMP-hSel__option').forEach(opt => { + opt.classList.remove('selected'); + (this.isPermanent && opt.getAttribute('data-value') === 'hDispMode0_Always') || (!this.isPermanent && opt.getAttribute('data-value') === 'hDispMode1_Follow') && opt.classList.add('selected'); }); - } else if (column.length === 1) { - const node = column[0]; - } - }); - LGraphCanvas.active_canvas.setDirty(true, true); - } - }, - hBtnI_equalWidth() { - this.equalSize(0); - }, - hBtnJ_equalHeight() { - this.equalSize(1); - }, - equalSize(axis) { - const nodes = this.getSelectedNodes(); - if (nodes.length > 0) { - const maxSize = Math.max(...nodes.map(node => node.size[axis])); - nodes.forEach(node => { - node.size[axis] = maxSize; - }); - LGraphCanvas.active_canvas.setDirty(true, true); - } - } - }; - - function pollForCanvas() { - const canvas = document.querySelector('canvas#graph-canvas'); - if (canvas) { - ButtonManager.init(); - canvas.addEventListener('click', function(event) { - if (!ButtonManager.isPermanent) { - const selectedNodes = ButtonManager.getSelectedNodes(); - if (selectedNodes.length >= 2) { - ButtonManager.show(); - ButtonManager.setPosition(event.layerX - 240, event.layerY - 20); - } else { - ButtonManager.hide(); - } } - }); - } else { - setTimeout(pollForCanvas, 1000); + + saveModeToStorage() { localStorage.setItem('NodeAlignProDisplayMode', this.isPermanent ? 'permanent' : 'following'); } + loadModeFromStorage() { const savedMode = localStorage.getItem('NodeAlignProDisplayMode'); savedMode !== null && (this.isPermanent = savedMode === 'permanent', this.updateMenuButtonText()); } } - } - pollForCanvas(); \ No newline at end of file + + window.__hMgr_DisplayMode = new __hMgr_DisplayMode(); +/* // 【== 创建对应的处理函数 ==】 + function setPermanentDisplayMode() { window.__hMgr_DisplayMode && window.__hMgr_DisplayMode.setPermanentMode(); } + function setFollowingDisplayMode() { window.__hMgr_DisplayMode && window.__hMgr_DisplayMode.setFollowingMode(); } */ + // 【== 显示模式管理器-结束 ==】 + + + // 【== 处理下拉菜单选择 ==】 + const __hMenu_Selection = (value) => { + switch (value) { + case 'hDragMode1_Split': + __hMgr_ACbar.setLinkMode(0); + break; + case 'hDragMode0_Link': + __hMgr_ACbar.setLinkMode(1); + break; + case 'hUIScale_0_5x': + case 'hUIScale_0_75x': + case 'hUIScale_1x': + case 'hUIScale_1_25x': + case 'hUIScale_1_5x': + case 'hUIScale_2x': + const targetScale = scaleMapping[value], + containerRect = document.getElementById('hNodeAlignKit').getBoundingClientRect(); + const centerX = containerRect.left + containerRect.width / 2, + centerY = containerRect.top + containerRect.height / 2; + window.containerController && targetScale && (() => { + window.containerController.zoomToScale(targetScale, centerX, centerY); + })(); + break; + // 【修复】使用__hMgr_DisplayMode的方法 + case 'hDispMode0_Always': + window.__hMgr_DisplayMode && window.__hMgr_DisplayMode.setPermanentMode(); + break; + case 'hDispMode1_Follow': + window.__hMgr_DisplayMode && window.__hMgr_DisplayMode.setFollowingMode(); + break; + } + }; + + // 【== 初始化流程 ==】 + const __hInit_hNAP = () => { + // 初始化日志管理器 + window.__hLogManager = new __hLogManager(); + hLog.info('初始化ComfyUI_EasyKitHT_NodeAlignPro插件完毕, 等待DOM加载...'); + + const container = __hCreateHTML(); + document.body.appendChild(container); + + // 延迟100ms等待DOM渲染完成后初始化核心逻辑 + setTimeout(() => { + hLog.debug('NodeAlignPro核心组件初始化完毕! 请等待其它插件加载...'); + // 初始化各类管理器 + window.containerController = new __hController_hNAPKit(container), + window.__hMgr_PopEl__Position = new __hMgr_PopEl__Position(), + window.__hMgr_PopEl__Position.init(container), + window.__hMgr_MenuHide = new __hMgr_MenuHide(); + __hInit_AllIcons(), __hInit_MainInterface(), __hInit_hMenu__Dropdown(); + window.__hColor_Module = new __hColor_Module(); + __hInit_ColorPicker(); + + // 初始化显示模式管理器 + window.__hMgr_DisplayMode = new __hMgr_DisplayMode(); + + // 从存储加载设置 + const savedDisplayMode = localStorage.getItem('NodeAlignProDisplayMode'); + if (savedDisplayMode === 'following') { + window.__hMgr_DisplayMode.setFollowingMode(); hLog.info('显示模式: 跟随选框'); + } else { + window.__hMgr_DisplayMode.setPermanentMode(); hLog.info('显示模式: 常驻显示'); + } + + hLog.log('NodeAlignPro 插件初始化完成'); + setTimeout(() => { + __hMgr_ACbar.loadModeFromStorage(); hLog.info('联动模式: 已禁用'); + __hMgr_ACbar.linkMode === 1 && __hMgr_ACbar.syncRunButtonPosition(); hLog.info('联动模式: 已启用'); + }, 500); + }, 100); + }; + + document.readyState === 'loading' ? document.addEventListener('DOMContentLoaded', __hInit_hNAP) : __hInit_hNAP(); + window.addEventListener('beforeunload', () => { window.nodeSelectionListener && LGraphCanvas.active_canvas?.graph && LGraphCanvas.active_canvas.graph.off('selection', window.nodeSelectionListener); }); + + // 【== 控制台日志 ==】 + document.addEventListener('DOMContentLoaded', () => { hLog.info('DOM资源加载完毕,正在初始化 hNodeAlignPro 主面板...'); }); + window.addEventListener('load', () => { hLog.info('所有资源加载完毕,正在初始化 hNodeAlignPro 其余功能...'); }); +})(); \ No newline at end of file diff --git a/web/color_svgs.js b/web/color_svgs.js deleted file mode 100644 index 455c43f..0000000 --- a/web/color_svgs.js +++ /dev/null @@ -1,16 +0,0 @@ -// ComfyUI_EasyKitHT_NodeAlignPro/web/color_svgs.js -export const ColorSVGs = { - circle: (color) => ` - - - - `, - - colorPicker: ` - - - - ` - -}; \ No newline at end of file

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 literal 0 HcmV?d00001 diff --git a/Example/hPic/H20251222-全新节点对齐与上色UI实操演示.png b/Example/hPic/H20251222-全新节点对齐与上色UI实操演示.png new file mode 100644 index 0000000000000000000000000000000000000000..275f931f2ca5d83db535508a9f554f904b35b9ef GIT binary patch literal 291363 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