Spaces:
Runtime error
Runtime error
| import { app } from "../../scripts/app.js"; | |
| import { ComfyButtonGroup } from "../../scripts/ui/components/buttonGroup.js"; | |
| import { ComfyButton } from "../../scripts/ui/components/button.js"; | |
| import { iconGear, iconStarFilled, logoRgthree } from "../../rgthree/common/media/svgs.js"; | |
| import { createElement, empty } from "../../rgthree/common/utils_dom.js"; | |
| import { SERVICE as BOOKMARKS_SERVICE } from "./services/bookmarks_services.js"; | |
| import { SERVICE as CONFIG_SERVICE } from "./services/config_service.js"; | |
| import { ComfyPopup } from "../../scripts/ui/components/popup.js"; | |
| import { RgthreeConfigDialog } from "./config.js"; | |
| let rgthreeButtonGroup = null; | |
| function addRgthreeTopBarButtons() { | |
| var _a, _b, _c; | |
| if (!CONFIG_SERVICE.getFeatureValue("comfy_top_bar_menu.enabled")) { | |
| if ((_a = rgthreeButtonGroup === null || rgthreeButtonGroup === void 0 ? void 0 : rgthreeButtonGroup.element) === null || _a === void 0 ? void 0 : _a.parentElement) { | |
| rgthreeButtonGroup.element.parentElement.removeChild(rgthreeButtonGroup.element); | |
| } | |
| return; | |
| } | |
| else if (rgthreeButtonGroup) { | |
| (_b = app.menu) === null || _b === void 0 ? void 0 : _b.settingsGroup.element.before(rgthreeButtonGroup.element); | |
| return; | |
| } | |
| const buttons = []; | |
| const rgthreeButton = new ComfyButton({ | |
| icon: "rgthree", | |
| tooltip: "rgthree-comfy", | |
| app, | |
| enabled: true, | |
| classList: "comfyui-button comfyui-menu-mobile-collapse primary", | |
| }); | |
| buttons.push(rgthreeButton); | |
| rgthreeButton.iconElement.style.width = "1.2rem"; | |
| rgthreeButton.iconElement.innerHTML = logoRgthree; | |
| rgthreeButton.withPopup(new ComfyPopup({ target: rgthreeButton.element, classList: "rgthree-top-menu" }, createElement("menu", { | |
| children: [ | |
| createElement("li", { | |
| child: createElement("button.rgthree-button-reset", { | |
| html: iconGear + "Settings (rgthree-comfy)", | |
| onclick: () => new RgthreeConfigDialog().show(), | |
| }), | |
| }), | |
| createElement("li", { | |
| child: createElement("button.rgthree-button-reset", { | |
| html: iconStarFilled + "Star on Github", | |
| onclick: () => window.open("https://github.com/rgthree/rgthree-comfy", "_blank"), | |
| }), | |
| }), | |
| ], | |
| })), "click"); | |
| if (CONFIG_SERVICE.getFeatureValue("comfy_top_bar_menu.button_bookmarks.enabled")) { | |
| const bookmarksListEl = createElement("menu"); | |
| bookmarksListEl.appendChild(createElement("li.rgthree-message", { | |
| child: createElement("span", { text: "No bookmarks in current workflow." }), | |
| })); | |
| const bookmarksButton = new ComfyButton({ | |
| icon: "bookmark", | |
| tooltip: "Workflow Bookmarks (rgthree-comfy)", | |
| app, | |
| }); | |
| const bookmarksPopup = new ComfyPopup({ target: bookmarksButton.element, classList: "rgthree-top-menu" }, bookmarksListEl); | |
| bookmarksPopup.addEventListener("open", () => { | |
| const bookmarks = BOOKMARKS_SERVICE.getCurrentBookmarks(); | |
| empty(bookmarksListEl); | |
| if (bookmarks.length) { | |
| for (const b of bookmarks) { | |
| bookmarksListEl.appendChild(createElement("li", { | |
| child: createElement("button.rgthree-button-reset", { | |
| text: `[${b.shortcutKey}] ${b.title}`, | |
| onclick: () => { | |
| b.canvasToBookmark(); | |
| }, | |
| }), | |
| })); | |
| } | |
| } | |
| else { | |
| bookmarksListEl.appendChild(createElement("li.rgthree-message", { | |
| child: createElement("span", { text: "No bookmarks in current workflow." }), | |
| })); | |
| } | |
| bookmarksPopup.update(); | |
| }); | |
| bookmarksButton.withPopup(bookmarksPopup, "hover"); | |
| buttons.push(bookmarksButton); | |
| } | |
| rgthreeButtonGroup = new ComfyButtonGroup(...buttons); | |
| (_c = app.menu) === null || _c === void 0 ? void 0 : _c.settingsGroup.element.before(rgthreeButtonGroup.element); | |
| } | |
| app.registerExtension({ | |
| name: "rgthree.TopMenu", | |
| async setup() { | |
| addRgthreeTopBarButtons(); | |
| CONFIG_SERVICE.addEventListener("config-change", ((e) => { | |
| var _a, _b; | |
| if ((_b = (_a = e.detail) === null || _a === void 0 ? void 0 : _a.key) === null || _b === void 0 ? void 0 : _b.includes("features.comfy_top_bar_menu")) { | |
| addRgthreeTopBarButtons(); | |
| } | |
| })); | |
| }, | |
| }); | |