Spaces:
Sleeping
Sleeping
| import { ComfyDialog } from "../dialog.js"; | |
| import { $el } from "../../ui.js"; | |
| export class ComfyAsyncDialog extends ComfyDialog { | |
| #resolve; | |
| constructor(actions) { | |
| super( | |
| "dialog.comfy-dialog.comfyui-dialog", | |
| actions?.map((opt) => { | |
| if (typeof opt === "string") { | |
| opt = { text: opt }; | |
| } | |
| return $el("button.comfyui-button", { | |
| type: "button", | |
| textContent: opt.text, | |
| onclick: () => this.close(opt.value ?? opt.text), | |
| }); | |
| }) | |
| ); | |
| } | |
| show(html) { | |
| this.element.addEventListener("close", () => { | |
| this.close(); | |
| }); | |
| super.show(html); | |
| return new Promise((resolve) => { | |
| this.#resolve = resolve; | |
| }); | |
| } | |
| showModal(html) { | |
| this.element.addEventListener("close", () => { | |
| this.close(); | |
| }); | |
| super.show(html); | |
| this.element.showModal(); | |
| return new Promise((resolve) => { | |
| this.#resolve = resolve; | |
| }); | |
| } | |
| close(result = null) { | |
| this.#resolve(result); | |
| this.element.close(); | |
| super.close(); | |
| } | |
| static async prompt({ title = null, message, actions }) { | |
| const dialog = new ComfyAsyncDialog(actions); | |
| const content = [$el("span", message)]; | |
| if (title) { | |
| content.unshift($el("h3", title)); | |
| } | |
| const res = await dialog.showModal(content); | |
| dialog.element.remove(); | |
| return res; | |
| } | |
| } | |