Spaces:
Paused
Paused
| import { app } from "../../../scripts/app.js"; | |
| import { api } from "../../../scripts/api.js"; | |
| import { $el } from "../../../scripts/ui.js"; | |
| const id = "pysssss.ShowImageOnMenu"; | |
| const ext = { | |
| name: id, | |
| async setup(app) { | |
| let enabled = true; | |
| let nodeId = null; | |
| const img = $el("img", { | |
| style: { | |
| width: "100%", | |
| height: "150px", | |
| objectFit: "contain", | |
| }, | |
| }); | |
| const link = $el( | |
| "a", | |
| { | |
| style: { | |
| width: "100%", | |
| height: "150px", | |
| marginTop: "10px", | |
| order: 100, // Place this item last (until someone else has a higher order) | |
| display: "none", | |
| }, | |
| href: "#", | |
| onclick: (e) => { | |
| e.stopPropagation(); | |
| e.preventDefault(); | |
| const node = app.graph.getNodeById(nodeId); | |
| if (!node) return; | |
| app.canvas.centerOnNode(node); | |
| app.canvas.setZoom(1); | |
| }, | |
| }, | |
| [img] | |
| ); | |
| app.ui.menuContainer.append(link); | |
| const show = (src, node) => { | |
| img.src = src; | |
| nodeId = Number(node); | |
| link.style.display = "unset"; | |
| }; | |
| api.addEventListener("executed", ({ detail }) => { | |
| if (!enabled) return; | |
| const images = detail?.output?.images; | |
| if (!images || !images.length) return; | |
| const format = app.getPreviewFormatParam(); | |
| const src = [ | |
| `./view?filename=${encodeURIComponent(images[0].filename)}`, | |
| `type=${images[0].type}`, | |
| `subfolder=${encodeURIComponent(images[0].subfolder)}`, | |
| `t=${+new Date()}${format}`,].join('&'); | |
| show(src, detail.node); | |
| }); | |
| api.addEventListener("b_preview", ({ detail }) => { | |
| if (!enabled) return; | |
| show(URL.createObjectURL(detail), app.runningNodeId); | |
| }); | |
| app.ui.settings.addSetting({ | |
| id, | |
| name: "π Show Image On Menu", | |
| defaultValue: true, | |
| type: "boolean", | |
| onChange(value) { | |
| enabled = value; | |
| if (!enabled) link.style.display = "none"; | |
| }, | |
| }); | |
| }, | |
| }; | |
| app.registerExtension(ext); | |