Spaces:
Building
on
Zero
Building
on
Zero
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; | |
} | |
} | |